recode-3.6/0040755000000000000000000000000007233074170011330 5ustar rootrootrecode-3.6/Makefile.in0100644000000000000000000003150507233074164013401 0ustar rootroot# Makefile.in generated automatically by automake 1.4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 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. # Main Makefile for GNU recode. # Copyright © 1992,93,94,95,96,97,98,99,00 Free Software Foundation, Inc. # François Pinard , 1992. # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ CC = @CC@ CPP = @CPP@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ GLIBC21 = @GLIBC21@ LEX = @LEX@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MOFILES = @MOFILES@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ U = @U@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = gnits ACLOCAL = ./aclocal.sh @ACLOCAL@ ACLOCAL_AMFLAGS = -I m4 BABYL = ../rmail/* ../*/rmail/* ../*/*/RMAIL ../*/*/rmail/* EXTRA_DIST = COPYING-LIB PATCHES-AC rebox.el recode.spec aclocal.sh SUBDIRS = m4 doc lib libiconv i18n src tests contrib POTFILES = src/main.c src/names.c src/outer.c src/recode.c src/request.c src/strip-data.c src/task.c src/testdump.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS BACKLOG COPYING \ ChangeLog INSTALL Makefile.am Makefile.in NEWS THANKS TODO acconfig.h \ acinclude.m4 aclocal.m4 config.guess config.h.in config.sub configure \ configure.in install-sh ltconfig ltmain.sh missing mkinstalldirs DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status $(ACLOCAL_M4): configure.in acinclude.m4 m4/atconfig.m4 m4/codeset.m4 \ m4/flex.m4 m4/gettext.m4 m4/glibc21.m4 m4/lcmessage.m4 \ m4/libtool.m4 m4/malloc.m4 m4/realloc.m4 m4/utimbuf.m4 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) config.h: stamp-h @if test ! -f $@; then \ rm -f stamp-h; \ $(MAKE) stamp-h; \ else :; fi stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES= CONFIG_HEADERS=config.h \ $(SHELL) ./config.status @echo timestamp > stamp-h 2> /dev/null $(srcdir)/config.h.in: $(srcdir)/stamp-h.in @if test ! -f $@; then \ rm -f $(srcdir)/stamp-h.in; \ $(MAKE) $(srcdir)/stamp-h.in; \ else :; fi $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h cd $(top_srcdir) && $(AUTOHEADER) @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null mostlyclean-hdr: clean-hdr: distclean-hdr: -rm -f config.h maintainer-clean-hdr: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. @SET_MAKE@ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ check-recursive installcheck-recursive info-recursive dvi-recursive: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ test "$$subdir" = "." && dot_seen=yes; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist -rm -rf $(distdir) GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz mkdir $(distdir)/=build mkdir $(distdir)/=inst dc_install_base=`cd $(distdir)/=inst && pwd`; \ cd $(distdir)/=build \ && ../configure --srcdir=.. --prefix=$$dc_install_base \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) dist -rm -rf $(distdir) @banner="$(distdir).tar.gz is ready for distribution"; \ dashes=`echo "$$banner" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ echo "$$dashes" dist: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) dist-all: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) distdir: $(DISTFILES) @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" > /dev/null; then :; else \ echo "NEWS not updated; not releasing" 1>&2; \ exit 1; \ fi -rm -rf $(distdir) mkdir $(distdir) -chmod 777 $(distdir) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done for subdir in $(SUBDIRS); do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ chmod 777 $(distdir)/$$subdir; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ fi; \ done info-am: info: info-recursive dvi-am: dvi: dvi-recursive check-am: all-am check: check-recursive installcheck-am: installcheck: installcheck-recursive all-recursive-am: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive install-exec-am: install-exec: install-exec-recursive install-data-am: install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-recursive uninstall-am: uninstall: uninstall-recursive all-am: Makefile config.h all-local all-redirect: all-recursive-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: installdirs-recursive installdirs-am: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-recursive clean-am: clean-hdr clean-tags clean-generic mostlyclean-am clean: clean-recursive distclean-am: distclean-hdr distclean-tags distclean-generic clean-am -rm -f libtool distclean: distclean-recursive -rm -f config.status maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-recursive -rm -f config.status .PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ install-data-recursive uninstall-data-recursive install-exec-recursive \ uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ all-recursive check-recursive installcheck-recursive info-recursive \ dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ install-exec-am install-exec install-data-am install-data install-am \ install uninstall-am uninstall all-local all-redirect all-am all \ installdirs-am installdirs mostlyclean-generic distclean-generic \ clean-generic maintainer-clean-generic clean mostlyclean distclean \ maintainer-clean all-local: $(srcdir)/stamp-pot $(srcdir)/stamp-pot: $(POTFILES) @echo "$(POTFILES)" > $@ install-stow: $(MAKE) install \ prefix=$(exec_prefix)/stow/$(PACKAGE)-$(VERSION) \ exec_prefix=$(exec_prefix)/stow/$(PACKAGE)-$(VERSION) rm -f $(exec_prefix)/stow/$(PACKAGE)-$(VERSION)/info/dir cd $(exec_prefix)/stow && stow $(PACKAGE)-$(VERSION) # 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: recode-3.6/README0100644000000000000000000001472607224442650012221 0ustar rootroot* README file for `recode' allout -*- outline -*- Here is version 3.6 for the Free `recode' program and library. Glance through this `README' file before starting configuration. Make sure you read files `ABOUT-NLS' and `INSTALL' if you are not familiar with them already. The canonical distribution point for this version is: http://www.iro.umontreal.ca/contrib/recode/recode-3.6.tar.gz GNU mirrors usually hold a copy of non-pretest releases, the canonical distribution point for the last such release is: ftp://ftp.gnu.org/pub/gnu/recode/recode-3.6.tar.gz .* Introduction ------------ . + Presentation The `recode' library converts files between character sets and usages. It recognises or produces more than 300 different character sets and transliterates files between almost any pair. When exact transliteration are not possible, it gets rid of offending characters or falls back on approximations. The `recode' program is a handy front-end to the library. The `recode' program and library have been written by François Pinard, yet it significantly reuses works from Keld Simonsen and Bruno Haible. It is an evolving package, and specifications might change in future releases. Option `-f' is now fairly implemented, yet not fully. . + See files ABOUT-NLS how to customise this program to your language BACKLOG summary of pending mail and articles COPYING copying conditions for the program COPYING.LIB copying conditions for the library INSTALL compilation and installation instructions NEWS major changes in the current release THANKS partial list of contributors . + Configure options Besides those configure options documented in files `INSTALL' and `ABOUT-NLS', a few extra options may be accepted after `./configure': . - `--disable-shared' . - `--disable-static' to inhibit the building of shared libraries or static libraries; the default is to always build static libraries, and to attempt building shared libraries if there is some known recipe for this. . - `--with-gnu-ld' to force the assomption that the C compiler uses GNU ld. . - `--with-dmalloc' to trigger a debugging feature for looking at memory management problems, it pre-requires Gray Watson's package, which is available as `ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz'. . + Maintenance tools For comprehensive modifications to `recode', you might need tools beyond those used in simple installations. If not done already, get: autoconf ftp://ftp.enst.fr/pub/unix/a2ps/autoconf-2.14a.tar.gz automake ftp://sourceware.cygnus.com/pub/automake/automake-1.4.tar.gz flex ftp://ftp.gnu.org/pub/gnu/flex/flex-2.5.4a.tar.gz gettext ftp://ftp.cygnus.com/pub/home/drepper/gettext-0.10.35.tar.gz help2man http://www.ozemail.com.au/~bod/help2man-1.020.tar.gz libtool http://www.oranda.demon.co.uk/dist/libtool-1.3.4.tar.gz m4 ftp://ftp.seindal.dk/pub/rene/gnu/m4-1.4n.tar.gz perl ftp://ftp.gnu.org/pub/gnu/perl/perl-5.005.03.tar.gz python ftp://ftp.python.org/pub/python/src/py152.tgz tar ftp://ftp.gnu.org/pub/gnu/tar/tar-1.12.tar.gz Make sure GNU `m4' is fully installed before you start installing Autoconf. Apply `PATCHES-AC' to Autoconf before installing it. Have Perl installed before Automake and `help2man'. Python 1.5 and Flex 2.5, or better, are needed for remaking `merged.c', after you modify an `.l' source file. . + Mailing lists and collaboration If you feel like receiving releases and pretest announcements for the `recode' package, send a message to mailto:majordomo@iro.umontreal.ca having, in its body, a line saying: subscribe recode-announce If you rather want to participate actively in discussions, pretesting and development for `recode', do just as above, but this time, use: subscribe recode-forum Look into `http://www.iro.umontreal.ca/contrib/recode' for various releases, pretests, and related files. In particular, button `Browse' gives access to a weekly mirror of the current unpackaged work files, while button `Folders' gives access to saved or pending correspondence. Please do _not_ widely redistribute releases having a letter after the version numbers, as these are meant for pretesting only, and might not be stable enough for other usages. . + Report addresses Send bug reports to `mailto:recode-bugs@iro.umontreal.ca'. A bug report is an adequate description of the problem: your input, what you expected, what you got, and why this is wrong. Diffs are welcome, but they only describe a solution, from which the problem might be uneasy to infer. If needed, submit actual data files with your report. Small data files are preferred. Big files may sometimes be necessary, but do not send them on the mailing list; rather take special arrangement with the maintainer. Your feedback will help us to make a better and more portable package. Consider documentation errors as bugs, and report them as such. If you develop anything pertaining to `recode' or have suggestions, let us know and share your findings by writing at `mailto:recode-forum@iro.umontreal.ca'. .* Installation hints ------------------ Here are a few hints which might help installing `recode' on some systems. Many may be applied by temporary presetting environment variables while calling `./configure'. File `INSTALL' explains this. . + Compilation time Some C compilers, like Apollo's, have a real hard time compiling `merged.c'. If this is your case, avoid compiler optimisation. From within the Bourne shell, you may use: CFLAGS= ./configure But if you want to give a hard time to your C optimiser on `merged.c', for getting code that runs only a bit faster, just try: CPPFLAGS=-DINLINE_HARDER ./configure . + Smallish systems For 80286 based systems, it has been reported that some compilers generate wrong code while optimising for *small* models. So, from within the Bourne shell, do: CFLAGS=-Ml LDFLAGS=-Ml ./configure to force large memory model. For 80286 Xenix compiler, the last time it was tried a while ago, one ought to use: CFLAGS='-Ml -F2000' LDFLAGS=-Ml ./configure Other systems have poor `pipe'/`popen' support or trash heavily when processes fork. In this case, just before doing `make', edit `config.h' and ensure `HAVE_PIPE' is *not* defined. recode-3.6/stamp-h.in0100644000000000000000000000001207224653006013220 0ustar rootroottimestamp recode-3.6/ABOUT-NLS0100644000000000000000000002660307142144411012556 0ustar rootrootNotes on the Free Translation Project ************************************* Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do *not* need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work at translations should contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. One advise in advance ===================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias or message inheritance) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need not provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. INSTALL Matters =============== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system provides usable `catgets' (if using this is selected by the installer) or `gettext' functions. If neither is available, the GNU `gettext' own library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is *not* required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --with-catgets ./configure --disable-nls will respectively bypass any pre-existing `catgets' or `gettext' to use the internationalizing routines provided within this package, enable the use of the `catgets' functions (if found on the locale system), or else, *totally* disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might be not what is desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. By default the configuration process will not test for the `catgets' function and therefore they will not be used. The reasons are already given above: the emulation on top of `catgets' cannot provide all the extensions provided by the GNU `gettext' library. If you nevertheless want to use the `catgets' functions use ./configure --with-catgets to enable the test for `catgets' (this causes no harm if `catgets' is not available on your system). If you really select this option we would like to hear about the reasons because we cannot think of any good one ourself. Internationalized packages have usually many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. Using This Package ================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate ISO 639 `LL' two-letter code prior to using the programs in the package. For example, let's suppose that you speak German. At the shell prompt, merely execute `setenv LANG de' (in `csh'), `export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. An operating system might already offer message localization for many of its programs, while other programs have been installed locally with the full capabilities of GNU `gettext'. Just using `gettext' extended syntax for `LANG' would break proper localization of already available operating system programs. In this case, users should set both `LANGUAGE' and `LANG' variables in their environment, as programs using GNU `gettext' give preference to `LANGUAGE'. For example, some Swedish users would rather read translations in German than English for when Swedish is not available. This is easily accomplished by setting `LANGUAGE' to `sv:de' while leaving `LANG' to `sv'. Translating Teams ================= For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list, courtesy of Linux International. You may reach your translation team at the address `LL@li.org', replacing LL by the two-letter ISO 639 code for your language. Language codes are *not* the same as the country codes given in ISO 3166. The following translation teams exist, as of December 1997: Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en', Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja', Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es', Swedish `sv', and Turkish `tr'. For example, you may reach the Chinese translation team by writing to `zh@li.org'. If you'd like to volunteer to *work* at translating messages, you should become a member of the translating team for your own language. The subscribing address is *not* the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate *actively* in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skill are praised more than programming skill, here. Available Packages ================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of December 1997. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination. Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv .----------------------------------------------------. bash | [] [] [] | 3 bison | [] [] [] | 3 clisp | [] [] [] [] | 4 cpio | [] [] [] [] [] [] | 6 diffutils | [] [] [] [] [] | 5 enscript | [] [] [] [] [] [] | 6 fileutils | [] [] [] [] [] [] [] [] [] [] | 10 findutils | [] [] [] [] [] [] [] [] [] | 9 flex | [] [] [] [] | 4 gcal | [] [] [] [] [] | 5 gettext | [] [] [] [] [] [] [] [] [] [] [] | 12 grep | [] [] [] [] [] [] [] [] [] [] | 10 hello | [] [] [] [] [] [] [] [] [] [] [] | 11 id-utils | [] [] [] | 3 indent | [] [] [] [] [] | 5 libc | [] [] [] [] [] [] [] | 7 m4 | [] [] [] [] [] [] | 6 make | [] [] [] [] [] [] | 6 music | [] [] | 2 ptx | [] [] [] [] [] [] [] [] | 8 recode | [] [] [] [] [] [] [] [] [] | 9 sh-utils | [] [] [] [] [] [] [] [] | 8 sharutils | [] [] [] [] [] [] | 6 tar | [] [] [] [] [] [] [] [] [] [] [] | 11 texinfo | [] [] [] | 3 textutils | [] [] [] [] [] [] [] [] [] | 9 wdiff | [] [] [] [] [] [] [] [] | 8 `----------------------------------------------------' 17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv 27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If December 1997 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. recode-3.6/AUTHORS0100644000000000000000000000154107141627050012375 0ustar rootrootAuthors of Free recode The following contributions warranted legal paper exchanges with the Free Software Foundation. Also see files ChangeLog and THANKS. RECODE François Pinard CANADA, 1949 Assigns the program. RECODE Odyssee Recherches Appliquees Disclaims work by François Pinard RECODE Ulrich Drepper Germany 1968 1996-03-25 Assigns all past and future changes. drepper@gnu.ai.mit.edu RECODE Bruno Haible Germany/France 1965 1999-09-08 Assigns past and future changes. haible@clisp.cons.org LIBUTF8 Bruno Haible Germany/France 1965 1999-12-08 Assigns program and future changes. haible@clisp.cons.org LIBICONV Bruno Haible Germany/France 1965 1999-12-08 Assigns program and future changes. haible@clisp.cons.org RECODE Linus Walleij Sweden 1972 2000-07-03 Assigns past and future changes (rtf.c). triad@df.lth.se recode-3.6/BACKLOG0100644000000000000000000036523007126423252012323 0ustar rootroot# Summary of pending email for Free recode 3.5d. # Last updated on 2000-06-28. # This file summarises almost all pending email pertaining to this package. # I think users deserve to know where maintenance stands for what they use. # When I will process a report from you, you may reasonably expect some # feedback from me. I understand it may be frustrating to see a release # made without your suggestion or correction in it, I apologise for this: # I have to draw a line at times, and still make releases once in a while. # When diffs have been provided, an asterisk sometimes replaces the initial # dot. All dates are written according to ISO 8601, as far as possible. ../rmail/exemples 1. 1992-11-23 mcgill-vision!corto.inria.fr!shapiro: recode 2. 1994-12-19 Martin Wendel: ANNOUNCE: Emil-2.0 is available 3. 1995-02-28 Francois Pinard: UUPC 4. 1995-03-11 Scott Nelson: ISO-8859-X email test 5. 1995-03-16 Martin Wendel: ANNOUNCE: emil-2.0.5 released 6. 1995-07-05 François Pinard: Re: Retour ! 7. 1995-07-25 David Collier-Brown: Early announcement: Mime-witing library 8. 1996-03-02 François Pinard: Re: Présentation de Ulrich Drepper! 9. 1996-06-09 François Pinard: Re: About recode 10. 1996-06-09 Roberto Alsina: Re: About recode 11. 1997-10-30 =?iso-8859-1?Q?G=E9rald_St=2DArneault_=3Cstarneag=40grics.qc.ca= 12. 3900-03-22 Bruno Haible: Re: recode-3.6 ../rmail/gettext 1. 1999-07-05 Bruno Haible: recode-3.5 installation problem 2. 1999-07-14 Eric Siegerman: Recode 3.5 w/NLS doesn't link on Solaris 2.5.1 3. 1999-04-02 Laurent Bourbeau: Recode 3.4q - bug-1 4. 1999-04-05 Laurent Bourbeau: Recode 3.4q - Bug 6 5. 1999-04-05 Laurent Bourbeau: Recode 3.4q - Bug 7 6. 1997-12-02 François Pinard: [Eric Backus ] recod 7. 1997-12-09 François Pinard: Re: recode 3.4e pretest 8. 1998-11-09 Alain Magloire: recode on Solaris 9. 3900-05-18 Thierry Constant: recode ../rmail/libtool 1. 1997-12-16 Erick Branderhorst: recode and ltmain.sh on solaris 2.6 2. 1998-01-07 Erick Branderhorst: recode-3.4g is not compiling properly becaus 3. 1998-02-23 Jim Meyering: Re: Installing fileutils 3.16m on icule 4. 1998-03-24 Larry W. Virden, x2487: problems building recode 3.4f 5. 1998-10-21 François Pinard: Re: Some paxutils issues 6. 1999-04-02 François Pinard: recode 3.4q - testing difficulties 7. 1999-04-03 Alexandre Oliva: Re: recode 3.4q - testing difficulties 8. 1999-12-12 Tom Hageman: recode-3.5 on NEXTSTEP, OPENSTEP and MacOS X Server 9. 1999-09-16 Daniel Ouimet: Re: probleme avec recode 10. 1998-07-21 François Pinard: Re: recode: lat1html.c 11. 1998-07-21 Wiel: recode: lat1html.c 12. 1998-12-27 François Pinard: recode - dynlibs 13. 1999-12-15 François Pinard: libtool.m4 and aclocal 14. 1999-12-15 Jim Meyering: Re: libtool.m4 and aclocal 15. 1999-12-15 Akim Demaille: Re: libtool.m4 and aclocal 16. 1999-12-15 Tom Tromey: Re: libtool.m4 and aclocal ../rmail/suggestions 1. 3900-02-24 George Zeigler: Re: [SLE] character set converter in SuSE? 2. 3900-02-25 François Pinard: Re: [SLE] character set converter in SuSE? 3. 3900-02-23 regnorj@sami.uit.no: recode and the Sami language ../admin/rmail/emacs 1. 1998-05-12 François Pinard: Emacs 20.2.93 - lisp/format.el and recode ../admin/rmail/jitterbug 1. 1997-12-28 Jim Meyering: rsync: a neat tool 2. 1999-08-03 François Pinard: Bug tracking 3. 1999-08-03 David Ascher: FYI: CareTracker from LinuxCare 4. 1999-10-18 Barry A. Warsaw: Re: Adding info to Python Buglist 5. 1999-10-16 Jason Trowbridge: Re: Adding info to Python Buglist 6. 1999-10-17 Hrvoje Niksic: Re: Adding info to Python Buglist 7. 1999-10-18 Jason Trowbridge: Re: Adding info to Python Buglist 8. 3900-03-24 Nick Trout: Re: Intranet database 9. 3900-03-22 Alessandro Bottoni: Any equivalent of req/wreq, gnats or bugzill 10. 1996-09-27 Usenet news: Re: Message buffers associated with files? 11. 1996-09-27 Scott Blachowicz: Re: Message buffers associated with files? 12. 1996-09-27 Lars Magne Ingebrigtsen: Re: Message buffers associated with fil 13. 1996-09-27 Paul Franklin: Re: Message buffers associated with files? 14. 1996-10-02 Lars Magne Ingebrigtsen: Re: Message buffers associated with fil 15. 1996-07-25 Paul Franklin: red gnus idea--gnats backend? 16. 1996-07-26 Per Abrahamsen: Re: red gnus idea--gnats backend? 17. 1996-07-29 Ken Raeburn: Re: red gnus idea--gnats backend? 18. 1994-07-14 shealy%aldiscon.ie@Lightning.McRCIM.McGill.EDU: Bug Tracking Sys 19. 1994-07-14 dwood@sun174.cpdsc.com: Re: Bug Tracking System 20. 1994-07-14 leisner@sdsp.mc.xerox.com: Re: Bug Tracking System 21. 1994-07-14 mordock@cisco.com: Re: Bug Tracking System 22. 3900-06-10 François Pinard: jitterbug 23. 3900-06-19 Barry A. Warsaw: Re: [Mailman-Developers] Re: Re: Various mailma ../admin/rmail/legalese 1. 1997-11-24 Richard Stallman: Re: License for recode 2. 1999-09-15 François Pinard: Re: cjk.tgz ../admin/rmail/list-admin 1. 1999-07-20 Mail Delivery Subsystem: Returned mail: Can't create output 2. 1999-07-20 Mail Delivery Subsystem: Returned mail: Can't create output 3. 1999-06-02 Mail Delivery Subsystem: Returned mail: User unknown 4. 3900-06-05 NDQ: [recode] Remove 5. 3900-03-19 deets@inker.com: [recode] Expose your business to the Internet 6. 3900-03-16 galvin@angelfire.com: [recode] Welcome To The CFN Solution" ../admin/rmail/list-announce 1. 1994-10-31 pinard@IRO.UMontreal.CA: Prerelease: GNU recode 3.3.2 2. 1994-11-06 pinard@iro.umontreal.ca: Release: GNU recode 3.4 3. 1994-12-01 pinard@IRO.UMontreal.CA: Prerelease: GNU recode 3.4.1 4. 1996-09-20 François Pinard: Prerelease: GNU recode 3.4.2 5. 1997-09-27 François Pinard: Prerelease: GNU recode 3.4c 6. 1997-11-23 François Pinard: Prerelease: GNU recode 3.4d 7. 1997-12-02 François Pinard: Prerelease: GNU recode 3.4e 8. 1997-12-10 François Pinard: Prerelease: GNU recode 3.4f 9. 1998-09-30 François Pinard: Prerelease: GNU recode 3.4i 10. 1998-10-15 François Pinard: Prerelease: Free recode 3.4j 11. 1998-10-28 François Pinard: Prerelease: Free recode 3.4k 12. 1998-10-28 François Pinard: Re: GNU Software Catalog: Current Software, @i 13. 1998-11-23 François Pinard: Prerelease: Free recode 3.4l 14. 1998-12-13 François Pinard: Prerelease: Free recode 3.4m 15. 1998-12-23 Brian Jepson: Re: GNU Software Catalog: Current Software, @item 16. 1996-03-02 François Pinard: Re: Recode 17. 1999-01-05 François Pinard: Prerelease: Free recode 3.4o 18. 1999-01-07 François Pinard: Prerelease: Free recode 3.4p 19. 1999-01-05 François Pinard: Prerelease: Free recode 3.4o 20. 1999-04-01 François Pinard: Prerelease: Free recode 3.4q 21. 1998-12-18 François Pinard: Prerelease: Free recode 3.4n 22. 1999-01-05 François Pinard: Prerelease: Free recode 3.4o 23. 1999-01-05 François Pinard: Prerelease: Free recode 3.4o 24. 1999-04-29 François Pinard: Executable of `recode' for DOSWIN 25. 1999-01-16 François Pinard: Playing with implied surfaces 26. 1999-05-18 François Pinard: Prerelease: Free recode 3.4r 27. 1999-06-01 François Pinard: Release: Free recode 3.5 28. 1999-06-06 François Pinard: Release: Free recode 3.5 29. 1999-12-20 François Pinard: Prerelease: Free recode 3.5a 30. 1999-12-20 François Pinard: Prerelease: Free recode 3.5a 31. 1999-12-23 François Pinard: Prerelease: Free recode 3.5b 32. 1999-12-23 François Pinard: Prerelease: Free recode 3.5b 33. 1999-12-29 François Pinard: Prerelease: Free recode 3.5c 34. 1999-12-28 François Pinard: Merging `libiconv' within `recode' 35. 1999-12-29 François Pinard: Prerelease: Free recode 3.5c 36. 3900-06-27 Isaac.Hollander@msdw.com: recode 3.5d? 37. 3900-06-28 François Pinard: Re: recode 3.5d? ../admin/rmail/port-doswin 1. 1998-02-18 Eli Zaretskii: Re: Integrating your diffs 2. 1998-02-26 Eli Zaretskii: Re: Snapshot of `tar' sources 3. 1998-02-26 François Pinard: Re: Snapshot of `tar' sources 4. 1998-03-01 Eli Zaretskii: Re: tar 1.12a 5. 1998-03-01 Eli Zaretskii: Re: Snapshot of `tar' sources 6. 1998-03-09 Eli Zaretskii: Re: Snapshot of `tar' sources 7. 1998-03-22 Eli Zaretskii: File name quoting in Tar 8. 1998-04-05 Tom Tromey: Re: AM_CONFIG_HEADER ignores directories 9. 1998-11-10 François Pinard: Re: Snapshot of `tar' sources 10. 1998-11-21 Jim Meyering: Re: Textutils 1.22d ported to DJGPP 11. 1998-11-22 Eli Zaretskii: Re: `tar' modifs in `lib/' 12. 1998-11-22 Eli Zaretskii: Re: msdos version of tar 13. 1998-11-22 Eli Zaretskii: Re: Textutils 1.22d ported to DJGPP 14. 1998-12-06 Eli Zaretskii: Re: GNU Emacs port to Solaris 7 (sparc, 64-bit) 15. 1999-02-15 Eli Zaretskii: Re: gettext.m4 and absolute file names 16. 1999-03-30 Eli Zaretskii: Re: GNU configur.bat 17. 1999-03-30 Eli Zaretskii: Re: GNU configur.bat 18. 1999-04-13 François Pinard: Re: ... and paxutils 19. 1999-04-13 Eli Zaretskii: Re: ... and paxutils 20. 1999-04-15 François Pinard: DJGPP rm possible bug 21. 1999-04-18 Eli Zaretskii: Re: DJGPP rm possible bug 22. 1999-05-06 Eli Zaretskii: Re: GNU sed or equivalent on Windows NT4? 23. 1999-05-09 Eli Zaretskii: Re: Automatic expansion of environment variables 24. 1999-05-16 Alain Magloire: Re: Automatic expansion of environment variables 25. 1999-05-18 Eli Zaretskii: Re: Automatic expansion of environment variables 26. 1999-05-18 Alain Magloire: Re: Automatic expansion of environment variables 27. 1999-05-19 Eli Zaretskii: Re: Automatic expansion of environment variables 28. 1999-05-26 Alain Magloire: v2.04 (was Re: Automatic ...) 29. 1999-07-01 François Pinard: Re: ["Uwe Brauer" ] hebr 30. 1999-08-08 Ian Lance Taylor: [eliz@is.elta.co.il: Re: Problems building Bin 31. 1999-08-08 Mark E.: Re: [eliz@is.elta.co.il: Re: Problems building Binutils 32. 1998-03-26 François Pinard: Re: find reco dos executable 33. 1998-11-24 Eli Zaretskii: Re: recode for Amiga - 3.4k update 34. 1998-11-24 Eli Zaretskii: Re: recode for Amiga - 3.4k update 35. 1998-11-24 François Pinard: Re: recode for Amiga - 3.4k update 36. 1998-11-25 Eli Zaretskii: configure+dist [was: Re: recode for Amiga - 3.4k 37. 1998-11-25 Eli Zaretskii: libtool+shell [was: Re: recode for Amiga - 3.4k u 38. 1998-11-25 Eli Zaretskii: Perl [was: Re: recode for Amiga - 3.4k update] 39. 1998-11-25 Eli Zaretskii: EOLs [was: Re: recode for Amiga - 3.4k update] 40. 1998-11-25 Eli Zaretskii: configure+dist [was: Re: recode for Amiga - 3.4k 41. 1998-11-25 Eli Zaretskii: Intro [was: Re: recode for Amiga - 3.4k update] 42. 1998-11-30 Eli Zaretskii: Re: New -Spo option to `recode' 43. 1999-01-31 Matt Armstrong: Re: Cygwin, make install and .exe 44. 1999-02-15 Eli Zaretskii: Re: gettext.m4 and absolute file names 45. 1999-04-10 Robert S. Maier: automake problems DJGPP 46. 1999-04-10 Alexandre Oliva: Re: automake problems DJGPP 47. 1999-04-13 Eli Zaretskii: Re: ... and paxutils 48. 1999-04-12 Eli Zaretskii: Re: Playing with DJGPP again 49. 1999-04-12 Eli Zaretskii: Re: Playing with DJGPP again 50. 1999-04-15 François Pinard: recode on DJGPP 51. 1999-06-01 François Pinard: Re: POT file for recode 3.4r now being uploaded 52. 1999-06-02 François Pinard: Re: POT file for recode 3.4r now being uploaded 53. 1999-06-03 Eli Zaretskii: Re: POT file for recode 3.4r now being uploaded 54. 1999-12-14 Eli Zaretskii: Re: `recode' and DJGPP 55. 1999-12-14 François Pinard: Re: `recode' and DJGPP 56. 1999-02-07 Jim Meyering: Re: gettext.m4 and absolute file names ../admin/rmail/port-winNT 1. 1998-02-09 Paul E. Jones: Tar-1.12 on Windows NT 2. 1998-02-09 François Pinard: Re: Tar-1.12 on Windows NT 3. 1998-02-09 Eli Zaretskii: Re: Tar-1.12 on Windows NT 4. 1998-02-11 Eli Zaretskii: Re: Tar-1.12 on Windows NT 5. 1998-02-11 Eli Zaretskii: Re: Tar-1.12 on Windows NT 6. 1998-02-11 Paul E. Jones: Re: Tar-1.12 on Windows NT 7. 1998-02-12 Eli Zaretskii: Re: Tar-1.12 on Windows NT 8. 1998-02-12 Eli Zaretskii: Re: [comp.windows.x.apps] Re: Making PC like UNIX 9. 1998-02-24 Paul E. Jones: Re: Tar-1.12 on Windows NT 10. 1998-03-05 François Pinard: Re: Tar-1.12 on Windows NT 11. 1998-03-05 Eli Zaretskii: Re: Tar-1.12 on Windows NT 12. 1998-03-08 Eli Zaretskii: Re: Tar-1.12 on Windows NT 13. 1998-03-09 Paul E. Jones: Re: Tar-1.12 on Windows NT 14. 1998-03-22 Eli Zaretskii: Re: [pinard@icule.progiciels-bpi.ca: Re: Prerelea 15. 1998-03-27 François Pinard: Keeping copies of your binaries 16. 1998-03-29 Paul E. Jones: Re: Keeping copies of your binaries 17. 1998-03-29 Eli Zaretskii: Re: Keeping copies of your binaries ../admin/rmail/relecture 1. 1999-01-01 François Pinard: Références de l'IANA sur les jeux de caractè 2. 1999-01-01 François Pinard: D'autre références 3. 1999-01-13 Ulrich Drepper: wanna read? 4. 1999-04-02 Laurent Bourbeau: Recode 3.4q - Bug-2 5. 1999-04-02 Laurent Bourbeau: Recode 3.4q - Bug 3 6. 1999-04-05 Laurent Bourbeau: Recode 3.4q - Bug 6 7. 1999-04-05 Laurent Bourbeau: Recode 3.4q - Bug-Question 8. 1999-04-23 Olivier Tharan: Re: =?iso-8859-1?Q?Manuel_fran=E7ais_pour_recode 9. 1999-04-27 François Pinard: Re: Manuel =?iso-8859-1?q?fran=E7ais?= pour rec ../asian/rmail/2022 1. 1994-08-26 David Williss: Unicode to ISO-2022 2. 1994-08-27 Martin J. Duerst: Re: Unicode to ISO-2022 3. 1994-12-15 Haruhiko Nishida: Re: HTML in Unicode? 4. 1994-12-16 John B. Melby: Re: HTML in Unicode? 5. 1995-07-31 morioka@jaist.ac.jp (=?ISO-2022-JP?B?GyRCPGkyLBsoQiAbJEJDTkknGyh 6. 1994-09-02 Erik Naggum: Re: CDRA 7. 1997-02-06 François Pinard: Re: flex-2.5.2.ko.po 8. 1997-08-09 Kenichi Handa: Re: Learning more about MULE 9. 1997-01-19 Alain LaBont/e'/: Re: switching ISO 2022 <-> Unicode 10. 1997-08-06 Martin J. Duerst: Re: charset names 11. 1997-09-02 Ulrich Drepper: Re: librecode, libc, gettext 12. 1997-10-08 Martin J. Dürst: Re: librecode, libc, gettext 13. 1997-10-07 Martin J. Dürst: Re: librecode, libc, gettext 14. 1997-10-08 Keld J|rn Simonsen: Re: librecode, libc, gettext 15. 1997-08-01 Martin J. Duerst: Re: librecode, libc, gettext 16. 1995-03-14 John B. Melby: Re: Unicode/ISO-10646/TRON/MULE/MCS for multiling 17. 1990-06-29 Robert Claeson: Re: Int'l Character set (Was: Re: filen 18. 1997-11-13 Duane Ellis: (none) 19. 1997-11-14 Werner Lemberg: Re: your mail 20. 1995-04-07 Kari E. Hurtta: 8-bit charset in C1-C3 banks (Re: DO use ESC [ 1 21. 1997-11-14 Jungshik Shin: Re: unicode <-> iso-2022 22. 1997-07-29 Oum Sang-il: clipboard encoding 23. 1994-10-05 Erik Naggum: Re: Shift-JIS (was Re: multilingual HTML, SGML docu 24. 1994-10-07 G. Ken Holman: Re: more on Japanese SGML, Ken Lunde & ISO 2022 25. 1995-04-26 Chiaki Ishikawa: Re: 7 bit mail in 1992 still? 26. 1998-03-09 Alain LaBonté : Canadian contribution objecting against future u 27. 1997-11-14 Jungshik Shin: Re: unicode <-> iso-2022 28. 1999-01-16 Shinya Hanataka: ISO-2022-JP-2 latin character encode bug 29. 1999-01-16 Ulrich Drepper: Re: ISO-2022-JP-2 latin character encode bug 30. 1999-01-16 Shinya Hanataka: ISO-2022-JP-2 latin character encode bug 31. 1999-01-16 Ulrich Drepper: Re: ISO-2022-JP-2 latin character encode bug 32. 1992-06-09 Yutaka Sato =?ISO-2022-JP?B?GyRAOjRGI0stGyhK?=: Re: How to see J 33. 1999-07-13 lal@cs.ucdavis.edu: Japanese character conversion tools 34. 1999-05-05 Frank da Cruz: Re: Can someone provide an explanation ? 35. 1999-06-09 Hrvoje Niksic: ISO 2022 support 36. 1999-08-17 François Pinard: Re: ISO 2022 support 37. 1999-08-17 François Pinard: Re: ISO 2022 support 38. 1999-08-24 Hrvoje Niksic: Re: ISO 2022 support 39. 1999-08-24 François Pinard: Re: ISO 2022 support 40. 1999-08-24 Hrvoje Niksic: Re: ISO 2022 support 41. 1992-06-09 Yutaka Sato =?ISO-2022-JP?B?GyRAOjRGI0stGyhK?=: Re: How to see J 42. 1997-03-28 Ulrich Drepper: Re: Re: Character set conversion API for libc 43. 1997-03-28 Jake Morrison: Re: Re: Character set conversion API for libc 44. 1997-09-11 Kenichi Handa: Re: RMAIL and coding system (Re: file name coding 45. 1997-09-18 Martin J. Dürst: Re: RMAIL and coding system (Re: file name codi 46. 3900-06-02 Philippe Verdy: =?iso-8859-1?Q?Re:_Messages_fran=E7ais_de_GNU_Pr ../asian/rmail/aides 1. 1997-12-02 Jake Morrison: Re: Character set conversion API for libc 2. 1997-12-08 François Pinard: Re: unicode <-> hex converter (fwd) 3. 1997-12-08 François Pinard: Re: help 4. 1998-03-23 François Pinard: Re: tar bugs with -g and -G 5. 1998-03-24 Greg HERMAN: Re: tar bugs with -g and -G 6. 1997-04-10 François Pinard: Re: unicode <-> hex converter (fwd) ../asian/rmail/auto-recognition 1. 1998-07-04 MORIOKA Tomohiko: Re: EMH 1.8.1 2. 1998-07-04 Olivier Lecarme: Re: EMH 1.8.1 3. 1999-12-18 Bruno Haible: Re: suggestion ridicule pour recode ../asian/rmail/chinese 1. 1993-07-22 Pierre Mailhot: Annonce: nouveaux utilitaires "chinois" sur sagu 2. 1993-07-23 Qiang Ming Tan: How to use Chinese tools 3. 1993-08-04 Richard Turmel: Annonce sur lude-iro 4. 1994-11-21 L.S.Ng: Internationalisation vs. Native Development & Chinese WW 5. 1995-01-21 Bow-Yaw Wang: Introducing CEF (Chinese Encoding Framework) 6. 1995-05-01 ywliu@beta.wsl.sinica.edu.tw: Re: glocale info 7. 1996-03-29 Pierre Zweigenbaum: Q: Chinese: GB-2312 or BIG-5? 8. 1996-04-17 Pierre Zweigenbaum: R: Chinese: GB-2312 or BIG-5? 9. 1997-02-25 Ya-Gui Wei: [INFO] How to Read Chinese Text on Usenet: FAQ for a 10. 1997-05-05 John Clews: East Asian librarians voted for the pinyin system (f 11. 1997-12-01 Richard Stallman: Chinese translation of the GNU Manifesto 12. 1998-03-24 Greg HERMAN: Re: tar bugs with -g and -G 13. 1998-03-24 Greg HERMAN: Re: tar bugs with -g and -G 14. 1999-05-11 Ulrich Drepper: Re: Question on GB encoding in glibc-2.1.X 15. 1999-05-12 Tung-Han Hsieh: Re: Question on GB encoding in glibc-2.1.X 16. 1997-08-01 Martin J. Duerst: Re: librecode, libc, gettext 17. 1997-12-16 Pofeng Lee: Re: help ../asian/rmail/chinese-big5 1. 1995-08-07 Jyh-Shyang Wang: Re: Problem about compile tar on Ultrix... 2. 1997-07-25 Pofeng Lee: Re: help 3. 1997-12-08 Kenichi Handa: [rms@santafe.edu: Chinese translation of the GNU 4. 1997-10-19 PILCH Hartmut: Hanja-Big5 conversion table 5. 1997-10-20 Jason Molenda: Re: Hanja-Big5 conversion table 6. 1997-10-20 Werner Lemberg: Re: Hanja-Big5 conversion table 7. 1997-10-20 Martin J. Dürst: Re: Hanja-Big5 conversion table 8. 1997-10-20 Werner Lemberg: Re: Hanja-Big5 conversion table 9. 1997-10-21 Martin J. Dürst: Re: Hanja-Big5 conversion table 10. 1997-10-21 Mark Leisher: Re: Hanja-Big5 conversion table 11. 1997-10-20 Werner Lemberg: Re: Hanja-Big5 conversion table 12. 1997-10-20 Martin J. Dürst: Re: Hanja-Big5 conversion table 13. 1997-10-20 Werner Lemberg: Re: Hanja-Big5 conversion table 14. 1997-10-20 Jason Molenda: Re: Hanja-Big5 conversion table 15. 1999-04-05 Tung-Han Hsieh: The zh_TW.Big5 locale data 16. 1999-11-29 Angelo Borsotti: iconv Big5 incorrect decoding 17. 1999-12-23 Georges KO: Problems with: 1) French guillemets and Big5 in rege 18. 3900-06-02 Roger So: Big5HKSCS iconv(3) module 19. 3900-06-04 Ulrich Drepper: Re: Big5HKSCS iconv(3) module ../asian/rmail/han-unification 1. 1995-12-05 Per Bothner: Re: Internationalization resources? 2. 1995-12-26 Per Bothner: Issues in Internationalizing Guile, Scheme, and Ema 3. 1995-12-27 Richard Stallman: Re: Issues in Internationalizing Guile, Scheme 4. 1995-12-27 Per Bothner: Re: Issues in Internationalizing Guile, Scheme, and 5. 1995-12-28 Richard Stallman: Re: Issues in Internationalizing Guile, Scheme 6. 1995-12-31 Per Bothner: emacs implications of Guile internationalization 7. 1997-07-27 Ulrich Drepper: Re: Trying Emacs 20 8. 1996-01-04 Per Bothner: Re: New Mule 9. 1997-07-28 Pofeng Lee: Re: help 10. 1996-11-27 unicode@Unicode.ORG: Re: Information on new unihan characters? 11. 1995-03-16 John B. Melby: Re: Unicode/ISO-10646/TRON/MULE/MCS for multiling 12. 1995-03-27 Martin J. Duerst: Re: Unicode/ISO-10646/TRON/MULE/MCS for multil 13. 1997-10-31 Martin J. Dürst: Re: librecode, libc, gettext 14. 1997-10-31 François Pinard: Re: librecode, libc, gettext 15. 1997-10-31 Martin J. Dürst: Re: librecode, libc, gettext 16. 1995-03-16 Glenn A. Adams: Re: Unicode/ISO-10646/TRON/MULE/MCS for multilin 17. 1998-09-08 Alain LaBonté : Re: Projet de rapport de liaison entre ISO/CEI J 18. 1998-03-17 Alain LaBonté : Compréhension du problème japonais pour le jeu u 19. 1996-01-05 François Pinard: Re: 8bit clean perl? (fwd) 20. 1998-09-09 Alain LaBonté : Re: Projet de rapport de liaison entre ISO/IEC 21. 3900-05-06 Dennis E. Hamilton: OT: Unicode Unification Objections 22. 3900-05-07 Kevin Russell: Re: OT [Way OT]: Unicode Unification Objections 23. 3900-05-07 Kevin Russell: Re: OT [Way OT]: Unicode Unification Objections 24. 3900-05-08 François Pinard: Re: OT [Way OT]: Unicode Unification Objections 25. 3900-05-08 Fredrik Lundh: Re: OT [Way OT]: Unicode Unification Objections ../asian/rmail/help 1. 1998-12-04 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i 2. 1998-12-07 François Pinard: Re: Prerelease: GNU recode 3.4i 3. 1998-12-10 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i 4. 1998-12-10 François Pinard: Re: Prerelease: GNU recode 3.4i 5. 1998-12-18 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i ../asian/rmail/iconv 1. 1998-12-08 hanataka@abyss.rim.or.jp: gconv/iconv bugs about japanese charac 2. 1998-12-08 Ulrich Drepper: Re: gconv/iconv bugs about japanese character co 3. 1999-01-22 Andreas Schwab: Re: iconv changes 4. 1999-05-06 Rick Jelliffe: Improvement to libc iconv for East Asian text: lo 5. 1999-07-23 Changwoo Ryu: iconv() utf8 -> euc-kr bug. 6. 1999-09-07 Bruno Haible: Re: [loic@ceic.com] Unicode: Toward a standard lib 7. 1999-12-09 Bruno Haible: Re: cjk.tgz, iconv, transliterations 8. 1999-12-13 Andrew Clausen: Memory leaks in iconv_open() / iconv_close() 9. 1999-12-20 Bruno Haible: JOHAB encoder is incomplete 10. 1999-12-20 Bruno Haible: problem with ISO-2022-KR encoder 11. 1999-12-20 Bruno Haible: one more iconv alias 12. 1999-12-20 Bruno Haible: more typos in gconv-modules 13. 1999-12-20 Bruno Haible: iconv calling convention 14. 1999-12-20 Bruno Haible: final iconv call is buggy 15. 1999-12-20 Bruno Haible: gettext shall use iconv 16. 1999-12-20 Ulrich Drepper: Re: problem with ISO-2022-KR encoder 17. 1999-12-20 Ulrich Drepper: Re: one more iconv alias 18. 1999-12-20 Ulrich Drepper: Re: more typos in gconv-modules 19. 1999-12-21 Bruno Haible: Re: libiconv-0.2 20. 1999-12-22 Bruno Haible: Re: libiconv et recode :-) 21. 1999-12-22 François Pinard: Re: libiconv et recode :-) 22. 1999-12-22 Bruno Haible: Re: libiconv et recode :-) 23. 1999-12-24 François Pinard: recode et libiconv, =?iso-8859-1?q?r=E9flexions 24. 1999-12-28 Ulrich Drepper: more conversion modules 25. 1999-12-28 Bruno Haible: Re: recode et libiconv, =?iso-8859-1?q?r=E9flexion 26. 3900-01-18 Bruno Haible: iconv(3) return value 27. 3900-01-18 Ulrich Drepper: Re: iconv(3) return value 28. 3900-01-19 Bruno Haible: Re: iconv(3) return value 29. 3900-01-21 Bruno Haible: fixes for UTF-8 decoder 30. 3900-03-14 Bruno Haible: utf-16 iconv requires aligned buffer 31. 3900-03-15 Markus Kuhn: Re: using iconv for conversion from/to Unicode 32. 3900-03-15 Bruno Haible: Re: using iconv for conversion from/to Unicode 33. 3900-03-22 Bruno Haible: Re: recode-3.6 34. 3900-03-22 Bruno Haible: Re: recode-3.6 35. 3900-03-23 Bruno Haible: UCS-2 conversion 36. 3900-03-23 Bruno Haible: removing dead code 37. 3900-03-23 Ulrich Drepper: Re: removing dead code 38. 3900-03-28 Andreas Jaeger: Failure in iconv-test with UCS2 39. 3900-03-27 Ulrich Drepper: Re: UCS-2 conversion 40. 3900-03-28 Ulrich Drepper: Re: Failure in iconv-test with UCS2 41. 3900-03-29 Bruno Haible: Re: Failure in iconv-test with UCS2 42. 3900-03-29 Bruno Haible: Re: utf-16 iconv requires aligned buffer 43. 3900-03-29 Ulrich Drepper: Re: Failure in iconv-test with UCS2 44. 3900-03-29 François Pinard: `libiconv' pour Python? 45. 3900-03-30 Ulrich Drepper: Re: utf-16 iconv requires aligned buffer 46. 3900-04-04 Andreas Schwab: big5.c typo 47. 3900-04-04 Ulrich Drepper: Re: big5.c typo 48. 3900-04-04 jaeger@informatik.uni-kl.de: error in utf-16.c 49. 3900-04-04 Ulrich Drepper: Re: error in utf-16.c 50. 3900-04-04 jaeger@informatik.uni-kl.de: Re: error in utf-16.c 51. 3900-05-19 Bruno Haible: Re: Bug in gettext tools 52. 3900-06-12 Ulrich Drepper: next big iconv patch 53. 3900-06-13 Edmund GRIMLEY EVANS: glibc-2.1.3: iconv requiring extra byte wi 54. 3900-06-13 Ulrich Drepper: Re: glibc-2.1.3: iconv requiring extra byte with 55. 3900-06-27 François Pinard: Diagnostiques pour `libiconv' dans `recode' (bi 56. 3900-06-26 François Pinard: Diagnostics en compilant `libiconv' dans `recod 57. 3900-03-30 Bruno Haible: Re: `libiconv' pour Python? 58. 3900-03-30 François Pinard: Re: `libiconv' pour Python? 59. 3900-03-30 Bruno Haible: Re: `libiconv' pour Python? 60. 3900-04-25 Bruno Haible: recode + libiconv (3) 61. 3900-03-21 François Pinard: libiconv et recode - petite note 62. 1999-12-31 Bruno Haible: libiconv-0.3, recode-3.5b 63. 3900-01-04 Bruno Haible: libiconv-1.0 is released 64. 1999-12-09 Bruno Haible: cjk.tgz 65. 1999-12-09 François Pinard: Re: cjk.tgz ../asian/rmail/japanese 1. 1995-04-25 Ryutaro Susukita: Re: tar-1.11.2 SunOS-4.1.3 JLE-1.1.3 segmentai 2. 1995-04-26 International List: Re: International mailings/recodings 3. 1996-04-08 Chiaki Ishikawa: Re: Notes to translators of GNU packages 4. 1997-08-04 Yoshihiko Mori: Re: [Q] height and witdh of Emacs initial window 5. 1997-08-06 Alain LaBont\i - SCT: Classement... « alphabétique » 6. 1997-12-02 Ulrich Drepper: Re: Character set conversion API for libc 7. 1997-12-02 Jake Morrison: Re: Character set conversion API for libc 8. 1997-12-03 Ulrich Drepper: Re: Character set conversion API for libc 9. 1997-12-03 Jake Morrison: Re: Character set conversion API for libc 10. 1998-02-09 =?iso-2022-jp?B?GyRCRiM4NhsoQg==?= =?iso-2022-jp?B?GyRCQD8bKEI=? 11. 1998-04-02 Uma Umamaheswaran: 10646 and Japanese 12. 1996-07-05 SAKAI Kiyotaka: Re: About sharutils-4.2.1.ja_JP.EUC.po 13. 1996-07-05 Ulrich Drepper: Re: About sharutils-4.2.1.ja_JP.EUC.po 14. 1996-07-08 SAKAI Kiyotaka: Re: About sharutils-4.2.1.ja_JP.EUC.po 15. 1996-07-08 Ulrich Drepper: Re: About sharutils-4.2.1.ja_JP.EUC.po 16. 1996-07-10 SAKAI Kiyotaka: Re: About sharutils-4.2.1.ja_JP.EUC.po 17. 1996-07-10 Ulrich Drepper: Re: About sharutils-4.2.1.ja_JP.EUC.po 18. 1996-07-15 SAKAI Kiyotaka: Re: About sharutils-4.2.1.ja_JP.EUC.po 19. 1996-07-15 NIIBE Yutaka: Re: About sharutils-4.2.1.ja_JP.EUC.po 20. 1996-07-15 Ulrich Drepper: Re: About sharutils-4.2.1.ja_JP.EUC.po 21. 1996-04-05 François Pinard: Re: Notes to translators of GNU packages 22. 1994-10-04 Rick Jelliffe: "was Re: multilingual HTML, SGML documents" hex converte 34. 1997-04-11 Leong Kok Yong: Re: unicode <-> hex converter (fwd) 35. 1997-12-08 François Pinard: Re: Japanese format conversions SJIS <--> JIS? 36. 1997-12-12 NUMATA Toshinori: (i18n.419) (posix 3411) 3007 IDEOGRAPHIC NUMBE 37. 1998-03-12 Jeffrey Friedl: Re: Japanese format conversions SJIS <--> JIS? 38. 1998-03-12 Jeffrey Friedl: Re: Japanese format conversions SJIS <--> JIS? 39. 1998-03-13 François Pinard: Re: Japanese format conversions SJIS <--> JIS? ../asian/rmail/japanese-euc 1. 1998-04-28 Koichi Nakatani: Re: MHonArc and multi-byte characters in HTML 2. 1998-04-28 Earl Hood: Re: MHonArc and multi-byte characters in HTML 3. 1998-05-06 Koichi Nakatani: Re: MHonArc and multi-byte characters in HTML 4. 1994-12-14 Daniel R. Kegel: Re: HTML in Unicode? 5. 1999-08-27 Coordinator of Japanese Team: SVP make EUC-JP charset valid (was ../asian/rmail/jconv 1. 1999-07-14 lal@cs.ucdavis.edu: Re: Japanese character conversion tools 2. 1999-07-14 Peter Wyzlic: Re: Japanese character conversion tools 3. 1999-07-14 Jungshik Shin: Re: Japanese character conversion tools ../asian/rmail/korean 1. 1997-10-07 Jungshik Shin: description of Korean/Chinese lang. environment 2. 1997-10-08 Jungshik Shin: Re: korean 3. 1997-10-08 Jungshik Shin: Re: description of Korean/Chinese lang. environme 4. 1997-10-08 Ken Lunde: Re: description of Korean/Chinese lang. environment 5. 1997-10-08 Ken Lunde: Re: description of Korean/Chinese lang. environment 6. 1997-10-08 Martin J. Dürst: Re: description of Korean/Chinese lang. environ 7. 1997-10-08 Kenichi Handa: Re: description of Korean/Chinese lang. environme 8. 1997-10-08 Martin J. Dürst: Re: description of Korean/Chinese lang. environ 9. 1997-10-09 Kenichi Handa: Re: description of Korean/Chinese lang. environme 10. 1997-10-09 Martin J. Dürst: Re: description of Korean/Chinese lang. environ 11. 1997-10-15 Deogtae Kim: Re: korean-hanterm input method and han.* encoding 12. 1997-10-21 Werner Lemberg: Re: [Marcel.Kohl@vs.dasa.de: korean characters] 13. 1997-10-21 Mark Leisher: Re: [Marcel.Kohl@vs.dasa.de: korean characters] 14. 1997-10-21 Kenichi Handa: [Marcel.Kohl@vs.dasa.de: korean characters] 15. 1997-10-21 Martin J. Dürst: Re: [Marcel.Kohl@vs.dasa.de: korean characters] 16. 1997-10-22 Kenichi Handa: Re: korean-hanterm input method and han.* encodin 17. 1997-10-22 Gary Roberts: Re: [Marcel.Kohl@vs.dasa.de: korean characters] 18. 1997-10-22 Jungshik Shin: Re: [Marcel.Kohl@vs.dasa.de: korean characters] 19. 1997-10-22 Jungshik Shin: Re: [Marcel.Kohl@vs.dasa.de: korean characters] 20. 1997-10-22 Gary Roberts: Re: [Marcel.Kohl@vs.dasa.de: korean characters] 21. 1997-10-22 Jungshik Shin: Re: Korean mail coding-system and bug in iso-2022 22. 1997-10-22 Martin J. Dürst: Re: [Marcel.Kohl@vs.dasa.de: korean characters] 23. 1997-10-22 Kenichi Handa: Re: korean-hanterm input method and han.* encodin 24. 1997-10-22 Martin J. Dürst: Re: [Marcel.Kohl@vs.dasa.de: korean characters] 25. 1997-10-24 Jungshik Shin: Re: korean-hanterm input method and han.* encodin 26. 1997-10-25 Kenichi Handa: Re: korean-hanterm input method and han.* encodin 27. 1997-10-25 Jungshik Shin: Re: korean-hanterm input method and han.* encodin 28. 1997-10-25 Murata Shuuichirou: Re: korean-hanterm input method and han.* en 29. 1997-10-25 Martin J. Dürst: Re: korean-hanterm input method and han.* encod 30. 1997-10-25 Jungshik Shin: Re: korean-hanterm input method and han.* encodin 31. 1997-10-27 Martin J. Dürst: Re: korean-hanterm input method and han.* encod 32. 1997-10-27 Kenichi Handa: Re: korean-hanterm input method and han.* encodin 33. 1997-10-29 Joerg Plassen: Re: description of Korean/Chinese lang. environme 34. 1998-05-16 Yun YoungSun: [report] korean environment in gnus with semi. 35. 1998-05-17 MORIOKA Tomohiko: Re: [report] korean environment in gnus with s 36. 1998-11-26 Jungshik Shin: Adding Korean JOHAB support? 37. 1998-11-27 Kenichi Handa: Re: Adding Korean JOHAB support? 38. 1998-11-27 Jungshik Shin: Re: Adding Korean JOHAB support? 39. 1994-12-13 Ross Paterson: Re: can ISO-IR-*** be used as MIME charset? 40. 1999-03-11 Alain LaBonté : JUC : Noms de caractères coréens 41. 1997-12-15 Choi, Jun Ho: Re: flex-2.5.2.ko.po 42. 1998-01-06 François Pinard: Re: Phonetic transcription of Korean [was: Re: ../asian/rmail/korean-hangul 1. 1996-05-14 Alain LaBont/e'/: UNICODE et le codage hangul 2. 1996-05-15 Jian YANG: Re: UNICODE et le codage hangul 3. 1996-05-15 Alain LaBont/e'/: Re: UNICODE et le codage hangul 4. 1996-05-22 Alain LaBont/e'/: Re: Nom des caracteres coreens dans l'ISO/CEI 5. 1998-12-16 Francois Yergeau: Tel que promis 6. 1998-12-16 Francois Yergeau: Re: recode et table =?ISO-8859-1?Q?fran=E7aise 7. 3900-03-29 Mikael Olofsson: RE: Python - Next Release Questions ../asian/rmail/mule 1. 1998-03-28 Werner Lemberg: Re: MULE-UCS 0.01(YUME) Release. 2. 1998-03-28 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: MULE-UCS 0.0 3. 1998-03-28 Satoru Tomura: Re: MULE-UCS 0.01(YUME) Release. 4. 1998-04-08 NIIBE Yutaka: it works again 5. 1998-08-31 SL Baur: Re: MULE primer 6. 1998-09-01 Stephen J. Turnbull: Re: MULE primer 7. 1999-02-05 Stephen J. Turnbull: Re: More charset things 8. 1999-02-05 Stephen J. Turnbull: Re: More charset things 9. 1999-02-04 Stainless Steel Rat: Re: More charset things 10. 1999-05-07 Takashi Nishimoto: Re: Need help to find doc 11. 1997-11-05 French GNU/LI List: Re: Donation process 12. 3900-01-12 Joshua Redstone: Re: Japanese/XEmacs21 13. 3900-01-13 Satoru Tomura: Re: Japanese/XEmacs21 14. 3900-04-27 François Pinard: [gnu.emacs.help] Re: Convert DOS to Unix 15. 3900-04-26 François Pinard: Re: Problems with 8-bit headers 16. 3900-04-27 Kenichi Handa: Re: Problems with 8-bit headers 17. 3900-04-30 Florian Weimer: Re: Problems with 8-bit headers 18. 3900-04-30 Janusz S. Bien: Re: Problems with 8-bit headers 19. 3900-05-01 Florian Weimer: Re: Problems with 8-bit headers 20. 3900-05-01 Kai Großjohann: Re: Problems with 8-bit headers 21. 3900-05-06 Florian Weimer: Re: more multibyte bugs ../asian/rmail/mule-ucs 1. 3900-04-24 Vladimir Volovich: Re: Problems with 8-bit headers 2. 3900-04-26 Vladimir Volovich: Re: Problems with 8-bit headers 3. 3900-04-26 Janusz S. Bien: Re: Problems with 8-bit headers 4. 3900-05-01 Vladimir Volovich: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 =?iso-8859-1? 5. 3900-05-01 Shenghuo ZHU: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 6. 3900-05-01 Vladimir Volovich: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 7. 3900-05-02 Shenghuo ZHU: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 8. 3900-05-02 Shenghuo ZHU: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 9. 3900-05-03 Janusz S. Bien: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 10. 3900-05-03 Shenghuo ZHU: Re: =?koi8-r?b?8NLPwsEg0MXSwQ==?= 1 11. 3900-05-16 Eli Zaretskii: Re: [leaders] Re: iso-8859-2 on team-sl 12. 3900-04-25 Kai Großjohann: Re: People with From: 13. 3900-04-25 Florian Weimer: Re: People with From: 14. 3900-04-26 Florian Weimer: Re: People with From: 15. 3900-04-26 Shenghuo ZHU: Re: People with From: 16. 3900-04-26 Florian Weimer: Re: People with From: 17. 3900-04-26 Shenghuo ZHU: Re: People with From: 18. 3900-04-26 Karl EICHWALDER: Re: UTF-8 19. 3900-05-04 Karl EICHWALDER: Re: =?iso-8859-5?b?v+De0dAg39Xg0A==?= 1 20. 3900-04-21 Michael Welsh Duggan: Re: UTF-8 21. 3900-05-19 Lars Magne Ingebrigtsen: \201's back in 8-bit MIME parts 22. 3900-05-19 Shenghuo ZHU: Re: \201's back in 8-bit MIME parts 23. 3900-06-03 MIYASHITA Hisashi (=?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpIS 24. 3900-03-16 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: Mule-UCS 0.7 ../asian/rmail/printing 1. 1998-02-11 Jungshik Shin: Re: Emacs 20.x desiderata 2. 1998-02-25 Jens-Ulrik Holger Petersen: Re: Emacs 20.x desiderata 3. 1998-03-02 SAKAI Kiyotaka: Re: Emacs 20.x desiderata 4. 1999-07-05 Lars Magne Ingebrigtsen: Contributor section 5. 1999-07-04 Russ Allbery: Re: Contributor section 6. 1999-07-05 Mike Fabian: Re: Contributor section 7. 1999-07-09 Werner LEMBERG: Re: MULE and TeX 8. 1999-07-09 Werner LEMBERG: Re: MULE and TeX 9. 1998-02-09 Joshua Redstone: Re: Emacs 20.x desiderata ../asian/rmail/printing-latex 1. 1999-01-08 Werner LEMBERG: ANNOUNCING CJK 4.2.0 [Chinese/Japanese/Korean fo ../asian/rmail/references 1. 1997-12-25 Junko Matsumoto: Free Software Distribution Approval ../asian/rmail/tex 1. 1997-10-06 Werner Lemberg: ANNOUNCING CJK 4.1.3 [Chin/Jap/Kor for LaTeX2e] 2. 1997-09-05 Werner Lemberg: Re: a perhaps popular question ../asian/rmail/ucip 1. 1997-12-09 Ken Lunde: Re: Recode offer 2. 1997-12-08 François Pinard: Re: Recode offer 3. 1997-12-09 Mark Leisher: Re: Recode offer 4. 1997-12-09 François Pinard: Re: Recode offer 5. 1997-12-15 Ken Lunde: Re: Recode offer 6. 1997-12-18 François Pinard: Re: Recode offer 7. 1997-12-19 Gigi Estabrook: Review of Understanding CJKV Info. Processing 8. 1997-12-19 François Pinard: Re: Review of Understanding CJKV Info. Processi 9. 1997-12-19 François Pinard: Re: Review of Understanding CJKV Info. Processi 10. 1998-12-30 Ora-News: CJKV Info Processing ../asian/rmail/wnn 1. 1997-08-07 David Fox: Re: Frustration: Universally available input methods ../charsets/rmail/1252 1. 1997-04-24 Markus Kuhn: Re: ’ valid HTML or no? 2. 1997-10-29 Alain LaBonté - 3: Re: Comment fonctionnent les codepages sous W 3. 1999-11-01 Karl Eichwalder: charset="Windows-1252" 4. 1999-11-02 Steinar Bang: Re: charset="Windows-1252" 5. 1999-11-02 Hrvoje Niksic: Re: charset="Windows-1252" 6. 1999-11-02 Steinar Bang: Re: charset="Windows-1252" 7. 1999-11-02 Hrvoje Niksic: Re: charset="Windows-1252" 8. 1999-11-02 Steinar Bang: Re: charset="Windows-1252" 9. 1999-11-02 Florian Weimer: Re: charset="Windows-1252" 10. 1999-11-02 Toby Speight: Re: charset="Windows-1252" 11. 1999-11-04 Robert Bihlmeyer: Re: charset="Windows-1252" 12. 1999-11-04 Karl Eichwalder: Re: charset="Windows-1252" 13. 3900-05-12 Toby Speight: Re: decoding characters 14. 1999-10-02 Earl Hood: Re: Unrecognized character set 15. 1999-10-02 Mats Dufberg: Re: Unrecognized character set 16. 1999-10-04 Al Gilman: Re: Unrecognized character set ../charsets/rmail/5426 1. 1997-12-23 François Pinard: Re: ISO 5426 -> iso8859-1 converter 2. 1997-12-24 Ulrich Drepper: Re: ISO 5426 -> iso8859-1 converter 3. 1998-01-08 Wolfram Schneider: Re: ISO 5426 -> iso8859-1 converter 4. 1998-01-17 Wolfram Schneider: Re: ISO 5426 -> iso8859-1 converter 5. 1998-02-11 Wolfram Schneider: Re: ISO 5426 -> iso8859-1 converter 6. 1997-12-24 Keld J|rn Simonsen: Re: ISO 5426 -> iso8859-1 converter 7. 1998-01-08 Keld J|rn Simonsen: Re: ISO 5426 -> iso8859-1 converter ../charsets/rmail/737 1. 1999-01-20 Alejandros Diamandidis: recode: CP737 (DOS Greek) request ../charsets/rmail/850 1. 1997-08-25 Duncan Sargeant: recode l1:cp850 improvement. 2. 1996-10-09 Juliusz Chroboczek: Re: RMAIL and charset=iso-8859-1 ../charsets/rmail/8859-15 1. 1998-04-13 Alain LaBonté : Re: ISO 8859-15 to Unicode - Conversion table 2. 1998-03-23 Alain LaBonté : registration of a new charset: iso-8859-15 3. 1998-06-22 Alain LaBonté : Re: Outlook & the Euro 4. 1998-03-23 Alain LaBonté : Interchange of French (or Finnish) characters wi 5. 1998-03-23 Alain LaBonté : Interchange of French (or Finnish) characters wi 6. 1998-08-17 Alain LaBonté : Table de l'ISO/CEI 9995-3 (et de la CAN/CSA Z243 7. 1998-08-05 Alain LaBonté : Re: Unicode Converter 8. 1998-12-22 Alain LaBonté : Latin 9 - Approbation 9. 1998-06-15 Paul WINDEY: iso-latin-15 10. 1998-08-26 Alain LaBonté : Latin 1 Western-Eurocentric? 11. 1998-08-05 Alain LaBonté : Re: Unicode Converter 12. 1997-10-07 Alain LaBont\i SCT: Ébauche de texte français pour l'ISO/CEI 885 13. 1998-03-23 Alain LaBonté : Adoption par l'ISO et enregistrement de l'ISO/CE 14. 1998-10-30 Thorgeir Sigurdsson: (TC304.2056) N853 Euro Summary #2 15. 1998-09-08 Alain LaBonté : Nouvelle page de code EBCDIC respectant le franç 16. 1998-09-08 Alain LaBonté : Nouvelle page de code EBCDIC respectant le franç 17. 1999-03-09 Alain LaBonté : Re: Latin 1, latin 9 tout neuf : Windows et Mac 18. 1999-03-31 Alain LaBonté : Publication of Latin 9 19. 1998-03-24 Alain LaBonté : Re: registration of a new charset: iso-8859-15 20. 1998-04-17 Alain LaBonté : ISO/CEI FDIS 8859-15 (final text) 21. 3900-02-20 Stanislav Meduna: Nonbreakable space 22. 3900-03-27 E.I. Kolehmainen: (TC304.2270) SFS ISO/IEC 8859-15, "Latin-9" 23. 3900-06-16 Alain LaBonté : Re: French encoding [Was: Chapter on character s ../charsets/rmail/8859-7 1. 1999-10-29 Tom Tromey: forwarded message from Markus Kuhn ../charsets/rmail/african 1. 1998-08-18 Laurent Bourbeau: Texinfo - EC-FC 2. 1998-08-25 Laurent Bourbeau: Recode 3.4h - Bilan BUG de Laurent 3. 1998-09-02 Laurent Bourbeau: Recode - Tests 2 4. 1998-09-16 Keld J|rn Simonsen: Re: [pinard@IRO.UMontreal.CA: Re: snapshot o ../charsets/rmail/ansel 1. 1998-04-06 Michael Taeschner: recode support for ANSI Z39.47 (1985) ? 2. 1998-04-07 François Pinard: Re: recode support for ANSI Z39.47 (1985) ? 3. 1998-04-07 François Pinard: ANSEL 4. 1998-04-07 François Pinard: ANSEL (bis) 5. 1998-04-08 Michael Taeschner: Re: recode support for ANSI Z39.47 (1985) ? 6. 1998-04-08 François Pinard: Re: recode support for ANSI Z39.47 (1985) ? 7. 1999-12-17 Bruno Haible: suggestion ridicule pour recode ../charsets/rmail/apl 1. 1991-11-15 mitloehn@uxq.wu-wien.ac.at: [comp.lang.apl] APL Transliteration 2. 1994-11-13 Raul Deluth Miller: recode-3.4 and APL 3. 1994-11-14 Francois Pinard: Re: recode-3.4 and APL 4. 1994-12-02 Sam Sirlin: APL language FAQ 5. 1994-11-14 Raul Deluth Miller: Re: recode-3.4 and APL 6. 1997-01-30 Leigh Clayton: Re: apl character set 7. 1997-01-30 Leigh Clayton: Re: apl character set 8. 1997-01-31 François Pinard: Re: apl character set 9. 1997-01-31 Leigh Clayton: Re: apl character set 10. 1997-02-01 rdm@tad.micro.umn.edu: Re: apl character set ../charsets/rmail/apple 1. 1998-12-08 Larry W. Virden: Re: Novice user of recode with question 2. 1998-12-16 Larry W. Virden: Re: Novice user of recode with question ../charsets/rmail/ascii-bs 1. 1997-04-23 V.S. Umamaheswaran: Contribution to SC2 on 8-bit codes and combi 2. 3900-01-28 François Pinard: Re: Quotation marks 3. 3900-01-29 Markus Kuhn: Re: Quotation marks 4. 3900-01-29 Markus Kuhn: Re: Quotation marks 5. 3900-02-02 François Pinard: Re: Quotation marks 6. 1999-12-21 François Pinard: Re: Quotation marks 7. 1999-12-20 Bruno Haible: Re: ASCII and Unicode Quotation Marks 8. 1999-12-20 Karl Berry: Re: ASCII and Unicode Quotation Marks 9. 1999-12-20 Tom Tromey: Re: ASCII and Unicode Quotation Marks 10. 1999-12-21 Karl Berry: Re: ASCII and Unicode Quotation Marks 11. 1999-12-21 Aharon Robbins: Re: ASCII and Unicode Quotation Marks 12. 1999-12-20 François Pinard: [Markus Kuhn ] ASCII ../charsets/rmail/ebcdic 1. 1990-08-31 Keld J|rn Simonsen: [comp.unix.questions] Re: EBCDIC to ASCII co 2. 1990-10-02 Jeff Beard: Re: EBCDIC <--> ASCII conversion 3. 1990-10-03 Luciano Mannucci: Re: EBCDIC <--> ASCII conversion 4. 1990-10-22 P E Smee: Re: EBCDIC <--> ASCII conversion 5. 1990-10-24 Michael Meissner: Re: EBCDIC <--> ASCII conversion 6. 1990-10-26 Richard A. O'Keefe: Re: EBCDIC <--> ASCII conversion 7. 1990-10-26 Henry Spencer: Re: EBCDIC <--> ASCII conversion 8. 1991-03-27 Mike Castle {Nexus}: Re: COMPRESSING of binary data into mailabl 9. 1993-12-06 Rocky Bernstein: ascii <-> ebcdic 10. 1993-12-06 Rocky Bernstein: ascii <-> ebcdic 11. 1993-12-11 Francois Pinard: ascii <-> ebcdic 12. 1993-12-31 Michael L. Dowling: recode-3.3 13. 1994-08-25 Eugene Dorr: Re: Latin American/Spanish EBCDIC character set nee 14. 1994-08-26 EURMXK@vm.sas.com: Re: Latin American/Spanish EBCDIC character s 15. 1994-08-26 Johannes Wilhelm: Re: Latin American/Spanish EBCDIC character se 16. 1994-08-29 ALB@immedia.ca: Latin American EBCDIC 17. 1994-08-30 Manfred Kiefer: Re: Latin American EBCDIC 18. 1993-12-14 Francois Pinard: GNU recode 19. 1996-03-28 Larry Auton: dd conv=(ascii|ebcdic) 20. 1996-03-28 François Pinard: Re: dd conv=(ascii|ebcdic) 21. 1996-03-28 Larry Auton: dd conv=(ascii|ebcdic) 22. 1996-03-28 Jim Meyering: Re: dd conv=(ascii|ebcdic) 23. 1996-11-24 Joe Wright: Re: The char type crossing the 8 bit barrier? (Was R 24. 3900-03-09 Al Christians: Re: EBCDIC translation? ../charsets/rmail/euro 1. 1998-04-01 K I Larsson: (TC304.1649) More on Euro-codetables ../charsets/rmail/extended-ascii 1. 1997-04-14 Uri Guttman: recode and extended ascii 2. 1997-06-18 François Pinard: Re: recode and extended ascii ../charsets/rmail/georgian 1. 1998-02-22 John Clews: (TC304.1511) Georgian standard (forwarded) ../charsets/rmail/html 1. 1994-03-19 David Lebel: HTML... 2. 1994-11-12 Francois Pinard: iso8859-1.html 3. 1994-11-12 Francois Pinard: isolat1.html 4. 1994-11-12 Francois Pinard: iso8859-1.html 5. 1994-11-16 Per Steinar Iversen: Re: recode 3.4+ and HTML 6. 1994-11-16 Per Steinar Iversen: Re: recode 3.4+ and HTML 7. 1994-11-16 Per Steinar Iversen: Re: recode 3.4+ and HTML 8. 1994-11-24 Frederic Lepied [STERIA SIT] 69577103: iso-sgml.el : Edit SGML o 9. 1994-12-15 David Goldsmith: Re: HTML in Unicode? 10. 1995-01-05 Slaven Rezic (Tomic): Re: recode: new lat1html.c and htmllat1.l 11. 1995-02-15 Jochen _Roger_ Hayek: recode-3.4 12. 1995-03-29 M.T. Carrasco Benitez: Re: Unicode/ISO-10646/TRON/MULE/MCS for m 13. 1995-03-30 François Pinard: Re: recode et HTML 14. 1995-03-30 Francois Yergeau: Re: recode et HTML 15. 1995-03-31 François Pinard: Re: recode et HTML 16. 1995-07-25 François Pinard: Re: Patch for recode-3.4 17. 1995-08-09 Pierre Vassellerie, Meudon Observatory: Re: Grosse betise dans l 18. 1995-10-05 François Pinard: Re: Recode errors during Latin1 to HTML transla 19. 1996-10-30 François Pinard: HTML entity names in w3-emacs 20. 1996-11-04 Laurent Duperval: Recode 3.4.2 21. 1996-11-29 unicode@Unicode.ORG: Re: HTML - i18n / NCR & charsets 22. 1996-11-30 unicode@Unicode.ORG: Re: HTML - i18n / NCR & charsets 23. 1996-12-04 unicode@Unicode.ORG: Re: HTML - i18n / NCR & charsets 24. 1996-12-09 François Pinard: Re: recode 25. 1997-01-06 Alain LaBont/e'/: Re: ABU: FREQUENCES 26. 1997-01-08 Alain LaBont/e'/: Re: ABU: RFC 2070 on HTML Internationalization 27. 1997-01-14 Sebastian Huebner: recode-3.4: MANY bugs in HTML convertion 28. 1997-05-26 Jacques Madelaine: recode-3.4 29. 1997-06-27 Nicolas Thiery: Recode and html. Bug report. 30. 1997-09-12 Florian Oelmaier: recode 3.4. 31. 1997-10-07 Keld J|rn Simonsen: (TC304.1265) characters in MES - ENV 1973 32. 1998-07-19 François Pinard: Re: [BIS] recode html 33. 1998-10-13 William Bader: re: html 34. 1998-10-14 Martin J. Duerst: Re: Converting control characters to HTML? 35. 1998-10-14 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i 36. 1998-10-14 Francois Yergeau: Re: Pour ceux qui ont le temps de lire... Cadr 37. 1998-10-14 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre 38. 1998-10-23 François Pinard: Re: Converting control characters to HTML? 39. 1998-10-23 Francois Yergeau: Re: Converting control characters to HTML? 40. 1998-10-24 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i 41. 1998-10-25 Martin J. Duerst: Re: Converting control characters to HTML? 42. 1998-12-07 Thorgeir Sigurdsson: (CEN/TC304-Contribtns) Mark-Up and Braille 43. 1994-03-19 David Lebel: HTML... 44. 1998-07-21 Wiel: recode: lat1html.c ../charsets/rmail/kermit 1. 1991-09-18 Christine M Gianone: Character Set Files and Utilities 2. 1995-02-03 Chris Smith: kermit, recode latin1:cp850, and a little program ../charsets/rmail/latex 1. 1992-10-30 Pierre Darmon: Re: How to make the "degree" symbol? 2. 1992-11-02 Daniel H. Luecking: degree symbol 3. 1992-11-18 Ivan A Derzhanski: Re: \b \d and ISO 6937 Latin Diacriticals 4. 1993-03-03 Peter Flynn: Re: TeX to Latin 1 table 5. 1993-03-09 abraham@research.att.com: Latin 1 to LaTeX table 6. 1993-10-22 Michael Gschwind: Re: tex sequence to ISO latin conversions (and 7. 1993-12-02 Francois Pinard: recode 8. 1993-12-06 Volker Kunert: Re: recode 9. 1993-12-11 Francois Pinard: GNU recode 3.2.9 10. 1993-12-12 Per Abrahamsen: Re: GNU recode 3.2.9 11. 1994-07-25 davleeuwen%tm.tno.nl@Lightning.McRCIM.McGill.EDU: --diacritics, 12. 1994-12-21 richer@CERCA.UMontreal.CA: probleme mac->recode->Latex 13. 1994-12-21 richer@CERCA.UMontreal.CA: Re: probleme mac->recode->Latex 14. 1994-12-22 richer@CERCA.UMontreal.CA: Re: probleme mac->recode->Latex 15. 1994-12-22 richer@CERCA.UMontreal.CA: Re: probleme mac->recode->Latex 16. 1995-07-30 David Frey: Recode: Latin-1 Tables enhanced 17. 1996-09-13 François Pinard: recode: TeX vs Unicode? [was: Re: Status of GNU 18. 1996-09-13 Markus G. Kuhn: Re: recode: TeX vs Unicode? [was: Re: Status of 19. 1996-09-15 Primoz Peterlin: Re: recode: TeX vs Unicode? [was: Re: Status of 20. 1997-04-29 David Lebel: gestion accents latex 21. 1993-03-03 Peter Flynn: Re: TeX to Latin 1 table 22. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2 23. 1998-07-14 Santiago Vila: Bug #24436: recode: missing some things for latex 24. 1998-07-14 François Pinard: Re: Bug #24436: recode: missing some things for 25. 3900-02-08 Dinu C. Gherman: ANN: calie 0.5 (mostly for LaTeX users) 26. 3900-04-29 Andrei Mircea: Re: imperfect handling of international character 27. 3900-04-30 Mats Bengtsson: Patch + Re: imperfect handling of international ../charsets/rmail/latin1 1. 1989-07-10 der Mouse: (none) 2. 1996-03-08 Alain LaBont:e':: (SC2.15) (Copy) iso / dis 8879 Hypertext Marku 3. 1996-05-22 Alain LaBont/e'/: Re:Roman Char set 4. 1997-06-09 mike@vlsivie.tuwien.ac.at: ISO 8859-1 National Character Set FAQ 5. 1997-01-17 mike@vlsivie.tuwien.ac.at: ISO 8859-1 National Character Set FAQ 6. 1999-04-30 Julien CASSAIGNE: Re: Subjonctif imparfait 7. 1999-05-06 Antoine Leca: Re: Subjonctif imparfait 8. 1998-05-20 Alain LaBonté : La petite histoire de la ligature OE dans les no 9. 1998-02-16 Alain LaBonté : Les ligatures dans les normes et standards ../charsets/rmail/marc 1. 1999-12-17 Bruno Haible: suggestion ridicule pour recode ../charsets/rmail/rfc1345 1. 1991-11-04 Jonas Lagerblad: International character sets. 2. 1994-12-16 Ross Paterson: MIME charsets (was Re: can ISO-IR-*** be used as 3. 1996-04-29 Lukas Petrlik: cs encodings (was: Re: recode 3.4) 4. 1997-12-03 François Pinard: RFC 1345 `mnemonic' conversion 5. 1997-12-03 Primoz Peterlin: Re: Recode and CP 1250 6. 1997-12-03 François Pinard: Re: RFC 1345 out of recode 7. 1997-12-03 Keld J|rn Simonsen: Re: RFC 1345 `mnemonic' conversion 8. 1997-12-03 Keld J|rn Simonsen: Re: RFC 1345 `mnemonic' conversion 9. 1997-12-03 François Pinard: Re: Recode and CP 1250 10. 1997-12-03 François Pinard: Detail on charsets.def 11. 1997-12-03 François Pinard: Re: RFC 1345 `mnemonic' conversion 12. 1997-12-03 François Pinard: Re: NeXT and AtariST charsets converted 13. 1997-12-04 François Pinard: [luki@toy.zcu.cz: cs encodings (was: Re: recode 14. 1997-12-05 François Pinard: Redundancy in charsets.def 15. 1997-12-05 Roman Czyborra: mnemonic charset 16. 1997-12-05 Keld J|rn Simonsen: Re: Redundancy in charsets.def 17. 1997-12-05 Keld J|rn Simonsen: Re: Charset redundancy 18. 1997-12-12 Keld J|rn Simonsen: Re: chset32a 19. 1997-12-12 Keld J|rn Simonsen: Re: chset32a 20. 1997-12-14 François Pinard: mnemonic,ds 21. 1997-12-14 François Pinard: mnemonic,ds .vs. rfc1345.txt 22. 1997-12-14 François Pinard: mnemonic,ds 23. 1997-12-14 François Pinard: Re: chset32a 24. 1997-12-15 François Pinard: Reading iso10646.def 25. 1997-12-15 François Pinard: Comparing iso10646.def and mnemonic,ds 26. 1997-12-15 François Pinard: RFC1345 charset 27. 1997-12-24 Keld J|rn Simonsen: Re: Comparing iso10646.def and mnemonic,ds 28. 1998-03-02 Liviu Daia: encoding bug in recode 3.4 29. 1998-04-10 Roman Czyborra: Re: teletext iso 6937 30. 1998-04-22 Ulrich Drepper: Inconsistence between rfc 1345 and POSIX charmap 31. 1998-04-22 Ulrich Drepper: Re: Inconsistence between rfc 1345 and POSIX cha 32. 1998-04-23 Keld J|rn Simonsen: Re: Inconsistence between rfc 1345 and POSIX 33. 1998-04-26 Ulrich Drepper: another little recode problem 34. 1998-05-11 François Pinard: Re: snapshot of my charsets.def 35. 1998-05-11 Keld J|rn Simonsen: snapshot of my charsets.def 36. 1998-06-12 Roman Czyborra: proofreading RFC 1345++ 37. 1998-08-30 Roman Czyborra: Re: Fehler in deiner ISO 8859-10 Tabelle? 38. 1998-09-01 François Pinard: Re: Comparing iso10646.def and mnemonic,ds 39. 1998-09-01 François Pinard: Re: snapshot of my charsets.def 40. 1998-09-01 François Pinard: RFC 1345 et recode 41. 1998-09-15 Alain LaBonté : Re: Two questions 42. 1998-09-15 François Pinard: recode - compilation tables Keld 43. 1998-09-16 Keld J|rn Simonsen: Re: (TC304.1916) EURO on Alt-less keyboards 44. 1998-06-21 François Pinard: recode problem 45. 1998-12-27 Martin Mares: Assorted recode ideas 46. 1997-12-03 François Pinard: Re: ISO-IR-111 Cyrillic wrong in RFC 1345 and r 47. 1997-12-03 François Pinard: Re: ISO-IR-111 Cyrillic wrong in RFC 1345 and r 48. 1997-12-05 François Pinard: Re: ISO-IR-111 Cyrillic wrong in RFC 1345 and r 49. 1999-01-03 François Pinard: charset table details, still! :-) 50. 1997-12-03 François Pinard: Re: ISO-IR-111 Cyrillic wrong in RFC 1345 and r 51. 1999-01-07 François Pinard: Two checks for mnemonic,ds 52. 1999-03-31 Andreas Schwab: Re: Fix for AtariST encoding 53. 1999-03-31 Keld J|rn Simonsen: Re: Fix for AtariST encoding 54. 1999-01-02 François Pinard: recode dans doc 55. 3900-05-29 François Pinard: New charsets.def 56. 3900-05-29 François Pinard: Still processing charsets.def and iso10646.def 57. 3900-05-29 François Pinard: Processing charsets.def and iso10646.def togeth 58. 3900-05-29 François Pinard: New iso10646.def 59. 3900-05-29 François Pinard: Re: New iso10646.def 60. 3900-06-26 François Pinard: recode - warnings 61. 3900-03-01 Peter Kleiweg: recode 3.5: iso10646 & rfc-1345 ../charsets/rmail/t61 1. 1997-11-21 Ulrich Drepper: Re: Character set conversion API for libc 2. 1997-11-26 Jake Morrison: Re: Character set conversion API for libc ../charsets/rmail/tables 1. 1999-07-05 Bruno Haible: recode-3.5 conversion bug 2. 1994-12-20 Hennus Bergman: Re: Small GNU recode bugs 3. 3900-01-24 Andrew Csillag: Re: stupid FORM problem ../charsets/rmail/tabular 1. 1995-06-21 Hilmar Schlegel: Re: recode problem 2. 1995-06-21 François Pinard: Re: recode problem 3. 1997-06-27 François Pinard: Re: recode 3.4 and Windows charset. 4. 1997-12-03 Hilmar Schlegel: Re: recode problem 5. 1997-04-09 Leong Kok Yong: Re: unicode <-> hex converter (fwd) 6. 1995-02-15 Francois Pinard: Re: recode 3.4 documentation ../charsets/rmail/usoft 1. 1994-08-26 Lloyd: Re: Microsoft Codepages to Unicode 2. 1997-01-06 Alain LaBont/e'/: Re: ABU: FREQUENCES ../engines/rmail/auto-detect 1. 1996-01-13 DiDakDok,IVC: Decodage MIME 2. 1997-12-09 François Pinard: Re: recode 3. 1997-12-09 Milivoj Ivkovic: Re: recode 4. 1998-07-01 Sam: Re: au secour! 5. 1999-06-25 Earl Hood: Re: language detection 6. 1999-08-23 Larry W. Virden: How to translated from unknown to known? 7. 1999-12-13 François Pinard: Re: How to translated from unknown to known? ../engines/rmail/backup 1. 1994-03-09 Nicolas Anquetil: recode 2. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1 3. 1999-07-19 François Pinard: Re: better user interface 4. 1999-07-20 Jean-loup Gailly: Re: better user interface 5. 1999-07-20 Scott Schwartz: Re: better user interface 6. 1999-07-20 Scott Schwartz: Re: better user interface 7. 1999-07-20 François Pinard: Re: [Scott Schwartz ] 8. 1999-07-20 Fred L. Drake: Re: [Scott Schwartz ] R 9. 1999-07-20 Larry W. Virden: Re: [Scott Schwartz ] ../engines/rmail/bigcheck 1. 1998-12-18 Larry W. Virden: Re: Prerelease: Free recode 3.4n ../engines/rmail/documentation 1. 1997-12-06 Santiago Vila Doncel: What is a `resurface'? 2. 1997-12-06 Santiago Vila Doncel: Re: What is a `resurface'? 3. 1997-12-11 François Pinard: Re: What is a `resurface'? 4. 1999-12-13 CERT Advisory: CERT Advisory CA-99.15 - Buffer Overflows in SSH 5. 1999-12-15 Eli Zaretskii: Re: Release: Free recode 3.5 6. 1999-12-15 François Pinard: Re: Release: Free recode 3.5 7. 1999-12-19 Eli Zaretskii: Re: Release: Free recode 3.5 8. 1999-12-19 Eli Zaretskii: Re: Release: Free recode 3.5 ../engines/rmail/erreurs-doc 1. 1999-12-13 François Pinard: Re: Recode ../engines/rmail/flat-optimizer 1. 1999-07-23 Frantisek Hanzlik: recode x strip diacritics ? 2. 1999-07-23 François Pinard: Re: recode x strip diacritics ? 3. 1999-08-17 Frantisek Hanzlik: Re: recode x strip diacritics ? ../engines/rmail/ieee 1. 3900-03-09 Harry George: Re: EBCDIC translation? ../engines/rmail/iso-paper 1. 1998-10-30 Thorgeir Sigurdsson: (TC304.2057) N854 Draft of MODEL PT deliver ../engines/rmail/library 1. 1995-12-06 Per Bothner: Re: Internationalization resources? 2. 1996-05-29 Ulrich Drepper: librecode, again 3. 1997-10-14 Ulrich Drepper: Re: librecode 4. 1999-09-23 Pawel Krawczyk: Re: recode memory management ../engines/rmail/listing 1. 1993-12-21 Martin Maechler: Re: Prerelease: GNU recode version 3.2.10 2. 1993-12-21 Francois Pinard: Prerelease: GNU recode version 3.2.10 3. 1993-02-10 Patrik F{ltstr|m: Re: transcription iso-8859-1 to us-ascii? 4. 1998-10-29 Markus Kuhn: Free X11 Unicode terminal font available 5. 1998-11-22 François Pinard: Re: Free X11 Unicode terminal font available 6. 1999-03-30 Andreas Schwab: Fix for AtariST encoding ../engines/rmail/memory-leak 1. 3900-01-16 François Pinard: Re: Memory leaks in Recode ? ../engines/rmail/mixed 1. 1992-11-23 mcgill-vision!corto.inria.fr!shapiro: recode 2. 1994-12-19 Martin Wendel: ANNOUNCE: Emil-2.0 is available 3. 1995-02-28 Francois Pinard: UUPC 4. 1995-03-11 Scott Nelson: ISO-8859-X email test 5. 1995-03-16 Martin Wendel: ANNOUNCE: emil-2.0.5 released 6. 1995-07-05 François Pinard: Re: Retour ! 7. 1995-07-25 David Collier-Brown: Early announcement: Mime-witing library 8. 1996-03-02 François Pinard: Re: Présentation de Ulrich Drepper! 9. 1996-06-09 François Pinard: Re: About recode 10. 1997-10-30 =?iso-8859-1?Q?G=E9rald_St=2DArneault_=3Cstarneag=40grics.qc.ca= ../engines/rmail/moteur 1. 1999-04-18 François Pinard: -lf et ibmpc ? 2. 1999-04-14 François Pinard: recode - IBM-PC 3. 1999-04-03 Laurent Bourbeau: Recode 3.4q - Bug 5 4. 1999-04-02 François Pinard: =?iso-8859-1?q?Probl=E8me?= recode 5. 1999-06-03 Markus Kuhn: UTF-8 table output 6. 1999-06-03 François Pinard: Re: UTF-8 table output 7. 1999-06-03 François Pinard: Re: UTF-8 table output 8. 1999-07-19 François Pinard: Re: better user interface 9. 1999-08-17 Scott Schwartz: Re: better user interface ../engines/rmail/moteur-ucs 1. 1999-09-02 Bernard Derval: recode 3.5 2. 1999-08-27 Laurent Bonnaud: Re: Bug#42208: recoding latin1<->html is not re 3. 1999-12-13 François Pinard: Re: recode 3.5 4. 1999-08-02 Santiago Vila: Bug#42208: recoding latin1<->html is not reversib 5. 1999-08-17 François Pinard: Re: Bug#42208: recoding latin1<->html is not re 6. 1999-08-13 Jukka Korpela: Recode - something simple I'm missing? 7. 1999-08-13 François Pinard: Re: Recode - something simple I'm missing? 8. 1999-08-16 Jukka.Korpela@hut.fi: Re: Recode - something simple I'm missing? 9. 1999-08-16 François Pinard: Re: Recode - something simple I'm missing? ../engines/rmail/multext 1. 1996-05-24 Jean Ve'ronis: Soft: MtScript (Multilingual editor) 2. 1996-06-17 Jean Ve'ronis: Free Soft: MtStr - Multilingual string library 3. 1996-06-20 Jean Ve'ronis: Free Soft: MtRecode - Character conversion progra 4. 1996-08-29 Malek BOUALEM -- UNIVERSITE: Brief Introduction of the LPL 5. 1996-09-05 Malek BOUALEM -- UNIVERSITE: Re: Introduction of LPL/MULTEXT/MTS 6. 1997-12-10 Jean Veronis: Re: Citation de MtRecode ../engines/rmail/notation 1. 1997-08-06 Ulrich Drepper: Re: charset names ../engines/rmail/overflows 1. 1999-04-26 François Pinard: Buffer overflows ../engines/rmail/speed 1. 1999-01-22 Andreas Schwab: Re: iconv changes 2. 1999-01-22 Ulrich Drepper: Re: iconv changes ../engines/rmail/testing 1. 1999-12-15 Eli Zaretskii: Re: Release: Free recode 3.5 2. 1999-12-15 Eli Zaretskii: Re: Release: Free recode 3.5 3. 1999-12-15 François Pinard: Re: Release: Free recode 3.5 4. 1999-12-15 François Pinard: Re: Release: Free recode 3.5 5. 1999-12-16 François Pinard: Re: Release: Free recode 3.5 6. 1999-12-19 Eli Zaretskii: Re: Release: Free recode 3.5 7. 1999-12-19 François Pinard: Re: Release: Free recode 3.5 8. 1999-12-20 Eli Zaretskii: Re: Release: Free recode 3.5 9. 1999-12-20 Eli Zaretskii: Re: Release: Free recode 3.5 10. 1999-12-20 François Pinard: Re: Release: Free recode 3.5 11. 1999-12-20 Eli Zaretskii: Re: Release: Free recode 3.5 12. 1999-12-21 Bruno Haible: Re: libiconv et recode :-) 13. 1999-12-26 Eli Zaretskii: Re: Release: Free recode 3.5 14. 1999-12-26 Eli Zaretskii: Re: Release: Free recode 3.5 15. 1999-12-30 François Pinard: Re: Release: Free recode 3.5 ../fallbacks/rmail/Arabic 1. 1998-06-18 Roman Czyborra: Arabic renderer in four lines of Perl 2. 1996-12-04 unicode@Unicode.ORG: Arabic code pages (fwd) 3. 1999-03-08 Bill Kerruish: Re: recode-3.4g for use with Arabjoin 4. 1998-07-03 TAKAHASHI Naoto: new arabic package for Mule-2.3 5. 1998-03-23 Kenichi Handa: Re: Arabic in xemacs (or equivalent if necessary) 6. 1999-07-09 François Pinard: Re: MULE and TeX 7. 1999-07-21 Eli Zaretskii: Re: `paxutils', `tar' and Paul, the saga only beg 8. 1996-10-29 Francois Yergeau: Re: GNU utils and proportional fonts ../fallbacks/rmail/CLASSER 1. 1996-03-28 Keld J|rn Simonsen: (POSIX.2 96) proposal for culturally depende 2. 1996-04-07 Hallvard B Furuseth: recode suggestion: as-readable-as-possible 3. 1996-04-17 Don Cragun: (SC22WG15RIN.324) (POSIX.2 96) proposal for cultural 4. 1996-06-21 Keld J|rn Simonsen: recode [was: Re: Spelling "sango" in ISO 639 5. 1998-07-02 Thorgeir Sigurdsson: (TC304.1838) Fallback info request- N839 6. 1998-07-03 Keld J|rn Simonsen: (TC304.1839) Fallback info request- N839 7. 1998-07-07 borka@e5.ijs.si: (TC304.1853) Fallback info request- N839 8. 1998-07-07 Keld J|rn Simonsen: (TC304.1857) fallback 9. 1998-07-17 Johan van Wingen: (TC304.1867) fall back 10. 1998-07-21 borka@e5.ijs.si: (TC304.1874) German reaction to Enquiry among m 11. 1998-07-22 borka@e5.ijs.si: (TC304.1887) German reaction to Enquiry among m 12. 1998-07-22 Marc Wilhelm Kster: (TC304.1890) German reaction to Enquiry amon 13. 1998-07-22 Markus Kuhn: (TC304.1894) fallback characters 14. 1998-07-23 John Clews: (TC304.1902) Actions on UTF-Mnemonic/Fallbacks/trans 15. 1998-09-15 Alain LaBont‚é‚ : Re: Two questions 16. 1998-10-24 François Pinard: HTML, fallbacks and varia 17. 1998-11-22 François Pinard: Re: Free X11 Unicode terminal font available 18. 1998-12-27 Martin Mares: Assorted recode ideas 19. 1998-07-22 John Clews: (TC304.1897) Fallbacks/transformation 20. 1997-12-04 Ulrich Drepper: Re: recode problem 21. 1997-12-03 François Pinard: Re: recode problem 22. 1998-12-27 François Pinard: Re: Assorted recode ideas 23. 1998-11-18 Thorgeir Sigurdsson: (TC304.2092) N858 Fallback 1st draft 24. 1998-11-19 Michael Everson: (TC304.2094) N858 Fallback 1st draft 25. 1998-11-20 Chris Makemson: (TC304.2100) (TC304.2094) N858 Fallback 1st draf 26. 1998-11-20 Michael Everson: (TC304.2101) N858 Fallback 1st draft 27. 1999-02-15 Thorgeir Sigurdsson: (CEN/TC304-N881) Euro report 28. 1998-12-28 Keld J|rn Simonsen: Re: Recode 3.4n: combining byte to byte brok 29. 1998-12-27 Martin Mares: Assorted recode ideas 30. 1998-12-27 François Pinard: Re: Assorted recode ideas ../fallbacks/rmail/Danish 1. 1998-05-01 Bo Vagner Hoejer: Re: hello-1.3.10.da.po 2. 3900-06-14 Kenneth Christiansen: Hi 3. 3900-06-17 François Pinard: Re: ptx-0.4.2.da.po ../fallbacks/rmail/Dutch 1. 1999-03-22 Thorgeir Sigurdsson: (CEN/TC304-N889) Dutch Char Set Policy ../fallbacks/rmail/Esperanto 1. 1998-10-04 Moshe Zadka: recode: Esperanto addition? 2. 1992-07-10 Will Overington: Usenet University. Learning Material. Esperanto 3. 1992-07-22 Will Overington: TOOLS Roman (including Esperanto) and Cyrillic 4. 1992-08-10 Rich Wingerter: Re: MATERIAL: Esperanto in 7-bit ASCII 5. 1993-04-28 Jim Kingdon: Changes to recode for Esperanto 6. 1993-12-06 Francois Pinard: Changes to recode for Esperanto 7. 1993-12-23 Jim Kingdon: Changes to recode for Esperanto 8. 1994-01-13 Thorbjoern Hansen: Re: Suggestions for `recode' ../fallbacks/rmail/Français 1. 1996-07-17 Alain LaBont/e'/: Correction required in the French title of ISO 2. 1996-08-08 Alain LaBont/e'/: Réunions de l'ISO à Québec 3. 1997-03-13 Alain LaBont/e'/: Character names and identifiers (was: Re: (SC2 4. 1998-03-18 Alain LaBonté : Re: Noms de caractères Unicode et ISO 5. 1998-03-23 Alain LaBonté : Re: Liste de noms de caractères du JUC 6. 1998-09-12 Alain LaBonté : Version française des normes 7. 1997-01-30 Alain LaBont/e'/: Re: HTLM et signes diacritiques 8. 1998-12-09 Alain LaBonté : Re: FW: Localising Unicode character names 9. 1998-12-17 François Pinard: Blancs suffixes 10. 1998-12-17 François Pinard: Autres détails (je suis un peu maniaque :-) 11. 1998-12-17 François Pinard: Re: recode et table française 12. 1999-04-12 Alain LaBonté : Double name in the new version of the UCS 13. 1998-03-25 Alain LaBonté : Versions françaises des produits de Microsoft ../fallbacks/rmail/French 1. 1994-03-11 Francois Pinard: recode 2. 1994-11-16 Francois Pinard: Re: recode 3.4+ and HTML 3. 1996-09-24 François Pinard: Re: recode-3.4 4. 1996-09-24 Paul WINDEY: Re: recode-3.4 5. 1998-09-14 Alain LaBonté : Re: recode suggestions 6. 1997-08-25 Alain LaBonté SCT: Re: character - sign - symbol 7. 1997-08-25 Alain LaBonté SCT: Re: character - sign - symbol (another theory 8. 1996-08-30 Alain LaBont/e'/: Liste des caractères français du JUC 9. 1997-09-02 Alain LaBont\i SCT: Nom français de la lettre islandaise Ð (ETH 10. 1996-12-01 unicode@Unicode.ORG: Re: Rare letters: in french 11. 1998-08-18 Alain LaBonté : RE: Sous ensemble « européen » d'unicode (bis) 12. 1998-02-24 François Pinard: Re: Subspace-based fault Subspace-based fault d 13. 1993-02-14 Harald Tveit Alvestrand: Re: ISO-8859-1 and French ../fallbacks/rmail/German 1. 1997-09-05 Michael Mauch: Recode 3.4: latin small letter sharp s (german) i 2. 1998-04-28 Jochen.Hayek@acm.org: what about `ASCII with easy German convent 3. 1998-04-28 François Pinard: Re: what about `ASCII with easy German conventi 4. 1998-04-28 Jochen.Hayek@acm.org: Re: what about `ASCII with easy German con 5. 1994-04-13 Ulrich Windl: recode 3.3 6. 1997-11-25 Markus Kuhn: Re: ISO 10646/UTF-8 support for recode 3.4 7. 1995-05-10 Ulrich Drepper: Re: Volunteering for translations 8. 1995-05-10 François Pinard: Re: Volunteering for translations 9. 1995-05-07 François Pinard: Re: Volunteering for translations 10. 1995-05-08 Ulrich Drepper: Re: Volunteering for translations 11. 1995-05-08 Martin Husemann: Re: Volunteering for translations 12. 1995-05-08 François Pinard: Re: Volunteering for translations 13. 1995-05-09 Ulrich Drepper: Re: Volunteering for translations 14. 1995-08-22 Ulrich Windl: Re: problem with recode 3 15. 1995-08-22 François Pinard: Re: problem with recode 3 16. 1995-07-25 François Pinard: Re: Patch for recode-3.4 17. 1995-07-17 Juergen Weigert (Inf4 - hiwi): recode-3.4 extended 'flat' charac 18. 1995-06-07 Ulrich Drepper: something you might be interested in 19. 1995-06-06 François Pinard: Re: something you might be interested in 20. 1995-06-07 Ulrich Drepper: Re: something you might be interested in 21. 1995-06-07 François Pinard: Re: something you might be interested in 22. 1995-01-21 Markus Kuhn: Re: Unicode Matters 23. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1 24. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1 25. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1 26. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1 27. 1993-02-11 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii? 28. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: latex conversions in r 29. 1994-07-19 Francois Pinard: Re: latex conversions in recode-3.3 30. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: Re: latex conversions 31. 1994-09-28 gator@cs.tu-berlin.de: new charset for recode 32. 1994-09-30 Francois Pinard: Re: new charset for recode 33. 1994-10-01 gator@cs.tu-berlin.de: Re: new charset for recode 34. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode' 35. 1994-01-11 Francois Pinard: Suggestions for `recode' 36. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode' 37. 1994-01-12 Francois Pinard: Re: Suggestions for `recode' 38. 1994-01-12 Francois Pinard: Re: Suggestions for `recode' 39. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode' 40. 1994-01-11 Francois Pinard: Suggestions for `recode' 41. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode' 42. 1994-01-12 Francois Pinard: shar: diac.tar.gz ../fallbacks/rmail/Greek 1. 1994-10-13 Liam R. E. Quin: Re: Multilingual HTML, SGML documents? ../fallbacks/rmail/Hebrew 1. 1997-10-03 Noam Shomron: Re: Hebrew Transcription 2. 1997-10-01 Noam Shomron: Hebrew Transcription 3. 1997-10-03 Martin J. Dürst: Re: Hebrew Transcription 4. 1997-10-01 Kenichi Handa: Re: Hebrew 5. 1997-10-01 Noam Shomron: Re: Hebrew 6. 1992-02-06 Nathaniel Borenstein: test of =?iso-8859-8?q?=FA=E9=F8=E1=F2?= i 7. 3900-01-17 Uwe Brauer: mime and HEBREW 8. 3900-01-17 Uwe Brauer: Mule without Mule 9. 1999-06-17 Gene Sorensen: Re: Syriac fonts for the Mac (Apple) 10. 3900-05-20 Eli Zaretskii: Re: Bug in gettext tools 11. 3900-05-22 salvador: Re: Bug in gettext tools 12. 3900-05-22 Eli Zaretskii: Re: Bug in gettext tools 13. 3900-05-22 salvador: Re: Bug in gettext tools 14. 3900-05-23 Eli Zaretskii: Re: Bug in gettext tools ../fallbacks/rmail/Hungarian 1. 1995-11-02 Andras Kornai: Re: Hungarian ../fallbacks/rmail/Irish 1. 1995-02-15 Daniel Quinlan: Re: recode 3.4 documentation 2. 1995-01-11 Daniel Quinlan: GNU recode addition - Gaelic 3. 1995-02-15 Daniel Quinlan: Re: recode 3.4 documentation ../fallbacks/rmail/compose 1. 1998-07-21 Markus Kuhn: (TC304.1878) UTF-mnemonic (was: German reaction) 2. 1998-07-24 K I Larsson: (TC304.1903) Keyboard compose sequences 3. 1998-12-08 Ulrich Drepper: Re: Character composition 4. 1998-12-10 Martin J. Duerst: Re: Character composition 5. 1998-12-11 François Pinard: Combining job 6. 1998-12-08 Ulrich Drepper: Re: Character composition 7. 1998-12-10 Martin J. Duerst: Re: Character composition ../fallbacks/rmail/flat 1. 1996-04-30 Yann Dirson: Re: recode: suggestion ../fallbacks/rmail/generic 1. 1993-02-10 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii? ../fallbacks/rmail/guillemets 1. 1999-12-09 Bruno Haible: Re: cjk.tgz, iconv, transliterations 2. 1999-12-09 Bruno Haible: Re: cjk.tgz, iconv, transliterations ../fallbacks/rmail/mnemo 1. 1995-02-28 Francois Pinard: UUPC ../fallbacks/rmail/translit 1. 1996-04-07 Hallvard B Furuseth: recode suggestion: as-readable-as-possible 2. 1996-10-14 Lars Magne Ingebrigtsen: Re: 8 bits in citations (Was: Re: sgnus 3. 1997-11-25 Fran‚çois Pinard: Re: ISO 10646/UTF-8 support for recode 3.4 4. 1997-12-08 François Pinard: Re: Test suite for sed? (Was: Re: First impessi 5. 1997-12-08 Primoz Peterlin: Test suite for sed? (Was: Re: First impessions 6. 1997-12-08 Keld J|rn Simonsen: Re: Test suite for sed? (Was: Re: First impe 7. 1998-09-15 Alain LaBont‚é‚ : Re: Two questions 8. 1998-09-15 Keld J|rn Simonsen: Re: Two questions 9. 1997-11-13 Milivoj Ivkovic: Re: recode 10. 1998-09-14 Stefan Haubenthal WWW-Userpage: recode suggestions 11. 1998-09-14 François Pinard: Re: recode suggestions 12. 1998-09-15 Stefan Haubenthal WWW-Userpage: Re: recode suggestions 13. 1998-07-08 Johan van Wingen: (TC304.1858) transliterating Greek 14. 1996-10-03 feeley@JSP.UMontreal.CA: (none) 15. 1999-06-03 Han-Wen Nienhuys: Unidentified subject! 16. 1999-06-03 Sigfrid Lundberg, Lub NetLab: Re: Unidentified subject! 17. 1993-03-18 Jan Labanowski: Translit --- transliterate foreign alphabets 18. 1999-10-29 Tom Tromey: forwarded message from Markus Kuhn 19. 3900-03-22 François Pinard: Re: recode-3.6 20. 3900-03-22 Bruno Haible: Re: recode-3.6 21. 3900-03-22 Bruno Haible: Re: recode-3.6 ../fallbacks/rmail/translit-iso 1. 1996-05-31 Alain LaBont/e'/: Réflecteur de courrier sur la translittération 2. 1996-06-12 Alain LaBont/e'/: Translittération 3. 1996-06-24 dorai@vnet.ibm.com: Transliteration standards; Liaisons; and Ema 4. 1996-08-19 François Pinard: Transliteration and ISO 5. 1996-08-25 Keld J|rn Simonsen: Re: OS/2 patch for recode 3.4 6. 1996-08-27 Keld J|rn Simonsen: Re: OS/2 patch for recode 3.4 7. 1996-09-26 Malek BOUALEM -- UNIVERSITE: Re: Bibliography ... in French 8. 1996-10-01 John Clews: (none) 9. 1996-11-25 Alain LaBont/e'/: Re: (u2.974) (TC304.781) transliteration 10. 1996-11-25 Alain LaBont/e'/: Re: (u2.974) (TC304.781) transliteration 11. 1996-11-27 John Clews: (i18n.340) ISO 639 (Language Codes) update status 12. 1997-03-10 John Clews: (i18n.351) Transliteration standards 13. 1997-09-27 François Pinard: Re: librecode, libc, gettext 14. 1997-11-17 Carrasco Benitez Manuel: (i18n.387) RE: Transliteration standard 15. 1997-11-17 John Clews: (i18n.388) RE: Transliteration standards: possible i 16. 1997-11-17 Jonathan Rosenne: (i18n.389) RE: Transliteration standards: poss 17. 1997-11-18 Carrasco Benitez Manuel: (i18n.390) RE: Transliteration standard 18. 1997-11-18 Michael G. McKenna: (i18n.391) RE: Transliteration standards: po 19. 1997-11-19 Harald.T.Alvestrand@uninett.no: (i18n.392) Transliteration stand 20. 1997-11-19 Harald.T.Alvestrand@uninett.no: (i18n.393) RE: Transliteration s 21. 1997-11-19 Alain LaBonté - 2: (i18n.402) Transliteration standards: possibl 22. 1997-11-19 Carrasco Benitez Manuel: (i18n.394) Transliteration 23. 1997-11-19 John Clews: (i18n.395) Script codes (was: Transliteration standa 24. 1997-11-19 John Clews: (i18n.396) Transliteration [and transcription] 25. 1997-11-19 Michael Everson: (i18n.398) Script codes (was: Re: Transliterati 26. 1997-11-19 Carrasco Benitez Manuel: (i18n.397) RE: Transliteration [and tra 27. 1997-11-19 Jonathan Rosenne: (i18n.400) Transliteration standards: possible 28. 1997-11-20 Jonathan Rosenne: (i18n.401) Transliteration [and transcription] 29. 1997-11-20 John Clews: (i18n.403) Transliteration [and transcription]: repl 30. 1997-11-20 Andrea Vine: (i18n.406) Transliteration [and transcription]: rep 31. 1997-11-20 Douglas A. Gwyn (IST): (i18n.405) (SC22WG14.4856) RE: Transliter 32. 1997-11-20 Martin J. Dürst: (i18n.404) Transliteration [and transcription]: 33. 1997-11-20 Thomas Plum: (i18n.407) (SC22WG14.4849) RE: Transliteration stan 34. 1997-11-21 John Clews: (i18n.408) (SC22WG14.4856) RE: Transliteration [and 35. 1997-11-24 Keld J|rn Simonsen: (i18n.409) Transliteration [and transcriptio 36. 1997-11-24 Keld J|rn Simonsen: (i18n.410) Transliteration [and transcriptio 37. 1997-11-24 Keld J|rn Simonsen: (i18n.411) RE: Transliteration [and transcri 38. 1997-11-24 Jonathan Rosenne: (i18n.412) Transliteration [and transcription] 39. 1997-11-24 Keld J|rn Simonsen: (i18n.413) Transliteration [and transcriptio 40. 1997-11-25 Jonathan Rosenne: (i18n.414) Transliteration [and transcription] 41. 1997-11-25 Otto Stolz: (i18n.415) Transliteration [and transcription] 42. 1997-11-25 Keld J|rn Simonsen: (i18n.416) Transliteration [and transcriptio 43. 1997-11-25 Keld J|rn Simonsen: (i18n.417) Transliteration [and transcriptio ../iso/rmail/14766 1. 1998-05-19 Keld J|rn Simonsen: (iso14766.15) 14766 WD 3 ../iso/rmail/cac-jtc1-i18n 1. 1998-04-02 Zbigniew, Ignatowicz: CAC-JTC1-I18N - mailing list. 2. 1998-05-29 Uma Umamaheswaran: (none) 3. 1998-04-03 SCC-JTC1_Forum@scc.ca: Notification of new entries in "CAC/JTC1/ 4. 1995-03-24 Keld J|rn Simonsen: Re: Unicode/10646 equivalences for RFC 1345 5. 1996-02-27 Keld J|rn Simonsen: (i18n.292) new sc2/wg2 pages ../iso/rmail/cdra 1. 1994-10-20 Erik Naggum: Re: Abandon ASCII for EBCDIC now! ../iso/rmail/collate 1. 1997-10-29 Alain LaBonté - 3: Re: une question naïve 2. 1998-08-05 Alain LaBonté : RE: on Draft DoC on 14651 - sorting of numbers i 3. 1998-08-17 Alain LaBonté : RE: on Draft DoC on 14651 - sorting of numbers i 4. 1998-05-22 Alain LaBonté : ISO/IEC 14652 and ISO/IEC 14651 5. 1998-07-30 Alain LaBonté : Tri respectant la norme canadienne dans Excel 6. 1998-07-30 Alain LaBonté : Tri ne respectant pas la norme canadienne dans E 7. 1998-12-27 Alain LaBonté : Re: (SC22WG20.2470) Macron in ISO/IEC FCD 14651 8. 1998-12-24 Alain LaBonté : Re: Note from John Clews [on international order 9. 1998-12-30 Alain LaBonté : Re: (SC22WG20.2484) (SC22WG20.2483) (SC22WG20.24 10. 1999-01-06 Alain LaBonté : Re: Caractères UCS cherchés :-) 11. 1999-01-07 Thorgeir Sigurdsson: (CEN/TC304-N877) Greek Ordering 12. 1998-11-19 Alain LaBonté: ISO/IEC 14651 13. 1998-11-16 Alain LaBonté: Final final F[inal]CD 14651 ready for ballot (: 14. 1998-11-17 Alain LaBonté: Re: Final final F[inal]CD 14651 ready for ballot 15. 1998-11-17 Alain LaBonté: 14651 16. 1998-11-10 Alain LaBonté: Ordering standard: to be sent for ballot unless t 17. 1998-11-10 Alain LaBonté: Ordering standard: to be sent for ballot unless t 18. 1999-04-29 Alain LaBonté : Re: Thai String Collation 19. 1999-12-26 Ulrich Drepper: more new code ../iso/rmail/elot 1. 1996-08-20 John Clews: Re: Transliteration and ISO 2. 1996-08-20 John Clews: EUROASCII and ASIASCII project proposals 3. 1996-08-23 François Pinard: [Mail Delivery Subsystem NRC character set mapp 30. 1995-04-10 Primoz Peterlin: Re: Recode and CP 1250 31. 1996-06-18 John F. Chandler: (i18n.332) Updated summary of ISO IR 32. 1997-06-20 Lukas Petrlik: Re: cs encodings (was: Re: recode 3.4) 33. 1997-07-22 Keld J|rn Simonsen: (i18n.363) CEN cultural register 34. 1996-01-13 Keld J|rn Simonsen: (i18n.285) CEN/TC304 PT01 report 35. 1999-07-07 LaBonté, Alain: Enregistrement des jeux de caractères ISO - comi 36. 1998-12-20 Martin von Loewis martin@mira.isdn.cs.tu-berlin.de: [String-SIG] ../iso/rmail/références 1. 1998-04-03 Alain LaBonté : Re: Étude sur le codage des caractères 2. 1998-11-30 Roman Czyborra: finished thesis on Unicode in Unix ../iso/rmail/surf 1. 1997-11-03 Thorgeir Sigurdsson: (TC304.1326) Web of CEN and our Call 2. 1997-11-19 Michael Everson: (i18n.399) iso15924 list created 3. 1998-03-13 Thorgeir Sigurdsson: (TC304.1529) Inability to Distribute via ST 4. 1998-03-20 Keld J|rn Simonsen: (TC304.1535) Cultural convention standards f 5. 1998-04-17 Alain LaBonté : Versions pdf (fr+en) des alphabets latin n° 8 (c 6. 1998-05-12 Marc Wilhelm Kster: (TC304.1757) First draft of the European Ord 7. 1998-06-02 Michael Everson: (TC304.1790) (TC304 P11) WS/Alpha base document 8. 1998-06-03 Keld J|rn Simonsen: (TC304.1791) taxonomy draft 9. 1998-06-15 Thorgeir Sigurdsson: (TC304.1812) ISSS URL 10. 1998-07-01 borka@e5.ijs.si: (TC304.1830) LE journal on the WEB 11. 1998-07-02 Thorgeir Sigurdsson: (TC304.1837) Documents, in the mail 12. 1998-07-07 Thorgeir Sigurdsson: (TC304.1854) Database of Latin letters 13. 1998-08-05 Alain LaBonté : Re: Obtaining ISO standards in Canada ../iso/rmail/using-word 1. 1996-10-06 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre ../surfaces/rmail/base64 1. 1998-09-11 Lars Magne Ingebrigtsen: Re: [Various] base64-decode 2. 1998-09-10 Santiago Vila: Re: [Various] base64-decode 3. 1998-09-10 François Pinard: Re: [Various] base64-decode 4. 1998-09-29 Christopher Davis: Re: line endings 5. 1999-12-13 François Pinard: Re: Whitespace in base64 input 6. 1999-12-13 François Pinard: Re: Base64 decoding ../surfaces/rmail/binhex 1. 1996-08-28 Claude Charest: Re: Binhex 2. 1995-04-05 John Gardiner Myers: Re: I Need MIME/BASE64 Decoder for Nintendo 3. 1995-05-18 Chris Newman: Re: Info on MACMIME needed (bis) 4. 1998-11-30 Lars Magne Ingebrigtsen: MIME display: broken multipart; binhex 5. 1998-08-07 Remi St-Onge: pasv ../surfaces/rmail/braille 1. 1994-05-18 Francois Pinard: Braille codes ../surfaces/rmail/control-z 1. 1999-07-29 Per Starback: Re: Ctrl-Z in files ../surfaces/rmail/crypt 1. 1995-07-24 John Gardiner Myers: Re: New base64 option to uuencode in POSIX 2. 1995-08-03 David Eaves: Re: MIME Content-MD5 header ../surfaces/rmail/doc-hexa 1. 1998-10-14 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre 2. 1998-10-14 Francois Yergeau: Re: Pour ceux qui ont le temps de lire... Cadr 3. 1998-10-23 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre 4. 1998-10-23 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre ../surfaces/rmail/endlines 1. 1999-10-31 Matt Gushee: Re: A Small dos->UNIX convertor 2. 3900-03-28 Fredrik Lundh: Re: chr(26) => file reading bug ../surfaces/rmail/graphic 1. 1994-11-16 Francois Pinard: Re: recode 3.4+ and HTML 2. 1994-10-11 mike@vlsivie.tuwien.ac.at: Re: recode 3. 1994-12-02 Lukas Petrlik: recode 3.4 ../surfaces/rmail/hlp 1. 1998-10-29 Marc Verreault: Re: [Q]: *.hlp format to HTML ../surfaces/rmail/implied 1. 1998-12-07 François Pinard: Re: Novice user of recode with question 2. 1997-12-09 Milivoj Ivkovic: Re: recode ../surfaces/rmail/keyboards 1. 1994-09-07 Darin Johnson: Re: Unicode & Linux's future (was Re: Acid) 2. 1994-09-07 Andries Brouwer: Re: Unicode & Linux's future (was Re: Acid) 3. 1994-09-07 Richard L. Goerwitz: Re: Unicode & Linux's future (was Re: Acid) 4. 1994-09-08 Andries Brouwer: Re: Unicode & Linux's future (was Re: Acid) 5. ---- -- -- Alain LaBont(e'): Re: list of character code standards 6. ---- -- -- Alain LaBont(e'): Input methods to enter characters of ISO/IEC 1 7. ---- -- -- Alain LaBont(e'): Input methods -- 8859-1-coded version 8. 1994-08-29 ALB@immedia.ca: Universal Input methods 9. 1995-04-19 Gilles Pinard: Divers 10. 1989-07-21 Francois Pinard: Support du franc,ais sur icule ../surfaces/rmail/rfc934 1. 1994-10-31 David J. MacKenzie: [pinard@iro.umontreal.ca: Re: bug in ansi2kn 2. 1994-10-31 Francois Pinard: Re: [pinard@iro.umontreal.ca: Re: bug in ansi2k ../surfaces/rmail/sgml 1. 1995-04-19 François Pinard: Re: ISO 10646 & recode concept ../surfaces/rmail/shar-docum 1. ....-..-.. lvirden@cas.org: Re: Solution for [Re: shar 4.0 make shar.dvi pr 2. 1994-09-09 gaumondp@ere.umontreal.ca: Comments about shar-4.0 3. 1994-09-11 davidsen@tmr.com: Re: shar 4.0 [was: Re: disk buffering in Linux 4. 1994-09-12 Francois Pinard: Say a word about GNU touch 5. 1994-09-16 djm@va.pubnix.com: comments on shar 4.0 doc 6. 1994-09-10 Mailer-Daemon@ileaf.com: Returned mail: Host unknown 7. 1994-09-03 Francois Pinard: GNU shar 4.0 8. 1994-11-11 Francois Pinard: Re: Release: GNU sharutils 4.1 9. 1994-11-11 Martin Maechler: Re: Release: GNU sharutils 4.1 10. 1994-11-30 Francois Pinard: Re: Suggestion for Sharutils (feature) 11. 1994-11-30 Francois Pinard: Re: Suggestion for Sharutils (feature) 12. 1995-02-11 Francois Pinard: sh, shar, unshar - explications 13. 1994-11-16 Francois Pinard: Re: sharutils 14. 1994-11-17 Winston Edmond: Suggested change to shar 15. 1994-11-17 Francois Pinard: Re: Suggested change to shar 16. 1995-03-31 François Pinard: Re: v47i048: htmlchek - htmlchek - HTML Error C 17. 1995-12-11 François Pinard: Re: shar & standard input 18. 1995-12-12 François Pinard: Re: GNU shar 4.1: ambiguous date format in head ../surfaces/rmail/tranisci 1. 1996-02-16 Alain LaBont:e':: Re: Frappe de caracte`res accentue's 2. 1996-03-22 asiascii@sesame.demon.co.uk (John Clews) (by way of Alain LaBont 3. 1996-08-23 Alain LaBont/e'/: Transliteration, ISO and bullet-proof Internet 4. 1997-12-16 Alain LaBonté - 1: Re: RFC1345 charset 5. 1993-12-14 Michel Desmarais: CERT-Statistiques d'economie d'espace 6. 1993-12-14 ALB@immedia.ca: CERT-Message precedent en format UUENCODE 7. 1993-12-14 ALB@immedia.ca: CERT-Svp ajouter mon adresse a la liste/ + Sugge ../surfaces/rmail/uu-bigger-specs 1. 1993-09-05 mathew: Re: uuencode/uudecode 2. 1993-09-07 mathew: Re: GNU uudecode: why no GNU btoa? 3. 1994-03-03 Ian Jackson: uuencode 1.0: Ultrix, use of spaces, no table, not 4. 1994-07-02 bcochavy@ilux39.iil.intel.com: Some slight patchs for uuencode-1 5. 1994-11-16 Kai Uwe Rommel: sharutils 6. 1994-11-17 Kai Uwe Rommel: Re: sharutils 7. 1994-11-30 Ulrich Drepper: Re: Prerelease: GNU sharutils 4.1.1 8. 1994-11-21 David Kettler: uudecode enhancement 9. 1995-02-11 Francois Pinard: uucode pas requis pour Gilles 10. 1994-10-03 iwj@cam-orl.co.uk: Re: uuencode 1.0: Ultrix, use of spaces, no t 11. 1994-10-03 Francois Pinard: Re: uuencode 1.0: Ultrix, use of spaces, no tab 12. 1993-09-02 David Herron: Re: uuencode/uudecode 13. 1995-02-16 Martin Schulze: Hint: uudecode/uuencode ../surfaces/rmail/uu-doc 1. 1993-09-02 Ian Lance Taylor: DOS uuencode and uudecode 2. 1993-10-13 -----: Re: uuencode 3. 1989-07-17 Allott P: uudecode - permission denied 4. 1990-12-02 Jonathan I. Kamens: Re: uudecode alias security hole? 5. 1991-06-17 Jonathan I. Kamens: Re: is uudecode dangerous? 6. 1991-06-19 Bill Stewart 908-949-0705 erebus.att.com!wcs: Re: is uudecode da 7. 1990-03-01 Systems Staff: Re: which archiver/compresser/encoder/decoder to 8. 1994-11-03 Francois Pinard: Re: Documentation diffs, & a comment. 9. 1994-11-30 Ulrich Drepper: Re: Prerelease: GNU sharutils 4.1.1 10. 1995-07-14 Elizabeth B. Naime: Uuencode/uudecode for PC ../surfaces/rmail/uu-new-w-option 1. 1994-10-29 Michael Shields: New `uudecode -w' option for easy multipart dec 2. 1994-10-29 Francois Pinard: Re: New `uudecode -w' option for easy multipart 3. 1994-10-29 Michael Shields: Re: New `uudecode -w' option for easy multipart 4. 1994-10-29 Michael Shields: New `uudecode -w' option for easy multipart dec ../trees/rmail/rtf 1. 1998-11-15 Marc Blanchet: Re: rapports divers 2. 1992-09-25 develop!nextmime@ebony@sblab.att.com: More richtext questions/co 3. 1988-03-26 Dominik Wujastyk: Microsoft Rich Text Format 4. 1988-08-25 Peter Ilieve: Microsoft Rich Text Format, RTF 5. 1991-03-04 Brain in Neutral: [text...] RTF file tool distribution 1.05 avai 6. 1992-01-27 John R. Levine: [comp.text] Re: RTF Format 7. 1992-10-08 Dan Connolly: [comp.windows.x.announce] XcRichText-1.5: RTF widg 8. 1992-12-02 Brain in Neutral: Re: ASCII <-> rtf anyboday?? 9. 1988-08-25 Peter Ilieve: Microsoft Rich Text Format, RTF 10. 1991-03-04 Brain in Neutral: [text...] RTF file tool distribution 1.05 avai 11. 1992-01-27 John R. Levine: [comp.text] Re: RTF Format 12. 1992-10-08 Dan Connolly: [comp.windows.x.announce] XcRichText-1.5: RTF widg 13. 1992-12-02 Brain in Neutral: Re: ASCII <-> rtf anyboday?? 14. 1994-11-17 Chris J. Hector: Re: ANNOUNCE: A DOS port of rtftohtml! 15. 1994-11-23 J-F Pitot de La Beaujardiere: Re: Ms Word 6.0 filter for HTML 16. 1995-05-19 Normand Ranger: SOMMAIRE: WP to HTML 17. 1996-05-25 François Pinard: (none) 18. 1997-11-29 Alain LaBonté - 1: Un tuyau intéressant pour générer du HTML 19. 1999-05-18 François Pinard: Re: ISO/IEC 2375 [ISO register of character set 20. 1998-11-15 Marc Blanchet: Re: rapports divers 21. 1997-04-14 Dirk Kutscher: Re: Word RTF -> SGML 22. 1997-04-23 Per-Ake Ling: Re: Word RTF -> SGML 23. 1997-04-24 Mikko Lounela: Re: Word RTF -> SGML 24. 1997-04-24 Rolf Marvin B|e Lindgren: Re: Word RTF -> SGML 25. 1997-04-26 William Hill: Re: RTF to SGML 26. 1997-07-24 Christian Tismer tismer@appliedbiometrics.com: [STRING-SIG] RTF 27. 1999-04-21 bruffaerts@my-dejanews.com: Re: LOOKING FOR a rtf 2 htm 'batch' 28. 1999-04-25 marduk@manson.ddns.org: Re: LOOKING FOR a rtf 2 htm 'batch' conv 29. 1999-04-26 liu singloon: Re: LOOKING FOR a rtf 2 htm 'batch' converter 30. 3900-02-15 Chris.Smith@raytheon.co.uk: Re: [SLE] Rich Text Format Editor? 31. 3900-02-15 Jon Pennington: Re: [SLE] Rich Text Format Editor? 32. 3900-02-15 Lenz Grimmer: Re: [SLE] Rich Text Format Editor? 33. 3900-02-15 Rafael E. Herrera: Re: [SLE] Rich Text Format Editor? 34. 3900-02-15 Andrei Mircea: Re: [SLE] Rich Text Format Editor? 35. 3900-03-23 Tres Seaver: Re: advice needed on processing rtf files 36. 3900-02-03 Linus Walleij: RTF for Recode 37. 3900-02-04 François Pinard: Re: RTF for Recode 38. 3900-02-04 Linus Walleij: Re: RTF for Recode 39. 3900-05-25 Lenz Grimmer: Re: [SLE] rtf 40. 1999-06-11 Kay Hayen: RTF backend degraded in V2? 41. 3900-06-28 François Pinard: Re: RTF for Recode 42. 3900-06-28 François Pinard: Re: RTF for Recode ../trees/rmail/rtf-exemples 1. 1992-09-25 develop!nextmime@ebony@sblab.att.com: More richtext questions/co 2. 1997-09-15 Alain LaBont\i SCT: Re: Résolutions de la Plénière de l'ISO/CEI 3. 1999-01-11 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_de_f=E9vrier_= 4. 1999-02-15 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Liste_des_cours_pour 5. 1999-03-15 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_d=27avril_=E0_ 6. 1999-05-26 MORIN LOUISE-B. (formation): Correction nouveau Calendrier 7. 1999-05-26 MORIN LOUISE-B. (formation): Nouveau Calendrier des stages de fo 8. 1998-12-07 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_de_janvier_199 9. 1999-08-12 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_=E0_la_Soci=E9 10. 1998-01-20 Bernard Mataigne: Programme de soutien a l'innovation du MEQ 11. 1998-08-10 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Cours_de_septembre_= 12. 1998-07-02 MORIN LOUISE-B. (formation): =?iso-8859-1?Q?Stages_de_la_GRICS_p 13. 1998-07-03 MORIN LOUISE-B. (formation): Calendrier des stages de formation 14. 3900-06-02 Erkki Kolehmainen: (TC304.2306) Liaison Report from CEN TC 304 t 15. 3900-06-28 SOUTHERN DIANA: =?iso-8859-1?Q?Lancement_de_concours_=3A__r=E9su ../trees/rmail/structural 1. 3900-02-23 Christopher Browne: Re: Cool things about Ruby on the way out of 2. 1996-01-07 Brian Bartholomew: Initial brainstorm for emacs sql database bro 3. 3900-02-07 François Pinard: Re: [Doc-SIG] Monty: A structured text syntax i ../trees/rmail/texinfo 1. 3900-03-03 François Pinard: Texinfo recodings 2. 3900-06-16 Karl Heinz Marbaise: recode-3.5c: patch for Latin-1 => Texinfo ( 3. 3900-06-28 François Pinard: Re: recode-3.5c: patch for Latin-1 => Texinfo ( ../admin/usoft/RMAIL 1. 1997-12-29 Wojciech Galazka: Re: DJGPP port of recode 2. 1997-12-29 Eli Zaretskii: Re: DJGPP port of recode 3. 1998-03-26 François Pinard: Re: find reco dos executable 4. 1998-06-25 kotter@dei.unipd.it: recode for dos 5. 1998-06-30 François Pinard: Re: recode for dos 6. 1998-07-03 kotter@dei.unipd.it: Re: recode for dos 7. 1994-04-13 Ulrich Windl: recode 3.3 8. 1997-09-30 Wojciech Galazka: Re: Question on GNU recode package 9. 1998-01-12 François Pinard: Re: [recode] "failed (reversibility problem?)" ../asian/martin/RMAIL 1. 1998-12-18 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i ../asian/vietnam/RMAIL 1. 1999-09-22 NGUYEN-DAI Quy: renseignement concernant "recode" 2. 1999-12-13 Nguyen-Dai Quy: Re: renseignement concernant "recode" 3. 1999-12-17 Nguyen-Dai Quy: Re: renseignement concernant "recode" 4. 1999-12-17 Nguyen-Dai Quy: Re: renseignement concernant "recode" 5. 1999-12-17 Nguyen-Dai Quy: Re: renseignement concernant "recode" 6. 1999-12-18 Bruno Haible: Re: suggestion ridicule pour recode 7. 1999-12-18 François Pinard: Re: renseignement concernant "recode" 8. 1999-12-18 François Pinard: Contre-cotices (:-) dans `test.viqr' 9. 1999-12-19 Nguyen-Dai Quy: recode & vietnamese 10. 1999-12-19 François Pinard: Re: recode & vietnamese 11. 1999-12-20 Nguyen-Dai Quy: Re: recode & vietnamese 12. 1999-12-20 Bruno Haible: Re: suggestion ridicule pour recode 13. 1999-12-20 François Pinard: Re: suggestion ridicule pour recode 14. 1999-12-21 Nguyen-Dai Quy: recode-3.5a 15. 1999-12-21 François Pinard: Re: recode-3.5a 16. 1999-12-22 François Pinard: =?iso-8859-1?q?Probl=E8me?= VNI 17. 1999-12-21 Nguyen-Dai Quy: bug report for recode-3.5a with vietnamese chars 18. 1999-12-22 François Pinard: Inconsistance pour le VNI 19. 1999-12-22 François Pinard: Re: bug report for recode-3.5a with vietnamese 20. 1999-12-22 Nguyen-Dai Quy: recode-3.5a 21. 1999-12-22 Nguyen-Dai Quy: recode-3.5a : VIQR..another_charset 22. 1999-12-22 Nguyen-Dai Quy: Re: =?iso-8859-1?Q?Probl=E8me?= VNI 23. 1999-12-25 Nguyen-Dai Quy: recode 3.5b : bug report 24. 1999-12-25 Nguyen-Dai Quy: [Fwd: Returned mail: User unknown] 25. 1999-12-26 Laurent Bourbeau: Re: =?iso-8859-1?q?Probl=E8me?= VNI 26. 1999-12-30 François Pinard: Re: recode 3.5b : bug report 27. 1999-12-30 Nguyen-Dai Quy: Re: recode 3.5b : bug report 28. 1999-12-30 François Pinard: Re: recode 3.5b : bug report 29. 3900-03-20 dangit@ix.netcom.com: Vietnamese Font for NT Emacs 30. 3900-03-21 Kenichi Handa: Re: Vietnamese Font for NT Emacs 31. 3900-03-21 Miyashita Hisashi (=?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpIS 32. 3900-03-20 dangit@ix.netcom.com: Re: Vietnamese Font for NT Emacs 33. 3900-03-20 dangit@ix.netcom.com: Vietnamese Font for NT Emacs 34. 3900-03-20 dangit@ix.netcom.com: Re: Vietnamese Font for NT Emacs 35. 3900-01-13 Nguyen-Dai Quy: Vietnam : un mois de salaire pour dix heures de 36. 3900-03-21 Kenichi Handa: Re: Vietnamese Font for NT Emacs 37. 3900-03-21 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: Re: Vietname ../charsets/mule/RMAIL 1. 1993-08-12 Kenichi Handa: The official release of Mule Ver.1.0 (Patch Level 2. 1995-03-30 Gianni Mariani: Re: Unicode/ISO-10646/TRON/MULE/MCS for multilin 3. 1995-03-30 Martin J. Duerst: Re: Unicode/ISO-10646/TRON/MULE/MCS for multil 4. 1995-09-22 Richard Stallman: Re: Emacs C-q NNN 5. 1995-12-13 Ulrich Drepper: Re: Internationalization resources? 6. 1996-01-03 Per Bothner: A proposed Mule-Unicode hybrid 7. 1996-01-04 Kenichi Handa: Re: New Mule 8. 1996-01-04 Kenichi Handa: Re: New Mule 9. 1997-06-28 “¹æ“ÁØ“¿µ: Re: tar-1.12.ko.po 10. 1997-07-28 François Pinard: Re: Trying Emacs 20 11. 1997-07-30 Valery Alexeev: prefer-coding-system broken? 12. 1997-08-01 François Pinard: Re: Emacs 20 13. 1997-08-02 François Pinard: Emacs 20 14. 1997-08-03 Kenichi Handa: Re: [pinard@IRO.UMontreal.CA: Re: 20.0.92 C-q han 15. 1997-08-04 Bjørn Stabell: Frustration: Universally available input methods 16. 1997-08-05 Martin J. Duerst: Re: Frustration: Universally available input m 17. 1997-08-05 Stephen J. Turnbull: Re: Frustration: Universally available inpu 18. 1997-08-06 Richard Stallman: Re: [pinard@iro.umontreal.ca: Re: Rapport de m 19. 1997-08-07 Kenichi Handa: Re: [pinard@iro.umontreal.ca: Re: Rapport de miss 20. 1997-08-07 Kenichi Handa: Re: [pinard@iro.umontreal.ca: Re: Rapport de miss 21. 1997-08-07 Kenichi Handa: Re: [pinard@iro.umontreal.ca: Re: Rapport de miss 22. 1997-08-07 Bjørn Stabell: Re: Frustration: Universally available input meth 23. 1997-08-08 Kenichi Handa: Re: [pinard@iro.umontreal.ca: Re: Rapport de miss 24. 1997-08-08 Stephen J. Turnbull: Re: Frustration: Universally available inpu 25. 1997-08-09 Johan Vromans: Re: 20.0.92 C-q handling of RET 26. 1997-08-11 Naoto Takahashi: Re: Small difficulties in Emacs 20 27. 1997-08-22 Olaf Meeuwissen: changing file-coding-system-alist 28. 1997-08-23 Kenichi Handa: Re: Thank you, Re: input cyrillic 29. 1997-08-25 Kenichi Handa: Re: input cyrillic 30. 1997-08-27 Richard Stallman: Re: Dired and Latin-1 31. 1997-08-29 Kenichi Handa: Re: Getting rid of \201's ? Not easy... 32. 1997-08-30 Kenichi Handa: Re: Often needed function in Emacs 33. 1997-08-30 Kenichi Handa: Re: Often needed function in Emacs 34. 1997-09-01 Kenichi Handa: Re: PO mode and Mule 35. 1997-09-02 Richard Stallman: Re: Getting rid of \201's ? Not easy... 36. 1997-09-05 François Pinard: Re: Little difficulty in incremental search 37. 1997-09-05 François Pinard: Mixing Japanese and French 38. 1997-09-05 François Pinard: Petits exercices en japonais! :-) 39. 1997-09-05 Kenichi Handa: Re: Cleaning mail 40. 1997-09-05 François Pinard: Petit bout de message multilingue 41. 1997-09-06 Kenichi Handa: Re: c-cedilla still wrong 42. 1997-09-08 Jaejun Yu: How to set the CODING-SYSTEM for the mail in emacs 20 43. 1997-09-08 Kenichi Handa: Re: How to set the CODING-SYSTEM for the mail in 44. 1997-09-08 Jaejun Yu: Re: How to set the CODING-SYSTEM for the mail in emac 45. 1997-09-08 Kenichi Handa: Re: How to set the CODING-SYSTEM for the mail in 46. 1997-09-08 Kenichi Handa: Re: How to set the CODING-SYSTEM for the mail in 47. 1997-09-09 François Pinard: Appreciation 48. 1997-09-09 Kenichi Handa: Re: Quail guidance 49. 1997-09-09 Naoto Takahashi: Re: how to read cyrillic under gnus 50. 1997-09-24 Naoto Takahashi: Re: Ton nom! :-) 51. 1997-09-30 Terrence Brannon: Re: How to read news with GNUS in Big5? 52. 1997-09-30 François Pinard: Mail mangling 53. 1997-09-30 gnu port: RMAIL in emacs 20.2, thank you. 54. 1997-09-30 Mark-Jason Dominus: How to detemind coding method of unknown fil 55. 1997-10-01 Kenichi Handa: Re: How to read news with GNUS in Big5? 56. 1997-10-01 Kenichi Handa: Re: RMAIL in emacs 20.2, thank you. 57. 1997-10-01 Kenichi Handa: Re: How to detemind coding method of unknown file 58. 1997-10-01 Noam Shomron: Hebrew Transcription 59. 1997-10-01 Chiaki Ishikawa: Re: RMAIL in emacs 20.2, thank you. 60. 1997-10-01 Eldar Fischer: Transcription 61. 1997-10-01 Kenichi Handa: Re: RMAIL in emacs 20.2, thank you. 62. 1997-10-02 Apiset Tananchai: Problem compiling mule-2.3 on linux 63. 1997-10-03 Noam Shomron: Re: Hebrew Transcription 64. 1997-10-03 Kenichi Handa: Re: Problem compiling mule-2.3 on linux 65. 1997-10-03 Martin J. Dürst: Re: Hebrew Transcription 66. 1997-10-04 François Pinard: 1) Message reject and 2) Mail mangling (1/2) 67. 1997-10-04 François Pinard: 1) Message reject and 2) Mail mangling (2/2) 68. 1997-10-13 Jungshik Shin: Re: korean-hanterm input method and han.* encodin 69. 1997-11-26 Milan Zamazal: Emacs 20 and Czech 70. 1998-02-06 David A. White: Unicode/UTF8 Support for MULE? 71. 1998-02-09 Kenichi Handa: Re: Unicode/UTF8 Support for MULE? 72. 1998-02-09 Duane Ellis: Re: Unicode/UTF8 Support for MULE? 73. 1998-02-09 Duane Ellis: Re: Unicode/UTF8 Support for MULE? 74. 1998-02-09 Mark Leisher: Re: Unicode/UTF8 Support for MULE? 75. 1998-02-09 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: Re: Unicode/ 76. 1998-02-10 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: Re: Unicode/ 77. 1998-12-26 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: Open anonymo 78. 1997-09-09 Naoto Takahashi: Re: how to read cyrillic under gnus 79. 1998-09-11 Hallvard B Furuseth: Re: "Coding system"? Eh? 80. 1998-08-20 Lars Magne Ingebrigtsen: Re: Gnus 5.6.38 - message-send-coding-s 81. 1998-11-24 Katsumi Yamaoka: Re: PATCH for mm-util.el 82. 1998-11-24 Shenghuo ZHU: Re: PATCH for mm-util.el 83. 1998-11-24 Lars Magne Ingebrigtsen: Re: PATCH for mm-util.el 84. 1998-11-25 Lars Magne Ingebrigtsen: Re: PATCH for mm-util.el 85. 1998-10-01 Lars Magne Ingebrigtsen: Re: I've got the \201 blues again, damm 86. 1998-07-01 Ruiter de M: Re: RMAIL in PC environment 87. 1997-09-05 Kenichi Handa: Re: PO mode and Mule 88. 1998-05-12 David Miller: dialog boxes 89. 1998-05-13 Kenichi Handa: Re: dialog boxes 90. 1997-12-06 François Pinard: Re: Small difficulties in Emacs 20 91. 1999-05-05 Alfred J Correira: Re: NT / pgnus draft problem 92. 1999-06-14 Kenichi Handa: Re: dead key for quail 93. 1999-07-11 Dave Love: Re: Mule Emacs 20.3 w/enable-multibyte-characters set 94. 1999-07-12 Michael Welsh Duggan: Re: Mule Emacs 20.3 w/enable-multibyte-cha 95. 1999-07-14 Dave Love: Re: Mule Emacs 20.3 w/enable-multibyte-characters set 96. 1999-07-29 Kenichi Handa: shift to a new mailing list server. 97. 1999-07-29 Mito: Re: FAQ: UNICODE conversion support planned? 98. 1999-07-31 FUJITA Kazutoshi: Re: shift to a new mailing list server. 99. 3900-01-18 PILCH Hartmut: mule stuff 100. 3900-01-19 Miyashita Hisashi (=?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpI 101. 3900-01-19 PILCH Hartmut: Re: mule stuff 102. 3900-01-19 PILCH Hartmut: Re: mule stuff ../engines/abrahamsen/RMAIL 1. 1993-03-11 Per Abrahamsen: min-key.el: Keyboard Remapping and Character Set 2. 1993-06-02 Per Abrahamsen: Danish, Swedish, German, Russian, and DVORAK Key ../engines/charconv/RMAIL 1. 1993-07-19 Burkhard Kirste: charconv - convert extended character sets (1/2 ../engines/iso2asc/RMAIL 1. 1993-02-11 Markus Kuhn: Re: ISO-8859-1 and French 2. 1993-05-20 Markus Kuhn: Portable ISO Latin 1 -> ASCII Converter 3. 1993-02-10 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii? 4. 1993-12-07 Markus Kuhn (CIP 90): Re: transcription iso-8859-1 to us-ascii? ../engines/wilson/RMAIL 1. 1994-10-27 David E A Wilson: recode-3.3 2. 1994-10-28 David E A Wilson: Re: recode-3.3 3. 1994-10-28 David E A Wilson: charset program ../surfaces/abe/RMAIL 1. 1991-01-17 Francois Pinard: abe and directories; dabe and Turbo-C 2. 1991-01-27 Brad Templeton: Re: abe part numbering 3. 1991-02-11 Francois Pinard: Possible bug with b= option 4. 1991-02-11 Brad Templeton: Re: Possible bug with b= option 5. 1992-07-15 Francois Pinard: Minor problem in dabe.c 6. 1994-09-23 Francois Pinard: Re: Possible bug with b= option 7. 1994-09-24 brad@alto.clarinet.com: Re: Possible bug with b= option 8. 1994-09-24 brad@alto.clarinet.com: Re: Possible bug with b= option 9. 1994-09-24 brad@alto.clarinet.com: Re: Possible bug with b= option 10. 1994-09-24 Francois Pinard: Re: Possible bug with b= option 11. 1994-09-24 Francois Pinard: Re: Possible bug with b= option 12. 1994-09-26 brad@alto.clarinet.com: Re: Possible bug with b= option ../surfaces/apple/RMAIL 1. 1987-06-30 Kevin O'Gorman: Comb 2. 1995-05-04 Leonardo Topa: Re: mcvert version 2.16 installed 3. 1995-03-10 John Gianni: Re: Application/MAC-BINHEX40 4. 1995-03-31 Chris Newman: Re: Looking For BinHex Specifications 5. 1995-04-02 Kari E. Hurtta: Re: Looking For BinHex Specifications 6. 1995-04-07 Andrew M. Langmead: Re: Looking For BinHex Specifications 7. 1995-03-31 bill@slipnet.com: Re: Binhex4.0 8. 1995-03-05 Mathieu Dubreuil: Re: Rencontre Jeunes - Nations Unies 9. 1995-12-08 DOCUMENSA: DTD Loi 10. 1997-03-12 François Pinard: Macintosh 11. 1999-08-02 Benjamin Kowarsch: Re: Mac Install ../surfaces/btoa/RMAIL 1. 1994-09-20 kb@cs.umb.edu: shar, uuencode, atob 2. 1994-09-20 Francois Pinard: Re: shar, uuencode, atob 3. 1994-07-29 ericb@lsid.hp.com: Re: GNU shar, -M and you 4. 1994-07-28 Francois Pinard: Re: GNU shar, -M and you 5. 1992-10-09 Jef Poskanzer: version of atob with factor of 2 speedup 6. 1993-09-26 Francois Pinard: GNU encode 1.0 - still 7. 1989-12-30 Stefan Parmark: Re: BTOA 5.2 8. 1989-12-30 Francois Pinard: BTOA 5.2 9. 1989-12-31 Francois Pinard: diffs for btoa 5.2 under MSDOS 10. 1990-07-18 Francois Pinard: shar blues 11. 1994-09-20 Francois Pinard: Re: shar, uuencode, atob 12. 1994-09-24 kb@cs.umb.edu: Re: shar, uuencode, atob ../surfaces/cdc-tape/RMAIL 1. 1995-02-03 Francois Pinard: Re: Cyber tape formats ../charsets/cyrillic/rmail/866 1. 1998-01-06 Roman Czyborra: Re: cyrillic support in recode - patch 2. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch 3. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch 4. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch ../charsets/cyrillic/rmail/878 1. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch ../charsets/cyrillic/rmail/documentation 1. 1999-06-08 Lukas Petrlik: recode 3.5 docs 2. 3900-05-05 George Zeigler: Max ../charsets/cyrillic/rmail/emacs 1. 1997-08-21 Kenichi Handa: Re: input cyrillic 2. 1997-08-23 Kenichi Handa: Re: Thank you, Re: input cyrillic 3. 1997-08-25 Martin J. Dürst: Re: input cyrillic ../charsets/cyrillic/rmail/gnus 1. 1999-02-19 Lars Magne Ingebrigtsen: Re: How to specify charset in message h 2. 1999-02-19 Dmitry Yaitskov: Re: How to specify charset in message headers? 3. 1999-02-19 Lars Magne Ingebrigtsen: Re: with 0.76, messages in koi8-r are s 4. 1999-02-05 Vladimir Volovich: Re: More charset things 5. 1999-02-08 Bill White: Re: More charset things ../charsets/cyrillic/rmail/gost 1. 1997-12-05 Roman Czyborra: GOST 19768 2. 1997-12-05 Roman Czyborra: ECMA-113 3. 1997-12-05 Keld J|rn Simonsen: Re: GOST 19768 4. 1999-01-04 Keld J|rn Simonsen: Re: Details in your latest charset tables ../charsets/cyrillic/rmail/latex 1. 1998-05-20 Barbara Beeton: Re: Cyrillic by AMS 2. 1998-05-21 Boguslaw Jackowski: re: Cyrillic fonts by AMS 3. 1998-05-21 Barbara Beeton: re: Cyrillic fonts by AMS 4. 1998-05-21 Boguslaw Jackowski: Re: Cyrillic fonts by AMS (hopefully my fina 5. 1998-06-07 Barbara Beeton: Re: Cyrillic fonts with T1 encoding 6. 1998-06-08 taupin: Cyrillic fonts with T1 encoding 7. 1998-06-08 Robin Fairbairns: Re: Cyrillic fonts with T1 encoding 8. 1998-06-08 taupin: About cyrillic fonts. 9. 1998-06-09 taupin: Re: Ligature question ../charsets/cyrillic/rmail/latin5 1. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch ../charsets/cyrillic/rmail/mule 1. 3900-02-05 Vladimir Volovich: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. 2. 3900-02-05 Werner LEMBERG: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. 3. 3900-02-07 Vladimir Volovich: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. 4. 3900-02-11 Miyashita Hisashi (=?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpIS 5. 3900-02-14 Werner LEMBERG: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. ../charsets/cyrillic/rmail/unified 1. 1997-12-05 Roman Czyborra: new Ukrainian KOI8 charsets 2. 1997-12-05 Keld J|rn Simonsen: Re: ISO-IR-111 Cyrillic wrong in RFC 1345 an 3. 1998-06-12 Roman Czyborra: KOI8-U 4. 1999-01-11 François Pinard: Re: cyrillic support in recode - patch ../charsets/cyrillic/rmail/windows 1. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch 2. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch 3. 1998-01-31 Alexander L. Belikoff: cyrillic support in recode ../charsets/cyrillic/rmail/zzz 1. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2 2. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2 3. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2 4. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2 5. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2 6. 1998-06-12 Roman Czyborra: proofreading RFC 1345++ 7. 1998-06-15 Roman Czyborra: ANNOUNCE: new charset soups (ISO 8859, Cyrillic, 8. 1998-09-12 Vladimir Volovich: Re: \201 problem reproduced 9. 1998-09-12 Vladimir Volovich: Re: \201 problem reproduced 10. 1998-03-10 Thorgeir Sigurdsson: (TC304.1525) EN1923 is an adopted 8 bit MES 11. 1997-12-28 Andries.Brouwer@cwi.nl: Re: cyrillic support in recode - patch 12. 1998-11-18 Uma Umamaheswaran: Site with info on different character sets et 13. 1999-03-26 Earl Hood: RFC: Character sets in MHonArc (was private Re: MHonA 14. 1999-03-27 Andrew S. Howell: Re: RFC: Character sets in MHonArc (was privat 15. 1999-03-29 Koichi Nakatani: Re: RFC: Character sets in MHonArc (was private 16. 1999-03-24 Takashi P.KATOH: iso-2022 filter 17. 1999-03-24 Earl Hood: Re: iso-2022 filter 18. 1999-03-02 Lukas Petrlik: Re: Prerelease: GNU recode 3.4i 19. 1999-01-06 Martin Mares: Re: Prerelease: GNU recode 3.4i 20. 1999-02-18 Alexander L. Belikoff: Cyrillic encodings - a more or less autho 21. 1999-01-25 Alexander L. Belikoff: Re: cyrillic support in recode - patch 22. 1999-01-09 Alexander L. Belikoff: Re: cyrillic support in recode - patch 23. 1999-01-11 François Pinard: Re: cyrillic support in recode - patch 24. 1999-01-25 Alexander L. Belikoff: Re: cyrillic support in recode - patch 25. 1998-11-30 Roman Czyborra: finished thesis on Unicode in Unix 26. 1999-03-02 Lukas Petrlik: Re: Prerelease: GNU recode 3.4i 27. 1999-01-06 Martin Mares: Re: Prerelease: GNU recode 3.4i 28. 1999-01-06 Keld J|rn Simonsen: Re: Prerelease: GNU recode 3.4i 29. 1999-01-05 Martin Mares: Re: Prerelease: GNU recode 3.4i 30. 1999-01-06 François Pinard: Re: Prerelease: GNU recode 3.4i 31. 1999-04-13 borka@e5.ijs.si: (TC304.2152) (SC22WG20.2656) Differences betwee 32. 1999-04-13 Karlsson Kent - keka: (TC304.2153) RE: (SC22WG20.2685) (SC22WG20 33. 1999-04-15 Konstantin Chuguev: (TC304.2154) (SC22WG20.2686) RE: (SC22WG20.2 34. 1996-10-13 Alexander L. Belikoff: Linux Cyrillic HOWTO (part 1/1) 35. 3900-02-14 Werner LEMBERG: Re: Mule-UCS 0.71 (KITANOTENMANGU) release. 36. 3900-03-18 George Zeigler: [SLE] CorelDraw cyrillic character set ../charsets/ucs/rmail/10646 1. 1996-03-15 Alain LaBont:e':: Impact of ISO/IEC 10646 on POSIX - Draft perso 2. 1996-03-28 Keld J|rn Simonsen: (i18n.298) 10646 amendments available 3. 1996-04-26 Keld J|rn Simonsen: (i18n.325) ISO 10646 character namesand posi 4. 1997-02-04 unicode@Unicode.ORG: Re: Korean m*, what is it? 5. 1999-08-25 Alain LaBonté : ISO 10646 (v.f.) - Annexe K -- Conseils pour le ../charsets/ucs/rmail/byte-order-mark 1. 1999-08-01 Marc Feeley: Unicode BOM 2. 1999-08-01 Marc Feeley: Unicode BOM ../charsets/ucs/rmail/dns 1. 1999-07-07 Stuart Kwan: RE: skwan-utf8-dns (RE: (Almost final) Agenda for d ../charsets/ucs/rmail/documentation 1. 1994-10-09 Emmanuel Uren: 850 and more, 8859 and more, and more 2. 1996-09-13 Markus G. Kuhn: Unicode Introduction and References 3. 1996-11-24 Erik Naggum: Re: The char type crossing the 8 bit barrier? (Was 4. 1997-05-20 Alain LaBont/e'/: UNICODE et ISO/CEI 10646 5. 1997-10-28 François Pinard: Re: librecode, libc, gettext 6. 1997-10-31 Alain LaBonté - 3: Philosophie de l'internationalisation de bon 7. 1998-01-02 Alain LaBonté - 3: Re: aide! 8. 1998-02-14 Erik Naggum: Re: Is there any alternative to MULE? 9. 1998-02-16 John Clews: (TC304.1487) Script summary: status of ISO/IEC 10646 10. 1998-03-10 Alain LaBonté : Importance des noms des caractères 11. 1998-03-10 Alain LaBonté : Noms de caractères -- subtilités 12. 1998-03-24 Alain LaBonté : Re: Erreurs de nomenclature dans Windows NT4 13. 1998-05-05 Alain LaBonté : Codage de la langue dans le jeu universel de car ../charsets/ucs/rmail/français 1. 1996-05-11 Alain LaBont/e'/: Re: French names for 10646 2. 1996-10-24 Alain LaBont/e'/: Quelques adresses pour les références à mes tr 3. 1998-04-29 Alain LaBonté : Use of the Glyphs associated to the Unicode char 4. 1998-09-17 Alain LaBonté : Character identifiers, names and mnemonicity -- 5. 1998-12-17 François Pinard: Tables française pour les noms JUC 6. 3900-03-21 François Pinard: Questions au sujet de `NomsSeulsfinal.lst' 7. 3900-03-21 François Pinard: Questions au sujet de `NomsSeulsfinal.lst' (bis ../charsets/ucs/rmail/roman 1. 1998-11-30 Roman Czyborra: finished thesis on Unicode in Unix ../charsets/ucs/rmail/spreading 1. 1996-01-05 François Pinard: Re: 8bit clean perl? (fwd) ../charsets/ucs/rmail/surf 1. 1996-10-28 unicode@Unicode.ORG: Repertoires of European Letters: Draft Four 2. 1997-01-09 Michael Everson: (none) 3. 1999-02-15 umavs@ca.ibm.com: FYI: Draft Irish comments on JTC1 N5698 ../charsets/ucs/rmail/tools-gscript 1. 1999-07-13 Tom Tromey: good news for internationalization ../charsets/ucs/rmail/tools-mule 1. 1999-07-28 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: Re: FAQ: UNI ../charsets/ucs/rmail/tools-recode 1. 1995-04-20 Markus Kuhn (CIP 90): ISO 10646 & recode concept 2. 1997-08-01 Martin J. Duerst: Re: librecode, libc, gettext 3. 1997-11-25 Markus Kuhn: Re: ISO 10646 & recode concept ../charsets/ucs/rmail/tools-ssam-ure 1. 1997-11-22 François Pinard: Re: unicode and gnu? ../charsets/ucs/rmail/tools-tcs 1. 1993-02-09 andrew@research.att.com: (none) 2. 1993-02-14 Francois Pinard: tcs, recode 3. 1993-02-20 Francois Pinard: Legaleese 4. 1993-12-11 Francois Pinard: GNU recode 3.2.9 5. 1993-12-12 Per Abrahamsen: Re: GNU recode 3.2.9 6. 1999-03-30 Andreas Schwab: Fix for AtariST encoding 7. 1999-12-16 Oskar Bartenstein: Re[2]: postprocessing filter for archive file ../charsets/ucs/rmail/tools-ucs 1. 1993-08-26 Hermann Hueni: Re: WANTED: recode extension to ROMAN8 (HP) char ../charsets/ucs/rmail/unicode 1. 1994-10-02 Andries.Brouwer%cwi.nl@Lightning.McRCIM.McGill.EDU: Re: recode 2. 1994-12-21 David Goldsmith: Unicode Web Page Now Available! 3. 1996-03-11 Hart, Edwin F.: Unicode* Version 2.0 and new members of 4. 1996-06-10 by way of everson@indigo.ie (Michael Everson): (i18n.331) "News" 5. 1996-08-19 François Pinard: (none) 6. 1996-09-30 Markus G. Kuhn: Unicode 2.0 available now!!! 7. 1996-10-06 Alain LaBont/e'/: Différences entre UNICODE et le JUC et implant 8. 1996-10-07 unicode@Unicode.ORG: UNICODE, SGML and HEBREW 9. 1996-10-15 unicode@Unicode.ORG: How to order Version 2.0 10. 1996-11-22 news@Unicode.ORG: Web Update 11. 1996-11-28 unicode@Unicode.ORG: Re: HTML - i18n / NCR & charsets 12. 1997-01-16 unicode@Unicode.ORG: Re: unicode <-> hex converter 13. 1997-11-26 Andreas Dietrich: Re: Cyrillic cp1251 in recode 14. 1998-09-10 Gisle Aas: Re: "Coding system"? Eh? 15. 1998-09-11 François Pinard: Re: "Coding system"? Eh? 16. 1998-11-09 Kenneth Whistler: (TC304.2066) FW: (TC304.2065) PT Guide on Char 17. 1999-10-13 François Pinard: Re: Making message/rfc822 boundaries visible 18. 1999-09-15 François Pinard: Projet de Loic 19. 1999-09-15 François Pinard: Message de Loic 20. 1999-09-15 François Pinard: =?iso-8859-1?q?R=E9ponse_=E0?= Loic 21. 1999-09-15 François Pinard: Autre =?iso-8859-1?q?r=E9ponse?= 22. 1999-09-15 François Pinard: =?iso-8859-1?q?Re-r=E9ponse?= de =?iso-8859-1?q 23. 1999-09-08 loic@ceic.com: [hshih@us.ibm.com: [sw-i18n-l10n] Re: Unicode: To 24. 1999-09-07 Bruno Haible: Re: [loic@ceic.com] Unicode: Toward a standard lib 25. 1999-09-07 loic@ceic.com: Unicode: Toward a standard library 26. 1999-09-07 loic@ceic.com: Latest regex implementation 27. 1999-09-10 Henry Spencer: Re: Latest regex implementation 28. 1999-09-06 loic@ceic.com: recode-3.5 & libunicode 29. 1999-09-06 François Pinard: Re: recode-3.5 & libunicode 30. 1999-09-07 loic@ceic.com: Re: recode-3.5 & libunicode 31. 1999-08-18 Markus Kuhn: Normalization Form KC for Linux 32. 1999-08-18 Mark H. David: Re: Normalization Form KC for Linux 33. 1999-08-18 Mark Davis: Re: Normalization Form KC for Linux 34. 1999-11-25 Samuel Tribehou: Unicode-Howto 35. 3900-02-12 François Pinard: Re: [SLE] Anyone using unicode? 36. 3900-02-12 François Pinard: Re: [SLE] Anyone using unicode? 37. 1999-08-04 François Pinard: Re: TP-Robot hello-1.3.23.lv.po 38. 1998-05-06 Gisle Aas: Re: Help : Generating a Unicode file 39. 1998-08-05 Alain LaBonté : Re: Unicode Converter 40. 3900-02-28 Aharon Robbins: [gnits] unicode 3.0 standard out 41. 3900-03-08 François Pinard: Re: does/will python support unicode? 42. 3900-03-14 Bruno Haible: using iconv for conversion from/to Unicode 43. 3900-03-17 François Pinard: Re: (TC304.2262) (CEN/TC304 N936) Lithuanian an 44. 3900-03-18 François Pinard: (TC304.2265) (CEN/TC304 N936) Lithuanian and Id 45. 1999-08-10 Andy Robinson: Re: International characters and Python's string 46. 3900-03-01 Bill Tutt: [String-SIG] Posible way to deal with Unicode 47. 3900-03-02 M.-A. Lemburg: Re: [String-SIG] Posible way to deal with Unicode 48. 3900-03-02 Bill Tutt: RE: [String-SIG] Posible way to deal with Unicode 49. 3900-03-03 Bill Tutt: RE: [String-SIG] Posible way to deal with Unicode 50. 3900-03-03 Bill Tutt: RE: [String-SIG] Posible way to deal with Unicode 51. 3900-03-03 Bill Tutt: RE: [String-SIG] Posible way to deal with Unicode 52. 1999-08-24 Fred L. Drake, Jr.: Re: GNU recode 53. 1998-12-20 Mark Hammond MHammond@skippinet.com.au: [String-SIG] Implementin 54. 1998-12-23 Daniel Biddle deltab@ps.cus.umist.ac.uk: [String-SIG] Implementi 55. 1998-03-12 Perry Stoll pas@xis.xerox.com: [STRING-SIG] Unicode sizes and by 56. 1998-12-22 Greg Stein gstein@lyra.org: [String-SIG] String-tagging (was: Im 57. 1999-10-14 François Pinard: [=?iso-8859-1?q?Fran=E7ois?= Pinard Reuters format? 3. ---- -- -- C.Douglas O'Brien [SMTP:dobrien@idon.com]: RE: Necessity of a be 4. 1998-12-22 Martin von Loewis martin@mira.isdn.cs.tu-berlin.de: [String-SIG] ../charsets/ucs/rmail/utf-32 1. 1999-04-07 Hart, Edwin F.: RE: UTF-32 ../charsets/ucs/rmail/utf-7 1. 1998-09-11 François Pinard: Re: "Coding system"? Eh? 2. 3900-03-29 =?utf-7?Q?Kevin_Jackson?=: [SLE] =?utf-7?Q?RE=3A_+AFs-SLE+AF0-_G 3. 3900-05-17 Z 3 Penguin: accesing socket at a lower level? ../charsets/ucs/rmail/utf-8 1. 1994-05-05 Martin J. Duerst: Re: What is status of internationalization of 2. 1995-09-19 François Pinard: Re: Emacs C-q NNN 3. 1996-03-27 Francois Yergeau: UTF-8 I-D submitted 4. 1996-05-11 Alain LaBont/e'/: Équivalences UTF-8 - Impact d'UTF-8, repli d'U 5. 1997-01-14 Alistair Crooks: ssam-1.4 and ure-2.5 6. 1997-10-28 Martin J. Dürst: Re: A couple of bugs in Gnus-mule : summary buf 7. 1997-11-22 François Pinard: Re: Movement for having Internet addresses usin 8. 1997-12-10 Francois Yergeau: Re: Movement for having Internet addresses usi 9. 1998-03-02 Alain LaBonté : Re: origine de ces nouveaux «é», è, à ...? 10. 1998-10-29 Markus Kuhn: Free X11 Unicode terminal font available 11. 1998-11-02 Paul Eggert: Re: UTF-8 in gas 12. 1998-11-02 Paul Eggert: Re: UTF-8 in gas 13. 1998-11-04 Paul Eggert: Re: UTF-8 in gas 14. 1998-11-27 Alain LaBonté : Qu'est-ce que l'ASCII (bis) et courriel de l'ave 15. 1998-12-02 Richard Coleman: Re: Info on Internationalization 16. 1998-12-03 Shenghuo ZHU: Re: Info on Internationalization 17. 1998-12-06 François Pinard: Re: Info on Internationalization 18. 1999-02-08 François Pinard: Re: More charset things 19. 1999-02-08 François Pinard: Re: More charset things 20. 1999-02-09 Lars Magne Ingebrigtsen: Re: More charset things 21. 1999-02-09 François Pinard: Re: More charset things 22. 1999-02-09 Steinar Bang: Re: More charset things 23. 1999-02-14 Steinar Bang: UTF-8 (Was: More charset things) 24. 1999-12-15 Earl Hood: Re: postprocessing filter for archive files 25. 1999-12-06 ADEMIRNET@aol.com: =?ISO-8859-1?Q?Bulletin=20N=B014=20Ademirnet= 26. 1999-08-04 François Pinard: UTF-8 in GNU 27. 1999-07-09 Jungshik Shin: Re: X11 UTF-8 and Unicode support 28. 1998-12-21 Paul Prescod paul@prescod.net: [String-SIG] Implementing Unicode 29. 3900-03-31 ADEMIRNET@aol.com: =?ISO-8859-1?Q?Bulletin=20ademirnet=20N16=20= 30. 3900-03-31 ADEMIRNET@aol.com: =?ISO-8859-1?Q?Bulletin=20ademirnet=20N16=20= 31. 3900-04-26 Karl EICHWALDER: Re: UTF-8 32. 3900-05-03 ADEMIRNET@aol.com: =?ISO-8859-1?Q?Bulletin=20Ademirnet=20N=B017= 33. 3900-05-12 Fredrik Lundh: Re: Convert Latin-1 to UTF-8 ../charsets/ucs/rmail/utf-mnemonics 1. 1998-07-18 Markus Kuhn: (TC304.1872) German reaction to Enquiry among membe ../charsets/ucs/rmail/xterm 1. 1995-11-22 Gary Capell: Unicode/UTF text editor: wily 0.9.8 (beta) 2. 1996-06-07 Arnold D. Robbins: Re: terminal emulator recommendation? 3. 1996-07-09 Marc Feeley: 9term 4. 1996-07-25 Marc Feeley: 9term 5. 1999-06-09 Markus Kuhn: Xterm now has UTF-8 support 6. 1998-11-22 Markus Kuhn: Re: Free X11 Unicode terminal font available 7. 1998-11-25 Markus Kuhn: Re: Free X11 Unicode terminal font available 8. 1998-11-22 Markus Kuhn: Re: Free X11 Unicode terminal font available 9. 1998-11-25 Markus Kuhn: Re: Free X11 Unicode terminal font available recode-3.6/COPYING0100644000000000000000000004311007142144410012351 0ustar rootroot GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program 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 of the License, or (at your option) any later version. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. recode-3.6/ChangeLog0100644000000000000000000003025407224652367013115 0ustar rootroot2001-01-03 Bruno Haible * configure.in: Version 3.6. 2001-01-03 Bruno Haible * configure.in: Test for memory.h and strndup. 2000-12-06 Bruno Haible * configure.in: Remove determination of compile-time DEFAULT_CHARSET. * README: Remove section about DEFAULT_CHARSET at installation time. 2000-12-05 Bruno Haible * configure.in: Call AC_CANONICAL_HOST, jm_LANGINFO_CODESET, jm_GLIBC21. Check for locale.h, stddef.h, stdlib.h, mbrtowc, wcrtomb, setlocale. 2000-08-30 Bruno Haible * Makefile.am (ACLOCAL): New definition. * aclocal.sh: New file. * Makefile.am (EXTRA_DIST): Add it. 2000-06-28 François Pinard * configure.in: Version 3.5e. * Makefile.am (POTFILES): Rename debug.c to testdump.c. 2000-06-27 François Pinard * configure.in: Check for struct utimbuf. Reported by Jim Meyering and Tom Hageman. * configure.in: Use ad_AC_PROG_FLEX instead of AM_PROG_LEX. Reported by Akim Demaille. 2000-05-07 François Pinard * PATCHES-AC: New for Autoconf 2.14a. * Makefile.am (EXTRA_DIST): Adjusted. 2000-04-25 François Pinard * acconfig.h: Remove LIBICONV_PLUG. Reported by Bruno Haible. 2000-03-28 François Pinard * configure.in: Version 3.5d. 2000-03-28 François Pinard * recode.spec: New file. * Makefile.am (EXTRA_DIST): Adjusted. 2000-03-21 François Pinard * acconfig.h: Define LIBICONV_PLUG. 2000-01-28 François Pinard * Makefile.am (install-stow): New goal. 2000-01-27 François Pinard * configure.in (ALL_LINGUAS): Add gl. 1999-12-28 François Pinard * configure.in: Remove --with-libiconv test. (AC_OUTPUT): Produce libiconv/Makefile. * Makefile.am (SUBDIRS): Add libiconv. 1999-12-24 François Pinard * configure.in: Version 3.5c. 1999-12-20 François Pinard * configure.in: Version 3.5b. * configure.in: Add --with-libiconv. * acconfig.h: Document WITH_LIBICONV. 1999-12-19 François Pinard * Makefile.am (BABYL): Adjusted. 1999-12-14 François Pinard * configure.in (LIBOBJS): Manage for ANSI2KNR. (LTLIBOBJS): Adjusted to fit the style of the above. Reported by Jim Meyering. * configure.in: Delete AC_PROG_AWK. * Makefile.am, acconfig.h, configure.in: Adapt to the gettext scheme used in wdiff. * i18n: New name for directory po. * intl: Deleted directory. * configure.in: Use AC_FUNC_ALLOCA. * acinclude.m4: New file, containing file libtool.m4 from the libtool distribution, which suggest that it should be distributed. 1999-12-12 François Pinard * configure.in: Replace strtol and strtoul only when missing. Reported by Tom Hageman. 1999-11-27 François Pinard * configure.in (ALL_LINGUAS): Add it. 1999-06-22 François Pinard * configure.in (ALL_LINGUAS): Add el. 1999-06-15 François Pinard * configure.in: Substitute LIBOBJS, so jm_FUNC_MALLOC and jm_FUNC_REALLOC has some chance to work. Reported by Alexandre Oliva. 1999-06-02 François Pinard * configure.in: Version 3.5a. 1999-05-31 François Pinard * configure.in: Version 3.5. 1999-04-01 François Pinard * configure.in: Version 3.4r. 1999-01-07 François Pinard * configure.in: Version 3.4q. 1999-01-05 François Pinard * configure.in: Version 3.4p. 1998-12-31 François Pinard * configure.in: Accept defining DEFAULT_CHARSET to the empty string, when it is set but empty at configure time. This is the way to inhibit any usual charset. 1998-12-18 François Pinard * configure.in: Version 3.4o. 1998-12-14 Andreas Schwab * configure.in: Remove command to create po/Makefile, already done by AM_WITH_NLS. 1998-12-14 François Pinard * configure.in: Version 3.4n. 1998-11-24 François Pinard * configure.in: Check for inline. 1998-11-23 François Pinard * configure.in: Version 3.4m. 1998-11-13 François Pinard * PATCHES-AM: Deleted. * Makefile.am (EXTRA_DIST): Adjusted. 1998-10-28 François Pinard * configure.in: Version 3.4l. 1998-10-20 François Pinard * configure.in: Make tests/atconfig instead of tests/testsuite. Do not make tests/test-one. Use AT_CONFIG instead of fp_PROG_ECHO. 1998-10-13 François Pinard * configure.in: Version 3.4k. * configure.in (AC_OUTPUT): Prepare tests/test-one and tests/testsuite instead of tests/preset. Make them executable. 1998-09-30 François Pinard * PATCHES-AC, PATCHES-AM: New names for AC-PATCHES and AM-PATCHES. * PATCHES-LT: New file. * Makefile.am (EXTRA_DIST): Adjusted. 1998-08-24 François Pinard * Makefile.am (BABYL): Adjusted after last reorganisation, here. 1998-06-22 François Pinard * COPYING-LIB: New name for COPYING.LIB, around Automake with --gnits not allowing COPYING.LIB. * Makefile.am (EXTRA_DIST): Distribute it. 1998-06-21 François Pinard * configure.in: Remove AC_LINK_FILES, as AM_GETTEXT does it now. 1998-04-22 François Pinard * AC-PATCHES: Revised patches for Autoconf 2.12. * AM-PATCHES: Patches for Automake 1.3. * Makefile.am: Distribute them. 1998-03-31 François Pinard * configure.in: Use jm_FUNC_MALLOC and jm_FUNC_REALLOC. * acconfig.h: Document malloc and realloc. * Makefile.am: Define ACLOCAL_AMFLAGS. * acinclude.m4: Deleted. * configure.in (AC_OUTPUT): Substitute m4/Makefile. * Makefile.am (SUBDIRS): Include m4. * configure.in: Use AM_PROG_LEX instead of AC_PROG_LEX. 1998-03-09 François Pinard * AC-PATCHES: New file, from elsewhere. * PORTS: Deleted. Integrated into contrib/README. * Makefile.am (EXTRA_DIST): Adjusted. 1998-01-08 François Pinard * acinclude.m4 (fp_OS_MICROSOFT): New. * configure.in: Maybe select IBM-PC as the default default charset. 1997-12-25 François Pinard * configure.in: Do not check for the pipe function. 1997-12-05 François Pinard * configure.in (AC_OUTPUT): Create contrib/Makefile. * Makefile.am (SUBDIRS): Visit the contrib/ subdirectory. 1997-11-24 François Pinard * Makefile.am (AUTOMAKE_OPTIONS): Replace gnits by gnu, so COPYING.LIB gets distributed. 1997-11-16 François Pinard * configure.in: Check for stdbool.h. 1997-10-05 François Pinard * configure.in: Add a missing AC_LINK_FILES for gettext. Reported by Alain Magloire, Eric Backus, Jean-Claude Nadeau, Niels Kr. Bech Jensen and Santiago Vila Doncel. 1997-09-28 François Pinard * PORTS: New file. * Makefile.am (EXTRA_DIST): Adjusted. 1997-09-26 François Pinard * configure.in: Remove popen support. 1997-09-24 François Pinard * configure.in: Add AM_PROG_LIBTOOL, delete AC_PROG_RANLIB. Define LTALLOCA and LTLIBOBJS. 1997-07-30 François Pinard * configure.in: Check for unistd.h and utime.h. 1997-04-01 François Pinard * configure.in (ALL_LINGUAS): Add da. 1997-02-26 François Pinard * missing: New file, from elsewhere. 1997-02-25 François Pinard * configure.in: Use AM_CONFIG_HEADER instead of AC_CONFIG_HEADER, AM_GNU_GETTEXT instead of ud_GNU_GETTEXT. Delete README-alpha code, Automake handles it now. * acinclude.m4: Replaced whole, from elsewhere. * Makefile.am (EXTRA_DIST): Leave README-alpha to Automake. * configure.in (ALL_LINGUAS): Add pt. 1997-02-12 François Pinard * configure.in: Simplify AC_OUTPUT, per new Autoconf and Automake. 1996-11-08 François Pinard * configure.in: Switch to the letter scheme for pretests. 1996-09-20 François Pinard * configure.in (ALL_LINGUAS): Remove pt, disclaimer not received. 1996-09-03 François Pinard * configure.in (AC_OUTPUT): Prepare tests/Makefile and tests/preset. * Makefile.am (SUBDIRS): Add tests/. 1996-08-27 François Pinard * configure.in: Distribute README-alpha. (ALL_LINGUAS): Add `pl', `sl' and `sv'. * Makefile.am (EXTRA_DIST): Add acinclude.m4 for the time being. 1996-08-24 François Pinard * Makefile.am: New file, replacing Makefile.in. 1996-08-23 François Pinard * configure.in: Use AM_ macros more than fp_ macros. 1996-03-06 François Pinard * configure.in (ALL_LINGUAS): Add `es'. 1996-01-07 François Pinard * acconfig.h: Document HAVE_STPCPY. 1995-07-23 François Pinard * configure.in, acconfig.h: Adapt for GNU gettext 0.8. 1995-07-10 François Pinard Distribution unflattened, for using GNU gettext. * Makefile.in: New file. * configure.in: Substitute all Makefile's. 1995-06-22 François Pinard * configure.in (LINGUAS): Adjusted for pt.po. * Previous history before unflattening, from version 3.0 and up: All kept in src/ChangeLog. * Previous history as saved from some oldish recode.texi: August 1988: Some tentative new charsets for TeX and texinfo, steps merged and made more uniform, usage of Unix pipes instead of translating chunks one at a time. Loïc Dachary first exposed me to Easy French. Claude Goutier, through numerous discussions, was helpful in evaluating various work hypotheses. July 1988: Ported to BSD Unix, bent to meet most GNU standards. December 1987: Ported to Microsoft C, tables frozen instead of being computed by auxiliary programs at installation time, translation sequences sought at execution time instead of built-in in the program. July 1985: Adapted in Turbo-Pascal on an IBM-PC, translation tables completely redesigned. Dropping of CAF, RUB and INT support; ASCII now used as a common base. * Previous history as found in `secours,/s=codes,recode' output: March 1983: Version 2.0. Merge of features from all versions. New extensive documentation, in French. Handling of French for 95 character CDC printers. November 1982: Version 1.0. Modified to handle NOS (NOS 6/12 code), INT (Intercom 8/12 code), RUB (7.5 characters per word, for tapes), support of EBCDIC translations. Restructuration into a few main modules, one of which is CODES. Made in preparation for the Cray-1 at Canadian Meteorological Center. December 1981: Revision of comparison routines for French processing, several suggestions from Francine Ouellette. December 1980: A few speedups and improvements. My own definition of extended ASCII, quite compatible with various usages at Université de Montréal. July 1980: Module GEN broken into several modules: ASC (ascii), BNG (bang-bang), CAF (format for CAFÉ project), DPC (usual display code), and TEL (TELUM packing). Made in context of some research for the PPMF group and the BLOPS project. January 1980: Unified module named GEN and program named GENCOP, in Cyber Pascal and assembler, partly inspired from NOS/BE Record Manager, partly from Claude Schnéegans' PESTUM protocol. Before 1980: Several independant programs, most in Cyber COMPASS assembler, to handle code conversions. A few tries to get some useful, unified, general approach, but with limited success. recode-3.6/INSTALL0100644000000000000000000001722707142144412012363 0ustar rootrootBasic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. recode-3.6/Makefile.am0100644000000000000000000000305107213515614013361 0ustar rootroot# Main Makefile for GNU recode. # Copyright © 1992,93,94,95,96,97,98,99,00 Free Software Foundation, Inc. # François Pinard , 1992. # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AUTOMAKE_OPTIONS = gnits ACLOCAL = ./aclocal.sh @ACLOCAL@ ACLOCAL_AMFLAGS = -I m4 BABYL = ../rmail/* ../*/rmail/* ../*/*/RMAIL ../*/*/rmail/* EXTRA_DIST = COPYING-LIB PATCHES-AC rebox.el recode.spec aclocal.sh SUBDIRS = m4 doc lib libiconv i18n src tests contrib POTFILES = src/main.c src/names.c src/outer.c src/recode.c \ src/request.c src/strip-data.c src/task.c src/testdump.c all-local: $(srcdir)/stamp-pot $(srcdir)/stamp-pot: $(POTFILES) @echo "$(POTFILES)" > $@ install-stow: $(MAKE) install \ prefix=$(exec_prefix)/stow/$(PACKAGE)-$(VERSION) \ exec_prefix=$(exec_prefix)/stow/$(PACKAGE)-$(VERSION) rm -f $(exec_prefix)/stow/$(PACKAGE)-$(VERSION)/info/dir cd $(exec_prefix)/stow && stow $(PACKAGE)-$(VERSION) recode-3.6/NEWS0100644000000000000000000003066507224444524012042 0ustar rootrootFree recode NEWS - User visible changes. -*- outline -*- (allout) Copyright © 1993-1999, 2000, 2001 Free Software Foundation, Inc. * Version 3.6 - François Pinard, Bruno Haible, 2001-01. .* General changes . + The recode manual is now indexed, by charset, by concept, etc. . + Program messages are also available in Greek, Gallicean and Italian. . + Bruno Haible's nice portable iconv library has been integrated. . + RFC 1345 tables and French character names have been updated. . + The Texinfo charset has been refreshed, and made reversible. .* New charsets (most from libiconv) . + Japanese EUC-JP (csEUCPkdFmtJapanese, EUC_JP, Extended_UNIX_Code_Packed_Format_for_Japanese); ISO-2022-JP (csISO2022JP); ISO-2022-JP-1; ISO-2022-JP-2 (csISO2022JP2); JIS_C6220-1969-ro (csISO14JISC6220ro, ISO646-JP, iso-ir-14, jp); JIS_X0201 (csHalfWidthKatakana, JIS0201, JISX0201-1976, JISX0201.1976-0, X0201); JIS_X0208 (csISO87JISX0208, ISO-IR-87, JIS0208, JIS_X0208.1983-0, JIS_X0208.1983-1, JIS_X0208-1990-0, JIS_X0208.1983-1, X0208); JIS_X0212 (csISO159JISX02121990, ISO-IR-159, JIS0212, JIS_X0212.1990-0, JIS_X0212-1990, X0212); SJIS (csShiftJIS, MS_KANJI, SHIFT-JIS). . + Chinese BIG5 (BIG-5, BIG-FIVE, BIGFIVE, CN-BIG5 csBig5); BIG5HKSCS; EUC-CN (CN-GB, csGB2312, EUC_CN, GB2312); EUC-TW (csEUCTW, EUC_TW); GB18030; HZ (HZ-GB-2312); ISO-2022-CN (csISO2022CN); ISO-2022-CN-EXT; GB_1988-80 (cn, csISO57GB1988, ISO646-CN, iso-ir-57); GB_2312-80 (CHINESE, csISO58GB231280, GB2312.1980-0, ISO-IR-58); ISO-IR-165 (CN-GB-ISOIR165). . + Korean JOHAB (CP1361); EUC-KR (csEUCKR, EUC_KR); GBK (CP936); ISO-2022-KR (csISO2022KR); KSC_5601 (CP949, csKSC56011987, ISO-IR-149, KOREAN, KSC5601.1987-0, KS_C_5601-1987, KS_C_5601-1989, KSX1001:1992). . + Vietnamese (independently of libiconv) TCVN; VIQR; VISCII; VNI; VPS. . + Other languages ARMSCII-8; Georgian-Academy; Georgian-PS; WINDOWS-874 (CP874); MuleLao-1; CP1133 (IBM-CP1133); CP1258 (WINDOWS-1258); TIS-620 (ISO-IR-166, TIS620, TIS620.2529-1, TIS620-0, TIS620.2533-0, TIS620.2533-1). . + Apple specifics MacArabic; MacCentralEurope; MacCroatian; MacCyrillic; MacGreek; MacHebrew; MacIceland; MacRomania; MacThai; MacTurkish; MacUkraine . + Unicode JAVA; UCS-2-INTERNAL; UCS-2LE (UnicodeLITTLE); UCS-2-SWAPPED; UCS-4BE; UCS-4-INTERNAL; UCS-4LE; UCS-4-SWAPPED; UTF-16BE; UTF-16LE. . + Others CP932; CP949 (UHC); CP950; CP866 (866, csIBM866, IBM866). ISO-8859-16 (ISO-IR-226, ISO_8859-16:2000). . + Recode internal :libiconv: (:) [so option -x: avoids going through libiconv] .* New aliases (from libiconv) [list to be revised] csASCII (for ANSI_X3.4-1968); csHPRoman8 (for hp-roman8); csISOLatin1 (for ISO-8859-1); csISOLatin2 (for ISO-8859-2); csISOLatin3 (for ISO-8859-3); csISOLatin4 (for ISO-8859-4); csISOLatin5 (for ISO-8859-9); csISOLatin6 and ISO_8859-10:1992 (for ISO-8859-10); csISOLatinArabic (for ISO-8859-6); csISOLatinCyrillic (for ISO-8859-5); csISOLatinGreek (for ISO-8859-7); csISOLatinHebrew (for ISO-8859-8); csKOI8R (for KOI8-R); csPC850Multilingual (for IBM850); csUCS4 (for ISO-10646-UCS-4); csUnicode, csUnicode11, UCS-2BE, UnicodeBIG (for ISO-10646-UCS-2); csUnicode11UTF7 (for UNICODE-1-1-UTF-7); csVISCII and VISCII1.1-1 (for VISCII); ISO-IR-179 (for ISO-8859-13); csMacintosh and MacRoman (for macintosh); TCVN5712-1, TCVN5712-1:1993 and TCVN-5712 (for TCVN). .* New surfaces tree (experimental). * Version 3.5 - François Pinard, 1999-05. .* Incompatible changes . + A double dot `..' should now be used instead of a colon `:'. . + Option --force (-f) is needed to pursue recoding despite errors. . + There is no more quoting for special characters within charsets names. . + Auto check (`-a') and popen (`-o') options have been withdrawn. . + Some charsets and aliases were deleted, see `Charsets & aliases' below. .* Extended features . + Program messages are available in localised form for many languages. . + Long character names are available in French, if LANGUAGE is set to `fr'. . + A new request syntax allows for recode chaining, and for surfaces. . + Option --header-file (-h) accepts a language parameter, and Perl is new. . + Full charset listings now show the UCS-2 value for characters. . + Option --known=PAIRS (-k) also accepts octal and hexadecimal numbers. . + Option --list (-l) better sorts charsets and aliases, also fully written. . + Charset `RFC1345' implements mnemonic+ascii+38, and is now reversible. . + HTML is not limited anymore to Latin-1, HTML 4.0 entities are supported. .* New features . + Euro support. . + Updated RFC 1345 set of tables, from Keld Simonsen. . + Some African charsets and transliterated forms. . + Conversions for ISO 10646 and Unicode. . + Combining or explosion of UCS-2 diacriticized characters and ligatures. . + Implementation of surfaces, see `Surfaces & aliases' below. . + Mixed mode for recoding only comments and strings in C sources or PO files. . + A stand-alone recoding library gets installed, often as a shared library. . + Option --find-subsets (-T) lists charsets which are subsets of another. . + The library may generate testing data, and study character frequencies. .* Charsets & aliases . + New ISO 10646 and Unicode charsets . - combined-UCS-2: pseudo-charset. . - count-characters: pseudo-charset. . - dump-with-names: pseudo-charset. . - ISO-10646-UCS-2 (UNICODE-1-1, BMP, rune, u2). . - ISO-10646-UCS-4 (10646, ISO-10646, UCS-4, u4). . - UNICODE-1-1-UTF-7 (TF-7, u7). . - UTF-8 (UTF-2, UTF-FSS, FSS_UTF, TF-8, u8). . - UTF-16 (Unicode, TF-16, u6). . + RFC 1345.bis matters . - Deleted charsets dk-us, us-dk (because of &duplicate which `recode' does not handle yet). . - New charsets baltic (alias is iso-ir-179); CP1250 (1250, ms-ee, windows-1250); CP1251 (1251, ms-cyrl, windows-1251); CP1252 (1252, ms-ansi, windows-1252); CP1253 (1253, ms-greek, windows-1253); CP1254 (1254, ms-turk, windows-1254); CP1255 (1255, ms-hebr, windows-1255); CP1256 (1256, ms-arab, windows-1256); CP1257 (1257, WinBaltRim, windows-1257); CWI (CWI-2, cp-hu); EBCDIC-IS-FRISS (friss); GOST_19768-87 with aliases of previous GOST_19768-74; IBM256 (256, CP256, EBCDIC-INT1); IBM875 (875, CP875, EBCDIC-Greek); IBM1004 (1004, CP1004, os2latin1); IBM1047 (1047, CP1047); ISO-8859-13 (ISO_8859-13:1998, iso-baltic, iso-ir-179a, l7, latin7); ISO-8859-14 (ISO_8859-14:1998, iso-celtic, iso-ir-199, l8, latin8); ISO-8859-15 (ISO_8859-15:1998, iso-ir-203, l9, latin9); KOI-7; KOI-8 (GOST_19768-74); KOI8-R; KOI8-RU; KOI8-U; macintosh_ce (macce); mac-is; NeXTSTEP (next) yet previous `recode' had it outside RFC 1345. . - Alias promoted to charset (with previous charset becoming alias) ISO-646.basic (with ISO-646.basic:1983); ISO-646.irv (ISO-646.irv:1983); ISO_5427-ext (ISO_5427:1981); ISO_5428 (ISO_5428:1980); ISO-8859-1 (ISO_8859-1:1987); ISO-8859-2 (ISO_8859-2:1987); ISO-8859-3 (ISO_8859-3:1988); ISO-8859-4 (ISO_8859-4:1988); ISO-8859-5 (ISO_8859-5:1988); ISO-8859-6 (ISO_8859-6:1987); ISO-8859-7 (ISO_8859-7:1987); ISO-8859-8 (ISO_8859-8:1988); ISO-8859-9 (ISO_8859-9:1989); ISO-8859-10 (latin6); NC_NC00-10 (NC_NC00-10:81); sami (latin-lap). . - New aliases 037 (for charset IBM037); 038 (IBM038); 273 (IBM273); 274 (IBM274); 275 (IBM275); 278 (IBM278); 280 (IBM280); 281 (IBM281); 284 (IBM284); 285 (IBM285); 290 (IBM290); 297 (IBM297); 367 (ANSI_X3.4-1968); 420 (IBM420); 423 (IBM423); 424 (IBM424); 500, 500V1 (IBM500); 819 (ISO-8859-1); 864 (IBM864); 868 (IBM868); 870 (IBM870); 871 (IBM871); 880 (IBM880); 891 (IBM891); 903 (IBM903); 905 (IBM905); 912, CP912, IBM912 (ISO-8859-2); 918 (IBM918); 1026 (IBM1026); ECMA-113, ECMA-113:1986 (ECMA-Cyrillic); GOST_19768-74 (KOI8); ISO_8859-N (ISO-8859-N) for N = 1 through 10 and 13 through 15; ISO_8859-10:1993 (ISO-8869-10); iso-ir-170 (INVARIANT); KOI8_L2 (CSN_369103); pclatin2, pcl2 (IBM852); SS636127 (SEN_850200_B). . + New African charsets AFRL1-101-BPI_OCIL (t-francais, t-fra); AFRFUL-102-BPI_OCIL (bambara, bra, ewondo, fulfulde); AFRFUL-103-BPI_OCIL (t-bambara, t-bra, t-ewondo, t-fulfulde); AFRLIN-104-BPI_OCIL (lingala, lin, sango, wolof); AFRLIN-105-BPI_OCIL (t-lingala, t-lin, t-sango, t-wolof). . + Extra miscellaneous charsets KEYBCS2 (Kamenicky); CORK (T1); KOI-8_CS2. . + New HTML pseudo-charsets HTML_1.1 (h1); HTML_2.0 (RFC 1866, 1866, h2); HTML-i18n (RFC 2070); HTML_3.2 (h3) reimplemented; HTML_4.0 (h4, HTML, h); deleted aliases HTF, 8859, ISO 8859, Entities, SGML, WWW, w3. .* Surfaces & aliases Base64 (64, b64); Quoted-Printable (qp, Quote-Printable); 21-Permutation (swabytes); 4321-Permutation; CR; CR-LF (cl); Decimal-1 (d, d1); Decimal-2 (d2), Decimal-4 (d4); Hexadecimal-1 (x, x1); Hexadecimal-2 (x2); Hexadecimal-4 (x4); Octal-1 (o, o1); Octal-2 (o2); Octal-4 (o4). data; test7; test8; test15; test16. * Version 3.4 - François Pinard, 1994-11. .* Charset HTML is new, it handles `&...;' sequences for Latin-1. .* Charset AtariST handling is more general, --list may be used with it. .* Charset ASCII-BS overstriking has been extended, mainly for German. .* Charset RFC1345 may be a goal, to debug or study RFC 1345 short names. .* Charset names have been revised. Note that nextstep is now NeXT. .* Option --force (-f) is accepted, but does not yet protect reversibility. .* Option --quiet or --silent (-q) silences irreversible recoding messages. .* Option --known=PAIRS (-k) helps searching through recodings. .* Option --sequence=pipe (-p) does not fall back on -o anymore. .* Option --auto-check may narrow its study around one particular charset. .* An MSDOS port is available, check ftp.iro.umontreal.ca in pub/gnuish. .* Compilation should now succeed on OS/2 EMX. Thanks to Kai Uwe Rommel. .* Program initialization is almost three times faster on average. .* Corrected reported bugs, added small improvements, some aesthetic. * Version 3.3 - François Pinard, 1993-12. .* Charsets atarist, ebcdic-ccc, ebcdic-ibm and nextstep have been added. .* Also, most RFC 1345 charsets and aliases are handled. That's a bunch! .* Old ascii disappears because of RFC 1345's ascii, use ascii-bs instead. .* Old maci disappears because of RFC 1345's macintosh, use applemac instead. .* Charsets cccascii and cdcascii disappear, use ebcdic-ccc and ebcdic instead. .* Recoding between latin1, ibmpc and applemac is (almost) reversible. .* The texinfo documentation has been reorganized, this to be continued. .* Long options are accepted, charset names may be abbreviated. .* Option --list (-l) displays charsets, aliases and contents in many formats. .* Option --strict (-s) asks for stricter, non-reversible recodings. .* Option --graphics (-g) approximates ibmpc rulers with ASCII graphics. .* Option --header (-h) produces C source for many recoding tables. .* Option --auto-check (-a) reports about all possible recodings. .* Option --ignore (-x) prevents a charset from being selected. .* Execution has been sped up through step merging, hashing for charset names. .* Many various buglets have been eradicated, portability increased. .* Charsets may be edited out by modifying the Makefile only. .* Configuration is made through the use of an external config.h file. * Version 3.2.4 - François Pinard, 1992-10. .* None. * Version 3.2.3 - François Pinard, 1992-09. .* New -d `diacritics_only' option for LaTeX. .* A few bugs have been corrected. .* Documentation reorganization and improvements. .* Increased portability, now uses Autoconf. .* A few bugs solved. * Version 3.2 - François Pinard, 1991-10. .* MSDOS port redone. .* New check goal at installation time. .* Add -v option for verbose processing, remove old -q. .* Add -i, -o and -p for letting the user control the strategy. .* A few bugs corrected. .* Embedded NULs should now be transmitted. * Version 3.1 - François Pinard, 1990-03. .* Rename -V to -C for showing Copyright. .* Calling sequence changed, said files now recoded on themselves. .* Add -t option for touching files. .* Better on-line help. * Version 3.0.1 - François Pinard, 1990-02. .* Add -q option for quiet processing. .* Executable file now considerably smaller, also speedier. .* A few bugs corrected. * Version 3.0 - François Pinard, 1989-10. .* New Text to Latin1 processing, should be faster. .* A few bugs corrected. * For prior history down to 1980, see at the end of the ChangeLog. recode-3.6/THANKS0100644000000000000000000001630007147326051012242 0ustar rootrootFree `recode' has originally been written by François Pinard. Other people contributed to Free recode by reporting problems, suggesting various improvements or submitting actual code. Here is a list of these people. Help me keeping it complete and exempt of errors. See various ChangeLogs for a detailed description of contributions. Akim Demaille demaille@inf.enst.fr Alain Labonté alb@riq.qc.ca Alain Magloire alainm@macs.ee.mcgill.ca Alan J. Flavell flavell@a5.ph.gla.ac.uk Alexander L. Belikoff abel@vallinor4.com http://www.vallinor4.com Alexandre Oliva oliva@dcc.unicamp.br http://www.dcc.unicamp.br/~oliva Andreas Dietrich quasi@mathematik.uni-marburg.de Andreas Frick afr@aifb.uni-karlsruhe.de Andreas Mueller afm@othello.ch http://www.othello.ch Andreas Schwab schwab@suse.de Andries Brouwer Andries.Brouwer@cwi.nl Arnaldo Mandel am@ime.usp.br Bastian Schlueter buzz@gmx.de http://home.pages.de/~buzz Bernt Guldbrandtsen bg@rs580.sh.dk Bert Schweitzer b.schweitzer@tu-bs.de Branimir Dolicki Brendan O'Dea bod@compusol.com.au http://www.ozemail.com.au/~bod/ Bruno Haible haible@ilog.fr http://clisp.cons.org/~haible/ Christian Limpach Christian.Limpach@nice.ch http://www.nice.ch/~chris/ Christian Recktenwald chris@citecs.de http://www.citecs.de/ Christian Rolland Claude Goutier goutier@jsp.umontreal.ca Colin Plumb Daniel Quinlan quinlan@best.com Daniel Taupin taupin@lps.u-psud.fr David E. A. Wilson david_wilson@uow.edu.au http://www.uow.edu.au/~david David Kastrup David Lebel lebel@lebel.org David Mentre David van Leeuwen Detlev Droege droege@informatik.uni-koblenz.de Dominique Quatravaux Dominique.Quatravaux@quatramaran.ens.fr http://www.piren.epita.fr/~dom Dominique Schmit dschmit@tabarly.saclay.cea.fr Duane Ellis duane@franklin.com http://www.franklin.com Eli Zaretskii eliz@is.elta.co.il Eric Backus eric_backus@hp.com http://www.wolfenet.com/~ericjb Erick Branderhorst Erick.Branderhorst@asml.nl Erwan Mas erwanmas@chez.com http://www.chez.com/erwanmas/ Farzad Farid Florian Oelmaier 100265.2501@compuserve.com François Pinard pinard@iro.umontreal.ca http://www.iro.umontreal.ca/~pinard François Robitaille François Yergeau yergeau@alis.com http://www.alis.com/~yergeau/ Francois-Xavier Bergot bergotfx@com.enst.fr Françoise Audebrand audebran@ere.umontreal.ca Frederic Albrecht Frederic Gobry frederic.gobry@epfl.ch Frère Roy roy@taize.fr http://www.taize.fr Gabriel P. Silva gpsilva@geocities.com http://www.nce.ufrj.br/~gabriel Ghislain Plamondon Georg Haefele haefele@atlas.gis.univie.ac.at Greg McGary Guy Lapalme lapalme@iro.umontreal.ca http://www.iro.umontreal.ca/~lapalme Harald Falkenberg harald.falkenberg@desy.de Harald Koenig koenig@tat.physik.uni-tuebingen.de Hermann Hueni hueni@iam.unibe.ch Hennus Bergman Hilmar Schlegel hs@semic.ag-berlin.mpg.de Hrvoje Niksic hniksic@srce.hr Jacques Madelaine jacques@info.unicaen.fr http://www.info.unicaen.r/~jacques Jacques Richer Jacques.Richer@CERCA.UMontreal.CA http://www.CERCA.UMontreal.CA/~richer Jan Djarv jan.djarv@mbox200.swipnet.se Jean-Claude Nadeau nadeau@jsp.umontreal.ca Jens Quade jens@ronja.dinoco.de Jim Meyering meyering@na-net.ornl.gov Joelle Stemp John van Krieken John.van.Krieken@ATComputing.nl http://www.ATComputing.nl/images/pasfotos/john.jpg Jörg Höhle Joerg.Hoehle@gmd.de http://fit.gmd.de/~hoehle/ Jose Joao Almeida jj@di.uminho.pt http://www.di.uminho.pt/~jj Julio Sanchez jsanchez@gmv.es Juliusz Chroboczek jch@clipper.ens.fr Juergen Zeller zet@rupert.franken.de Kai Uwe Rommel Karl Berry karl@cs.umb.edu http://www.cs.umb.edu/~karl/ Keld Jørn Simonsen keld@dkuug.dk Kester Habermann kester@unix-ag.uni-kl.de http://www.unix-ag.uni-kl.de/~kester/ Kevin Stuckless kevins@stuck.warped.com http://stuck.warped.com/~kevins Kristian Köhntopp kk@netuse.de Laurent Bourbeau bourbeau@progiciels-bpi.ca Larry W. Virden lvirden@cas.org http://purl.org/net/lvirden/ Liisa R{ih{ lr@cs.uta.fi Loic Dachary Lukas Petrlik Mac Pigman gwp@dido.caltech.edu Marc Gingold gingold@spht.saclay.cea.fr http:////www-spht.cea.fr/doc.html Marc Shapiro shapiro@prof.inria.fr Marc Verreault Mario Gay mgay@ti-edu.ch Markus Kuhn Markus.Kuhn@cl.cam.ac.uk http://www.cl.cam.ac.uk/~mgk25/ Martin J. Dürst duerst@w3.org http://www.w3.org/People/D%C3%BCrst Martin Maechler maechler@stat.math.ethz.ch Martin Mares mj@ucw.cz http://atrey.karlin.mff.cuni.cz/~mj/ Michael Gschwind mike@vlsivie.tuwien.ac.at Michael L. Dowling M.Dowling@tu-bs.de http://www.mathematik.tu-bs.de Michael Schmidt mschmidt@koblenz.fh-rpl.de Michael Shields shields@msrl.com http://www.msrl.com/ Mikko Silvonen silvonen@iki.fi http://www.iki.fi/silvonen/ Nathanael Makarevitch Nathaniel Borenstein nsb@aa.fv.com Neal McBurnett http://bcn.boulder.co.us/~neal/ Nguyên-Ðai Quý daiquy.nguyen@ulg.ac.be Nicolas Anquetil Nicolas Thiery Nicolas.Thiery@jonas.univ-lyon1.fr http://www.lmd.univ-lyon1.fr/home/nthiery/ Niels Kr. Bech Jensen nkbj@image.dk http://www.image.dk/~nkbj/ Olivier Lecarme Olivier.Lecarme@unice.fr Olivier Tharan olive@laria.u-picardie.fr http://www.laria.u-picardie.fr/~olive/ Patrick Andries pandries@iti.qc.ca Pawel Krawczyk kravietz@ceti.pl http://ceti.pl/~kravietz/ Per Andersson perand@stacken.kth.se Per Starback starback@ling.uu.se http://stp.ling.uu.se/~starback/me.html Per Steinar Iversen Peter Turcan peter.turcan@minerva-is.sk Phyllis Frankl phyllis@morph.poly.edu http://ebbets.poly.edu/~pfrankl Pierre Gaumond gaumondp@ere.umontreal.ca Pierre Girard pierreg@crt.umontreal.ca Pierre Mathieu mathieu@geod.emr.ca Povl H. Pedersen pope@netguide.dk Primo¾ Peterlin primoz.peterlin@biofiz.mf.uni-lj.si http://sizif.mf.uni-lj.si/~peterlin/ Rejean Payette rejean.payette@rtsq.qc.ca Ricard Torres torres@upf.es Richard Plasun plasun@iue.tuwien.ac.at Richard Stallman rms@gnu.org Robert Joop rj@rainbow.in-berlin.de Roman Czyborra roman@czyborra.com http://czyborra.com/ Ronald C.F. Antony rcfa@cubiculum.com http://www.cubiculum.com/~rcfa Santiago Vila Doncel sanvila@unex.es Saverio Pangoli saverio@mystere.sci.sns.it Sebastian Huebner cyco@baud.de http://www.baud.de/cyco/ Scott Schwartz schwartz@bio.cse.psu.edu Slaven Rezic eserte@cs.tu-berlin.de http://user.cs.tu-berlin.de/~eserte Stefan Albertz Stefan.Albertz@rus.uni-stuttgart.de Stefan Haubenthal haubi@geocities.com http://home.pages.de/~haubi Steinar Bang sb@metis.no Stephane Berube berube@iro.umontreal.ca Sumit Bose bose@physik.tu-berlin.de Thomas Gebhardt gebhardt@hrz.uni-marburg.de http://www.uni-marburg.de/hrz/mitarbeiter/gebhardt.html Thomas M. Ott Thomas Seeling Tom Hageman tom@basil.icce.rug.nl Tom Tromey tromey@cygnus.com http://cafe.colorado.edu/~tromey/ Ulrich Drepper drepper@gnu.org Ulrich Windl Ulrich.Windl@rz.uni-regensburg.de http://www.uni-regensburg.de/Einrichtungen/Rechenzentrum/Orientierung/Mitarbeiter/windl.html Vern Paxson vern@ee.lbl.gov Vitor Duarte vad@di.fct.unl.pt Walter Müller walt@pi4.informatik.uni-mannheim.de Wiel Seuskens wiel@xs4all.nl http://www.xs4all.nl/~wiel/ Wilhelm Zadrapa wfz@aon.at William Bader wbader@scarecrow.csee.lehigh.edu Wolfgang Boerner Wolfgang.Boerner@rz.uni-regensburg.de Wolfgang Wander wwc@hermes.desy.de Yves Arrouye recode-3.6/TODO0100644000000000000000000000655707233073340012030 0ustar rootroot* TODO file for GNU recode Tell `mailto:recode-bugs@gnu.org' if you feel like volunteering for any of these ideas, listed more or less in decreasing order of priority. Some TODO items are implicit from received email. See file BACKLOG. Significant contributions require written assignments and disclaimers. .* Before next official release . + Memory leaks: see add_to_sequence, ALLOC, recode_{m,re}alloc}. . + Revise everything about explodes. . + Update NEWS for latest libiconv and latest Keld tables. . + Remove TeX edition warnings, rephrase whatever required. . + Complete inter-node and menu references, as necessary. . + Resolve THANKS, which Emacs does not save correctly. . + Check with recent versions for Autoconf, Automake, Libtool. . + See make and configure HAVE_UNION_WAIT, see `lr /conf-wait-'. . + Solaris cc 4.2 with option "-O" miscompiles src/libiconv.c, probably the function module_libiconv. The symptom is that "src/recode --quiet --force ascii-bs..ebcdic < COPYING > output" creates an output file smaller than COPYING. The only known workaround is to not use "-O". .* Keld . + recode . - New tables from Keld . - Revise diagnostics . + Standards aspects . - Wait for PostScript . : charset in 14652 . : transliteration in 14652 . : API in 15435 . : recoding/iconv APIs (->Handa) . + Miscellaneous . - African tables . - Unicode/W3C short-comings . : Lithuanian .* Particular notes . + feuille Tamil . + Autoconf and DOSWIN . + New RFC 1345 tables, still some diagnostics . + Check notes from ORA . @ ~/libit/rmail/m4 . @ ~/libit/rmail/gettext .@ ChangeLog .* Charsets . + Clean up applemac vs macintosh and ibmpc vs ibm437. . + Implement RFC1345 more fully. . + Generalize older charsets (latex, texte, etc.) to RFC 1345 mnemonics. . + Support VT320 support and related character sets. (Alain Simon) . + Support @code{[nt]roff} diacritics. . + Support Universite de Montreal ``accent'' convention. .* Surfaces . + Implement some invbits over 8, 7 or 6 bits, maybe more. . + CR-LF, in ibmpc.c (implied by IBMPC?) . + CR, in applemac.c (implied by Apple-Mac?) . + Message headers [RFC 1342] . + Mnemonic and Mnemo (maybe?) [RFC 1345] . + Integrate -c and -g into charsets. . + Find something for `recode -g ibmpc:ibmpc' to do what it suggests . + Option -M (implying -i) to process MIME headers .* Mechanics . + Create a Python prototype of full `recode'. . + Intercept signals to cleanup the temporary files in any event. . + Revise --sequence=pipe thoroughly. . + Rewrite execute_pipe_sequence for having only one child per parent. . + Revise --force thoroughly. . + Rewrite .l converses for lat1{asci,ltex,txte}, for --force. . + Optimize/merge all one-to-many cases. . + Write a better `make check', not as partial and forgiving. . + Modify recode so I can get rid of diacrit.[ch] (elsewhere). . + Have -l know which output charset to use (Martin Maechler, 93-12-07). . + Take note that ->RFC1345 recodings are non reversible. .* Notes about MSDOS port . + I had to `touch stamp-h'. . + @PRODUCT@ and @VERSION@ were not substituted. . + Replace PRODUCT by PACKAGE within config_h.*. . + One should have -DHAVE_CONFIG_H=1 (the `=1' is required). . + charset.c:637: Maybe incorrect assignment in init_table_for_rfc1345(). . + LIBINTL.OBJ and LOCALE.OBJ were not compiled. . + Rule to compile LIBINTL.OBJ was missing. . + readme.tcc should become README.DOS as things go. recode-3.6/acconfig.h0100644000000000000000000000252007101363325013243 0ustar rootroot/* Special definitions for GNU recode, processed by autoheader. Copyright © 1993, 1998, 1999, 2000 Free Software Foundation, Inc. François Pinard , 1993. */ /* Default charset is `Latin-1' on UNIX, `IBM-PC' on MSDOS. */ #undef DEFAULT_CHARSET /* Define to the name of the distribution. */ #undef PACKAGE /* Define to 1 if ANSI function prototypes are usable. */ #undef PROTOTYPES /* Define to the version of the distribution. */ #undef VERSION /* Define to 1 for better use of the debugging malloc library. See site ftp.antaire.com in antaire/src, file dmalloc/dmalloc.tar.gz. */ #undef WITH_DMALLOC /* Define to 1 if NLS is requested. */ #undef ENABLE_NLS /* Define as 1 if you have dcgettext. */ #undef HAVE_DCGETTEXT /* Define as 1 if you have gettext and don't want to use GNU gettext. */ #undef HAVE_GETTEXT /* Define if your locale.h file contains LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if stpcpy function is available. */ #undef HAVE_STPCPY /* Define to the installation directory for locales. */ #undef LOCALEDIR /* Define to 1 when also using Bruno Haible `libiconv' library. */ #undef WITH_LIBICONV /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc recode-3.6/acinclude.m40100644000000000000000000003474107021721545013527 0ustar rootroot## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- ## Copyright (C) 1996-1999 Free Software Foundation, Inc. ## Originally by Gordon Matzigkeit , 1996 ## ## This program 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 of the License, or ## (at your option) any later version. ## ## This program 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 this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ## ## As a special exception to the GNU General Public License, if you ## distribute this file as part of a program that contains a ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. # serial 40 AC_PROG_LIBTOOL AC_DEFUN(AC_PROG_LIBTOOL, [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl # Save cache, so that ltconfig can load it AC_CACHE_SAVE # Actually configure libtool. ac_aux_dir is where install-sh is found. CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ || AC_MSG_ERROR([libtool configure failed]) # Reload cache, that may have been modified by ltconfig AC_CACHE_LOAD # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Redirect the config.log output again, so that the ltconfig log is not # clobbered by the next message. exec 5>>./config.log ]) AC_DEFUN(AC_LIBTOOL_SETUP, [AC_PREREQ(2.13)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl dnl case "$target" in NONE) lt_target="$host" ;; *) lt_target="$target" ;; esac # Check for any special flags to pass to ltconfig. libtool_flags="--cache-file=$cache_file" test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], [libtool_flags="$libtool_flags --enable-dlopen"]) ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [libtool_flags="$libtool_flags --enable-win32-dll"]) AC_ARG_ENABLE(libtool-lock, [ --disable-libtool-lock avoid locking (might break parallel builds)]) test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" # Some flags need to be propagated to the compiler or linker for good # libtool support. case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac ]) # AC_LIBTOOL_DLOPEN - enable checks for dlopen support AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_SHARED, [dnl define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac], enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_STATIC, [dnl define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac], enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac], enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl ]) # AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN(AC_PROG_LD, [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. changequote(,)dnl [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' changequote([,])dnl # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(ac_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ac_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else ac_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$ac_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_PROG_LD_GNU ]) AC_DEFUN(AC_PROG_LD_GNU, [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then ac_cv_prog_gnu_ld=yes else ac_cv_prog_gnu_ld=no fi]) ]) # AC_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN(AC_PROG_NM, [AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(ac_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. ac_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -B" break elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -p" break else ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm fi]) NM="$ac_cv_path_NM" AC_MSG_RESULT([$NM]) ]) # AC_CHECK_LIBM - check for math library AC_DEFUN(AC_CHECK_LIBM, [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case "$lt_target" in *-*-beos* | *-*-cygwin*) # These system don't have libm ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, main, LIBM="-lm") ;; esac ]) # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for # the libltdl convenience library, adds --enable-ltdl-convenience to # the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor # is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed # to be `${top_builddir}/libltdl'. Make sure you start DIR with # '${top_builddir}/' (note the single quotes!) if your package is not # flat, and, if you're not using automake, define top_builddir as # appropriate in the Makefiles. AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case "$enable_ltdl_convenience" in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) ]) # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for # the libltdl installable library, and adds --enable-ltdl-install to # the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor # is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed # to be `${top_builddir}/libltdl'. Make sure you start DIR with # '${top_builddir}/' (note the single quotes!) if your package is not # flat, and, if you're not using automake, define top_builddir as # appropriate in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" INCLTDL= fi ]) dnl old names AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl dnl This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL])dnl recode-3.6/aclocal.m40100644000000000000000000007746207224652777013224 0ustar rootrootdnl aclocal.m4 generated automatically by aclocal 1.4 dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. # serial 40 AC_PROG_LIBTOOL AC_DEFUN(AC_PROG_LIBTOOL, [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl # Save cache, so that ltconfig can load it AC_CACHE_SAVE # Actually configure libtool. ac_aux_dir is where install-sh is found. CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ || AC_MSG_ERROR([libtool configure failed]) # Reload cache, that may have been modified by ltconfig AC_CACHE_LOAD # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Redirect the config.log output again, so that the ltconfig log is not # clobbered by the next message. exec 5>>./config.log ]) AC_DEFUN(AC_LIBTOOL_SETUP, [AC_PREREQ(2.13)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl dnl case "$target" in NONE) lt_target="$host" ;; *) lt_target="$target" ;; esac # Check for any special flags to pass to ltconfig. libtool_flags="--cache-file=$cache_file" test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], [libtool_flags="$libtool_flags --enable-dlopen"]) ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [libtool_flags="$libtool_flags --enable-win32-dll"]) AC_ARG_ENABLE(libtool-lock, [ --disable-libtool-lock avoid locking (might break parallel builds)]) test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" # Some flags need to be propagated to the compiler or linker for good # libtool support. case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac ]) # AC_LIBTOOL_DLOPEN - enable checks for dlopen support AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_SHARED, [dnl define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac], enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_STATIC, [dnl define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac], enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac], enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl ]) # AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN(AC_PROG_LD, [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. changequote(,)dnl [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' changequote([,])dnl # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(ac_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ac_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else ac_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$ac_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_PROG_LD_GNU ]) AC_DEFUN(AC_PROG_LD_GNU, [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then ac_cv_prog_gnu_ld=yes else ac_cv_prog_gnu_ld=no fi]) ]) # AC_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN(AC_PROG_NM, [AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(ac_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. ac_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -B" break elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -p" break else ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm fi]) NM="$ac_cv_path_NM" AC_MSG_RESULT([$NM]) ]) # AC_CHECK_LIBM - check for math library AC_DEFUN(AC_CHECK_LIBM, [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case "$lt_target" in *-*-beos* | *-*-cygwin*) # These system don't have libm ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, main, LIBM="-lm") ;; esac ]) # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for # the libltdl convenience library, adds --enable-ltdl-convenience to # the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor # is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed # to be `${top_builddir}/libltdl'. Make sure you start DIR with # '${top_builddir}/' (note the single quotes!) if your package is not # flat, and, if you're not using automake, define top_builddir as # appropriate in the Makefiles. AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case "$enable_ltdl_convenience" in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) ]) # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for # the libltdl installable library, and adds --enable-ltdl-install to # the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor # is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed # to be `${top_builddir}/libltdl'. Make sure you start DIR with # '${top_builddir}/' (note the single quotes!) if your package is not # flat, and, if you're not using automake, define top_builddir as # appropriate in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" INCLTDL= fi ]) dnl old names AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl dnl This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL])dnl # Like AC_CONFIG_HEADER, but automatically create stamp file. AC_DEFUN(AM_CONFIG_HEADER, [AC_PREREQ([2.12]) AC_CONFIG_HEADER([$1]) dnl When config.status generates a header, we must update the stamp-h file. dnl This file resides in the same directory as the config header dnl that is generated. We must strip everything past the first ":", dnl and everything past the last "/". AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, <>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, <>; do case " <<$>>CONFIG_HEADERS " in *" <<$>>am_file "*<<)>> echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx ;; esac am_indx=`expr "<<$>>am_indx" + 1` done<<>>dnl>>) changequote([,]))]) # Do all the work for Automake. This macro actually does too much -- # some checks are only needed if your package does certain things. # But this isn't really a big deal. # serial 1 dnl Usage: dnl AM_INIT_AUTOMAKE(package,version, [no-define]) AC_DEFUN(AM_INIT_AUTOMAKE, [AC_REQUIRE([AC_PROG_INSTALL]) PACKAGE=[$1] AC_SUBST(PACKAGE) VERSION=[$2] AC_SUBST(VERSION) dnl test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi ifelse([$3],, AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) AC_REQUIRE([AM_SANITY_CHECK]) AC_REQUIRE([AC_ARG_PROGRAM]) dnl FIXME This is truly gross. missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) AC_REQUIRE([AC_PROG_MAKE_SET])]) # # Check to make sure that the build environment is sane. # AC_DEFUN(AM_SANITY_CHECK, [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "[$]*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "[$]*" != "X $srcdir/configure conftestfile" \ && test "[$]*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "[$]2" = conftestfile ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi rm -f conftest* AC_MSG_RESULT(yes)]) dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) dnl The program must properly implement --version. AC_DEFUN(AM_MISSING_PROG, [AC_MSG_CHECKING(for working $2) # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if ($2 --version) < /dev/null > /dev/null 2>&1; then $1=$2 AC_MSG_RESULT(found) else $1="$3/missing $2" AC_MSG_RESULT(missing) fi AC_SUBST($1)]) # The argument (often `../src') says where are the built sources to test, # relative to the built test directory. Empty for a flat distribution, as # `.' gets always added in front of the search path by the `atconfig' script. AC_DEFUN(AT_CONFIG, [AT_TESTPATH=$1 AC_SUBST(AT_TESTPATH) fp_PROG_ECHO ]) # Once this macro is called, you may output with no echo in a Makefile or # script using: echo @ECHO_N@ "STRING_TO_OUTPUT@ECHO_C@". AC_DEFUN(fp_PROG_ECHO, [AC_CACHE_CHECK(how to suppress newlines using echo, fp_cv_prog_echo_nonl, [if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then fp_cv_prog_echo_nonl=no else fp_cv_prog_echo_nonl=option fi else fp_cv_prog_echo_nonl=escape fi ]) test $fp_cv_prog_echo_nonl = no \ && echo 2>&1 "WARNING: \`echo' not powerful enough for \`make check'" case $fp_cv_prog_echo_nonl in no) ECHO_N= ECHO_C= ;; option) ECHO_N=-n ECHO_C= ;; escape) ECHO_N= ECHO_C='\c' ;; esac AC_SUBST(ECHO_N)dnl AC_SUBST(ECHO_C)dnl ]) # serial 1 AC_DEFUN(AM_C_PROTOTYPES, [AC_REQUIRE([AM_PROG_CC_STDC]) AC_REQUIRE([AC_PROG_CPP]) AC_MSG_CHECKING([for function prototypes]) if test "$am_cv_prog_cc_stdc" != no; then AC_MSG_RESULT(yes) AC_DEFINE(PROTOTYPES,1,[Define if compiler has function prototypes]) U= ANSI2KNR= else AC_MSG_RESULT(no) U=_ ANSI2KNR=./ansi2knr # Ensure some checks needed by ansi2knr itself. AC_HEADER_STDC AC_CHECK_HEADERS(string.h) fi AC_SUBST(U)dnl AC_SUBST(ANSI2KNR)dnl ]) # serial 1 # @defmac AC_PROG_CC_STDC # @maindex PROG_CC_STDC # @ovindex CC # If the C compiler in not in ANSI C mode by default, try to add an option # to output variable @code{CC} to make it so. This macro tries various # options that select ANSI C on some system or another. It considers the # compiler to be in ANSI C mode if it handles function prototypes correctly. # # If you use this macro, you should check after calling it whether the C # compiler has been set to accept ANSI C; if not, the shell variable # @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source # code in ANSI C, you can make an un-ANSIfied copy of it by using the # program @code{ansi2knr}, which comes with Ghostscript. # @end defmac AC_DEFUN(AM_PROG_CC_STDC, [AC_REQUIRE([AC_PROG_CC]) AC_BEFORE([$0], [AC_C_INLINE]) AC_BEFORE([$0], [AC_C_CONST]) dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require dnl a magic option to avoid problems with ANSI preprocessor commands dnl like #elif. dnl FIXME: can't do this because then AC_AIX won't work due to a dnl circular dependency. dnl AC_BEFORE([$0], [AC_PROG_CPP]) AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) AC_CACHE_VAL(am_cv_prog_cc_stdc, [am_cv_prog_cc_stdc=no ac_save_CC="$CC" # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" AC_TRY_COMPILE( [#include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; ], [ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ], [am_cv_prog_cc_stdc="$ac_arg"; break]) done CC="$ac_save_CC" ]) if test -z "$am_cv_prog_cc_stdc"; then AC_MSG_RESULT([none needed]) else AC_MSG_RESULT($am_cv_prog_cc_stdc) fi case "x$am_cv_prog_cc_stdc" in x|xno) ;; *) CC="$CC $am_cv_prog_cc_stdc" ;; esac ]) # serial 2 dnl ad_AC_PROG_FLEX dnl Look for flex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT AC_DEFUN(ad_AC_PROG_FLEX, [AC_CHECK_PROGS(LEX, flex, missing) if test "$LEX" = missing; then LEX="\$(top_srcdir)/$ac_aux_dir/missing flex" LEX_OUTPUT_ROOT=lex.yy AC_SUBST(LEX_OUTPUT_ROOT)dnl else AC_PROG_LEX AC_DECL_YYTEXT fi]) #serial 2 dnl From Jim Meyering dnl Define HAVE_STRUCT_UTIMBUF if `struct utimbuf' is declared -- dnl usually in . dnl Some systems have utime.h but don't declare the struct anywhere. AC_DEFUN(jm_STRUCT_UTIMBUF, [ AC_CHECK_HEADERS(utime.h) AC_REQUIRE([AC_HEADER_TIME]) AC_CACHE_CHECK([for struct utimbuf], fu_cv_sys_struct_utimbuf, [AC_TRY_COMPILE( [ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #ifdef HAVE_UTIME_H # include #endif ], [static struct utimbuf x; x.actime = x.modtime;], fu_cv_sys_struct_utimbuf=yes, fu_cv_sys_struct_utimbuf=no) ]) if test $fu_cv_sys_struct_utimbuf = yes; then AC_DEFINE_UNQUOTED(HAVE_STRUCT_UTIMBUF, 1, [Define if struct utimbuf is declared -- usually in . Some systems have utime.h but don't declare the struct anywhere. ]) fi ]) #serial 3 dnl From Jim Meyering. dnl Determine whether malloc accepts 0 as its argument. dnl If it doesn't, arrange to use the replacement function. dnl AC_DEFUN(jm_FUNC_MALLOC, [ dnl xmalloc.c requires that this symbol be defined so it doesn't dnl mistakenly use a broken malloc -- as it might if this test were omitted. AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_MALLOC_CHECK, 1, [Define if the malloc check has been performed. ]) AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc, [AC_TRY_RUN([ char *malloc (); int main () { exit (malloc (0) ? 0 : 1); } ], jm_cv_func_working_malloc=yes, jm_cv_func_working_malloc=no, dnl When crosscompiling, assume malloc is broken. jm_cv_func_working_malloc=no) ]) if test $jm_cv_func_working_malloc = no; then AC_SUBST(LIBOBJS) LIBOBJS="$LIBOBJS malloc.$ac_objext" AC_DEFINE_UNQUOTED(malloc, rpl_malloc, [Define to rpl_malloc if the replacement function should be used.]) fi ]) #serial 3 dnl From Jim Meyering. dnl Determine whether realloc works when both arguments are 0. dnl If it doesn't, arrange to use the replacement function. dnl AC_DEFUN(jm_FUNC_REALLOC, [ dnl xmalloc.c requires that this symbol be defined so it doesn't dnl mistakenly use a broken realloc -- as it might if this test were omitted. AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_REALLOC_CHECK, 1, [Define if the realloc check has been performed. ]) AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc, [AC_TRY_RUN([ char *realloc (); int main () { exit (realloc (0, 0) ? 0 : 1); } ], jm_cv_func_working_realloc=yes, jm_cv_func_working_realloc=no, dnl When crosscompiling, assume realloc is broken. jm_cv_func_working_realloc=no) ]) if test $jm_cv_func_working_realloc = no; then AC_SUBST(LIBOBJS) LIBOBJS="$LIBOBJS realloc.$ac_objext" AC_DEFINE_UNQUOTED(realloc, rpl_realloc, [Define to rpl_realloc if the replacement function should be used.]) fi ]) #serial 2 dnl From Bruno Haible. AC_DEFUN(jm_LANGINFO_CODESET, [ AC_CHECK_HEADERS(langinfo.h) AC_CHECK_FUNCS(nl_langinfo) AC_CACHE_CHECK([for nl_langinfo and CODESET], jm_cv_langinfo_codeset, [AC_TRY_LINK([#include ], [char* cs = nl_langinfo(CODESET);], jm_cv_langinfo_codeset=yes, jm_cv_langinfo_codeset=no) ]) if test $jm_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET, 1, [Define if you have and nl_langinfo(CODESET).]) fi ]) #serial 2 # Test for the GNU C Library, version 2.1 or newer. # From Bruno Haible. AC_DEFUN(jm_GLIBC21, [ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ac_cv_gnu_library_2_1, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2_1=yes, ac_cv_gnu_library_2_1=no) ] ) AC_SUBST(GLIBC21) GLIBC21="$ac_cv_gnu_library_2_1" ] ) # serial 1 AC_DEFUN(AM_WITH_DMALLOC, [AC_MSG_CHECKING(if malloc debugging is wanted) AC_ARG_WITH(dmalloc, [ --with-dmalloc use dmalloc, as in ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz], [if test "$withval" = yes; then AC_MSG_RESULT(yes) AC_DEFINE(WITH_DMALLOC,1, [Define if using the dmalloc debugging malloc package]) LIBS="$LIBS -ldmalloc" LDFLAGS="$LDFLAGS -g" else AC_MSG_RESULT(no) fi], [AC_MSG_RESULT(no)]) ]) # Select gettext and choose translations to install. -*- shell-script -*- # François Pinard , 1998. # Here is a check list about how one could use this macro. # - In the build directory, execute `make distclean'. # - Rename `po/' to `i18n/'. # - Recursively delete directory `intl/'. # - Add the following files: # . `i18n/Makefile.am' # . `m4/gettext.m4' # . `lib/gettext.c' # . `lib/gettext.h'. # - In top level `configure.in': # . use `fp_WITH_GETTEXT'. # . delete `AM_GNU_GETTEXT' and any `AC_LINK_FILES' for $nls variables. # . add `i18n/Makefile' to `AC_OUTPUT'. # . delete `intl/Makefile' and `po/Makefile.in' from `AC_OUTPUT'. # - In top level `Makefile.am': # . add `i18n' in SUBDIRS, and remove `intl' and `po'. # . define `POTFILES' (peek at previous `i18n/POTFILES.in). # . add `$(srcdir)/stamp-pot' to `all-local'. # . add rule for `$(srcdir)/stamp-pot'. # - In top level `acconfig.h': # . document `HAVE_DCGETTEXT' and `LOCALEDIR'. # . delete documentation for `HAVE_CATGETS'. # - In `lib/Makefile.am': # . add `gettext.c' to `EXTRA_DIST'. # . add `gettext.h' to `noinstl_HEADERS'. # . add definitions for `localdir' and `aliaspath'. # . add special rules for `gettext.o' and `gettext._o'. # - In `m4/Makefile.am': # . add `gettext.m4' to `EXTRA_DIST'. # - In `src/Makefile.am': # . delete `-I/..intl' from `INCLUDES'. # . delete `@INTLLIBS@' from `LDADD'. # . delete `localedir' and its references. # - Clean up directory `i18n/': # . delete `Makefile.in.in' and `POTFILES.in'. # . delete all `*.gmo' files, `cat-id-tbl.c' and `stamp-cat-id'. # - In the top level distribution directory: # . run `aclocal -I m4'. # . run `autoreconf'. # - In the build directory: # . run `$top_srcdir/configure'. # . run `make check'. AC_DEFUN(fp_WITH_GETTEXT, [ AC_MSG_CHECKING(whether NLS is wanted) AC_ARG_ENABLE(nls, [ --disable-nls disallow Native Language Support], enable_nls=$enableval, enable_nls=yes) AC_MSG_RESULT($enable_nls) use_nls=$enable_nls AM_CONDITIONAL(USE_NLS, test $use_nls = yes) if test $enable_nls = yes; then AC_DEFINE(ENABLE_NLS) AC_ARG_WITH(catgets, [ --with-catgets say that catgets is not supported], [AC_MSG_WARN([catgets not supported, --with-catgets ignored])]) AC_CHECK_FUNCS(gettext) AC_CHECK_LIB(intl, gettext, :) if test $ac_cv_lib_intl_gettext$ac_cv_func_gettext != nono; then AC_MSG_CHECKING(whether the included gettext is preferred) AC_ARG_WITH(included-gettext, [ --without-included-gettext avoid our provided version of gettext], with_included_gettext=$withval, with_included_gettext=yes) AC_MSG_RESULT($with_included_gettext) if test $with_included_gettext$ac_cv_func_gettext = nono; then LIBS="$LIBS -lintl" fi else with_included_gettext=yes fi if test $with_included_gettext = yes; then LIBOBJS="$LIBOBJS gettext.o" AC_DEFINE(HAVE_GETTEXT) AC_DEFINE(HAVE_DCGETTEXT) else AC_CHECK_HEADERS(libintl.h) AC_CHECK_FUNCS(dcgettext gettext) fi AC_CHECK_HEADERS(argz.h limits.h locale.h malloc.h string.h unistd.h sys/param.h) AC_FUNC_MMAP AC_CHECK_FUNCS(getcwd mempcpy munmap setlocale stpcpy strcasecmp strchr strdup __argz_count __argz_stringify __argz_next) AM_LC_MESSAGES if test -z "$ALL_LINGUAS"; then AC_MSG_WARN(This package does not install translations yet.) else ac_items="$ALL_LINGUAS" for ac_item in $ac_items; do ALL_POFILES="$ALL_POFILES $ac_item.po" ALL_MOFILES="$ALL_MOFILES $ac_item.mo" done fi AC_SUBST(ALL_LINGUAS) AC_SUBST(ALL_POFILES) AC_SUBST(ALL_MOFILES) AC_MSG_CHECKING(which translations to install) if test -z "$LINGUAS"; then ac_print="$ALL_LINGUAS" MOFILES="$ALL_MOFILES" else ac_items="$LINGUAS" for ac_item in $ac_items; do case "$ALL_LINGUAS" in *$ac_item*) ac_print="$ac_print $ac_item" MOFILES="$MOFILES $ac_item.mo" ;; esac done fi AC_SUBST(MOFILES) if test -z "$ac_print"; then AC_MSG_RESULT(none) else AC_MSG_RESULT($ac_print) fi if test "x$prefix" = xNONE; then AC_DEFINE_UNQUOTED(LOCALEDIR, "$ac_default_prefix/share/locale") else AC_DEFINE_UNQUOTED(LOCALEDIR, "$prefix/share/locale") fi fi]) # Define a conditional. AC_DEFUN(AM_CONDITIONAL, [AC_SUBST($1_TRUE) AC_SUBST($1_FALSE) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi]) # Check whether LC_MESSAGES is available in . # Ulrich Drepper , 1995. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. # serial 2 AC_PREREQ(2.13) dnl Minimum Autoconf version required. AC_DEFUN(AM_LC_MESSAGES, [if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your locale.h file contains LC_MESSAGES.]) fi fi]) recode-3.6/config.guess0100644000000000000000000007513007142144411013643 0ustar rootroot#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 # Free Software Foundation, Inc. # # This file 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 of the License, or # (at your option) any later version. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Written by Per Bothner . # The master version of this file is at the FSF in /home/gd/gnu/lib. # Please send patches to . # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit system type (host/target name). # # Only a few systems have been added to this list; please add others # (but try to keep the structure clean). # # Use $HOST_CC if defined. $CC may point to a cross-compiler if test x"$CC_FOR_BUILD" = x; then if test x"$HOST_CC" != x; then CC_FOR_BUILD="$HOST_CC" else if test x"$CC" != x; then CC_FOR_BUILD="$CC" else CC_FOR_BUILD=cc fi fi fi # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 8/24/94.) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown dummy=dummy-$$ trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. cat <$dummy.s .globl main .ent main main: .frame \$30,0,\$26,0 .prologue 0 .long 0x47e03d80 # implver $0 lda \$2,259 .long 0x47e20c21 # amask $2,$1 srl \$1,8,\$2 sll \$2,2,\$2 sll \$0,3,\$0 addl \$1,\$0,\$0 addl \$2,\$0,\$0 ret \$31,(\$26),1 .end main EOF $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then ./$dummy case "$?" in 7) UNAME_MACHINE="alpha" ;; 15) UNAME_MACHINE="alphaev5" ;; 14) UNAME_MACHINE="alphaev56" ;; 10) UNAME_MACHINE="alphapca56" ;; 16) UNAME_MACHINE="alphaev6" ;; esac fi rm -f $dummy.s $dummy echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-cbm-sysv4 exit 0;; amiga:NetBSD:*:*) echo m68k-cbm-netbsd${UNAME_RELEASE} exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; arc64:OpenBSD:*:*) echo mips64el-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hkmips:OpenBSD:*:*) echo mips-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mips-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; arm32:NetBSD:*:*) echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; SR2?01:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; atari*:NetBSD:*:*) echo m68k-atari-netbsd${UNAME_RELEASE} exit 0 ;; atari*:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; sun3*:NetBSD:*:*) echo m68k-sun-netbsd${UNAME_RELEASE} exit 0 ;; sun3*:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:NetBSD:*:*) echo m68k-apple-netbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; macppc:NetBSD:*:*) echo powerpc-apple-netbsd${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && rm $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ -o ${TARGET_BINARY_INTERFACE}x = x ] ; then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i?86:AIX:*:*) echo i386-ibm-aix exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:4) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=4.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) sed 's/^ //' << EOF >$dummy.c #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF ($CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` rm -f $dummy.c $dummy esac HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i?86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; hppa*:OpenBSD:*:*) echo hppa-unknown-openbsd exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*X-MP:*:*:*) echo xmp-cray-unicos exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} exit 0 ;; CRAY*T3E:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} exit 0 ;; CRAY-2:*:*:*) echo cray2-cray-unicos exit 0 ;; F300:UNIX_System_V:*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; F301:UNIX_System_V:*:*) echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` exit 0 ;; hp3[0-9][05]:NetBSD:*:*) echo m68k-hp-netbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; i?86:BSD/386:*:* | i?86:BSD/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) if test -x /usr/bin/objformat; then if test "elf" = "`/usr/bin/objformat`"; then echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` exit 0 fi fi echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:NetBSD:*:*) echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i386-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:Linux:*:*) # uname on the ARM produces all sorts of strangeness, and we need to # filter it out. case "$UNAME_MACHINE" in armv*) UNAME_MACHINE=$UNAME_MACHINE ;; arm* | sa110*) UNAME_MACHINE="arm" ;; esac # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. ld_help_string=`cd /; ld --help 2>&1` ld_supported_emulations=`echo $ld_help_string \ | sed -ne '/supported emulations:/!d s/[ ][ ]*/ /g s/.*supported emulations: *// s/ .*// p'` case "$ld_supported_emulations" in *ia64) echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 ;; i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; elf32ppc | elf32ppclinux) # Determine Lib Version cat >$dummy.c < #if defined(__GLIBC__) extern char __libc_version[]; extern char __libc_release[]; #endif main(argc, argv) int argc; char *argv[]; { #if defined(__GLIBC__) printf("%s %s\n", __libc_version, __libc_release); #else printf("unkown\n"); #endif return 0; } EOF LIBC="" $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null if test "$?" = 0 ; then ./$dummy | grep 1\.99 > /dev/null if test "$?" = 0 ; then LIBC="libc1" fi fi rm -f $dummy.c $dummy echo powerpc-unknown-linux-gnu${LIBC} ; exit 0 ;; esac if test "${UNAME_MACHINE}" = "alpha" ; then sed 's/^ //' <$dummy.s .globl main .ent main main: .frame \$30,0,\$26,0 .prologue 0 .long 0x47e03d80 # implver $0 lda \$2,259 .long 0x47e20c21 # amask $2,$1 srl \$1,8,\$2 sll \$2,2,\$2 sll \$0,3,\$0 addl \$1,\$0,\$0 addl \$2,\$0,\$0 ret \$31,(\$26),1 .end main EOF LIBC="" $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then ./$dummy case "$?" in 7) UNAME_MACHINE="alpha" ;; 15) UNAME_MACHINE="alphaev5" ;; 14) UNAME_MACHINE="alphaev56" ;; 10) UNAME_MACHINE="alphapca56" ;; 16) UNAME_MACHINE="alphaev6" ;; esac objdump --private-headers $dummy | \ grep ld.so.1 > /dev/null if test "$?" = 0 ; then LIBC="libc1" fi fi rm -f $dummy.s $dummy echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 elif test "${UNAME_MACHINE}" = "mips" ; then cat >$dummy.c </dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy else # Either a pre-BFD a.out linker (linux-gnuoldld) # or one that does not give us useful --help. # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. # If ld does not provide *any* "supported emulations:" # that means it is gnuoldld. echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 case "${UNAME_MACHINE}" in i?86) VENDOR=pc; ;; *) VENDOR=unknown; ;; esac # Determine whether the default compiler is a.out or elf cat >$dummy.c < #ifdef __cplusplus int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); # else printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); # endif # else printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); # endif #else printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); #endif return 0; } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy fi ;; # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions # are messed up and put the nodename in both sysname and nodename. i?86:DYNIX/ptx:4*:*) echo i386-sequent-sysv4 exit 0 ;; i?86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} fi exit 0 ;; i?86:*:5:7*) UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) && UNAME_MACHINE=i586 (/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) && UNAME_MACHINE=i686 (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) && UNAME_MACHINE=i585 echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE} exit 0 ;; i?86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; pc:*:*:*) # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:*:6*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) printf ("vax-dec-bsd\n"); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi #echo '(Unable to guess system type)' 1>&2 exit 1 recode-3.6/config.h.in0100644000000000000000000001344607224653006013361 0ustar rootroot/* config.h.in. Generated automatically from configure.in by autoheader. */ /* Define if on AIX 3. System headers sometimes define this. We just want to avoid a redefinition error message. */ #ifndef _ALL_SOURCE #undef _ALL_SOURCE #endif /* Define if using alloca.c. */ #undef C_ALLOCA /* Define to empty if the keyword does not work. */ #undef const /* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. This function is required for alloca.c support on those systems. */ #undef CRAY_STACKSEG_END /* Define if you have alloca, as a function or macro. */ #undef HAVE_ALLOCA /* Define if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define if you don't have vprintf but do have _doprnt. */ #undef HAVE_DOPRNT /* Define if you have a working `mmap' system call. */ #undef HAVE_MMAP /* Define if you have the vprintf function. */ #undef HAVE_VPRINTF /* Define as __inline if that's what the C compiler calls it. */ #undef inline /* Define if on MINIX. */ #undef _MINIX /* Define if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define if you need to in order for stat and other things to work. */ #undef _POSIX_SOURCE /* Define as the return type of signal handlers (int or void). */ #undef RETSIGTYPE /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Define if lex declares yytext as a char * by default, not a char[]. */ #undef YYTEXT_POINTER /* Define to 1 if NLS is requested. */ #undef ENABLE_NLS /* Define as 1 if you have dcgettext. */ #undef HAVE_DCGETTEXT /* Define as 1 if you have gettext and don't want to use GNU gettext. */ #undef HAVE_GETTEXT /* Define to the installation directory for locales. */ #undef LOCALEDIR /* Define if you have the __argz_count function. */ #undef HAVE___ARGZ_COUNT /* Define if you have the __argz_next function. */ #undef HAVE___ARGZ_NEXT /* Define if you have the __argz_stringify function. */ #undef HAVE___ARGZ_STRINGIFY /* Define if you have the dcgettext function. */ #undef HAVE_DCGETTEXT /* Define if you have the dup2 function. */ #undef HAVE_DUP2 /* Define if you have the getcwd function. */ #undef HAVE_GETCWD /* Define if you have the getpagesize function. */ #undef HAVE_GETPAGESIZE /* Define if you have the gettext function. */ #undef HAVE_GETTEXT /* Define if you have the mbrtowc function. */ #undef HAVE_MBRTOWC /* Define if you have the mempcpy function. */ #undef HAVE_MEMPCPY /* Define if you have the munmap function. */ #undef HAVE_MUNMAP /* Define if you have the nl_langinfo function. */ #undef HAVE_NL_LANGINFO /* Define if you have the rename function. */ #undef HAVE_RENAME /* Define if you have the setlocale function. */ #undef HAVE_SETLOCALE /* Define if you have the stpcpy function. */ #undef HAVE_STPCPY /* Define if you have the strcasecmp function. */ #undef HAVE_STRCASECMP /* Define if you have the strchr function. */ #undef HAVE_STRCHR /* Define if you have the strdup function. */ #undef HAVE_STRDUP /* Define if you have the strerror function. */ #undef HAVE_STRERROR /* Define if you have the strndup function. */ #undef HAVE_STRNDUP /* Define if you have the strtol function. */ #undef HAVE_STRTOL /* Define if you have the strtoul function. */ #undef HAVE_STRTOUL /* Define if you have the wcrtomb function. */ #undef HAVE_WCRTOMB /* Define if you have the header file. */ #undef HAVE_ARGZ_H /* Define if you have the header file. */ #undef HAVE_LANGINFO_H /* Define if you have the header file. */ #undef HAVE_LIBINTL_H /* Define if you have the header file. */ #undef HAVE_LIMITS_H /* Define if you have the header file. */ #undef HAVE_LOCALE_H /* Define if you have the header file. */ #undef HAVE_MALLOC_H /* Define if you have the header file. */ #undef HAVE_MEMORY_H /* Define if you have the header file. */ #undef HAVE_STDBOOL_H /* Define if you have the header file. */ #undef HAVE_STDDEF_H /* Define if you have the header file. */ #undef HAVE_STDLIB_H /* Define if you have the header file. */ #undef HAVE_STRING_H /* Define if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define if you have the header file. */ #undef HAVE_UNISTD_H /* Define if you have the header file. */ #undef HAVE_UTIME_H /* Name of package */ #undef PACKAGE /* Version number of package */ #undef VERSION /* Define if compiler has function prototypes */ #undef PROTOTYPES /* Define if struct utimbuf is declared -- usually in . Some systems have utime.h but don't declare the struct anywhere. */ #undef HAVE_STRUCT_UTIMBUF /* Define if the malloc check has been performed. */ #undef HAVE_DONE_WORKING_MALLOC_CHECK /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define if the realloc check has been performed. */ #undef HAVE_DONE_WORKING_REALLOC_CHECK /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc /* Define if you have and nl_langinfo(CODESET). */ #undef HAVE_LANGINFO_CODESET /* Define if using the dmalloc debugging malloc package */ #undef WITH_DMALLOC /* Define if your locale.h file contains LC_MESSAGES. */ #undef HAVE_LC_MESSAGES recode-3.6/config.sub0100644000000000000000000005742307142144410013312 0ustar rootroot#! /bin/sh # Configuration validation subroutine script, version 1.1. # Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc. # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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 of the License, or # (at your option) any later version. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. if [ x$1 = x ] then echo Configuration name missing. 1>&2 echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 echo "or $0 ALIAS" 1>&2 echo where ALIAS is a recognized configuration type. 1>&2 exit 1 fi # First pass through any local machine types. case $1 in *local*) echo $1 exit 0 ;; *) ;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in linux-gnu*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ | 580 | i960 | h8300 \ | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ | alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \ | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ | mips64orion | mips64orionel | mipstx39 | mipstx39el \ | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ | mips64vr5000 | miprs64vr5000el | mcore \ | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ | thumb | d10v) basic_machine=$basic_machine-unknown ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i[34567]86) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. # FIXME: clean up the formatting here. vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ | xmp-* | ymp-* \ | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \ | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \ | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ | clipper-* | orion-* \ | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ | mips64el-* | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ | mipstx39-* | mipstx39el-* | mcore-* \ | f301-* | armv*-* | t3e-* \ | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ | thumb-* | v850-* | d30v-* | tic30-* | c30-* ) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-cbm ;; amigaos | amigados) basic_machine=m68k-cbm os=-amigaos ;; amigaunix | amix) basic_machine=m68k-cbm os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | ymp) basic_machine=ymp-cray os=-unicos ;; cray2) basic_machine=cray2-cray os=-unicos ;; [ctj]90-cray) basic_machine=c90-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm os=-mvs ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i[34567]86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i[34567]86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i[34567]86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i[34567]86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; i386-go32 | go32) basic_machine=i386-unknown os=-go32 ;; i386-mingw32 | mingw32) basic_machine=i386-unknown os=-mingw32 ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mipsel*-linux*) basic_machine=mipsel-unknown os=-linux-gnu ;; mips*-linux*) basic_machine=mips-unknown os=-linux-gnu ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; msdos) basic_machine=i386-unknown os=-msdos ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-corel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; np1) basic_machine=np1-gould ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexen) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexen-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=rs6000-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sparclite-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=t3e-cray os=-unicos ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xmp) basic_machine=xmp-cray os=-unicos ;; xps | xps100) basic_machine=xps100-honeywell ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; mips) if [ x$os = x-linux-gnu ]; then basic_machine=mips-unknown else basic_machine=mips-mips fi ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sparc | sparcv9) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; c4x*) basic_machine=c4x-none os=-coff ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -openstep* | -oskit*) # Remember, each alternative MUST END IN *, to match a version number. ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -ns2 ) os=-nextstep2 ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -*MiNT) os=-mint ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-corel) os=-linux ;; arm*-semi) os=-aout ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f301-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -*MiNT) vendor=atari ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os recode-3.6/configure0100755000000000000000000037073007224653000013241 0ustar rootroot#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Defaults: ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: ac_help="$ac_help --enable-shared[=PKGS] build shared libraries [default=yes]" ac_help="$ac_help --enable-static[=PKGS] build static libraries [default=yes]" ac_help="$ac_help --enable-fast-install[=PKGS] optimize for fast installation [default=yes]" ac_help="$ac_help --with-gnu-ld assume the C compiler uses GNU ld [default=no]" ac_help="$ac_help --disable-libtool-lock avoid locking (might break parallel builds)" ac_help="$ac_help --with-dmalloc use dmalloc, as in ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz" ac_help="$ac_help --disable-nls disallow Native Language Support" ac_help="$ac_help --with-catgets say that catgets is not supported" ac_help="$ac_help --without-included-gettext avoid our provided version of gettext" # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. build=NONE cache_file=./config.cache exec_prefix=NONE host=NONE no_create= nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= target=NONE verbose= x_includes=NONE x_libraries=NONE bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' # Initialize some other variables. subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. ac_max_here_lines=12 ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi case "$ac_option" in -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) ac_optarg= ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case "$ac_option" in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir="$ac_optarg" ;; -build | --build | --buil | --bui | --bu) ac_prev=build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build="$ac_optarg" ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir="$ac_optarg" ;; -disable-* | --disable-*) ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "enable_${ac_feature}='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix="$ac_optarg" ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he) # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat << EOF Usage: configure [options] [host] Options: [defaults in brackets after descriptions] Configuration: --cache-file=FILE cache test results in FILE --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [same as prefix] --bindir=DIR user executables in DIR [EPREFIX/bin] --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] --libexecdir=DIR program executables in DIR [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data in DIR [PREFIX/share] --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data in DIR [PREFIX/com] --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] --libdir=DIR object code libraries in DIR [EPREFIX/lib] --includedir=DIR C header files in DIR [PREFIX/include] --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR EOF if test -n "$ac_help"; then echo "--enable and --with options recognized:$ac_help" fi exit 0 ;; -host | --host | --hos | --ho) ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) host="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir="$ac_optarg" ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix="$ac_optarg" ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix="$ac_optarg" ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix="$ac_optarg" ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name="$ac_optarg" ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir="$ac_optarg" ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site="$ac_optarg" ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir="$ac_optarg" ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers) echo "configure generated by autoconf version 2.13" exit 0 ;; -with-* | --with-*) ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` eval "with_${ac_package}=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes="$ac_optarg" ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries="$ac_optarg" ;; -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; *) if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then echo "configure: warning: $ac_option: invalid host type" 1>&2 fi if test "x$nonopt" != xNONE; then { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } fi nonopt="$ac_option" ;; esac done if test -n "$ac_prev"; then { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... messages and results # 5 compiler messages saved in config.log if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>./config.log echo "\ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. " 1>&5 # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell metacharacters. ac_configure_args= for ac_arg do case "$ac_arg" in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ac_configure_args="$ac_configure_args '$ac_arg'" ;; *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally # because not all systems understand e.g. LANG=C (notably SCO). # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! # Non-C LC_CTYPE values break the ctype check. if test "${LANG+set}" = set; then LANG=C; export LANG; fi if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo > confdefs.h # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. ac_unique_file=src/recode.c # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_prog=$0 ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then echo "loading site script $ac_site_file" . "$ac_site_file" fi done if test -r "$cache_file"; then echo "loading cache $cache_file" . $cache_file else echo "creating cache $cache_file" > $cache_file fi ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross ac_exeext= ac_objext=o if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break fi done if test -z "$ac_aux_dir"; then { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 echo "configure:579: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" for ac_dir in $PATH; do # Account for people who put trailing slashes in PATH elements. case "$ac_dir/" in /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do if test -f $ac_dir/$ac_prog; then if test $ac_prog = install && grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : else ac_cv_path_install="$ac_dir/$ac_prog -c" break 2 fi fi done ;; esac done IFS="$ac_save_IFS" fi if test "${ac_cv_path_install+set}" = set; then INSTALL="$ac_cv_path_install" else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL="$ac_install_sh" fi fi echo "$ac_t""$INSTALL" 1>&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 echo "configure:632: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "$*" != "X $srcdir/configure conftestfile" \ && test "$*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { echo "configure: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" 1>&2; exit 1; } fi test "$2" = conftestfile ) then # Ok. : else { echo "configure: error: newly created file is older than distributed files! Check your system clock" 1>&2; exit 1; } fi rm -f conftest* echo "$ac_t""yes" 1>&6 if test "$program_transform_name" = s,x,x,; then program_transform_name= else # Double any \ or $. echo might interpret backslashes. cat <<\EOF_SED > conftestsed s,\\,\\\\,g; s,\$,$$,g EOF_SED program_transform_name="`echo $program_transform_name|sed -f conftestsed`" rm -f conftestsed fi test "$program_prefix" != NONE && program_transform_name="s,^,${program_prefix},; $program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" # sed with no file args requires a program. test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 echo "configure:689: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftestmake <<\EOF all: @echo 'ac_maketemp="${MAKE}"' EOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftestmake fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$ac_t""yes" 1>&6 SET_MAKE= else echo "$ac_t""no" 1>&6 SET_MAKE="MAKE=${MAKE-make}" fi PACKAGE=recode VERSION=3.6 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } fi cat >> confdefs.h <> confdefs.h <&6 echo "configure:735: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (aclocal --version) < /dev/null > /dev/null 2>&1; then ACLOCAL=aclocal echo "$ac_t""found" 1>&6 else ACLOCAL="$missing_dir/missing aclocal" echo "$ac_t""missing" 1>&6 fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 echo "configure:748: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoconf --version) < /dev/null > /dev/null 2>&1; then AUTOCONF=autoconf echo "$ac_t""found" 1>&6 else AUTOCONF="$missing_dir/missing autoconf" echo "$ac_t""missing" 1>&6 fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 echo "configure:761: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (automake --version) < /dev/null > /dev/null 2>&1; then AUTOMAKE=automake echo "$ac_t""found" 1>&6 else AUTOMAKE="$missing_dir/missing automake" echo "$ac_t""missing" 1>&6 fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 echo "configure:774: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoheader --version) < /dev/null > /dev/null 2>&1; then AUTOHEADER=autoheader echo "$ac_t""found" 1>&6 else AUTOHEADER="$missing_dir/missing autoheader" echo "$ac_t""missing" 1>&6 fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 echo "configure:787: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (makeinfo --version) < /dev/null > /dev/null 2>&1; then MAKEINFO=makeinfo echo "$ac_t""found" 1>&6 else MAKEINFO="$missing_dir/missing makeinfo" echo "$ac_t""missing" 1>&6 fi AT_TESTPATH=../src echo $ac_n "checking how to suppress newlines using echo""... $ac_c" 1>&6 echo "configure:803: checking how to suppress newlines using echo" >&5 if eval "test \"`echo '$''{'fp_cv_prog_echo_nonl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then fp_cv_prog_echo_nonl=no else fp_cv_prog_echo_nonl=option fi else fp_cv_prog_echo_nonl=escape fi fi echo "$ac_t""$fp_cv_prog_echo_nonl" 1>&6 test $fp_cv_prog_echo_nonl = no \ && echo 2>&1 "WARNING: \`echo' not powerful enough for \`make check'" case $fp_cv_prog_echo_nonl in no) ECHO_N= ECHO_C= ;; option) ECHO_N=-n ECHO_C= ;; escape) ECHO_N= ECHO_C='\c' ;; esac ALL_LINGUAS="da de el es fr gl it nl pl pt sl sv" # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:834: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="gcc" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:864: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" break fi done IFS="$ac_save_ifs" if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$ac_dir/$ac_word" "$@" shift ac_cv_prog_CC="$@" fi fi fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then case "`uname -s`" in *win32* | *WIN32*) # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:915: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="cl" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi ;; esac fi test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:947: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF #line 958 "configure" #include "confdefs.h" main(){return(0);} EOF if { (eval echo configure:963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ac_cv_prog_cc_cross=no else ac_cv_prog_cc_cross=yes fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:989: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 echo "configure:994: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no fi fi echo "$ac_t""$ac_cv_prog_gcc" 1>&6 if test $ac_cv_prog_gcc = yes; then GCC=yes else GCC= fi ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 echo "configure:1022: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then ac_cv_prog_cc_g=yes else ac_cv_prog_cc_g=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 if test "$ac_test_CFLAGS" = set; then CFLAGS="$ac_save_CFLAGS" elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo "configure:1054: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else # This must be in double quotes, not single quotes, because CPP may get # substituted into the Makefile and "${CC-cc}" will confuse make. CPP="${CC-cc} -E" # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP=/lib/cpp fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* ac_cv_prog_CPP="$CPP" fi CPP="$ac_cv_prog_CPP" else ac_cv_prog_CPP="$CPP" fi echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for AIX""... $ac_c" 1>&6 echo "configure:1134: checking for AIX" >&5 cat > conftest.$ac_ext <&5 | egrep "yes" >/dev/null 2>&1; then rm -rf conftest* echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF #define _ALL_SOURCE 1 EOF else rm -rf conftest* echo "$ac_t""no" 1>&6 fi rm -f conftest* ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6 echo "configure:1159: checking for minix/config.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 MINIX=yes else echo "$ac_t""no" 1>&6 MINIX= fi if test "$MINIX" = yes; then cat >> confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF cat >> confdefs.h <<\EOF #define _POSIX_1_SOURCE 2 EOF cat >> confdefs.h <<\EOF #define _MINIX 1 EOF fi # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case "$enableval" in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case "$enableval" in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac else enable_static=yes fi # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case "$enableval" in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac else enable_fast_install=yes fi # Make sure we can run config.sub. if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 echo "configure:1282: checking host system type" >&5 host_alias=$host case "$host_alias" in NONE) case $nonopt in NONE) if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } fi ;; *) host_alias=$nonopt ;; esac ;; esac host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 echo "configure:1303: checking build system type" >&5 build_alias=$build case "$build_alias" in NONE) case $nonopt in NONE) build_alias=$host_alias ;; *) build_alias=$nonopt ;; esac ;; esac build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$build" 1>&6 # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1323: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_RANLIB="ranlib" break fi done IFS="$ac_save_ifs" test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" fi fi RANLIB="$ac_cv_prog_RANLIB" if test -n "$RANLIB"; then echo "$ac_t""$RANLIB" 1>&6 else echo "$ac_t""no" 1>&6 fi # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 echo "configure:1362: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 echo "configure:1386: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 echo "configure:1389: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ac_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else ac_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$ac_cv_path_LD" if test -n "$LD"; then echo "$ac_t""$LD" 1>&6 else echo "$ac_t""no" 1>&6 fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 echo "configure:1424: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then ac_cv_prog_gnu_ld=yes else ac_cv_prog_gnu_ld=no fi fi echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 echo "configure:1440: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$NM"; then # Let the user override the test. ac_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -B" break elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -p" break else ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm fi fi NM="$ac_cv_path_NM" echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 echo "configure:1476: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else rm -f conftestdata if ln -s X conftestdata 2>/dev/null then rm -f conftestdata ac_cv_prog_LN_S="ln -s" else ac_cv_prog_LN_S=ln fi fi LN_S="$ac_cv_prog_LN_S" if test "$ac_cv_prog_LN_S" = "ln -s"; then echo "$ac_t""yes" 1>&6 else echo "$ac_t""no" 1>&6 fi case "$target" in NONE) lt_target="$host" ;; *) lt_target="$target" ;; esac # Check for any special flags to pass to ltconfig. libtool_flags="--cache-file=$cache_file" test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" : fi test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" # Some flags need to be propagated to the compiler or linker for good # libtool support. case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. echo '#line 1525 "configure"' > conftest.$ac_ext if { (eval echo configure:1526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 echo "configure:1547: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* lt_cv_cc_needs_belf=no fi rm -f conftest* fi echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac # Save cache, so that ltconfig can load it cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache # Actually configure libtool. ac_aux_dir is where install-sh is found. CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ || { echo "configure: error: libtool configure failed" 1>&2; exit 1; } # Reload cache, that may have been modified by ltconfig if test -r "$cache_file"; then echo "loading cache $cache_file" . $cache_file else echo "creating cache $cache_file" > $cache_file fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Redirect the config.log output again, so that the ltconfig log is not # clobbered by the next message. exec 5>>./config.log echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 echo "configure:1662: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then echo "$ac_t""yes" 1>&6 ISC=yes # If later tests want to check for ISC. cat >> confdefs.h <<\EOF #define _POSIX_SOURCE 1 EOF if test "$GCC" = yes; then CC="$CC -posix" else CC="$CC -Xp" fi else echo "$ac_t""no" 1>&6 ISC= fi echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 echo "configure:1686: checking for ${CC-cc} option to accept ANSI C" >&5 if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else am_cv_prog_cc_stdc=no ac_save_CC="$CC" # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" cat > conftest.$ac_ext < #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main() { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } EOF if { (eval echo configure:1739: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* am_cv_prog_cc_stdc="$ac_arg"; break else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* done CC="$ac_save_CC" fi if test -z "$am_cv_prog_cc_stdc"; then echo "$ac_t""none needed" 1>&6 else echo "$ac_t""$am_cv_prog_cc_stdc" 1>&6 fi case "x$am_cv_prog_cc_stdc" in x|xno) ;; *) CC="$CC $am_cv_prog_cc_stdc" ;; esac echo $ac_n "checking for function prototypes""... $ac_c" 1>&6 echo "configure:1765: checking for function prototypes" >&5 if test "$am_cv_prog_cc_stdc" != no; then echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF #define PROTOTYPES 1 EOF U= ANSI2KNR= else echo "$ac_t""no" 1>&6 U=_ ANSI2KNR=./ansi2knr # Ensure some checks needed by ansi2knr itself. echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 echo "configure:1778: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include #include #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* ac_cv_header_stdc=yes else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') #define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF if { (eval echo configure:1858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* ac_cv_header_stdc=no fi rm -fr conftest* fi fi fi echo "$ac_t""$ac_cv_header_stdc" 1>&6 if test $ac_cv_header_stdc = yes; then cat >> confdefs.h <<\EOF #define STDC_HEADERS 1 EOF fi for ac_hdr in string.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:1885: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:1895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` cat >> confdefs.h <&6 fi done fi echo $ac_n "checking for working const""... $ac_c" 1>&6 echo "configure:1924: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } ; return 0; } EOF if { (eval echo configure:1978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_c_const=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_c_const" 1>&6 if test $ac_cv_c_const = no; then cat >> confdefs.h <<\EOF #define const EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 echo "configure:1999: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* done fi echo "$ac_t""$ac_cv_c_inline" 1>&6 case "$ac_cv_c_inline" in inline | yes) ;; no) cat >> confdefs.h <<\EOF #define inline EOF ;; *) cat >> confdefs.h <&6 echo "configure:2043: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_LEX="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi LEX="$ac_cv_prog_LEX" if test -n "$LEX"; then echo "$ac_t""$LEX" 1>&6 else echo "$ac_t""no" 1>&6 fi test -n "$LEX" && break done test -n "$LEX" || LEX="missing" if test "$LEX" = missing; then LEX="\$(top_srcdir)/$ac_aux_dir/missing flex" LEX_OUTPUT_ROOT=lex.yy else # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:2080: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_LEX="flex" break fi done IFS="$ac_save_ifs" test -z "$ac_cv_prog_LEX" && ac_cv_prog_LEX="lex" fi fi LEX="$ac_cv_prog_LEX" if test -n "$LEX"; then echo "$ac_t""$LEX" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$LEXLIB" then case "$LEX" in flex*) ac_lib=fl ;; *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 echo "configure:2114: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 LEXLIB="-l$ac_lib" else echo "$ac_t""no" 1>&6 fi fi echo $ac_n "checking lex output file root""... $ac_c" 1>&6 echo "configure:2156: checking lex output file root" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else # The minimal lex program is just a single line: %%. But some broken lexes # (Solaris, I think it was) want two %% lines, so accommodate them. echo '%% %%' | $LEX if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy else { echo "configure: error: cannot find output from $LEX; giving up" 1>&2; exit 1; } fi fi echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 echo "configure:2177: checking whether yytext is a pointer" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c ac_save_LIBS="$LIBS" LIBS="$LIBS $LEXLIB" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_prog_lex_yytext_pointer=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* LIBS="$ac_save_LIBS" rm -f "${LEX_OUTPUT_ROOT}.c" fi echo "$ac_t""$ac_cv_prog_lex_yytext_pointer" 1>&6 if test $ac_cv_prog_lex_yytext_pointer = yes; then cat >> confdefs.h <<\EOF #define YYTEXT_POINTER 1 EOF fi fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 echo "configure:2220: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include #include #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:2233: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* ac_cv_header_stdc=yes else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else rm -rf conftest* ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') #define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* ac_cv_header_stdc=no fi rm -fr conftest* fi fi fi echo "$ac_t""$ac_cv_header_stdc" 1>&6 if test $ac_cv_header_stdc = yes; then cat >> confdefs.h <<\EOF #define STDC_HEADERS 1 EOF fi for ac_hdr in limits.h locale.h memory.h stdbool.h stddef.h stdlib.h string.h unistd.h utime.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:2327: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:2337: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` cat >> confdefs.h <&6 fi done echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 echo "configure:2364: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include #ifdef signal #undef signal #endif #ifdef __cplusplus extern "C" void (*signal (int, void (*)(int)))(int); #else void (*signal ()) (); #endif int main() { int i; ; return 0; } EOF if { (eval echo configure:2386: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_type_signal=int fi rm -f conftest* fi echo "$ac_t""$ac_cv_type_signal" 1>&6 cat >> confdefs.h <&6 echo "configure:2405: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include #include int main() { struct tm *tp; ; return 0; } EOF if { (eval echo configure:2419: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_header_time=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_header_time" 1>&6 if test $ac_cv_header_time = yes; then cat >> confdefs.h <<\EOF #define TIME_WITH_SYS_TIME 1 EOF fi for ac_hdr in utime.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:2444: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:2454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` cat >> confdefs.h <&6 fi done echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6 echo "configure:2482: checking for struct utimbuf" >&5 if eval "test \"`echo '$''{'fu_cv_sys_struct_utimbuf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #ifdef HAVE_UTIME_H # include #endif int main() { static struct utimbuf x; x.actime = x.modtime; ; return 0; } EOF if { (eval echo configure:2508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* fu_cv_sys_struct_utimbuf=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* fu_cv_sys_struct_utimbuf=no fi rm -f conftest* fi echo "$ac_t""$fu_cv_sys_struct_utimbuf" 1>&6 if test $fu_cv_sys_struct_utimbuf = yes; then cat >> confdefs.h <&6 echo "configure:2534: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:2562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 fi done for ac_func in strtol strtoul do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:2589: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:2617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" fi done # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 echo "configure:2646: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF if { (eval echo configure:2658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_header_alloca_h=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_header_alloca_h" 1>&6 if test $ac_cv_header_alloca_h = yes; then cat >> confdefs.h <<\EOF #define HAVE_ALLOCA_H 1 EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 echo "configure:2679: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < # define alloca _alloca # else # if HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); # endif # endif # endif # endif #endif int main() { char *p = (char *) alloca(1); ; return 0; } EOF if { (eval echo configure:2712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_func_alloca_works=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_func_alloca_works" 1>&6 if test $ac_cv_func_alloca_works = yes; then cat >> confdefs.h <<\EOF #define HAVE_ALLOCA 1 EOF fi if test $ac_cv_func_alloca_works = no; then # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=alloca.${ac_objext} cat >> confdefs.h <<\EOF #define C_ALLOCA 1 EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 echo "configure:2744: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5 | egrep "webecray" >/dev/null 2>&1; then rm -rf conftest* ac_cv_os_cray=yes else rm -rf conftest* ac_cv_os_cray=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_os_cray" 1>&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:2774: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:2802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 cat >> confdefs.h <&6 fi done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 echo "configure:2829: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext < addr) ? 1 : -1; } main () { exit (find_stack_direction() < 0); } EOF if { (eval echo configure:2856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* ac_cv_c_stack_direction=-1 fi rm -fr conftest* fi fi echo "$ac_t""$ac_cv_c_stack_direction" 1>&6 cat >> confdefs.h <&6 echo "configure:2878: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char vprintf(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_vprintf) || defined (__stub___vprintf) choke me #else vprintf(); #endif ; return 0; } EOF if { (eval echo configure:2906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_vprintf=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF #define HAVE_VPRINTF 1 EOF else echo "$ac_t""no" 1>&6 fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 echo "configure:2930: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char _doprnt(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub__doprnt) || defined (__stub____doprnt) choke me #else _doprnt(); #endif ; return 0; } EOF if { (eval echo configure:2958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func__doprnt=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF #define HAVE_DOPRNT 1 EOF else echo "$ac_t""no" 1>&6 fi fi cat >> confdefs.h <&6 echo "configure:2990: checking for working malloc" >&5 if eval "test \"`echo '$''{'jm_cv_func_working_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then jm_cv_func_working_malloc=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then jm_cv_func_working_malloc=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* jm_cv_func_working_malloc=no fi rm -fr conftest* fi fi echo "$ac_t""$jm_cv_func_working_malloc" 1>&6 if test $jm_cv_func_working_malloc = no; then LIBOBJS="$LIBOBJS malloc.$ac_objext" cat >> confdefs.h <> confdefs.h <&6 echo "configure:3041: checking for working realloc" >&5 if eval "test \"`echo '$''{'jm_cv_func_working_realloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then jm_cv_func_working_realloc=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then jm_cv_func_working_realloc=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* jm_cv_func_working_realloc=no fi rm -fr conftest* fi fi echo "$ac_t""$jm_cv_func_working_realloc" 1>&6 if test $jm_cv_func_working_realloc = no; then LIBOBJS="$LIBOBJS realloc.$ac_objext" cat >> confdefs.h </dev/null 2>&1; then : else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 echo "configure:3094: checking host system type" >&5 host_alias=$host case "$host_alias" in NONE) case $nonopt in NONE) if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } fi ;; *) host_alias=$nonopt ;; esac ;; esac host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 for ac_hdr in langinfo.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:3119: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:3129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` cat >> confdefs.h <&6 fi done for ac_func in nl_langinfo do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:3158: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:3186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 fi done echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6 echo "configure:3212: checking for nl_langinfo and CODESET" >&5 if eval "test \"`echo '$''{'jm_cv_langinfo_codeset'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char* cs = nl_langinfo(CODESET); ; return 0; } EOF if { (eval echo configure:3224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* jm_cv_langinfo_codeset=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* jm_cv_langinfo_codeset=no fi rm -f conftest* fi echo "$ac_t""$jm_cv_langinfo_codeset" 1>&6 if test $jm_cv_langinfo_codeset = yes; then cat >> confdefs.h <<\EOF #define HAVE_LANGINFO_CODESET 1 EOF fi echo $ac_n "checking whether we are using the GNU C Library 2.1 or newer""... $ac_c" 1>&6 echo "configure:3247: checking whether we are using the GNU C Library 2.1 or newer" >&5 if eval "test \"`echo '$''{'ac_cv_gnu_library_2_1'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif EOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "Lucky GNU user" >/dev/null 2>&1; then rm -rf conftest* ac_cv_gnu_library_2_1=yes else rm -rf conftest* ac_cv_gnu_library_2_1=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_gnu_library_2_1" 1>&6 GLIBC21="$ac_cv_gnu_library_2_1" echo $ac_n "checking if malloc debugging is wanted""... $ac_c" 1>&6 echo "configure:3284: checking if malloc debugging is wanted" >&5 # Check whether --with-dmalloc or --without-dmalloc was given. if test "${with_dmalloc+set}" = set; then withval="$with_dmalloc" if test "$withval" = yes; then echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF #define WITH_DMALLOC 1 EOF LIBS="$LIBS -ldmalloc" LDFLAGS="$LDFLAGS -g" else echo "$ac_t""no" 1>&6 fi else echo "$ac_t""no" 1>&6 fi echo $ac_n "checking whether NLS is wanted""... $ac_c" 1>&6 echo "configure:3307: checking whether NLS is wanted" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" enable_nls=$enableval else enable_nls=yes fi echo "$ac_t""$enable_nls" 1>&6 use_nls=$enable_nls if test $use_nls = yes; then USE_NLS_TRUE= USE_NLS_FALSE='#' else USE_NLS_TRUE='#' USE_NLS_FALSE= fi if test $enable_nls = yes; then cat >> confdefs.h <<\EOF #define ENABLE_NLS 1 EOF # Check whether --with-catgets or --without-catgets was given. if test "${with_catgets+set}" = set; then withval="$with_catgets" echo "configure: warning: catgets not supported, --with-catgets ignored" 1>&2 fi for ac_func in gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:3344: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:3372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 fi done echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 echo "configure:3397: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 : else echo "$ac_t""no" 1>&6 fi if test $ac_cv_lib_intl_gettext$ac_cv_func_gettext != nono; then echo $ac_n "checking whether the included gettext is preferred""... $ac_c" 1>&6 echo "configure:3438: checking whether the included gettext is preferred" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" with_included_gettext=$withval else with_included_gettext=yes fi echo "$ac_t""$with_included_gettext" 1>&6 if test $with_included_gettext$ac_cv_func_gettext = nono; then LIBS="$LIBS -lintl" fi else with_included_gettext=yes fi if test $with_included_gettext = yes; then LIBOBJS="$LIBOBJS gettext.o" cat >> confdefs.h <<\EOF #define HAVE_GETTEXT 1 EOF cat >> confdefs.h <<\EOF #define HAVE_DCGETTEXT 1 EOF else for ac_hdr in libintl.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:3469: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:3479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` cat >> confdefs.h <&6 fi done for ac_func in dcgettext gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:3508: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:3536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 fi done fi for ac_hdr in argz.h limits.h locale.h malloc.h string.h unistd.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:3566: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:3576: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` cat >> confdefs.h <&6 fi done for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "configure:3606: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:3616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` cat >> confdefs.h <&6 fi done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:3645: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:3673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 echo "configure:3698: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext < #include #include /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE # ifdef HAVE_UNISTD_H # include # endif /* Assume that all systems that can run configure have sys/param.h. */ # ifndef HAVE_SYS_PARAM_H # define HAVE_SYS_PARAM_H 1 # endif # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ # ifdef HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE # else /* no EXEC_PAGESIZE */ # ifdef NBPG # define getpagesize() NBPG * CLSIZE # ifndef CLSIZE # define CLSIZE 1 # endif /* no CLSIZE */ # else /* no NBPG */ # ifdef NBPC # define getpagesize() NBPC # else /* no NBPC */ # ifdef PAGESIZE # define getpagesize() PAGESIZE # endif /* PAGESIZE */ # endif /* no NBPC */ # endif /* no NBPG */ # endif /* no EXEC_PAGESIZE */ # else /* no HAVE_SYS_PARAM_H */ # define getpagesize() 8192 /* punt totally */ # endif /* no HAVE_SYS_PARAM_H */ # endif /* no _SC_PAGESIZE */ #endif /* no HAVE_GETPAGESIZE */ #ifdef __cplusplus extern "C" { void *malloc(unsigned); } #else char *malloc(); #endif int main() { char *data, *data2, *data3; int i, pagesize; int fd; pagesize = getpagesize(); /* * First, make a file with some known garbage in it. */ data = malloc(pagesize); if (!data) exit(1); for (i = 0; i < pagesize; ++i) *(data + i) = rand(); umask(0); fd = creat("conftestmmap", 0600); if (fd < 0) exit(1); if (write(fd, data, pagesize) != pagesize) exit(1); close(fd); /* * Next, try to mmap the file at a fixed address which * already has something else allocated at it. If we can, * also make sure that we see the same garbage. */ fd = open("conftestmmap", O_RDWR); if (fd < 0) exit(1); data2 = malloc(2 * pagesize); if (!data2) exit(1); data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) exit(1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) exit(1); /* * Finally, make sure that changes to the mapped area * do not percolate back to the file as seen by read(). * (This is a bug on some variants of i386 svr4.0.) */ for (i = 0; i < pagesize; ++i) *(data2 + i) = *(data2 + i) + 1; data3 = malloc(pagesize); if (!data3) exit(1); if (read(fd, data3, pagesize) != pagesize) exit(1); for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) exit(1); close(fd); unlink("conftestmmap"); exit(0); } EOF if { (eval echo configure:3846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* ac_cv_func_mmap_fixed_mapped=no fi rm -fr conftest* fi fi echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >> confdefs.h <<\EOF #define HAVE_MMAP 1 EOF fi for ac_func in getcwd mempcpy munmap setlocale stpcpy strcasecmp strchr strdup __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:3871: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else $ac_func(); #endif ; return 0; } EOF if { (eval echo configure:3899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` cat >> confdefs.h <&6 fi done if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 echo "configure:3925: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF if { (eval echo configure:3937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* am_cv_val_LC_MESSAGES=no fi rm -f conftest* fi echo "$ac_t""$am_cv_val_LC_MESSAGES" 1>&6 if test $am_cv_val_LC_MESSAGES = yes; then cat >> confdefs.h <<\EOF #define HAVE_LC_MESSAGES 1 EOF fi fi if test -z "$ALL_LINGUAS"; then echo "configure: warning: This package does not install translations yet." 1>&2 else ac_items="$ALL_LINGUAS" for ac_item in $ac_items; do ALL_POFILES="$ALL_POFILES $ac_item.po" ALL_MOFILES="$ALL_MOFILES $ac_item.mo" done fi echo $ac_n "checking which translations to install""... $ac_c" 1>&6 echo "configure:3972: checking which translations to install" >&5 if test -z "$LINGUAS"; then ac_print="$ALL_LINGUAS" MOFILES="$ALL_MOFILES" else ac_items="$LINGUAS" for ac_item in $ac_items; do case "$ALL_LINGUAS" in *$ac_item*) ac_print="$ac_print $ac_item" MOFILES="$MOFILES $ac_item.mo" ;; esac done fi if test -z "$ac_print"; then echo "$ac_t""none" 1>&6 else echo "$ac_t""$ac_print" 1>&6 fi if test "x$prefix" = xNONE; then cat >> confdefs.h <> confdefs.h < confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Any assignment to VPATH causes Sun make to only execute # the first set of double-colon rules, so remove it if not needed. # If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 DEFS=-DHAVE_CONFIG_H # Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} echo creating $CONFIG_STATUS rm -f $CONFIG_STATUS cat > $CONFIG_STATUS </dev/null | sed 1q`: # # $0 $ac_configure_args # # Compiler output produced by configure, useful for debugging # configure, is in ./config.log if it exists. ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" for ac_option do case "\$ac_option" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) echo "$CONFIG_STATUS generated by autoconf version 2.13" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; *) echo "\$ac_cs_usage"; exit 1 ;; esac done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" trap 'rm -fr `echo "Makefile contrib/Makefile doc/Makefile i18n/Makefile lib/Makefile libiconv/Makefile m4/Makefile src/Makefile tests/Makefile tests/atconfig config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF $ac_vpsub $extrasub s%@SHELL@%$SHELL%g s%@CFLAGS@%$CFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g s%@FFLAGS@%$FFLAGS%g s%@DEFS@%$DEFS%g s%@LDFLAGS@%$LDFLAGS%g s%@LIBS@%$LIBS%g s%@exec_prefix@%$exec_prefix%g s%@prefix@%$prefix%g s%@program_transform_name@%$program_transform_name%g s%@bindir@%$bindir%g s%@sbindir@%$sbindir%g s%@libexecdir@%$libexecdir%g s%@datadir@%$datadir%g s%@sysconfdir@%$sysconfdir%g s%@sharedstatedir@%$sharedstatedir%g s%@localstatedir@%$localstatedir%g s%@libdir@%$libdir%g s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_DATA@%$INSTALL_DATA%g s%@PACKAGE@%$PACKAGE%g s%@VERSION@%$VERSION%g s%@ACLOCAL@%$ACLOCAL%g s%@AUTOCONF@%$AUTOCONF%g s%@AUTOMAKE@%$AUTOMAKE%g s%@AUTOHEADER@%$AUTOHEADER%g s%@MAKEINFO@%$MAKEINFO%g s%@SET_MAKE@%$SET_MAKE%g s%@AT_TESTPATH@%$AT_TESTPATH%g s%@ECHO_N@%$ECHO_N%g s%@ECHO_C@%$ECHO_C%g s%@CC@%$CC%g s%@CPP@%$CPP%g s%@host@%$host%g s%@host_alias@%$host_alias%g s%@host_cpu@%$host_cpu%g s%@host_vendor@%$host_vendor%g s%@host_os@%$host_os%g s%@build@%$build%g s%@build_alias@%$build_alias%g s%@build_cpu@%$build_cpu%g s%@build_vendor@%$build_vendor%g s%@build_os@%$build_os%g s%@RANLIB@%$RANLIB%g s%@LN_S@%$LN_S%g s%@LIBTOOL@%$LIBTOOL%g s%@U@%$U%g s%@ANSI2KNR@%$ANSI2KNR%g s%@LEX@%$LEX%g s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%g s%@LEXLIB@%$LEXLIB%g s%@LIBOBJS@%$LIBOBJS%g s%@ALLOCA@%$ALLOCA%g s%@GLIBC21@%$GLIBC21%g s%@USE_NLS_TRUE@%$USE_NLS_TRUE%g s%@USE_NLS_FALSE@%$USE_NLS_FALSE%g s%@ALL_LINGUAS@%$ALL_LINGUAS%g s%@ALL_POFILES@%$ALL_POFILES%g s%@ALL_MOFILES@%$ALL_MOFILES%g s%@MOFILES@%$MOFILES%g s%@LTALLOCA@%$LTALLOCA%g s%@LTLIBOBJS@%$LTLIBOBJS%g CEOF EOF cat >> $CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. ac_file=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_cmds # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file else sed "${ac_end}q" conftest.subs > conftest.s$ac_file fi if test ! -s conftest.s$ac_file; then ac_more_lines=false rm -f conftest.s$ac_file else if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f conftest.s$ac_file" else ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" fi ac_file=`expr $ac_file + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_cmds` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` else ac_dir_suffix= ac_dots= fi case "$ac_given_srcdir" in .) srcdir=. if test -z "$ac_dots"; then top_srcdir=. else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" top_srcdir="$ac_dots$ac_given_srcdir" ;; esac case "$ac_given_INSTALL" in [/$]*) INSTALL="$ac_given_INSTALL" ;; *) INSTALL="$ac_dots$ac_given_INSTALL" ;; esac echo creating "$ac_file" rm -f "$ac_file" configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." case "$ac_file" in *Makefile*) ac_comsub="1i\\ # $configure_input" ;; *) ac_comsub= ;; esac ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` sed -e "$ac_comsub s%@configure_input@%$configure_input%g s%@srcdir@%$srcdir%g s%@top_srcdir@%$top_srcdir%g s%@INSTALL@%$INSTALL%g " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file fi; done rm -f conftest.s* # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' ac_dC='\3' ac_dD='%g' # ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='\([ ]\)%\1#\2define\3' ac_uC=' ' ac_uD='\4%g' # ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_eB='$%\1#\2define\3' ac_eC=' ' ac_eD='%g' if test "${CONFIG_HEADERS+set}" != set; then EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF fi for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac echo creating $ac_file rm -f conftest.frag conftest.in conftest.out ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` cat $ac_file_inputs > conftest.in EOF # Transform confdefs.h into a sed script conftest.vals that substitutes # the proper values into config.h.in to produce config.h. And first: # Protect against being on the right side of a sed subst in config.status. # Protect against being in an unquoted here document in config.status. rm -f conftest.vals cat > conftest.hdr <<\EOF s/[\\&%]/\\&/g s%[\\$`]%\\&%g s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp s%ac_d%ac_u%gp s%ac_u%ac_e%gp EOF sed -n -f conftest.hdr confdefs.h > conftest.vals rm -f conftest.hdr # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >> conftest.vals <<\EOF s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% EOF # Break up conftest.vals because some shells have a limit on # the size of here documents, and old seds have small limits too. rm -f conftest.tail while : do ac_lines=`grep -c . conftest.vals` # grep -c gives empty output for an empty file on some AIX systems. if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi # Write a limited-size here document to conftest.frag. echo ' cat > conftest.frag <> $CONFIG_STATUS sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS echo 'CEOF sed -f conftest.frag conftest.in > conftest.out rm -f conftest.in mv conftest.out conftest.in ' >> $CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail rm -f conftest.vals mv conftest.tail conftest.vals done rm -f conftest.vals cat >> $CONFIG_STATUS <<\EOF rm -f conftest.frag conftest.h echo "/* $ac_file. Generated automatically by configure. */" > conftest.h cat conftest.in >> conftest.h rm -f conftest.in if cmp -s $ac_file conftest.h 2>/dev/null; then echo "$ac_file is unchanged" rm -f conftest.h else # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" fi rm -f $ac_file mv conftest.h $ac_file fi fi; done EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h exit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 recode-3.6/configure.in0100644000000000000000000000245207224645136013647 0ustar rootroot# Configure template for GNU recode. # Copyright (C) 1994-1999, 2000, 2001 Free Software Foundation, Inc. # Process this file with autoconf to produce a configure script. AC_INIT(src/recode.c) AC_PREREQ(2.12) AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE(recode, 3.6) AT_CONFIG(../src) ALL_LINGUAS="da de el es fr gl it nl pl pt sl sv" AC_PROG_CC AC_AIX AC_MINIX AM_PROG_LIBTOOL AC_ISC_POSIX AM_C_PROTOTYPES AC_C_CONST AC_C_INLINE ad_AC_PROG_FLEX AC_HEADER_STDC AC_CHECK_HEADERS(limits.h locale.h memory.h stdbool.h stddef.h stdlib.h string.h unistd.h utime.h) AC_TYPE_SIGNAL jm_STRUCT_UTIMBUF AC_CHECK_FUNCS(dup2 mbrtowc rename setlocale strerror strndup wcrtomb) AC_REPLACE_FUNCS(strtol strtoul) AC_FUNC_ALLOCA AC_FUNC_VPRINTF jm_FUNC_MALLOC jm_FUNC_REALLOC AC_SUBST(LIBOBJS) AC_CANONICAL_HOST jm_LANGINFO_CODESET jm_GLIBC21 AM_WITH_DMALLOC fp_WITH_GETTEXT # This is necessary so that .o files in LIBOBJS are also built via # the ANSI2KNR-filtering rules. LIBOBJS=`echo $LIBOBJS | sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'` LTALLOCA=`echo $ALLOCA | sed 's/\.o/.lo/g'` AC_SUBST(LTALLOCA) LTLIBOBJS=`echo $LIBOBJS | sed 's/\.o /.lo /g;s/\.o$/.lo/'` AC_SUBST(LTLIBOBJS) AC_OUTPUT(Makefile contrib/Makefile doc/Makefile i18n/Makefile lib/Makefile libiconv/Makefile m4/Makefile src/Makefile tests/Makefile tests/atconfig) recode-3.6/install-sh0100755000000000000000000001274307142144413013335 0ustar rootroot#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 recode-3.6/ltconfig0100755000000000000000000027432607142144411013071 0ustar rootroot#! /bin/sh # ltconfig - Create a system-specific libtool. # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This file 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 of the License, or # (at your option) any later version. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A lot of this script is taken from autoconf-2.10. # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} echo=echo if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec "$SHELL" "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null`} case X$UNAME in *-DOS) PATH_SEPARATOR=';' ;; *) PATH_SEPARATOR=':' ;; esac fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string="`eval $cmd`") 2>/dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then break fi done fi if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running ltconfig again with it. ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf "%s\n"' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then # Cool, printf works : elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # The name of this program. progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` # Constants: PROGRAM=ltconfig PACKAGE=libtool VERSION=1.3.4 TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)" ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' rm="rm -f" help="Try \`$progname --help' for more information." # Global variables: default_ofile=libtool can_build_shared=yes enable_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). enable_static=yes enable_fast_install=yes enable_dlopen=unknown enable_win32_dll=no ltmain= silent= srcdir= ac_config_guess= ac_config_sub= host= nonopt= ofile="$default_ofile" verify_host=yes with_gcc=no with_gnu_ld=no need_locks=yes ac_ext=c objext=o libext=a exeext= cache_file= old_AR="$AR" old_CC="$CC" old_CFLAGS="$CFLAGS" old_CPPFLAGS="$CPPFLAGS" old_LDFLAGS="$LDFLAGS" old_LD="$LD" old_LN_S="$LN_S" old_LIBS="$LIBS" old_NM="$NM" old_RANLIB="$RANLIB" old_DLLTOOL="$DLLTOOL" old_OBJDUMP="$OBJDUMP" old_AS="$AS" # Parse the command line options. args= prev= for option do case "$option" in -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then eval "$prev=\$option" prev= continue fi case "$option" in --help) cat <&2 echo "$help" 1>&2 exit 1 ;; *) if test -z "$ltmain"; then ltmain="$option" elif test -z "$host"; then # This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 # if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then # echo "$progname: warning \`$option' is not a valid host type" 1>&2 # fi host="$option" else echo "$progname: too many arguments" 1>&2 echo "$help" 1>&2 exit 1 fi ;; esac done if test -z "$ltmain"; then echo "$progname: you must specify a LTMAIN file" 1>&2 echo "$help" 1>&2 exit 1 fi if test ! -f "$ltmain"; then echo "$progname: \`$ltmain' does not exist" 1>&2 echo "$help" 1>&2 exit 1 fi # Quote any args containing shell metacharacters. ltconfig_args= for arg do case "$arg" in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ltconfig_args="$ltconfig_args '$arg'" ;; *) ltconfig_args="$ltconfig_args $arg" ;; esac done # A relevant subset of AC_INIT. # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 5 compiler messages saved in config.log # 6 checking for... messages and results if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>>./config.log # NLS nuisances. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi if test -n "$cache_file" && test -r "$cache_file"; then echo "loading cache $cache_file within ltconfig" . $cache_file fi if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi if test -z "$srcdir"; then # Assume the source directory is the same one as the path to LTMAIN. srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` test "$srcdir" = "$ltmain" && srcdir=. fi trap "$rm conftest*; exit 1" 1 2 15 if test "$verify_host" = yes; then # Check for config.guess and config.sub. ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/config.guess; then ac_aux_dir=$ac_dir break fi done if test -z "$ac_aux_dir"; then echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 echo "$help" 1>&2 exit 1 fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub # Make sure we can run config.sub. if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : else echo "$progname: cannot run $ac_config_sub" 1>&2 echo "$help" 1>&2 exit 1 fi echo $ac_n "checking host system type""... $ac_c" 1>&6 host_alias=$host case "$host_alias" in "") if host_alias=`$SHELL $ac_config_guess`; then : else echo "$progname: cannot guess host type; you must specify one" 1>&2 echo "$help" 1>&2 exit 1 fi ;; esac host=`$SHELL $ac_config_sub $host_alias` echo "$ac_t$host" 1>&6 # Make sure the host verified. test -z "$host" && exit 1 elif test -z "$host"; then echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 echo "$help" 1>&2 exit 1 else host_alias=$host fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case "$host_os" in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` case "$host_os" in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR cru $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= # Set a sane default for `AR'. test -z "$AR" && AR=ar # Set a sane default for `OBJDUMP'. test -z "$OBJDUMP" && OBJDUMP=objdump # If RANLIB is not set, then run the test. if test "${RANLIB+set}" != "set"; then result=no echo $ac_n "checking for ranlib... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then RANLIB="ranlib" result="ranlib" break fi done IFS="$save_ifs" echo "$ac_t$result" 1>&6 fi if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" fi # Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$AS" && AS=as # Check to see if we are using GCC. if test "$with_gcc" != yes || test -z "$CC"; then # If CC is not set, then try to find GCC or a usable CC. if test -z "$CC"; then echo $ac_n "checking for gcc... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then CC="gcc" break fi done IFS="$save_ifs" if test -n "$CC"; then echo "$ac_t$CC" 1>&6 else echo "$ac_t"no 1>&6 fi fi # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". if test -z "$CC"; then echo $ac_n "checking for cc... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" cc_rejected=no for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/cc || test -f $dir/cc$ac_exeext; then if test "$dir/cc" = "/usr/ucb/cc"; then cc_rejected=yes continue fi CC="cc" break fi done IFS="$save_ifs" if test $cc_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $CC shift if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same name, so the bogon will be chosen # first if we set CC to just the name; use the full file name. shift set dummy "$dir/cc" "$@" shift CC="$@" fi fi if test -n "$CC"; then echo "$ac_t$CC" 1>&6 else echo "$ac_t"no 1>&6 fi if test -z "$CC"; then echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 exit 1 fi fi # Now see if the compiler is really GCC. with_gcc=no echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 echo "$progname:581: checking whether we are using GNU C" >&5 $rm conftest.c cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then with_gcc=yes fi $rm conftest.c echo "$ac_t$with_gcc" 1>&6 fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" echo $ac_n "checking for object suffix... $ac_c" 1>&6 $rm conftest* echo 'int i = 1;' > conftest.c echo "$progname:603: checking for object suffix" >& 5 if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then # Append any warnings to the config.log. cat conftest.err 1>&5 for ac_file in conftest.*; do case $ac_file in *.c) ;; *) objext=`echo $ac_file | sed -e s/conftest.//` ;; esac done else cat conftest.err 1>&5 echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* echo "$ac_t$objext" 1>&6 echo $ac_n "checking for executable suffix... $ac_c" 1>&6 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_exeext="no" $rm conftest* echo 'main () { return 0; }' > conftest.c echo "$progname:629: checking for executable suffix" >& 5 if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then # Append any warnings to the config.log. cat conftest.err 1>&5 for ac_file in conftest.*; do case $ac_file in *.c | *.err | *.$objext ) ;; *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; esac done else cat conftest.err 1>&5 echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* fi if test "X$ac_cv_exeext" = Xno; then exeext="" else exeext="$ac_cv_exeext" fi echo "$ac_t$ac_cv_exeext" 1>&6 echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 pic_flag= special_shlib_compile_flags= wl= link_static_flag= no_builtin_flag= if test "$with_gcc" = yes; then wl='-Wl,' link_static_flag='-static' case "$host_os" in beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # we not sure about C++ programs. link_static_flag="$link_static_flag ${wl}-lC" ;; cygwin* | mingw* | os2*) # We can build DLLs from non-PIC. ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. pic_flag='-m68020 -resident32 -malways-restore-a4' ;; sysv4*MP*) if test -d /usr/nec; then pic_flag=-Kconform_pic fi ;; *) pic_flag='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case "$host_os" in aix3* | aix4*) # All AIX code is PIC. link_static_flag='-bnso -bI:/lib/syscalls.exp' ;; hpux9* | hpux10* | hpux11*) # Is there a better link_static_flag that works with the bundled CC? wl='-Wl,' link_static_flag="${wl}-a ${wl}archive" pic_flag='+Z' ;; irix5* | irix6*) wl='-Wl,' link_static_flag='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | os2*) # We can build DLLs from non-PIC. ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. wl='-Wl,' link_static_flag='-non_shared' ;; sco3.2v5*) pic_flag='-Kpic' link_static_flag='-dn' special_shlib_compile_flags='-belf' ;; solaris*) pic_flag='-KPIC' link_static_flag='-Bstatic' wl='-Wl,' ;; sunos4*) pic_flag='-PIC' link_static_flag='-Bstatic' wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) pic_flag='-KPIC' link_static_flag='-Bstatic' wl='-Wl,' ;; uts4*) pic_flag='-pic' link_static_flag='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then pic_flag='-Kconform_pic' link_static_flag='-Bstatic' fi ;; *) can_build_shared=no ;; esac fi if test -n "$pic_flag"; then echo "$ac_t$pic_flag" 1>&6 # Check to make sure the pic_flag actually works. echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $pic_flag -DPIC" echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then # Append any warnings to the config.log. cat conftest.err 1>&5 case "$host_os" in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then they # create non-PIC objects. So, if there were any warnings, we assume that # PIC is not supported. if test -s conftest.err; then echo "$ac_t"no 1>&6 can_build_shared=no pic_flag= else echo "$ac_t"yes 1>&6 pic_flag=" $pic_flag" fi ;; *) echo "$ac_t"yes 1>&6 pic_flag=" $pic_flag" ;; esac else # Append any errors to the config.log. cat conftest.err 1>&5 can_build_shared=no pic_flag= echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* else echo "$ac_t"none 1>&6 fi # Check to see if options -o and -c are simultaneously supported by compiler echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 $rm -r conftest 2>/dev/null mkdir conftest cd conftest $rm conftest* echo "int some_variable = 0;" > conftest.c mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.o" echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then echo "$ac_t"no 1>&6 compiler_c_o=no else echo "$ac_t"yes 1>&6 compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 compiler_c_o=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then echo "$ac_t"no 1>&6 compiler_o_lo=no else echo "$ac_t"yes 1>&6 compiler_o_lo=yes fi else # Append any errors to the config.log. cat conftest.err 1>&5 compiler_o_lo=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* else compiler_o_lo=no fi # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$ac_t$hard_links" 1>&6 $rm conftest* if test "$hard_links" = no; then echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 need_locks=warn fi else need_locks=no fi if test "$with_gcc" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then echo "$ac_t"no 1>&6 compiler_rtti_exceptions=no else echo "$ac_t"yes 1>&6 compiler_rtti_exceptions=yes fi else # Append any errors to the config.log. cat conftest.err 1>&5 compiler_rtti_exceptions=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi # Check for any special shared library compilation flags. if test -n "$special_shlib_compile_flags"; then echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : else echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 can_build_shared=no fi fi echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 $rm conftest* echo 'main(){return(0);}' > conftest.c save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $link_static_flag" echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then echo "$ac_t$link_static_flag" 1>&6 else echo "$ac_t"none 1>&6 link_static_flag= fi LDFLAGS="$save_LDFLAGS" $rm conftest* if test -z "$LN_S"; then # Check to see if we can use ln -s, or we need hard links. echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 $rm conftest.dat if ln -s X conftest.dat 2>/dev/null; then $rm conftest.dat LN_S="ln -s" else LN_S=ln fi if test "$LN_S" = "ln -s"; then echo "$ac_t"yes 1>&6 else echo "$ac_t"no 1>&6 fi fi # Make sure LD is an absolute path. if test -z "$LD"; then ac_prog=ld if test "$with_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 echo "$progname:991: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we are not using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld... $ac_c" 1>&6 echo "$progname:1015: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 echo "$progname:1018: checking for non-GNU ld" >&5 fi if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" fi if test -n "$LD"; then echo "$ac_t$LD" 1>&6 else echo "$ac_t"no 1>&6 fi if test -z "$LD"; then echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 exit 1 fi fi # Check to see if it really is or is not GNU ld. echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then with_gnu_ld=yes else with_gnu_ld=no fi echo "$ac_t$with_gnu_ld" 1>&6 # See if the linker supports building shared libraries. echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. case "$host_os" in cygwin* | mingw*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$with_gcc" != yes; then with_gnu_ld=no fi ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case "$host_os" in aix3* | aix4*) # On AIX, the GNU linker is very broken ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols' archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ _lt_hint=1; for symbol in `cat $export_symbols`; do echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def; _lt_hint=`expr 1 + \$_lt_hint`; done~ test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' # can we support soname and/or expsyms with a.out? -oliva fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case "$host_os" in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$with_gcc" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4*) hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' hardcode_libdir_separator=':' if test "$with_gcc" = yes; then collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi shared_flag='-shared' else shared_flag='${wl}-bM:SRE' hardcode_direct=yes fi allow_undefined_flag=' ${wl}-berok' archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' case "$host_os" in aix4.[01]|aix4.[01].*) # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on always_export_symbols=yes ;; esac ;; amigaos*) archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs' fix_srcfile_path='`cygpath -w $srcfile`' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case "$host_os" in hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$with_gcc" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF fi hardcode_libdir_flag_spec='${wl}-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; openbsd*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' ;; osf3*) if test "$with_gcc" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # As osf3* with the addition of the -msym flag if test "$with_gcc" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case "$host_os" in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; unixware7*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$ac_t$ld_shlibs" 1>&6 test "$ld_shlibs" = no && can_build_shared=no if test -z "$NM"; then echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 case "$NM" in [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then NM="$ac_dir/nm -B" break elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then NM="$ac_dir/nm -p" break else NM=${NM="$ac_dir/nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$NM" && NM=nm ;; esac echo "$ac_t$NM" 1>&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Define system-specific variables. case "$host_os" in aix*) symcode='[BCDT]' ;; cygwin* | mingw*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" ;; irix*) symcode='[BCDEGRST]' ;; solaris*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no $rm conftest* cat > conftest.c <&5 if { (eval echo $progname:1636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then # Now try to grab the symbols. nlist=conftest.nm if { echo "$progname:1639: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.c #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' cat <> conftest.c #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c cat <<\EOF >> conftest.c {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$objext conftstm.$objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo $progname:1691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then pipe_works=yes else echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi LIBS="$save_LIBS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else global_symbol_pipe= fi done if test "$pipe_works" = yes; then echo "${ac_t}ok" 1>&6 else echo "${ac_t}failed" 1>&6 fi if test -z "$global_symbol_pipe"; then global_symbol_to_cdecl= fi # Check hardcoding attributes. echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$ac_t$hardcode_action" 1>&6 reload_flag= reload_cmds='$LD$reload_flag -o $output$reload_objs' echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 # PORTME Some linkers may need a different reload flag. reload_flag='-r' echo "$ac_t$reload_flag" 1>&6 test -n "$reload_flag" && reload_flag=" $reload_flag" # PORTME Fill in your ld.so characteristics library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" file_magic_cmd= file_magic_test_file= deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [regex]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 case "$host_os" in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4*) version_type=linux # AIX has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. # We preserve .a as extension for shared libraries though AIX4.2 # and later linker supports .so library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' shlibpath_var=LIBPATH deplibs_check_method=pass_all ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH deplibs_check_method=pass_all lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' file_magic_cmd=/usr/bin/file file_magic_test_file=/shlib/libc.so sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw*) version_type=windows need_version=no need_lib_prefix=no if test "$with_gcc" = yes; then library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' else library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' fi dynamic_linker='Win32 ld.exe' deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' file_magic_cmd='${OBJDUMP} -f' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case "$version_type" in freebsd-elf*) deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /usr/lib/libc.so*` library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) deplibs_check_method=unknown library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case "$host_os" in freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes ;; *) # from 3.2 on shlibpath_overrides_runpath=no ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so.$major' library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' case "$host_os" in irix5*) libsuff= shlibsuff= # this will be overridden with pass_all, but let us keep it just in case deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case "$LD" in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /lib${libsuff}/libc.so*` deplibs_check_method='pass_all' ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` if test -f /lib/ld.so.1; then dynamic_linker='GNU ld.so' else # Only the GNU ld.so supports shared libraries on MkLinux. case "$host_cpu" in powerpc*) dynamic_linker=no ;; *) dynamic_linker='Linux ld.so' ;; esac fi ;; netbsd*) version_type=sunos if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH ;; openbsd*) version_type=sunos if test "$with_gnu_ld" = yes; then need_lib_prefix=no need_version=no fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH # this will be overridden with pass_all, but let us keep it just in case deplibs_check_method='file_magic COFF format alpha shared library' file_magic_cmd=/usr/bin/file file_magic_test_file=/shlib/libc.so deplibs_check_method='pass_all' sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" file_magic_cmd=/usr/bin/file file_magic_test_file=/lib/libc.so ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case "$host_vendor" in ncr) deplibs_check_method='pass_all' ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /usr/lib/libc.so*` ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$ac_t$dynamic_linker" 1>&6 test "$dynamic_linker" = no && can_build_shared=no # Report the final consequences. echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 # Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in # configure.in, otherwise build static only libraries. case "$host_os" in cygwin* | mingw* | os2*) if test x$can_build_shared = xyes; then test x$enable_win32_dll = xno && can_build_shared=no echo "checking if package supports dlls... $can_build_shared" 1>&6 fi ;; esac if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then case "$deplibs_check_method" in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4*) test "$enable_shared" = yes && enable_static=no ;; esac echo "$ac_t$enable_shared" 1>&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "checking whether to build static libraries... $enable_static" 1>&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi echo $ac_n "checking for objdir... $ac_c" 1>&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$ac_t$objdir" 1>&6 if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then lt_cv_dlopen=no lt_cv_dlopen_libs= echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 echo "$progname:2212: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen""... $ac_c" 1>&6 echo "$progname:2252: checking for dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else dlopen(); #endif ; return 0; } EOF if { (eval echo $progname:2282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dlopen=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_dlopen=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 echo "$progname:2299: checking for dld_link in -ldld" >&5 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load""... $ac_c" 1>&6 echo "$progname:2339: checking for shl_load" >&5 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else shl_load(); #endif ; return 0; } EOF if { (eval echo $progname:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shl_load=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_shl_load=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 echo "$progname:2387: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else echo "$ac_t""no" 1>&6 fi fi fi fi fi fi if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes fi case "$lt_cv_dlopen" in dlopen) for ac_hdr in dlfcn.h; do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "$progname:2452: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int fnord = 0; EOF ac_try="$ac_compile >/dev/null 2>conftest.out" { (eval echo $progname:2462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 else echo "$ac_t""no" 1>&6 fi done if test "x$ac_cv_header_dlfcn_h" = xyes; then CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" fi eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" LIBS="$lt_cv_dlopen_libs $LIBS" echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 echo "$progname:2490: checking whether a program can dlopen itself" >&5 if test "${lt_cv_dlopen_self+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then lt_cv_dlopen_self=cross else cat > conftest.c < #endif #include #ifdef RTLD_GLOBAL # define LTDL_GLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LTDL_GLOBAL DL_GLOBAL # else # define LTDL_GLOBAL 0 # endif #endif /* We may have to define LTDL_LAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LTDL_LAZY_OR_NOW # ifdef RTLD_LAZY # define LTDL_LAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LTDL_LAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LTDL_LAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LTDL_LAZY_OR_NOW DL_NOW # else # define LTDL_LAZY_OR_NOW 0 # endif # endif # endif # endif #endif fnord() { int i=42;} main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF if { (eval echo $progname:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self=yes else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* lt_cv_dlopen_self=no fi rm -fr conftest* fi fi echo "$ac_t""$lt_cv_dlopen_self" 1>&6 if test "$lt_cv_dlopen_self" = yes; then LDFLAGS="$LDFLAGS $link_static_flag" echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 echo "$progname:2563: checking whether a statically linked program can dlopen itself" >&5 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then lt_cv_dlopen_self_static=cross else cat > conftest.c < #endif #include #ifdef RTLD_GLOBAL # define LTDL_GLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LTDL_GLOBAL DL_GLOBAL # else # define LTDL_GLOBAL 0 # endif #endif /* We may have to define LTDL_LAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LTDL_LAZY_OR_NOW # ifdef RTLD_LAZY # define LTDL_LAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LTDL_LAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LTDL_LAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LTDL_LAZY_OR_NOW DL_NOW # else # define LTDL_LAZY_OR_NOW 0 # endif # endif # endif # endif #endif fnord() { int i=42;} main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF if { (eval echo $progname:2617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self_static=yes else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* lt_cv_dlopen_self_static=no fi rm -fr conftest* fi fi echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 fi ;; esac case "$lt_cv_dlopen_self" in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case "$lt_cv_dlopen_self_static" in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Copy echo and quote the copy, instead of the original, because it is # used later. ltecho="$echo" if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then ltecho="$CONFIG_SHELL \$0 --fallback-echo" fi LTSHELL="$SHELL" LTCONFIG_VERSION="$VERSION" # Only quote variables if we're using ltmain.sh. case "$ltmain" in *.sh) # Now quote all the things that may contain metacharacters. for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ old_LD old_LDFLAGS old_LIBS \ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case "$var" in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case "$ltecho" in *'\$0 --fallback-echo"') ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac trap "$rm \"$ofile\"; exit 1" 1 2 15 echo "creating $ofile" $rm "$ofile" cat < "$ofile" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program 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 of the License, or # (at your option) any later version. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ### BEGIN LIBTOOL CONFIG EOF cfgfile="$ofile" ;; *) # Double-quote the variables that need it (for aesthetics). for var in old_CC old_CFLAGS old_CPPFLAGS \ old_LD old_LDFLAGS old_LIBS \ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do eval "$var=\\\"\$var\\\"" done # Just create a config file. cfgfile="$ofile.cfg" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 echo "creating $cfgfile" $rm "$cfgfile" cat < "$cfgfile" # `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) EOF ;; esac cat <> "$cfgfile" # Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # # CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ # LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ # NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ # DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ # $0$ltconfig_args # # Compiler and other test output produced by $progname, useful for # debugging $progname, is in ./config.log if it exists. # The version of $progname that generated this script. LTCONFIG_VERSION=$LTCONFIG_VERSION # Shell to use when invoking shell scripts. SHELL=$LTSHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$ltecho # The archiver. AR=$AR # The default C compiler. CC=$CC # The linker used to build libraries. LD=$LD # Whether we need hard or soft links. LN_S=$LN_S # A BSD-compatible nm program. NM=$NM # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$reload_flag reload_cmds=$reload_cmds # How to pass a linker flag through the compiler. wl=$wl # Object file suffix (normally "o"). objext="$objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$pic_flag # Does compiler simultaneously support -c and -o options? compiler_c_o=$compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$compiler_o_lo # Must we lock files when doing compilation ? need_locks=$need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$library_names_spec # The coded name of the library, if different from the real name. soname_spec=$soname_spec # Commands used to build and install an old-style archive. RANLIB=$RANLIB old_archive_cmds=$old_archive_cmds old_postinstall_cmds=$old_postinstall_cmds old_postuninstall_cmds=$old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$old_archive_from_new_cmds # Commands used to build and install a shared archive. archive_cmds=$archive_cmds archive_expsym_cmds=$archive_expsym_cmds postinstall_cmds=$postinstall_cmds postuninstall_cmds=$postuninstall_cmds # Method to check whether dependent libraries are shared objects. deplibs_check_method=$deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$global_symbol_to_cdecl # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Compile-time system search path for libraries sys_lib_search_path_spec=$sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$exclude_expsyms # Symbols that must always be exported. include_expsyms=$include_expsyms EOF case "$ltmain" in *.sh) echo '### END LIBTOOL CONFIG' >> "$ofile" echo >> "$ofile" case "$host_os" in aix3*) cat <<\EOF >> "$ofile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # Append the ltmain.sh script. sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? chmod +x "$ofile" ;; *) # Compile the libtool program. echo "FIXME: would compile $ltmain" ;; esac test -n "$cache_file" || exit 0 # AC_CACHE_SAVE trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: recode-3.6/ltmain.sh0100644000000000000000000032770607142144412013160 0ustar rootroot# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun ltconfig. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program 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 of the License, or # (at your option) any later version. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then echo "$modename: not configured to build any kind of library" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" # Parse our command line options once, thoroughly. while test $# -gt 0 do arg="$1" shift case "$arg" in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case "$prev" in execute_dlfiles) eval "$prev=\"\$$prev \$arg\"" ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case "$arg" in --help) show_help=yes ;; --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" exit 0 ;; --config) sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 exit 0 ;; --debug) echo "$progname: enabling shell trace mode" set -x ;; --dry-run | -n) run=: ;; --features) echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit 0 ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --quiet | --silent) show=: ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit 1 ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then case "$nonopt" in *cc | *++ | gcc* | *-gcc*) mode=link for arg do case "$arg" in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit 1 fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case "$mode" in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= lastarg= srcfile="$nonopt" suppress_output= user_target=no for arg do # Accept any command-line options. case "$arg" in -o) if test "$user_target" != "no"; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit 1 fi user_target=next ;; -static) build_old_libs=yes continue ;; esac case "$user_target" in next) # The next one is the -o target name user_target=yes continue ;; yes) # We got the output file user_target=set libobj="$arg" continue ;; esac # Accept the current argument as the source file. lastarg="$srcfile" srcfile="$arg" # Aesthetically quote the previous argument. # Backslashify any backslashes, double quotes, and dollar signs. # These are the only characters that are still specially # interpreted inside of double-quoted scrings. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly in scan # sets, so we specify it separately. case "$lastarg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) lastarg="\"$lastarg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi done case "$user_target" in set) ;; no) # Get the name of the library object. libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; *) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit 1 ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSfmso]' case "$libobj" in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case "$libobj" in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit 1 ;; esac if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit 1 fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $libobj" else removelist="$libobj" fi $run $rm $removelist trap "$run $rm $removelist; exit 1" 1 2 15 # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit 1" 1 2 15 else need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until ln "$0" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" if test "$build_old_libs" = yes; then lo_libobj="$libobj" dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$libobj"; then dir="$objdir" else dir="$dir/$objdir" fi libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` if test -d "$dir"; then $show "$rm $libobj" $run $rm $libobj else $show "$mkdir $dir" $run $mkdir $dir status=$? if test $status -ne 0 && test ! -d $dir; then exit $status fi fi fi if test "$compiler_o_lo" = yes; then output_obj="$libobj" command="$command -o $output_obj" elif test "$compiler_c_o" = yes; then output_obj="$obj" command="$command -o $output_obj" fi $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else test -n "$output_obj" && $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed, then go on to compile the next one if test x"$output_obj" != x"$libobj"; then $show "$mv $output_obj $libobj" if $run $mv $output_obj $libobj; then : else error=$? $run $rm $removelist exit $error fi fi # If we have no pic_flag, then copy the object into place and finish. if test -z "$pic_flag" && test "$build_old_libs" = yes; then # Rename the .lo from within objdir to obj if test -f $obj; then $show $rm $obj $run $rm $obj fi $show "$mv $libobj $obj" if $run $mv $libobj $obj; then : else error=$? $run $rm $removelist exit $error fi xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` # Now arrange that obj and lo_libobj become the same file $show "(cd $xdir && $LN_S $baseobj $libobj)" if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then exit 0 else error=$? $run $rm $removelist exit $error fi fi # Allow error messages only from the first compilation. suppress_output=' >/dev/null 2>&1' fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then command="$base_compile $srcfile" if test "$compiler_c_o" = yes; then command="$command -o $obj" output_obj="$obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed if test x"$output_obj" != x"$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Create an invalid libtool object if no PIC, so that we do not # accidentally link it into a program. if test "$build_libtool_libs" != yes; then $show "echo timestamp > $libobj" $run eval "echo timestamp > \$libobj" || exit $? else # Move the .lo from within objdir $show "$mv $libobj $lo_libobj" if $run $mv $libobj $lo_libobj; then : else error=$? $run $rm $removelist exit $error fi fi fi # Unlock the critical section if it was locked if test "$need_locks" != no; then $rm "$lockfile" fi exit 0 ;; # libtool link mode link) modename="$modename: link" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invokation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program 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 of the License, or # (at your option) any later version. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (!dll) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test $# -gt 0; do arg="$1" shift # If the previous option needs an argument, assign it. if test -n "$prev"; then case "$prev" in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case "$prev" in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case "$arg" in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit 1 fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case "$arg" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi prevarg="$arg" case "$arg" in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: not more than one -exported-symbols argument allowed" exit 1 fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case "$dir" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 absdir="$dir" fi dir="$absdir" ;; esac case " $deplibs " in *" $arg "*) ;; *) deplibs="$deplibs $arg";; esac case " $lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir";; esac case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) dllsearchdir=`cd "$dir" && pwd || echo "$dir"` case ":$dllsearchpath:" in ::) dllsearchpath="$dllsearchdir";; *":$dllsearchdir:"*) ;; *) dllsearchpath="$dllsearchpath:$dllsearchdir";; esac ;; esac ;; -l*) if test "$arg" = "-lc"; then case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) # These systems don't actually have c library (as such) continue ;; esac elif test "$arg" = "-lm"; then case "$host" in *-*-cygwin* | *-*-beos*) # These systems don't actually have math library (as such) continue ;; esac fi deplibs="$deplibs $arg" ;; -module) module=yes continue ;; -no-undefined) allow_undefined=no continue ;; -o) prev=output ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case "$dir" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # If we have no pic_flag, then this is the same as -all-static. if test -z "$pic_flag" && test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac ;; *.o | *.obj | *.a | *.lib) # A standard object. objs="$objs $arg" ;; *.lo) # A library object. if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` prev= fi libobjs="$libobjs $arg" ;; *.la) # A libtool-controlled library. dlname= libdir= library_names= old_library= # Check to see that this really is a libtool archive. if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 exit 1 fi # If the library was installed with an old release of libtool, # it will not redefine variable installed. installed=yes # Read the .la file # If there is no directory component, then add one. case "$arg" in */* | *\\*) . $arg ;; *) . ./$arg ;; esac # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 exit 1 fi # Find the relevant object directory and library name. name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` if test "X$installed" = Xyes; then dir="$libdir" else dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$arg"; then dir="$objdir" else dir="$dir/$objdir" fi fi if test -n "$dependency_libs"; then # Extract -R and -L from dependency_libs temp_deplibs= for deplib in $dependency_libs; do case "$deplib" in -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` case " $rpath $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; -L*) case "$compile_command $temp_deplibs " in *" $deplib "*) ;; *) temp_deplibs="$temp_deplibs $deplib";; esac temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` case " $lib_search_path " in *" $temp_dir "*) ;; *) lib_search_path="$lib_search_path $temp_dir";; esac ;; *) temp_deplibs="$temp_deplibs $deplib";; esac done dependency_libs="$temp_deplibs" fi if test -z "$libdir"; then # It is a libtool convenience library, so add in its objects. convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$deplibs$dependency_libs" compile_command="$compile_command $dir/$old_library$dependency_libs" finalize_command="$finalize_command $dir/$old_library$dependency_libs" continue fi # This library was specified with -dlopen. if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking statically, # we need to preload. prev=dlprefiles else # We should not create a dependency on this library, but we # may need any libraries it requires. compile_command="$compile_command$dependency_libs" finalize_command="$finalize_command$dependency_libs" prev= continue fi fi # The library was specified with -dlpreopen. if test "$prev" = dlprefiles; then # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then dlprefiles="$dlprefiles $dir/$old_library" else dlprefiles="$dlprefiles $dir/$linklib" fi prev= fi if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then link_against_libtool_libs="$link_against_libtool_libs $arg" if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi # We need an absolute path. case "$dir" in [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 absdir="$dir" fi ;; esac # This is the magic to use -rpath. # Skip directories that are in the system default run-time # search path, unless they have been requested with -R. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac lib_linked=yes case "$hardcode_action" in immediate | unsupported) if test "$hardcode_direct" = no; then compile_command="$compile_command $dir/$linklib" deplibs="$deplibs $dir/$linklib" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) dllsearchdir=`cd "$dir" && pwd || echo "$dir"` if test -n "$dllsearchpath"; then dllsearchpath="$dllsearchpath:$dllsearchdir" else dllsearchpath="$dllsearchdir" fi ;; esac elif test "$hardcode_minus_L" = no; then case "$host" in *-*-sunos*) compile_shlibpath="$compile_shlibpath$dir:" ;; esac case "$compile_command " in *" -L$dir "*) ;; *) compile_command="$compile_command -L$dir";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -L$dir -l$name" elif test "$hardcode_shlibpath_var" = no; then case ":$compile_shlibpath:" in *":$dir:"*) ;; *) compile_shlibpath="$compile_shlibpath$dir:";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then compile_command="$compile_command $absdir/$linklib" deplibs="$deplibs $absdir/$linklib" elif test "$hardcode_minus_L" = yes; then case "$compile_command " in *" -L$absdir "*) ;; *) compile_command="$compile_command -L$absdir";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -L$absdir -l$name" elif test "$hardcode_shlibpath_var" = yes; then case ":$compile_shlibpath:" in *":$absdir:"*) ;; *) compile_shlibpath="$compile_shlibpath$absdir:";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit 1 fi # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then finalize_command="$finalize_command $libdir/$linklib" elif test "$hardcode_minus_L" = yes; then case "$finalize_command " in *" -L$libdir "*) ;; *) finalize_command="$finalize_command -L$libdir";; esac finalize_command="$finalize_command -l$name" elif test "$hardcode_shlibpath_var" = yes; then case ":$finalize_shlibpath:" in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:";; esac finalize_command="$finalize_command -l$name" else # We cannot seem to hardcode it, guess we'll fake it. case "$finalize_command " in *" -L$dir "*) ;; *) finalize_command="$finalize_command -L$libdir";; esac finalize_command="$finalize_command -l$name" fi else # Transform directly to old archives if we don't build new libraries. if test -n "$pic_flag" && test -z "$old_library"; then $echo "$modename: cannot find static library for \`$arg'" 1>&2 exit 1 fi # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_command="$compile_command $dir/$linklib" finalize_command="$finalize_command $dir/$linklib" else case "$compile_command " in *" -L$dir "*) ;; *) compile_command="$compile_command -L$dir";; esac compile_command="$compile_command -l$name" case "$finalize_command " in *" -L$dir "*) ;; *) finalize_command="$finalize_command -L$dir";; esac finalize_command="$finalize_command -l$name" fi fi # Add in any libraries that this one depends upon. compile_command="$compile_command$dependency_libs" finalize_command="$finalize_command$dependency_libs" continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac ;; esac # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" case "$output" in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit 1 ;; *.a | *.lib) if test -n "$link_against_libtool_libs"; then $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 exit 1 fi if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" ;; *.la) # Make sure we only generate libraries of the form `libNAME.la'. case "$outputname" in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi if test -n "$objs"; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 exit 1 fi # How the heck are we supposed to write a wrapper for a shared library? if test -n "$link_against_libtool_libs"; then $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 exit 1 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test $# -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. libext=al oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi dependency_libs="$deplibs" if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit 1 fi current="$2" revision="$3" age="$4" # Check that each of the things are valid numbers. case "$current" in 0 | [1-9] | [1-9][0-9]*) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case "$revision" in 0 | [1-9] | [1-9][0-9]*) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case "$age" in 0 | [1-9] | [1-9][0-9]*) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac if test $age -gt $current; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 fi # Calculate the version variables. major= versuffix= verstring= case "$version_type" in none) ;; irix) major=`expr $current - $age + 1` versuffix="$major.$revision" verstring="sgi$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test $loop != 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="sgi$major.$iface:$verstring" done ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test $loop != 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; windows) # Like Linux, but with '-' rather than '.', since we only # want one extension on Windows 95. major=`expr $current - $age` versuffix="-$major-$age-$revision" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= verstring="0.0" if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi dependency_libs="$deplibs" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *) # Add libc to deplibs on all other systems. deplibs="$deplibs -lc" ;; esac fi # Create the output directory, or remove our outputs if we need to. if test -d $output_objdir; then $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* else $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test $status -ne 0 && test ! -d $output_objdir; then exit $status fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi if test "$build_libtool_libs" = yes; then # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case "$deplibs_check_method" in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behaviour. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | sed 's/.* -> //'` case "$potliblink" in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | sed 10q \ | egrep "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: This library needs some functionality provided by $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | grep . >/dev/null; then echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" echo "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Get the real and link names of the library. eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Ensure that we have .o objects for linkers which dislike .lo # (e.g. aix) in case we are running --disable-static for obj in $libobjs; do xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` if test ! -f $xdir/$oldobj; then $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? fi done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols eval cmds=\"$export_symbols_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case "$xlib" in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linkopts="$linkopts $flag" fi # Do each of the archive commands. if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval cmds=\"$archive_expsym_cmds\" else eval cmds=\"$archive_cmds\" fi IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; *.lo | *.o | *.obj) if test -n "$link_against_libtool_libs"; then $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 exit 1 fi if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case "$output" in *.lo) if test -n "$objs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit 1 fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case "$xlib" in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" output="$obj" eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. $show "echo timestamp > $libobj" $run eval "echo timestamp > $libobj" || exit $? exit 0 fi if test -n "$pic_flag"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" else # Just create a symlink. $show $rm $libobj $run $rm $libobj xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$libobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` $show "(cd $xdir && $LN_S $oldobj $baseobj)" $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 ;; # Anything else should be a program. *) if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$compile_rpath " in *" $libdir "*) ;; *) compile_rpath="$compile_rpath $libdir" ;; esac case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the binary in the object directory, then wrap it. if test ! -d $output_objdir; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test $status -ne 0 && test ! -d $output_objdir; then exit $status fi fi if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case "$dlsyms" in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`echo "$arg" | sed -e 's%^.*/%%'` $run eval 'echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = {\ " sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr_t) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case "$host" in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit 1 ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case "$dir" in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $0 --fallback-echo"; then case "$0" in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; *) qecho="$SHELL `pwd`/$0 --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`echo $output|sed 's,.exe$,,'` ;; esac $rm $output trap "$rm $output; exit 1" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: link_against_libtool_libs='$link_against_libtool_libs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then echo >> $output "\ program=lt-'$outputname' progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if (cd \"\$thisdir\" && eval \$relink_command); then : else $rm \"\$progdir/\$file\" exit 1 fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in *-*-cygwin* | *-*-mingw | *-*-os2*) # win32 systems need to use the prog path for dll # lookup to work $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ # Export the path to the program. PATH=\"\$progdir:\$PATH\" export PATH exec \$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit 1 fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " chmod +x $output fi exit 0 ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case "$xlib" in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then eval cmds=\"$old_archive_from_new_cmds\" else # Ensure that we have .o objects in place in case we decided # not to build a shared library, and have fallen back to building # static libs even though --disable-static was passed! for oldobj in $oldobjs; do if test ! -f $oldobj; then xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$oldobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` $show "(cd $xdir && ${LN_S} $obj $baseobj)" $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? fi done eval cmds=\"$old_archive_cmds\" fi IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case "$output" in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" if test -n "$xrpath"; then temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" done dependency_libs="$temp_xrpath $dependency_libs" fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i fi $rm $output $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$dlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Directory that this library needs to be installed in: libdir='$install_libdir'\ " done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? ;; esac exit 0 ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case "$arg" in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit 1 fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test $# -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit 1 fi fi case "$destdir" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case "$file" in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case "$file" in *.a | *.lib) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi library_names= old_library= # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" test "X$dir" = "X$file/" && dir= dir="$dir$objdir" # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift # Install the shared library and build the symlinks. $show "$install_prog $dir/$realname $destdir/$realname" $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? if test $# -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" eval cmds=\"$postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case "$destfile" in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.o | *.obj) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit 0 ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then link_against_libtool_libs= relink_command= # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Check the variables that should have been set. if test -z "$link_against_libtool_libs"; then $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 exit 1 fi finalize=yes for lib in $link_against_libtool_libs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case "$lib" in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : else $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? # Do each command in the postinstall commands. eval cmds=\"$old_postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec $SHELL $0 --finish$current_libdirs exit 1 fi exit 0 ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. eval cmds=\"$finish_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit 0 echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do echo " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" echo "more information, such as the ld(1) and ld.so(8) manual pages." echo "----------------------------------------------------------------------" exit 0 ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit 1 fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit 1 fi dir= case "$file" in *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit 1 fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case "$file" in -*) ;; *) # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved enviroment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now actually exec the command. eval "exec \$cmd$args" $echo "$modename: cannot exec \$cmd$args" exit 1 else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit 0 fi ;; # libtool uninstall mode uninstall) modename="$modename: uninstall" rm="$nonopt" files= for arg do case "$arg" in -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit 1 fi for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` rmfiles="$file" case "$name" in *.la) # Possibly a libtool archive, so verify it. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $dir/$n" done test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" $show "$rm $rmfiles" $run $rm $rmfiles if test -n "$library_names"; then # Do each command in the postuninstall commands. eval cmds=\"$postuninstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. eval cmds=\"$old_postuninstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi ;; *.lo) if test "$build_old_libs" = yes; then oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` rmfiles="$rmfiles $dir/$oldobj" fi $show "$rm $rmfiles" $run $rm $rmfiles ;; *) $show "$rm $rmfiles" $run $rm $rmfiles ;; esac done exit 0 ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit 1 ;; esac $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit 1 fi # test -z "$show_help" # We need to display help for each of the modes. case "$mode" in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --version print version information MODE must be one of the following: compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE." exit 0 ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac echo $echo "Try \`$modename --help' for more information about other modes." exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: recode-3.6/missing0100755000000000000000000001637507142144412012734 0ustar rootroot#! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing 0.2 - GNU automake" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; tar) shift if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 fi # we have already tried tar in the generic part gnutar ${1+"$@"} && exit 0 gtar ${1+"$@"} && exit 0 firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" ${1+"$@"} && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" ${1+"$@"} && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 recode-3.6/mkinstalldirs0100755000000000000000000000133307142144412014127 0ustar rootroot#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.8 1997/06/25 17:03:22 meyering Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" 1>&2 mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here recode-3.6/COPYING-LIB0100644000000000000000000006364707142144410012776 0ustar rootroot GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. ^L Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. ^L GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. ^L Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. ^L 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. ^L 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. ^L 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. ^L 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS ^L How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! recode-3.6/PATCHES-AC0100644000000000000000000001014707105272743012627 0ustar rootroot--- acgeneral.m4 2000/05/07 12:55:24 1.1 +++ acgeneral.m4 2000/05/07 13:34:20 @@ -1085,6 +1085,9 @@ esac done +# Support of DJGPP port of bash. +if test -n "$COMSPEC$ComSpec"; then ac_x=-x; else ac_x=-f; fi + # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally # because not all systems understand e.g. LANG=C (notably SCO). @@ -1735,7 +1738,7 @@ # | => \`active' # | _AC_SH_QUOTE([\`active']) # | => \`active' -# | error-->c.in:8: warning: backquotes should not be backslashed\ +# | error-->c.in:8: WARNING: backquotes should not be backslashed\ # ... in: \`active' # define(_AC_SH_QUOTE, @@ -1787,7 +1790,7 @@ # AC_MSG_WARN(PROBLEM-DESCRIPTION) define(AC_MSG_WARN, -[_AC_ECHO([configure: warning: $1], 2)]) +[_AC_ECHO([configure: WARNING: $1], 2)]) # AC_MSG_ERROR(ERROR-DESCRIPTION, [EXIT-STATUS]) define(AC_MSG_ERROR, @@ -2029,7 +2032,7 @@ ac_dummy="ifelse([$5], , $PATH, [$5])" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then + if test $ac_x $ac_dir/$ac_word; then ifelse([$6], , , dnl [ if test "[$ac_dir/$ac_word]" = "$6"; then ac_prog_rejected=yes @@ -2110,7 +2113,7 @@ ac_dummy="ifelse([$4], , $PATH, [$4])" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_word"; then + if test $ac_x "$ac_dir/$ac_word"; then ac_cv_path_$1="$ac_dir/$ac_word" break fi @@ -3693,7 +3696,7 @@ .) srcdir=. if test -z "$ac_dots"; then top_srcdir=. else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + /* | ?:/*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" top_srcdir="$ac_dots$ac_given_srcdir" ;; @@ -3701,7 +3704,7 @@ ifdef([AC_PROVIDE_AC_PROG_INSTALL], [[ case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; + [/$]* | ?:/*) INSTALL="$ac_given_INSTALL" ;; *) INSTALL="$ac_dots$ac_given_INSTALL" ;; esac ]])dnl @@ -4009,7 +4012,7 @@ case "$srcdir" in changequote(, )dnl - [/$]*) ac_rel_source="$srcdir/$ac_source" ;; + [/$]* | ?:/*) ac_rel_source="$srcdir/$ac_source" ;; changequote([, ])dnl *) ac_rel_source="$ac_dots$srcdir/$ac_source" ;; esac @@ -4131,7 +4134,7 @@ case "$srcdir" in .) # No --srcdir option. We are building in place. ac_sub_srcdir=$srcdir ;; - /*) # Absolute path. + /* | ?:/*) # Absolute path. ac_sub_srcdir=$srcdir/$ac_config_dir ;; *) # Relative path. ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; @@ -4152,13 +4155,13 @@ # Make the cache file name correct relative to the subdirectory. case "$cache_file" in - /*) ac_sub_cache_file=$cache_file ;; + /* | ?:/*) ac_sub_cache_file=$cache_file ;; *) # Relative path. ac_sub_cache_file="$ac_dots$cache_file" ;; esac ifdef([AC_PROVIDE_AC_PROG_INSTALL], [[ case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; + [/$]* | ?:/*) INSTALL="$ac_given_INSTALL" ;; *) INSTALL="$ac_dots$ac_given_INSTALL" ;; esac ]])dnl --- acspecific.m4 2000/05/07 13:09:31 1.1 +++ acspecific.m4 2000/05/07 13:54:44 @@ -824,7 +824,7 @@ # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do - if test -f $ac_dir/$ac_prog; then + if test $ac_x $ac_dir/$ac_prog; then if test $ac_prog = install && grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -834,8 +834,14 @@ # program-specific install script used by HP pwplus--don't use. : else + if test $ac_prog = installbsd && + grep src/bos $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX installbsd doesn't work without option "-g". + : + else ac_cv_path_install="$ac_dir/$ac_prog -c" break 2 + fi fi fi done recode-3.6/rebox.el0100644000000000000000000007515007142144411012771 0ustar rootroot;;; Handling of comment boxes in various styles. ;;; Copyright © 1991,92,93,94,95,96,97,98,00 Progiciels Bourbeau-Pinard inc. ;;; François Pinard , April 1991. ;;; This program 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. ;;; This program 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 this program; if not, write to the Free Software Foundation, ;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ;;;; Introduction: ;; For comments held within boxes, it is painful to fill paragraphs, while ;; stretching or shrinking the surrounding box "by hand", as needed. This ;; piece of GNU Emacs LISP code eases my life on this. I find only fair, ;; while giving all sources for a package using such boxed comments, to also ;; give the means I use for nicely modifying comments. So here they are! ;;;; Installation: ;; For most Emacs language editing modes, refilling does not make sense ;; outside comments, one may redefine the `M-q' command and link it to this ;; file. For example, I use this in my `.emacs' file: ;; (add-hook 'c-mode-hook 'fp-c-mode-routine) ;; (defun fp-c-mode-routine () ;; (local-set-key "\M-q" 'rebox-comment)) ;; (autoload 'rebox-comment "rebox" nil t) ;; (autoload 'rebox-region "rebox" nil t) ;;;; Usage: ;; The function `rebox-comment' automatically discovers the extent of the ;; boxed comments near the cursor, possibly refills the text, then adjusts the ;; comment box style. When this command is executed, the cursor should be ;; within a comment, or else it should be between two comments, in which case ;; the command applies to the next comment. The function `rebox-region' does ;; the same, except that it takes the current region as a boxed comment. Both ;; commands obey numeric prefixes to add or remove a box, force a particular ;; box style, or to prevent refilling of text. Without such prefixes, the ;; commands may deduce the current comment box style from the comment itself ;; so the style is preserved. An unboxed comment is merely one of box styles. ;; A style is identified by three non-zero digits. The _convention_ about ;; style numbering is such the the hundreds digit roughly represents the ;; programming language, the tens digit roughly represents a box quality (or ;; weight) and the units digit roughly a box type (or figure). Language, ;; quality and types are collectively referred to as style attributes. ;; When rebuilding a boxed comment, attributes are selected independently of ;; each other. They may be specified by the digits of the value given as ;; Emacs commands argument prefix. If there is no such prefix, or if the ;; corresponding digit is zero, the attribute is taken from the value of the ;; default style instead. If the corresponding digit of the default style is ;; also zero, than the attribute is recognised and taken from the actual ;; comment box, as it existed before prior to the command. The value 1, which ;; is the simplest attribute, is ultimately taken if the recognition fails. ;; The default style initial value is nil or 0. It may be preset to another ;; value through setting `rebox-default-style' in Emacs LISP code, or changed ;; to anything else though using a negative value for a prefix, in which case ;; the default style is set to the absolute value of the prefix. ;; A `C-u' prefix avoids refilling the text, but forces using the default box ;; style. `C-u -' lets the user interact to select one attribute at a time. ;;;; Convention: ;; A programming language is associated with comment delimiters. Values are ;; 100 for none or unknown, 200 for `/*' and `*/' as in plain C, 300 for `//' ;; as in C++, 400 for `#' as in most scripting languages, 500 for `;' as in ;; LISP or assembler and 600 for `%' as in TeX or PostScript. ;; Box quality differs according to language. For unknown languages (100) or ;; for the C language (200), values are 10 for simple, 20 for rounded, and 30 ;; or 40 for starred. Simple quality boxes (10) use comment delimiters to ;; left and right of each comment line, and also for the top or bottom line ;; when applicable. Rounded quality boxes (20) try to suggest rounded corners ;; in boxes. Starred quality boxes (40) mostly use a left margin of asterisks ;; or X'es, and use them also in box surroundings. For all others languages, ;; box quality indicates the thickness in characters of the left and right ;; sides of the box: values are 10, 20, 30 or 40 for 1, 2, 3 or 4 characters ;; wide. With C++, quality 10 is not useful, you should force 20 instead. ;; Box type values are 1 for fully opened boxes for which boxing is done ;; only for the left and right but not for top or bottom, 2 for half ;; single lined boxes for which boxing is done on all sides except top, ;; 3 for fully single lined boxes for which boxing is done on all sides, ;; 4 for half double lined boxes which is like type 2 but more bold, ;; or 5 for fully double lined boxes which is like type 3 but more bold. ;; The special style 221 is for C comments between a single opening `/*' and a ;; single closing `*/'. The special style 111 deletes a box. ;;;; History: ;; I first observed rounded corners, as in style 223 boxes, in code from ;; Warren Tucker, a previous maintainer of the `shar' package. Besides very ;; sepecial files, I was carefully avoiding to use such boxes for real work, ;; as I found them much too hard to maintain. My friend Paul Provost was ;; working at Taarna, a computer graphics place, which had boxes as part of ;; their coding standards. He asked that we try something to get out of his ;; misery, and this how `rebox.el' was originally written. I did not plan to ;; use it for myself, but Paul was so enthusiastic that I timidly started to ;; use boxes in my things, very little at first, but more and more as time ;; passed, yet not fully sure it was a good move. Later, many friends ;; spontaneously started to use this tool for real, some being very serious ;; workers. This finally convinced me that boxes are acceptable, after all. ;; Template numbering dependent data. (defvar rebox-default-style nil "*Preferred style for box comments.") ;; Box templates. (defconst rebox-templates ;; Generic programming language templates. ;; Adding 300 replaces `?' by `/', for C++ style comments. ;; Adding 400 replaces `?' by `#', for scripting languages. ;; Adding 500 replaces `?' by ';', for LISP and assembler. ;; Adding 600 replaces `?' by `%', for TeX and PostScript. '((11 "? box") (12 "? box ?" "? --- ?") (13 "? --- ?" "? box ?" "? --- ?") (14 "? box ?" "???????") (15 "???????" "? box ?" "???????") (21 "?? box") (22 "?? box ??" "?? --- ??") (23 "?? --- ??" "?? box ??" "?? --- ??") (24 "?? box ??" "?????????") (25 "?????????" "?? box ??" "?????????") (31 "??? box") (32 "??? box ???" "??? --- ???") (33 "??? --- ???" "??? box ???" "??? --- ???") (34 "??? box ???" "???????????") (35 "???????????" "??? box ???" "???????????") (41 "???? box") (42 "???? box ????" "???? --- ????") (43 "???? --- ????" "???? box ????" "???? --- ????") (44 "???? box ????" "?????????????") (45 "?????????????" "???? box ????" "?????????????") ;; Textual (non programming) templates. (111 "box") (112 "| box |" "+-----+") (113 "+-----+" "| box |" "+-----+") (114 "| box |" "*=====*") (115 "*=====*" "| box |" "*=====*") (121 "| box |") (122 "| box |" "`-----'") (123 ".-----." "| box |" "`-----'") (124 "| box |" "\\=====/") (125 "/=====\\" "| box |" "\\=====/") (141 "| box ") (142 "* box *" "*******") (143 "*******" "* box *" "*******") (144 "X box X" "XXXXXXX") (145 "XXXXXXX" "X box X" "XXXXXXX") ;; C language templates. (211 "/* box */") (212 "/* box */" "/* --- */") (213 "/* --- */" "/* box */" "/* --- */") (214 "/* box */" "/* === */") (215 "/* === */" "/* box */" "/* === */") (221 "/* " " box" "*/") (222 "/* ." "| box |" "`----*/") (223 "/*----." "| box |" "`----*/") (224 "/* \\" "| box |" "\\====*/") (225 "/*====\\" "| box |" "\\====*/") (231 "/* " " | box" " */ ") (232 "/* " " | box | " " *-----*/") (233 "/*-----* " " | box | " " *-----*/") (234 "/* */" "/* box */" "/*-----*/") (235 "/*-----*/" "/* box */" "/*-----*/") (241 "/* " " * box" " */ ") (242 "/* * " " * box * " " *******/") (243 "/******* " " * box * " " *******/") (244 "/* */" "/* box */" "/*******/") (245 "/*******/" "/* box */" "/*******/") (251 "/* " " * box" " */ "))) ;; Template numbering dependent code. (defvar rebox-language-character-alist '((3 . "/") (4 . "#") (5 . ";") (6 . "%")) "Alist relating language to comment character, for generic languages.") ;;; Regexp to match the comment start, given a LANGUAGE value as index. (defvar rebox-regexp-start ["^[ \t]*\\(/\\*\\|//+\\|#+\\|;+\\|%+\\)" "^" ; 1 "^[ \t]*/\\*" ; 2 "^[ \t]*//+" ; 3 "^[ \t]*#+" ; 4 "^[ \t]*\;+" ; 5 "^[ \t]*%+" ; 6 ]) ;;; Request the style interactively, using the minibuffer. (defun rebox-ask-for-style () (let (key language quality type) (while (not language) (message "\ Box language is 100-none, 200-/*, 300-//, 400-#, 500-;, 600-%%") (setq key (read-char)) (when (and (>= key ?0) (<= key ?6)) (setq language (- key ?0)))) (while (not quality) (message "\ Box quality/width is 10-simple/1, 20-rounded/2, 30-starred/3 or 40-starred/4") (setq key (read-char)) (when (and (>= key ?0) (<= key ?4)) (setq quality (- key ?0)))) (while (not type) (message "\ Box type is 1-opened, 2-half-single, 3-single, 4-half-double or 5-double") (setq key (read-char)) (when (and (>= key ?0) (<= key ?5)) (setq type (- key ?0)))) (+ (* 100 language) (* 10 quality) type))) ;; Template ingestion. ;;; Information about registered templates. (defvar rebox-recognition-data) (defvar rebox-building-data) ;;; Register all box templates. (defun rebox-register-all-templates () (setq rebox-recognition-data nil rebox-building-data nil) (let ((templates rebox-templates)) (while templates (rebox-register-template (caar templates) (cdar templates)) (setq templates (cdr templates))))) ;;; Register a single box template. (defun rebox-register-template (style lines) "Digest and register a single template. The template is numbered STYLE, and is described by one to three LINES. If STYLE is below 100, it is generic for a few programming languages and within lines, `?' is meant to represent the language comment character. STYLE should be used only once through all `rebox-register-template' calls. One of the lines should contain the substring `box' to represent the comment to be boxed, and if three lines are given, `box' should appear in the middle one. Lines containing only spaces are implied as necessary before and after the the `box' line, so we have three lines. Normally, all three template lines should be of the same length. If the first line is shorter, it represents a start comment string to be bundled within the first line of the comment text. If the third line is shorter, it represents an end comment string to be bundled at the end of the comment text, and refilled with it." (cond ((< style 100) (let ((pairs rebox-language-character-alist) language character) (while pairs (setq language (caar pairs) character (cdar pairs) pairs (cdr pairs)) (rebox-register-template (+ (* 100 language) style) (mapcar (lambda (line) (while (string-match "\?" line) (setq line (replace-match character t t line))) line) lines))))) ((assq style rebox-building-data) (error "Style %d defined more than once")) (t (let (line1 line2 line3 regexp1 regexp2 regexp3 merge-nw merge-se nw nn ne ww ee sw ss se) (if (string-match "box" (car lines)) (setq line1 nil line2 (car lines) lines (cdr lines)) (setq line1 (car lines) line2 (cadr lines) lines (cddr lines)) (unless (string-match "box" line2) (error "Erroneous template for %d style" style))) (setq line3 (and lines (car lines))) (setq merge-nw (and line1 (< (length line1) (length line2))) merge-se (and line3 (< (length line3) (length line2))) nw (cond ((not line1) nil) (merge-nw line1) ((zerop (match-beginning 0)) nil) (t (substring line1 0 (match-beginning 0)))) nn (cond ((not line1) nil) (merge-nw nil) (t (let ((x (aref line1 (match-beginning 0)))) (if (= x ? ) nil x)))) ne (cond ((not line1) nil) (merge-nw nil) ((= (match-end 0) (length line1)) nil) (t (rebox-rstrip (substring line1 (match-end 0))))) ww (cond ((zerop (match-beginning 0)) nil) (t (substring line2 0 (match-beginning 0)))) ee (cond ((= (match-end 0) (length line2)) nil) (t (rebox-rstrip (substring line2 (match-end 0))))) sw (cond ((not line3) nil) (merge-se nil) ((zerop (match-beginning 0)) nil) (t (substring line3 0 (match-beginning 0)))) ss (cond ((not line3) nil) (merge-se nil) (t (let ((x (aref line3 (match-beginning 0)))) (if (= x ? ) nil x)))) se (cond ((not line3) nil) (merge-se (rebox-rstrip line3)) ((= (match-end 0) (length line3)) nil) (t (rebox-rstrip (substring line3 (match-end 0)))))) (setq rebox-building-data (cons (cons style (vector merge-nw merge-se nw nn ne ww ee sw ss se)) rebox-building-data)) (setq regexp1 (cond (merge-nw (concat "^[ \t]*" (rebox-regexp-quote nw))) ((and nw (not nn) (not ne)) (concat "^[ \t]*" (rebox-regexp-quote nw) "[ \t]*$")) ((or nw nn ne) (concat "^[ \t]*" (rebox-regexp-quote nw) "[ \t]*" (regexp-quote (make-string 3 (or nn ? ))) "*[ \t]*" (rebox-regexp-quote ne) "[ \t]*$"))) regexp2 (and (not (string-equal (rebox-rstrip (concat ww ee)) "")) (concat "^[ \t]*" (rebox-regexp-quote ww) "...*[ \t]*" (rebox-regexp-quote ee) "[ \t]*$")) regexp3 (cond (merge-se (concat (rebox-regexp-quote se) "[ \t]*$")) ((and sw (not ss) (not se)) (concat "^[ \t]*" (rebox-regexp-quote sw) "[ \t]*$")) ((or sw ss se) (concat "^[ \t]*" (rebox-regexp-quote sw) "[ \t]*" (regexp-quote (make-string 3 (or ss ? ))) "*[ \t]*" (rebox-regexp-quote se) "[ \t]*$")))) (when regexp1 (let ((pair (assoc regexp1 rebox-recognition-data))) (if pair (aset (cdr pair) 0 (cons style (aref (cdr pair) 0))) (setq rebox-recognition-data (cons (cons regexp1 (vector (list style) nil nil)) rebox-recognition-data))))) (when regexp2 (let ((pair (assoc regexp2 rebox-recognition-data))) (if pair (aset (cdr pair) 1 (cons style (aref (cdr pair) 1))) (setq rebox-recognition-data (cons (cons regexp2 (vector nil (list style) nil)) rebox-recognition-data))))) (when regexp3 (let ((pair (assoc regexp3 rebox-recognition-data))) (if pair (aset (cdr pair) 2 (cons style (aref (cdr pair) 2))) (setq rebox-recognition-data (cons (cons regexp3 (vector nil nil (list style))) rebox-recognition-data))))))))) ;; User interaction. ;;; Rebox the current region. (defun rebox-region (flag) (interactive "P") (when (eq flag '-) (setq flag (rebox-ask-for-style))) (when (rebox-validate-flag flag) (save-restriction (narrow-to-region (region-beginning) (region-end)) (rebox-engine flag)))) ;;; Rebox the surrounding comment. (defun rebox-comment (flag) (interactive "P") (when (eq flag '-) (setq flag (rebox-ask-for-style))) (when (rebox-validate-flag flag) (save-restriction (rebox-find-and-narrow) (rebox-engine flag)))) ;;; Validate FLAG and usually return t if not interrupted by errors. ;;; But if FLAG is zero or negative, then change default box style and ;;; return nil. (defun rebox-validate-flag (flag) (cond ((not (numberp flag))) ((> flag 0)) (t (setq rebox-default-style (- flag)) (message "Default style: %d" rebox-default-style) nil))) ;;; Add, delete or adjust a comment box in the narrowed buffer. ;;; Various FLAG values are explained at beginning of this file. (defun rebox-engine (flag) (let ((undo-list buffer-undo-list) (marked-point (point-marker)) (previous-margin (rebox-left-margin)) (previous-style (rebox-guess-style)) (style 111) refill) (untabify (point-min) (point-max)) ;; Decide about refilling and the box style to use. (when previous-style (setq style (rebox-merge-styles style previous-style))) (when rebox-default-style (setq style (rebox-merge-styles style rebox-default-style))) (cond ((not flag) (setq refill t)) ((listp flag) (setq refill nil)) ((numberp flag) (setq refill t style (rebox-merge-styles style flag))) (t (error "Unexpected flag value %s" flag))) (unless (assq style rebox-building-data) (error "Style %d is not known" style)) (message "Style: %d -> %d" (or previous-style 0) style) ;; Remove all previous comment marks. (when previous-style (rebox-unbuild previous-style)) ;; Remove all spurious whitespace. (goto-char (point-min)) (while (re-search-forward " +$" nil t) (replace-match "" t t)) (goto-char (point-min)) (delete-char (- (skip-chars-forward "\n"))) (goto-char (point-max)) (when (= (preceding-char) ?\n) (forward-char -1)) (delete-char (- (skip-chars-backward "\n"))) (goto-char (point-min)) (while (re-search-forward "\n\n\n+" nil t) (replace-match "\n\n" t t)) ;; Move all the text rigidly to the left for insuring that the left ;; margin stays at the same place. (let ((indent-tabs-mode nil) (actual-margin (rebox-left-margin))) (unless (= previous-margin actual-margin) (indent-rigidly (point-min) (point-max) (- previous-margin actual-margin)))) ;; Possibly refill, then build the comment box. (let ((indent-tabs-mode nil)) (rebox-build refill (rebox-left-margin) style)) ;; Retabify to the left only (adapted from tabify.el). (when indent-tabs-mode (goto-char (point-min)) (while (re-search-forward "^[ \t][ \t]+" nil t) (let ((column (current-column))) (delete-region (match-beginning 0) (point)) (indent-to column)))) ;; Restore the point position. (goto-char (marker-position marked-point)) ;; Remove all intermediate boundaries from the undo list. (unless (eq buffer-undo-list undo-list) (let ((cursor buffer-undo-list)) (while (not (eq (cdr cursor) undo-list)) (if (car (cdr cursor)) (setq cursor (cdr cursor)) (rplacd cursor (cdr (cdr cursor))))))))) ;;; Return style attributes as per DEFAULT, in which attributes have been ;;; overridden by non-zero corresponding style attributes from STYLE. (defun rebox-merge-styles (default style) (let ((default-vector (rebox-style-to-vector default)) (style-vector (rebox-style-to-vector style))) (unless (zerop (aref style-vector 0)) (aset default-vector 0 (aref style-vector 0))) (unless (zerop (aref style-vector 1)) (aset default-vector 1 (aref style-vector 1))) (unless (zerop (aref style-vector 2)) (aset default-vector 2 (aref style-vector 2))) (+ (* 100 (aref default-vector 0)) (* 10 (aref default-vector 1)) (aref default-vector 2)))) ;;; Transform a style number into a vector triplet. (defun rebox-style-to-vector (number) (vector (/ number 100) (% (/ number 10) 10) (% number 10))) ;; Classification of boxes (and also, construction data). ;;; Find the limits of the block of comments following or enclosing ;;; the cursor, or return an error if the cursor is not within such a ;;; block of comments. Extend it as far as possible in both ;;; directions, then narrow the buffer around it. (defun rebox-find-and-narrow () (save-excursion (let (start end temp language) ;; Find the start of the current or immediately following comment. (beginning-of-line) (skip-chars-forward " \t\n") (beginning-of-line) (unless (looking-at (aref rebox-regexp-start 0)) (setq temp (point)) (unless (re-search-forward "\\*/" nil t) (error "outside any comment block")) (re-search-backward "/\\*") (unless (<= (point) temp) (error "outside any comment block")) (setq temp (point)) (beginning-of-line) (skip-chars-forward " \t") (unless (= (point) temp) (error "text before start of comment")) (beginning-of-line)) (setq start (point) language (rebox-guess-language)) ;; Find the end of this comment. (when (= language 2) (search-forward "*/") (unless (looking-at "[ \t]*$") (error "text after end of comment"))) (end-of-line) (if (eobp) (insert "\n") (forward-char 1)) (setq end (point)) ;; Try to extend the comment block backwards. (goto-char start) (while (and (not (bobp)) (cond ((= language 2) (skip-chars-backward " \t\n") (when (and (looking-at "[ \t]*\n[ \t]*/\\*") (> (point) 2)) (backward-char 2) (when (looking-at "\\*/") (re-search-backward "/\\*") (setq temp (point)) (beginning-of-line) (skip-chars-forward " \t") (when (= (point) temp) (beginning-of-line) t)))) (t (previous-line 1) (looking-at (aref rebox-regexp-start language))))) (setq start (point))) ;; Try to extend the comment block forward. (goto-char end) (while (looking-at (aref rebox-regexp-start language)) (cond ((= language 2) (re-search-forward "[ \t]*/\\*") (re-search-forward "\\*/") (when (looking-at "[ \t]*$") (beginning-of-line) (forward-line 1) (setq end (point)))) (t (forward-line 1) (setq end (point))))) ;; Narrow to the whole block of comments. (narrow-to-region start end)))) ;;; Guess the language in use for the text starting at the cursor position. (defun rebox-guess-language () (let ((language 1) (index (1- (length rebox-regexp-start)))) (while (not (zerop index)) (if (looking-at (aref rebox-regexp-start index)) (setq language index index 0) (setq index (1- index)))) language)) ;; Guess the current box style from the text in the whole (narrowed) buffer. (defun rebox-guess-style () (let (hits) ;; Get a sorted list of plausible styles, each assorted with a weight. ;; Weights are given so first lines are more heavy than last lines, and so ;; that last lines are more heavy than middle lines. (let ((data rebox-recognition-data) (fragments nil) regexp first middle last) (while data (setq regexp (caar data) first (aref (cdar data) 0) middle (aref (cdar data) 1) last (aref (cdar data) 2) data (cdr data)) (goto-char (point-min)) (while (re-search-forward regexp nil t) (when (and first (= (match-beginning 0) (point-min))) (setq fragments (cons (mapcar (lambda (style) (cons style 3)) first) fragments))) (when middle (setq fragments (cons (mapcar (lambda (style) (cons style 1)) middle) fragments))) (when (and last (= (match-end 0) (1- (point-max)))) (setq fragments (cons (mapcar (lambda (style) (cons style 2)) last) fragments))))) (setq hits (sort (apply 'append fragments) (lambda (a b) (< (car a) (car b)))))) ;; Select the style which has the most total weight. (let ((best-style nil) (best-weight 0) (style nil) (weight 0)) (while hits (if (eq style (caar hits)) (setq weight (+ (cdar hits) weight)) (when (> weight best-weight) (setq best-style style best-weight weight)) (setq style (caar hits) weight (cdar hits))) (setq hits (cdr hits))) (when (>= weight best-weight) (setq best-style style)) best-style))) ;;; Return a regexp matching STRING without its surrounding spaces. ;;; If STRING is nil, return the empty regexp. (defun rebox-regexp-quote (string) (cond ((not string) "") (t (while (and (> (length string) 0) (= (aref string 0) ? )) (setq string (substring string 1))) (regexp-quote (rebox-rstrip string))))) ;;; Return string with trailing spaces removed. (defun rebox-rstrip (string) (while (and (> (length string) 0) (= (aref string (1- (length string))) ? )) (setq string (substring string 0 (1- (length string))))) string) ;; Reconstruction of boxes. ;;; Remove all comment marks, using STYLE to hint at what these are. (defun rebox-unbuild (style) (let* ((data (cdr (assq style rebox-building-data))) (merge-nw (aref data 0)) (merge-se (aref data 1)) (nw (aref data 2)) (nn (aref data 3)) (ne (aref data 4)) (ww (aref data 5)) (ee (aref data 6)) (sw (aref data 7)) (ss (aref data 8)) (se (aref data 9)) (nw-regexp (and nw (concat "^[ \t]*" (rebox-regexp-quote nw) "[ \t]*"))) (ww-regexp (and ww (concat "^[ \t]*" (rebox-regexp-quote ww) "[ \t]*"))) (sw-regexp (and sw (concat "^[ \t]*" (rebox-regexp-quote sw) "[ \t]*")))) ;; Clean up first line. (goto-char (point-min)) (skip-chars-forward "\n") (end-of-line) (delete-char (- (skip-chars-backward " \t"))) (when ne (let ((start (- (point) (length ne)))) (when (and (>= start (point-min)) (string-equal ne (buffer-substring start (point)))) (delete-backward-char (length ne))))) (beginning-of-line) (if (and nw-regexp (looking-at nw-regexp)) (replace-match (make-string (- (match-end 0) (match-beginning 0)) ? )) (skip-chars-forward " \t")) (when nn (let ((count (skip-chars-forward (char-to-string nn)))) (delete-char (- count)) (insert (make-string count ? )))) ;; Clean up last line. (goto-char (point-max)) (delete-char (- (skip-chars-backward " \t\n"))) (when se (let ((start (- (point) (length se)))) (when (and (>= start (point-min)) (string-equal se (buffer-substring start (point)))) (delete-backward-char (length se))))) (insert "\n") (forward-line -1) (if (and sw-regexp (looking-at sw-regexp)) (replace-match (make-string (- (match-end 0) (match-beginning 0)) ? )) (skip-chars-forward " \t")) (when ss (let ((count (skip-chars-forward (char-to-string ss)))) (delete-char (- count)) (insert (make-string count ? )))) ;; Clean up all lines. (goto-char (point-min)) (while (not (eobp)) (end-of-line) (delete-char (- (skip-chars-backward " \t"))) (when ee (let ((start (- (point) (length ee)))) (when (and (>= start (point-min)) (string-equal ee (buffer-substring start (point)))) (delete-backward-char (length ee))))) (beginning-of-line) (if (and ww-regexp (looking-at ww-regexp)) (replace-match (make-string (- (match-end 0) (match-beginning 0)) ? )) (skip-chars-forward " \t")) (forward-line 1)))) ;;; After refilling it if REFILL is not nil, while respecting a left MARGIN, ;;; put the narrowed buffer back into a boxed comment according to box STYLE. (defun rebox-build (refill margin style) (let* ((data (cdr (assq style rebox-building-data))) (merge-nw (aref data 0)) (merge-se (aref data 1)) (nw (aref data 2)) (nn (aref data 3)) (ne (aref data 4)) (ww (aref data 5)) (ee (aref data 6)) (sw (aref data 7)) (ss (aref data 8)) (se (aref data 9)) right-margin) ;; Merge a short end delimiter now, so it gets refilled with text. (when merge-se (goto-char (1- (point-max))) (cond ((memq (preceding-char) '(? ?\t ?\n))) ((memq (preceding-char) '(?. ?! ??)) (insert " ")) (t (insert " "))) (insert se) (setq se nil)) ;; Possibly refill, and adjust margins to account for left inserts. (when refill (let ((fill-prefix (make-string margin ? )) (fill-column (- fill-column (+ (length ww) (length ee))))) (fill-region (point-min) (point-max)))) (setq right-margin (+ (rebox-right-margin) (length ww))) ;; Construct the top line. (goto-char (point-min)) (cond (merge-nw (skip-chars-forward " " (+ (point) margin)) (insert (make-string (- margin (current-column)) ? ) nw) (forward-line 1)) ((or nw nn ne) (indent-to margin) (when nw (insert nw)) (if (not (or nn ne)) (delete-char (- (skip-chars-backward " "))) (insert (make-string (- right-margin (current-column)) (or nn ? ))) (when ne (insert ne))) (insert "\n"))) ;; Construct all middle lines. (while (not (eobp)) (skip-chars-forward " " (+ (point) margin)) (when (or ww ee (/= (following-char) ?\n)) (insert (make-string (- margin (current-column)) ? )) (when ww (insert ww)) (when ee (end-of-line) (indent-to right-margin) (insert ee) (delete-char (- (skip-chars-backward " "))))) (forward-line 1)) ;; Construct the bottom line. (when (or sw ss se) (indent-to margin) (when sw (insert sw)) (if (not (or ss se)) (delete-char (- (skip-chars-backward " "))) (insert (make-string (- right-margin (current-column)) (or ss ? ))) (when se (insert se))) (insert "\n")))) ;;; Return the minimum value of the left margin of all lines, or -1 if ;;; all lines are empty. (defun rebox-left-margin () (let ((margin -1)) (goto-char (point-min)) (while (and (not (zerop margin)) (not (eobp))) (skip-chars-forward " \t") (let ((column (current-column))) (and (not (= (following-char) ?\n)) (or (< margin 0) (< column margin)) (setq margin column))) (forward-line 1)) margin)) ;;; Return the maximum value of the right margin of all lines. Any ;;; sentence ending a line has a space guaranteed before the margin. (defun rebox-right-margin () (let ((margin 0) period) (goto-char (point-min)) (while (not (eobp)) (end-of-line) (if (bobp) (setq period 0) (backward-char 1) (setq period (if (memq (following-char) '(?. ?? ?!)) 1 0)) (forward-char 1)) (setq margin (max margin (+ (current-column) period))) (forward-char 1)) margin)) ;;; Initialize the internal structures. (rebox-register-all-templates) recode-3.6/recode.spec0100644000000000000000000000226507070213501013437 0ustar rootroot# RPM spec file for Free recode. # Copyright (C) 2000 Progiciels Bourbeau-Pinard inc. # Franc,ois Pinard , 2000. Name: recode Version: 3.5d Release: 1 Summary: Converter between charsets and surfaces Group: Utilities/Text Vendor: Progiciels Bourbeau-Pinard inc. Copyright: GPL, LGPL Packager: Franc,ois Pinard Source: http://www.iro.umontreal.ca/contrib/recode/recode-3.5d.tar.gz URL: http://www.iro.umontreal.ca/contrib/recode/HTML Buildroot: /bpi/titan/home/pinard/.rpm %description The recode library converts files between character sets and usages. It recognises or produces more than 300 different character sets and transliterates files between almost any pair. When exact transliteration are not possible, it gets rid of offending characters or fall back on approximations. The recode program is a handy front-end to the library. %prep %setup %patch %build %install %files %doc /usr/doc/packages/recode/README %doc /usr/doc /usr/bin/recode /usr/include/recode.h /usr/include/recodext.h /usr/info/recode.info*.gz /usr/lib/librecode.a /usr/lib/librecode.la /usr/man/man1/recode.1.gz /usr/share/locale/*/LC_MESSAGES/recode.mo recode-3.6/aclocal.sh0100755000000000000000000000375507122524072013272 0ustar rootroot#! /bin/sh # This script is a work-alike of `aclocal' contained in the GNU automake # package. It is needed because our aclocal.m4 must be generated from the # non-gettext .m4 files in /usr/share/aclocal and from the gettext specific # .m4 files in the local m4 directory. # With "aclocal --acdir=m4" # we get an error: macro `AM_INIT_AUTOMAKE' not found in library # With "aclocal -I m4" # we get an error: duplicated macro `AM_GNU_GETTEXT' # The solution is to put all the .m4 files into a temporary directory. # This program 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. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. set -e if test $# = 0; then echo "Usage: $0 aclocal-program [aclocal-options]" 1>&2 exit 1 fi ACLOCAL="$1" shift # Prepare temporary directory. mkdir aclocal.tmp trap "rm -rf aclocal.tmp; exit 1" 1 2 15 # First, copy the standard m4 files. for f in `"$ACLOCAL" --print-ac-dir`/*.m4; do cp $f aclocal.tmp done # Then, copy the contents of any -I directories, overriding previously # copied files of the same name. options="" last_was_I=no for arg do if test $last_was_I = yes; then for f in "$arg"/*.m4; do cp $f aclocal.tmp done last_was_I=no else case "$arg" in -I) last_was_I=yes;; *) last_was_I=no options="$options $arg";; esac fi done # Now call `aclocal' for real. "$ACLOCAL" --acdir=aclocal.tmp $options # Clean up temporary directory. rm -rf aclocal.tmp recode-3.6/m4/0040755000000000000000000000000007233074165011654 5ustar rootrootrecode-3.6/m4/Makefile.in0100644000000000000000000001125607233074165013723 0ustar rootroot# Makefile.in generated automatically by automake 1.4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 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. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ CC = @CC@ CPP = @CPP@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ GLIBC21 = @GLIBC21@ LEX = @LEX@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MOFILES = @MOFILES@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ U = @U@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = gnits EXTRA_DIST = atconfig.m4 codeset.m4 flex.m4 gettext.m4 glibc21.m4 lcmessage.m4 libtool.m4 malloc.m4 realloc.m4 utimbuf.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = DIST_COMMON = ChangeLog Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps m4/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status tags: TAGS TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = m4 distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall: uninstall-am all-am: Makefile all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-generic clean-am -rm -f libtool distclean: distclean-am maintainer-clean-am: maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: tags distdir info-am info dvi-am dvi check check-am \ installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ all-redirect all-am all installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean # 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: recode-3.6/m4/ChangeLog0100644000000000000000000000275707224652677013450 0ustar rootroot2001-01-03 Bruno Haible * gettext.m4: Check for argz.h, limits.h, malloc.h, string.h, unistd.h, sys/param.h, mmap, mempcpy, munmap, stpcpy, strcasecmp, strchr, strdup, __argz_count, __argz_stringify, __argz_next. 2000-12-06 Bruno Haible * microsoft.m4: Remove file. * Makefile.am (EXTRA_DIST): Remove it. 2000-12-05 Bruno Haible * codeset.m4: New file, from libiconv-1.5. * glibc21.m4: New file, from libiconv-1.5. * Makefile.am (EXTRA_DIST): Add them. * libtool.m4: New file. * Makefile.am (EXTRA_DIST): Add it. 2000-06-28 François Pinard * Makefile.am (EXTRA_DIST): * flex.m4: 2000-06-27 François Pinard * flex.m4: New, from elsewhere. * utimbuf.m4: New, from elsewhere. 2000-01-28 François Pinard * lcmessage.m4: New, from elsewhere. 1999-12-14 François Pinard * Makefile.am: Adapt to the gettext scheme used in wdiff. * gettext.m4: New file. Have getcwd checked at configuration time. * nls.m4: Deleted. 1998-10-20 François Pinard * Makefile.am (AUTOMAKE_OPTIONS): Add --gnits. * atconfig.m4: New, from elsewhere. * echo.m4: Deleted. * Makefile.am: Adjusted. 1998-03-31 François Pinard * malloc.m4, realloc.m4: New files, from elsewhere. * echo.m4, microsoft.m4, nls.m4: New, out of acinclude.m4. * Makefile.am: New file. recode-3.6/m4/Makefile.am0100644000000000000000000000022607213513751013702 0ustar rootrootAUTOMAKE_OPTIONS = gnits EXTRA_DIST = atconfig.m4 codeset.m4 flex.m4 gettext.m4 glibc21.m4 \ lcmessage.m4 libtool.m4 malloc.m4 realloc.m4 utimbuf.m4 recode-3.6/m4/atconfig.m40100644000000000000000000000241107142144411013672 0ustar rootroot## ----------------------## ## Prepare for testing. ## ## ----------------------## # The argument (often `../src') says where are the built sources to test, # relative to the built test directory. Empty for a flat distribution, as # `.' gets always added in front of the search path by the `atconfig' script. AC_DEFUN(AT_CONFIG, [AT_TESTPATH=$1 AC_SUBST(AT_TESTPATH) fp_PROG_ECHO ]) ## ----------------------------------------- ## ## Find how to suppress newlines with echo. ## ## ----------------------------------------- ## # Once this macro is called, you may output with no echo in a Makefile or # script using: echo @ECHO_N@ "STRING_TO_OUTPUT@ECHO_C@". AC_DEFUN(fp_PROG_ECHO, [AC_CACHE_CHECK(how to suppress newlines using echo, fp_cv_prog_echo_nonl, [if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then fp_cv_prog_echo_nonl=no else fp_cv_prog_echo_nonl=option fi else fp_cv_prog_echo_nonl=escape fi ]) test $fp_cv_prog_echo_nonl = no \ && echo 2>&1 "WARNING: \`echo' not powerful enough for \`make check'" case $fp_cv_prog_echo_nonl in no) ECHO_N= ECHO_C= ;; option) ECHO_N=-n ECHO_C= ;; escape) ECHO_N= ECHO_C='\c' ;; esac AC_SUBST(ECHO_N)dnl AC_SUBST(ECHO_C)dnl ]) recode-3.6/m4/codeset.m40100644000000000000000000000101007072050400013514 0ustar rootroot#serial 2 dnl From Bruno Haible. AC_DEFUN(jm_LANGINFO_CODESET, [ AC_CHECK_HEADERS(langinfo.h) AC_CHECK_FUNCS(nl_langinfo) AC_CACHE_CHECK([for nl_langinfo and CODESET], jm_cv_langinfo_codeset, [AC_TRY_LINK([#include ], [char* cs = nl_langinfo(CODESET);], jm_cv_langinfo_codeset=yes, jm_cv_langinfo_codeset=no) ]) if test $jm_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET, 1, [Define if you have and nl_langinfo(CODESET).]) fi ]) recode-3.6/m4/flex.m40100644000000000000000000000075407126407012013047 0ustar rootroot## Replacement for AC_PROG_LEX and AC_DECL_YYTEXT ## by Alexandre Oliva ## Modified by Akim Demaille so that only flex is legal # serial 2 dnl ad_AC_PROG_FLEX dnl Look for flex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT AC_DEFUN(ad_AC_PROG_FLEX, [AC_CHECK_PROGS(LEX, flex, missing) if test "$LEX" = missing; then LEX="\$(top_srcdir)/$ac_aux_dir/missing flex" LEX_OUTPUT_ROOT=lex.yy AC_SUBST(LEX_OUTPUT_ROOT)dnl else AC_PROG_LEX AC_DECL_YYTEXT fi]) recode-3.6/m4/gettext.m40100644000000000000000000001053307224652544013604 0ustar rootroot# Select gettext and choose translations to install. -*- shell-script -*- # François Pinard , 1998. # Here is a check list about how one could use this macro. # - In the build directory, execute `make distclean'. # - Rename `po/' to `i18n/'. # - Recursively delete directory `intl/'. # - Add the following files: # . `i18n/Makefile.am' # . `m4/gettext.m4' # . `lib/gettext.c' # . `lib/gettext.h'. # - In top level `configure.in': # . use `fp_WITH_GETTEXT'. # . delete `AM_GNU_GETTEXT' and any `AC_LINK_FILES' for $nls variables. # . add `i18n/Makefile' to `AC_OUTPUT'. # . delete `intl/Makefile' and `po/Makefile.in' from `AC_OUTPUT'. # - In top level `Makefile.am': # . add `i18n' in SUBDIRS, and remove `intl' and `po'. # . define `POTFILES' (peek at previous `i18n/POTFILES.in). # . add `$(srcdir)/stamp-pot' to `all-local'. # . add rule for `$(srcdir)/stamp-pot'. # - In top level `acconfig.h': # . document `HAVE_DCGETTEXT' and `LOCALEDIR'. # . delete documentation for `HAVE_CATGETS'. # - In `lib/Makefile.am': # . add `gettext.c' to `EXTRA_DIST'. # . add `gettext.h' to `noinstl_HEADERS'. # . add definitions for `localdir' and `aliaspath'. # . add special rules for `gettext.o' and `gettext._o'. # - In `m4/Makefile.am': # . add `gettext.m4' to `EXTRA_DIST'. # - In `src/Makefile.am': # . delete `-I/..intl' from `INCLUDES'. # . delete `@INTLLIBS@' from `LDADD'. # . delete `localedir' and its references. # - Clean up directory `i18n/': # . delete `Makefile.in.in' and `POTFILES.in'. # . delete all `*.gmo' files, `cat-id-tbl.c' and `stamp-cat-id'. # - In the top level distribution directory: # . run `aclocal -I m4'. # . run `autoreconf'. # - In the build directory: # . run `$top_srcdir/configure'. # . run `make check'. AC_DEFUN(fp_WITH_GETTEXT, [ AC_MSG_CHECKING(whether NLS is wanted) AC_ARG_ENABLE(nls, [ --disable-nls disallow Native Language Support], enable_nls=$enableval, enable_nls=yes) AC_MSG_RESULT($enable_nls) use_nls=$enable_nls AM_CONDITIONAL(USE_NLS, test $use_nls = yes) if test $enable_nls = yes; then AC_DEFINE(ENABLE_NLS) AC_ARG_WITH(catgets, [ --with-catgets say that catgets is not supported], [AC_MSG_WARN([catgets not supported, --with-catgets ignored])]) AC_CHECK_FUNCS(gettext) AC_CHECK_LIB(intl, gettext, :) if test $ac_cv_lib_intl_gettext$ac_cv_func_gettext != nono; then AC_MSG_CHECKING(whether the included gettext is preferred) AC_ARG_WITH(included-gettext, [ --without-included-gettext avoid our provided version of gettext], with_included_gettext=$withval, with_included_gettext=yes) AC_MSG_RESULT($with_included_gettext) if test $with_included_gettext$ac_cv_func_gettext = nono; then LIBS="$LIBS -lintl" fi else with_included_gettext=yes fi if test $with_included_gettext = yes; then LIBOBJS="$LIBOBJS gettext.o" AC_DEFINE(HAVE_GETTEXT) AC_DEFINE(HAVE_DCGETTEXT) else AC_CHECK_HEADERS(libintl.h) AC_CHECK_FUNCS(dcgettext gettext) fi AC_CHECK_HEADERS(argz.h limits.h locale.h malloc.h string.h unistd.h sys/param.h) AC_FUNC_MMAP AC_CHECK_FUNCS(getcwd mempcpy munmap setlocale stpcpy strcasecmp strchr strdup __argz_count __argz_stringify __argz_next) AM_LC_MESSAGES if test -z "$ALL_LINGUAS"; then AC_MSG_WARN(This package does not install translations yet.) else ac_items="$ALL_LINGUAS" for ac_item in $ac_items; do ALL_POFILES="$ALL_POFILES $ac_item.po" ALL_MOFILES="$ALL_MOFILES $ac_item.mo" done fi AC_SUBST(ALL_LINGUAS) AC_SUBST(ALL_POFILES) AC_SUBST(ALL_MOFILES) AC_MSG_CHECKING(which translations to install) if test -z "$LINGUAS"; then ac_print="$ALL_LINGUAS" MOFILES="$ALL_MOFILES" else ac_items="$LINGUAS" for ac_item in $ac_items; do case "$ALL_LINGUAS" in *$ac_item*) ac_print="$ac_print $ac_item" MOFILES="$MOFILES $ac_item.mo" ;; esac done fi AC_SUBST(MOFILES) if test -z "$ac_print"; then AC_MSG_RESULT(none) else AC_MSG_RESULT($ac_print) fi if test "x$prefix" = xNONE; then AC_DEFINE_UNQUOTED(LOCALEDIR, "$ac_default_prefix/share/locale") else AC_DEFINE_UNQUOTED(LOCALEDIR, "$prefix/share/locale") fi fi]) recode-3.6/m4/glibc21.m40100644000000000000000000000102407122741771013334 0ustar rootroot#serial 2 # Test for the GNU C Library, version 2.1 or newer. # From Bruno Haible. AC_DEFUN(jm_GLIBC21, [ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ac_cv_gnu_library_2_1, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2_1=yes, ac_cv_gnu_library_2_1=no) ] ) AC_SUBST(GLIBC21) GLIBC21="$ac_cv_gnu_library_2_1" ] ) recode-3.6/m4/lcmessage.m40100644000000000000000000000156407142144411014053 0ustar rootroot# Check whether LC_MESSAGES is available in . # Ulrich Drepper , 1995. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. # serial 2 AC_PREREQ(2.13) dnl Minimum Autoconf version required. AC_DEFUN(AM_LC_MESSAGES, [if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your locale.h file contains LC_MESSAGES.]) fi fi]) recode-3.6/m4/libtool.m40100644000000000000000000003534307160265441013565 0ustar rootroot## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- ## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc. ## Originally by Gordon Matzigkeit , 1996 ## ## This program 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 of the License, or ## (at your option) any later version. ## ## This program 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 this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ## ## As a special exception to the GNU General Public License, if you ## distribute this file as part of a program that contains a ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. # serial 40 AC_PROG_LIBTOOL AC_DEFUN(AC_PROG_LIBTOOL, [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl # Save cache, so that ltconfig can load it AC_CACHE_SAVE # Actually configure libtool. ac_aux_dir is where install-sh is found. CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \ DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \ ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig \ $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \ || AC_MSG_ERROR([libtool configure failed]) # Reload cache, that may have been modified by ltconfig AC_CACHE_LOAD # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Redirect the config.log output again, so that the ltconfig log is not # clobbered by the next message. exec 5>>./config.log ]) AC_DEFUN(AC_LIBTOOL_SETUP, [AC_PREREQ(2.13)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl dnl case "$target" in NONE) lt_target="$host" ;; *) lt_target="$target" ;; esac # Check for any special flags to pass to ltconfig. libtool_flags="" test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], [libtool_flags="$libtool_flags --enable-dlopen"]) ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [libtool_flags="$libtool_flags --enable-win32-dll"]) AC_ARG_ENABLE(libtool-lock, [ --disable-libtool-lock avoid locking (might break parallel builds)]) test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" # Some flags need to be propagated to the compiler or linker for good # libtool support. case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; ]) esac ]) # AC_LIBTOOL_DLOPEN - enable checks for dlopen support AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_SHARED, [dnl define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac], enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_STATIC, [dnl define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac], enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case "$enableval" in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac], enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl ]) # AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN(AC_PROG_LD, [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. changequote(,)dnl [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' changequote([,])dnl # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(ac_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ac_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else ac_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$ac_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_PROG_LD_GNU ]) AC_DEFUN(AC_PROG_LD_GNU, [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then ac_cv_prog_gnu_ld=yes else ac_cv_prog_gnu_ld=no fi]) ]) # AC_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN(AC_PROG_NM, [AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(ac_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. ac_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -B" break elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -p" break else ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm fi]) NM="$ac_cv_path_NM" AC_MSG_RESULT([$NM]) ]) # AC_CHECK_LIBM - check for math library AC_DEFUN(AC_CHECK_LIBM, [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case "$lt_target" in *-*-beos* | *-*-cygwin*) # These system don't have libm ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, main, LIBM="-lm") ;; esac ]) # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for # the libltdl convenience library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-convenience to the # configure arguments. Note that LIBLTDL and INCLTDL are not # AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not # provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed # with '${top_builddir}/' and INCLTDL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case "$enable_ltdl_convenience" in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ]) # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for # the libltdl installable library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-install to the configure # arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is # AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed # libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and INCLTDL will be prefixed # with '${top_srcdir}/' (note the single quotes!). If your package is # not flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" INCLTDL= fi ]) dnl old names AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl dnl This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL])dnl recode-3.6/m4/malloc.m40100644000000000000000000000177007142144411013356 0ustar rootroot#serial 3 dnl From Jim Meyering. dnl Determine whether malloc accepts 0 as its argument. dnl If it doesn't, arrange to use the replacement function. dnl AC_DEFUN(jm_FUNC_MALLOC, [ dnl xmalloc.c requires that this symbol be defined so it doesn't dnl mistakenly use a broken malloc -- as it might if this test were omitted. AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_MALLOC_CHECK, 1, [Define if the malloc check has been performed. ]) AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc, [AC_TRY_RUN([ char *malloc (); int main () { exit (malloc (0) ? 0 : 1); } ], jm_cv_func_working_malloc=yes, jm_cv_func_working_malloc=no, dnl When crosscompiling, assume malloc is broken. jm_cv_func_working_malloc=no) ]) if test $jm_cv_func_working_malloc = no; then AC_SUBST(LIBOBJS) LIBOBJS="$LIBOBJS malloc.$ac_objext" AC_DEFINE_UNQUOTED(malloc, rpl_malloc, [Define to rpl_malloc if the replacement function should be used.]) fi ]) recode-3.6/m4/realloc.m40100644000000000000000000000202307142144411013520 0ustar rootroot#serial 3 dnl From Jim Meyering. dnl Determine whether realloc works when both arguments are 0. dnl If it doesn't, arrange to use the replacement function. dnl AC_DEFUN(jm_FUNC_REALLOC, [ dnl xmalloc.c requires that this symbol be defined so it doesn't dnl mistakenly use a broken realloc -- as it might if this test were omitted. AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_REALLOC_CHECK, 1, [Define if the realloc check has been performed. ]) AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc, [AC_TRY_RUN([ char *realloc (); int main () { exit (realloc (0, 0) ? 0 : 1); } ], jm_cv_func_working_realloc=yes, jm_cv_func_working_realloc=no, dnl When crosscompiling, assume realloc is broken. jm_cv_func_working_realloc=no) ]) if test $jm_cv_func_working_realloc = no; then AC_SUBST(LIBOBJS) LIBOBJS="$LIBOBJS realloc.$ac_objext" AC_DEFINE_UNQUOTED(realloc, rpl_realloc, [Define to rpl_realloc if the replacement function should be used.]) fi ]) recode-3.6/m4/utimbuf.m40100644000000000000000000000171307142144411013557 0ustar rootroot#serial 2 dnl From Jim Meyering dnl Define HAVE_STRUCT_UTIMBUF if `struct utimbuf' is declared -- dnl usually in . dnl Some systems have utime.h but don't declare the struct anywhere. AC_DEFUN(jm_STRUCT_UTIMBUF, [ AC_CHECK_HEADERS(utime.h) AC_REQUIRE([AC_HEADER_TIME]) AC_CACHE_CHECK([for struct utimbuf], fu_cv_sys_struct_utimbuf, [AC_TRY_COMPILE( [ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #ifdef HAVE_UTIME_H # include #endif ], [static struct utimbuf x; x.actime = x.modtime;], fu_cv_sys_struct_utimbuf=yes, fu_cv_sys_struct_utimbuf=no) ]) if test $fu_cv_sys_struct_utimbuf = yes; then AC_DEFINE_UNQUOTED(HAVE_STRUCT_UTIMBUF, 1, [Define if struct utimbuf is declared -- usually in . Some systems have utime.h but don't declare the struct anywhere. ]) fi ]) recode-3.6/doc/0040755000000000000000000000000007233074165012101 5ustar rootrootrecode-3.6/doc/Makefile.in0100644000000000000000000002400307233074165014142 0ustar rootroot# Makefile.in generated automatically by automake 1.4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 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. # Makefile for `recode' documentation. # Copyright © 1994, 95, 96, 97, 98, 99, 00 Free Software Foundation, Inc. # François Pinard # This program 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. # This program 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 this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ CC = @CC@ CPP = @CPP@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ GLIBC21 = @GLIBC21@ LEX = @LEX@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MOFILES = @MOFILES@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ U = @U@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = gnits info_TEXINFOS = recode.texi MAKEINFO = LANG= LANGUAGE= @MAKEINFO@ EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 help2man Makemore tables.py MOSTLYCLEANFILES = recode.ops mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = TEXI2DVI = texi2dvi INFO_DEPS = recode.info DVIS = recode.dvi TEXINFOS = recode.texi DIST_COMMON = ChangeLog Makefile.am Makefile.in mdate-sh stamp-vti \ texinfo.tex version.texi DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: .SUFFIXES: .dvi .info .ps .texi .texinfo .txi $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status $(srcdir)/version.texi: stamp-vti @: $(srcdir)/stamp-vti: recode.texi $(top_srcdir)/configure.in @echo "@set UPDATED `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/recode.texi`" > vti.tmp @echo "@set EDITION $(VERSION)" >> vti.tmp @echo "@set VERSION $(VERSION)" >> vti.tmp @cmp -s vti.tmp $(srcdir)/version.texi \ || (echo "Updating $(srcdir)/version.texi"; \ cp vti.tmp $(srcdir)/version.texi) -@rm -f vti.tmp @cp $(srcdir)/version.texi $@ mostlyclean-vti: -rm -f vti.tmp clean-vti: distclean-vti: maintainer-clean-vti: -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi recode.info: recode.texi version.texi recode.dvi: recode.texi version.texi DVIPS = dvips .texi.info: @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texi.dvi: TEXINPUTS=.:$$TEXINPUTS \ MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< .texi: @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texinfo.info: @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texinfo: @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .texinfo.dvi: TEXINPUTS=.:$$TEXINPUTS \ MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< .txi.info: @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .txi.dvi: TEXINPUTS=.:$$TEXINPUTS \ MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< .txi: @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] cd $(srcdir) \ && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .dvi.ps: $(DVIPS) $< -o $@ install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(infodir) @list='$(INFO_DEPS)'; \ for file in $$list; do \ d=$(srcdir); \ for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ if test -f $$d/$$ifile; then \ echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \ $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \ else : ; fi; \ done; \ done @$(POST_INSTALL) @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ done; \ else : ; fi uninstall-info: $(PRE_UNINSTALL) @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ ii=yes; \ else ii=; fi; \ list='$(INFO_DEPS)'; \ for file in $$list; do \ test -z "$ii" \ || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \ done @$(NORMAL_UNINSTALL) list='$(INFO_DEPS)'; \ for file in $$list; do \ (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ done dist-info: $(INFO_DEPS) list='$(INFO_DEPS)'; \ for base in $$list; do \ d=$(srcdir); \ for file in `cd $$d && eval echo $$base*`; do \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done; \ done mostlyclean-aminfo: -rm -f recode.aux recode.cp recode.cps recode.dvi recode.fn recode.fns \ recode.ky recode.kys recode.ps recode.log recode.pg \ recode.toc recode.tp recode.tps recode.vr recode.vrs \ recode.op recode.tr recode.cv recode.cn clean-aminfo: distclean-aminfo: maintainer-clean-aminfo: cd $(srcdir) && for i in $(INFO_DEPS); do \ rm -f $$i; \ if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ rm -f $$i-[0-9]*; \ fi; \ done tags: TAGS TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = doc distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info info-am: $(INFO_DEPS) info: info-am dvi-am: $(DVIS) dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-exec: install-exec-am install-data-am: install-info-am install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-info uninstall: uninstall-am all-am: Makefile $(INFO_DEPS) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(infodir) mostlyclean-generic: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-vti mostlyclean-aminfo mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-vti clean-aminfo clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-vti distclean-aminfo distclean-generic clean-am -rm -f libtool distclean: distclean-am maintainer-clean-am: maintainer-clean-vti maintainer-clean-aminfo \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: mostlyclean-vti distclean-vti clean-vti maintainer-clean-vti \ install-info-am uninstall-info mostlyclean-aminfo distclean-aminfo \ clean-aminfo maintainer-clean-aminfo tags distdir info-am info dvi-am \ dvi check check-am installcheck-am installcheck install-exec-am \ install-exec install-data-am install-data install-am install \ uninstall-am uninstall all-redirect all-am all installdirs \ mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean recode.info: libiconv.texi rfc1345.texi recode.dvi: libiconv.texi rfc1345.texi # 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: recode-3.6/doc/ChangeLog0100644000000000000000000003207007213520007013637 0ustar rootroot2000-12-06 Bruno Haible * Makefile.am (MAKEINFO): New definition, forcing English titles in the generated info files. * recode.texi: Reformulate paragraphs mentioning DEFAULT_CHARSET. * Makemore (ENCODINGS_DEF): Add encodings_local.def. 2000-08-30 Bruno Haible * help2man: Upgrade to version 1.022. 2000-08-18 François Pinard * recode.texi (HTML): Undust and bring up-to-date. Add XML info. 2000-07-10 François Pinard * recode.texi (Introduction): How to pronounce recode. 2000-06-29 François Pinard * tables.py (Explodes.complete, Strips.complete_sources): Produce delmodule_* functions, both empty for now. 2000-06-26 François Pinard * recode.texi (Debugging): New node. (Test): Renamed from Debugging. * tables.py (Mnemonics.digest_iso10646_def): Handle varying capitalisation in file others.def. 2000-05-27 François Pinard * Makefile.am (MOSTLYCLEANFILES): Define to recode.ops. * tables.py (Strips): Generate strip data only when needed. * Makemore (fr-rfc1345.texi): Depends on and use mnemonics,ds. 2000-04-23 Bruno Haible * tables.py: While generating libiconv.h, do not produce those declarations which are now contained in iconv.h. 2000-03-22 François Pinard * NomsSeulsfinal.lst: Updated. Reported by François Yergeau. 2000-03-21 François Pinard * tables.py: Reorganised with classes, no more globals. 2000-02-07 François Pinard * NomsSeulsfinal.lst: Update replacing noms_juc_19981216.txt. * Makemore (NOMS_CARACS): Adjusted. Reported by Patrick Andries. 2000-02-06 François Pinard * Makemore (ENCODINGS_DEF): Use ../ instead of top_srcdir. * tables.py: Nomenclature change of symbol to alias. 2000-02-05 François Pinard * recode.texi: Document tree as a special charset. 1999-12-30 François Pinard * recode.texi (Charset overview): Document unreachable charsets. Reported by François-Xavier Bergot 1999-12-29 François Pinard * recode.texi (libiconv): Adjust to reflect the merge. 1999-12-28 François Pinard * tables.py (produce_libiconv): Declare libiconv functions. * Makemore: Use encoding.def from the libiconv/ subdirectory. 1999-12-24 François Pinard * recode.texi (libiconv): New name for iconv node. 1999-12-23 François Pinard * recode.texi (iconv, Vietnamese): New nodes. * Makemore: Change directory to distribution before calling Python, so relative symlinks work better, here. * tables.py (Input, Output): New classes, reorganising code. 1999-12-22 François Pinard * tables.py: Tend to prefer string methods over re methods. (begins): New function. Use it. * Makefile.am, Makemore, tables.py: Make libiconv.h, libiconv.texi and fr-libiconv.texi. Rename charset.texi to rfc1345.texi. 1999-12-21 François Pinard * tables.py (produce_texinfo): Avoid colons in index references. Change :NUMBER into (NUMBER). Reported by Eli Zaretskii. 1999-12-19 Eli Zaretskii * recode.texi: Add index references and print indices for concepts, options, library features, and charsets and surfaces. Many stylistic changes, both for English and for Texinfo. Various factual errors corrected, including output from some examples. * tables.py (produce_texinfo): Generate index references. 1999-12-12 François Pinard * recode.texi: Show program_name in the examples for the library usage, and document its purpose. Reported by Kristian Köhntopp and Pawel Krawczyk. 1999-11-27 François Pinard * recode.texi (MIME contents encoding, UTF-7): Adjust RFC numbers and correct historical note. Reported by Neal McBurnett. 1999-09-27 François Pinard * tables.py: Python version of tables.pl. * tables.pl: Deleted. * Makefile.am, Makemore: Adjusted. 1999-06-22 François Pinard * Makefile.am (man_MANS, recode.1): Deleted. The man page will now be built in src/ rather than here. 1999-06-17 François Pinard * recode.texi (Top): Use @ifnottex instead of @ifinfo. 1999-04-27 François Pinard * recode.texi: Do not use od in examples, recode can do it itself. 1999-04-21 François Pinard * recode.texi: Many tiny adjustments all over. Reported by Laurent Bourbeau. 1999-04-18 François Pinard * recode.texi (Listings): Checking is somewhat relaxed when generating source tables. 1999-04-02 François Pinard * recode.texi (UTF-8): Change RFC2044 to RFC2279. Reported by Steinar Bang. * recode.texi (Requests): Aliases are not true and simple anymore. Reported by Martin J. Dürst. 1999-01-17 François Pinard * tables.pl: Generate code to initialize implied surfaces. 1999-01-07 François Pinard * tables.pl (digest_french_names): Define translations for control characters from U+0080 to U+009F. Make U+007F work as expected. Reported by Alain Labonté and Laurent Bourbeau. 1999-01-05 François Pinard * tables.pl (digest_french_names): Remove trailing asterisks. 1999-01-04 François Pinard * tables.pl: Generate struct strip_table instead of UCS2_DATA_TABLE. Produce strip-pool.c and strip-data.c instead of pool.c and tables.c. Rename produce_tables_init and produce_tables_term with produce_strip_init and produce_strip_term. Rename tabular_flag to strip_option. Rename all other _flag variables into _option. Replace SOMECHAR with REPLACEMENT_CHARACTER and NOCHAR with NOT_A_CHARACTER. * Makemore: Adjusted. 1999-01-02 François Pinard * tables.pl (digest_french_names): Handle translation of control characters given an explicit table in the program. * tables.pl (produce_texinfo): Avoid some spurious trailing space. 1998-12-17 François Pinard * noms_juc_19981216.txt: New French name table. * Makemore: Use it. * tables.pl: Recognise new table despite semicolons. Reported by Alain Labonté et François Yergeau. 1998-12-15 François Pinard * Makemore (fr-charnames.h, fr-charset.texi): New rules. * tables.pl: Normalize style. (digest_french_names): New routine. 1998-11-23 François Pinard * help2man: New file, from elsewhere. * Makefile.am (EXTRA_DIST, recode.1): Adjusted. 1998-11-03 François Pinard * helptoman.pl: Comment a wrong line. Remove parenthesese on another. 1998-11-02 François Pinard * tables.pl: Use recode_ucs2 type. 1998-10-27 François Pinard * tables.pl (produce_tables_term): Use bool instead of int. (declare_mnemonic): Return, instead of calling next. 1998-10-23 François Pinard * tables.pl: Adapt to use strict. * Makemore: Use -w with Perl. 1998-09-15 François Pinard * keld-email/mnemonics,ds: Patched to add Euro symbol. 1998-09-01 François Pinard * Makemore (CHARSETS_DEF, ISO10646_DEF, MNEMONICS_DS): New macros. Use them. For playing with some revised tables emailed by Keld. 1997-12-15 François Pinard * tables.pl (digest_iso10646_def, declare_mnemonic): New routines. 1997-12-14 François Pinard * tables.pl: New file, merging once separate scripts. * charname.pl, charset.pl, rfc1345.pl: Deleted. * Makefile.am, Makemore: Adjusted. 1997-12-12 François Pinard * Makemore: Fetch and use mnemonic,ds instead of mnemonics.ds. 1997-12-09 François Pinard * Makefile.am (recode.1): Depend on src/main.c, not src/recode.c. * helptoman.pl: Reset the accumulation flag even if the usage clause is only one line long. * charset.pl (digest_rfc1345): Capitalise the saved &rem and add an ending period, as necessary, before writing it to charset.texi. 1997-12-05 François Pinard * charset.pl (digest_rfc1345): Diagnose if declarations for a charset are not presented in the unofficial canonical order. Reported by Keld Jørn Simonsen. 1997-12-03 François Pinard * Makemore (charset.texi): Handle chset31a/charsets.def, instead of rfc1345.txt combined with a few Unicode maps. (chset31a, charsets.def): New goals. (all): Append dependencies to Makefile's all, automating them. * charset.pl: Recognise simpler charsets.def format. Reported by Keld Jørn Simonsen, Lukas Petrlik and Roman Czyborra. * koi8-r and other cyrillic tables gets implemented through the changes above. Reported by Alexander L. Belikoff, Andries Brouwer and Roman Czyborra. 1997-12-02 François Pinard * rfc1345.pl: Generate an inverse table. 1997-12-01 François Pinard * charset.pl: Reorganise with one processor routine per type of input file. Add code to recognise input file types from contents, and dispatch accordingly. Add a routine to read Unicode maps. * Makemore (charset.texi): Read mnemonics files before RFC 1345. Fetch and process the Unicode format maps held in MAPS. (cp1251.txt): New rule. (MAPS): Adjusted. Reported by Andreas Dietrich. * Makemore (cp1250.txt): New rule. (MAPS): Adjusted. Reported by Branimir Dolicki, Frère Roy and Primoz Peterlin. * Makemore (cp1252.txt): New rule. (MAPS): Adjusted. Reported by Hilmar Schlegel. 1997-11-24 François Pinard * charname.pl, charset.pl, rfc1345.pl: Insert the LGPL instead of the GPL in generated sources. 1997-10-14 François Pinard * charset.pl: Generate global argument to module_tables, and generate checking and return of initialisation success. 1997-10-06 François Pinard * helptoman.pl: Have better headers and footers. Reported by Thomas M. Ott. 1997-10-05 François Pinard * Makemore (i18n.txt, i18nrep.txt): New rules. * All: Replace `and usages' by `and surfaces'. Replace encoding and ENCODING by surface and SURFACE. 1997-09-29 François Pinard * Makemore (rfc1345.txt): New rule. * helptoman.pl: New file. * Makefile.am: Prepare, install and distribute the man page. Suggested by Harald Falkenberg. 1997-09-23 François Pinard Have most Perl generation done in this directory, with resulting files moved into directories where they are most useful. * Makemore: New file. * Makefile.am: Simplified accordingly. * charname.pl, rfc1345.pl: Moved over from src/. 1997-09-22 François Pinard * charset.pl: Use lc instead of y whenever appropriate. Use upcased hexadecimal for $SOMECHAR and $NOCHAR. Rename %unicode to %ucs2, and some of $code to $ucs2. Rename UNICODE to MNEMONICS and $UNICODE to MNEMONICS. Implement a pool of for strips of UCS2 characters. Do not split output anymore into charset1.c and charset2.c; rather have all tables into tables.c and all strips into pool.c. Everything adjusted. * Makefile.am (charset.texi): Manage so the script is executed in the build directory, so diagnostics have $(srcdir) in references. 1997-07-29 François Pinard * charset.pl: Generated module_ routines need a parameter. 1997-02-26 François Pinard * mnemonic.ds2: Add three dozens of missing codes. 1997-02-25 François Pinard * Makefile.am (EXTRA_DIST): Add charset1.c, charset2.c and charset.texi, taken out of BUILT_SOURCES. 1996-09-30 François Pinard * charset.pl: Integrate charset.sed, accept rfc1345.txt as argument, use hex. * charset.sed: Deleted. * Makefile.am: Adjusted. Reported by Andreas Schwab. 1996-08-25 François Pinard * charset.pl: Use warn rather than print STDERR. 1996-08-24 François Pinard * charset.pl: Replace DOUBLE_TABLE by UCS2_DATA_TABLE. Call declare_ucs2_data instead of declare_double_step, and avoid generating a third argument for size. Replace SRC by SOURCE. * Makefile.am: New, replaces Makefile.in. 1995-07-23 François Pinard * mnemonic.ds: Copied from ftp://dkuug.dk/i18n/mnemonic.ds. * mnemonic.ds2: New file, edited from inspection of rfc1345.txt. * Makefile.in (DISTFILES): Distribute them. * charset.pl: Generate UCS2 in tables, instead of mnemonics. 1995-07-10 François Pinard Distribution unflattened, for using GNU gettext. * Makefile.in: New file. recode-3.6/doc/Makefile.am0100644000000000000000000000215007213517675014136 0ustar rootroot# Makefile for `recode' documentation. # Copyright © 1994, 95, 96, 97, 98, 99, 00 Free Software Foundation, Inc. # François Pinard # This program 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. # This program 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 this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. AUTOMAKE_OPTIONS = gnits info_TEXINFOS = recode.texi MAKEINFO = LANG= LANGUAGE= @MAKEINFO@ EXTRA_DIST = libiconv.texi rfc1345.texi File-Latin1 help2man Makemore \ tables.py MOSTLYCLEANFILES = recode.ops recode.info: libiconv.texi rfc1345.texi recode.dvi: libiconv.texi rfc1345.texi recode-3.6/doc/mdate-sh0100644000000000000000000000516707142144412013524 0ustar rootroot#!/bin/sh # Get modification time of a file or directory and pretty-print it. # Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # # This program 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. # # This program 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 this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Prevent date giving response in another language. LANG=C export LANG LC_ALL=C export LC_ALL LC_TIME=C export LC_TIME # Get the extended ls output of the file or directory. # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. if ls -L /dev/null 1>/dev/null 2>&1; then set - x`ls -L -l -d $1` else set - x`ls -l -d $1` fi # The month is at least the fourth argument # (3 shifts here, the next inside the loop). shift shift shift # Find the month. Next argument is day, followed by the year or time. month= until test $month do shift case $1 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac done day=$2 # Here we have to deal with the problem that the ls output gives either # the time of day or the year. case $3 in *:*) set `date`; eval year=\$$# case $2 in Jan) nummonthtod=1;; Feb) nummonthtod=2;; Mar) nummonthtod=3;; Apr) nummonthtod=4;; May) nummonthtod=5;; Jun) nummonthtod=6;; Jul) nummonthtod=7;; Aug) nummonthtod=8;; Sep) nummonthtod=9;; Oct) nummonthtod=10;; Nov) nummonthtod=11;; Dec) nummonthtod=12;; esac # For the first six month of the year the time notation can also # be used for files modified in the last year. if (expr $nummonth \> $nummonthtod) > /dev/null; then year=`expr $year - 1` fi;; *) year=$3;; esac # The result. echo $day $month $year recode-3.6/doc/stamp-vti0100644000000000000000000000007707224653010013741 0ustar rootroot@set UPDATED 6 December 2000 @set EDITION 3.6 @set VERSION 3.6 recode-3.6/doc/texinfo.tex0100644000000000000000000060700307142144411014271 0ustar rootroot% texinfo.tex -- TeX macros to handle Texinfo files. % % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % \def\texinfoversion{1999-09-25.10} % % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 % Free Software Foundation, Inc. % % This texinfo.tex file 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. % % This texinfo.tex file 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 this texinfo.tex file; see the file COPYING. If not, write % to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, % Boston, MA 02111-1307, USA. % % In other words, you are welcome to use, share and improve this program. % You are forbidden to forbid anyone else to use, share and improve % what you give them. Help stamp out software-hoarding! % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % ftp://ftp.gnu.org/gnu/texinfo.tex % (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) % ftp://texinfo.org/tex/texinfo.tex % ftp://us.ctan.org/macros/texinfo/texinfo.tex % (and all CTAN mirrors, finger ctan@us.ctan.org for a list). % /home/gd/gnu/doc/texinfo.tex on the GNU machines. % The texinfo.tex in any given Texinfo distribution could well be out % of date, so if that's what you're using, please check. % Texinfo has a small home page at http://texinfo.org/. % % Send bug reports to bug-texinfo@gnu.org. Please include including a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps. % The extra runs of TeX get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages. You can get % the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/. \message{Loading texinfo [version \texinfoversion]:} % If in a .fmt file, print the version number % and turn on active characters that we couldn't do earlier because % they might have appeared in the input file name. \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} % Save some parts of plain tex whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexi=\i \let\ptexlbrace=\{ \let\ptexrbrace=\} \let\ptexstar=\* \let\ptext=\t % We never want plain's outer \+ definition in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax \message{Basics,} \chardef\other=12 % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi \ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi % Ignore a token. % \def\gobble#1{} \hyphenation{ap-pen-dix} \hyphenation{mini-buf-fer mini-buf-fers} \hyphenation{eshell} \hyphenation{white-space} % Margin to add to right of even pages, to left of odd pages. \newdimen \bindingoffset \newdimen \normaloffset \newdimen\pagewidth \newdimen\pageheight % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \ifx\eTeXversion\undefined \def\loggingall{\tracingcommands2 \tracingstats2 \tracingpages1 \tracingoutput1 \tracinglostchars1 \tracingmacros2 \tracingparagraphs1 \tracingrestores1 \showboxbreadth\maxdimen\showboxdepth\maxdimen }% \else \def\loggingall{\tracingcommands3 \tracingstats2 \tracingpages1 \tracingoutput1 \tracinglostchars1 \tracingmacros2 \tracingparagraphs1 \tracingrestores1 \tracingscantokens1 \tracingassigns1 \tracingifs1 \tracinggroups1 \tracingnesting2 \showboxbreadth\maxdimen\showboxdepth\maxdimen }% \fi % For @cropmarks command. % Do @cropmarks to get crop marks. % \newif\ifcropmarks \let\cropmarks = \cropmarkstrue % % Dimensions to add cropmarks at corners. % Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines \newdimen\cornerlong \cornerlong=1pc \newdimen\cornerthick \cornerthick=.3pt \newdimen\topandbottommargin \topandbottommargin=.75in % Main output routine. \chardef\PAGE = 255 \output = {\onepageout{\pagecontents\PAGE}} \newbox\headlinebox \newbox\footlinebox % \onepageout takes a vbox as an argument. Note that \pagecontents % does insertions, but you have to call it yourself. \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% % {% % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \escapechar = `\\ % use backslash in output files. \indexdummies % don't expand commands in the output. \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. \shipout\vbox{% \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize \vskip-\topandbottommargin \vtop to0pt{% \line{\ewtop\hfil\ewtop}% \nointerlineskip \line{% \vbox{\moveleft\cornerthick\nstop}% \hfill \vbox{\moveright\cornerthick\nstop}% }% \vss}% \vskip\topandbottommargin \line\bgroup \hfil % center the page within the outer (page) hsize. \ifodd\pageno\hskip\bindingoffset\fi \vbox\bgroup \fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingxxx.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 2\baselineskip \unvbox\footlinebox \fi % \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick \vbox to0pt{\vss \line{% \vbox{\moveleft\cornerthick\nsbot}% \hfill \vbox{\moveright\cornerthick\nsbot}% }% \nointerlineskip \line{\ewbot\hfil\ewbot}% }% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox }% end of group with \turnoffactive \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi % marginal hacks, juha@viisa.uucp (Juha Takala) \ifvoid\margin\else % marginal info is present \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi \dimen@=\dp#1 \unvbox#1 \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) % \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} \def\nstop{\vbox {\hrule height\cornerthick depth\cornerlong width\cornerthick}} \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % \def\parsearg#1{% \let\next = #1% \begingroup \obeylines \futurelet\temp\parseargx } % If the next token is an obeyed space (from an @example environment or % the like), remove it and recurse. Otherwise, we're done. \def\parseargx{% % \obeyedspace is defined far below, after the definition of \sepspaces. \ifx\obeyedspace\temp \expandafter\parseargdiscardspace \else \expandafter\parseargline \fi } % Remove a single space (as the delimiter token to the macro call). {\obeyspaces % \gdef\parseargdiscardspace {\futurelet\temp\parseargx}} {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. % % First remove any @c comment, then any @comment. % Result of each macro is put in \toks0. \argremovec #1\c\relax % \expandafter\argremovecomment \the\toks0 \comment\relax % % % Call the caller's macro, saved as \next in \parsearg. \expandafter\next\expandafter{\the\toks0}% }% } % Since all \c{,omment} does is throw away the argument, we can let TeX % do that for us. The \relax here is matched by the \relax in the call % in \parseargline; it could be more or less anything, its purpose is % just to delimit the argument to the \c. \def\argremovec#1\c#2\relax{\toks0 = {#1}} \def\argremovecomment#1\comment#2\relax{\toks0 = {#1}} % \argremovec{,omment} might leave us with trailing spaces, though; e.g., % @end itemize @c foo % will have two active spaces as part of the argument with the % `itemize'. Here we remove all active spaces from #1, and assign the % result to \toks0. % % This loses if there are any *other* active characters besides spaces % in the argument -- _ ^ +, for example -- since they get expanded. % Fortunately, Texinfo does not define any such commands. (If it ever % does, the catcode of the characters in questionwill have to be changed % here.) But this means we cannot call \removeactivespaces as part of % \argremovec{,omment}, since @c uses \parsearg, and thus the argument % that \parsearg gets might well have any character at all in it. % \def\removeactivespaces#1{% \begingroup \ignoreactivespaces \edef\temp{#1}% \global\toks0 = \expandafter{\temp}% \endgroup } % Change the active space to expand to nothing. % \begingroup \obeyspaces \gdef\ignoreactivespaces{\obeyspaces\let =\empty} \endgroup \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} %% These are used to keep @begin/@end levels from running away %% Call \inENV within environments (after a \begingroup) \newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} \def\ENVcheck{% \ifENV\errmessage{Still within an environment; press RETURN to continue} \endgroup\fi} % This is not perfect, but it should reduce lossage % @begin foo is the same as @foo, for now. \newhelp\EMsimple{Press RETURN to continue.} \outer\def\begin{\parsearg\beginxxx} \def\beginxxx #1{% \expandafter\ifx\csname #1\endcsname\relax {\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else \csname #1\endcsname\fi} % @end foo executes the definition of \Efoo. % \def\end{\parsearg\endxxx} \def\endxxx #1{% \removeactivespaces{#1}% \edef\endthing{\the\toks0}% % \expandafter\ifx\csname E\endthing\endcsname\relax \expandafter\ifx\csname \endthing\endcsname\relax % There's no \foo, i.e., no ``environment'' foo. \errhelp = \EMsimple \errmessage{Undefined command `@end \endthing'}% \else \unmatchedenderror\endthing \fi \else % Everything's ok; the right environment has been started. \csname E\endthing\endcsname \fi } % There is an environment #1, but it hasn't been started. Give an error. % \def\unmatchedenderror#1{% \errhelp = \EMsimple \errmessage{This `@end #1' doesn't have a matching `@#1'}% } % Define the control sequence \E#1 to give an unmatched @end error. % \def\defineunmatchedend#1{% \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}% } % Single-spacing is done by various environments (specifically, in % \nonfillstart and \quotations). \newskip\singlespaceskip \singlespaceskip = 12.5pt \def\singlespace{% % Why was this kern here? It messes up equalizing space above and below % environments. --karl, 6may93 %{\advance \baselineskip by -\singlespaceskip %\kern \baselineskip}% \setleading \singlespaceskip } %% Simple single-character @ commands % @@ prints an @ % Kludge this until the fonts are right (grr). \def\@{{\tt\char64}} % This is turned off because it was never documented % and you can use @w{...} around a quote to suppress ligatures. %% Define @` and @' to be the same as ` and ' %% but suppressing ligatures. %\def\`{{`}} %\def\'{{'}} % Used to generate quoted braces. \def\mylbrace {{\tt\char123}} \def\myrbrace {{\tt\char125}} \let\{=\mylbrace \let\}=\myrbrace \begingroup % Definitions to produce actual \{ & \} command in an index. \catcode`\{ = 12 \catcode`\} = 12 \catcode`\[ = 1 \catcode`\] = 2 \catcode`\@ = 0 \catcode`\\ = 12 @gdef@lbracecmd[\{]% @gdef@rbracecmd[\}]% @endgroup % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent % Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H. \let\, = \c \let\dotaccent = \. \def\ringaccent#1{{\accent23 #1}} \let\tieaccent = \t \let\ubaraccent = \b \let\udotaccent = \d % Other special characters: @questiondown @exclamdown % Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} % Dotless i and dotless j, used for accents. \def\imacro{i} \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ptexi \else\ifx\temp\jmacro \j \else \errmessage{@dotless can be used only with i or j}% \fi\fi } % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\hfil\break\hbox{}\ignorespaces} % @. is an end-of-sentence period. \def\.{.\spacefactor=3000 } % @! is an end-of-sentence bang. \def\!{!\spacefactor=3000 } % @? is an end-of-sentence query. \def\?{?\spacefactor=3000 } % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % \def\group{\begingroup \ifnum\catcode13=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi % % The \vtop we start below produces a box with normal height and large % depth; thus, TeX puts \baselineskip glue before it, and (when the % next line of text is done) \lineskip glue after it. (See p.82 of % the TeXbook.) Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% \egroup % End the \vtop. \endgroup % End the \group. }% % \vtop\bgroup % We have to put a strut on the last line in case the @group is in % the midst of an example, rather than completely enclosing it. % Otherwise, the interline space between the last line of the group % and the first line afterwards is too small. But we can't put the % strut in \Egroup, since there it would be on a line by itself. % Hence this just inserts a strut at the beginning of each line. \everypar = {\strut}% % % Since we have a strut on every line, we don't need any of TeX's % normal interline spacing. \offinterlineskip % % OK, but now we have to do something about blank % lines in the input in @example-like environments, which normally % just turn into \lisppar, which will insert no space now that we've % turned off the interline space. Simplest is to make them be an % empty paragraph. \ifx\par\lisppar \edef\par{\leavevmode \par}% % % Reset ^^M's definition to new definition of \par. \obeylines \fi % % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in \def\need{\parsearg\needx} % Old definition--didn't work. %\def\needx #1{\par % %% This method tries to make TeX break the page naturally %% if the depth of the box does not fit. %{\baselineskip=0pt% %\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak %\prevdepth=-1000pt %}} \def\needx#1{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % % Do a \strut just to make the height of this box be normal, so the % normal leading is inserted relative to the preceding line. % And a page break here is fine. \vtop to #1\mil{\strut\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak \fi } % @br forces paragraph break \let\br = \par % @dots{} output an ellipsis using the current font. % We do .5em per period so that it has the same spacing in a typewriter % font as three actual period characters. % \def\dots{% \leavevmode \hbox to 1.5em{% \hskip 0pt plus 0.25fil minus 0.25fil .\hss.\hss.% \hskip 0pt plus 0.5fil minus 0.5fil }% } % @enddots{} is an end-of-sentence ellipsis. % \def\enddots{% \leavevmode \hbox to 2em{% \hskip 0pt plus 0.25fil minus 0.25fil .\hss.\hss.\hss.% \hskip 0pt plus 0.5fil minus 0.5fil }% \spacefactor=3000 } % @page forces the start of a new page % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \def\exdent{\parsearg\exdentyyy} \def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}} % This defn is used inside nofill environments such as @example. \def\nofillexdent{\parsearg\nofillexdentyyy} \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @inmargin{TEXT} puts TEXT in the margin next to the current paragraph. \def\inmargin#1{% \strut\vadjust{\nobreak\kern-\strutdepth \vtop to \strutdepth{\baselineskip\strutdepth\vss \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}} \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} %\hbox{{\rm#1}}\hfil\break}} % @include file insert text of that file as input. % Allow normal characters that we make active in the argument (a file name). \def\include{\begingroup \catcode`\\=12 \catcode`~=12 \catcode`^=12 \catcode`_=12 \catcode`|=12 \catcode`<=12 \catcode`>=12 \catcode`+=12 \parsearg\includezzz} % Restore active chars for included file. \def\includezzz#1{\endgroup\begingroup % Read the included file in a group so nested @include's work. \def\thisfile{#1}% \input\thisfile \endgroup} \def\thisfile{} % @center line outputs that line, centered \def\center{\parsearg\centerzzz} \def\centerzzz #1{{\advance\hsize by -\leftskip \advance\hsize by -\rightskip \centerline{#1}}} % @sp n outputs n lines of vertical space \def\sp{\parsearg\spxxx} \def\spxxx #1{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment \def\comment{\begingroup \catcode`\^^M=\other% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \commentxxx} {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} \let\c=\comment % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. % We cannot implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \def\paragraphindent{\parsearg\doparagraphindent} \def\doparagraphindent#1{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \def\exampleindent{\parsearg\doexampleindent} \def\doexampleindent#1{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @asis just yields its argument. Used with @table, for example. % \def\asis#1{#1} % @math means output in math mode. % We don't use $'s directly in the definition of \math because control % sequences like \math are expanded when the toc file is written. Then, % we read the toc file back, the $'s will be normal characters (as they % should be, according to the definition of Texinfo). So we must use a % control sequence to switch into and out of math mode. % % This isn't quite enough for @math to work properly in indices, but it % seems unlikely it will ever be needed there. % \let\implicitmath = $ \def\math#1{\implicitmath #1\implicitmath} % @bullet and @minus need the same treatment as @math, just above. \def\bullet{\implicitmath\ptexbullet\implicitmath} \def\minus{\implicitmath-\implicitmath} % @refill is a no-op. \let\refill=\relax % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate (before @setfilename). % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % @setfilename is done at the beginning of every texinfo file. % So open here the files we need to have open while reading the input. % This makes it possible to make a .fmt file for texinfo. \def\setfilename{% \iflinks \readauxfile \fi % \openindices needs to do some work in any case. \openindices \fixbackslash % Turn off hack to swallow `\input texinfo'. \global\let\setfilename=\comment % Ignore extra @setfilename cmds. % % If texinfo.cnf is present on the system, read it. % Useful for site-wide @afourpaper, etc. % Just to be on the safe side, close the input stream before the \input. \openin 1 texinfo.cnf \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi \closein1 \temp % \comment % Ignore the actual filename. } % Called from \setfilename. % \def\openindices{% \newindex{cp}% \newcodeindex{fn}% \newcodeindex{vr}% \newcodeindex{tp}% \newcodeindex{ky}% \newcodeindex{pg}% } % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest \ifx\pdfoutput\undefined \pdffalse \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\linkcolor = \relax \let\pdfmakeoutlines = \relax \else \pdftrue \pdfoutput = 1 \input pdfcolor \def\dopdfimage#1#2#3{% \def\imagewidth{#2}% \def\imageheight{#3}% \ifnum\pdftexversion < 14 \pdfimage \else \pdfximage \fi \ifx\empty\imagewidth\else width \imagewidth \fi \ifx\empty\imageheight\else height \imageheight \fi {#1.pdf}% \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} \def\pdfmkdest#1{\pdfdest name{#1@} xyz} \def\pdfmkpgn#1{#1@} \let\linkcolor = \Cyan \def\endlink{\Black\pdfendlink} % Adding outlines to PDF; macros for calculating structure of outlines % come from Petr Olsak \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} \def\pdfmakeoutlines{{% \openin 1 \jobname.toc \ifeof 1\else\bgroup \closein 1 \indexnofonts \def\tt{} % thanh's hack / proper braces in bookmarks \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace % \def\chapentry ##1##2##3{} \def\unnumbchapentry ##1##2{} \def\secentry ##1##2##3##4{\advancenumber{chap##2}} \def\unnumbsecentry ##1##2{} \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} \def\unnumbsubsecentry ##1##2{} \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} \def\unnumbsubsubsecentry ##1##2{} \input \jobname.toc \def\chapentry ##1##2##3{% \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} \def\unnumbchapentry ##1##2{% \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} \def\secentry ##1##2##3##4{% \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} \def\unnumbsecentry ##1##2{% \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} \def\subsecentry ##1##2##3##4##5{% \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} \def\unnumbsubsecentry ##1##2{% \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} \def\subsubsecentry ##1##2##3##4##5##6{% \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} \def\unnumbsubsubsecentry ##1##2{% \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} \input \jobname.toc \egroup\fi }} \def\makelinks #1,{% \def\params{#1}\def\E{END}% \ifx\params\E \let\nextmakelinks=\relax \else \let\nextmakelinks=\makelinks \ifnum\lnkcount>0,\fi \picknum{#1}% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{\the\pgn}}% \linkcolor #1% \advance\lnkcount by 1% \endlink \fi \nextmakelinks } \def\picknum#1{\expandafter\pn#1} \def\pn#1{% \def\p{#1}% \ifx\p\lbrace \let\nextpn=\ppn \else \let\nextpn=\ppnn \def\first{#1} \fi \nextpn } \def\ppn#1{\pgn=#1\gobble} \def\ppnn{\pgn=\first} \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \ifx\p\space\else\addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \fi \nextsp} \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi \def\pdfurl#1{% \begingroup \normalturnoffactive\def\@{@}% \leavevmode\Red \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% % #1 \endgroup} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS| \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{% \startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}} \linkcolor #1\endlink} \def\mkpgn#1{#1@} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \fi % \ifx\pdfoutput \message{fonts,} % Font-change commands. % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf analogous to plain's \rm, etc. \newfam\sffam \def\sf{\fam=\sffam \tensf} \let\li = \sf % Sometimes we call it \li, not \sf. % We don't need math for this one. \def\ttsl{\tenttsl} % Use Computer Modern fonts at \magstephalf (11pt). \newcount\mainmagstep \mainmagstep=\magstephalf % Set the font macro #1 to the font named #2, adding on the % specified font prefix (normally `cm'). % #3 is the font's design size, #4 is a scale factor \def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. \ifx\fontprefix\undefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} \def\rmbshape{bx} %where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} \ifx\bigger\relax \let\mainmagstep=\magstep1 \setfont\textrm\rmshape{12}{1000} \setfont\texttt\ttshape{12}{1000} \else \setfont\textrm\rmshape{10}{\mainmagstep} \setfont\texttt\ttshape{10}{\mainmagstep} \fi % Instead of cmb10, you many want to use cmbx10. % cmbx10 is a prettier font on its own, but cmb10 % looks better when embedded in a line with cmr10. \setfont\textbf\bfshape{10}{\mainmagstep} \setfont\textit\itshape{10}{\mainmagstep} \setfont\textsl\slshape{10}{\mainmagstep} \setfont\textsf\sfshape{10}{\mainmagstep} \setfont\textsc\scshape{10}{\mainmagstep} \setfont\textttsl\ttslshape{10}{\mainmagstep} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep % A few fonts for @defun, etc. \setfont\defbf\bxshape{10}{\magstep1} %was 1314 \setfont\deftt\ttshape{10}{\magstep1} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} % Fonts for indices, footnotes, small examples (9pt). \setfont\smallrm\rmshape{9}{1000} \setfont\smalltt\ttshape{9}{1000} \setfont\smallbf\bfshape{10}{900} \setfont\smallit\itshape{9}{1000} \setfont\smallsl\slshape{9}{1000} \setfont\smallsf\sfshape{9}{1000} \setfont\smallsc\scshape{10}{900} \setfont\smallttsl\ttslshape{10}{900} \font\smalli=cmmi9 \font\smallsy=cmsy9 % Fonts for title page: \setfont\titlerm\rmbshape{12}{\magstep3} \setfont\titleit\itbshape{10}{\magstep4} \setfont\titlesl\slbshape{10}{\magstep4} \setfont\titlett\ttbshape{12}{\magstep3} \setfont\titlettsl\ttslshape{10}{\magstep4} \setfont\titlesf\sfbshape{17}{\magstep1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\authorrm{\secrm} % Chapter (and unnumbered) fonts (17.28pt). \setfont\chaprm\rmbshape{12}{\magstep2} \setfont\chapit\itbshape{10}{\magstep3} \setfont\chapsl\slbshape{10}{\magstep3} \setfont\chaptt\ttbshape{12}{\magstep2} \setfont\chapttsl\ttslshape{10}{\magstep3} \setfont\chapsf\sfbshape{17}{1000} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 % Section fonts (14.4pt). \setfont\secrm\rmbshape{12}{\magstep1} \setfont\secit\itbshape{10}{\magstep2} \setfont\secsl\slbshape{10}{\magstep2} \setfont\sectt\ttbshape{12}{\magstep1} \setfont\secttsl\ttslshape{10}{\magstep2} \setfont\secsf\sfbshape{12}{\magstep1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep2} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 % \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. % \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. % \setfont\ssecsl\slshape{10}{\magstep1} % \setfont\ssectt\ttshape{10}{\magstep1} % \setfont\ssecsf\sfshape{10}{\magstep1} %\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. %\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than %\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. %\setfont\ssectt\ttshape{10}{1315} %\setfont\ssecsf\sfshape{10}{1315} %\let\ssecbf=\ssecrm % Subsection fonts (13.15pt). \setfont\ssecrm\rmbshape{12}{\magstephalf} \setfont\ssecit\itbshape{10}{1315} \setfont\ssecsl\slbshape{10}{1315} \setfont\ssectt\ttbshape{12}{\magstephalf} \setfont\ssecttsl\ttslshape{10}{1315} \setfont\ssecsf\sfbshape{12}{\magstephalf} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{\magstep1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 % The smallcaps and symbol fonts should actually be scaled \magstep1.5, % but that is not a standard magnification. % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. Since % texinfo doesn't allow for producing subscripts and superscripts, we % don't bother to reset \scriptfont and \scriptscriptfont (which would % also require loading a lot more fonts). % \def\resetmathfonts{% \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf \textfont\ttfam = \tentt \textfont\sffam = \tensf } % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this so that font changes will continue to work % in math mode, where it is the current \fam that is relevant in most % cases, not the current font. Plain TeX does \def\bf{\fam=\bffam % \tenbf}, for example. By redefining \tenbf, we obviate the need to % redefine \bf itself. \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \resetmathfonts} \def\titlefonts{% \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy \let\tenttsl=\titlettsl \resetmathfonts \setleading{25pt}} \def\titlefont#1{{\titlefonts\rm #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl \resetmathfonts \setleading{16pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl \resetmathfonts \setleading{15pt}} \let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? \def\smallfonts{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy \let\tenttsl=\smallttsl \resetmathfonts \setleading{11pt}} % Set up the default fonts, so we can use them for creating boxes. % \textfonts % Define these so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 % Fonts for short table of contents. \setfont\shortcontrm\rmshape{12}{1000} \setfont\shortcontbf\bxshape{12}{1000} \setfont\shortcontsl\slshape{12}{1000} %% Add scribe-like font environments, plus @l for inline lisp (usually sans %% serif) and @ii for TeX italic % \smartitalic{ARG} outputs arg in italics, followed by an italic correction % unless the following character is such as not to need one. \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} \def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx} \def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} \let\i=\smartitalic \let\var=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic \let\cite=\smartslanted \def\b#1{{\bf #1}} \let\strong=\b % We can't just use \exhyphenpenalty, because that only has effect at % the end of a paragraph. Restore normal hyphenation at the end of the % group within which \nohyphenation is presumably called. % \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} \def\restorehyphenation{\hyphenchar\font = `- } \def\t#1{% {\tt \rawbackslash \frenchspacing #1}% \null } \let\ttfont=\t \def\samp#1{`\tclose{#1}'\null} \setfont\keyrm\rmshape{8}{1000} \font\keysy=cmsy9 \def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% \vbox{\hrule\kern-0.4pt \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% \kern-0.4pt\hrule}% \kern-.06em\raise0.4pt\hbox{\angleright}}}} % The old definition, with no lozenge: %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} \def\ctrl #1{{\tt \rawbackslash \hat}#1} % @file, @option are the same as @samp. \let\file=\samp \let\option=\samp % @code is a modification of @t, % which makes spaces the same size as normal in the surrounding text. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \frenchspacing #1% }% \null } % We *must* turn on hyphenation at `-' and `_' in \code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) % and arrange explicitly to hyphenate at a dash. % -- rms. { \catcode`\-=\active \catcode`\_=\active % \global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex } % % If we end up with any active - characters when handling the index, % just treat them as a normal -. \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} } \def\realdash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} \def\codex #1{\tclose{#1}\endgroup} %\let\exp=\tclose %Was temporary % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \def\kbdinputstyle{\parsearg\kbdinputstylexxx} \def\kbdinputstylexxx#1{% \def\arg{#1}% \ifx\arg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\arg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\arg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \fi\fi\fi } \def\worddistinct{distinct} \def\wordexample{example} \def\wordcode{code} % Default is kbdinputdistinct. (Too much of a hassle to call the macro, % the catcodes are wrong for parsearg to work.) \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} \def\xkey{\key} \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% \else{\tclose{\kbdfont\look}}\fi \else{\tclose{\kbdfont\look}}\fi} % For @url, @env, @command quotes seem unnecessary, so use \code. \let\url=\code \let\env=\code \let\command=\code % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url % itself. First (mandatory) arg is the url. Perhaps eventually put in % a hypertex \special here. % \def\uref#1{\douref #1,,,\finish} \def\douref#1,#2,#3,#4\finish{\begingroup \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url \fi \else \code{#1}% only url given, so show it \fi \fi \endlink \endgroup} % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \let\email=\uref \fi % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} % @l was never documented to mean ``switch to the Lisp font'', % and it is not used as such in any manual I can find. We need it for % Polish suppressed-l. --karl, 22sep96. %\def\l#1{{\li #1}\null} % Explicit font changes: @r, @sc, undocumented @ii. \def\r#1{{\rm #1}} % roman font \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font % @acronym downcases the argument and prints in smallcaps. \def\acronym#1{{\smallcaps \lowercase{#1}}} % @pounds{} is a sterling sign. \def\pounds{{\it\$}} \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % Do an implicit @contents or @shortcontents after @end titlepage if the % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. % \newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue \def\shorttitlepage{\parsearg\shorttitlepagezzz} \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page} \def\titlepage{\begingroup \parindent=0pt \textfonts \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% % \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% % % Leave some space at the very top of the page. \vglue\titlepagetopglue % % Now you can print the title using @title. \def\title{\parsearg\titlezzz}% \def\titlezzz##1{\leftline{\titlefonts\rm ##1} % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Now you can put text using @subtitle. \def\subtitle{\parsearg\subtitlezzz}% \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% % % @author should come last, but may come many times. \def\author{\parsearg\authorzzz}% \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi {\authorfont \leftline{##1}}}% % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \oldpage \let\page = \oldpage \hbox{}}% % \def\page{\oldpage \hbox{}} } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi % \ifpdf \pdfmakepagedesttrue \fi % \HEADINGSon } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } %%% Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make Tex use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\oddheading{\parsearg\oddheadingxxx} \def\everyheading{\parsearg\everyheadingxxx} \def\evenfooting{\parsearg\evenfootingxxx} \def\oddfooting{\parsearg\oddfootingxxx} \def\everyfooting{\parsearg\everyfootingxxx} {\catcode`\@=0 % \gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish} \gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish} \gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} \gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} \gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \global\advance\pageheight by -\baselineskip \global\advance\vsize by -\baselineskip } \gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} % }% unbind the catcode of @. % @headings double turns headings on for double-sided printing. % @headings single turns headings on for single-sided printing. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} \def\HEADINGSoff{ \global\evenheadline={\hfil} \global\evenfootline={\hfil} \global\oddheadline={\hfil} \global\oddfootline={\hfil}} \HEADINGSoff % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{ \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{ \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % Produces Day Month Year style of output. \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg\settitlezzz} \def\settitlezzz #1{\gdef\thistitle{#1}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @vtable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz} \def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz} \def\internalBkitem{\smallbreak \parsearg\kitemzzz} \def\internalBkitemx{\itemxpar \parsearg\kitemzzz} \def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}% \itemzzz {#1}} \def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}% \itemzzz {#1}} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemfont{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % If the item text does not fit in the space we have, put it on a line % by itself, and do not allow a page break either before or after that % line. We do not start a paragraph here because then if the next % command is, e.g., @kindex, the whatsit would get put into the % horizontal list on a line by itself, resulting in extra blank space. \ifdim \wd0>\itemmax % % Make this a paragraph so we get the \parskip glue and wrapping, % but leave it ragged-right. \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent \advance\rightskip by0pt plus1fil \leavevmode\unhbox0\par \endgroup % % We're going to be starting a paragraph, but we don't want the % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. Unfortunately % we can't prevent a possible page break at the following % \baselineskip glue. \nobreak \endgroup \itemxneedsnegativevskipfalse \else % The item text fits into the space. Start a paragraph, so that the % following text (if any) will end up on the same line. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a table}} \def\itemx{\errmessage{@itemx while not in a table}} \def\kitem{\errmessage{@kitem while not in a table}} \def\kitemx{\errmessage{@kitemx while not in a table}} \def\xitem{\errmessage{@xitem while not in a table}} \def\xitemx{\errmessage{@xitemx while not in a table}} % Contains a kludge to get @end[description] to work. \def\description{\tablez{\dontindex}{1}{}{}{}{}} % @table, @ftable, @vtable. \def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} {\obeylines\obeyspaces% \gdef\tablex #1^^M{% \tabley\dontindex#1 \endtabley}} \def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex} {\obeylines\obeyspaces% \gdef\ftablex #1^^M{% \tabley\fnitemindex#1 \endtabley \def\Eftable{\endgraf\afterenvbreak\endgroup}% \let\Etable=\relax}} \def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex} {\obeylines\obeyspaces% \gdef\vtablex #1^^M{% \tabley\vritemindex#1 \endtabley \def\Evtable{\endgraf\afterenvbreak\endgroup}% \let\Etable=\relax}} \def\dontindex #1{} \def\fnitemindex #1{\doind {fn}{\code{#1}}}% \def\vritemindex #1{\doind {vr}{\code{#1}}}% {\obeyspaces % \gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup% \tablez{#1}{#2}{#3}{#4}{#5}{#6}}} \def\tablez #1#2#3#4#5#6{% \aboveenvbreak % \begingroup % \def\Edescription{\Etable}% Necessary kludge. \let\itemindex=#1% \ifnum 0#3>0 \advance \leftskip by #3\mil \fi % \ifnum 0#4>0 \tableindent=#4\mil \fi % \ifnum 0#5>0 \advance \rightskip by #5\mil \fi % \def\itemfont{#2}% \itemmax=\tableindent % \advance \itemmax by -\itemmargin % \advance \leftskip by \tableindent % \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi% \def\Etable{\endgraf\afterenvbreak\endgroup}% \let\item = \internalBitem % \let\itemx = \internalBitemx % \let\kitem = \internalBkitem % \let\kitemx = \internalBkitemx % \let\xitem = \internalBxitem % \let\xitemx = \internalBxitemx % } % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \def\itemize{\parsearg\itemizezzz} \def\itemizezzz #1{% \begingroup % ended by the @end itemize \itemizey {#1}{\Eitemize} } \def\itemizey #1#2{% \aboveenvbreak % \itemmax=\itemindent % \advance \itemmax by -\itemmargin % \advance \leftskip by \itemindent % \exdentamount=\itemindent \parindent = 0pt % \parskip = \smallskipamount % \ifdim \parskip=0pt \parskip=2pt \fi% \def#2{\endgraf\afterenvbreak\endgroup}% \def\itemcontents{#1}% \let\item=\itemizeitem} % Set sfcode to normal for the chars that usually have another value. % These are `.?!:;,' \def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000 \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \def\enumerate{\parsearg\enumeratezzz} \def\enumeratezzz #1{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% \begingroup % ended by the @end enumerate % % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call itemizey, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \itemizey{#1.}\Eenumerate\flushcr } % @alphaenumerate and @capsenumerate are abbreviations for giving an arg % to @enumerate. % \def\alphaenumerate{\enumerate{a}} \def\capsenumerate{\enumerate{A}} \def\Ealphaenumerate{\Eenumerate} \def\Ecapsenumerate{\Eenumerate} % Definition of @item while inside @itemize. \def\itemizeitem{% \advance\itemno by 1 {\let\par=\endgraf \smallbreak}% \ifhmode \errmessage{In hmode at itemizeitem}\fi {\parskip=0in \hskip 0pt \hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% \vadjust{\penalty 1200}}% \flushcr} % @multitable macros % Amy Hendrickson, 8/18/94, 3/6/96 % % @multitable ... @end multitable will make as many columns as desired. % Contents of each column will wrap at width given in preamble. Width % can be specified either with sample text given in a template line, % or in percent of \hsize, the current width of text on page. % Table can continue over pages but will only break between lines. % To make preamble: % % Either define widths of columns in terms of percent of \hsize: % @multitable @columnfractions .25 .3 .45 % @item ... % % Numbers following @columnfractions are the percent of the total % current hsize to be used for each column. You may use as many % columns as desired. % Or use a template: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item ... % using the widest term desired in each column. % % For those who want to use more than one line's worth of words in % the preamble, break the line within one argument and it % will parse correctly, i.e., % % @multitable {Column 1 template} {Column 2 template} {Column 3 % template} % Not: % @multitable {Column 1 template} {Column 2 template} % {Column 3 template} % Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. % @item, @tab, @multitable or @end multitable do not need to be on their % own lines, but it will not hurt if they are. % Sample multitable: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item first col stuff @tab second col stuff @tab third col % @item % first col stuff % @tab % second col stuff % @tab % third col % @item first col stuff @tab second col stuff % @tab Many paragraphs of text may be used in any column. % % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. % @end multitable % Default dimensions may be reset by user. % @multitableparskip is vertical space between paragraphs in table. % @multitableparindent is paragraph indent in table. % @multitablecolmargin is horizontal space to be left between columns. % @multitablelinespace is space to leave between table items, baseline % to baseline. % 0pt means it depends on current normal line spacing. % \newskip\multitableparskip \newskip\multitableparindent \newdimen\multitablecolspace \newskip\multitablelinespace \multitableparskip=0pt \multitableparindent=6pt \multitablecolspace=12pt \multitablelinespace=0pt % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the part of the @columnfraction before the decimal point, which % is presumably either 0 or the empty string (but we don't check, we % just throw it away). #2 is the decimal part, which we use as the % percent of \hsize for this column. \def\pickupwholefraction#1.#2 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip }% Add a normal word space as a separator; % typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % This used to have \hskip1sp. But then the space in a template line is % not enough. That is bad. So let's go back to just & until we % encounter the problem it was intended to solve again. % --karl, nathan@acm.org, 20apr99. \def\tab{&} % @multitable ... @end multitable definitions: % \def\multitable{\parsearg\dotable} \def\dotable#1{\bgroup \vskip\parskip \let\item\crcr \tolerance=9500 \hbadness=9500 \setmultitablespacing \parskip=\multitableparskip \parindent=\multitableparindent \overfullrule=0pt \global\colcount=0 \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% % % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % \everycr will reset column counter, \colcount, at the end of % each line. Every column entry will cause \colcount to advance by one. % The table preamble % looks at the current \colcount to find the correct column width. \everycr{\noalign{% % % \filbreak%% keeps underfull box messages off when table breaks over pages. % Maybe so, but it also creates really weird page breaks when the table % breaks over pages. Wouldn't \vfil be better? Wait until the problem % manifests itself, so it can be fixed for real --karl. \global\colcount=0\relax}}% % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup&\global\advance\colcount by 1\relax \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname % % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. % % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % % If the user has set preamble in terms of percent of \hsize we will % use that dimension as the width of the column, and the \leftskip % will keep entries from bumping into each other. Table will start at % left margin and final column will justify at right margin. % % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 % The first column will be indented with the surrounding text. \advance\hsize by\leftskip \else \ifsetpercent \else % If user has not set preamble in terms of percent of \hsize % we will advance \hsize by \multitablecolspace. \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi % Ignoring space at the beginning and end avoids an occasional spurious % blank line, when TeX decides to break the line at the space before the % box from the multistrut, so the strut ends up on a line by itself. % For example: % @multitable @columnfractions .11 .89 % @item @code{#} % @tab Legal holiday which is valid in major parts of the whole country. % Is automatically provided with highlighting sequences respectively marking % characters. \noindent\ignorespaces##\unskip\multistrut}\cr } \def\setmultitablespacing{% test to see if user has set \multitablelinespace. % If so, do nothing. If not, give it an appropriate dimension based on % current baselineskip. \ifdim\multitablelinespace=0pt \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 %% strut to put in table in case some entry doesn't have descenders, %% to keep lines equally spaced \let\multistrut = \strut \else %% FIXME: what is \box0 supposed to be? \gdef\multistrut{\vrule height\multitablelinespace depth\dp0 width0pt\relax} \fi %% Test to see if parskip is larger than space between lines of %% table. If not, do nothing. %% If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller %% than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller %% than skip between lines in the table. \fi} \message{conditionals,} % Prevent errors for section commands. % Used in @ignore and in failing conditionals. \def\ignoresections{% \let\chapter=\relax \let\unnumbered=\relax \let\top=\relax \let\unnumberedsec=\relax \let\unnumberedsection=\relax \let\unnumberedsubsec=\relax \let\unnumberedsubsection=\relax \let\unnumberedsubsubsec=\relax \let\unnumberedsubsubsection=\relax \let\section=\relax \let\subsec=\relax \let\subsubsec=\relax \let\subsection=\relax \let\subsubsection=\relax \let\appendix=\relax \let\appendixsec=\relax \let\appendixsection=\relax \let\appendixsubsec=\relax \let\appendixsubsection=\relax \let\appendixsubsubsec=\relax \let\appendixsubsubsection=\relax \let\contents=\relax \let\smallbook=\relax \let\titlepage=\relax } % Used in nested conditionals, where we have to parse the Texinfo source % and so want to turn off most commands, in case they are used % incorrectly. % \def\ignoremorecommands{% \let\defcodeindex = \relax \let\defcv = \relax \let\deffn = \relax \let\deffnx = \relax \let\defindex = \relax \let\defivar = \relax \let\defmac = \relax \let\defmethod = \relax \let\defop = \relax \let\defopt = \relax \let\defspec = \relax \let\deftp = \relax \let\deftypefn = \relax \let\deftypefun = \relax \let\deftypeivar = \relax \let\deftypeop = \relax \let\deftypevar = \relax \let\deftypevr = \relax \let\defun = \relax \let\defvar = \relax \let\defvr = \relax \let\ref = \relax \let\xref = \relax \let\printindex = \relax \let\pxref = \relax \let\settitle = \relax \let\setchapternewpage = \relax \let\setchapterstyle = \relax \let\everyheading = \relax \let\evenheading = \relax \let\oddheading = \relax \let\everyfooting = \relax \let\evenfooting = \relax \let\oddfooting = \relax \let\headings = \relax \let\include = \relax \let\lowersections = \relax \let\down = \relax \let\raisesections = \relax \let\up = \relax \let\set = \relax \let\clear = \relax \let\item = \relax } % Ignore @ignore ... @end ignore. % \def\ignore{\doignore{ignore}} % Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. % \def\ifinfo{\doignore{ifinfo}} \def\ifhtml{\doignore{ifhtml}} \def\ifnottex{\doignore{ifnottex}} \def\html{\doignore{html}} \def\menu{\doignore{menu}} \def\direntry{\doignore{direntry}} % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory = \comment % Ignore text until a line `@end #1'. % \def\doignore#1{\begingroup % Don't complain about control sequences we have declared \outer. \ignoresections % % Define a command to swallow text until we reach `@end #1'. % This @ is a catcode 12 token (that is the normal catcode of @ in % this texinfo.tex file). We change the catcode of @ below to match. \long\def\doignoretext##1@end #1{\enddoignore}% % % Make sure that spaces turn into tokens that match what \doignoretext wants. \catcode32 = 10 % % Ignore braces, too, so mismatched braces don't cause trouble. \catcode`\{ = 9 \catcode`\} = 9 % % We must not have @c interpreted as a control sequence. \catcode`\@ = 12 % % Make the letter c a comment character so that the rest of the line % will be ignored. This way, the document can have (for example) % @c @end ifinfo % and the @end ifinfo will be properly ignored. % (We've just changed @ to catcode 12.) \catcode`\c = 14 % % And now expand that command. \doignoretext } % What we do to finish off ignored text. % \def\enddoignore{\endgroup\ignorespaces}% \newif\ifwarnedobs\warnedobsfalse \def\obstexwarn{% \ifwarnedobs\relax\else % We need to warn folks that they may have trouble with TeX 3.0. % This uses \immediate\write16 rather than \message to get newlines. \immediate\write16{} \immediate\write16{WARNING: for users of Unix TeX 3.0!} \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} \immediate\write16{If you are running another version of TeX, relax.} \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} \immediate\write16{ Then upgrade your TeX installation if you can.} \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)} \immediate\write16{If you are stuck with version 3.0, run the} \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} \immediate\write16{ to use a workaround.} \immediate\write16{} \global\warnedobstrue \fi } % **In TeX 3.0, setting text in \nullfont hangs tex. For a % workaround (which requires the file ``dummy.tfm'' to be installed), % uncomment the following line: %%%%%\font\nullfont=dummy\let\obstexwarn=\relax % Ignore text, except that we keep track of conditional commands for % purposes of nesting, up to an `@end #1' command. % \def\nestedignore#1{% \obstexwarn % We must actually expand the ignored text to look for the @end % command, so that nested ignore constructs work. Thus, we put the % text into a \vbox and then do nothing with the result. To minimize % the change of memory overflow, we follow the approach outlined on % page 401 of the TeXbook: make the current font be a dummy font. % \setbox0 = \vbox\bgroup % Don't complain about control sequences we have declared \outer. \ignoresections % % Define `@end #1' to end the box, which will in turn undefine the % @end command again. \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% % % We are going to be parsing Texinfo commands. Most cause no % trouble when they are used incorrectly, but some commands do % complicated argument parsing or otherwise get confused, so we % undefine them. % % We can't do anything about stray @-signs, unfortunately; % they'll produce `undefined control sequence' errors. \ignoremorecommands % % Set the current font to be \nullfont, a TeX primitive, and define % all the font commands to also use \nullfont. We don't use % dummy.tfm, as suggested in the TeXbook, because not all sites % might have that installed. Therefore, math mode will still % produce output, but that should be an extremely small amount of % stuff compared to the main input. % \nullfont \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont \let\tensf=\nullfont % Similarly for index fonts (mostly for their use in smallexample). \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont \let\smallsf=\nullfont % % Don't complain when characters are missing from the fonts. \tracinglostchars = 0 % % Don't bother to do space factor calculations. \frenchspacing % % Don't report underfull hboxes. \hbadness = 10000 % % Do minimal line-breaking. \pretolerance = 10000 % % Do not execute instructions in @tex \def\tex{\doignore{tex}}% % Do not execute macro definitions. % `c' is a comment character, so the word `macro' will get cut off. \def\macro{\doignore{ma}}% } % @set VAR sets the variable VAR to an empty value. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. Make sure the catcode of space is correct to avoid % losing inside @example, for instance. % \def\set{\begingroup\catcode` =10 \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. \parsearg\setxxx} \def\setxxx#1{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% \def\temp{#2}% \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. \fi \endgroup } % Can't use \xdef to pre-expand #2 and save some time, since \temp or % \next or other control sequences that we've defined might get us into % an infinite loop. Consider `@set foo @cite{bar}'. \def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} % @clear VAR clears (i.e., unsets) the variable VAR. % \def\clear{\parsearg\clearxxx} \def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} % @value{foo} gets the text saved in variable foo. { \catcode`\_ = \active % % We might end up with active _ or - characters in the argument if % we're called from @code, as @code{@value{foo-bar_}}. So \let any % such active characters to their normal equivalents. \gdef\value{\begingroup \catcode`\-=12 \catcode`\_=12 \indexbreaks \let_\normalunderscore \valuexxx} } \def\valuexxx#1{\expandablevalue{#1}\endgroup} % We have this subroutine so that we can handle at least some @value's % properly in indexes (we \let\value to this in \indexdummies). Ones % whose names contain - or _ still won't work, but we can't do anything % about that. The command has to be fully expandable, since the result % winds up in the index file. This means that if the variable's value % contains other Texinfo commands, it's almost certain it will fail % (although perhaps we could fix that with sufficient work to do a % one-level expansion on the result, instead of complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % \def\ifset{\parsearg\ifsetxxx} \def\ifsetxxx #1{% \expandafter\ifx\csname SET#1\endcsname\relax \expandafter\ifsetfail \else \expandafter\ifsetsucceed \fi } \def\ifsetsucceed{\conditionalsucceed{ifset}} \def\ifsetfail{\nestedignore{ifset}} \defineunmatchedend{ifset} % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % \def\ifclear{\parsearg\ifclearxxx} \def\ifclearxxx #1{% \expandafter\ifx\csname SET#1\endcsname\relax \expandafter\ifclearsucceed \else \expandafter\ifclearfail \fi } \def\ifclearsucceed{\conditionalsucceed{ifclear}} \def\ifclearfail{\nestedignore{ifclear}} \defineunmatchedend{ifclear} % @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text % following, through the first @end iftex (etc.). Make `@end iftex' % (etc.) valid only after an @iftex. % \def\iftex{\conditionalsucceed{iftex}} \def\ifnothtml{\conditionalsucceed{ifnothtml}} \def\ifnotinfo{\conditionalsucceed{ifnotinfo}} \defineunmatchedend{iftex} \defineunmatchedend{ifnothtml} \defineunmatchedend{ifnotinfo} % We can't just want to start a group at @iftex (for example) and end it % at @end iftex, since then @set commands inside the conditional have no % effect (they'd get reverted at the end of the group). So we must % define \Eiftex to redefine itself to be its previous value. (We can't % just define it to fail again with an ``unmatched end'' error, since % the @ifset might be nested.) % \def\conditionalsucceed#1{% \edef\temp{% % Remember the current value of \E#1. \let\nece{prevE#1} = \nece{E#1}% % % At the `@end #1', redefine \E#1 to be its previous value. \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% }% \temp } % We need to expand lots of \csname's, but we don't want to expand the % control sequences after we've constructed them. % \def\nece#1{\expandafter\noexpand\csname#1\endcsname} % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % except not \outer, so it can be used within \newindex. {\catcode`\@=11 \gdef\newwrite{\alloc@7\write\chardef\sixt@@n}} % \newindex {foo} defines an index named foo. % It automatically defines \fooindex such that % \fooindex ...rest of line... puts an entry in the index foo. % It also defines \fooindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is foo. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 % Open the file \fi \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. \def\newcodeindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 \fi \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}} } \def\defcodeindex{\parsearg\newcodeindex} % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % The \closeout helps reduce unnecessary open files; the limit on the % Acorn RISC OS is a mere 16 files. \def\synindex#1 #2 {% \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname \expandafter\closeout\csname#1indfile\endcsname \expandafter\let\csname#1indfile\endcsname=\synindexfoo \expandafter\xdef\csname#1index\endcsname{% define \xxxindex \noexpand\doindex{#2}}% } % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. \def\syncodeindex#1 #2 {% \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname \expandafter\closeout\csname#1indfile\endcsname \expandafter\let\csname#1indfile\endcsname=\synindexfoo \expandafter\xdef\csname#1index\endcsname{% define \xxxindex \noexpand\docodeindex{#2}}% } % Define \doindex, the driver for all \fooindex macros. % Argument #1 is generated by the calling \fooindex macro, % and it is "foo", the name of the index. % \doindex just uses \parsearg; it calls \doind for the actual work. % This is because \doind is more useful to call from other macros. % There is also \dosubind {index}{topic}{subtopic} % which makes an entry in a two-level index such as the operation index. \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} \def\singleindexer #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} \def\indexdummies{% \def\ { }% % Take care of the plain tex accent commands. \def\"{\realbackslash "}% \def\`{\realbackslash `}% \def\'{\realbackslash '}% \def\^{\realbackslash ^}% \def\~{\realbackslash ~}% \def\={\realbackslash =}% \def\b{\realbackslash b}% \def\c{\realbackslash c}% \def\d{\realbackslash d}% \def\u{\realbackslash u}% \def\v{\realbackslash v}% \def\H{\realbackslash H}% % Take care of the plain tex special European modified letters. \def\oe{\realbackslash oe}% \def\ae{\realbackslash ae}% \def\aa{\realbackslash aa}% \def\OE{\realbackslash OE}% \def\AE{\realbackslash AE}% \def\AA{\realbackslash AA}% \def\o{\realbackslash o}% \def\O{\realbackslash O}% \def\l{\realbackslash l}% \def\L{\realbackslash L}% \def\ss{\realbackslash ss}% % Take care of texinfo commands likely to appear in an index entry. % (Must be a way to avoid doing expansion at all, and thus not have to % laboriously list every single command here.) \def\@{@}% will be @@ when we switch to @ as escape char. % Need these in case \tex is in effect and \{ is a \delimiter again. % But can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. \let\{ = \mylbrace \let\} = \myrbrace \def\_{{\realbackslash _}}% \def\w{\realbackslash w }% \def\bf{\realbackslash bf }% %\def\rm{\realbackslash rm }% \def\sl{\realbackslash sl }% \def\sf{\realbackslash sf}% \def\tt{\realbackslash tt}% \def\gtr{\realbackslash gtr}% \def\less{\realbackslash less}% \def\hat{\realbackslash hat}% \def\TeX{\realbackslash TeX}% \def\dots{\realbackslash dots }% \def\result{\realbackslash result}% \def\equiv{\realbackslash equiv}% \def\expansion{\realbackslash expansion}% \def\print{\realbackslash print}% \def\error{\realbackslash error}% \def\point{\realbackslash point}% \def\copyright{\realbackslash copyright}% \def\tclose##1{\realbackslash tclose {##1}}% \def\code##1{\realbackslash code {##1}}% \def\uref##1{\realbackslash uref {##1}}% \def\url##1{\realbackslash url {##1}}% \def\env##1{\realbackslash env {##1}}% \def\command##1{\realbackslash command {##1}}% \def\option##1{\realbackslash option {##1}}% \def\dotless##1{\realbackslash dotless {##1}}% \def\samp##1{\realbackslash samp {##1}}% \def\,##1{\realbackslash ,{##1}}% \def\t##1{\realbackslash t {##1}}% \def\r##1{\realbackslash r {##1}}% \def\i##1{\realbackslash i {##1}}% \def\b##1{\realbackslash b {##1}}% \def\sc##1{\realbackslash sc {##1}}% \def\cite##1{\realbackslash cite {##1}}% \def\key##1{\realbackslash key {##1}}% \def\file##1{\realbackslash file {##1}}% \def\var##1{\realbackslash var {##1}}% \def\kbd##1{\realbackslash kbd {##1}}% \def\dfn##1{\realbackslash dfn {##1}}% \def\emph##1{\realbackslash emph {##1}}% \def\acronym##1{\realbackslash acronym {##1}}% % % Handle some cases of @value -- where the variable name does not % contain - or _, and the value does not contain any % (non-fully-expandable) commands. \let\value = \expandablevalue % \unsepspaces % Turn off macro expansion \turnoffmacros } % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\\leavevmode \penalty \@M \ ). {\obeyspaces \gdef\unsepspaces{\obeyspaces\let =\space}} % \indexnofonts no-ops all font-change commands. % This is used when outputting the strings to sort the index by. \def\indexdummyfont#1{#1} \def\indexdummytex{TeX} \def\indexdummydots{...} \def\indexnofonts{% % Just ignore accents. \let\,=\indexdummyfont \let\"=\indexdummyfont \let\`=\indexdummyfont \let\'=\indexdummyfont \let\^=\indexdummyfont \let\~=\indexdummyfont \let\==\indexdummyfont \let\b=\indexdummyfont \let\c=\indexdummyfont \let\d=\indexdummyfont \let\u=\indexdummyfont \let\v=\indexdummyfont \let\H=\indexdummyfont \let\dotless=\indexdummyfont % Take care of the plain tex special European modified letters. \def\oe{oe}% \def\ae{ae}% \def\aa{aa}% \def\OE{OE}% \def\AE{AE}% \def\AA{AA}% \def\o{o}% \def\O{O}% \def\l{l}% \def\L{L}% \def\ss{ss}% \let\w=\indexdummyfont \let\t=\indexdummyfont \let\r=\indexdummyfont \let\i=\indexdummyfont \let\b=\indexdummyfont \let\emph=\indexdummyfont \let\strong=\indexdummyfont \let\cite=\indexdummyfont \let\sc=\indexdummyfont %Don't no-op \tt, since it isn't a user-level command % and is used in the definitions of the active chars like <, >, |... %\let\tt=\indexdummyfont \let\tclose=\indexdummyfont \let\code=\indexdummyfont \let\url=\indexdummyfont \let\uref=\indexdummyfont \let\env=\indexdummyfont \let\acronym=\indexdummyfont \let\command=\indexdummyfont \let\option=\indexdummyfont \let\file=\indexdummyfont \let\samp=\indexdummyfont \let\kbd=\indexdummyfont \let\key=\indexdummyfont \let\var=\indexdummyfont \let\TeX=\indexdummytex \let\dots=\indexdummydots \def\@{@}% } % To define \realbackslash, we must make \ not be an escape. % We must first make another character (@) an escape % so we do not become unable to do a definition. {\catcode`\@=0 \catcode`\\=\other @gdef@realbackslash{\}} \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % For \ifx comparisons. \def\emptymacro{\empty} % Most index entries go through here, but \dosubind is the general case. % \def\doind#1#2{\dosubind{#1}{#2}\empty} % Workhorse for all \fooindexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % \empty if called from \doind, as we usually are. The main exception % is with defuns, which call us directly. % \def\dosubind#1#2#3{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% \fi {% \count255=\lastpenalty {% \indexdummies % Must do this here, since \bf, etc expand at this stage \escapechar=`\\ {% \let\folio = 0% We will expand all macros now EXCEPT \folio. \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % \def\thirdarg{#3}% % % If third arg is present, precede it with space in sort key. \ifx\thirdarg\emptymacro \let\subentry = \empty \else \def\subentry{ #3}% \fi % % First process the index entry with all font commands turned % off to get the string to sort by. {\indexnofonts \xdef\indexsorttmp{#2\subentry}}% % % Now the real index entry with the fonts. \toks0 = {#2}% % % If third (subentry) arg is present, add it to the index % string. And include a space. \ifx\thirdarg\emptymacro \else \toks0 = \expandafter{\the\toks0 \space #3}% \fi % % Set up the complete index entry, with both the sort key % and the original text, including any font commands. We write % three arguments to \entry to the .?? file, texindex reduces to % two when writing the .??s sorted result. \edef\temp{% \write\csname#1indfile\endcsname{% \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% }% % % If a skip is the last thing on the list now, preserve it % by backing up by \lastskip, doing the \write, then inserting % the skip again. Otherwise, the whatsit generated by the % \write will make \lastskip zero. The result is that sequences % like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % \iflinks \ifvmode \skip0 = \lastskip \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi \fi % \temp % do the write % % \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi \fi }% }% \penalty\count255 }% } % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} \def\cindexsub {\begingroup\obeylines\cindexsub} {\obeylines % \gdef\cindexsub "#1" #2^^M{\endgroup % \dosubind{cp}{#2}{#1}}} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \def\printindex{\parsearg\doprintindex} \def\doprintindex#1{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \indexbreaks % % See if the index file exists and is nonempty. % Change catcode of @ here so that if the index file contains % \initial {@} % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 \openin 1 \jobname.#1s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \else % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \temp \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. \def\indexbackslash{\rawbackslashxx}% \catcode`\\ = 0 \escapechar = `\\ \begindoublecolumns \input \jobname.#1s \enddoublecolumns \fi \fi \closein 1 \endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. \def\initial#1{{% % Some minor font changes for the special characters. \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt % % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. \penalty -300 % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus .5\baselineskip \leftline{\secbf #1}% \vskip .33\baselineskip plus .1\baselineskip % % Do our best not to break after the initial. \nobreak }} % This typesets a paragraph consisting of #1, dot leaders, and then #2 % flush to the right margin. It is used for index and table of contents % entries. The paragraph is indented by \leftskip. % \def\entry#1#2{\begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % Do not fill out the last line with white space. \parfillskip = 0in % % No extra space above this paragraph. \parskip = 0in % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % \hangindent is only relevant when the entry text and page number % don't both fit on one line. In that case, bob suggests starting the % dots pretty far over on the line. Unfortunately, a large % indentation looks wrong when the entry text itself is broken across % lines. So we use a small indentation and put up with long leaders. % % \hangafter is reset to 1 (which is the value we want) at the start % of each paragraph, so we need not do anything with that. \hangindent = 2em % % When the entry text needs to be broken, just fill out the first line % with blank space. \rightskip = 0pt plus1fil % % A bit of stretch before each entry for the benefit of balancing columns. \vskip 0pt plus1pt % % Start a ``paragraph'' for the index entry so the line breaking % parameters we've set above will have an effect. \noindent % % Insert the text of the index entry. TeX will do line-breaking on it. #1% % The following is kludged to not output a line of dots in the index if % there are no page numbers. The next person who breaks this will be % cursed by a Unix daemon. \def\tempa{{\rm }}% \def\tempb{#2}% \edef\tempc{\tempa}% \edef\tempd{\tempb}% \ifx\tempc\tempd\ \else% % % If we must, put the page number on a line of its own, and fill out % this line with blank space. (The \hfil is overwhelmed with the % fill leaders glue in \indexdotfill if the page number does fit.) \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. \ifpdf \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. \else \ #2% The page number ends the paragraph. \fi \fi% \par \endgroup} % Like \dotfill except takes at least 1 em. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} \def\primary #1{\line{#1\hfil}} \newskip\secondaryindent \secondaryindent=0.5cm \def\secondary #1#2{ {\parfillskip=0in \parskip=0in \hangindent =1in \hangafter=1 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par }} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 \newbox\partialpage \newdimen\doublecolumnhsize \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% % % Here is a possibility not foreseen in manmac: if we accumulate a % whole lot of material, we might end up calling this \output % routine twice in a row (see the doublecol-lose test, which is % essentially a couple of indexes with @setchapternewpage off). In % that case we just ship out what is in \partialpage with the normal % output routine. Generally, \partialpage will be empty when this % runs and this will be a no-op. See the indexspread.tex test case. \ifvoid\partialpage \else \onepageout{\pagecontents\partialpage}% \fi % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% }% \eject % run that output routine to set \partialpage % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \advance\vsize by -\ht\partialpage \vsize = 2\vsize } % The double-column output routine for all double-column pages except % the last. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \dimen@ = \vsize \divide\dimen@ by 2 % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty } \def\pagesofar{% % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } \def\enddoublecolumns{% \output = {% % Split the last of the double-column material. Leave it on the % current page, no automatic page break. \balancecolumns % % If we end up splitting too much material for the current page, % though, there will be another page break right after this \output % invocation ends. Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. (We hope \balancecolumns will never be % called on to balance too much material, but if it is, this makes % the output somewhat more palatable.) \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize (after the % \endgroup where \vsize got restored). \pagegoal = \vsize } \def\balancecolumns{% % Called at the end of the double column material. \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 % target to split to %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% \splittopskip = \topskip % Loop until we get a decent breakpoint. {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ \ifdim\ht3>\dimen@ \global\advance\dimen@ by 1pt \repeat }% %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% % \pagesofar } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % \def\appendixletter{\char\the\appendixno} % We do the following for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} % Each @chapter defines this as the name of the chapter. % page headings and footings can use it. @section does likewise. \def\thischapter{} \def\thissection{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raise/lowersections modify this count % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} \let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} \let\down=\lowersections % original BFox name % Choose a numbered-heading macro % #1 is heading level if unmodified by @raisesections or @lowersections % #2 is text for heading \def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 \ifcase\absseclevel \chapterzzz{#2} \or \seczzz{#2} \or \numberedsubseczzz{#2} \or \numberedsubsubseczzz{#2} \else \ifnum \absseclevel<0 \chapterzzz{#2} \else \numberedsubsubseczzz{#2} \fi \fi } % like \numhead, but chooses appendix heading levels \def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 \ifcase\absseclevel \appendixzzz{#2} \or \appendixsectionzzz{#2} \or \appendixsubseczzz{#2} \or \appendixsubsubseczzz{#2} \else \ifnum \absseclevel<0 \appendixzzz{#2} \else \appendixsubsubseczzz{#2} \fi \fi } % like \numhead, but chooses numberless heading levels \def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 \ifcase\absseclevel \unnumberedzzz{#2} \or \unnumberedseczzz{#2} \or \unnumberedsubseczzz{#2} \or \unnumberedsubsubseczzz{#2} \else \ifnum \absseclevel<0 \unnumberedzzz{#2} \else \unnumberedsubsubseczzz{#2} \fi \fi } % @chapter, @appendix, @unnumbered. \def\thischaptername{No Chapter Title} \outer\def\chapter{\parsearg\chapteryyy} \def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz #1{% \secno=0 \subsecno=0 \subsubsecno=0 \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% \chapmacro {#1}{\the\chapno}% \gdef\thissection{#1}% \gdef\thischaptername{#1}% % We don't substitute the actual chapter name into \thischapter % because we don't want its macros evaluated now. \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% {\the\chapno}}}% \temp \donoderef \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\def\appendix{\parsearg\appendixyyy} \def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz \def\appendixzzz #1{% \secno=0 \subsecno=0 \subsubsecno=0 \global\advance \appendixno by 1 \message{\putwordAppendix\space \appendixletter}% \chapmacro {#1}{\putwordAppendix{} \appendixletter}% \gdef\thissection{#1}% \gdef\thischaptername{#1}% \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% {\putwordAppendix{} \appendixletter}}}% \temp \appendixnoderef \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\def\centerchap{\parsearg\centerchapyyy} \def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} % @top is like @unnumbered. \outer\def\top{\parsearg\unnumberedyyy} \outer\def\unnumbered{\parsearg\unnumberedyyy} \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz \def\unnumberedzzz #1{% \secno=0 \subsecno=0 \subsubsecno=0 % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}\message{(\the\toks0)}% % \unnumbchapmacro {#1}% \gdef\thischapter{#1}\gdef\thissection{#1}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}% \temp \unnumbnoderef \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % Sections. \outer\def\numberedsec{\parsearg\secyyy} \def\secyyy #1{\numhead1{#1}} % normally calls seczzz \def\seczzz #1{% \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% {\the\chapno}{\the\secno}}}% \temp \donoderef \nobreak } \outer\def\appendixsection{\parsearg\appendixsecyyy} \outer\def\appendixsec{\parsearg\appendixsecyyy} \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz \def\appendixsectionzzz #1{% \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% {\appendixletter}{\the\secno}}}% \temp \appendixnoderef \nobreak } \outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} \def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz \def\unnumberedseczzz #1{% \plainsecheading {#1}\gdef\thissection{#1}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}% \temp \unnumbnoderef \nobreak } % Subsections. \outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} \def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz \def\numberedsubseczzz #1{% \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% {\the\chapno}{\the\secno}{\the\subsecno}}}% \temp \donoderef \nobreak } \outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} \def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz \def\appendixsubseczzz #1{% \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% {\appendixletter}{\the\secno}{\the\subsecno}}}% \temp \appendixnoderef \nobreak } \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz \def\unnumberedsubseczzz #1{% \plainsubsecheading {#1}\gdef\thissection{#1}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% {\the\toks0}}}% \temp \unnumbnoderef \nobreak } % Subsubsections. \outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} \def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz \def\numberedsubsubseczzz #1{% \gdef\thissection{#1}\global\advance \subsubsecno by 1 % \subsubsecheading {#1} {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% \temp \donoderef \nobreak } \outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} \def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz \def\appendixsubsubseczzz #1{% \gdef\thissection{#1}\global\advance \subsubsecno by 1 % \subsubsecheading {#1} {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% \temp \appendixnoderef \nobreak } \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz \def\unnumberedsubsubseczzz #1{% \plainsubsubsecheading {#1}\gdef\thissection{#1}% \toks0 = {#1}% \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% {\the\toks0}}}% \temp \unnumbnoderef \nobreak } % These are variants which are not "outer", so they can appear in @ifinfo. % Actually, they should now be obsolete; ordinary section commands should work. \def\infotop{\parsearg\unnumberedzzz} \def\infounnumbered{\parsearg\unnumberedzzz} \def\infounnumberedsec{\parsearg\unnumberedseczzz} \def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz} \def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz} \def\infoappendix{\parsearg\appendixzzz} \def\infoappendixsec{\parsearg\appendixseczzz} \def\infoappendixsubsec{\parsearg\appendixsubseczzz} \def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz} \def\infochapter{\parsearg\chapterzzz} \def\infosection{\parsearg\sectionzzz} \def\infosubsection{\parsearg\subsectionzzz} \def\infosubsubsection{\parsearg\subsubsectionzzz} % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec % Define @majorheading, @heading and @subheading % NOTE on use of \vbox for chapter headings, section headings, and such: % 1) We use \vbox rather than the earlier \line to permit % overlong headings to fold. % 2) \hyphenpenalty is set to 10000 because hyphenation in a % heading is obnoxious; this forbids it. % 3) Likewise, headings look best if no \parindent is used, and % if justification is not attempted. Hence \raggedright. \def\majorheading{\parsearg\majorheadingzzz} \def\majorheadingzzz #1{% {\advance\chapheadingskip by 10pt \chapbreak }% {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\raggedright \rm #1\hfill}}\bigskip \par\penalty 200} \def\chapheading{\parsearg\chapheadingzzz} \def\chapheadingzzz #1{\chapbreak % {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\raggedright \rm #1\hfill}}\bigskip \par\penalty 200} % @heading, @subheading, @subsubheading. \def\heading{\parsearg\plainsecheading} \def\subheading{\parsearg\plainsubsecheading} \def\subsubheading{\parsearg\plainsubsubsecheading} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. %%% Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} %%% Define plain chapter starts, and page on/off switching for it % Parameter controlling skip before chapter headings (if needed) \newskip\chapheadingskip \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} \def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{ \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon \def\CHAPFplain{ \global\let\chapmacro=\chfplain \global\let\unnumbchapmacro=\unnchfplain \global\let\centerchapmacro=\centerchfplain} % Plain chapter opening. % #1 is the text, #2 the chapter number or empty if unnumbered. \def\chfplain#1#2{% \pchapsepmacro {% \chapfonts \rm \def\chapnum{#2}% \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright \hangindent = \wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % Plain opening for unnumbered. \def\unnchfplain#1{\chfplain{#1}{}} % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerchfplain#1{{% \def\centerparametersmaybe{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt }% \chfplain{#1}{}% }} \CHAPFplain % The default \def\unnchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\raggedright \rm #1\hfill}}\bigskip \par\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% \par\penalty 5000 % } \def\centerchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt \hfill {\rm #1}\hfill}}\bigskip \par\nobreak } \def\CHAPFopen{ \global\let\chapmacro=\chfopen \global\let\unnumbchapmacro=\unnchfopen \global\let\centerchapmacro=\centerchfopen} % Section titles. \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip {-1000}} \def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} \def\plainsecheading#1{\sectionheading{sec}{}{#1}} % Subsection titles. \newskip \subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} \def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} \def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} % Subsubsection titles. \let\subsubsecheadingskip = \subsecheadingskip \let\subsubsecheadingbreak = \subsecheadingbreak \def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} \def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} % Print any size section title. % % #1 is the section type (sec/subsec/subsubsec), #2 is the section % number (maybe empty), #3 the text. \def\sectionheading#1#2#3{% {% \expandafter\advance\csname #1headingskip\endcsname by \parskip \csname #1headingbreak\endcsname }% {% % Switch to the right set of fonts. \csname #1fonts\endcsname \rm % % Only insert the separating space if we have a section number. \def\secnum{#2}% \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% % \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright \hangindent = \wd0 % zero if no section number \unhbox0 #3}% }% \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. We supply {\folio} at the end of the % argument, which will end up as the last argument to the \...entry macro. % % We open the .toc file here instead of at @setfilename or any other % given time so that @contents can be put in the document anywhere. % \newif\iftocfileopened \def\writetocentry#1{% \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi \iflinks \write\tocfile{#1{\folio}}\fi } \newskip\contentsrightmargin \contentsrightmargin=1in \newcount\savepageno \newcount\lastnegativepageno \lastnegativepageno = -1 % Finish up the main text and prepare to read what we've written % to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. Thus, we maintain % \contentsalignmacro in parallel with \pagealignmacro. % From: Torbjorn Granlund \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \unnumbchapmacro{#1}\def\thischapter{}% \savepageno = \pageno \begingroup % Set up to handle contents files properly. \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 % We can't do this, because then an actual ^ in a section % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi \raggedbottom % Worry more about breakpoints than the bottom. \advance\hsize by -\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \pageno = \lastnegativepageno \fi } % Normal (long) toc. \def\contents{% \startcontents{\putwordTOC}% \openin 1 \jobname.toc \ifeof 1 \else \closein 1 \input \jobname.toc \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \pdfmakeoutlines \endgroup \lastnegativepageno = \pageno \pageno = \savepageno } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\chapentry = \shortchapentry \let\unnumbchapentry = \shortunnumberedentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\secentry ##1##2##3##4{} \def\unnumbsecentry ##1##2{} \def\subsecentry ##1##2##3##4##5{} \def\unnumbsubsecentry ##1##2{} \def\subsubsecentry ##1##2##3##4##5##6{} \def\unnumbsubsubsecentry ##1##2{} \openin 1 \jobname.toc \ifeof 1 \else \closein 1 \input \jobname.toc \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \lastnegativepageno = \pageno \pageno = \savepageno } \let\shortcontents = \summarycontents \ifpdf \pdfcatalog{/PageMode /UseOutlines}% \fi % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Chapter-level things, for both the long and short contents. \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} % See comments in \dochapentry re vbox and related settings \def\shortchapentry#1#2#3{% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% } % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter. % We could simplify the code here by writing out an \appendixentry % command in the toc file for appendices, instead of using \chapentry % for both, but it doesn't seem worth it. % \newdimen\shortappendixwidth % \def\shortchaplabel#1{% % Compute width of word "Appendix", may change with language. \setbox0 = \hbox{\shortcontrm \putwordAppendix}% \shortappendixwidth = \wd0 % % We typeset #1 in a box of constant width, regardless of the text of % #1, so the chapter titles will come out aligned. \setbox0 = \hbox{#1}% \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi % % This space should be plenty, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) \advance\dimen0 by 1.1em \hbox to \dimen0{#1\hfil}% } \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} % Sections. \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} \def\unnumbsecentry#1#2{\dosecentry{#1}{#2}} % Subsections. \def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} \def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}} % And subsubsections. \def\subsubsecentry#1#2#3#4#5#6{% \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} % This parameter controls the indentation of the various levels. \newdimen\tocindent \tocindent = 3pc % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % Final typesetting of a toc entry; we use the same \entry macro as for % the index entries, but we want to suppress hyphenation here. (We % can't do that in the \entry macro, since index entries might consist % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) \def\tocentry#1#2{\begingroup \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks % Do not use \turnoffactive in these arguments. Since the toc is % typeset in cmr, so characters such as _ would come out wrong; we % have to do the usual translation tricks. \entry{#1}{#2}% \endgroup} % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\dopageno#1{{\rm #1}} \def\doshortpageno#1{{\rm #1}} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \let\subsecentryfonts = \textfonts \let\subsubsecentryfonts = \textfonts \message{environments,} % @foo ... @end foo. % Since these characters are used in examples, it should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. % Furthermore, these definitions must come after we define our fonts. \newbox\dblarrowbox \newbox\longdblarrowbox \newbox\pushcharbox \newbox\bullbox \newbox\equivbox \newbox\errorbox %{\tentt %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} %\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil} %\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil} % Adapted from the manmac format (p.420 of TeXbook) %\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex % depth .1ex\hfil} %} % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. \def\point{$\star$} \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} % Adapted from the TeXbook's \boxit. {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) \setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} \global\setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. \advance\hsize by -2\dimen2 % Rules. \vbox{ \hrule height\dimen2 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. \kern3pt\vrule width\dimen2}% Space to right. \hrule height\dimen2} \hfil} % The @error{} command. \def\error{\leavevmode\lower.7ex\copy\errorbox} % @tex ... @end tex escapes into raw Tex temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain tex @ character. \def\tex{\begingroup \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie \catcode `\%=14 \catcode 43=12 % plus \catcode`\"=12 \catcode`\==12 \catcode`\|=12 \catcode`\<=12 \catcode`\>=12 \escapechar=`\\ % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \let\*=\ptexstar \let\t=\ptext % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% \let\Etex=\endgroup} % Define @lisp ... @endlisp. % @lisp does a \begingroup so it can rebind things, % including the definition of @endlisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % {\obeyspaces % \gdef\sepspaces{\obeyspaces\let =\tie}} % Define \obeyedspace to be our active space, whatever it is. This is % for use in \parsearg. {\sepspaces% \global\let\obeyedspace= } % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip % \def\aboveenvbreak{{\advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip \penalty-50 \vskip\envskipamount \fi}} \let\afterenvbreak = \aboveenvbreak % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip \long\def\cartouche{% \begingroup \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt %we want these *outside*. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing=\comment \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \hsize=\cartinner \kern3pt \begingroup \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip \def\Ecartouche{% \endgroup \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \endgroup }} % This macro is called at the beginning of all the @example variants, % inside a group. \def\nonfillstart{% \aboveenvbreak \inENV % This group ends at the end of the body \hfuzz = 12pt % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \singlespace \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt \parindent = 0pt \emergencystretch = 0pt % don't try to avoid overfull boxes % @cartouche defines \nonarrowing to inhibit narrowing % at next level down. \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \let\exdent=\nofillexdent \let\nonarrowing=\relax \fi } % Define the \E... control sequence only if we are inside the particular % environment, so the error checking in \end will work. % % To end an @example-like environment, we first end the paragraph (via % \afterenvbreak's vertical glue), and then the group. That way we keep % the zero \parskip that the environments set -- \parskip glue will be % inserted at the beginning of the next paragraph in the document, after % the environment. % \def\nonfillfinish{\afterenvbreak\endgroup} % @lisp: indented, narrowed, typewriter font. \def\lisp{\begingroup \nonfillstart \let\Elisp = \nonfillfinish \tt \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } % @example: Same as @lisp. \def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} % @small... is usually equivalent to the non-small (@smallbook % redefines). We must call \example (or whatever) last in the % definition, since it reads the return following the @example (or % whatever) command. % % This actually allows (for example) @end display inside an % @smalldisplay. Too bad, but makeinfo will catch the error anyway. % \def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display} \def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp} \def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format} \def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp} % Real @smallexample and @smalllisp (when @smallbook): use smaller fonts. % Originally contributed by Pavel@xerox. \def\smalllispx{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}% \def\Esmallexample{\nonfillfinish\endgroup}% \smallfonts \lisp } % @display: same as @lisp except keep current font. % \def\display{\begingroup \nonfillstart \let\Edisplay = \nonfillfinish \gobble } % @smalldisplay (when @smallbook): @display plus smaller fonts. % \def\smalldisplayx{\begingroup \def\Esmalldisplay{\nonfillfinish\endgroup}% \smallfonts \rm \display } % @format: same as @display except don't narrow margins. % \def\format{\begingroup \let\nonarrowing = t \nonfillstart \let\Eformat = \nonfillfinish \gobble } % @smallformat (when @smallbook): @format plus smaller fonts. % \def\smallformatx{\begingroup \def\Esmallformat{\nonfillfinish\endgroup}% \smallfonts \rm \format } % @flushleft (same as @format). % \def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format} % @flushright. % \def\flushright{\begingroup \let\nonarrowing = t \nonfillstart \let\Eflushright = \nonfillfinish \advance\leftskip by 0pt plus 1fill \gobble } % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. % \def\quotation{% \begingroup\inENV %This group ends at the end of the @quotation body {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \singlespace \parindent=0pt % We have retained a nonzero parskip for the environment, since we're % doing normal filling. So to avoid extra space below the environment... \def\Equotation{\parskip = 0pt \nonfillfinish}% % % @cartouche defines \nonarrowing to inhibit narrowing at next level down. \ifx\nonarrowing\relax \advance\leftskip by \lispnarrowing \advance\rightskip by \lispnarrowing \exdentamount = \lispnarrowing \let\nonarrowing = \relax \fi } \message{defuns,} % @defun etc. % Allow user to change definition object font (\df) internally \def\setdeffont #1 {\csname DEF#1\endcsname} \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deftypemargin \deftypemargin=12pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\parencount % define \functionparens, which makes ( and ) and & do special things. % \functionparens affects the group it is contained in. \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\&=\active \catcode`\[=\active \catcode`\]=\active} % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) {\activeparens % Now, smart parens don't turn on until &foo (see \amprm) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. \global\let(=\lparen \global\let)=\rparen \global\let[=\lbrack \global\let]=\rbrack \gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} % This is used to turn on special parens % but make & act ordinary (given that it's active). \gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} % Definitions of (, ) and & used in args for functions. % This is the definition of ( outside of all parentheses. \gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested \global\advance\parencount by 1 } % % This is the definition of ( when already inside a level of parens. \gdef\opnested{\char`\(\global\advance\parencount by 1 } % \gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. % also in that case restore the outer-level definition of (. \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi \global\advance \parencount by -1 } % If we encounter &foo, then turn on ()-hacking afterwards \gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } % \gdef\normalparens{\boldbrax\let&=\ampnr} } % End of definition inside \activeparens %% These parens (in \boldbrax) actually are a little bolder than the %% contained text. This is especially needed for [ and ] \def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } \def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } \let\ampnr = \& \def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}} % Active &'s sneak into the index arguments, so make sure it's defined. { \catcode`& = 13 \global\let& = \ampnr } % First, defname, which formats the header line itself. % #1 should be the function name. % #2 should be the type of definition, such as "Function". \def\defname #1#2{% % Get the values of \leftskip and \rightskip as they were % outside the @def... \dimen2=\leftskip \advance\dimen2 by -\defbodyindent \noindent \setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line \dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations \parshape 2 0in \dimen0 \defargsindent \dimen1 % Now output arg 2 ("Function" or some such) % ending at \deftypemargin from the right margin, % but stuck inside a box of width 0 so it does not interfere with linebreaking {% Adjust \hsize to exclude the ambient margins, % so that \rightline will obey them. \advance \hsize by -\dimen2 \rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% % Make all lines underfull and no complaints: \tolerance=10000 \hbadness=10000 \advance\leftskip by -\defbodyindent \exdentamount=\defbodyindent {\df #1}\enskip % Generate function name } % Actually process the body of a definition % #1 should be the terminating control sequence, such as \Edefun. % #2 should be the "another name" control sequence, such as \defunx. % #3 should be the control sequence that actually processes the header, % such as \defunheader. \def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody \medbreak % % Define the end token that this defining construct specifies % so that it will exit this group. \def#1{\endgraf\endgroup\medbreak}% \def#2{\begingroup\obeylines\activeparens\spacesplit#3}% \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup % \catcode 61=\active % 61 is `=' \obeylines\activeparens\spacesplit#3} % #1 is the \E... control sequence to end the definition (which we define). % #2 is the \...x control sequence for consecutive fns (which we define). % #3 is the control sequence to call to resume processing. % #4, delimited by the space, is the class name. % \def\defmethparsebody#1#2#3#4 {\begingroup\inENV % \medbreak % % Define the end token that this defining construct specifies % so that it will exit this group. \def#1{\endgraf\endgroup\medbreak}% \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\activeparens\spacesplit{#3{#4}}} % Used for @deftypemethod and @deftypeivar. % #1 is the \E... control sequence to end the definition (which we define). % #2 is the \...x control sequence for consecutive fns (which we define). % #3 is the control sequence to call to resume processing. % #4, delimited by a space, is the class name. % #5 is the method's return type. % \def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV \medbreak \def#1{\endgraf\endgroup\medbreak}% \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}} % Used for @deftypeop. The change from \deftypemethparsebody is an % extra argument at the beginning which is the `category', instead of it % being the hardwired string `Method' or `Instance Variable'. We have % to account for this both in the \...x definition and in parsing the % input at hand. Thus also need a control sequence (passed as #5) for % the \E... definition to assign the category name to. % \def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV \medbreak \def#1{\endgraf\endgroup\medbreak}% \def#2##1 ##2 ##3 {% \def#4{##1}% \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}} \def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % \medbreak % % Define the end token that this defining construct specifies % so that it will exit this group. \def#1{\endgraf\endgroup\medbreak}% \def#2##1 ##2 {\def#4{##1}% \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\activeparens\spacesplit{#3{#5}}} % These parsing functions are similar to the preceding ones % except that they do not make parens into active characters. % These are used for "variables" since they have no arguments. \def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody \medbreak % % Define the end token that this defining construct specifies % so that it will exit this group. \def#1{\endgraf\endgroup\medbreak}% \def#2{\begingroup\obeylines\spacesplit#3}% \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup % \catcode 61=\active % \obeylines\spacesplit#3} % This is used for \def{tp,vr}parsebody. It could probably be used for % some of the others, too, with some judicious conditionals. % \def\parsebodycommon#1#2#3{% \begingroup\inENV % \medbreak % % Define the end token that this defining construct specifies % so that it will exit this group. \def#1{\endgraf\endgroup\medbreak}% \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines } \def\defvrparsebody#1#2#3#4 {% \parsebodycommon{#1}{#2}{#3}% \spacesplit{#3{#4}}% } % This loses on `@deftp {Data Type} {struct termios}' -- it thinks the % type is just `struct', because we lose the braces in `{struct % termios}' when \spacesplit reads its undelimited argument. Sigh. % \let\deftpparsebody=\defvrparsebody % % So, to get around this, we put \empty in with the type name. That % way, TeX won't find exactly `{...}' as an undelimited argument, and % won't strip off the braces. % \def\deftpparsebody #1#2#3#4 {% \parsebodycommon{#1}{#2}{#3}% \spacesplit{\parsetpheaderline{#3{#4}}}\empty } % Fine, but then we have to eventually remove the \empty *and* the % braces (if any). That's what this does. % \def\removeemptybraces\empty#1\relax{#1} % After \spacesplit has done its work, this is called -- #1 is the final % thing to call, #2 the type name (which starts with \empty), and #3 % (which might be empty) the arguments. % \def\parsetpheaderline#1#2#3{% #1{\removeemptybraces#2\relax}{#3}% }% \def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % \medbreak % % Define the end token that this defining construct specifies % so that it will exit this group. \def#1{\endgraf\endgroup\medbreak}% \def#2##1 ##2 {\def#4{##1}% \begingroup\obeylines\spacesplit{#3{##2}}}% \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent \begingroup\obeylines\spacesplit{#3{#5}}} % Split up #2 at the first space token. % call #1 with two arguments: % the first is all of #2 before the space token, % the second is all of #2 after that space token. % If #2 contains no space token, all of it is passed as the first arg % and the second is passed as empty. {\obeylines \gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% \long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% \ifx\relax #3% #1{#2}{}\else #1{#2}{#3#4}\fi}} % So much for the things common to all kinds of definitions. % Define @defun. % First, define the processing that is wanted for arguments of \defun % Use this to expand the args and terminate the paragraph they make up \def\defunargs#1{\functionparens \sl % Expand, preventing hyphenation at `-' chars. % Note that groups don't affect changes in \hyphenchar. % Set the font temporarily and use \font in case \setfont made \tensl a macro. {\tensl\hyphenchar\font=0}% #1% {\tensl\hyphenchar\font=45}% \ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% \interlinepenalty=10000 \advance\rightskip by 0pt plus 1fil \endgraf\nobreak\vskip -\parskip\nobreak } \def\deftypefunargs #1{% % Expand, preventing hyphenation at `-' chars. % Note that groups don't affect changes in \hyphenchar. % Use \boldbraxnoamp, not \functionparens, so that & is not special. \boldbraxnoamp \tclose{#1}% avoid \code because of side effects on active chars \interlinepenalty=10000 \advance\rightskip by 0pt plus 1fil \endgraf\nobreak\vskip -\parskip\nobreak } % Do complete processing of one @defun or @defunx line already parsed. % @deffn Command forward-char nchars \def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader} \def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% \begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } % @defun == @deffn Function \def\defun{\defparsebody\Edefun\defunx\defunheader} \def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index \begingroup\defname {#1}{\putwordDeffunc}% \defunargs {#2}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } % @deftypefun int foobar (int @var{foo}, float @var{bar}) \def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} % #1 is the data type. #2 is the name and args. \def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} % #1 is the data type, #2 the name, #3 the args. \def\deftypefunheaderx #1#2 #3\relax{% \doind {fn}{\code{#2}}% Make entry in function index \begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}% \deftypefunargs {#3}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } % @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} % \defheaderxcond#1\relax$$$ % puts #1 in @code, followed by a space, but does nothing if #1 is null. \def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi} % #1 is the classification. #2 is the data type. #3 is the name and args. \def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} % #1 is the classification, #2 the data type, #3 the name, #4 the args. \def\deftypefnheaderx #1#2#3 #4\relax{% \doind {fn}{\code{#3}}% Make entry in function index \begingroup \normalparens % notably, turn off `&' magic, which prevents % at least some C++ text from working \defname {\defheaderxcond#2\relax$$$#3}{#1}% \deftypefunargs {#4}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } % @defmac == @deffn Macro \def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} \def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index \begingroup\defname {#1}{\putwordDefmac}% \defunargs {#2}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } % @defspec == @deffn Special Form \def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} \def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index \begingroup\defname {#1}{\putwordDefspec}% \defunargs {#2}\endgroup % \catcode 61=\other % Turn off change made in \defparsebody } % @defop CATEGORY CLASS OPERATION ARG... % \def\defop #1 {\def\defoptype{#1}% \defopparsebody\Edefop\defopx\defopheader\defoptype} % \def\defopheader#1#2#3{% \dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index \begingroup\defname {#2}{\defoptype\ \putwordon\ #1}% \defunargs {#3}\endgroup % } % @deftypeop CATEGORY CLASS TYPE OPERATION ARG... % \def\deftypeop #1 {\def\deftypeopcategory{#1}% \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader \deftypeopcategory} % % #1 is the class name, #2 the data type, #3 the operation name, #4 the args. \def\deftypeopheader#1#2#3#4{% \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index \begingroup \defname{\defheaderxcond#2\relax$$$#3} {\deftypeopcategory\ \putwordon\ \code{#1}}% \deftypefunargs{#4}% \endgroup } % @deftypemethod CLASS TYPE METHOD ARG... % \def\deftypemethod{% \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} % % #1 is the class name, #2 the data type, #3 the method name, #4 the args. \def\deftypemethodheader#1#2#3#4{% \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index \begingroup \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% \deftypefunargs{#4}% \endgroup } % @deftypeivar CLASS TYPE VARNAME % \def\deftypeivar{% \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} % % #1 is the class name, #2 the data type, #3 the variable name. \def\deftypeivarheader#1#2#3{% \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index \begingroup \defname{#3}{\putwordInstanceVariableof\ \code{#1}}% \defvarargs{#3}% \endgroup } % @defmethod == @defop Method % \def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} % % #1 is the class name, #2 the method name, #3 the args. \def\defmethodheader#1#2#3{% \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index \begingroup \defname{#2}{\putwordMethodon\ \code{#1}}% \defunargs{#3}% \endgroup } % @defcv {Class Option} foo-class foo-flag \def\defcv #1 {\def\defcvtype{#1}% \defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} \def\defcvarheader #1#2#3{% \dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index \begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}% \defvarargs {#3}\endgroup % } % @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME % \def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} % \def\defivarheader#1#2#3{% \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index \begingroup \defname{#2}{\putwordInstanceVariableof\ #1}% \defvarargs{#3}% \endgroup } % @defvar % First, define the processing that is wanted for arguments of @defvar. % This is actually simple: just print them in roman. % This must expand the args and terminate the paragraph they make up \def\defvarargs #1{\normalparens #1% \interlinepenalty=10000 \endgraf\nobreak\vskip -\parskip\nobreak} % @defvr Counter foo-count \def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader} \def\defvrheader #1#2#3{\doind {vr}{\code{#2}}% \begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup} % @defvar == @defvr Variable \def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} \def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index \begingroup\defname {#1}{\putwordDefvar}% \defvarargs {#2}\endgroup % } % @defopt == @defvr {User Option} \def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} \def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index \begingroup\defname {#1}{\putwordDefopt}% \defvarargs {#2}\endgroup % } % @deftypevar int foobar \def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} % #1 is the data type. #2 is the name, perhaps followed by text that % is actually part of the data type, which should not be put into the index. \def\deftypevarheader #1#2{% \dovarind#2 \relax% Make entry in variables index \begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}% \interlinepenalty=10000 \endgraf\nobreak\vskip -\parskip\nobreak \endgroup} \def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} % @deftypevr {Global Flag} int enable \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} \def\deftypevrheader #1#2#3{\dovarind#3 \relax% \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} \interlinepenalty=10000 \endgraf\nobreak\vskip -\parskip\nobreak \endgroup} % Now define @deftp % Args are printed in bold, a slight difference from @defvar. \def\deftpargs #1{\bf \defvarargs{#1}} % @deftp Class window height width ... \def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader} \def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% \begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} % These definitions are used if you use @defunx (etc.) % anywhere other than immediately after a @defun or @defunx. % \def\defcvx#1 {\errmessage{@defcvx in invalid context}} \def\deffnx#1 {\errmessage{@deffnx in invalid context}} \def\defivarx#1 {\errmessage{@defivarx in invalid context}} \def\defmacx#1 {\errmessage{@defmacx in invalid context}} \def\defmethodx#1 {\errmessage{@defmethodx in invalid context}} \def\defoptx #1 {\errmessage{@defoptx in invalid context}} \def\defopx#1 {\errmessage{@defopx in invalid context}} \def\defspecx#1 {\errmessage{@defspecx in invalid context}} \def\deftpx#1 {\errmessage{@deftpx in invalid context}} \def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}} \def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}} \def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}} \def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}} \def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}} \def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}} \def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}} \def\defunx#1 {\errmessage{@defunx in invalid context}} \def\defvarx#1 {\errmessage{@defvarx in invalid context}} \def\defvrx#1 {\errmessage{@defvrx in invalid context}} \message{macros,} % @macro. % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. \ifx\eTeXversion\undefined \newwrite\macscribble \def\scanmacro#1{% \begingroup \newlinechar`\^^M % Undo catcode changes of \startcontents and \doprintindex \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ % Append \endinput to make sure that TeX does not see the ending newline. \toks0={#1\endinput}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \let\xeatspaces\eatspaces \input \jobname.tmp \endgroup } \else \def\scanmacro#1{% \begingroup \newlinechar`\^^M % Undo catcode changes of \startcontents and \doprintindex \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ \let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} \fi \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? \def\macrolist{} % List of all defined macros in the form % \do\macro1\do\macro2... % Utility routines. % Thisdoes \let #1 = #2, except with \csnames. \def\cslet#1#2{% \expandafter\expandafter \expandafter\let \expandafter\expandafter \csname#1\endcsname \csname#2\endcsname} % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } % Trim a single trailing ^^M off a string. {\catcode`\^^M=12\catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active % (as in normal texinfo). It is necessary to change the definition of \. % It's necessary to have hard CRs when the macro is executed. This is % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. \def\macrobodyctxt{% \catcode`\~=12 \catcode`\^=12 \catcode`\_=12 \catcode`\|=12 \catcode`\<=12 \catcode`\>=12 \catcode`\+=12 \catcode`\{=12 \catcode`\}=12 \catcode`\@=12 \catcode`\^^M=12 \usembodybackslash} \def\macroargctxt{% \catcode`\~=12 \catcode`\^=12 \catcode`\_=12 \catcode`\|=12 \catcode`\<=12 \catcode`\>=12 \catcode`\+=12 \catcode`\@=12 \catcode`\\=12} % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0% \else \expandafter\parsemargdef \argl;% \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \else \errmessage{The name \the\macname\space is reserved}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% % Add the macroname to \macrolist \toks0 = \expandafter{\macrolist\do}% \xdef\macrolist{\the\toks0 \expandafter\noexpand\csname\the\macname\endcsname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \def\unmacro{\parsearg\unmacroxxx} \def\unmacroxxx#1{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist \begingroup \edef\tempa{\expandafter\noexpand\csname#1\endcsname}% \def\do##1{% \def\tempb{##1}% \ifx\tempa\tempb % remove this \else \toks0 = \expandafter{\newmacrolist\do}% \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}% \fi}% \def\newmacrolist{}% % Execute macro list to define \newmacrolist \macrolist \global\let\macrolist\newmacrolist \endgroup \else \errmessage{Macro #1 not defined}% \fi } % This makes use of the obscure feature that if the last token of a % is #, then the preceding argument is delimited by % an opening brace, and that opening brace is not consumed. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname #1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} % Parse the optional {params} list. Set up \paramno and \paramlist % so \defmacro knows what to do. Define \macarg.blah for each blah % in the params list, to be ##N where N is the position in that list. % That gets used by \mbodybackslash (above). % We need to get `macro parameter char #' into several definitions. % The technique used is stolen from LaTeX: let \hash be something % unexpandable, insert that wherever you need a #, and then redefine % it to # just before using the token list produced. % % The same technique is used to protect \eatspaces till just before % the macro is used. \def\parsemargdef#1;{\paramno=0\def\paramlist{}% \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1% \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% % This defines the macro itself. There are six cases: recursive and % nonrecursive macros of zero, one, and many arguments. % Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file % they're defined in; @include reads the file inside a group. \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifrecursive \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\temp}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup\noexpand\scanmacro{\temp}}% \else % many \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{\egroup\noexpand\scanmacro{\temp}}% \fi \else \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % many \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \expandafter\noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \fi \fi} \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} % \braceorline decides whether the next nonwhitespace character is a % {. If so it reads up to the closing }, if not, it reads the whole % line. Whatever was read is then fed to the next control sequence % as an argument (by \parsebrace or \parsearg) \def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else \expandafter\parsearg \fi \next} % We mant to disable all macros during \shipout so that they are not % expanded by \write. \def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% \edef\next{\macrolist}\expandafter\endgroup\next} % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Just make them active and then expand them all to nothing. \def\alias{\begingroup\obeyspaces\parsearg\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{\ignoreactivespaces \edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=% \expandafter\noexpand\csname#2\endcsname}% \expandafter\endgroup\next} \message{cross references,} % @xref etc. \newwrite\auxfile \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's job is to define \lastnode. \def\node{\ENVcheck\parsearg\nodezzz} \def\nodezzz#1{\nodexxx [#1,]} \def\nodexxx[#1,#2]{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\relax % The sectioning commands (@chapter, etc.) call these. \def\donoderef{% \ifx\lastnode\relax\else \expandafter\expandafter\expandafter\setref{\lastnode}% {Ysectionnumberandtype}% \global\let\lastnode=\relax \fi } \def\unnumbnoderef{% \ifx\lastnode\relax\else \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}% \global\let\lastnode=\relax \fi } \def\appendixnoderef{% \ifx\lastnode\relax\else \expandafter\expandafter\expandafter\setref{\lastnode}% {Yappendixletterandtype}% \global\let\lastnode=\relax \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister \gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \setref{NAME}{SNT} defines a cross-reference point NAME, namely % NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have % to set \indexdummies so commands such as @code in a section title % aren't expanded. It would be nicer not to expand the titles in the % first place, but there's so many layers that that is hard to do. % \def\setref#1#2{{% \indexdummies \pdfmkdest{#1}% \dosetq{#1-title}{Ytitle}% \dosetq{#1-pg}{Ypagenumber}% \dosetq{#1-snt}{#2}% }} % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces \def\printedmanual{\ignorespaces #5}% \def\printednodename{\ignorespaces #3}% \setbox1=\hbox{\printedmanual}% \setbox0=\hbox{\printednodename}% \ifdim \wd0 = 0pt % No printed node name was explicitly given. \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax % Use the node name inside the square brackets. \def\printednodename{\ignorespaces #1}% \else % Use the actual chapter/section title appear inside % the square brackets. Use the real section title if we have it. \ifdim \wd1 > 0pt % It is in another manual, so we don't have it. \def\printednodename{\ignorespaces #1}% \else \ifhavexrefs % We know the real title if we have the xref values. \def\printednodename{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printednodename{\ignorespaces #1}% \fi% \fi \fi \fi % % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not % insert empty discretionaries after hyphens, which means that it will % not find a line break at a hyphen in a node names. Since some manuals % are best written with fairly long node names, containing hyphens, this % is a loss. Therefore, we give the text of the node name again, so it % is as if TeX is seeing it for the first time. \ifpdf \leavevmode \getfilename{#4}% \ifnum\filenamelength>0 \startlink attr{/Border [0 0 0]}% goto file{\the\filename.pdf} name{#1@}% \else \startlink attr{/Border [0 0 0]}% goto name{#1@}% \fi \linkcolor \fi % \ifdim \wd1 > 0pt \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}% \else % _ (for example) has to be the character _ for the purposes of the % control sequence corresponding to the node, but it has to expand % into the usual \leavevmode...\vrule stuff for purposes of % printing. So we \turnoffactive for the \refx-snt, back on for the % printing, back off for the \refx-pg. {\normalturnoffactive % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% % [mynode], [\printednodename],\space % page 3 \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi \endlink \endgroup} % \dosetq is the interface for calls from other macros % Use \normalturnoffactive so that punctuation chars such as underscore % and backslash work in node names. (\turnoffactive doesn't do \.) \def\dosetq#1#2{% {\let\folio=0% \normalturnoffactive \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% \iflinks \next \fi }% } % \internalsetq {foo}{page} expands into % CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} % When the aux file is read, ' is the escape character \def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}} % Things to be expanded by \internalsetq \def\Ypagenumber{\folio} \def\Ytitle{\thissection} \def\Ynothing{} \def\Ysectionnumberandtype{% \ifnum\secno=0 \putwordChapter\xreftie\the\chapno % \else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno % \else \ifnum \subsubsecno=0 % \putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno % \else % \putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno % \fi \fi \fi } \def\Yappendixletterandtype{% \ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}% \else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno % \else \ifnum \subsubsecno=0 % \putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno % \else % \putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % \fi \fi \fi } \gdef\xreftie{'tie} % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Non-3.0. \else \def\linenumber{\the\inputlineno:\space} \fi % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. \def\refx#1#2{% \expandafter\ifx\csname X#1\endcsname\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs \message{\linenumber Undefined cross reference `#1'.}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \csname X#1\endcsname \fi #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. % \def\xrdef#1{\begingroup % Reenable \ as an escape while reading the second argument. \catcode`\\ = 0 \afterassignment\endgroup \expandafter\gdef\csname X#1\endcsname } % Read the last existing aux file, if any. No error if none exists. \def\readauxfile{\begingroup \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other \catcode`\@=\other \catcode`\^=\other % It was suggested to define this as 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, % that is not enough: for node names that actually contain a ^ % character, we would end up writing a line like this: 'xrdef {'hat % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first % argument, and \hat is not an expandable control sequence. It could % all be worked out, but why? Either we support ^^ or we don't. % % The other change necessary for this was to define \auxhat: % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter % and then to call \auxhat in \setq. % \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % Make the characters 128-255 be printing characters {% \count 1=128 \def\loop{% \catcode\count 1=\other \advance\count 1 by 1 \ifnum \count 1<256 \loop \fi }% }% % The aux file uses ' as the escape (for now). % Turn off \ as an escape so we do not lose on % entries which were dumped with control sequences in their names. % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ % Reference to such entries still does not work the way one would wish, % but at least they do not bomb out when the aux file is read in. \catcode`\{=1 \catcode`\}=2 \catcode`\%=\other \catcode`\'=0 \catcode`\\=\other % \openin 1 \jobname.aux \ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue \global\warnedobstrue \fi % Open the new aux file. TeX will close it automatically at exit. \openout\auxfile=\jobname.aux \endgroup} % Footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for info output only. \let\footnotestyle=\comment \let\ptexfootnote=\footnote {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \footnotezzz }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset and anything else that uses % \parseargline fail inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \long\gdef\footnotezzz{\insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Hang the footnote text off the number. \hang \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut \futurelet\next\fo@t } \def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t \else\let\next\f@t\fi \next} \def\f@@t{\bgroup\aftergroup\@foot\let\next} \def\f@t#1{#1\@foot} \def\@foot{\strut\par\egroup} }%end \catcode `\@=11 % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % \def\setleading#1{% \normalbaselineskip = #1\relax \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % @| inserts a changebar to the left of the current line. It should % surround any changed text. This approach does *not* work if the % change spans more than two lines of output. To handle that, we would % have adopt a much more difficult approach (putting marks into the main % vertical list for the beginning and end of each change). % \def\|{% % \vadjust can only be used in horizontal mode. \leavevmode % % Append this vertical mode material after the current line in the output. \vadjust{% % We want to insert a rule with the height and depth of the current % leading; that is exactly what \strutbox is supposed to record. \vskip-\baselineskip % % \vadjust-items are inserted at the left edge of the type. So % the \llap here moves out into the left-hand margin. \llap{% % % For a thicker or thinner bar, change the `1pt'. \vrule height\baselineskip width1pt % % This is the space between the bar and the text. \hskip 12pt }% }% } % For a final copy, take out the rectangles % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % \def\finalout{\overfullrule=0pt} % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else \closein 1 % Do not bother showing banner with post-v2.7 epsf.tex (available in % doc/epsf.tex until it shows up on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% \ifx\epsfbox\undefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,\finish \fi } % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #2 is (optional) width, #3 is (optional) height. % #4 is just the usual extra ignored arg for parsing this stuff. \def\imagexxx#1,#2,#3,#4\finish{% \ifpdf \centerline{\dopdfimage{#1}{#2}{#3}}% \else % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \begingroup \catcode`\^^M = 5 % in case we're inside an example % If the image is by itself, center it. \ifvmode \nobreak\bigskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \nobreak\vskip\parskip \nobreak \centerline{\epsfbox{#1.eps}}% \bigbreak \else % In the middle of a paragraph, no extra space. \epsfbox{#1.eps}% \fi \endgroup \fi } \message{localization,} % and i18n. % @documentlanguage is usually given very early, just after % @setfilename. If done too late, it may not override everything % properly. Single argument is the language abbreviation. % It would be nice if we could set up a hyphenation file here. % \def\documentlanguage{\parsearg\dodocumentlanguage} \def\dodocumentlanguage#1{% \tex % read txi-??.tex file in plain TeX. % Read the file if it exists. \openin 1 txi-#1.tex \ifeof1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \let\temp = \relax \else \def\temp{\input txi-#1.tex }% \fi \temp \endgroup } \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? In the current directory should work if nowhere else does.} % @documentencoding should change something in TeX eventually, most % likely, but for now just recognize it. \let\documentencoding = \comment % Page size parameters. % \newdimen\defaultparindent \defaultparindent = 15pt \chapheadingskip = 15pt plus 4pt minus 2pt \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be so finicky about underfull hboxes, either. \hbadness = 2000 % Following George Bush, just get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \fi } % Parameters in order: 1) textheight; 2) textwidth; 3) voffset; % 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can % set \parskip and call \setleading for \baselineskip. % \def\internalpagesizes#1#2#3#4#5#6{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \outervsize = \vsize \advance\outervsize by 2\topandbottommargin \pageheight = \vsize % \hsize = #2\relax \outerhsize = \hsize \advance\outerhsize by 0.5in \pagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \setleading{13.2pt}% % % If page is nothing but text, make it come out even. \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% }} % Use @smallbook to reset parameters for 7x9.5 (or so) format. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \setleading{12pt}% % \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% % \lispnarrowing = 0.3in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \deftypemargin = 0pt \defbodyindent = .5cm % \let\smalldisplay = \smalldisplayx \let\smallexample = \smalllispx \let\smallformat = \smallformatx \let\smalllisp = \smalllispx }} % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \setleading{12pt}% \parskip = 3pt plus 2pt minus 1pt % \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% % \tolerance = 700 \hfuzz = 1pt }} % A specific text layout, 24x15cm overall, intended for A4 paper. Top margin % 29mm, hence bottom margin 28mm, nominal side margin 3cm. \def\afourlatex{{\globaldefs = 1 \setleading{13.6pt}% % \afourpaper \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% % \globaldefs = 0 }} % Use @afourwide to print on European A4 paper in wide format. \def\afourwide{% \afourpaper \internalpagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% % \globaldefs = 0 } % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \def\pagesizes{\parsearg\pagesizesxxx} \def\pagesizesxxx#1{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{13.2pt}% % \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% }} % Set default to letter. % \letterpaper \message{and turning on texinfo input format.} % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \catcode`\~=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\+=\other \catcode`\$=\other \def\normaldoublequote{"} \def\normaltilde{~} \def\normalcaret{^} \def\normalunderscore{_} \def\normalverticalbar{|} \def\normalless{<} \def\normalgreater{>} \def\normalplus{+} \def\normaldollar{$} % This macro is used to make a character print one way in ttfont % where it can probably just be output, and another way in other fonts, % where something hairier probably needs to be done. % % #1 is what to print if we are indeed using \tt; #2 is what to print % otherwise. Since all the Computer Modern typewriter fonts have zero % interword stretch (and shrink), and it is reasonable to expect all % typewriter fonts to have this, we can check that font parameter. % \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Turn off all special characters except @ % (and those which the user can use as if they were ordinary). % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active \def^{{\tt \hat}} \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} % Subroutine for the previous macro. \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} \chardef \gtr=`\> \catcode`\>=\active \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar} %\catcode 27=\active %\def^^[{$\diamondsuit$} % Set up an active definition for =, but don't enable it most of the time. {\catcode`\==\active \global\def={{\tt \char 61}}} \catcode`+=\active \catcode`\_=\active % If a .fmt file is being used, characters that might appear in a file % name cannot be active until we have parsed the command line. % So turn them off again, and have \everyjob (or @setfilename) turn them on. % \otherifyactive is called near the end of this file. \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} \catcode`\@=0 % \rawbackslashxx output one backslash character in current font \global\chardef\rawbackslashxx=`\\ %{\catcode`\\=\other %@gdef@rawbackslashxx{\}} % \rawbackslash redefines \ as input to do \rawbackslashxx. {\catcode`\\=\active @gdef@rawbackslash{@let\=@rawbackslashxx }} % \normalbackslash outputs one backslash in fixed width font. \def\normalbackslash{{\tt\rawbackslashxx}} % \catcode 17=0 % Define control-q \catcode`\\=\active % Used sometimes to turn off (effectively) the active characters % even after parsing them. @def@turnoffactive{@let"=@normaldoublequote @let\=@realbackslash @let~=@normaltilde @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let<=@normalless @let>=@normalgreater @let+=@normalplus @let$=@normaldollar} @def@normalturnoffactive{@let"=@normaldoublequote @let\=@normalbackslash @let~=@normaltilde @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let<=@normalless @let>=@normalgreater @let+=@normalplus @let$=@normaldollar} % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @otherifyactive % If a .fmt file is being used, we don't want the `\input texinfo' to show up. % That is what \eatinput is for; after that, the `\' should revert to printing % a backslash. % @gdef@eatinput input texinfo{@fixbackslash} @global@let\ = @eatinput % On the other hand, perhaps the file did not have a `\input texinfo'. Then % the first `\{ in the file would cause an error. This macro tries to fix % that, assuming it is called before the first `\' could plausibly occur. % Also back turn on active characters that might appear in the input % file name, in case not using a pre-dumped format. % @gdef@fixbackslash{% @ifx\@eatinput @let\ = @normalbackslash @fi @catcode`+=@active @catcode`@_=@active } % Say @foo, not \foo, in error messages. @escapechar = `@@ % These look ok in all fonts, so just make them not special. @catcode`@& = @other @catcode`@# = @other @catcode`@% = @other @c Set initial fonts. @textfonts @rm @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @c End: recode-3.6/doc/version.texi0100644000000000000000000000007707224443040014452 0ustar rootroot@set UPDATED 6 December 2000 @set EDITION 3.6 @set VERSION 3.6 recode-3.6/doc/recode.texi0100644000000000000000000063724307213514665014253 0ustar rootroot\input texinfo @c -*-texinfo-*- -*- coding: latin-1 -*- @c %**start of header @setfilename recode.info @settitle The @code{recode} reference manual @c An index for command-line options @defcodeindex op @c Put variable and function names together @syncodeindex vr fn @finalout @c %**end of header @include version.texi @dircategory Internationalization and character sets @direntry * recode: (recode). Conversion between character sets and surfaces. @end direntry @ifinfo This file documents the @code{recode} command, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. @ignore Permission is granted to process this file through TeX and print the results, provided the printed document carries copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). @end ignore Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation. @end ifinfo @titlepage @title Free recode, version @value{VERSION} @subtitle The character set converter @subtitle Edition @value{EDITION}, @value{UPDATED} @author Fran@,{c}ois Pinard @page @vskip 0pt plus 1filll Copyright @copyright{} 1993, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation. @end titlepage @ifnottex @node Top, Tutorial, (dir), (dir) @top @code{recode} @c @item @b{@code{recode}} @value{hfillkludge} (UtilT, SrcCD) @c This recoding library converts files between various coded character sets and surface encodings. When this cannot be achieved exactly, it may get rid of the offending characters or fall back on approximations. The library recognises or produces more than 300 different character sets and is able to convert files between almost any pair. Most @w{RFC 1345} character sets, and all @code{libiconv} character sets, are supported. The @code{recode} program is a handy front-end to the library. The current @code{recode} release is @value{VERSION}. @menu * Tutorial:: Quick Tutorial * Introduction:: Terminology and purpose * Invoking recode:: How to use this program * Library:: A recoding library * Universal:: The universal charset * libiconv:: The @code{iconv} library * Tabular:: Tabular sources (@w{RFC 1345}) * ASCII misc:: ASCII and some derivatives * IBM and MS:: Some IBM or Microsoft charsets * CDC:: Charsets for CDC machines * Micros:: Other micro-computer charsets * Miscellaneous:: Various other charsets * Surfaces:: All about surfaces * Internals:: Internal aspects * Concept Index:: Concept Index * Option Index:: Option Index * Library Index:: Library Index * Charset and Surface Index:: Charset and Surface Index @detailmenu --- The Detailed Node Listing --- Terminology and purpose * Charset overview:: Overview of charsets * Surface overview:: Overview of surfaces * Contributing:: Contributions and bug reports How to use this program * Synopsis:: Synopsis of @code{recode} call * Requests:: The @var{request} parameter * Listings:: Asking for various lists * Recoding:: Controlling how files are recoded * Reversibility:: Reversibility issues * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using @code{recode} within Emacs * Debugging:: Debugging considerations A recoding library * Outer level:: Outer level functions * Request level:: Request level functions * Task level:: Task level functions * Charset level:: Charset level functions * Errors:: Handling errors The universal charset * UCS-2:: Universal Character Set, 2 bytes * UCS-4:: Universal Character Set, 4 bytes * UTF-7:: Universal Transformation Format, 7 bits * UTF-8:: Universal Transformation Format, 8 bits * UTF-16:: Universal Transformation Format, 16 bits * count-characters:: Frequency count of characters * dump-with-names:: Fully interpreted UCS dump ASCII and some derivatives * ASCII:: Usual ASCII * ISO 8859:: ASCII extended by Latin Alphabets * ASCII-BS:: ASCII 7-bits, @kbd{BS} to overstrike * flat:: ASCII without diacritics nor underline Some IBM or Microsoft charsets * EBCDIC:: EBCDIC codes * IBM-PC:: IBM's PC code * Icon-QNX:: Unisys' Icon code Charsets for CDC machines * Display Code:: Control Data's Display Code * CDC-NOS:: ASCII 6/12 from NOS * Bang-Bang:: ASCII ``bang bang'' Other micro-computer charsets * Apple-Mac:: Apple's Macintosh code * AtariST:: Atari ST code Various other charsets * HTML:: World Wide Web representations * LaTeX:: LaTeX macro calls * Texinfo:: GNU project documentation files * Vietnamese:: Vietnamese charsets * African:: African charsets * Others:: Cyrillic and other charsets * Texte:: Easy French conventions * Mule:: Mule as a multiplexed charset All about surfaces * Permutations:: Permuting groups of bytes * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps * Test:: Artificial data for testing Internal aspects * Main flow:: Overall organisation * New charsets:: Adding new charsets * New surfaces:: Adding new surfaces * Design:: Comments on the library design @end detailmenu @end menu @end ifnottex @node Tutorial, Introduction, Top, Top @chapter Quick Tutorial @cindex @code{recode} use, a tutorial @cindex tutorial So, really, you just are in a hurry to use @code{recode}, and do not feel like studying this manual? Even reading this paragraph slows you down? We might have a problem, as you will have to do some guess work, and might not become very proficient unless you have a very solid intuition@dots{}. Let me use here, as a quick tutorial, an actual reply of mine to a @code{recode} user, who writes: @quotation My situation is this---I occasionally get email with special characters in it. Sometimes this mail is from a user using IBM software and sometimes it is a user using Mac software. I myself am on a SPARC Solaris machine. @end quotation Your situation is similar to mine, except that I @emph{often} receive email needing recoding, that is, much more than @emph{occasionally}! The usual recodings I do are Mac to @w{Latin-1}, IBM page codes to @w{Latin-1}, Easy-French to @w{Latin-1}, remove Quoted-Printable, remove Base64. These are so frequent that I made myself a few two-keystroke Emacs commands to filter the Emacs region. This is very convenient for me. I also resort to many other email conversions, yet more rarely than the frequent cases above. @quotation It @emph{seems} like this should be doable using @code{recode}. However, when I try something like @samp{grecode mac macfile.txt} I get nothing out---no error, no output, nothing. @end quotation Presuming you are using some recent version of @code{recode}, the command: @example recode mac macfile.txt @end example @noindent is a request for recoding @file{macfile.txt} over itself, overwriting the original, from Macintosh usual character code and Macintosh end of lines, to @w{Latin-1} and Unix end of lines. This is overwrite mode. If you want to use @code{recode} as a filter, which is probably what you need, rather do: @example recode mac @end example @noindent and give your Macintosh file as standard input, you'll get the @w{Latin-1} file on standard output. The above command is an abbreviation for any of: @example recode mac.. recode mac..l1 recode mac..Latin-1 recode mac/CR..Latin-1/ recode Macintosh..ISO_8859-1 recode Macintosh/CR..ISO_8859-1/ @end example That is, a @code{CR} surface, encoding newlines with ASCII @key{CR}, is first to be removed (this is a default surface for @samp{mac}), then the Macintosh charset is converted to @w{Latin-1} and no surface is added to the result (there is no default surface for @samp{l1}). If you want @samp{mac} code converted, but you know that newlines are already coded the Unix way, just do: @example recode mac/ @end example @noindent the slash then overriding the default surface with empty, that is, none. Here are other easy recipes: @example recode pc to filter IBM-PC code and CR-LF (default) to Latin-1 recode pc/ to filter IBM-PC code to Latin-1 recode 850 to filter code page 850 and CR-LF (default) to Latin-1 recode 850/ to filter code page 850 to Latin-1 recode /qp to remove quoted printable @end example The last one is indeed equivalent to any of: @example recode /qp.. recode l1/qp..l1/ recode ISO_8859-1/Quoted-Printable..ISO_8859-1/ @end example Here are some reverse recipes: @example recode ..mac to filter Latin-1 to Macintosh code and CR (default) recode ..mac/ to filter Latin-1 to Macintosh code recode ..pc to filter Latin-1 to IBM-PC code and CR-LF (default) recode ..pc/ to filter Latin-1 to IBM-PC code recode ..850 to filter Latin-1 to code page 850 and CR-LF (default) recode ..850/ to filter Latin-1 to code page 850 recode ../qp to force quoted printable @end example In all the above calls, replace @samp{recode} by @samp{recode -f} if you want to proceed despite recoding errors. If you do not use @samp{-f} and there is an error, the recoding output will be interrupted after first error in filter mode, or the file will not be replaced by a recoded copy in overwrite mode. You may use @samp{recode -l} to get a list of available charsets and surfaces, and @samp{recode --help} to get a quick summary of options. The above output is meant for those having already read this manual, so let me dare a suggestion: why could not you find a few more minutes in your schedule to peek further down, right into the following chapters! @node Introduction, Invoking recode, Tutorial, Top @chapter Terminology and purpose A few terms are used over and over in this manual, our wise reader will learn their meaning right away. Both ISO (International Organization for Standardisation) and IETF (Internet Engineering Task Force) have their own terminology, this document does not try to stick to either one in a strict way, while it does not want to throw more confusion in the field. On the other hand, it would not be efficient using paraphrases all the time, so @code{recode} coins a few short words, which are explained below. @cindex charset, what it is A @dfn{charset}, in the context of @code{recode}, is a particular association between computer codes on one side, and a repertoire of intended characters on the other side. Codes are usually taken from a set of consecutive small integers, starting at 0. Some characters have a graphical appearance (glyph) or displayable effect, others have special uses like, for example, to control devices or to interact with neighbouring codes to specify them more precisely. So, a @emph{charset} is roughly one of those tables, giving a meaning to each of the codes from the set of allowable values. MIME also uses the term charset with approximately the same meaning. It does @emph{not} exactly corresponds to what ISO calls a @dfn{coded character set}, that is, a set of characters with an encoding for them. An coded character set does not necessarily use all available code positions, while a MIME charset usually tries to specify them all. A MIME charset might be the union of a few disjoint coded character sets. @cindex surface, what it is A @dfn{surface} is a term used in @code{recode} only, and is a short for surface transformation of a charset stream. This is any kind of mapping, usually reversible, which associates physical bits in some medium for a stream of characters taken from one or more charsets (usually one). A surface is a kind of varnish added over a charset so it fits in actual bits and bytes. How end of lines are exactly encoded is not really pertinent to the charset, and so, there is surface for end of lines. @code{Base64} is also a surface, as we may encode any charset in it. Other examples would @code{DES} enciphering, or @code{gzip} compression (even if @code{recode} does not offer them currently): these are ways to give a real life to theoretical charsets. The @dfn{trivial} surface consists into putting characters into fixed width little chunks of bits, usually eight such bits per character. But things are not always that simple. This @code{recode} library, and the program by that name, have the purpose of converting files between various charsets and surfaces. When this cannot be done in exact ways, as it is often the case, the program may get rid of the offending characters or fall back on approximations. This library recognises or produces around 175 such charsets under 500 names, and handle a dozen surfaces. Since it can convert each charset to almost any other one, many thousands of different conversions are possible. The @code{recode} program and library do not usually know how to split and sort out textual and non-textual information which may be mixed in a single input file. For example, there is no surface which currently addresses the problem of how lines are blocked into physical records, when the blocking information is added as binary markers or counters within files. So, @code{recode} should be given textual streams which are rather @emph{pure}. This tool pays special attention to superimposition of diacritics for some French representations. This orientation is mostly historical, it does not impair the usefulness, generality or extensibility of the program. @samp{recode} is both a French and English word. For those who pay attention to those things, the proper pronunciation is French (that is, @samp{racud}, with @samp{a} like in @samp{above}, and @samp{u} like in @samp{cut}). The program @code{recode} has been written by Fran@,{c}ois Pinard. With time, it got to reuse works from other contributors, and notably, those of Keld Simonsen and Bruno Haible. @menu * Charset overview:: Overview of charsets * Surface overview:: Overview of surfaces * Contributing:: Contributions and bug reports @end menu @node Charset overview, Surface overview, Introduction, Introduction @section Overview of charsets @cindex charsets, overview Recoding is currently possible between many charsets, the bulk of which is described by @w{RFC 1345} tables or available in the @code{iconv} library. @xref{Tabular}, and @pxref{libiconv}. The @code{recode} library also handles some charsets in some specialised ways. These are: @itemize @bullet @item 6-bit charsets based on CDC display code: 6/12 code from NOS; bang-bang code from Universit@'e de Montr@'eal; @item 7-bit ASCII: without any diacritics, or else: using backspace for overstriking; Unisys' Icon convention; @TeX{}/La@TeX{} coding; easy French conventions for electronic mail; @item 8-bit extensions to ASCII: ISO @w{Latin-1}, Atari ST code, IBM's code for the PC, Apple's code for the Macintosh; @item 8-bit non-ASCII codes: three flavours of EBCDIC; @item 16-bit or 31-bit universal characters, and their transfer encodings. @end itemize The introduction of @w{RFC 1345} in @code{recode} has brought with it a few charsets having the functionality of older ones, but yet being different in subtle ways. The effects have not been fully investigated yet, so for now, clashes are avoided, the old and new charsets are kept well separate. @cindex unavailable conversions @cindex conversions, unavailable @cindex impossible conversions @cindex unreachable charsets @cindex exceptions to available conversions @cindex pseudo-charsets @tindex flat@r{, not as before charset} @tindex count-characters@r{, not as before charset} @tindex dump-with-names@r{, not as before charset} @tindex data@r{, not with charsets} @tindex libiconv@r{, not in requests} Conversion is possible between almost any pair of charsets. Here is a list of the exceptions. One may not recode @emph{from} the @code{flat}, @code{count-characters} or @code{dump-with-names} charsets, nor @emph{from} or @emph{to} the @code{data}, @code{tree} or @code{:libiconv:} charsets. Also, if we except the @code{data} and @code{tree} pseudo-charsets, charsets and surfaces live in disjoint recoding spaces, one cannot really transform a surface into a charset or vice-versa, as surfaces are only meant to be applied over charsets, or removed from them. @node Surface overview, Contributing, Charset overview, Introduction @section Overview of surfaces @cindex surfaces, overview For various practical considerations, it sometimes happens that the codes making up a text, written in a particular charset, cannot simply be put out in a file one after another without creating problems or breaking other things. Sometimes, 8-bit codes cannot be written on a 7-bit medium, variable length codes need kind of envelopes, newlines require special treatment, etc. We sometimes have to apply @dfn{surfaces} to a stream of codes, which surfaces are kind of tricks used to fit the charset into those practical constraints. Moreover, similar surfaces or tricks may be useful for many unrelated charsets, and many surfaces can be used at once over a single charset. @cindex pure charset @cindex charset, pure So, @code{recode} has machinery to describe a combination of a charset with surfaces used over it in a file. We would use the expression @dfn{pure charset} for referring to a charset free of any surface, that is, the conceptual association between integer codes and character intents. It is not always clear if some transformation will yield a charset or a surface, especially for those transformations which are only meaningful over a single charset. The @code{recode} library is not overly picky as identifying surfaces as such: when it is practical to consider a specialised surface as if it were a charset, this is preferred, and done. @node Contributing, , Surface overview, Introduction @section Contributions and bug reports @cindex contributing charsets Even being the @code{recode} author and current maintainer, I am no specialist in charset standards. I only made @code{recode} along the years to solve my own needs, but felt it was applicable for the needs of others. Some FSF people liked the program structure and suggested to make it more widely available. I often rely on @code{recode} users suggestions to decide what is best to be done next. Properly protecting @code{recode} about possible copyright fights is a pain for me and for contributors, but we cannot avoid addressing the issue in the long run. Besides, the Free Software Foundation, which mandates the GNU project, is very sensible to this matter. GNU standards suggest that we stay cautious before looking at copyrighted code. The safest and simplest way for me is to gather ideas and reprogram them anew, even if this might slow me down considerably. For contributions going beyond a few lines of code here and there, the FSF definitely requires employer disclaimers and copyright assignments in writing. When you contribute something to @code{recode}, @emph{please} explain what it is about. Do not take for granted that I know those charsets which are familiar to you. Once again, I'm no expert, and you have to help me. Your explanations could well find their way into this documentation, too. Also, for contributing new charsets or new surfaces, as much as possible, please provide good, solid, verifiable references for the tables you used@footnote{I'm not prone at accepting a charset you just invented, and which nobody uses yet: convince your friends and community first!}. Many users contributed to @code{recode} already, I am grateful to them for their interest and involvement. Some suggestions can be integrated quickly while some others have to be delayed, I have to draw a line somewhere when time comes to make a new release, about what would go in it and what would go in the next. @cindex bug reports, where to send @cindex reporting bugs Please send suggestions, documentation errors and bug reports to @email{recode-bugs@@iro.umontreal.ca} or, if you prefer, directly to @email{pinard@@iro.umontreal.ca}, Fran@,{c}ois Pinard. Do not be afraid to report details, because this program is the mere aggregation of hundreds of details. @node Invoking recode, Library, Introduction, Top @chapter How to use this program With the synopsis of the @code{recode} call, we stress the difference between using this program as a file filter, or recoding many files at once. The first parameter of any call states the recoding request, and this deserves a section on its own. Options are then presented, but somewhat grouped according to the related functionalities they control. @menu * Synopsis:: Synopsis of @code{recode} call * Requests:: The @var{request} parameter * Listings:: Asking for various lists * Recoding:: Controlling how files are recoded * Reversibility:: Reversibility issues * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using @code{recode} within Emacs * Debugging:: Debugging considerations @end menu @node Synopsis, Requests, Invoking recode, Invoking recode @section Synopsis of @code{recode} call @cindex @code{recode}, synopsis of invocation @cindex invocation of @code{recode}, synopsis The general format of the program call is one of: @example recode [@var{option}]@dots{} [@var{charset} | @var{request} [@var{file}]@dots{} ] @end example Some calls are used only to obtain lists produced by @code{recode} itself, without actually recoding any file. They are recognised through the usage of listing options, and these options decide what meaning should be given to an optional @var{charset} parameter. @xref{Listings}. In other calls, the first parameter (@var{request}) always explains which transformations are expected on the files. There are many variations to the aspect of this parameter. We will discuss more complex situations later (@pxref{Requests}), but for many simple cases, this parameter merely looks like this@footnote{In previous versions or @code{recode}, a single colon @samp{:} was used instead of the two dots @samp{..} for separating charsets, but this was creating problems because colons are allowed in official charset names. The old request syntax is still recognised for compatibility purposes, but is deprecated.}: @example @var{before}..@var{after} @end example @noindent where @var{before} and @var{after} each gives the name of a charset. Each @var{file} will be read assuming it is coded with charset @var{before}, it will be recoded over itself so to use the charset @var{after}. If there is no @var{file} on the @code{recode} command, the program rather acts as a Unix filter and transforms standard input onto standard output. @cindex filter operation @cindex @code{recode}, operation as filter The capability of recoding many files at once is very convenient. For example, one could easily prepare a distribution from @w{Latin-1} to MSDOS, this way: @example mkdir package cp -p Makefile *.[ch] package recode Latin-1..MSDOS package/* zoo ah package.zoo package/* rm -rf package @end example @noindent (In this example, the non-mandatory @samp{-p} option to @code{cp} is for preserving timestamps, and the @code{zoo} program is an archiver from Rahul Dhesi which once was quite popular.) The filter operation is especially useful when the input files should not be altered. Let us make an example to illustrate this point. Suppose that someone has a file named @file{datum.txt}, which is almost a @TeX{} file, except that diacriticised characters are written using @w{Latin-1}. To complete the recoding of the diacriticised characters @emph{only} and produce a file @file{datum.tex}, without destroying the original, one could do: @example cp -p datum.txt datum.tex recode -d l1..tex datum.tex @end example However, using @code{recode} as a filter will achieve the same goal more neatly: @example recode -d l1..tex datum.tex @end example This example also shows that @code{l1} could be used instead of @code{Latin-1}; charset names often have such aliases. @node Requests, Listings, Synopsis, Invoking recode @section The @var{request} parameter In the case where the @var{request} is merely written as @var{before}..@var{after}, then @var{before} and @var{after} specify the start charset and the goal charset for the recoding. @cindex charset names, valid characters @cindex valid characters in charset names For @code{recode}, charset names may contain any character, besides a comma, a forward slash, or two periods in a row. But in practice, charset names are currently limited to alphabetic letters (upper or lower case), digits, hyphens, underlines, periods, colons or round parentheses. @cindex request, syntax @cindex @code{recode} request syntax The complete syntax for a valid @var{request} allows for unusual things, which might surprise at first. (Do not pay too much attention to these facilities on first reading.) For example, @var{request} may also contain intermediate charsets, like in the following example: @example @var{before}..@var{interim1}..@var{interim2}..@var{after} @end example @noindent @cindex intermediate charsets @cindex chaining of charsets in a request @cindex charsets, chaining in a request meaning that @code{recode} should internally produce the @var{interim1} charset from the start charset, then work out of this @var{interim1} charset to internally produce @var{interim2}, and from there towards the goal charset. In fact, @code{recode} internally combines recipes and automatically uses interim charsets, when there is no direct recipe for transforming @var{before} into @var{after}. But there might be many ways to do it. When many routes are possible, the above @dfn{chaining} syntax may be used to more precisely force the program towards a particular route, which it might not have naturally selected otherwise. On the other hand, because @code{recode} tries to choose good routes, chaining is only needed to achieve some rare, unusual effects. Moreover, many such requests (sub-requests, more precisely) may be separated with commas (but no spaces at all), indicating a sequence of recodings, where the output of one has to serve as the input of the following one. For example, the two following requests are equivalent: @example @var{before}..@var{interim1}..@var{interim2}..@var{after} @var{before}..@var{interim1},@var{interim1}..@var{interim2},@var{interim2}..@var{after} @end example @noindent In this example, the charset input for any recoding sub-request is identical to the charset output by the preceding sub-request. But it does not have to be so in the general case. One might wonder what would be the meaning of declaring the charset input for a recoding sub-request of being of different nature than the charset output by a preceding sub-request, when recodings are chained in this way. Such a strange usage might have a meaning and be useful for the @code{recode} expert, but they are quite uncommon in practice. @cindex surfaces, syntax More useful is the distinction between the concept of charset, and the concept of surfaces. An encoded charset is represented by: @example @var{pure-charset}/@var{surface1}/@var{surface2}@dots{} @end example @noindent @cindex surfaces, commutativity @cindex commutativity of surfaces using slashes to introduce surfaces, if any. The order of application of surfaces is usually important, they cannot be freely commuted. In the given example, @var{surface1} is first applied over the @var{pure-charset}, then @var{surface2} is applied over the result. Given this request: @example @var{before}/@var{surface1}/@var{surface2}..@var{after}/@var{surface3} @end example @noindent the @code{recode} program will understand that the input files should have @var{surface2} removed first (because it was applied last), then @var{surface1} should be removed. The next step will be to translate the codes from charset @var{before} to charset @var{after}, prior to applying @var{surface3} over the result. @cindex implied surfaces @cindex surfaces, implied @tindex IBM-PC charset, and CR-LF surface Some charsets have one or more @emph{implied} surfaces. In this case, the implied surfaces are automatically handled merely by naming the charset, without any explicit surface to qualify it. Let's take an example to illustrate this feature. The request @samp{pc..l1} will indeed decode MS-DOS end of lines prior to converting IBM-PC codes to @w{Latin-1}, because @samp{pc} is the name of a charset@footnote{More precisely, @code{pc} is an alias for the charset @code{IBM-PC}.} which has @code{CR-LF} for its usual surface. The request @samp{pc/..l1} will @emph{not} decode end of lines, since the slash introduces surfaces, and even if the surface list is empty, it effectively defeats the automatic removal of surfaces for this charset. So, empty surfaces are useful, indeed! @cindex aliases @cindex alternate names for charsets and surfaces @cindex charsets, aliases @cindex surfaces, aliases Both charsets and surfaces may have predefined alternate names, or aliases. However, and this is rather important to understand, implied surfaces are attached to individual aliases rather than on genuine charsets. Consequently, the official charset name and all of its aliases do not necessarily share the same implied surfaces. The charset and all its aliases may each have its own different set of implied surfaces. @cindex abbreviated names for charsets and surfaces @cindex names of charsets and surfaces, abbreviation Charset names, surface names, or their aliases may always be abbreviated to any unambiguous prefix. Internally in @code{recode}, disambiguating tables are kept separate for charset names and surface names. @cindex letter case, in charset and surface names While recognising a charset name or a surface name (or aliases thereof), @code{recode} ignores all characters besides letters and digits, so for example, the hyphens and underlines being part of an official charset name may safely be omitted (no need to un-confuse them!). There is also no distinction between upper and lower case for charset or surface names. One of the @var{before} or @var{after} keywords may be omitted. If the double dot separator is omitted too, then the charset is interpreted as the @var{before} charset.@footnote{Both @var{before} and @var{after} may be omitted, in which case the double dot separator is mandatory. This is not very useful, as the recoding reduces to a mere copy in that case.} @cindex default charset @cindex charset, default @vindex DEFAULT_CHARSET When a charset name is omitted or left empty, the value of the @code{DEFAULT_CHARSET} variable in the environment is used instead. If this variable is not defined, the @code{recode} library uses the current locale's encoding. On POSIX compliant systems, this depends on the first non-empty value among the environment variables LC_ALL, LC_CTYPE, LANG, and can be determined through the command @samp{locale charmap}. If the charset name is omitted but followed by surfaces, the surfaces then qualify the usual or default charset. For example, the request @samp{../x} is sufficient for applying an hexadecimal surface to the input text@footnote{MS-DOS is one of those systems for which the default charset has implied surfaces, @code{CR-LF} here. Such surfaces are automatically removed or applied whenever the default charset is read or written, exactly as it would go for any other charset. In the example above, on such systems, the hexadecimal surface would then @emph{replace} the implied surfaces. For @emph{adding} an hexadecimal surface without removing any, one should write the request as @samp{/../x}.}. The allowable values for @var{before} or @var{after} charsets, and various surfaces, are described in the remainder of this document. @node Listings, Recoding, Requests, Invoking recode @section Asking for various lists Many options control listing output generated by @code{recode} itself, they are not meant to accompany actual file recodings. These options are: @table @samp @item --version @opindex --version @cindex @code{recode} version, printing The program merely prints its version numbers on standard output, and exits without doing anything else. @item --help @opindex --help @cindex help page, printing The program merely prints a page of help on standard output, and exits without doing any recoding. @item -C @itemx --copyright @opindex -C @opindex --copyright @cindex copyright conditions, printing Given this option, all other parameters and options are ignored. The program prints briefly the copyright and copying conditions. See the file @file{COPYING} in the distribution for full statement of the Copyright and copying conditions. @item -h[@var{language}/][@var{name}] @itemx --header[=[@var{language}/][@var{name}]] @opindex -h @opindex --header @cindex source file generation @cindex programming language support @cindex languages, programming @cindex supported programming languages Instead of recoding files, @code{recode} writes a @var{language} source file on standard output and exits. This source is meant to be included in a regular program written in the same programming @var{language}: its purpose is to declare and initialise an array, named @var{name}, which represents the requested recoding. The only acceptable values for @var{language} are @samp{c} or @samp{perl}, and may may be abbreviated. If @var{language} is not specified, @samp{c} is assumed. If @var{name} is not specified, then it defaults to @samp{@var{before}_@var{after}}. Strings @var{before} and @var{after} are cleaned before being used according to the syntax of @var{language}. Even if @code{recode} tries its best, this option does not always succeed in producing the requested source table. It will however, provided the recoding can be internally represented by only one step after the optimisation phase, and if this merged step conveys a one-to-one or a one-to-many explicit table. Also, when attempting to produce sources tables, @code{recode} relaxes its checking a tiny bit: it ignores the algorithmic part of some tabular recodings, it also avoids the processing of implied surfaces. But this is all fairly technical. Better try and see! Beware that other options might affect the produced source tables, these are: @samp{-d}, @samp{-g} and, particularly, @samp{-s}. @item -k @var{pairs} @itemx --known=@var{pairs} @opindex -k @opindex --known= @cindex unknown charsets @cindex guessing charsets @cindex charsets, guessing This particular option is meant to help identifying an unknown charset, using as hints some already identified characters of the charset. Some examples will help introducing the idea. Let's presume here that @code{recode} is run in an ISO-8859-1 locale, and that @code{DEFAULT_CHARSET} is unset in the environment. Suppose you have guessed that code 130 (decimal) of the unknown charset represents a lower case @samp{e} with an acute accent. That is to say that this code should map to code 233 (decimal) in the usual charset. By executing: @example recode -k 130:233 @end example @noindent you should obtain a listing similar to: @example AtariST atarist CWI cphu cwi cwi2 IBM437 437 cp437 ibm437 IBM850 850 cp850 ibm850 IBM851 851 cp851 ibm851 IBM852 852 cp852 ibm852 IBM857 857 cp857 ibm857 IBM860 860 cp860 ibm860 IBM861 861 cp861 cpis ibm861 IBM863 863 cp863 ibm863 IBM865 865 cp865 ibm865 @end example You can give more than one clue at once, to restrict the list further. Suppose you have @emph{also} guessed that code 211 of the unknown charset represents an upper case @samp{E} with diaeresis, that is, code 203 in the usual charset. By requesting: @example recode -k 130:233,211:203 @end example @noindent you should obtain: @example IBM850 850 cp850 ibm850 IBM852 852 cp852 ibm852 IBM857 857 cp857 ibm857 @end example The usual charset may be overridden by specifying one non-option argument. For example, to request the list of charsets for which code 130 maps to code 142 for the Macintosh, you may ask: @example recode -k 130:142 mac @end example @noindent and get: @example AtariST atarist CWI cphu cwi cwi2 IBM437 437 cp437 ibm437 IBM850 850 cp850 ibm850 IBM851 851 cp851 ibm851 IBM852 852 cp852 ibm852 IBM857 857 cp857 ibm857 IBM860 860 cp860 ibm860 IBM861 861 cp861 cpis ibm861 IBM863 863 cp863 ibm863 IBM865 865 cp865 ibm865 @end example @noindent which, of course, is identical to the result of the first example, since the code 142 for the Macintosh is a small @samp{e} with acute. More formally, option @samp{-k} lists all possible @emph{before} charsets for the @emph{after} charset given as the sole non-option argument to @code{recode}, but subject to restrictions given in @var{pairs}. If there is no non-option argument, the @emph{after} charset is taken to be the default charset for this @code{recode}. The restrictions are given as a comma separated list of pairs, each pair consisting of two numbers separated by a colon. The numbers are taken as decimal when the initial digit is between @samp{1} and @samp{9}; @samp{0x} starts an hexadecimal number, or else @samp{0} starts an octal number. The first number is a code in any @emph{before} charset, while the second number is a code in the specified @emph{after} charset. If the first number would not be transformed into the second number by recoding from some @emph{before} charset to the @emph{after} charset, then this @emph{before} charset is rejected. A @emph{before} charset is listed only if it is not rejected by any pair. The program will only test those @emph{before} charsets having a tabular style internal description (@pxref{Tabular}), so should be the selected @emph{after} charset. The produced list is in fact a subset of the list produced by the option @samp{-l}. As for option @samp{-l}, the non-option argument is interpreted as a charset name, possibly abbreviated to any non ambiguous prefix. @item -l[@var{format}] @itemx --list[=@var{format}] @opindex -l @opindex --list @cindex listing charsets @cindex information about charsets This option asks for information about all charsets, or about one particular charset. No file will be recoded. If there is no non-option arguments, @code{recode} ignores the @var{format} value of the option, it writes a sorted list of charset names on standard output, one per line. When a charset name have aliases or synonyms, they follow the true charset name on its line, sorted from left to right. Each charset or alias is followed by its implied surfaces, if any. This list is over two hundred lines. It is best used with @samp{grep -i}, as in: @example recode -l | grep -i greek @end example There might be one non-option argument, in which case it is interpreted as a charset name, possibly abbreviated to any non ambiguous prefix. This particular usage of the @samp{-l} option is obeyed @emph{only} for charsets having a tabular style internal description (@pxref{Tabular}). Even if most charsets have this property, some do not, and the option @samp{-l} cannot be used to detail these particular charsets. For knowing if a particular charset can be listed this way, you should merely try and see if this works. The @var{format} value of the option is a keyword from the following list. Keywords may be abbreviated by dropping suffix letters, and even reduced to the first letter only: @table @samp @item decimal This format asks for the production on standard output of a concise tabular display of the charset, in which character code values are expressed in decimal. @item octal This format uses octal instead of decimal in the concise tabular display of the charset. @item hexadecimal This format uses hexadecimal instead of decimal in the concise tabular display of the charset. @item full This format requests an extensive display of the charset on standard output, using one line per character showing its decimal, hexadecimal, octal and @code{UCS-2} code values, and also a descriptive comment which should be the 10646 name for the character. @vindex LANGUAGE@r{, when listing charsets} @vindex LANG@r{, when listing charsets} @cindex French description of charsets The descriptive comment is given in English and ASCII, yet if the English description is not available but a French one is, then the French description is given instead, using @w{Latin-1}. However, if the @code{LANGUAGE} or @code{LANG} environment variable begins with the letters @samp{fr}, then listing preference goes to French when both descriptions are available. @end table When option @samp{-l} is used together with a @var{charset} argument, the @var{format} defaults to @code{decimal}. @item -T @itemx --find-subsets @opindex -T @opindex --find-subsets @cindex identifying subsets in charsets @cindex subsets in charsets This option is a maintainer tool for evaluating the redundancy of those charsets, in @code{recode}, which are internally represented by an @code{UCS-2} data table. After the listing has been produced, the program exits without doing any recoding. The output is meant to be sorted, like this: @w{@samp{recode -T | sort}}. The option triggers @code{recode} into comparing all pairs of charsets, seeking those which are subsets of others. The concept and results are better explained through a few examples. Consider these three sample lines from @samp{-T} output: @example [ 0] IBM891 == IBM903 [ 1] IBM1004 < CP1252 [ 12] INVARIANT < CSA_Z243.4-1985-1 @end example @noindent The first line means that @code{IBM891} and @code{IBM903} are completely identical as far as @code{recode} is concerned, so one is fully redundant to the other. The second line says that @code{IBM1004} is wholly contained within @code{CP1252}, yet there is a single character which is in @code{CP1252} without being in @code{IBM1004}. The third line says that @code{INVARIANT} is wholly contained within @code{CSA_Z243.4-1985-1}, but twelve characters are in @code{CSA_Z243.4-1985-1} without being in @code{INVARIANT}. The whole output might most probably be reduced and made more significant through a transitivity study. @end table @node Recoding, Reversibility, Listings, Invoking recode @section Controlling how files are recoded The following options have the purpose of giving the user some fine grain control over the recoding operation themselves. @table @samp @item -c @itemx --colons @opindex -c @opindex --colons @cindex diaeresis With @code{Texte} Easy French conventions, use the column @kbd{:} instead of the double-quote @kbd{"} for marking diaeresis. @xref{Texte}. @item -g @itemx --graphics @opindex -g @opindex --graphics @cindex IBM graphics characters @cindex box-drawing characters This option is only meaningful while getting @emph{out} of the @code{IBM-PC} charset. In this charset, characters 176 to 223 are used for constructing rulers and boxes, using simple or double horizontal or vertical lines. This option forces the automatic selection of ASCII characters for approximating these rulers and boxes, at cost of making the transformation irreversible. Option @samp{-g} implies @samp{-f}. @item -t @itemx --touch @opindex -t @opindex --touch @cindex time stamps of files @cindex file time stamps The @emph{touch} option is meaningful only when files are recoded over themselves. Without it, the time-stamps associated with files are preserved, to reflect the fact that changing the code of a file does not really alter its informational contents. When the user wants the recoded files to be time-stamped at the recoding time, this option inhibits the automatic protection of the time-stamps. @item -v @itemx --verbose @opindex -v @opindex --verbose @cindex verbose operation @cindex details about recoding @cindex recoding details @cindex quality of recoding Before doing any recoding, the program will first print on the @code{stderr} stream the list of all intermediate charsets planned for recoding, starting with the @var{before} charset and ending with the @var{after} charset. It also prints an indication of the recoding quality, as one of the word @samp{reversible}, @samp{one to one}, @samp{one to many}, @samp{many to one} or @samp{many to many}. This information will appear once or twice. It is shown a second time only when the optimisation and step merging phase succeeds in replacing many single steps by a new one. This option also has a second effect. The program will print on @code{stderr} one message per recoded @var{file}, so as to keep the user informed of the progress of its command. An easy way to know beforehand the sequence or quality of a recoding is by using the command such as: @example recode -v @var{before}..@var{after} < /dev/null @end example @noindent using the fact that, in @code{recode}, an empty input file produces an empty output file. @item -x @var{charset} @itemx --ignore=@var{charset} @opindex -x @opindex --ignore @cindex ignore charsets @cindex recoding path, rejection This option tells the program to ignore any recoding path through the specified @var{charset}, so disabling any single step using this charset as a start or end point. This may be used when the user wants to force @code{recode} into using an alternate recoding path (yet using chained requests offers a finer control, @pxref{Requests}). @var{charset} may be abbreviated to any unambiguous prefix. @end table @node Reversibility, Sequencing, Recoding, Invoking recode @section Reversibility issues The following options are somewhat related to reversibility issues: @table @samp @item -f @itemx --force @opindex -f @opindex --force @cindex force recoding @cindex irreversible recoding With this option, irreversible or otherwise erroneous recodings are run to completion, and @code{recode} does not exit with a non-zero status if it would be only because irreversibility matters. @xref{Reversibility}. Without this option, @code{recode} tries to protect you against recoding a file irreversibly over itself@footnote{There are still some cases of ambiguous output which are rather difficult to detect, and for which the protection is not active.}. Whenever an irreversible recoding is met, or any other recoding error, @code{recode} produces a warning on standard error. The current input file does not get replaced by its recoded version, and @code{recode} then proceeds with the recoding of the next file. When the program is merely used as a filter, standard output will have received a partially recoded copy of standard input, up to the first error point. After all recodings have been done or attempted, and if some recoding has been aborted, @code{recode} exits with a non-zero status. In releases of @code{recode} prior to version 3.5, this option was always selected, so it was rather meaningless. Nevertheless, users were invited to start using @samp{-f} right away in scripts calling @code{recode} whenever convenient, in preparation for the current behaviour. @item -q @itemx --quiet @itemx --silent @opindex -q @opindex --quiet @opindex --silent @cindex suppressing diagnostic messages @cindex error messages, suppressing @cindex silent operation This option has the sole purpose of inhibiting warning messages about irreversible recodings, and other such diagnostics. It has no other effect, in particular, it does @emph{not} prevent recodings to be aborted or @code{recode} to return a non-zero exit status when irreversible recodings are met. This option is set automatically for the children processes, when recode splits itself in many collaborating copies. Doing so, the diagnostic is issued only once by the parent. See option @samp{-p}. @item -s @itemx --strict @opindex -s @opindex --strict @cindex strict operation @cindex map filling, disable @cindex disable map filling By using this option, the user requests that @code{recode} be very strict while recoding a file, merely losing in the transformation any character which is not explicitly mapped from a charset to another. Such a loss is not reversible and so, will bring @code{recode} to fail, unless the option @samp{-f} is also given as a kind of counter-measure. Using @samp{-s} without @samp{-f} might render the @code{recode} program very susceptible to the slighest file abnormalities. Despite the fact that it might be irritating to some users, such paranoia is sometimes wanted and useful. @end table @cindex reversibility of recoding Even if @code{recode} tries hard to keep the recodings reversible, you should not develop an unconditional confidence in its ability to do so. You @emph{ought} to keep only reasonable expectations about reverse recodings. In particular, consider: @itemize @bullet @item Most transformations are fully reversible for all inputs, but lose this property whenever @samp{-s} is specified. @item A few transformations are not meant to be reversible, by design. @item Reversibility sometimes depends on actual file contents and cannot be ascertained beforehand, without reading the file. @item Reversibility is never absolute across successive versions of this program. Even correcting a small bug in a mapping could induce slight discrepancies later. @item Reversibility is easily lost by merging. This is best explained through an example. If you reversibly recode a file from charset @var{A} to charset @var{B}, then you reversibly recode the result from charset @var{B} to charset @var{C}, you cannot expect to recover the original file by merely recoding from charset @var{C} directly to charset @var{A}. You will instead have to recode from charset @var{C} back to charset @var{B}, and only then from charset @var{B} to charset @var{A}. @item Faulty files create a particular problem. Consider an example, recoding from @code{IBM-PC} to @code{Latin-1}. End of lines are represented as @samp{\r\n} in @code{IBM-PC} and as @samp{\n} in @code{Latin-1}. There is no way by which a faulty @code{IBM-PC} file containing a @samp{\n} not preceded by @samp{\r} be translated into a @code{Latin-1} file, and then back. @item There is another difficulty arising from code equivalences. For example, in a @code{LaTeX} charset file, the string @samp{\^\i@{@}} could be recoded back and forth through another charset and become @samp{\^@{\i@}}. Even if the resulting file is equivalent to the original one, it is not identical. @end itemize @cindex map filling Unless option @samp{-s} is used, @code{recode} automatically tries to fill mappings with invented correspondences, often making them fully reversible. This filling is not made at random. The algorithm tries to stick to the identity mapping and, when this is not possible, it prefers generating many small permutation cycles, each involving only a few codes. For example, here is how @code{IBM-PC} code 186 gets translated to @kbd{control-U} in @code{Latin-1}. @kbd{Control-U} is 21. Code 21 is the @code{IBM-PC} section sign, which is 167 in @code{Latin-1}. @code{recode} cannot reciprocate 167 to 21, because 167 is the masculine ordinal indicator within @code{IBM-PC}, which is 186 in @code{Latin-1}. Code 186 within @code{IBM-PC} has no @code{Latin-1} equivalent; by assigning it back to 21, @code{recode} closes this short permutation loop. As a consequence of this map filling, @code{recode} may sometimes produce @emph{funny} characters. They may look annoying, they are nevertheless helpful when one changes his (her) mind and wants to revert to the prior recoding. If you cannot stand these, use option @samp{-s}, which asks for a very strict recoding. This map filling sometimes has a few surprising consequences, which some users wrongly interpreted as bugs. Here are two examples. @enumerate @item In some cases, @code{recode} seems to copy a file without recoding it. But in fact, it does. Consider a request: @example recode l1..us < File-Latin1 > File-ASCII cmp File-Latin1 File-ASCII @end example @noindent then @code{cmp} will not report any difference. This is quite normal. @w{@code{Latin-1}} gets correctly recoded to ASCII for charsets commonalities (which are the first 128 characters, in this case). The remaining last 128 @w{@code{Latin-1}} characters have no ASCII correspondent. Instead of losing them, @code{recode} elects to map them to unspecified characters of ASCII, so making the recoding reversible. The simplest way of achieving this is merely to keep those last 128 characters unchanged. The overall effect is copying the file verbatim. If you feel this behaviour is too generous and if you do not wish to care about reversibility, simply use option @samp{-s}. By doing so, @code{recode} will strictly map only those @w{@code{Latin-1}} characters which have an ASCII equivalent, and will merely drop those which do not. Then, there is more chance that you will observe a difference between the input and the output file. @item Recoding the wrong way could sometimes give the false impression that recoding has @emph{almost} been done properly. Consider the requests: @example recode 437..l1 < File-Latin1 > Temp1 recode 437..l1 < Temp1 > Temp2 @end example @noindent so declaring wrongly @file{File-Latin1} to be an IBM-PC file, and recoding to @code{Latin-1}. This is surely ill defined and not meaningful. Yet, if you repeat this step a second time, you might notice that many (not all) characters in @file{Temp2} are identical to those in @file{File-Latin1}. Sometimes, people try to discover how @code{recode} works by experimenting a little at random, rather than reading and understanding the documentation; results such as this are surely confusing, as they provide those people with a false feeling that they understood something. Reversible codings have this property that, if applied several times in the same direction, they will eventually bring any character back to its original value. Since @code{recode} seeks small permutation cycles when creating reversible codings, besides characters unchanged by the recoding, most permutation cycles will be of length 2, and fewer of length 3, etc. So, it is just expectable that applying the recoding twice in the same direction will recover most characters, but will fail to recover those participating in permutation cycles of length 3. On the other end, recoding six times in the same direction would recover all characters in cycles of length 1, 2, 3 or 6. @end enumerate @node Sequencing, Mixed, Reversibility, Invoking recode @section Selecting sequencing methods @cindex sequencing This program uses a few techniques when it is discovered that many passes are needed to comply with the @var{request}. For example, suppose that four elementary steps were selected at recoding path optimisation time. Then @code{recode} will split itself into four different interconnected tasks, logically equivalent to: @example @var{step1} <@var{input} | @var{step2} | @var{step3} | @var{step4} >@var{output} @end example The splitting into subtasks is often done using Unix pipes. But the splitting may also be completely avoided, and rather simulated by using memory buffer, or intermediate files. The various @samp{--sequence=@var{strategy}} options gives you control over the flow methods, by replacing @var{strategy} with @samp{memory}, @samp{pipe} or @samp{files}. So, these options may be used to override the default behaviour, which is also explained below. @table @samp @item --sequence=memory @opindex --sequence @cindex memory sequencing When the recoding requires a combination of two or more elementary recoding steps, this option forces many passes over the data, using in-memory buffers to hold all intermediary results. @c This should be the default behaviour when @c files to be recoded are @emph{small} enough. @item -i @itemx --sequence=files @opindex -i @cindex file sequencing When the recoding requires a combination of two or more elementary recoding steps, this option forces many passes over the data, using intermediate files between passes. This is the default behaviour when files are recoded over themselves. If this option is selected in filter mode, that is, when the program reads standard input and writes standard output, it might take longer for programs further down the pipe chain to start receiving some recoded data. @item -p @itemx --sequence=pipe @opindex -p @cindex pipe sequencing When the recoding requires a combination of two or more elementary recoding steps, this option forces the program to fork itself into a few copies interconnected with pipes, using the @code{pipe(2)} system call. All copies of the program operate in parallel. This is the default behaviour in filter mode. If this option is used when files are recoded over themselves, this should also save disk space because some temporary files might not be needed, at the cost of more system overhead. If, at installation time, the @code{pipe(2)} call is said to be unavailable, selecting option @samp{-p} is equivalent to selecting option @samp{-i}. (This happens, for example, on MS-DOS systems.) @end table @node Mixed, Emacs, Sequencing, Invoking recode @section Using mixed charset input In real life and practice, textual files are often made up of many charsets at once. Some parts of the file encode one charset, while other parts encode another charset, and so forth. Usually, a file does not toggle between more than two or three charsets. The means to distinguish which charsets are encoded at various places is not always available. The @code{recode} program is able to handle only a few simple cases of mixed input. The default @code{recode} behaviour is to expect pure charset files, to be recoded as other pure charset files. However, the following options allow for a few precise kinds of mixed charset files. @ignore Some notes on transliteration and substitution. Transliteration is still much study, discussion and work to come, but when generic transliteration will be added in @code{recode}, it will be added @emph{through} the @code{recode} library. However, I agree that it might be *convenient* that the `latin1..fi' conversion works by letting all ASCII characters through, but then, the result would be a mix of ASCII and `fi', it would not be pure `fi' anymore. It would be convenient because, in practice, people might write programs in ASCII, keeping comments or strings directly in `fi', all in the same file. The original files are indeed mixed, and people sometimes expect that `recode' will do mixed conversions. A conversion does not become *right* because it is altered to be more convenient. And recode is not *wrong* because it does not offer some conveniences people would like to have. As long as `recode' main job is producing `fi', than '[' is just not representable in `fi', and recode is rather right in not letting `[' through. It has to do something special about it. The character might be thrown away, transliterated or replaced by a substitute, or mapped to some other code for reversibility purposes. Transliteration or substitution are currently not implemented in `recode', yet for the last few years, I've been saving documentation about these phenomena. The transliteration which you are asking for, here, is that the '[' character in @w{Latin-1}, for example, be transliterated to A-umlaut in `fi', which is a bit non-meaningful. Remember, there is no `[' in `fi'. @end ignore @table @samp @item -d @itemx --diacritics @opindex -d @opindex --diacritics @cindex convert a subset of characters @cindex partial conversion While converting to or from one of @code{HTML} or @code{LaTeX} charset, limit conversion to some subset of all characters. For @code{HTML}, limit conversion to the subset of all non-ASCII characters. For @code{LaTeX}, limit conversion to the subset of all non-English letters. This is particularly useful, for example, when people create what would be valid @code{HTML}, @TeX{} or La@TeX{} files, if only they were using provided sequences for applying diacritics instead of using the diacriticised characters directly from the underlying character set. While converting to @code{HTML} or @code{LaTeX} charset, this option assumes that characters not in the said subset are properly coded or protected already, @code{recode} then transmit them literally. While converting the other way, this option prevents translating back coded or protected versions of characters not in the said subset. @xref{HTML}. @xref{LaTeX}. @ignore @item -M @itemx --message @opindex -M @opindex --message Option @samp{-M} would be for messages, it would ideally process @w{RFC 1522} inserts in ASCII headers, converting them to the goal code, rewriting some MIME header line too, and stopping its special work at the first empty line. A special combination of both capabilities would be for the recoding of PO files, in which the header, and @code{msgid} and @code{msgstr} strings, might all use different charsets. Recoding some PO files currently looks like a nightmare, which I would like @code{recode} to repair. @end ignore @item -S[@var{language}] @itemx --source[=@var{language}] @opindex -S @opindex --source @cindex convert strings and comments @cindex string and comments conversion The bulk of the input file is expected to be written in @code{ASCII}, except for parts, like comments and string constants, which are written using another charset than @code{ASCII}. When @var{language} is @samp{c}, the recoding will proceed only with the contents of comments or strings, while everything else will be copied without recoding. When @var{language} is @samp{po}, the recoding will proceed only within translator comments (those having whitespace immediately following the initial @samp{#}) and with the contents of @code{msgstr} strings. For the above things to work, the non-@code{ASCII} encoding of the comment or string should be such that an @code{ASCII} scan will successfully find where the comment or string ends. Even if @code{ASCII} is the usual charset for writing programs, some compilers are able to directly read other charsets, like @code{UTF-8}, say. There is currently no provision in @code{recode} for reading mixed charset sources which are not based on @code{ASCII}. It is probable that the need for mixed recoding is not as pressing in such cases. For example, after one does: @example recode -Spo pc/..u8 < @var{input}.po > @var{output}.po @end example @noindent file @file{@var{output}.po} holds a copy of @file{@var{input}.po} in which @emph{only} translator comments and the contents of @code{msgstr} strings have been recoded from the @code{IBM-PC} charset to pure @code{UTF-8}, without attempting conversion of end-of-lines. Machine generated comments and original @code{msgid} strings are not to be touched by this recoding. If @var{language} is not specified, @samp{c} is assumed. @end table @node Emacs, Debugging, Mixed, Invoking recode @section Using @code{recode} within Emacs The fact @code{recode} is a filter makes it quite easy to use from within GNU Emacs. For example, recoding the whole buffer from the @code{IBM-PC} charset to current charset (@w{@code{Latin-1}} on Unix) is easily done with: @example C-x h C-u M-| recode ibmpc RET @end example @noindent @samp{C-x h} selects the whole buffer, and @samp{C-u M-|} filters and replaces the current region through the given shell command. Here is another example, binding the keys @w{@samp{C-c T}} to the recoding of the current region from Easy French to @w{@code{Latin-1}} (on Unix) and the key @w{@samp{C-u C-c T}} from @w{@code{Latin-1}} (on Unix) to Easy French: @example (global-set-key "\C-cT" 'recode-texte) (defun recode-texte (flag) (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..txte" "txte")) t) (exchange-point-and-mark)) @end example @node Debugging, , Emacs, Invoking recode @section Debugging considerations It is our experience that when @code{recode} does not provide satisfying results, either @code{recode} was not called properly, correct results raised some doubts nevertheless, or files to recode were somewhat mangled. Genuine bugs are surely possible. Unless you already are a @code{recode} expert, it might be a good idea to quickly revisit the tutorial (@pxref{Tutorial}) or the prior sections in this chapter, to make sure that you properly formatted your recoding request. In the case you intended to use @code{recode} as a filter, make sure that you did not forget to redirect your standard input (through using the @kbd{<} symbol in the shell, say). Some @code{recode} false mysteries are also easily explained, @xref{Reversibility}. For the other cases, some investigation is needed. To illustrate how to proceed, let's presume that you want to recode the @file{nicepage} file, coded @code{UTF-8}, into @code{HTML}. The problem is that the command @samp{recode u8..h nicepage} yields: @example recode: Invalid input in step `UTF-8..ISO-10646-UCS-2' @end example One good trick is to use @code{recode} in filter mode instead of in file replacement mode, @xref{Synopsis}. Another good trick is to use the @samp{-v} option asking for a verbose description of the recoding steps. We could rewrite our recoding call as @samp{recode -v u8..h temporary recode -v ISO_10646-UCS-2..HTML_4.0 }, then @code{recode} might have done a bit more that you wanted. In this case, your input file was half-@code{UTF-8}, half-@code{HTML} already, that is, a mixed file (@pxref{Mixed}). There is a special @code{-d} switch for this case. So, your might be end up calling @samp{recode -fd nicepage}. Until you are quite sure that you accept overwriting your input file whatever what, I recommend that you stick with filter mode. If, after such experiments, you seriously think that the @code{recode} program does not behave properly, there might be a genuine bug in the program itself, in which case I invite you to to contribute a bug report, @xref{Contributing}. @node Library, Universal, Invoking recode, Top @chapter A recoding library @cindex recoding library The program named @code{recode} is just an application of its recoding library. The recoding library is available separately for other C programs. A good way to acquire some familiarity with the recoding library is to get acquainted with the @code{recode} program itself. To use the recoding library once it is installed, a C program needs to have a line: @example #include @end example @noindent near its beginning, and the user should have @samp{-lrecode} on the linking call, so modules from the recoding library are found. The library is still under development. As it stands, it contains four identifiable sets of routines: the outer level functions, the request level functions, the task level functions and the charset level functions. There are discussed in separate sections. For effectively using the recoding library in most applications, it should be rarely needed to study anything beyond the main initialisation function at outer level, and then, various functions at request level. @menu * Outer level:: Outer level functions * Request level:: Request level functions * Task level:: Task level functions * Charset level:: Charset level functions * Errors:: Handling errors @end menu @node Outer level, Request level, Library, Library @section Outer level functions @cindex outer level functions The outer level functions mainly prepare the whole recoding library for use, or do actions which are unrelated to specific recodings. Here is an example of a program which does not really make anything useful. @example @group #include #include const char *program_name; int main (int argc, char *const *argv) @{ program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (true); recode_delete_outer (outer); exit (0); @} @end group @end example @vindex RECODE_OUTER structure The header file @code{} declares an opaque @code{RECODE_OUTER} structure, which the programmer should use for allocating a variable in his program (let's assume the programmer is a male, here, no prejudice intended). This @samp{outer} variable is given as a first argument to all outer level functions. @cindex @code{stdbool.h} header @cindex @code{bool} data type The @code{} header file uses the Boolean type setup by the system header file @code{}. But this header file is still fairly new in C standards, and likely does not exist everywhere. If you system does not offer this system header file yet, the proper compilation of the @code{} file could be guaranteed through the replacement of the inclusion line by: @example typedef enum @{false = 0, true = 1@} bool; @end example People wanting wider portability, or Autoconf lovers, might arrange their @file{configure.in} for being able to write something more general, like: @example @group #if STDC_HEADERS # include #endif /* Some systems do not define EXIT_*, even with STDC_HEADERS. */ #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 #endif #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #endif /* The following test is to work around the gross typo in systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE is defined to 0, not 1. */ #if !EXIT_FAILURE # undef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #if HAVE_STDBOOL_H # include #else typedef enum @{false = 0, true = 1@} bool; #endif #include const char *program_name; int main (int argc, char *const *argv) @{ program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (true); recode_term_outer (outer); exit (EXIT_SUCCESS); @} @end group @end example @noindent but we will not insist on such details in the examples to come. @itemize @bullet @item Initialisation functions @cindex initialisation functions, outer @example RECODE_OUTER recode_new_outer (@var{auto_abort}); bool recode_delete_outer (@var{outer}); @end example @findex recode_new_outer @findex recode_delete_outer The recoding library absolutely needs to be initialised before being used, and @code{recode_new_outer} has to be called once, first. Besides the @var{outer} it is meant to initialise, the function accepts a Boolean argument whether or not the library should automatically issue diagnostics on standard and abort the whole program on errors. When @var{auto_abort} is @code{true}, the library later conveniently issues diagnostics itself, and aborts the calling program on errors. This is merely a convenience, because if this parameter was @code{false}, the calling program should always take care of checking the return value of all other calls to the recoding library functions, and when any error is detected, issue a diagnostic and abort processing itself. Regardless of the setting of @var{auto_abort}, all recoding library functions return a success status. Most functions are geared for returning @code{false} for an error, and @code{true} if everything went fine. Functions returning structures or strings return @code{NULL} instead of the result, when the result cannot be produced. If @var{auto_abort} is selected, functions either return @code{true}, or do not return at all. As in the example above, @code{recode_new_outer} is called only once in most cases. Calling @code{recode_new_outer} implies some overhead, so calling it more than once should preferably be avoided. The termination function @code{recode_delete_outer} reclaims the memory allocated by @code{recode_new_outer} for a given @var{outer} variable. Calling @code{recode_delete_outer} prior to program termination is more aesthetic then useful, as all memory resources are automatically reclaimed when the program ends. You may spare this terminating call if you prefer. @item The @code{program_name} declaration @cindex @code{program_name} variable As we just explained, the user may set the @code{recode} library so that, in case of problems error, it issues the diagnostic itself and aborts the whole processing. This capability may be quite convenient. When this feature is used, the aborting routine includes the name of the running program in the diagnostic. On the other hand, when this feature is not used, the library merely return error codes, giving the library user fuller control over all this. This behaviour is more like what usual libraries do: they return codes and never abort. However, I would rather not force library users to necessarily check all return codes themselves, by leaving no other choice. In most simple applications, letting the library diagnose and abort is much easier, and quite welcome. This is precisely because both possibilities exist that the @code{program_name} variable is needed: it may be used by the library @emph{when} the user sets it to diagnose itself. @end itemize @node Request level, Task level, Outer level, Library @section Request level functions @cindex request level functions The request level functions are meant to cover most recoding needs programmers may have; they should provide all usual functionality. Their API is almost stable by now. To get started with request level functions, here is a full example of a program which sole job is to filter @code{ibmpc} code on its standard input into @code{latin1} code on its standard output. @example @group #include #include #include const char *program_name; int main (int argc, char *const *argv) @{ program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (true); RECODE_REQUEST request = recode_new_request (outer); bool success; recode_scan_request (request, "ibmpc..latin1"); success = recode_file_to_file (request, stdin, stdout); recode_delete_request (request); recode_delete_outer (outer); exit (success ? 0 : 1); @} @end group @end example @vindex RECODE_REQUEST structure The header file @code{} declares a @code{RECODE_REQUEST} structure, which the programmer should use for allocating a variable in his program. This @var{request} variable is given as a first argument to all request level functions, and in most cases, may be considered as opaque. @itemize @bullet @item Initialisation functions @cindex initialisation functions, request @example RECODE_REQUEST recode_new_request (@var{outer}); bool recode_delete_request (@var{request}); @end example @findex recode_new_request @findex recode_delete_request No @var{request} variable may not be used in other request level functions of the recoding library before having been initialised by @code{recode_new_request}. There may be many such @var{request} variables, in which case, they are independent of one another and they all need to be initialised separately. To avoid memory leaks, a @var{request} variable should not be initialised a second time without calling @code{recode_delete_request} to ``un-initialise'' it. Like for @code{recode_delete_outer}, calling @code{recode_delete_request} prior to program termination, in the example above, may be left out. @item Fields of @code{struct recode_request} @vindex recode_request structure Here are the fields of a @code{struct recode_request} which may be meaningfully changed, once a @var{request} has been initialised by @code{recode_new_request}, but before it gets used. It is not very frequent, in practice, that these fields need to be changed. To access the fields, you need to include @file{recodext.h} @emph{instead} of @file{recode.h}, in which case there also is a greater chance that you need to recompile your programs if a new version of the recoding library gets installed. @table @code @item verbose_flag @vindex verbose_flag This field is initially @code{false}. When set to @code{true}, the library will echo to stderr the sequence of elementary recoding steps needed to achieve the requested recoding. @item diaeresis_char @vindex diaeresis_char This field is initially the ASCII value of a double quote @kbd{"}, but it may also be the ASCII value of a colon @kbd{:}. In @code{texte} charset, some countries use double quotes to mark diaeresis, while other countries prefer colons. This field contains the diaeresis character for the @code{texte} charset. @item make_header_flag @vindex make_header_flag This field is initially @code{false}. When set to @code{true}, it indicates that the program is merely trying to produce a recoding table in source form rather than completing any actual recoding. In such a case, the optimisation of step sequence can be attempted much more aggressively. If the step sequence cannot be reduced to a single step, table production will fail. @item diacritics_only @vindex diacritics_only This field is initially @code{false}. For @code{HTML} and @code{LaTeX} charset, it is often convenient to recode the diacriticized characters only, while just not recoding other HTML code using ampersands or angular brackets, or La@TeX{} code using backslashes. Set the field to @code{true} for getting this behaviour. In the other charset, one can edit text as well as HTML or La@TeX{} directives. @item ascii_graphics @vindex ascii_graphics This field is initially @code{false}, and relate to characters 176 to 223 in the @code{ibmpc} charset, which are use to draw boxes. When set to @code{true}, while getting out of @code{ibmpc}, ASCII characters are selected so to graphically approximate these boxes. @end table @item Study of request strings @example bool recode_scan_request (@var{request}, "@var{string}"); @end example @findex recode_scan_request The main role of a @var{request} variable is to describe a set of recoding transformations. Function @code{recode_scan_request} studies the given @var{string}, and stores an internal representation of it into @var{request}. Note that @var{string} may be a full-fledged @code{recode} request, possibly including surfaces specifications, intermediary charsets, sequences, aliases or abbreviations (@pxref{Requests}). The internal representation automatically receives some pre-conditioning and optimisation, so the @var{request} may then later be used many times to achieve many actual recodings. It would not be efficient calling @code{recode_scan_request} many times with the same @var{string}, it is better having many @var{request} variables instead. @item Actual recoding jobs Once the @var{request} variable holds the description of a recoding transformation, a few functions use it for achieving an actual recoding. Either input or output of a recoding may be string, an in-memory buffer, or a file. Functions with names like @code{recode_@var{input-type}_to_@var{output-type}} request an actual recoding, and are described below. It is easy to remember which arguments each function accepts, once grasped some simple principles for each possible @var{type}. However, one of the recoding function escapes these principles and is discussed separately, first. @example recode_string (@var{request}, @var{string}); @end example @findex recode_string The function @code{recode_string} recodes @var{string} according to @var{request}, and directly returns the resulting recoded string freshly allocated, or @code{NULL} if the recoding could not succeed for some reason. When this function is used, it is the responsibility of the programmer to ensure that the memory used by the returned string is later reclaimed. @findex recode_string_to_buffer @findex recode_string_to_file @findex recode_buffer_to_buffer @findex recode_buffer_to_file @findex recode_file_to_buffer @findex recode_file_to_file @example char *recode_string_to_buffer (@var{request}, @var{input_string}, &@var{output_buffer}, &@var{output_length}, &@var{output_allocated}); bool recode_string_to_file (@var{request}, @var{input_file}, @var{output_file}); bool recode_buffer_to_buffer (@var{request}, @var{input_buffer}, @var{input_length}, &@var{output_buffer}, &@var{output_length}, &@var{output_allocated}); bool recode_buffer_to_file (@var{request}, @var{input_buffer}, @var{input_length}, @var{output_file}); bool recode_file_to_buffer (@var{request}, @var{input_file}, &@var{output_buffer}, &@var{output_length}, &@var{output_allocated}); bool recode_file_to_file (@var{request}, @var{input_file}, @var{output_file}); @end example All these functions return a @code{bool} result, @code{false} meaning that the recoding was not successful, often because of reversibility issues. The name of the function well indicates on which types it reads and which type it produces. Let's discuss these three types in turn. @table @asis @item string A string is merely an in-memory buffer which is terminated by a @code{NUL} character (using as many bytes as needed), instead of being described by a byte length. For input, a pointer to the buffer is given through one argument. It is notable that there is no @code{to_string} functions. Only one function recodes into a string, and it is @code{recode_string}, which has already been discussed separately, above. @item buffer A buffer is a sequence of bytes held in computer memory. For input, two arguments provide a pointer to the start of the buffer and its byte size. Note that for charsets using many bytes per character, the size is given in bytes, not in characters. For output, three arguments provide the address of three variables, which will receive the buffer pointer, the used buffer size in bytes, and the allocated buffer size in bytes. If at the time of the call, the buffer pointer is @code{NULL}, then the allocated buffer size should also be zero, and the buffer will be allocated afresh by the recoding functions. However, if the buffer pointer is not @code{NULL}, it should be already allocated, the allocated buffer size then gives its size. If the allocated size gets exceeded while the recoding goes, the buffer will be automatically reallocated bigger, probably elsewhere, and the allocated buffer size will be adjusted accordingly. The second variable, giving the in-memory buffer size, will receive the exact byte size which was needed for the recoding. A @code{NUL} character is guaranteed at the end of the produced buffer, but is not counted in the byte size of the recoding. Beyond that @code{NUL}, there might be some extra space after the recoded data, extending to the allocated buffer size. @item file @findex recode_filter_open@r{, not available} @findex recode_filter_close@r{, not available} A file is a sequence of bytes held outside computer memory, but buffered through it. For input, one argument provides a pointer to a file already opened for read. The file is then read and recoded from its current position until the end of the file, effectively swallowing it in memory if the destination of the recoding is a buffer. For reading a file filtered through the recoding library, but only a little bit at a time, one should rather use @code{recode_filter_open} and @code{recode_filter_close} (these two functions are not yet available). For output, one argument provides a pointer to a file already opened for write. The result of the recoding is written to that file starting at its current position. @end table @end itemize @findex recode_format_table The following special function is still subject to change: @example void recode_format_table (@var{request}, @var{language}, "@var{name}"); @end example @noindent and is not documented anymore for now. @node Task level, Charset level, Request level, Library @section Task level functions @cindex task level functions The task level functions are used internally by the request level functions, they allow more explicit control over files and memory buffers holding input and output to recoding processes. The interface specification of task level functions is still subject to change a bit. To get started with task level functions, here is a full example of a program which sole job is to filter @code{ibmpc} code on its standard input into @code{latin1} code on its standard output. That is, this program has the same goal as the one from the previous section, but does its things a bit differently. @example @group #include #include #include const char *program_name; int main (int argc, char *const *argv) @{ program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (false); RECODE_REQUEST request = recode_new_request (outer); RECODE_TASK task; bool success; recode_scan_request (request, "ibmpc..latin1"); task = recode_new_task (request); task->input.file = ""; task->output.file = ""; success = recode_perform_task (task); recode_delete_task (task); recode_delete_request (request); recode_delete_outer (outer); exit (success ? 0 : 1); @} @end group @end example @vindex RECODE_TASK structure The header file @code{} declares a @code{RECODE_TASK} structure, which the programmer should use for allocating a variable in his program. This @code{task} variable is given as a first argument to all task level functions. The programmer ought to change and possibly consult a few fields in this structure, using special functions. @itemize @bullet @item Initialisation functions @cindex initialisation functions, task @findex recode_new_task @findex recode_delete_task @example RECODE_TASK recode_new_task (@var{request}); bool recode_delete_task (@var{task}); @end example No @var{task} variable may be used in other task level functions of the recoding library without having first been initialised with @code{recode_new_task}. There may be many such @var{task} variables, in which case, they are independent of one another and they all need to be initialised separately. To avoid memory leaks, a @var{task} variable should not be initialised a second time without calling @code{recode_delete_task} to ``un-initialise'' it. This function also accepts a @var{request} argument and associates the request to the task. In fact, a task is essentially a set of recoding transformations with the specification for its current input and its current output. The @var{request} variable may be scanned before or after the call to @code{recode_new_task}, it does not matter so far. Immediately after initialisation, before further changes, the @var{task} variable associates @var{request} empty in-memory buffers for both input and output. The output buffer will later get allocated automatically on the fly, as needed, by various task processors. Even if a call to @code{recode_delete_task} is not strictly mandatory before ending the program, it is cleaner to always include it. Moreover, in some future version of the recoding library, it might become required. @item Fields of @code{struct task_request} @vindex task_request structure Here are the fields of a @code{struct task_request} which may be meaningfully changed, once a @var{task} has been initialised by @code{recode_new_task}. In fact, fields are expected to change. Once again, to access the fields, you need to include @file{recodext.h} @emph{instead} of @file{recode.h}, in which case there also is a greater chance that you need to recompile your programs if a new version of the recoding library gets installed. @table @code @item request The field @code{request} points to the current recoding request, but may be changed as needed between recoding calls, for example when there is a need to achieve the construction of a resulting text made up of many pieces, each being recoded differently. @item input.name @itemx input.file If @code{input.name} is not @code{NULL} at start of a recoding, this is a request that a file by that name be first opened for reading and later automatically closed once the whole file has been read. If the file name is not @code{NULL} but an empty string, it means that standard input is to be used. The opened file pointer is then held into @code{input.file}. If @code{input.name} is @code{NULL} and @code{input.file} is not, than @code{input.file} should point to a file already opened for read, which is meant to be recoded. @item input.buffer @itemx input.cursor @itemx input.limit When both @code{input.name} and @code{input.file} are @code{NULL}, three pointers describe an in-memory buffer containing the text to be recoded. The buffer extends from @code{input.buffer} to @code{input.limit}, yet the text to be recoded only extends from @code{input.cursor} to @code{input.limit}. In most situations, @code{input.cursor} starts with the value that @code{input.buffer} has. (Its value will internally advance as the recoding goes, until it reaches the value of @code{input.limit}.) @item output.name @itemx output.file If @code{output.name} is not @code{NULL} at start of a recoding, this is a request that a file by that name be opened for write and later automatically closed after the recoding is done. If the file name is not @code{NULL} but an empty string, it means that standard output is to be used. The opened file pointer is then held into @code{output.file}. If several passes with intermediate files are needed to produce the recoding, the @code{output.name} file is opened only for the final pass. If @code{output.name} is @code{NULL} and @code{output.file} is not, then @code{output.file} should point to a file already opened for write, which will receive the result of the recoding. @item output.buffer @itemx output.cursor @itemx output.limit When both @code{output.name} and @code{output.file} are @code{NULL}, three pointers describe an in-memory buffer meant to receive the text, once it is recoded. The buffer is already allocated from @code{output.buffer} to @code{output.limit}. In most situations, @code{output.cursor} starts with the value that @code{output.buffer} has. Once the recoding is done, @code{output.cursor} will point at the next free byte in the buffer, just after the recoded text, so another recoding could be called without changing any of these three pointers, for appending new information to it. The number of recoded bytes in the buffer is the difference between @code{output.cursor} and @code{output.buffer}. Each time @code{output.cursor} reaches @code{output.limit}, the buffer is reallocated bigger, possibly at a different location in memory, always held up-to-date in @code{output.buffer}. It is still possible to call a task level function with no output buffer at all to start with, in which case all three fields should have @code{NULL} as a value. This is the situation immediately after a call to @code{recode_new_task}. @item strategy @vindex strategy @vindex RECODE_STRATEGY_UNDECIDED This field, which is of type @code{enum recode_sequence_strategy}, tells how various recoding steps (passes) will be interconnected. Its initial value is @code{RECODE_STRATEGY_UNDECIDED}, which is a constant defined in the header file @file{}. Other possible values are: @table @code @item RECODE_SEQUENCE_IN_MEMORY @vindex RECODE_SEQUENCE_IN_MEMORY Keep intermediate recodings in memory. @item RECODE_SEQUENCE_WITH_FILES @vindex RECODE_SEQUENCE_WITH_FILES Do not fork, use intermediate files. @item RECODE_SEQUENCE_WITH_PIPE @vindex RECODE_SEQUENCE_WITH_PIPE Fork processes connected with @code{pipe(2)}. @end table @c FIXME The best for now is to leave this field alone, and let the recoding library decide its strategy, as many combinations have not been tested yet. @item byte_order_mark @vindex byte_order_mark This field, which is preset to @code{true}, indicates that a byte order mark is to be expected at the beginning of any canonical @code{UCS-2} or @code{UTF-16} text, and that such a byte order mark should be also produced for these charsets. @item fail_level @vindex fail_level This field, which is of type @code{enum recode_error} (@pxref{Errors}), sets the error level at which task level functions should report a failure. If an error being detected is equal or greater than @code{fail_level}, the function will eventually return @code{false} instead of @code{true}. The preset value for this field is @code{RECODE_NOT_CANONICAL}, that means that if not reset to another value, the library will report failure on @emph{any} error. @item abort_level @vindex abort_level @vindex RECODE_MAXIMUM_ERROR This field, which is of type @code{enum recode_error} (@pxref{Errors}), sets the error level at which task level functions should immediately interrupt their processing. If an error being detected is equal or greater than @code{abort_level}, the function returns immediately, but the returned value (@code{true} or @code{false}) is still is decided from the setting of @code{fail_level}, not @code{abort_level}. The preset value for this field is @code{RECODE_MAXIMUM_ERROR}, that means that is not reset to another value, the library will never interrupt a recoding task. @item error_so_far @vindex error_so_far This field, which is of type @code{enum recode_error} (@pxref{Errors}), maintains the maximum error level met so far while the recoding task was proceeding. The preset value is @code{RECODE_NO_ERROR}. @end table @item Task execution @cindex task execution @findex recode_perform_task @findex recode_filter_open @findex recode_filter_close @example recode_perform_task (@var{task}); recode_filter_open (@var{task}, @var{file}); recode_filter_close (@var{task}); @end example The function @code{recode_perform_task} reads as much input as possible, and recode all of it on prescribed output, given a properly initialised @var{task}. Functions @code{recode_filter_open} and @code{recode_filter_close} are only planned for now. They are meant to read input in piecemeal ways. Even if functionality already exists informally in the library, it has not been made available yet through such interface functions. @end itemize @node Charset level, Errors, Task level, Library @section Charset level functions @cindex charset level functions @cindex internal functions Many functions are internal to the recoding library. Some of them have been made external and available, for the @code{recode} program had to retain all its previous functionality while being transformed into a mere application of the recoding library. These functions are not really documented here for the time being, as we hope that many of them will vanish over time. When this set of routines will stabilise, it would be convenient to document them as an API for handling charset names and contents. @findex find_charset @findex list_all_charsets @findex list_concise_charset @findex list_full_charset @example RECODE_CHARSET find_charset (@var{name}, @var{cleaning-type}); bool list_all_charsets (@var{charset}); bool list_concise_charset (@var{charset}, @var{list-format}); bool list_full_charset (@var{charset}); @end example @node Errors, , Charset level, Library @section Handling errors @cindex error handling @cindex handling errors @cindex error messages The @code{recode} program, while using the @code{recode} library, needs to control whether recoding problems are reported or not, and then reflect these in the exit status. The program should also instruct the library whether the recoding should be abruptly interrupted when an error is met (so sparing processing when it is known in advance that a wrong result would be discarded anyway), or if it should proceed nevertheless. Here is how the library groups errors into levels, listed here in order of increasing severity. @table @code @item RECODE_NO_ERROR @vindex RECODE_NO_ERROR No error was met on previous library calls. @item RECODE_NOT_CANONICAL @vindex RECODE_NOT_CANONICAL @cindex non canonical input, error message The input text was using one of the many alternative codings for some phenomenon, but not the one @code{recode} would have canonically generated. So, if the reverse recoding is later attempted, it would produce a text having the same @emph{meaning} as the original text, yet not being byte identical. For example, a @code{Base64} block in which end-of-lines appear elsewhere that at every 76 characters is not canonical. An e-circumflex in @TeX{} which is coded as @samp{\^@{e@}} instead of @samp{\^e} is not canonical. @item RECODE_AMBIGUOUS_OUTPUT @vindex RECODE_AMBIGUOUS_OUTPUT @cindex ambiguous output, error message It has been discovered that if the reverse recoding was attempted on the text output by this recoding, we would not obtain the original text, only because an ambiguity was generated by accident in the output text. This ambiguity would then cause the wrong interpretation to be taken. Here are a few examples. If the @code{Latin-1} sequence @samp{e^} is converted to Easy French and back, the result will be interpreted as e-circumflex and so, will not reflect the intent of the original two characters. Recoding an @code{IBM-PC} text to @code{Latin-1} and back, where the input text contained an isolated @kbd{LF}, will have a spurious @kbd{CR} inserted before the @kbd{LF}. Currently, there are many cases in the library where the production of ambiguous output is not properly detected, as it is sometimes a difficult problem to accomplish this detection, or to do it speedily. @item RECODE_UNTRANSLATABLE @vindex RECODE_UNTRANSLATABLE @cindex untranslatable input, error message One or more input character could not be recoded, because there is just no representation for this character in the output charset. Here are a few examples. Non-strict mode often allows @code{recode} to compute on-the-fly mappings for unrepresentable characters, but strict mode prohibits such attribution of reversible translations: so strict mode might often trigger such an error. Most @code{UCS-2} codes used to represent Asian characters cannot be expressed in various Latin charsets. @item RECODE_INVALID_INPUT @vindex RECODE_INVALID_INPUT @cindex invalid input, error message The input text does not comply with the coding it is declared to hold. So, there is no way by which a reverse recoding would reproduce this text, because @code{recode} should never produce invalid output. Here are a few examples. In strict mode, @code{ASCII} text is not allowed to contain characters with the eight bit set. @code{UTF-8} encodings ought to be minimal@footnote{The minimality of an @code{UTF-8} encoding is guaranteed on output, but currently, it is not checked on input.}. @item RECODE_SYSTEM_ERROR @vindex RECODE_SYSTEM_ERROR @cindex system detected problem, error message The underlying system reported an error while the recoding was going on, likely an input/output error. (This error symbol is currently unused in the library.) @item RECODE_USER_ERROR @vindex RECODE_USER_ERROR @cindex misuse of recoding library, error message The programmer or user requested something the recoding library is unable to provide, or used the API wrongly. (This error symbol is currently unused in the library.) @item RECODE_INTERNAL_ERROR @vindex RECODE_INTERNAL_ERROR @cindex internal recoding bug, error message Something really wrong, which should normally never happen, was detected within the recoding library. This might be due to genuine bugs in the library, or maybe due to un-initialised or overwritten arguments to the API. (This error symbol is currently unused in the library.) @item RECODE_MAXIMUM_ERROR @vindex RECODE_MAXIMUM_ERROR This error code should never be returned, it is only internally used as a sentinel for the list of all possible error codes. @end table @cindex error level threshold @cindex threshold for error reporting One should be able to set the error level threshold for returning failure at end of recoding, and also the threshold for immediate interruption. If many errors occur while the recoding proceed, which are not severe enough to interrupt the recoding, then the most severe error is retained, while others are forgotten@footnote{Another approach would have been to define the level symbols as masks instead, and to give masks to threshold setting routines, and to retain all errors---yet I never met myself such a need in practice, and so I fear it would be overkill. On the other hand, it might be interesting to maintain counters about how many times each kind of error occurred.}. So, in case of an error, the possible actions currently are: @itemize @bullet @item do nothing and let go, returning success at end of recoding, @item just let go for now, but return failure at end of recoding, @item interrupt recoding right away and return failure now. @end itemize @noindent @xref{Task level}, and particularly the description of the fields @code{fail_level}, @code{abort_level} and @code{error_so_far}, for more information about how errors are handled. @ignore @c FIXME: Take a look at these matters, indeed. A last topic around errors is where the error related fields are kept. To work nicely with threads, my feeling is that the main API levels (based on either of @code{struct recode_outer}, @code{struct recode_request} or @code{struct recode_task}) should each have their error thresholds, values, and last explicit message strings. Thresholds would be inherited by requests from outers, and by tasks from requests. Error values and strings would be automatically propagated out from tasks to requests, for these request level routines which internally set up and use recoding tasks. One simple way to avoid locking while sparing the initialisation of many identical requests, a programmer could prepare the common request before splitting threads, and merely @emph{copy} the @code{struct recode_request} so each thread has its own copy---either using a mere assignment or @code{memcpy}. The same could be said for @code{struct recode_outer} or @code{struct recode_task} blocks, yet it makes less sense to me to do so in practice. @end ignore @node Universal, libiconv, Library, Top @chapter The universal charset @cindex ISO 10646 Standard @w{ISO 10646} defines a universal character set, intended to encompass in the long run all languages written on this planet. It is based on wide characters, and offer possibilities for two billion characters (@math{2^31}). @tindex UCS This charset was to become available in @code{recode} under the name @code{UCS}, with many external surfaces for it. But in the current version, only surfaces of @code{UCS} are offered, each presented as a genuine charset rather than a surface. Such surfaces are only meaningful for the @code{UCS} charset, so it is not that useful to draw a line between the surfaces and the only charset to which they may apply. @tindex UTF-1 @code{UCS} stands for Universal Character Set. @code{UCS-2} and @code{UCS-4} are fixed length encodings, using two or four bytes per character respectively. @code{UTF} stands for @code{UCS} Transformation Format, and are variable length encodings dedicated to @code{UCS}. @code{UTF-1} was based on @w{ISO 2022}, it did not succeed@footnote{It is not probable that @code{recode} will ever support @code{UTF-1}.}. @code{UTF-2} replaced it, it has been called @code{UTF-FSS} (File System Safe) in Unicode or Plan9 context, but is better known today as @code{UTF-8}. To complete the picture, there is @code{UTF-16} based on 16 bits bytes, and @code{UTF-7} which is meant for transmissions limited to 7-bit bytes. Most often, one might see @code{UTF-8} used for external storage, and @code{UCS-2} used for internal storage. @c FIXME: the manual never explains what the U+NNNN notation means! When @code{recode} is producing any representation of @code{UCS}, it uses the replacement character @code{U+FFFD} for any @emph{valid} character which is not representable in the goal charset@footnote{This is when the goal charset allows for 16-bits. For shorter charsets, the @samp{--strict} (@samp{-s}) option decides what happens: either the character is dropped, or a reversible mapping is produced on the fly.}. This happens, for example, when @code{UCS-2} is not capable to echo a wide @code{UCS-4} character, or for a similar reason, an @code{UTF-8} sequence using more than three bytes. The replacement character is meant to represent an existing character. So, it is never produced to represent an invalid sequence or ill-formed character in the input text. In such cases, @code{recode} just gets rid of the noise, while taking note of the error in its usual ways. Even if @code{UTF-8} is an encoding, really, it is the encoding of a single character set, and nothing else. It is useful to distinguish between an encoding (a @emph{surface} within @code{recode}) and a charset, but only when the surface may be applied to several charsets. Specifying a charset is a bit simpler than specifying a surface in a @code{recode} request. There would not be a practical advantage at imposing a more complex syntax to @code{recode} users, when it is simple to assimilate @code{UTF-8} to a charset. Similar considerations apply for @code{UCS-2}, @code{UCS-4}, @code{UTF-16} and @code{UTF-7}. These are all considered to be charsets. @menu * UCS-2:: Universal Character Set, 2 bytes * UCS-4:: Universal Character Set, 4 bytes * UTF-7:: Universal Transformation Format, 7 bits * UTF-8:: Universal Transformation Format, 8 bits * UTF-16:: Universal Transformation Format, 16 bits * count-characters:: Frequency count of characters * dump-with-names:: Fully interpreted UCS dump @end menu @node UCS-2, UCS-4, Universal, Universal @section Universal Character Set, 2 bytes @tindex UCS-2 @cindex Unicode One surface of @code{UCS} is usable for the subset defined by its first sixty thousand characters (in fact, @math{31 * 2^11} codes), and uses exactly two bytes per character. It is a mere dump of the internal memory representation which is @emph{natural} for this subset and as such, conveys with it endianness problems. @cindex byte order mark A non-empty @code{UCS-2} file normally begins with a so called @dfn{byte order mark}, having value @code{0xFEFF}. The value @code{0xFFFE} is not an @code{UCS} character, so if this value is seen at the beginning of a file, @code{recode} reacts by swapping all pairs of bytes. The library also properly reacts to other occurrences of @code{0xFEFF} or @code{0xFFFE} elsewhere than at the beginning, because concatenation of @code{UCS-2} files should stay a simple matter, but it might trigger a diagnostic about non canonical input. By default, when producing an @code{UCS-2} file, @code{recode} always outputs the high order byte before the low order byte. But this could be easily overridden through the @code{21-Permutation} surface (@pxref{Permutations}). For example, the command: @example recode u8..u2/21 < @var{input} > @var{output} @end example @noindent asks for an @code{UTF-8} to @code{UCS-2} conversion, with swapped byte output. @tindex ISO-10646-UCS-2, and aliases @tindex BMP @tindex rune @tindex u2 Use @code{UCS-2} as a genuine charset. This charset is available in @code{recode} under the name @code{ISO-10646-UCS-2}. Accepted aliases are @code{UCS-2}, @code{BMP}, @code{rune} and @code{u2}. @tindex combined-UCS-2 @cindex combining characters The @code{recode} library is able to combine @code{UCS-2} some sequences of codes into single code characters, to represent a few diacriticized characters, ligatures or diphtongs which have been included to ease mapping with other existing charsets. It is also able to explode such single code characters into the corresponding sequence of codes. The request syntax for triggering such operations is rudimentary and temporary. The @code{combined-UCS-2} pseudo character set is a special form of @code{UCS-2} in which known combinings have been replaced by the simpler code. Using @code{combined-UCS-2} instead of @code{UCS-2} in an @emph{after} position of a request forces a combining step, while using @code{combined-UCS-2} instead of @code{UCS-2} in a @emph{before} position of a request forces an exploding step. For the time being, one has to resort to advanced request syntax to achieve other effects. For example: @example recode u8..co,u2..u8 < @var{input} > @var{output} @end example @noindent copies an @code{UTF-8} @var{input} over @var{output}, still to be in @code{UTF-8}, yet merging combining characters into single codes whenever possible. @node UCS-4, UTF-7, UCS-2, Universal @section Universal Character Set, 4 bytes @tindex UCS-4 Another surface of @code{UCS} uses exactly four bytes per character, and is a mere dump of the internal memory representation which is @emph{natural} for the whole charset and as such, conveys with it endianness problems. @tindex ISO-10646-UCS-4, and aliases @tindex ISO_10646 @tindex 10646 @tindex u4 Use it as a genuine charset. This charset is available in @code{recode} under the name @code{ISO-10646-UCS-4}. Accepted aliases are @code{UCS}, @code{UCS-4}, @code{ISO_10646}, @code{10646} and @code{u4}. @node UTF-7, UTF-8, UCS-4, Universal @section Universal Transformation Format, 7 bits @tindex UTF-7 @code{UTF-7} comes from IETF rather than ISO, and is described by @w{RFC 2152}, in the MIME series. The @code{UTF-7} encoding is meant to fit @code{UCS-2} over channels limited to seven bits per byte. It proceeds from a mix between the spirit of @code{Quoted-Printable} and methods of @code{Base64}, adapted to Unicode contexts. @tindex UNICODE-1-1-UTF-7, and aliases @tindex TF-7 @tindex u7 This charset is available in @code{recode} under the name @code{UNICODE-1-1-UTF-7}. Accepted aliases are @code{UTF-7}, @code{TF-7} and @code{u7}. @node UTF-8, UTF-16, UTF-7, Universal @section Universal Transformation Format, 8 bits @tindex UTF-8 Even if @code{UTF-8} does not originally come from IETF, there is now @w{RFC 2279} to describe it. In letters sent on 1995-01-21 and 1995-04-20, Markus Kuhn writes: @quotation @code{UTF-8} is an @code{ASCII} compatible multi-byte encoding of the @w{ISO 10646} universal character set (@code{UCS}). @code{UCS} is a 31-bit superset of all other character set standards. The first 256 characters of @code{UCS} are identical to those of @w{ISO 8859-1} (@w{Latin-1}). The @code{UCS-2} encoding of UCS is a sequence of bigendian 16-bit words, the @code{UCS-4} encoding is a sequence of bigendian 32-bit words. The @code{UCS-2} subset of @w{ISO 10646} is also known as ``Unicode''. As both @code{UCS-2} and @code{UCS-4} require heavy modifications to traditional @code{ASCII} oriented system designs (e.g. Unix), the @code{UTF-8} encoding has been designed for these applications. In @code{UTF-8}, only @code{ASCII} characters are encoded using bytes below 128. All other non-ASCII characters are encoded as multi-byte sequences consisting only of bytes in the range 128-253. This avoids critical bytes like @kbd{NUL} and @kbd{/} in @code{UTF-8} strings, which makes the @code{UTF-8} encoding suitable for being handled by the standard C string library and being used in Unix file names. Other properties include the preserved lexical sorting order and that @code{UTF-8} allows easy self-synchronisation of software receiving @code{UTF-8} strings. @end quotation @code{UTF-8} is the most common external surface of @code{UCS}, each character uses from one to six bytes, and is able to encode all @math{2^31} characters of the @code{UCS}. It is implemented as a charset, with the following properties: @itemize @bullet @item Strict 7-bit @code{ASCII} is completely invariant under @code{UTF-8}, and those are the only one-byte characters. @code{UCS} values and @code{ASCII} values coincide. No multi-byte characters ever contain bytes less than 128. @code{NUL} @emph{is} @code{NUL}. A multi-byte character always starts with a byte of 192 or more, and is always followed by a number of bytes between 128 to 191. That means that you may read at random on disk or memory, and easily discover the start of the current, next or previous character. You can count, skip or extract characters with this only knowledge. @item If you read the first byte of a multi-byte character in binary, it contains many @samp{1} bits in successions starting with the most significant one (from the left), at least two. The length of this @samp{1} sequence equals the byte size of the character. All succeeding bytes start by @samp{10}. This is a lot of redundancy, making it fairly easy to guess that a file is valid @code{UTF-8}, or to safely state that it is not. @item In a multi-byte character, if you remove all leading @samp{1} bits of the first byte of a multi-byte character, and the initial @samp{10} bits of all remaining bytes (so keeping 6 bits per byte for those), the remaining bits concatenated are the UCS value. @end itemize @noindent These properties also have a few nice consequences: @itemize @bullet @item Conversion to/from values is algorithmically simple, and reasonably speedy. @item A sequence of @var{N} bytes can hold characters needing up to 2 + 5@var{N} bits in their @code{UCS} representation. Here, @var{N} is a number between 1 and 6. So, @code{UTF-8} is most economical when mapping ASCII (1 byte), followed by @code{UCS-2} (1 to 3 bytes) and @code{UCS-4} (1 to 6 bytes). @item The lexicographic sorting order of @code{UCS} strings is preserved. @item Bytes with value 254 or 255 never appear, and because of that, these are sometimes used when escape mechanisms are needed. @end itemize In some case, when little processing is done on a lot of strings, one may choose for efficiency reasons to handle @code{UTF-8} strings directly even if variable length, as it is easy to get start of characters. Character insertion or replacement might require moving the remainder of the string in either direction. In most cases, it is faster and easier to convert from @code{UTF-8} to @code{UCS-2} or @code{UCS-4} prior to processing. @tindex UTF-8, aliases @tindex UTF-FSS @tindex FSS_UTF @tindex TF-8 @tindex u8 This charset is available in @code{recode} under the name @code{UTF-8}. Accepted aliases are @code{UTF-2}, @code{UTF-FSS}, @code{FSS_UTF}, @code{TF-8} and @code{u8}. @node UTF-16, count-characters, UTF-8, Universal @section Universal Transformation Format, 16 bits @tindex UTF-16, and aliases Another external surface of @code{UCS} is also variable length, each character using either two or four bytes. It is usable for the subset defined by the first million characters (@math{17 * 2^16}) of @code{UCS}. Martin J. D@"urst writes (to @uref{comp.std.internat}, on 1995-03-28): @quotation @code{UTF-16} is another method that reserves two times 1024 codepoints in Unicode and uses them to index around one million additional characters. @code{UTF-16} is a little bit like former multibyte codes, but quite not so, as both the first and the second 16-bit code clearly show what they are. The idea is that one million codepoints should be enough for all the rare Chinese ideograms and historical scripts that do not fit into the Base Multilingual Plane of @w{ISO 10646} (with just about 63,000 positions available, now that 2,000 are gone). @end quotation @tindex Unicode, an alias for UTF-16 @tindex TF-16 @tindex u6 This charset is available in @code{recode} under the name @code{UTF-16}. Accepted aliases are @code{Unicode}, @code{TF-16} and @code{u6}. @node count-characters, dump-with-names, UTF-16, Universal @section Frequency count of characters @tindex count-characters @cindex counting characters A device may be used to obtain a list of characters in a file, and how many times each character appears. Each count is followed by the @code{UCS-2} value of the character and, when known, the @w{RFC 1345} mnemonic for that character. This charset is available in @code{recode} under the name @code{count-characters}. This @code{count} feature has been implemented as a charset. This may change in some later version, as it would sometimes be convenient to count original bytes, instead of their @code{UCS-2} equivalent. @node dump-with-names, , count-characters, Universal @section Fully interpreted UCS dump @tindex dump-with-names @cindex dumping characters, with description @cindex character streams, description @cindex description of individual characters Another device may be used to get fully interpreted dumps of an @code{UCS-2} stream of characters, with one @code{UCS-2} character displayed on a full output line. Each line receives the @w{RFC 1345} mnemonic for the character if it exists, the @code{UCS-2} value of the character, and a descriptive comment for that character. As each input character produces its own output line, beware that the output file from this conversion may be much, much bigger than the input file. This charset is available in @code{recode} under the name @code{dump-with-names}. This @code{dump-with-names} feature has been implemented as a charset rather than a surface. This is surely debatable. The current implementation allows for dumping charsets other than @code{UCS-2}. For example, the command @w{@samp{recode l2..full < @var{input}}} implies a necessary conversion from @code{Latin-2} to @code{UCS-2}, as @code{dump-with-names} is only connected out from @code{UCS-2}. In such cases, @code{recode} does not display the original @code{Latin-2} codes in the dump, only the corresponding @code{UCS-2} values. To give a simpler example, the command @example echo 'Hello, world!' | recode us..dump @end example @noindent produces the following output: @example UCS2 Mne Description 0048 H latin capital letter h 0065 e latin small letter e 006C l latin small letter l 006C l latin small letter l 006F o latin small letter o 002C , comma 0020 SP space 0077 w latin small letter w 006F o latin small letter o 0072 r latin small letter r 006C l latin small letter l 0064 d latin small letter d 0021 ! exclamation mark 000A LF line feed (lf) @end example The descriptive comment is given in English and @code{ASCII}, yet if the English description is not available but a French one is, then the French description is given instead, using @code{Latin-1}. However, if the @code{LANGUAGE} or @code{LANG} environment variable begins with the letters @samp{fr}, then listing preference goes to French when both descriptions are available. Here is another example. To get the long description of the code 237 in @w{Latin-5} table, one may use the following command. @example echo -n 237 | recode l5/d..dump @end example @noindent If your @code{echo} does not grok @samp{-n}, use @samp{echo 237\c} instead. Here is how to see what Unicode @code{U+03C6} means, while getting rid of the title lines. @example echo -n 0x03C6 | recode u2/x2..dump | tail +3 @end example @node libiconv, Tabular, Universal, Top @chapter The @code{iconv} library @cindex @code{iconv} library @cindex library, @code{iconv} @cindex @code{libiconv} @cindex interface, with @code{iconv} library @cindex Haible, Bruno The @code{recode} library itself contains most code and tables from the portable @code{iconv} library, written by Bruno Haible. In fact, many capabilities of the @code{recode} library are duplicated because of this merging, as the older @code{recode} and @code{iconv} libraries share many charsets. We discuss, here, the issues related to this duplication, and other peculiarities specific to the @code{iconv} library. The plan is to remove duplications and better merge specificities, as @code{recode} evolves. As implemented, if a recoding request can be satisfied by the @code{recode} library both with and without its @code{iconv} library part, it is likely that the @code{iconv} library will be used. To sort out if the @code{iconv} is indeed used of not, just use the @samp{-v} or @samp{--verbose} option, @pxref{Recoding}. @tindex libiconv The @code{:libiconv:} charset represents a conceptual pivot charset within the @code{iconv} part of the @code{recode} library (in fact, this pivot exists, but is not directly reachable). This charset has a mere @code{:} (a colon) for an alias. It is not allowed to recode from or to this charset directly. But when this charset is selected as an intermediate, usually by automatic means, then the @code{iconv} part of the @code{recode} library is called to handle the transformations. By using an @samp{--ignore=:libiconv:} option on the @code{recode} call or equivalently, but more simply, @samp{-x:}, @code{recode} is instructed to fully avoid this charset as an intermediate, with the consequence that the @code{iconv} part of the library is defeated. Consider these two calls: @example recode l1..1250 < @var{input} > @var{output} recode -x: l1..1250 < @var{input} > @var{output} @end example @noindent Both should transform @var{input} from @code{ISO-8859-1} to @code{CP1250} on @var{output}. The first call uses the @code{iconv} part of the library, while the second call avoids it. Whatever the path used, the results should normally be identical. However, there might be observable differences. Most of them might result from reversibility issues, as the @code{iconv} engine, which the @code{recode} library directly uses for the time being, does not address reversibility. Even if much less likely, some differences might result from slight errors in the tables used, such differences should then be reported as bugs. Other irregularities might be seen in the area of error detection and recovery. The @code{recode} library usually tries to detect canonicity errors in input, and production of ambiguous output, but the @code{iconv} part of the library currently does not. Input is always validated, however. The @code{recode} library may not always react properly when its @code{iconv} part has no translation for a given character. Within a collection of names for a single charset, the @code{recode} library distinguishes one of them as being the genuine charset name, while the others are said to be aliases. When @code{recode} lists all charsets, for example with the @samp{-l} or @samp{--list} option, the list integrates all @code{iconv} library charsets. The selection of one of the aliases as the genuine charset name is an artifact added by @code{recode}, it does not come from @code{iconv}. Moreover, the @code{recode} library dynamically resolves some conflicts when it initialises itself at runtime. This might explain some discrepancies in the table below, as for what is the genuine charset name. @include libiconv.texi @node Tabular, ASCII misc, libiconv, Top @chapter Tabular sources (@w{RFC 1345}) @cindex RFC 1345 @cindex character mnemonics, documentation @cindex @code{chset} tools An important part of the tabular charset knowledge in @code{recode} comes from @w{RFC 1345} or, alternatively, from the @code{chset} tools, both maintained by Keld Simonsen. The @w{RFC 1345} document: @quotation ``Character Mnemonics & Character Sets'', K. Simonsen, Request for Comments no. 1345, Network Working Group, June 1992. @end quotation @noindent @cindex deviations from RFC 1345 defines many character mnemonics and character sets. The @code{recode} library implements most of @w{RFC 1345}, however: @itemize @bullet @item @tindex dk-us@r{, not recognised by }recode @tindex us-dk@r{, not recognised by }recode It does not recognise those charsets which overload character positions: @code{dk-us} and @code{us-dk}. However, @xref{Mixed}. @item @tindex ANSI_X3.110-1983@r{, not recognised by }recode @tindex ISO_6937-2-add@r{, not recognised by }recode @tindex T.101-G2@r{, not recognised by }recode @tindex T.61-8bit@r{, not recognised by }recode @tindex iso-ir-90@r{, not recognised by }recode It does not recognise those charsets which combine two characters for representing a third: @code{ANSI_X3.110-1983}, @code{ISO_6937-2-add}, @code{T.101-G2}, @code{T.61-8bit}, @code{iso-ir-90} and @code{videotex-suppl}. @item @tindex GB_2312-80@r{, not recognised by }recode @tindex JIS_C6226-1978@r{, not recognised by }recode @tindex JIS_X0212-1990@r{, not recognised by }recode @tindex KS_C_5601-1987@r{, not recognised by }recode It does not recognise 16-bits charsets: @code{GB_2312-80}, @code{JIS_C6226-1978}, @code{JIS_C6226-1983}, @code{JIS_X0212-1990} and @code{KS_C_5601-1987}. @item @tindex isoir91 @tindex isoir92 It interprets the charset @code{isoir91} as @code{NATS-DANO} (alias @code{iso-ir-9-1}), @emph{not} as @code{JIS_C6229-1984-a} (alias @code{iso-ir-91}). It also interprets the charset @code{isoir92} as @code{NATS-DANO-ADD} (alias @code{iso-ir-9-2}), @emph{not} as @code{JIS_C6229-1984-b} (alias @code{iso-ir-92}). It might be better just avoiding these two alias names. @end itemize Keld Simonsen @email{keld@@dkuug.dk} did most of @w{RFC 1345} himself, with some funding from Danish Standards and Nordic standards (INSTA) project. He also did the character set design work, with substantial input from Olle Jaernefors. Keld typed in almost all of the tables, some have been contributed. A number of people have checked the tables in various ways. The RFC lists a number of people who helped. @cindex @code{recode}, and RFC 1345 Keld and the @code{recode} maintainer have an arrangement by which any new discovered information submitted by @code{recode} users, about tabular charsets, is forwarded to Keld, eventually merged into Keld's work, and only then, reimported into @code{recode}. Neither the @code{recode} program nor its library try to compete, nor even establish themselves as an alternate or diverging reference: @w{RFC 1345} and its new drafts stay the genuine source for most tabular information conveyed by @code{recode}. Keld has been more than collaborative so far, so there is no reason that we act otherwise. In a word, @code{recode} should be perceived as the application of external references, but not as a reference in itself. @tindex RFC1345@r{, a charset, and its aliases} @tindex 1345 @tindex mnemonic@r{, an alias for RFC1345 charset} Internally, @w{RFC 1345} associates which each character an unambiguous mnemonic of a few characters, taken from @w{ISO 646}, which is a minimal ASCII subset of 83 characters. The charset made up by these mnemonics is available in @code{recode} under the name @code{RFC1345}. It has @code{mnemonic} and @code{1345} for aliases. As implemened, this charset exactly corresponds to @code{mnemonic+ascii+38}, using @w{RFC 1345} nomenclature. Roughly said, @w{ISO 646} characters represent themselves, except for the ampersand (@kbd{&}) which appears doubled. A prefix of a single ampersand introduces a mnemonic. For mnemonics using two characters, the prefix is immediately by the mnemonic. For longer mnemonics, the prefix is followed by an underline (@kbd{_}), the mmemonic, and another underline. Conversions to this charset are usually reversible. Currently, @code{recode} does not offer any of the many other possible variations of this family of representations. They will likely be implemented in some future version, however. @table @code @include rfc1345.texi @end table @node ASCII misc, IBM and MS, Tabular, Top @chapter ASCII and some derivatives @menu * ASCII:: Usual ASCII * ISO 8859:: ASCII extended by Latin Alphabets * ASCII-BS:: ASCII 7-bits, @kbd{BS} to overstrike * flat:: ASCII without diacritics nor underline @end menu @node ASCII, ISO 8859, ASCII misc, ASCII misc @section Usual ASCII @tindex ASCII@r{, an alias for the }ANSI_X3.4-1968@r{ charset} @tindex ANSI_X3.4-1968@r{, and its aliases} @tindex IBM367 @tindex US-ASCII @tindex cp367 @tindex iso-ir-6 @tindex us This charset is available in @code{recode} under the name @code{ASCII}. In fact, it's true name is @code{ANSI_X3.4-1968} as per @w{RFC 1345}, accepted aliases being @code{ANSI_X3.4-1986}, @code{ASCII}, @code{IBM367}, @code{ISO646-US}, @code{ISO_646.irv:1991}, @code{US-ASCII}, @code{cp367}, @code{iso-ir-6} and @code{us}. The shortest way of specifying it in @code{recode} is @code{us}. @cindex ASCII table, recreating with @code{recode} This documentation used to include ASCII tables. They have been removed since the @code{recode} program can now recreate these easily: @example recode -lf us for commented ASCII recode -ld us for concise decimal table recode -lo us for concise octal table recode -lh us for concise hexadecimal table @end example @node ISO 8859, ASCII-BS, ASCII, ASCII misc @section ASCII extended by Latin Alphabets @cindex Latin charsets There are many Latin charsets. The following has been written by Tim Lasko @email{lasko@@video.dec.com}, a long while ago: @quotation ISO @w{Latin-1}, or more completely ISO Latin Alphabet No 1, is now an international standard as of February 1987 (IS 8859, Part 1). For those American USEnet'rs that care, the 8-bit ASCII standard, which is essentially the same code, is going through the final administrative processes prior to publication. ISO @w{Latin-1} (IS 8859/1) is actually one of an entire family of eight-bit one-byte character sets, all having ASCII on the left hand side, and with varying repertoires on the right hand side: @itemize @bullet @item Latin Alphabet No 1 (caters to Western Europe - now approved). @item Latin Alphabet No 2 (caters to Eastern Europe - now approved). @item Latin Alphabet No 3 (caters to SE Europe + others - in draft ballot). @item Latin Alphabet No 4 (caters to Northern Europe - in draft ballot). @item Latin-Cyrillic alphabet (right half all Cyrillic - processing currently suspended pending USSR input). @item Latin-Arabic alphabet (right half all Arabic - now approved). @item Latin-Greek alphabet (right half Greek + symbols - in draft ballot). @item Latin-Hebrew alphabet (right half Hebrew + symbols - proposed). @end itemize @end quotation @tindex Latin-1 The ISO Latin Alphabet 1 is available as a charset in @code{recode} under the name @code{Latin-1}. In fact, it's true name is @code{ISO_8859-1:1987} as per @w{RFC 1345}, accepted aliases being @code{CP819}, @code{IBM819}, @code{ISO-8859-1}, @code{ISO_8859-1}, @code{iso-ir-100}, @code{l1} and @code{Latin-1}. The shortest way of specifying it in @code{recode} is @code{l1}. @cindex Latin-1 table, recreating with @code{recode} It is an eight-bit code which coincides with ASCII for the lower half. This documentation used to include @w{Latin-1} tables. They have been removed since the @code{recode} program can now recreate these easily: @example recode -lf l1 for commented ISO Latin-1 recode -ld l1 for concise decimal table recode -lo l1 for concise octal table recode -lh l1 for concise hexadecimal table @end example @node ASCII-BS, flat, ISO 8859, ASCII misc @section ASCII 7-bits, @kbd{BS} to overstrike @tindex ASCII-BS@r{, and its aliases} @tindex BS@r{, an alias for }ASCII-BS@r{ charset} This charset is available in @code{recode} under the name @code{ASCII-BS}, with @code{BS} as an acceptable alias. @cindex diacritics, with @code{ASCII-BS} charset The file is straight ASCII, seven bits only. According to the definition of ASCII, diacritics are applied by a sequence of three characters: the letter, one @kbd{BS}, the diacritic mark. We deviate slightly from this by exchanging the diacritic mark and the letter so, on a screen device, the diacritic will disappear and let the letter alone. At recognition time, both methods are acceptable. The French quotes are coded by the sequences: @w{@kbd{< BS "}} or @w{@kbd{" BS <}} for the opening quote and @w{@kbd{> BS "}} or @w{@kbd{" BS >}} for the closing quote. This artificial convention was inherited in straight @code{ASCII-BS} from habits around @code{Bang-Bang} entry, and is not well known. But we decided to stick to it so that @code{ASCII-BS} charset will not lose French quotes. The @code{ASCII-BS} charset is independent of @code{ASCII}, and different. The following examples demonstrate this, knowing at advance that @samp{!2} is the @code{Bang-Bang} way of representing an @kbd{e} with an acute accent. Compare: @example % echo \!2 | recode -v bang..l1/d Request: Bang-Bang..ISO-8859-1/Decimal-1 233, 10 @end example @noindent with: @example % echo \!2 | recode -v bang..bs/d Request: Bang-Bang..ISO-8859-1..ASCII-BS/Decimal-1 39, 8, 101, 10 @end example In the first case, the @kbd{e} with an acute accent is merely transmitted by the @code{Latin-1..ASCII} mapping, not having a special recoding rule for it. In the @code{Latin-1..ASCII-BS} case, the acute accent is applied over the @kbd{e} with a backspace: diacriticised characters have special rules. For the @code{ASCII-BS} charset, reversibility is still possible, but there might be difficult cases. @node flat, , ASCII-BS, ASCII misc @section ASCII without diacritics nor underline @tindex flat@r{, a charset} This charset is available in @code{recode} under the name @code{flat}. @cindex diacritics and underlines, removing @cindex removing diacritics and underlines This code is ASCII expunged of all diacritics and underlines, as long as they are applied using three character sequences, with @kbd{BS} in the middle. Also, despite slightly unrelated, each control character is represented by a sequence of two or three graphic characters. The newline character, however, keeps its functionality and is not represented. Note that charset @code{flat} is a terminal charset. We can convert @emph{to} @code{flat}, but not @emph{from} it. @node IBM and MS, CDC, ASCII misc, Top @chapter Some IBM or Microsoft charsets @cindex IBM codepages @cindex codepages The @code{recode} program provides various IBM or Microsoft code pages (@pxref{Tabular}). An easy way to find them all at once out of the @code{recode} program itself is through the command: @example recode -l | egrep -i '(CP|IBM)[0-9]' @end example @noindent But also, see few special charsets presented in the incoming sections. @menu * EBCDIC:: EBCDIC codes * IBM-PC:: IBM's PC code * Icon-QNX:: Unisys' Icon code @end menu @node EBCDIC, IBM-PC, IBM and MS, IBM and MS @section EBCDIC code @cindex EBCDIC charsets This charset is the IBM's External Binary Coded Decimal for Interchange Coding. This is an eight bits code. The following three variants were implemented in @code{recode} independently of @w{RFC 1345}: @table @code @item EBCDIC @tindex EBCDIC@r{, a charset} In @code{recode}, the @code{us..ebcdic} conversion is identical to @samp{dd conv=ebcdic} conversion, and @code{recode} @code{ebcdic..us} conversion is identical to @samp{dd conv=ascii} conversion. This charset also represents the way Control Data Corporation relates EBCDIC to 8-bits ASCII. @item EBCDIC-CCC @tindex EBCDIC-CCC In @code{recode}, the @code{us..ebcdic-ccc} or @code{ebcdic-ccc..us} conversions represent the way Concurrent Computer Corporation (formerly Perkin Elmer) relates EBCDIC to 8-bits ASCII. @item EBCDIC-IBM @tindex EBCDIC-IBM In @code{recode}, the @code{us..ebcdic-ibm} conversion is @emph{almost} identical to the GNU @samp{dd conv=ibm} conversion. Given the exact @samp{dd conv=ibm} conversion table, @code{recode} once said: @example Codes 91 and 213 both recode to 173 Codes 93 and 229 both recode to 189 No character recodes to 74 No character recodes to 106 @end example So I arbitrarily chose to recode 213 by 74 and 229 by 106. This makes the @code{EBCDIC-IBM} recoding reversible, but this is not necessarily the best correction. In any case, I think that GNU @code{dd} should be amended. @code{dd} and @code{recode} should ideally agree on the same correction. So, this table might change once again. @end table @w{RFC 1345} brings into @code{recode} 15 other EBCDIC charsets, and 21 other charsets having EBCDIC in at least one of their alias names. You can get a list of all these by executing: @example recode -l | grep -i ebcdic @end example Note that @code{recode} may convert a pure stream of EBCDIC characters, but it does not know how to handle binary data between records which is sometimes used to delimit them and build physical blocks. If end of lines are not marked, fixed record size may produce something readable, but @code{VB} or @code{VBS} blocking is likely to yield some garbage in the converted results. @node IBM-PC, Icon-QNX, EBCDIC, IBM and MS @section IBM's PC code @tindex IBM-PC @cindex MS-DOS charsets @tindex MSDOS @tindex dos @tindex pc This charset is available in @code{recode} under the name @code{IBM-PC}, with @code{dos}, @code{MSDOS} and @code{pc} as acceptable aliases. The shortest way of specifying it in @code{recode} is @code{pc}. The charset is aimed towards a PC microcomputer from IBM or any compatible. This is an eight-bit code. This charset is fairly old in @code{recode}, its tables were produced a long while ago by mere inspection of a printed chart of the IBM-PC codes and glyph. It has @code{CR-LF} as its implied surface. This means that, if the original end of lines have to be preserved while going out of @code{IBM-PC}, they should currently be added back through the usage of a surface on the other charset, or better, just never removed. Here are examples for both cases: @example recode pc..l2/cl < @var{input} > @var{output} recode pc/..l2 < @var{input} > @var{output} @end example @w{RFC 1345} brings into @code{recode} 44 @samp{IBM} charsets or code pages, and also 8 other code pages. You can get a list of these all these by executing:@footnote{On DOS/Windows, stock shells do not know that apostrophes quote special characters like @kbd{|}, so one need to use double quotes instead of apostrophes.} @example recode -l | egrep -i '(CP|IBM)[0-9]' @end example @noindent @cindex CR-LF surface, in IBM-PC charsets @tindex IBM819@r{, and CR-LF surface} All charset or aliases beginning with letters @samp{CP} or @samp{IBM} also have @code{CR-LF} as their implied surface. The same is true for a purely numeric alias in the same family. For example, all of @code{819}, @code{CP819} and @code{IBM819} imply @code{CR-LF} as a surface. Note that @code{ISO-8859-1} does @emph{not} imply a surface, despite it shares the same tabular data as @code{819}. @tindex ibm437 There are a few discrepancies between this @code{IBM-PC} charset and the very similar @w{RFC 1345} charset @code{ibm437}, which have not been analysed yet, so the charsets are being kept separate for now. This might change in the future, and the @code{IBM-PC} charset might disappear. Wizards would be interested in comparing the output of these two commands: @example recode -vh IBM-PC..Latin-1 recode -vh IBM437..Latin-1 @end example @noindent The first command uses the charset prior to @w{RFC 1345} introduction. Both methods give different recodings. These differences are annoying, the fuzziness will have to be explained and settle down one day. @node Icon-QNX, , IBM-PC, IBM and MS @section Unisys' Icon code @tindex Icon-QNX@r{, and aliases} @tindex QNX@r{, an alias for a charset} This charset is available in @code{recode} under the name @code{Icon-QNX}, with @code{QNX} as an acceptable alias. The file is using Unisys' Icon way to represent diacritics with code 25 escape sequences, under the system QNX. This is a seven-bit code, even if eight-bit codes can flow through as part of IBM-PC charset. @node CDC, Micros, IBM and MS, Top @chapter Charsets for CDC machines @cindex CDC charsets @cindex charsets for CDC machines What is now @code{recode} evolved out, through many transformations really, from a set of programs which were originally written in @dfn{COMPASS}, Control Data Corporation's assembler, with bits in FORTRAN, and later rewritten in CDC 6000 Pascal. The CDC heritage shows by the fact some old CDC charsets are still supported. The @code{recode} author used to be familiar with CDC Scope-NOS/BE and Kronos-NOS, and many CDC formats. Reading CDC tapes directly on other machines is often a challenge, and @code{recode} does not always solve it. It helps having tapes created in coded mode instead of binary mode, and using @code{S} (Stranger) tapes instead of @code{I} (Internal) tapes. ANSI labels and multi-file tapes might be the source of trouble. There are ways to handle a few Cyber Record Manager formats, but some of them might be quite difficult to decode properly after the transfer is done. The @code{recode} program is usable only for a small subset of NOS text formats, and surely not with binary textual formats, like @code{UPDATE} or @code{MODIFY} sources, for example. @code{recode} is not especially suited for reading 8/12 or 56/60 packing, yet this could easily arranged if there was a demand for it. It does not have the ability to translate Display Code directly, as the ASCII conversion implied by tape drivers or FTP does the initial approximation. @code{recode} can decode 6/12 caret notation over Display Code already mapped to ASCII. @menu * Display Code:: Control Data's Display Code * CDC-NOS:: ASCII 6/12 from NOS * Bang-Bang:: ASCII ``bang bang'' @end menu @node Display Code, CDC-NOS, CDC, CDC @section Control Data's Display Code @cindex CDC Display Code, a table This code is not available in @code{recode}, but repeated here for reference. This is a 6-bit code used on CDC mainframes. @example Octal display code to graphic Octal display code to octal ASCII 00 : 20 P 40 5 60 # 00 072 20 120 40 065 60 043 01 A 21 Q 41 6 61 [ 01 101 21 121 41 066 61 133 02 B 22 R 42 7 62 ] 02 102 22 122 42 067 62 135 03 C 23 S 43 8 63 % 03 103 23 123 43 070 63 045 04 D 24 T 44 9 64 " 04 104 24 124 44 071 64 042 05 E 25 U 45 + 65 _ 05 105 25 125 45 053 65 137 06 F 26 V 46 - 66 ! 06 106 26 126 46 055 66 041 07 G 27 W 47 * 67 & 07 107 27 127 47 052 67 046 10 H 30 X 50 / 70 ' 10 110 30 130 50 057 70 047 11 I 31 Y 51 ( 71 ? 11 111 31 131 51 050 71 077 12 J 32 Z 52 ) 72 < 12 112 32 132 52 051 72 074 13 K 33 0 53 $ 73 > 13 113 33 060 53 044 73 076 14 L 34 1 54 = 74 @@ 14 114 34 061 54 075 74 100 15 M 35 2 55 75 \ 15 115 35 062 55 040 75 134 16 N 36 3 56 , 76 ^ 16 116 36 063 56 054 76 136 17 O 37 4 57 . 77 ; 17 117 37 064 57 056 77 073 @end example In older times, @kbd{:} used octal 63, and octal 0 was not a character. The table above shows the ASCII glyph interpretation of codes 60 to 77, yet these 16 codes were once defined differently. There is no explicit end of line in Display Code, and the Cyber Record Manager introduced many new ways to represent them, the traditional end of lines being reachable by setting @code{RT} to @samp{Z}. If 6-bit bytes in a file are sequentially counted from 1, a traditional end of line does exist if bytes 10*@var{n}+9 and 10@var{n}+10 are both zero for a given @var{n}, in which case these two bytes are not to be interpreted as @kbd{::}. Also, up to 9 immediately preceeding zero bytes, going backward, are to be considered as part of the end of line and not interpreted as @kbd{:}@footnote{This convention replaced an older one saying that up to 4 immediately preceeding @emph{pairs} of zero bytes, going backward, are to be considered as part of the end of line and not interpreted as @kbd{::}.}. @node CDC-NOS, Bang-Bang, Display Code, CDC @section ASCII 6/12 from NOS @tindex CDC-NOS@r{, and its aliases} @tindex NOS This charset is available in @code{recode} under the name @code{CDC-NOS}, with @code{NOS} as an acceptable alias. @cindex NOS 6/12 code @cindex caret ASCII code This is one of the charsets in use on CDC Cyber NOS systems to represent ASCII, sometimes named @dfn{NOS 6/12} code for coding ASCII. This code is also known as @dfn{caret ASCII}. It is based on a six bits character set in which small letters and control characters are coded using a @kbd{^} escape and, sometimes, a @kbd{@@} escape. The routines given here presume that the six bits code is already expressed in ASCII by the communication channel, with embedded ASCII @kbd{^} and @kbd{@@} escapes. Here is a table showing which characters are being used to encode each ASCII character. @example 000 ^5 020 ^# 040 060 0 100 @@A 120 P 140 @@G 160 ^P 001 ^6 021 ^[ 041 ! 061 1 101 A 121 Q 141 ^A 161 ^Q 002 ^7 022 ^] 042 " 062 2 102 B 122 R 142 ^B 162 ^R 003 ^8 023 ^% 043 # 063 3 103 C 123 S 143 ^C 163 ^S 004 ^9 024 ^" 044 $ 064 4 104 D 124 T 144 ^D 164 ^T 005 ^+ 025 ^_ 045 % 065 5 105 E 125 U 145 ^E 165 ^U 006 ^- 026 ^! 046 & 066 6 106 F 126 V 146 ^F 166 ^V 007 ^* 027 ^& 047 ' 067 7 107 G 127 W 147 ^G 167 ^W 010 ^/ 030 ^' 050 ( 070 8 110 H 130 X 150 ^H 170 ^X 011 ^( 031 ^? 051 ) 071 9 111 I 131 Y 151 ^I 171 ^Y 012 ^) 032 ^< 052 * 072 @@D 112 J 132 Z 152 ^J 172 ^Z 013 ^$ 033 ^> 053 + 073 ; 113 K 133 [ 153 ^K 173 ^0 014 ^= 034 ^@@ 054 , 074 < 114 L 134 \ 154 ^L 174 ^1 015 ^ 035 ^\ 055 - 075 = 115 M 135 ] 155 ^M 175 ^2 016 ^, 036 ^^ 056 . 076 > 116 N 136 @@B 156 ^N 176 ^3 017 ^. 037 ^; 057 / 077 ? 117 O 137 _ 157 ^O 177 ^4 @end example @node Bang-Bang, , CDC-NOS, CDC @section ASCII ``bang bang'' @tindex Bang-Bang This charset is available in @code{recode} under the name @code{Bang-Bang}. This code, in use on Cybers at Universit@'e de Montr@'eal mainly, served to code a lot of French texts. The original name of this charset is @dfn{ASCII cod@'e Display}. This code is also known as @dfn{Bang-bang}. It is based on a six bits character set in which capitals, French diacritics and a few others are coded using an @kbd{!} escape followed by a single character, and control characters using a double @kbd{!} escape followed by a single character. The routines given here presume that the six bits code is already expressed in ASCII by the communication channel, with embedded ASCII @kbd{!} escapes. Here is a table showing which characters are being used to encode each ASCII character. @example 000 !!@@ 020 !!P 040 060 0 100 @@ 120 !P 140 !@@ 160 P 001 !!A 021 !!Q 041 !" 061 1 101 !A 121 !Q 141 A 161 Q 002 !!B 022 !!R 042 " 062 2 102 !B 122 !R 142 B 162 R 003 !!C 023 !!S 043 # 063 3 103 !C 123 !S 143 C 163 S 004 !!D 024 !!T 044 $ 064 4 104 !D 124 !T 144 D 164 T 005 !!E 025 !!U 045 % 065 5 105 !E 125 !U 145 E 165 U 006 !!F 026 !!V 046 & 066 6 106 !F 126 !V 146 F 166 V 007 !!G 027 !!W 047 ' 067 7 107 !G 127 !W 147 G 167 W 010 !!H 030 !!X 050 ( 070 8 110 !H 130 !X 150 H 170 X 011 !!I 031 !!Y 051 ) 071 9 111 !I 131 !Y 151 I 171 Y 012 !!J 032 !!Z 052 * 072 : 112 !J 132 !Z 152 J 172 Z 013 !!K 033 !![ 053 + 073 ; 113 !K 133 [ 153 K 173 ![ 014 !!L 034 !!\ 054 , 074 < 114 !L 134 \ 154 L 174 !\ 015 !!M 035 !!] 055 - 075 = 115 !M 135 ] 155 M 175 !] 016 !!N 036 !!^ 056 . 076 > 116 !N 136 ^ 156 N 176 !^ 017 !!O 037 !!_ 057 / 077 ? 117 !O 137 _ 157 O 177 !_ @end example @node Micros, Miscellaneous, CDC, Top @chapter Other micro-computer charsets @cindex NeXT charsets The @code{NeXT} charset, which used to be especially provided in releases of @code{recode} before 3.5, has been integrated since as one @w{RFC 1345} table. @menu * Apple-Mac:: Apple's Macintosh code * AtariST:: Atari ST code @end menu @node Apple-Mac, AtariST, Micros, Micros @section Apple's Macintosh code @tindex Apple-Mac @cindex Macintosh charset This charset is available in @code{recode} under the name @code{Apple-Mac}. The shortest way of specifying it in @code{recode} is @code{ap}. The charset is aimed towards a Macintosh micro-computer from Apple. This is an eight bit code. The file is the data fork only. This charset is fairly old in @code{recode}, its tables were produced a long while ago by mere inspection of a printed chart of the Macintosh codes and glyph. @cindex CR surface, in Macintosh charsets It has @code{CR} as its implied surface. This means that, if the original end of lines have to be preserved while going out of @code{Apple-Mac}, they should currently be added back through the usage of a surface on the other charset, or better, just never removed. Here are examples for both cases: @example recode ap..l2/cr < @var{input} > @var{output} recode ap/..l2 < @var{input} > @var{output} @end example @w{RFC 1345} brings into @code{recode} 2 other Macintosh charsets. You can discover them by using @code{grep} over the output of @samp{recode -l}: @example recode -l | grep -i mac @end example @noindent @tindex macintosh@r{, a charset, and its aliases} @tindex macintosh_ce@r{, and its aliases} @tindex mac @tindex macce Charsets @code{macintosh} and @code{macintosh_ce}, as well as their aliases @code{mac} and @code{macce} also have @code{CR} as their implied surface. There are a few discrepancies between the @code{Apple-Mac} charset and the very similar @w{RFC 1345} charset @code{macintosh}, which have not been analysed yet, so the charsets are being kept separate for now. This might change in the future, and the @code{Apple-Mac} charset might disappear. Wizards would be interested in comparing the output of these two commands: @example recode -vh Apple-Mac..Latin-1 recode -vh macintosh..Latin-1 @end example @noindent The first command use the charset prior to @w{RFC 1345} introduction. Both methods give different recodings. These differences are annoying, the fuzziness will have to be explained and settle down one day. @cindex @code{recode}, a Macintosh port As a side note, some people ask if there is a Macintosh port of the @code{recode} program. I'm not aware of any. I presume that if the tool fills a need for Macintosh users, someone will port it one of these days? @node AtariST, , Apple-Mac, Micros @section Atari ST code @tindex AtariST This charset is available in @code{recode} under the name @code{AtariST}. This is the character set used on the Atari ST/TT/Falcon. This is similar to @code{IBM-PC}, but differs in some details: it includes some more accented characters, the graphic characters are mostly replaced by Hebrew characters, and there is a true German @kbd{sharp s} different from Greek @kbd{beta}. About the end-of-line conversions: the canonical end-of-line on the Atari is @samp{\r\n}, but unlike @code{IBM-PC}, the OS makes no difference between text and binary input/output; it is up to the application how to interpret the data. In fact, most of the libraries that come with compilers can grok both @samp{\r\n} and @samp{\n} as end of lines. Many of the users who also have access to Unix systems prefer @samp{\n} to ease porting Unix utilities. So, for easing reversibility, @code{recode} tries to let @samp{\r} undisturbed through recodings. @node Miscellaneous, Surfaces, Micros, Top @chapter Various other charsets Even if these charsets were originally added to @code{recode} for handling texts written in French, they find other uses. We did use them a lot for writing French diacriticised texts in the past, so @code{recode} knows how to handle these particularly well for French texts. @menu * HTML:: World Wide Web representations * LaTeX:: LaTeX macro calls * Texinfo:: GNU project documentation files * Vietnamese:: * African:: African charsets * Others:: * Texte:: Easy French conventions * Mule:: Mule as a multiplexed charset @end menu @node HTML, LaTeX, Miscellaneous, Miscellaneous @section World Wide Web representations @cindex HTML @cindex SGML @cindex XML @cindex Web @cindex World Wide Web @cindex WWW @cindex markup language @cindex entities @cindex character entities @cindex character entity references @cindex numeric character references Character entities have been introduced by SGML and made widely popular through HTML, the markup language in use for the World Wide Web, or Web or WWW for short. For representing @emph{unusual} characters, HTML texts use special sequences, beginning with an ampersand @kbd{&} and ending with a semicolon @kbd{;}. The sequence may itself start with a number sigh @kbd{#} and be followed by digits, so forming a @dfn{numeric character reference}, or else be an alphabetic identifier, so forming a @dfn{character entity reference}. The HTML standards have been revised into different HTML levels over time, and the list of allowable character entities differ in them. The later XML, meant to simplify many things, has an option (@samp{standalone=yes}) which much restricts that list. The @code{recode} library is able to convert character references between their mnemonic form and their numeric form, depending on aimed HTML standard level. It also can, of course, convert between HTML and various other charsets. Here is a list of those HTML variants which @code{recode} supports. Some notes have been provided by François Yergeau @email{yergeau@@alis.com}. @table @code @item XML-standalone @tindex h0 @tindex XML-standalone This charset is available in @code{recode} under the name @code{XML-standalone}, with @code{h0} as an acceptable alias. It is documented in section 4.1 of @uref{http://www.w3.org/TR/REC-xml}. It only knows @samp{&}, @samp{>}, @samp{<}, @samp{"} and @samp{'}. @item HTML_1.1 @tindex HTML_1.1 @tindex h1 This charset is available in @code{recode} under the name @code{HTML_1.1}, with @code{h1} as an acceptable alias. HTML 1.0 was never really documented. @item HTML_2.0 @tindex HTML_2.0 @tindex RFC1866 @tindex 1866 @tindex h2 This charset is available in @code{recode} under the name @code{HTML_2.0}, and has @code{RFC1866}, @code{1866} and @code{h2} for aliases. HTML 2.0 entities are listed in @w{RFC 1866}. Basically, there is an entity for each @emph{alphabetical} character in the right part of @w{ISO 8859-1}. In addition, there are four entities for syntax-significant ASCII characters: @samp{&}, @samp{>}, @samp{<} and @samp{"}. @item HTML-i18n @tindex HTML-i18n @tindex RFC2070 @tindex 2070 This charset is available in @code{recode} under the name @code{HTML-i18n}, and has @code{RFC2070} and @code{2070} for aliases. @w{RFC 2070} added entities to cover the whole right part of @w{ISO 8859-1}. The list is conveniently accessible at @uref{http://www.alis.com:8085/ietf/html/html-latin1.sgml}. In addition, four i18n-related entities were added: @samp{‌} (@samp{‌}), @samp{‍} (@samp{‍}), @samp{‎} (@samp{‎}) and @samp{‏} (@samp{‏}). @item HTML_3.2 @tindex HTML_3.2 @tindex h3 This charset is available in @code{recode} under the name @code{HTML_3.2}, with @code{h3} as an acceptable alias. @uref{http://www.w3.org/TR/REC-html32.html, HTML 3.2} took up the full @w{Latin-1} list but not the i18n-related entities from @w{RFC 2070}. @item HTML_4.0 @tindex h4 @tindex h This charset is available in @code{recode} under the name @code{HTML_4.0}, and has @code{h4} and @code{h} for aliases. Beware that the particular alias @code{h} is not @emph{tied} to HTML 4.0, but to the highest HTML level supported by @code{recode}; so it might later represent HTML level 5 if this is ever created. @uref{http://www.w3.org/TR/REC-html40/, HTML 4.0} has the whole @w{Latin-1} list, a set of entities for symbols, mathematical symbols, and Greek letters, and another set for markup-significant and internationalization characters comprising the 4 ASCII entities, the 4 i18n-related from @w{RFC 2070} plus some more. See @uref{http://www.w3.org/TR/REC-html40/sgml/entities.html}. @end table Printable characters from @w{Latin-1} may be used directly in an HTML text. However, partly because people have deficient keyboards, partly because people want to transmit HTML texts over non 8-bit clean channels while not using MIME, it is common (yet debatable) to use character entity references even for @w{Latin-1} characters, when they fall outside ASCII (that is, when they have the 8th bit set). When you recode from another charset to @code{HTML}, beware that all occurrences of double quotes, ampersands, and left or right angle brackets are translated into special sequences. However, in practice, people often use ampersands and angle brackets in the other charset for introducing HTML commands, compromising it: it is not pure HTML, not it is pure other charset. These particular translations can be rather inconvenient, they may be specifically inhibited through the command option @samp{-d} (@pxref{Mixed}). Codes not having a mnemonic entity are output by @code{recode} using the @samp{&#@var{nnn};} notation, where @var{nnn} is a decimal representation of the UCS code value. When there is an entity name for a character, it is always preferred over a numeric character reference. ASCII printable characters are always generated directly. So is the newline. While reading HTML, @code{recode} supports numeric character reference as alternate writings, even when written as hexadecimal numbers, as in @samp{�}. This is documented in: @example http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.3 @end example When @code{recode} translates to HTML, the translation occurs according to the HTML level as selected by the goal charset. When translating @emph{from} HTML, @code{recode} not only accepts the character entity references known at that level, but also those of all other levels, as well as a few alternative special sequences, to be forgiving to files using other HTML standards. @cindex normilise an HTML file @cindex HTML normalization The @code{recode} program can be used to @emph{normalise} an HTML file using oldish conventions. For example, it accepts @samp{&AE;}, as this once was a valid writing, somewhere. However, it should always produce @samp{Æ} instead of @samp{&AE;}. Yet, this is not completely true. If one does: @example recode h3..h3 < @var{input} @end example @noindent the operation will be optimised into a mere copy, and you can get @samp{&AE;} this way, if you had some in your input file. But if you explicitly defeat the optimisation, like this maybe: @example recode h3..u2,u2..h3 < @var{input} @end example @noindent then @samp{&AE;} should be normalised into @samp{Æ} by the operation. @node LaTeX, Texinfo, HTML, Miscellaneous @section La@TeX{} macro calls @tindex LaTeX@r{, a charset} @tindex ltex @cindex La@TeX{} files @cindex @TeX{} files This charset is available in @code{recode} under the name @code{LaTeX} and has @code{ltex} as an alias. It is used for ASCII files coded to be read by La@TeX{} or, in certain cases, by @TeX{}. Whenever you recode from another charset to @code{LaTeX}, beware that all occurrences of backslashes @kbd{\} are translated into the string @samp{\backslash@{@}}. However, in practice, people often use backslashes in the other charset for introducing @TeX{} commands, compromising it: it is not pure @TeX{}, nor it is pure other charset. This translation of backslashes into @samp{\backslash@{@}} can be rather inconvenient, it may be inhibited through the command option @samp{-d} (@pxref{Mixed}). @node Texinfo, Vietnamese, LaTeX, Miscellaneous @section GNU project documentation files @tindex Texinfo@r{, a charset} @tindex texi @tindex ti @cindex Texinfo files This charset is available in @code{recode} under the name @code{Texinfo} and has @code{texi} and @code{ti} for aliases. It is used by the GNU project for its documentation. Texinfo files may be converted into Info files by the @code{makeinfo} program and into nice printed manuals by the @TeX{} system. Even if @code{recode} may transform other charsets to Texinfo, it may not read Texinfo files yet. In these times, usages are also changing between versions of Texinfo, and @code{recode} only partially succeeds in correctly following these changes. So, for now, Texinfo support in @code{recode} should be considered as work still in progress (!). @node Vietnamese, African, Texinfo, Miscellaneous @section Vietnamese charsets @cindex Vietnamese charsets We are currently experimenting the implementation, in @code{recode}, of a few character sets and transliterated forms to handle the Vietnamese language. They are quite briefly summarised, here. @table @code @item TCVN @tindex TCVN@r{, for Vienamese} @tindex VN1@r{, maybe not available} @tindex VN2@r{, maybe not available} @tindex VN3@r{, maybe not available} The TCVN charset has an incomplete name. It might be one of the three charset @code{VN1}, @code{VN2} or @code{VN3}. Yes @code{VN2} might be a second version of @code{VISCII}. To be clarified. @item VISCII @tindex VISCII This is an 8-bit character set which seems to be rather popular for writing Vietnamese. @item VPS @tindex VPS This is an 8-bit character set for Vietnamese. No much reference. @item VIQR @tindex VIQR The VIQR convention is a 7-bit, @code{ASCII} transliteration for Vietnamese. @item VNI @tindex VNI The VNI convention is a 8-bit, @code{Latin-1} transliteration for Vietnamese. @end table @tindex 1129@r{, not available} @tindex CP1129@r{, not available} @tindex 1258@r{, not available} @tindex CP1258@r{, not available} Still lacking for Vietnamese in @code{recode}, are the charsets @code{CP1129} and @code{CP1258}. @node African, Others, Vietnamese, Miscellaneous @section African charsets @cindex African charsets Some African character sets are available for a few languages, when these are heavily used in countries where French is also currently spoken. @tindex AFRFUL-102-BPI_OCIL@r{, and aliases} @tindex bambara @tindex bra @tindex ewondo @tindex fulfude @tindex AFRFUL-103-BPI_OCIL@r{, and aliases} @tindex t-bambara @tindex t-bra @tindex t-ewondo @tindex t-fulfude One African charset is usable for Bambara, Ewondo and Fulfude, as well as for French. This charset is available in @code{recode} under the name @code{AFRFUL-102-BPI_OCIL}. Accepted aliases are @code{bambara}, @code{bra}, @code{ewondo} and @code{fulfude}. Transliterated forms of the same are available under the name @code{AFRFUL-103-BPI_OCIL}. Accepted aliases are @code{t-bambara}, @code{t-bra}, @code{t-ewondo} and @code{t-fulfude}. @tindex AFRLIN-104-BPI_OCIL @tindex lingala @tindex lin @tindex sango @tindex wolof @tindex AFRLIN-105-BPI_OCIL @tindex t-lingala @tindex t-lin @tindex t-sango @tindex t-wolof Another African charset is usable for Lingala, Sango and Wolof, as well as for French. This charset is available in @code{recode} under the name @code{AFRLIN-104-BPI_OCIL}. Accepted aliases are @code{lingala}, @code{lin}, @code{sango} and @code{wolof}. Transliterated forms of the same are available under the name @code{AFRLIN-105-BPI_OCIL}. Accepted aliases are @code{t-lingala}, @code{t-lin}, @code{t-sango} and @code{t-wolof}. @tindex AFRL1-101-BPI_OCIL @tindex t-francais @tindex t-fra To ease exchange with @code{ISO-8859-1}, there is a charset conveying transliterated forms for @w{Latin-1} in a way which is compatible with the other African charsets in this series. This charset is available in @code{recode} under the name @code{AFRL1-101-BPI_OCIL}. Accepted aliases are @code{t-fra} and @code{t-francais}. @node Others, Texte, African, Miscellaneous @section Cyrillic and other charsets @cindex Cyrillic charsets The following Cyrillic charsets are already available in @code{recode} through @w{RFC 1345} tables: @code{CP1251} with aliases @code{1251}, @code{ ms-cyrl} and @code{windows-1251}; @code{CSN_369103} with aliases @code{ISO-IR-139} and @code{KOI8_L2}; @code{ECMA-cyrillic} with aliases @code{ECMA-113}, @code{ECMA-113:1986} and @code{iso-ir-111}, @code{IBM880} with aliases @code{880}, @code{CP880} and @code{EBCDIC-Cyrillic}; @code{INIS-cyrillic} with alias @code{iso-ir-51}; @code{ISO-8859-5} with aliases @code{cyrillic}, @code{ ISO-8859-5:1988} and @code{iso-ir-144}; @code{KOI-7}; @code{KOI-8} with alias @code{GOST_19768-74}; @code{KOI8-R}; @code{KOI8-RU} and finally @code{KOI8-U}. There seems to remain some confusion in Roman charsets for Cyrillic languages, and because a few users requested it repeatedly, @code{recode} now offers special services in that area. Consider these charsets as experimental and debatable, as the extraneous tables describing them are still a bit fuzzy or non-standard. Hopefully, in the long run, these charsets will be covered in Keld Simonsen's works to the satisfaction of everybody, and this section will merely disappear. @table @code @item KEYBCS2 @tindex KEYBCS2 @tindex Kamenicky This charset is available under the name @code{KEYBCS2}, with @code{Kamenicky} as an accepted alias. @item CORK @tindex CORK @tindex T1 This charset is available under the name @code{CORK}, with @code{T1} as an accepted alias. @item KOI-8_CS2 @tindex KOI-8_CS2 This charset is available under the name @code{KOI-8_CS2}. @end table @node Texte, Mule, Others, Miscellaneous @section Easy French conventions @tindex Texte @tindex txte This charset is available in @code{recode} under the name @code{Texte} and has @code{txte} for an alias. It is a seven bits code, identical to @code{ASCII-BS}, save for French diacritics which are noted using a slightly different convention. At text entry time, these conventions provide a little speed up. At read time, they slightly improve the readability over a few alternate ways of coding diacritics. Of course, it would better to have a specialised keyboard to make direct eight bits entries and fonts for immediately displaying eight bit ISO @w{Latin-1} characters. But not everybody is so fortunate. In a few mailing environments, and sadly enough, it still happens that the eight bit is often willing-fully destroyed. @cindex Easy French Easy French has been in use in France for a while. I only slightly adapted it (the diaeresis option) to make it more comfortable to several usages in Qu@'ebec originating from Universit@'e de Montr@'eal. In fact, the main problem for me was not to necessarily to invent Easy French, but to recognise the ``best'' convention to use, (best is not being defined, here) and to try to solve the main pitfalls associated with the selected convention. Shortly said, we have: @table @kbd @item e' for @kbd{e} (and some other vowels) with an acute accent, @item e` for @kbd{e} (and some other vowels) with a grave accent, @item e^ for @kbd{e} (and some other vowels) with a circumflex accent, @item e" for @kbd{e} (and some other vowels) with a diaeresis, @item c, for @kbd{c} with a cedilla. @end table @noindent There is no attempt at expressing the @kbd{ae} and @kbd{oe} diphthongs. French also uses tildes over @kbd{n} and @kbd{a}, but seldomly, and this is not represented either. In some countries, @kbd{:} is used instead of @kbd{"} to mark diaeresis. @code{recode} supports only one convention per call, depending on the @samp{-c} option of the @code{recode} command. French quotes (sometimes called ``angle quotes'') are noted the same way English quotes are noted in @TeX{}, @emph{id est} by @kbd{``} and @kbd{''}. No effort has been put to preserve Latin ligatures (@kbd{@ae{}}, @kbd{@oe{}}) which are representable in several other charsets. So, these ligatures may be lost through Easy French conventions. The convention is prone to losing information, because the diacritic meaning overloads some characters that already have other uses. To alleviate this, some knowledge of the French language is boosted into the recognition routines. So, the following subtleties are systematically obeyed by the various recognisers. @enumerate @item A comma which follows a @kbd{c} is interpreted as a cedilla only if it is followed by one of the vowels @kbd{a}, @kbd{o} or @kbd{u}. @item A single quote which follows a @kbd{e} does not necessarily means an acute accent if it is followed by a single other one. For example: @table @kbd @item e' will give an @kbd{e} with an acute accent. @item e'' will give a simple @kbd{e}, with a closing quotation mark. @item e''' will give an @kbd{e} with an acute accent, followed by a closing quotation mark. @end table There is a problem induced by this convention if there are English quotations with a French text. In sentences like: @example There's a meeting at Archie's restaurant. @end example the single quotes will be mistaken twice for acute accents. So English contractions and suffix possessives could be mangled. @item A double quote or colon, depending on @samp{-c} option, which follows a vowel is interpreted as diaeresis only if it is followed by another letter. But there are in French several words that @emph{end} with a diaeresis, and the @code{recode} library is aware of them. There are words ending in ``igue'', either feminine words without a relative masculine (besaigu@"e and cigu@"e), or feminine words with a relative masculine@footnote{There are supposed to be seven words in this case. So, one is missing.} (aigu@"e, ambigu@"e, contigu@"e, exigu@"e, subaigu@"e and suraigu@"e). There are also words not ending in ``igue'', but instead, either ending by ``i''@footnote{Look at one of the following sentences (the second has to be interpreted with the @samp{-c} option): @example "Ai"e! Voici le proble`me que j'ai" Ai:e! Voici le proble`me que j'ai: @end example There is an ambiguity between an @tex a\"\i, @end tex @ifinfo ai", @end ifinfo @c FIXME: why not use @dotless{} here? It works, AFAIK. @ignore a@"{@dotless{i}}, @end ignore the small animal, and the indicative future of @emph{avoir} (first person singular), when followed by what could be a diaeresis mark. Hopefully, the case is solved by the fact that an apostrophe always precedes the verb and almost never the animal.} @tex (a\"\i, conga\"\i, go\"\i, ha\"\i ka\"\i, inou\"\i, sa\"\i, samura\"\i, tha\"\i{} and toka\"\i), @end tex @ifinfo (ai", congai", goi", hai"kai", inoui", sai", samurai", thai" and tokai"), @end ifinfo @ignore (a@"{@dotless{i}}, conga@"{@dotless{i}}, go@"{@dotless{i}}, ha@"{@dotless{i}}ka@"{@dotless{i}}, inou@"{@dotless{i}}, sa@"{@dotless{i}}, samura@"{@dotless{i}}, tha@"{@dotless{i}} and toka@"{@dotless{i}}), @end ignore ending by ``e'' (cano@"e) or ending by ``u''@footnote{I did not pay attention to proper nouns, but this one showed up as being fairly evident.} (Esa@"u). Just to complete this topic, note that it would be wrong to make a rule for all words ending in ``igue'' as needing a diaerisis, as there are counter-examples (becfigue, b@`esigue, bigue, bordigue, bourdigue, brigue, contre-digue, digue, d'intrigue, fatigue, figue, garrigue, gigue, igue, intrigue, ligue, prodigue, sarigue and zigue). @end enumerate @node Mule, , Texte, Miscellaneous @section Mule as a multiplexed charset @tindex Mule@r{, a charset} @cindex multiplexed charsets @cindex super-charsets This version of @code{recode} barely starts supporting multiplexed or super-charsets, that is, those encoding methods by which a single text stream may contain a combination of more than one constituent charset. The only multiplexed charset in @code{recode} is @code{Mule}, and even then, it is only very partially implemented: the only correspondence available is with @code{Latin-1}. The author fastly implemented this only because he needed this for himself. However, it is intended that Mule support to become more real in subsequent releases of @code{recode}. Multiplexed charsets are not to be confused with mixed charset texts (@pxref{Mixed}). For mixed charset input, the rules allowing to distinguish which charset is current, at any given place, are kind of informal, and driven from the semantics of what the file contains. On the other side, multiplexed charsets are @emph{designed} to be interpreted fairly precisely, and quite independently of any informational context. @cindex MULE, in Emacs The spelling @code{Mule} originally stands for @cite{@emph{mul}tilingual @emph{e}nhancement to GNU Emacs}, it is the result of a collective effort orchestrated by Handa Ken'ichi since 1993. When @code{Mule} got rewritten in the main development stream of GNU Emacs 20, the FSF renamed it @code{MULE}, meaning @cite{@emph{mul}tilingual @emph{e}nvironment in GNU Emacs}. Even if the charset @code{Mule} is meant to stay internal to GNU Emacs, it sometimes breaks loose in external files, and as a consequence, a recoding tool is sometimes needed. Within Emacs, @code{Mule} comes with @code{Leim}, which stands for @cite{@emph{l}ibraries of @emph{e}macs @emph{i}nput @emph{m}ethods}. One of these libraries is named @code{quail}@footnote{Usually, quail means quail egg in Japanese, while egg alone is usually chicken egg. Both quail egg and chicken egg are popular food in Japan. The @code{quail} input system has been named because it is smaller that the previous @code{EGG} system. As for @code{EGG}, it is the translation of @code{TAMAGO}. This word comes from the Japanese sentence @cite{@emph{ta}kusan @emph{ma}tasete @emph{go}mennasai}, meaning @cite{sorry to have let you wait so long}. Of course, the publication of @code{EGG} has been delayed many times@dots{} (Story by Takahashi Naoto)}. @node Surfaces, Internals, Miscellaneous, Top @chapter All about surfaces @cindex surface, what it is @cindex trivial surface The @dfn{trivial surface} consists of using a fixed number of bits (often eight) for each character, the bits together hold the integer value of the index for the character in its charset table. There are many kinds of surfaces, beyond the trivial one, all having the purpose of increasing selected qualities for the storage or transmission. For example, surfaces might increase the resistance to channel limits (@code{Base64}), the transmission speed (@code{gzip}), the information privacy (@code{DES}), the conformance to operating system conventions (@code{CR-LF}), the blocking into records (@code{VB}), and surely other things as well@footnote{These are mere examples to explain the concept, @code{recode} only has @code{Base64} and @code{CR-LF}, actually.}. Many surfaces may be applied to a stream of characters from a charset, the order of application of surfaces is important, and surfaces should be removed in the reverse order of their application. Even if surfaces may generally be applied to various charsets, some surfaces were specifically designed for a particular charset, and would not make much sense if applied to other charsets. In such cases, these conceptual surfaces have been implemented as @code{recode} charsets, instead of as surfaces. This choice yields to cleaner syntax and usage. @xref{Universal}. @cindex surfaces, implementation in @code{recode} @tindex data@r{, a special charset} @tindex tree@r{, a special charset} Surfaces are implemented within @code{recode} as special charsets which may only transform to or from the @code{data} or @code{tree} special charsets. Clever users may use this knowledge for writing surface names in requests exactly as if they were pure charsets, when the only need is to change surfaces without any kind of recoding between real charsets. In such contexts, either @code{data} or @code{tree} may also be used as if it were some kind of generic, anonymous charset: the request @samp{data..@var{surface}} merely adds the given @var{surface}, while the request @samp{@var{surface}..data} removes it. @cindex structural surfaces @cindex surfaces, structural @cindex surfaces, trees The @code{recode} library distinguishes between mere data surfaces, and structural surfaces, also called tree surfaces for short. Structural surfaces might allow, in the long run, transformations between a few specialised representations of structural information like MIME parts, Perl or Python initialisers, LISP S-expressions, XML, Emacs outlines, etc. We are still experimenting with surfaces in @code{recode}. The concept opens the doors to many avenues; it is not clear yet which ones are worth pursuing, and which should be abandoned. In particular, implementation of structural surfaces is barely starting, there is not even a commitment that tree surfaces will stay in @code{recode}, if they do prove to be more cumbersome than useful. This chapter presents all surfaces currently available. @menu * Permutations:: Permuting groups of bytes * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps * Test:: Artificial data for testing @end menu @node Permutations, End lines, Surfaces, Surfaces @section Permuting groups of bytes @cindex permutations of groups of bytes @cindex byte order swapping @cindex endiannes, changing A permutation is a surface transformation which reorders groups of eight-bit bytes. A @emph{21} permutation exchanges pairs of successive bytes. If the text contains an odd number of bytes, the last byte is merely copied. An @emph{4321} permutation inverts the order of quadruples of bytes. If the text does not contains a multiple of four bytes, the remaining bytes are nevertheless permuted as @emph{321} if there are three bytes, @emph{21} if there are two bytes, or merely copied otherwise. @table @code @item 21 @tindex 21-Permutation @tindex swabytes This surface is available in @code{recode} under the name @code{21-Permutation} and has @code{swabytes} for an alias. @item 4321 @tindex 4321-Permutation This surface is available in @code{recode} under the name @code{4321-Permutation}. @end table @node End lines, MIME, Permutations, Surfaces @section Representation for end of lines @cindex end of line format The same charset might slightly differ, from one system to another, for the single fact that end of lines are not represented identically on all systems. The representation for an end of line within @code{recode} is the @code{ASCII} or @code{UCS} code with value 10, or @kbd{LF}. Other conventions for representing end of lines are available through surfaces. @table @code @item CR @tindex CR@r{, a surface} This convention is popular on Apple's Macintosh machines. When this surface is applied, each line is terminated by @kbd{CR}, which has @code{ASCII} value 13. Unless the library is operating in strict mode, adding or removing the surface will in fact @emph{exchange} @kbd{CR} and @kbd{LF}, for better reversibility. However, in strict mode, the exchange does not happen, any @kbd{CR} will be copied verbatim while applying the surface, and any @kbd{LF} will be copied verbatim while removing it. This surface is available in @code{recode} under the name @code{CR}, it does not have any aliases. This is the implied surface for the Apple Macintosh related charsets. @item CR-LF @tindex CR-LF@r{, a surface} This convention is popular on Microsoft systems running on IBM PCs and compatible. When this surface is applied, each line is terminated by a sequence of two characters: one @kbd{CR} followed by one @kbd{LF}, in that order. @cindex Ctrl-Z, discarding For compatibility with oldish MS-DOS systems, removing a @code{CR-LF} surface will discard the first encountered @kbd{C-z}, which has @code{ASCII} value 26, and everything following it in the text. Adding this surface will not, however, append a @kbd{C-z} to the result. @tindex cl This surface is available in @code{recode} under the name @code{CR-LF} and has @code{cl} for an alias. This is the implied surface for the IBM or Microsoft related charsets or code pages. @end table Some other charsets might have their own representation for an end of line, which is different from @kbd{LF}. For example, this is the case of various @code{EBCDIC} charsets, or @code{Icon-QNX}. The recoding of end of lines is intimately tied into such charsets, it is not available separately as surfaces. @node MIME, Dump, End lines, Surfaces @section MIME contents encodings @cindex MIME encodings @cindex RFC 2045 @w{RFC 2045} defines two 7-bit surfaces, meant to prepare 8-bit messages for transmission. Base64 is especially usable for binary entities, while Quoted-Printable is especially usable for text entities, in those case the lower 128 characters of the underlying charset coincide with ASCII. @table @code @tindex Base64 @tindex b64 @tindex 64 @item Base64 This surface is available in @code{recode} under the name @code{Base64}, with @code{b64} and @code{64} as acceptable aliases. @item Quoted-Printable @tindex Quoted-Printable @tindex quote-printable @tindex QP This surface is available in @code{recode} under the name @code{Quoted-Printable}, with @code{quote-printable} and @code{QP} as acceptable aliases. @end table Note that @code{UTF-7}, which may be also considered as a MIME surface, is provided as a genuine charset instead, as it necessary relates to @code{UCS-2} and nothing else. @xref{UTF-7}. A little historical note, also showing the three levels of acceptance of Internet standards. MIME changed from a ``Proposed Standard'' (@w{RFC 1341--1344}, 1992) to a ``Draft Standard'' (@w{RFC 1521--1523}) in 1993, and was @emph{recycled} as a ``Draft Standard'' in 1996-11. It is not yet a ``Full Standard''. @node Dump, Test, MIME, Surfaces @section Interpreted character dumps @cindex dumping characters Dumps are surfaces meant to express, in ways which are a bit more readable, the bit patterns used to represent characters. They allow the inspection or debugging of character streams, but also, they may assist a bit the production of C source code which, once compiled, would hold in memory a copy of the original coding. However, @code{recode} does not attempt, in any way, to produce complete C source files in dumps. User hand editing or @file{Makefile} trickery is still needed for adding missing lines. Dumps may be given in decimal, hexadecimal and octal, and be based over chunks of either one, two or four eight-bit bytes. Formatting has been chosen to respect the C language syntax for number constants, with commas and newlines inserted appropriately. However, when dumping two or four byte chunks, the last chunk may be incomplete. This is observable through the usage of narrower expression for that last chunk only. Such a shorter chunk would not be compiled properly within a C initialiser, as all members of an array share a single type, and so, have identical sizes. @table @code @item Octal-1 @tindex Octal-1 @tindex o1 This surface corresponds to an octal expression of each input byte. It is available in @code{recode} under the name @code{Octal-1}, with @code{o1} and @code{o} as acceptable aliases. @item Octal-2 @tindex Octal-2 @tindex o2 This surface corresponds to an octal expression of each pair of input bytes, except for the last pair, which may be short. It is available in @code{recode} under the name @code{Octal-2} and has @code{o2} for an alias. @item Octal-4 @tindex Octal-4 @tindex o4 This surface corresponds to an octal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in @code{recode} under the name @code{Octal-4} and has @code{o4} for an alias. @item Decimal-1 @tindex Decimal-1 @tindex d1 This surface corresponds to an decimal expression of each input byte. It is available in @code{recode} under the name @code{Decimal-1}, with @code{d1} and @code{d} as acceptable aliases. @item Decimal-2 @tindex Decimal-2 @tindex d2 This surface corresponds to an decimal expression of each pair of input bytes, except for the last pair, which may be short. It is available in @code{recode} under the name @code{Decimal-2} and has @code{d2} for an alias. @item Decimal-4 @tindex Decimal-4 @tindex d4 This surface corresponds to an decimal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in @code{recode} under the name @code{Decimal-4} and has @code{d4} for an alias. @item Hexadecimal-1 @tindex Hexadecimal-1 @tindex x1 This surface corresponds to an hexadecimal expression of each input byte. It is available in @code{recode} under the name @code{Hexadecimal-1}, with @code{x1} and @code{x} as acceptable aliases. @item Hexadecimal-2 @tindex Hexadecimal-2 @tindex x2 This surface corresponds to an hexadecimal expression of each pair of input bytes, except for the last pair, which may be short. It is available in @code{recode} under the name @code{Hexadecimal-2}, with @code{x2} for an alias. @item Hexadecimal-4 @tindex Hexadecimal-4 @tindex x4 This surface corresponds to an hexadecimal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in @code{recode} under the name @code{Hexadecimal-4}, with @code{x4} for an alias. @end table When removing a dump surface, that is, when reading a dump results back into a sequence of bytes, the narrower expression for a short last chunk is recognised, so dumping is a fully reversible operation. However, in case you want to produce dumps by other means than through @code{recode}, beware that for decimal dumps, the library has to rely on the number of spaces to establish the original byte size of the chunk. Although the library might report reversibility errors, removing a dump surface is a rather forgiving process: one may mix bases, group a variable number of data per source line, or use shorter chunks in places other than at the far end. Also, source lines not beginning with a number are skipped. So, @code{recode} should often be able to read a whole C header file, wrapping the results of a previous dump, and regenerate the original byte string. @node Test, , Dump, Surfaces @section Artificial data for testing A few pseudo-surfaces exist to generate debugging data out of thin air. These surfaces are only meant for the expert @code{recode} user, and are only useful in a few contexts, like for generating binary permutations from the recoding or acting on them. @cindex debugging surfaces Debugging surfaces, @emph{when removed}, insert their generated data at the beginning of the output stream, and copy all the input stream after the generated data, unchanged. This strange removal constraint comes from the fact that debugging surfaces are usually specified in the @emph{before} position instead of the @emph{after} position within a request. With debugging surfaces, one often recodes file @file{/dev/null} in filter mode. Specifying many debugging surfaces at once has an accumulation effect on the output, and since surfaces are removed from right to left, each generating its data at the beginning of previous output, the net effect is an @emph{impression} that debugging surfaces are generated from left to right, each appending to the result of the previous. In any case, any real input data gets appended after what was generated. @table @code @item test7 @tindex test7 When removed, this surface produces 128 single bytes, the first having value 0, the second having value 1, and so forth until all 128 values have been generated. @item test8 @tindex test8 When removed, this surface produces 256 single bytes, the first having value 0, the second having value 1, and so forth until all 256 values have been generated. @item test15 @tindex test15 When removed, this surface produces 64509 double bytes, the first having value 0, the second having value 1, and so forth until all values have been generated, but excluding risky @code{UCS-2} values, like all codes from the surrogate @code{UCS-2} area (for @code{UTF-16}), the byte order mark, and values known as invalid @code{UCS-2}. @item test16 @tindex test16 When removed, this surface produces 65536 double bytes, the first having value 0, the second having value 1, and so forth until all 65536 values have been generated. @end table As an example, the command @samp{recode l5/test8..dump < /dev/null} is a convoluted way to produce an output similar to @samp{recode -lf l5}. It says to generate all possible 256 bytes and interpret them as @code{ISO-8859-9} codes, while converting them to @code{UCS-2}. Resulting @code{UCS-2} characters are dumped one per line, accompanied with their explicative name. @node Internals, Concept Index, Surfaces, Top @chapter Internal aspects @cindex @code{recode} internals @cindex internals The incoming explanations of the internals of @code{recode} should help people who want to dive into @code{recode} sources for adding new charsets. Adding new charsets does not require much knowledge about the overall organisation of @code{recode}. You can rather concentrate of your new charset, letting the remainder of the @code{recode} mechanics take care of interconnecting it with all others charsets. If you intend to play seriously at modifying @code{recode}, beware that you may need some other GNU tools which were not required when you first installing @code{recode}. If you modify or create any @file{.l} file, then you need Flex, and some better @code{awk} like @code{mawk}, GNU @code{awk}, or @code{nawk}. If you modify the documentation (and you should!), you need @code{makeinfo}. If you are really audacious, you may also want Perl for modifying tabular processing, then @code{m4}, Autoconf, Automake and @code{libtool} for adjusting configuration matters. @menu * Main flow:: Overall organisation * New charsets:: Adding new charsets * New surfaces:: Adding new surfaces * Design:: Comments on the library design @end menu @node Main flow, New charsets, Internals, Internals @section Overall organisation @cindex @code{recode}, main flow of operation The @code{recode} mechanics slowly evolved for many years, and it would be tedious to explain all problems I met and mistakes I did all along, yielding the current behaviour. Surely, one of the key choices was to stop trying to do all conversions in memory, one line or one buffer at a time. It has been fruitful to use the character stream paradigm, and the elementary recoding steps now convert a whole stream to another. Most of the control complexity in @code{recode} exists so that each elementary recoding step stays simple, making easier to add new ones. The whole point of @code{recode}, as I see it, is providing a comfortable nest for growing new charset conversions. @cindex single step The main @code{recode} driver constructs, while initialising all conversion modules, a table giving all the conversion routines available (@dfn{single step}s) and for each, the starting charset and the ending charset. If we consider these charsets as being the nodes of a directed graph, each single step may be considered as oriented arc from one node to the other. A cost is attributed to each arc: for example, a high penalty is given to single steps which are prone to losing characters, a lower penalty is given to those which need studying more than one input character for producing an output character, etc. Given a starting code and a goal code, @code{recode} computes the most economical route through the elementary recodings, that is, the best sequence of conversions that will transform the input charset into the final charset. To speed up execution, @code{recode} looks for subsequences of conversions which are simple enough to be merged, and then dynamically creates new single steps to represent these mergings. @cindex double step A @dfn{double step} in @code{recode} is a special concept representing a sequence of two single steps, the output of the first single step being the special charset @code{UCS-2}, the input of the second single step being also @code{UCS-2}. Special @code{recode} machinery dynamically produces efficient, reversible, merge-able single steps out of these double steps. @cindex recoding steps, statistics @cindex average number of recoding steps I made some statistics about how many internal recoding steps are required between any two charsets chosen at random. The initial recoding layout, before optimisation, always uses between 1 and 5 steps. Optimisation could sometimes produce mere copies, which are counted as no steps at all. In other cases, optimisation is unable to save any step. The number of steps after optimisation is currently between 0 and 5 steps. Of course, the @emph{expected} number of steps is affected by optimisation: it drops from 2.8 to 1.8. This means that @code{recode} uses a theoretical average of a bit less than one step per recoding job. This looks good. This was computed using reversible recodings. In strict mode, optimisation might be defeated somewhat. Number of steps run between 1 and 6, both before and after optimisation, and the expected number of steps decreases by a lesser amount, going from 2.2 to 1.3. This is still manageable. @node New charsets, New surfaces, Main flow, Internals @section Adding new charsets @cindex adding new charsets @cindex new charsets, how to add The main part of @code{recode} is written in C, as are most single steps. A few single steps need to recognise sequences of multiple characters, they are often better written in Flex. It is easy for a programmer to add a new charset to @code{recode}. All it requires is making a few functions kept in a single @file{.c} file, adjusting @file{Makefile.am} and remaking @code{recode}. One of the function should convert from any previous charset to the new one. Any previous charset will do, but try to select it so you will not lose too much information while converting. The other function should convert from the new charset to any older one. You do not have to select the same old charset than what you selected for the previous routine. Once again, select any charset for which you will not lose too much information while converting. If, for any of these two functions, you have to read multiple bytes of the old charset before recognising the character to produce, you might prefer programming it in Flex in a separate @file{.l} file. Prototype your C or Flex files after one of those which exist already, so to keep the sources uniform. Besides, at @code{make} time, all @file{.l} files are automatically merged into a single big one by the script @file{mergelex.awk}. There are a few hidden rules about how to write new @code{recode} modules, for allowing the automatic creation of @file{decsteps.h} and @file{initsteps.h} at @code{make} time, or the proper merging of all Flex files. Mimetism is a simple approach which relieves me of explaining all these rules! Start with a module closely resembling what you intend to do. Here is some advice for picking up a model. First decide if your new charset module is to be be driven by algorithms rather than by tables. For algorithmic recodings, see @file{iconqnx.c} for C code, or @file{txtelat1.l} for Flex code. For table driven recodings, see @file{ebcdic.c} for one-to-one style recodings, @file{lat1html.c} for one-to-many style recodings, or @file{atarist.c} for double-step style recodings. Just select an example from the style that better fits your application. Each of your source files should have its own initialisation function, named @code{module_@var{charset}}, which is meant to be executed @emph{quickly} once, prior to any recoding. It should declare the name of your charsets and the single steps (or elementary recodings) you provide, by calling @code{declare_step} one or more times. Besides the charset names, @code{declare_step} expects a description of the recoding quality (see @file{recodext.h}) and two functions you also provide. The first such function has the purpose of allocating structures, pre-conditioning conversion tables, etc. It is also the way of further modifying the @code{STEP} structure. This function is executed if and only if the single step is retained in an actual recoding sequence. If you do not need such delayed initialisation, merely use @code{NULL} for the function argument. The second function executes the elementary recoding on a whole file. There are a few cases when you can spare writing this function: @c FIXME: functions file_one_to_one and file_one_to_many don't exist! @itemize @bullet @item @findex file_one_to_one Some single steps do nothing else than a pure copy of the input onto the output, in this case, you can use the predefined function @code{file_one_to_one}, while having a delayed initialisation for presetting the @code{STEP} field @code{one_to_one} to the predefined value @code{one_to_same}. @item Some single steps are driven by a table which recodes one character into another; if the recoding does nothing else, you can use the predefined function @code{file_one_to_one}, while having a delayed initialisation for presetting the @code{STEP} field @code{one_to_one} with your table. @item @findex file_one_to_many Some single steps are driven by a table which recodes one character into a string; if the recoding does nothing else, you can use the predefined function @code{file_one_to_many}, while having a delayed initialisation for presetting the @code{STEP} field @code{one_to_many} with your table. @end itemize If you have a recoding table handy in a suitable format but do not use one of the predefined recoding functions, it is still a good idea to use a delayed initialisation to save it anyway, because @code{recode} option @samp{-h} will take advantage of this information when available. Finally, edit @file{Makefile.am} to add the source file name of your routines to the @code{C_STEPS} or @code{L_STEPS} macro definition, depending on the fact your routines is written in C or in Flex. @node New surfaces, Design, New charsets, Internals @section Adding new surfaces @cindex adding new surfaces @cindex new surfaces, how to add Adding a new surface is technically quite similar to adding a new charset. @xref{New charsets}. A surface is provided as a set of two transformations: one from the predefined special charset @code{data} or @code{tree} to the new surface, meant to apply the surface, the other from the new surface to the predefined special charset @code{data} or @code{tree}, meant to remove the surface. @findex declare_step Internally in @code{recode}, function @code{declare_step} especially recognises when a charset is so related to @code{data} or @code{tree}, and then takes appropriate actions so that charset gets indeed installed as a surface. @node Design, , New surfaces, Internals @section Comments on the library design @itemize @bullet @item Why a shared library? @cindex shared library implementation There are many different approaches to reduce system requirements to handle all tables needed in the @code{recode} library. One of them is to have the tables in an external format and only read them in on demand. After having pondered this for a while, I finally decided against it, mainly because it involves its own kind of installation complexity, and it is not clear to me that it would be as interesting as I first imagined. It looks more efficient to see all tables and algorithms already mapped into virtual memory from the start of the execution, yet not loaded in actual memory, than to go through many disk accesses for opening various data files once the program is already started, as this would be needed with other solutions. Using a shared library also has the indirect effect of making various algorithms handily available, right in the same modules providing the tables. This alleviates much the burden of the maintenance. Of course, I would like to later make an exception for only a few tables, built locally by users for their own particular needs once @code{recode} is installed. @code{recode} should just go and fetch them. But I do not perceive this as very urgent, yet useful enough to be worth implementing. Currently, all tables needed for recoding are precompiled into binaries, and all these binaries are then made into a shared library. As an initial step, I turned @code{recode} into a main program and a non-shared library, this allowed me to tidy up the API, get rid of all global variables, etc. It required a surprising amount of program source massaging. But once this cleaned enough, it was easy to use Gordon Matzigkeit's @code{libtool} package, and take advantage of the Automake interface to neatly turn the non-shared library into a shared one. Sites linking with the @code{recode} library, whose system does not support any form of shared libraries, might end up with bulky executables. Surely, the @code{recode} library will have to be used statically, and might not very nicely usable on such systems. It seems that progress has a price for those being slow at it. There is a locality problem I did not address yet. Currently, the @code{recode} library takes many cycles to initialise itself, calling each module in turn for it to set up associated knowledge about charsets, aliases, elementary steps, recoding weights, etc. @emph{Then}, the recoding sequence is decided out of the command given. I would not be surprised if initialisation was taking a perceivable fraction of a second on slower machines. One thing to do, most probably not right in version 3.5, but the version after, would have @code{recode} to pre-load all tables and dump them at installation time. The result would then be compiled and added to the library. This would spare many initialisation cycles, but more importantly, would avoid calling all library modules, scattered through the virtual memory, and so, possibly causing many spurious page exceptions each time the initialisation is requested, at least once per program execution. @item Why not a central charset? It would be simpler, and I would like, if something like @w{ISO 10646} was used as a turning template for all charsets in @code{recode}. Even if I think it could help to a certain extent, I'm still not fully sure it would be sufficient in all cases. Moreover, some people disagree about using @w{ISO 10646} as the central charset, to the point I cannot totally ignore them, and surely, @code{recode} is not a mean for me to force my own opinions on people. I would like that @code{recode} be practical more than dogmatic, and reflect usage more than religions. Currently, if you ask @code{recode} to go from @var{charset1} to @var{charset2} chosen at random, it is highly probable that the best path will be quickly found as: @example @var{charset1}..@code{UCS-2}..@var{charset2} @end example That is, it will almost always use the @code{UCS} as a trampoline between charsets. However, @code{UCS-2} will be immediately be optimised out, and @var{charset1}..@var{charset2} will often be performed in a single step through a permutation table generated on the fly for the circumstance @footnote{If strict mapping is requested, another efficient device will be used instead of a permutation.}. In those few cases where @code{UCS-2} is not selected as a conceptual intermediate, I plan to study if it could be made so. But I guess some cases will remain where @code{UCS-2} is not a proper choice. Even if @code{UCS} is often the good choice, I do not intend to forcefully restrain @code{recode} around @code{UCS-2} (nor @code{UCS-4}) for now. We might come to that one day, but it will come out of the natural evolution of @code{recode}. It will then reflect a fact, rather than a preset dogma. @item Why not @code{iconv}? @cindex @code{iconv} The @code{iconv} routine and library allows for converting characters from an input buffer to an input buffer, synchronously advancing both buffer cursors. If the output buffer is not big enough to receive all of the conversion, the routine returns with the input cursor set at the position where the conversion could later be resumed, and the output cursor set to indicate until where the output buffer has been filled. Despite this scheme is simple and nice, the @code{recode} library does not offer it currently. Why not? When long sequences of decodings, stepwise recodings, and re-encodings are involved, as it happens in true life, synchronising the input buffer back to where it should have stopped, when the output buffer becomes full, is a difficult problem. Oh, we could make it simpler at the expense of loosing space or speed: by inserting markers between each input character and counting them at the output end; by processing only one character in a time through the whole sequence; by repeatedly attempting to recode various subsets of the input buffer, binary searching on their length until the output just fits. The overhead of such solutions looks fully prohibitive to me, and the gain very minimal. I do not see a real advantage, nowadays, imposing a fixed length to an output buffer. It makes things so much simpler and efficient to just let the output buffer size float a bit. Of course, if the above problem was solved, the @code{iconv} library should be easily emulated, given that @code{recode} has similar knowledge about charsets, of course. This either solved or not, the @code{iconv} program remains trivial (given similar knowledge about charsets). I also presume that the @code{genxlt} program would be easy too, but I do not have enough detailed specifications of it to be sure. A lot of years ago, @code{recode} was using a similar scheme, and I found it rather hard to manage for some cases. I rethought the overall structure of @code{recode} for getting away from that scheme, and never regretted it. I perceive @code{iconv} as an artificial solution which surely has some elegances and virtues, but I do not find it really useful as it stands: one always has to wrap @code{iconv} into something more refined, extending it for real cases. From past experience, I think it is unduly hard to fully implement this scheme. It would be awkward that we do contortions for the sole purpose of implementing exactly its specification, without real, fairly sounded reasons (other then the fact some people once thought it was worth standardising). It is much better to immediately aim for the refinement we need, without uselessly forcing us into the dubious detour @code{iconv} represents. Some may argue that if @code{recode} was using a comprehensive charset as a turning template, as discussed in a previous point, this would make @code{iconv} easier to implement. Some may be tempted to say that the cases which are hard to handle are not really needed, nor interesting, anyway. I feel and fear a bit some pressure wanting that @code{recode} be split into the part that well fits the @code{iconv} model, and the part that does not fit, considering this second part less important, with the idea of dropping it one of these days, maybe. My guess is that users of the @code{recode} library, whatever its form, would not like to have such arbitrary limitations. In the long run, we should not have to explain to our users that some recodings may not be made available just because they do not fit the simple model we had in mind when we did it. Instead, we should try to stay opened to the difficulties of real life. There is still a lot of complex needs for Asian people, say, that @code{recode} does not currently address, while it should. Not only the doors should stay open, but we should force them wider! @end itemize @node Concept Index, Option Index, Internals, Top @unnumbered Concept Index @printindex cp @node Option Index, Library Index, Concept Index, Top @unnumbered Option Index This is an alphabetical list of all command-line options accepted by @code{recode}. @printindex op @node Library Index, Charset and Surface Index, Option Index, Top @unnumbered Library Index This is an alphabetical index of important functions, data structures, and variables in the @code{recode} library. @printindex fn @node Charset and Surface Index, , Library Index, Top @unnumbered Charset and Surface Index This is an alphabetical list of all the charsets and surfaces supported by @code{recode}, and their aliases. @printindex tp @contents @bye @c Local Variables: @c texinfo-column-for-description: 24 @c End: recode-3.6/doc/libiconv.texi0100644000000000000000000003626707213512766014616 0ustar rootroot @itemize @bullet @item General character sets @table @code @item US-ASCII @tindex US-ASCII@r{, aliases} @tindex ASCII @tindex ISO646-US @tindex ISO_646.IRV(1991) @tindex ISO-IR-6 @tindex ANSI_X3.4-1968 @tindex CP367 @tindex IBM367 @tindex US @tindex csASCII @tindex ISO646.1991-IRV @code{ASCII}, @code{ISO646-US}, @code{ISO_646.IRV:1991}, @code{ISO-IR-6}, @code{ANSI_X3.4-1968}, @code{CP367}, @code{IBM367}, @code{US}, @code{csASCII} and @code{ISO646.1991-IRV} are aliases for this charset. @end table @item General multi-byte encodings @table @code @item UTF-8 @tindex UTF-8@r{, aliases} @tindex UTF8 @code{UTF8} is an alias for this charset. @item UCS-2 @tindex UCS-2@r{, aliases} @tindex ISO-10646-UCS-2 @tindex csUnicode @code{ISO-10646-UCS-2} and @code{csUnicode} are aliases for this charset. @item UCS-2BE @tindex UCS-2BE@r{, aliases} @tindex UNICODEBIG @tindex UNICODE-1-1 @tindex csUnicode11 @code{UNICODEBIG}, @code{UNICODE-1-1} and @code{csUnicode11} are aliases for this charset. @item UCS-2LE @tindex UCS-2LE@r{, aliases} @tindex UNICODELITTLE @code{UNICODELITTLE} is an alias for this charset. @item UCS-4 @tindex UCS-4@r{, aliases} @tindex ISO-10646-UCS-4 @tindex csUCS4 @code{ISO-10646-UCS-4} and @code{csUCS4} are aliases for this charset. @item UCS-4BE @tindex UCS-4BE @item UCS-4LE @tindex UCS-4LE @item UTF-16 @tindex UTF-16 @item UTF-16BE @tindex UTF-16BE @item UTF-16LE @tindex UTF-16LE @item UTF-7 @tindex UTF-7@r{, aliases} @tindex UNICODE-1-1-UTF-7 @tindex csUnicode11UTF7 @code{UNICODE-1-1-UTF-7} and @code{csUnicode11UTF7} are aliases for this charset. @item UCS-2-INTERNAL @tindex UCS-2-INTERNAL @item UCS-2-SWAPPED @tindex UCS-2-SWAPPED @item UCS-4-INTERNAL @tindex UCS-4-INTERNAL @item UCS-4-SWAPPED @tindex UCS-4-SWAPPED @item JAVA @tindex JAVA @end table @item Standard 8-bit encodings @table @code @item ISO-8859-1 @tindex ISO-8859-1@r{, aliases} @tindex ISO_8859-1 @tindex ISO_8859-1(1987) @tindex ISO-IR-100 @tindex CP819 @tindex IBM819 @tindex LATIN1 @tindex L1 @tindex csISOLatin1 @tindex ISO8859-1 @tindex ISO8859_1 @code{ISO_8859-1}, @code{ISO_8859-1:1987}, @code{ISO-IR-100}, @code{CP819}, @code{IBM819}, @code{LATIN1}, @code{L1}, @code{csISOLatin1}, @code{ISO8859-1} and @code{ISO8859_1} are aliases for this charset. @item ISO-8859-2 @tindex ISO-8859-2@r{, aliases} @tindex ISO_8859-2 @tindex ISO_8859-2(1987) @tindex ISO-IR-101 @tindex LATIN2 @tindex L2 @tindex csISOLatin2 @tindex ISO8859-2 @tindex ISO8859_2 @code{ISO_8859-2}, @code{ISO_8859-2:1987}, @code{ISO-IR-101}, @code{LATIN2}, @code{L2}, @code{csISOLatin2}, @code{ISO8859-2} and @code{ISO8859_2} are aliases for this charset. @item ISO-8859-3 @tindex ISO-8859-3@r{, aliases} @tindex ISO_8859-3 @tindex ISO_8859-3(1988) @tindex ISO-IR-109 @tindex LATIN3 @tindex L3 @tindex csISOLatin3 @tindex ISO8859-3 @tindex ISO8859_3 @code{ISO_8859-3}, @code{ISO_8859-3:1988}, @code{ISO-IR-109}, @code{LATIN3}, @code{L3}, @code{csISOLatin3}, @code{ISO8859-3} and @code{ISO8859_3} are aliases for this charset. @item ISO-8859-4 @tindex ISO-8859-4@r{, aliases} @tindex ISO_8859-4 @tindex ISO_8859-4(1988) @tindex ISO-IR-110 @tindex LATIN4 @tindex L4 @tindex csISOLatin4 @tindex ISO8859-4 @tindex ISO8859_4 @code{ISO_8859-4}, @code{ISO_8859-4:1988}, @code{ISO-IR-110}, @code{LATIN4}, @code{L4}, @code{csISOLatin4}, @code{ISO8859-4} and @code{ISO8859_4} are aliases for this charset. @item ISO-8859-5 @tindex ISO-8859-5@r{, aliases} @tindex ISO_8859-5 @tindex ISO_8859-5(1988) @tindex ISO-IR-144 @tindex CYRILLIC @tindex csISOLatinCyrillic @tindex ISO8859-5 @tindex ISO8859_5 @code{ISO_8859-5}, @code{ISO_8859-5:1988}, @code{ISO-IR-144}, @code{CYRILLIC}, @code{csISOLatinCyrillic}, @code{ISO8859-5} and @code{ISO8859_5} are aliases for this charset. @item ISO-8859-6 @tindex ISO-8859-6@r{, aliases} @tindex ISO_8859-6 @tindex ISO_8859-6(1987) @tindex ISO-IR-127 @tindex ECMA-114 @tindex ASMO-708 @tindex ARABIC @tindex csISOLatinArabic @tindex ISO8859-6 @tindex ISO8859_6 @code{ISO_8859-6}, @code{ISO_8859-6:1987}, @code{ISO-IR-127}, @code{ECMA-114}, @code{ASMO-708}, @code{ARABIC}, @code{csISOLatinArabic}, @code{ISO8859-6} and @code{ISO8859_6} are aliases for this charset. @item ISO-8859-7 @tindex ISO-8859-7@r{, aliases} @tindex ISO_8859-7 @tindex ISO_8859-7(1987) @tindex ISO-IR-126 @tindex ECMA-118 @tindex ELOT_928 @tindex GREEK8 @tindex GREEK @tindex csISOLatinGreek @tindex ISO8859-7 @tindex ISO8859_7 @code{ISO_8859-7}, @code{ISO_8859-7:1987}, @code{ISO-IR-126}, @code{ECMA-118}, @code{ELOT_928}, @code{GREEK8}, @code{GREEK}, @code{csISOLatinGreek}, @code{ISO8859-7} and @code{ISO8859_7} are aliases for this charset. @item ISO-8859-8 @tindex ISO-8859-8@r{, aliases} @tindex ISO_8859-8 @tindex ISO_8859-8(1988) @tindex ISO-IR-138 @tindex HEBREW @tindex csISOLatinHebrew @tindex ISO8859-8 @tindex ISO8859_8 @code{ISO_8859-8}, @code{ISO_8859-8:1988}, @code{ISO-IR-138}, @code{HEBREW}, @code{csISOLatinHebrew}, @code{ISO8859-8} and @code{ISO8859_8} are aliases for this charset. @item ISO-8859-9 @tindex ISO-8859-9@r{, aliases} @tindex ISO_8859-9 @tindex ISO_8859-9(1989) @tindex ISO-IR-148 @tindex LATIN5 @tindex L5 @tindex csISOLatin5 @tindex ISO8859-9 @tindex ISO8859_9 @code{ISO_8859-9}, @code{ISO_8859-9:1989}, @code{ISO-IR-148}, @code{LATIN5}, @code{L5}, @code{csISOLatin5}, @code{ISO8859-9} and @code{ISO8859_9} are aliases for this charset. @item ISO-8859-10 @tindex ISO-8859-10@r{, aliases} @tindex ISO_8859-10 @tindex ISO_8859-10(1992) @tindex ISO-IR-157 @tindex LATIN6 @tindex L6 @tindex csISOLatin6 @tindex ISO8859-10 @code{ISO_8859-10}, @code{ISO_8859-10:1992}, @code{ISO-IR-157}, @code{LATIN6}, @code{L6}, @code{csISOLatin6} and @code{ISO8859-10} are aliases for this charset. @item ISO-8859-13 @tindex ISO-8859-13@r{, aliases} @tindex ISO_8859-13 @tindex ISO-IR-179 @tindex LATIN7 @tindex L7 @code{ISO_8859-13}, @code{ISO-IR-179}, @code{LATIN7} and @code{L7} are aliases for this charset. @item ISO-8859-14 @tindex ISO-8859-14@r{, aliases} @tindex ISO_8859-14 @tindex ISO_8859-14(1998) @tindex ISO-IR-199 @tindex LATIN8 @tindex L8 @code{ISO_8859-14}, @code{ISO_8859-14:1998}, @code{ISO-IR-199}, @code{LATIN8} and @code{L8} are aliases for this charset. @item ISO-8859-15 @tindex ISO-8859-15@r{, aliases} @tindex ISO_8859-15 @tindex ISO_8859-15(1998) @tindex ISO-IR-203 @code{ISO_8859-15}, @code{ISO_8859-15:1998} and @code{ISO-IR-203} are aliases for this charset. @item ISO-8859-16 @tindex ISO-8859-16@r{, aliases} @tindex ISO_8859-16 @tindex ISO_8859-16(2000) @tindex ISO-IR-226 @code{ISO_8859-16}, @code{ISO_8859-16:2000} and @code{ISO-IR-226} are aliases for this charset. @item KOI8-R @tindex KOI8-R@r{, aliases} @tindex csKOI8R @code{csKOI8R} is an alias for this charset. @item KOI8-U @tindex KOI8-U @item KOI8-RU @tindex KOI8-RU @end table @item Windows 8-bit encodings @table @code @item CP1250 @tindex CP1250@r{, aliases} @tindex WINDOWS-1250 @tindex MS-EE @code{WINDOWS-1250} and @code{MS-EE} are aliases for this charset. @item CP1251 @tindex CP1251@r{, aliases} @tindex WINDOWS-1251 @tindex MS-CYRL @code{WINDOWS-1251} and @code{MS-CYRL} are aliases for this charset. @item CP1252 @tindex CP1252@r{, aliases} @tindex WINDOWS-1252 @tindex MS-ANSI @code{WINDOWS-1252} and @code{MS-ANSI} are aliases for this charset. @item CP1253 @tindex CP1253@r{, aliases} @tindex WINDOWS-1253 @tindex MS-GREEK @code{WINDOWS-1253} and @code{MS-GREEK} are aliases for this charset. @item CP1254 @tindex CP1254@r{, aliases} @tindex WINDOWS-1254 @tindex MS-TURK @code{WINDOWS-1254} and @code{MS-TURK} are aliases for this charset. @item CP1255 @tindex CP1255@r{, aliases} @tindex WINDOWS-1255 @tindex MS-HEBR @code{WINDOWS-1255} and @code{MS-HEBR} are aliases for this charset. @item CP1256 @tindex CP1256@r{, aliases} @tindex WINDOWS-1256 @tindex MS-ARAB @code{WINDOWS-1256} and @code{MS-ARAB} are aliases for this charset. @item CP1257 @tindex CP1257@r{, aliases} @tindex WINDOWS-1257 @tindex WINBALTRIM @code{WINDOWS-1257} and @code{WINBALTRIM} are aliases for this charset. @item CP1258 @tindex CP1258@r{, aliases} @tindex WINDOWS-1258 @code{WINDOWS-1258} is an alias for this charset. @end table @item DOS 8-bit encodings @table @code @item CP850 @tindex CP850@r{, aliases} @tindex IBM850 @tindex 850 @tindex csPC850Multilingual @code{IBM850}, @code{850} and @code{csPC850Multilingual} are aliases for this charset. @item CP866 @tindex CP866@r{, aliases} @tindex IBM866 @tindex 866 @tindex csIBM866 @code{IBM866}, @code{866} and @code{csIBM866} are aliases for this charset. @end table @item Macintosh 8-bit encodings @table @code @item MacRoman @tindex MacRoman@r{, aliases} @tindex Macintosh @tindex MAC @tindex csMacintosh @code{Macintosh}, @code{MAC} and @code{csMacintosh} are aliases for this charset. @item MacCentralEurope @tindex MacCentralEurope @item MacIceland @tindex MacIceland @item MacCroatian @tindex MacCroatian @item MacRomania @tindex MacRomania @item MacCyrillic @tindex MacCyrillic @item MacUkraine @tindex MacUkraine @item MacGreek @tindex MacGreek @item MacTurkish @tindex MacTurkish @item MacHebrew @tindex MacHebrew @item MacArabic @tindex MacArabic @item MacThai @tindex MacThai @end table @item Other platform specific 8-bit encodings @table @code @item HP-ROMAN8 @tindex HP-ROMAN8@r{, aliases} @tindex ROMAN8 @tindex R8 @tindex csHPRoman8 @code{ROMAN8}, @code{R8} and @code{csHPRoman8} are aliases for this charset. @item NEXTSTEP @tindex NEXTSTEP @end table @item Regional 8-bit encodings used for a single language @table @code @item ARMSCII-8 @tindex ARMSCII-8 @item Georgian-Academy @tindex Georgian-Academy @item Georgian-PS @tindex Georgian-PS @item MuleLao-1 @tindex MuleLao-1 @item CP1133 @tindex CP1133@r{, aliases} @tindex IBM-CP1133 @code{IBM-CP1133} is an alias for this charset. @item TIS-620 @tindex TIS-620@r{, aliases} @tindex TIS620 @tindex TIS620-0 @tindex TIS620.2529-1 @tindex TIS620.2533-0 @tindex TIS620.2533-1 @tindex ISO-IR-166 @code{TIS620}, @code{TIS620-0}, @code{TIS620.2529-1}, @code{TIS620.2533-0}, @code{TIS620.2533-1} and @code{ISO-IR-166} are aliases for this charset. @item CP874 @tindex CP874@r{, aliases} @tindex WINDOWS-874 @code{WINDOWS-874} is an alias for this charset. @item VISCII @tindex VISCII@r{, aliases} @tindex VISCII1.1-1 @tindex csVISCII @code{VISCII1.1-1} and @code{csVISCII} are aliases for this charset. @item TCVN @tindex TCVN@r{, aliases} @tindex TCVN-5712 @tindex TCVN5712-1 @tindex TCVN5712-1(1993) @code{TCVN-5712}, @code{TCVN5712-1} and @code{TCVN5712-1:1993} are aliases for this charset. @end table @item CJK character sets (not documented) @table @code @item JIS_C6220-1969-RO @tindex JIS_C6220-1969-RO@r{, aliases} @tindex ISO646-JP @tindex ISO-IR-14 @tindex JP @tindex csISO14JISC6220ro @code{ISO646-JP}, @code{ISO-IR-14}, @code{JP} and @code{csISO14JISC6220ro} are aliases for this charset. @item JIS_X0201 @tindex JIS_X0201@r{, aliases} @tindex JISX0201-1976 @tindex X0201 @tindex csHalfWidthKatakana @tindex JISX0201.1976-0 @tindex JIS0201 @code{JISX0201-1976}, @code{X0201}, @code{csHalfWidthKatakana}, @code{JISX0201.1976-0} and @code{JIS0201} are aliases for this charset. @item JIS_X0208 @tindex JIS_X0208@r{, aliases} @tindex JIS_X0208-1983 @tindex JIS_X0208-1990 @tindex JIS0208 @tindex X0208 @tindex ISO-IR-87 @tindex csISO87JISX0208 @tindex JISX0208.1983-0 @tindex JISX0208.1990-0 @tindex JIS0208 @code{JIS_X0208-1983}, @code{JIS_X0208-1990}, @code{JIS0208}, @code{X0208}, @code{ISO-IR-87}, @code{csISO87JISX0208}, @code{JISX0208.1983-0}, @code{JISX0208.1990-0} and @code{JIS0208} are aliases for this charset. @item JIS_X0212 @tindex JIS_X0212@r{, aliases} @tindex JIS_X0212.1990-0 @tindex JIS_X0212-1990 @tindex X0212 @tindex ISO-IR-159 @tindex csISO159JISX02121990 @tindex JISX0212.1990-0 @tindex JIS0212 @code{JIS_X0212.1990-0}, @code{JIS_X0212-1990}, @code{X0212}, @code{ISO-IR-159}, @code{csISO159JISX02121990}, @code{JISX0212.1990-0} and @code{JIS0212} are aliases for this charset. @item GB_1988-80 @tindex GB_1988-80@r{, aliases} @tindex ISO646-CN @tindex ISO-IR-57 @tindex CN @tindex csISO57GB1988 @code{ISO646-CN}, @code{ISO-IR-57}, @code{CN} and @code{csISO57GB1988} are aliases for this charset. @item GB_2312-80 @tindex GB_2312-80@r{, aliases} @tindex ISO-IR-58 @tindex csISO58GB231280 @tindex CHINESE @tindex GB2312.1980-0 @code{ISO-IR-58}, @code{csISO58GB231280}, @code{CHINESE} and @code{GB2312.1980-0} are aliases for this charset. @item ISO-IR-165 @tindex ISO-IR-165@r{, aliases} @tindex CN-GB-ISOIR165 @code{CN-GB-ISOIR165} is an alias for this charset. @item KSC_5601 @tindex KSC_5601@r{, aliases} @tindex KS_C_5601-1987 @tindex KS_C_5601-1989 @tindex ISO-IR-149 @tindex csKSC56011987 @tindex KOREAN @tindex KSC5601.1987-0 @tindex KSX1001(1992) @code{KS_C_5601-1987}, @code{KS_C_5601-1989}, @code{ISO-IR-149}, @code{csKSC56011987}, @code{KOREAN}, @code{KSC5601.1987-0} and @code{KSX1001:1992} are aliases for this charset. @end table @item CJK encodings @table @code @item EUC-JP @tindex EUC-JP@r{, aliases} @tindex EUCJP @tindex Extended_UNIX_Code_Packed_Format_for_Japanese @tindex csEUCPkdFmtJapanese @tindex EUC_JP @code{EUCJP}, @code{Extended_UNIX_Code_Packed_Format_for_Japanese}, @code{csEUCPkdFmtJapanese} and @code{EUC_JP} are aliases for this charset. @item SJIS @tindex SJIS@r{, aliases} @tindex SHIFT_JIS @tindex SHIFT-JIS @tindex MS_KANJI @tindex csShiftJIS @code{SHIFT_JIS}, @code{SHIFT-JIS}, @code{MS_KANJI} and @code{csShiftJIS} are aliases for this charset. @item CP932 @tindex CP932 @item ISO-2022-JP @tindex ISO-2022-JP@r{, aliases} @tindex csISO2022JP @tindex ISO2022JP @code{csISO2022JP} and @code{ISO2022JP} are aliases for this charset. @item ISO-2022-JP-1 @tindex ISO-2022-JP-1 @item ISO-2022-JP-2 @tindex ISO-2022-JP-2@r{, aliases} @tindex csISO2022JP2 @code{csISO2022JP2} is an alias for this charset. @item EUC-CN @tindex EUC-CN@r{, aliases} @tindex EUCCN @tindex GB2312 @tindex CN-GB @tindex csGB2312 @tindex EUC_CN @code{EUCCN}, @code{GB2312}, @code{CN-GB}, @code{csGB2312} and @code{EUC_CN} are aliases for this charset. @item GBK @tindex GBK@r{, aliases} @tindex CP936 @code{CP936} is an alias for this charset. @item GB18030 @tindex GB18030 @item ISO-2022-CN @tindex ISO-2022-CN@r{, aliases} @tindex csISO2022CN @tindex ISO2022CN @code{csISO2022CN} and @code{ISO2022CN} are aliases for this charset. @item ISO-2022-CN-EXT @tindex ISO-2022-CN-EXT @item HZ @tindex HZ@r{, aliases} @tindex HZ-GB-2312 @code{HZ-GB-2312} is an alias for this charset. @item EUC-TW @tindex EUC-TW@r{, aliases} @tindex EUCTW @tindex csEUCTW @tindex EUC_TW @code{EUCTW}, @code{csEUCTW} and @code{EUC_TW} are aliases for this charset. @item BIG5 @tindex BIG5@r{, aliases} @tindex BIG-5 @tindex BIG-FIVE @tindex BIGFIVE @tindex CN-BIG5 @tindex csBig5 @code{BIG-5}, @code{BIG-FIVE}, @code{BIGFIVE}, @code{CN-BIG5} and @code{csBig5} are aliases for this charset. @item CP950 @tindex CP950 @item BIG5HKSCS @tindex BIG5HKSCS @item EUC-KR @tindex EUC-KR@r{, aliases} @tindex EUCKR @tindex csEUCKR @tindex EUC_KR @code{EUCKR}, @code{csEUCKR} and @code{EUC_KR} are aliases for this charset. @item CP949 @tindex CP949@r{, aliases} @tindex UHC @code{UHC} is an alias for this charset. @item JOHAB @tindex JOHAB@r{, aliases} @tindex CP1361 @code{CP1361} is an alias for this charset. @item ISO-2022-KR @tindex ISO-2022-KR@r{, aliases} @tindex csISO2022KR @tindex ISO2022KR @code{csISO2022KR} and @code{ISO2022KR} are aliases for this charset. @item CHAR @tindex CHAR @item WCHAR_T @tindex WCHAR_T @end table @end itemize recode-3.6/doc/rfc1345.texi0100644000000000000000000010002407126661707014062 0ustar rootroot @item ANSI_X3.4-1968 @tindex ANSI_X3.4-1968@r{, aliases and source} @tindex 367 @tindex ANSI_X3.4-1986 @tindex ASCII @tindex CP367 @tindex IBM367 @tindex ISO646-US @tindex ISO_646.irv(1991) @tindex US-ASCII @tindex iso-ir-6 @tindex us @code{367}, @code{ANSI_X3.4-1986}, @code{ASCII}, @code{CP367}, @code{IBM367}, @code{ISO646-US}, @code{ISO_646.irv:1991}, @code{US-ASCII}, @code{iso-ir-6} and @code{us} are aliases for this charset. Source: ISO 2375 registry. @item ASMO_449 @tindex ASMO_449@r{, aliases and source} @tindex ISO_9036 @tindex arabic7 @tindex iso-ir-89 @code{ISO_9036}, @code{arabic7} and @code{iso-ir-89} are aliases for this charset. Source: ISO 2375 registry. @item BS_4730 @tindex BS_4730@r{, aliases and source} @tindex ISO646-GB @tindex gb @tindex iso-ir-4 @tindex uk @code{ISO646-GB}, @code{gb}, @code{iso-ir-4} and @code{uk} are aliases for this charset. Source: ISO 2375 registry. @item BS_viewdata @tindex BS_viewdata@r{, aliases and source} @tindex iso-ir-47 @code{iso-ir-47} is an alias for this charset. Source: ISO 2375 registry. @item CP1250 @tindex CP1250@r{, aliases and source} @tindex 1250 @tindex ms-ee @tindex windows-1250 @code{1250}, @code{ms-ee} and @code{windows-1250} are aliases for this charset. Source: UNICODE 1.0. @item CP1251 @tindex CP1251@r{, aliases and source} @tindex 1251 @tindex ms-cyrl @tindex windows-1251 @code{1251}, @code{ms-cyrl} and @code{windows-1251} are aliases for this charset. Source: UNICODE 1.0. @item CP1252 @tindex CP1252@r{, aliases and source} @tindex 1252 @tindex ms-ansi @tindex windows-1252 @code{1252}, @code{ms-ansi} and @code{windows-1252} are aliases for this charset. Source: UNICODE 1.0. @item CP1253 @tindex CP1253@r{, aliases and source} @tindex 1253 @tindex ms-greek @tindex windows-1253 @code{1253}, @code{ms-greek} and @code{windows-1253} are aliases for this charset. Source: UNICODE 1.0. @item CP1254 @tindex CP1254@r{, aliases and source} @tindex 1254 @tindex ms-turk @tindex windows-1254 @code{1254}, @code{ms-turk} and @code{windows-1254} are aliases for this charset. Source: UNICODE 1.0. @item CP1255 @tindex CP1255@r{, aliases and source} @tindex 1255 @tindex ms-hebr @tindex windows-1255 @code{1255}, @code{ms-hebr} and @code{windows-1255} are aliases for this charset. Source: UNICODE 1.0. @item CP1256 @tindex CP1256@r{, aliases and source} @tindex 1256 @tindex ms-arab @tindex windows-1256 @code{1256}, @code{ms-arab} and @code{windows-1256} are aliases for this charset. Source: UNICODE 1.0. @item CP1257 @tindex CP1257@r{, aliases and source} @tindex 1257 @tindex WinBaltRim @tindex windows-1257 @code{1257}, @code{WinBaltRim} and @code{windows-1257} are aliases for this charset. Source: CEN/TC304 N283. @item CSA_Z243.4-1985-1 @tindex CSA_Z243.4-1985-1@r{, aliases and source} @tindex ISO646-CA @tindex ca @tindex csa7-1 @tindex iso-ir-121 @code{ISO646-CA}, @code{ca}, @code{csa7-1} and @code{iso-ir-121} are aliases for this charset. Source: ISO 2375 registry. @item CSA_Z243.4-1985-2 @tindex CSA_Z243.4-1985-2@r{, aliases and source} @tindex ISO646-CA2 @tindex csa7-2 @tindex iso-ir-122 @code{ISO646-CA2}, @code{csa7-2} and @code{iso-ir-122} are aliases for this charset. Source: ISO 2375 registry. @item CSA_Z243.4-1985-gr @tindex CSA_Z243.4-1985-gr@r{, aliases and source} @tindex iso-ir-123 @code{iso-ir-123} is an alias for this charset. Source: ISO 2375 registry. @item CSN_369103 @tindex CSN_369103@r{, aliases and source} @tindex KOI-8_L2 @tindex iso-ir-139 @tindex koi8l2 @code{KOI-8_L2}, @code{iso-ir-139} and @code{koi8l2} are aliases for this charset. Source: ISO 2375 registry. @item CWI @tindex CWI@r{, aliases and source} @tindex CWI-2 @tindex cp-hu @code{CWI-2} and @code{cp-hu} are aliases for this charset. Source: Computerworld Sza'mita'stechnika vol 3 issue 13 1988-06-29. @item DEC-MCS @tindex DEC-MCS@r{, aliases and source} @tindex dec @code{dec} is an alias for this charset. VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986. @item DIN_66003 @tindex DIN_66003@r{, aliases and source} @tindex ISO646-DE @tindex de @tindex iso-ir-21 @code{ISO646-DE}, @code{de} and @code{iso-ir-21} are aliases for this charset. Source: ISO 2375 registry. @item DS_2089 @tindex DS_2089@r{, aliases and source} @tindex DS2089 @tindex ISO646-DK @tindex dk @code{DS2089}, @code{ISO646-DK} and @code{dk} are aliases for this charset. Source: Danish Standard, DS 2089, February 1974. @item EBCDIC-AT-DE @tindex EBCDIC-AT-DE@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-AT-DE-A @tindex EBCDIC-AT-DE-A@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-CA-FR @tindex EBCDIC-CA-FR@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-DK-NO @tindex EBCDIC-DK-NO@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-DK-NO-A @tindex EBCDIC-DK-NO-A@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-ES @tindex EBCDIC-ES@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-ES-A @tindex EBCDIC-ES-A@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-ES-S @tindex EBCDIC-ES-S@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-FI-SE @tindex EBCDIC-FI-SE@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-FI-SE-A @tindex EBCDIC-FI-SE-A@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-FR @tindex EBCDIC-FR@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-IS-FRISS @tindex EBCDIC-IS-FRISS@r{, aliases and source} @tindex friss @code{friss} is an alias for this charset. Source: Skyrsuvelar Rikisins og Reykjavikurborgar, feb 1982. @item EBCDIC-IT @tindex EBCDIC-IT@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-PT @tindex EBCDIC-PT@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-UK @tindex EBCDIC-UK@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item EBCDIC-US @tindex EBCDIC-US@r{, aliases and source} Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. @item ECMA-cyrillic @tindex ECMA-cyrillic@r{, aliases and source} @tindex ECMA-113 @tindex ECMA-113(1986) @tindex iso-ir-111 @code{ECMA-113}, @code{ECMA-113:1986} and @code{iso-ir-111} are aliases for this charset. Source: ISO 2375 registry. @item ES @tindex ES@r{, aliases and source} @tindex ISO646-ES @tindex iso-ir-17 @code{ISO646-ES} and @code{iso-ir-17} are aliases for this charset. Source: ISO 2375 registry. @item ES2 @tindex ES2@r{, aliases and source} @tindex ISO646-ES2 @tindex iso-ir-85 @code{ISO646-ES2} and @code{iso-ir-85} are aliases for this charset. Source: ISO 2375 registry. @item GB_1988-80 @tindex GB_1988-80@r{, aliases and source} @tindex ISO646-CN @tindex cn @tindex iso-ir-57 @code{ISO646-CN}, @code{cn} and @code{iso-ir-57} are aliases for this charset. Source: ISO 2375 registry. @item GOST_19768-87 @tindex GOST_19768-87@r{, aliases and source} @tindex ST_SEV_358-88 @tindex iso-ir-153 @code{ST_SEV_358-88} and @code{iso-ir-153} are aliases for this charset. Source: ISO 2375 registry. @item IBM037 @tindex IBM037@r{, aliases and source} @tindex 037 @tindex CP037 @tindex ebcdic-cp-ca @tindex ebcdic-cp-nl @tindex ebcdic-cp-us @tindex ebcdic-cp-wt @code{037}, @code{CP037}, @code{ebcdic-cp-ca}, @code{ebcdic-cp-nl}, @code{ebcdic-cp-us} and @code{ebcdic-cp-wt} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM038 @tindex IBM038@r{, aliases and source} @tindex 038 @tindex CP038 @tindex EBCDIC-INT @code{038}, @code{CP038} and @code{EBCDIC-INT} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM1004 @tindex IBM1004@r{, aliases and source} @tindex 1004 @tindex CP1004 @tindex os2latin1 @code{1004}, @code{CP1004} and @code{os2latin1} are aliases for this charset. Source: CEN/TC304 N283, 1994-02-04. @item IBM1026 @tindex IBM1026@r{, aliases and source} @tindex 1026 @tindex CP1026 @code{1026} and @code{CP1026} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM1047 @tindex IBM1047@r{, aliases and source} @tindex 1047 @tindex CP1047 @code{1047} and @code{CP1047} are aliases for this charset. Source: IBM Character Data Representation Architecture. Registry SC09-1391-00 p 150. @item IBM256 @tindex IBM256@r{, aliases and source} @tindex 256 @tindex CP256 @tindex EBCDIC-INT1 @code{256}, @code{CP256} and @code{EBCDIC-INT1} are aliases for this charset. Source: IBM Registry C-H 3-3220-050. @item IBM273 @tindex IBM273@r{, aliases and source} @tindex 273 @tindex CP273 @code{273} and @code{CP273} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM274 @tindex IBM274@r{, aliases and source} @tindex 274 @tindex CP274 @tindex EBCDIC-BE @code{274}, @code{CP274} and @code{EBCDIC-BE} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM275 @tindex IBM275@r{, aliases and source} @tindex 275 @tindex CP275 @tindex EBCDIC-BR @code{275}, @code{CP275} and @code{EBCDIC-BR} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM277 @tindex IBM277@r{, aliases and source} @tindex EBCDIC-CP-DK @tindex EBCDIC-CP-NO @code{EBCDIC-CP-DK} and @code{EBCDIC-CP-NO} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM278 @tindex IBM278@r{, aliases and source} @tindex 278 @tindex CP278 @tindex ebcdic-cp-fi @tindex ebcdic-cp-se @code{278}, @code{CP278}, @code{ebcdic-cp-fi} and @code{ebcdic-cp-se} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM280 @tindex IBM280@r{, aliases and source} @tindex 280 @tindex CP280 @tindex ebcdic-cp-it @code{280}, @code{CP280} and @code{ebcdic-cp-it} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM281 @tindex IBM281@r{, aliases and source} @tindex 281 @tindex CP281 @tindex EBCDIC-JP-E @code{281}, @code{CP281} and @code{EBCDIC-JP-E} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM284 @tindex IBM284@r{, aliases and source} @tindex 284 @tindex CP284 @tindex ebcdic-cp-es @code{284}, @code{CP284} and @code{ebcdic-cp-es} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM285 @tindex IBM285@r{, aliases and source} @tindex 285 @tindex CP285 @tindex ebcdic-cp-gb @code{285}, @code{CP285} and @code{ebcdic-cp-gb} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM290 @tindex IBM290@r{, aliases and source} @tindex 290 @tindex CP290 @tindex EBCDIC-JP-kana @code{290}, @code{CP290} and @code{EBCDIC-JP-kana} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM297 @tindex IBM297@r{, aliases and source} @tindex 297 @tindex CP297 @tindex ebcdic-cp-fr @code{297}, @code{CP297} and @code{ebcdic-cp-fr} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM420 @tindex IBM420@r{, aliases and source} @tindex 420 @tindex CP420 @tindex ebcdic-cp-ar1 @code{420}, @code{CP420} and @code{ebcdic-cp-ar1} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. IBM NLS RM p 11-11. @item IBM423 @tindex IBM423@r{, aliases and source} @tindex 423 @tindex CP423 @tindex ebcdic-cp-gr @code{423}, @code{CP423} and @code{ebcdic-cp-gr} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM424 @tindex IBM424@r{, aliases and source} @tindex 424 @tindex CP424 @tindex ebcdic-cp-he @code{424}, @code{CP424} and @code{ebcdic-cp-he} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM437 @tindex IBM437@r{, aliases and source} @tindex 437 @tindex CP437 @code{437} and @code{CP437} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM500 @tindex IBM500@r{, aliases and source} @tindex 500 @tindex 500V1 @tindex CP500 @tindex ebcdic-cp-be @tindex ebcdic-cp-ch @code{500}, @code{500V1}, @code{CP500}, @code{ebcdic-cp-be} and @code{ebcdic-cp-ch} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM850 @tindex IBM850@r{, aliases and source} @tindex 850 @tindex CP850 @code{850} and @code{CP850} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. Source: UNICODE 1.0. @item IBM851 @tindex IBM851@r{, aliases and source} @tindex 851 @tindex CP851 @code{851} and @code{CP851} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM852 @tindex IBM852@r{, aliases and source} @tindex 852 @tindex CP852 @tindex pcl2 @tindex pclatin2 @code{852}, @code{CP852}, @code{pcl2} and @code{pclatin2} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM855 @tindex IBM855@r{, aliases and source} @tindex 855 @tindex CP855 @code{855} and @code{CP855} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM857 @tindex IBM857@r{, aliases and source} @tindex 857 @tindex CP857 @code{857} and @code{CP857} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM860 @tindex IBM860@r{, aliases and source} @tindex 860 @tindex CP860 @code{860} and @code{CP860} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM861 @tindex IBM861@r{, aliases and source} @tindex 861 @tindex CP861 @tindex cp-is @code{861}, @code{CP861} and @code{cp-is} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM862 @tindex IBM862@r{, aliases and source} @tindex 862 @tindex CP862 @code{862} and @code{CP862} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM863 @tindex IBM863@r{, aliases and source} @tindex 863 @tindex CP863 @code{863} and @code{CP863} are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. @item IBM864 @tindex IBM864@r{, aliases and source} @tindex 864 @tindex CP864 @code{864} and @code{CP864} are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. @item IBM865 @tindex IBM865@r{, aliases and source} @tindex 865 @tindex CP865 @code{865} and @code{CP865} are aliases for this charset. Source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987). @item IBM868 @tindex IBM868@r{, aliases and source} @tindex 868 @tindex CP868 @tindex cp-ar @code{868}, @code{CP868} and @code{cp-ar} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM869 @tindex IBM869@r{, aliases and source} @tindex 869 @tindex CP869 @tindex cp-gr @code{869}, @code{CP869} and @code{cp-gr} are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. @item IBM870 @tindex IBM870@r{, aliases and source} @tindex 870 @tindex CP870 @tindex ebcdic-cp-roece @tindex ebcdic-cp-yu @code{870}, @code{CP870}, @code{ebcdic-cp-roece} and @code{ebcdic-cp-yu} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM871 @tindex IBM871@r{, aliases and source} @tindex 871 @tindex CP871 @tindex ebcdic-cp-is @code{871}, @code{CP871} and @code{ebcdic-cp-is} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM875 @tindex IBM875@r{, aliases and source} @tindex 875 @tindex CP875 @tindex EBCDIC-Greek @code{875}, @code{CP875} and @code{EBCDIC-Greek} are aliases for this charset. Source: UNICODE 1.0. @item IBM880 @tindex IBM880@r{, aliases and source} @tindex 880 @tindex CP880 @tindex EBCDIC-Cyrillic @code{880}, @code{CP880} and @code{EBCDIC-Cyrillic} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM891 @tindex IBM891@r{, aliases and source} @tindex 891 @tindex CP891 @code{891} and @code{CP891} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM903 @tindex IBM903@r{, aliases and source} @tindex 903 @tindex CP903 @code{903} and @code{CP903} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM904 @tindex IBM904@r{, aliases and source} @tindex 904 @tindex CP904 @code{904} and @code{CP904} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IBM905 @tindex IBM905@r{, aliases and source} @tindex 905 @tindex CP905 @tindex ebcdic-cp-tr @code{905}, @code{CP905} and @code{ebcdic-cp-tr} are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. @item IBM918 @tindex IBM918@r{, aliases and source} @tindex 918 @tindex CP918 @tindex ebcdic-cp-ar2 @code{918}, @code{CP918} and @code{ebcdic-cp-ar2} are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. @item IEC_P27-1 @tindex IEC_P27-1@r{, aliases and source} @tindex iso-ir-143 @code{iso-ir-143} is an alias for this charset. Source: ISO 2375 registry. @item INIS @tindex INIS@r{, aliases and source} @tindex iso-ir-49 @code{iso-ir-49} is an alias for this charset. Source: ISO 2375 registry. @item INIS-8 @tindex INIS-8@r{, aliases and source} @tindex iso-ir-50 @code{iso-ir-50} is an alias for this charset. Source: ISO 2375 registry. @item INIS-cyrillic @tindex INIS-cyrillic@r{, aliases and source} @tindex iso-ir-51 @code{iso-ir-51} is an alias for this charset. Source: ISO 2375 registry. @item INVARIANT @tindex INVARIANT@r{, aliases and source} @tindex iso-ir-170 @code{iso-ir-170} is an alias for this charset. @item ISO-8859-1 @tindex ISO-8859-1@r{, aliases and source} @tindex 819 @tindex CP819 @tindex IBM819 @tindex ISO8859-1 @tindex ISO_8859-1 @tindex ISO_8859-1(1987) @tindex iso-ir-100 @tindex l1 @tindex latin1 @code{819}, @code{CP819}, @code{IBM819}, @code{ISO8859-1}, @code{ISO_8859-1}, @code{ISO_8859-1:1987}, @code{iso-ir-100}, @code{l1} and @code{latin1} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-10 @tindex ISO-8859-10@r{, aliases and source} @tindex ISO8859-10 @tindex ISO_8859-10 @tindex ISO_8859-10(1993) @tindex L6 @tindex iso-ir-157 @tindex latin6 @code{ISO8859-10}, @code{ISO_8859-10}, @code{ISO_8859-10:1993}, @code{L6}, @code{iso-ir-157} and @code{latin6} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-13 @tindex ISO-8859-13@r{, aliases and source} @tindex ISO8859-13 @tindex ISO_8859-13 @tindex ISO_8859-13(1998) @tindex iso-baltic @tindex iso-ir-179a @tindex l7 @tindex latin7 @code{ISO8859-13}, @code{ISO_8859-13}, @code{ISO_8859-13:1998}, @code{iso-baltic}, @code{iso-ir-179a}, @code{l7} and @code{latin7} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-14 @tindex ISO-8859-14@r{, aliases and source} @tindex ISO8859-14 @tindex ISO_8859-14 @tindex ISO_8859-14(1998) @tindex iso-celtic @tindex iso-ir-199 @tindex l8 @tindex latin8 @code{ISO8859-14}, @code{ISO_8859-14}, @code{ISO_8859-14:1998}, @code{iso-celtic}, @code{iso-ir-199}, @code{l8} and @code{latin8} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-15 @tindex ISO-8859-15@r{, aliases and source} @tindex ISO8859-15 @tindex ISO_8859-15 @tindex ISO_8859-15(1998) @tindex iso-ir-203 @tindex l9 @tindex latin9 @code{ISO8859-15}, @code{ISO_8859-15}, @code{ISO_8859-15:1998}, @code{iso-ir-203}, @code{l9} and @code{latin9} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-2 @tindex ISO-8859-2@r{, aliases and source} @tindex 912 @tindex CP912 @tindex IBM912 @tindex ISO8859-2 @tindex ISO_8859-2 @tindex ISO_8859-2(1987) @tindex iso-ir-101 @tindex l2 @tindex latin2 @code{912}, @code{CP912}, @code{IBM912}, @code{ISO8859-2}, @code{ISO_8859-2}, @code{ISO_8859-2:1987}, @code{iso-ir-101}, @code{l2} and @code{latin2} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-3 @tindex ISO-8859-3@r{, aliases and source} @tindex ISO8859-3 @tindex ISO_8859-3 @tindex ISO_8859-3(1988) @tindex iso-ir-109 @tindex l3 @tindex latin3 @code{ISO8859-3}, @code{ISO_8859-3}, @code{ISO_8859-3:1988}, @code{iso-ir-109}, @code{l3} and @code{latin3} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-4 @tindex ISO-8859-4@r{, aliases and source} @tindex ISO8859-4 @tindex ISO_8859-4 @tindex ISO_8859-4(1988) @tindex iso-ir-110 @tindex l4 @tindex latin4 @code{ISO8859-4}, @code{ISO_8859-4}, @code{ISO_8859-4:1988}, @code{iso-ir-110}, @code{l4} and @code{latin4} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-5 @tindex ISO-8859-5@r{, aliases and source} @tindex ISO8859-5 @tindex ISO_8859-5 @tindex ISO_8859-5(1988) @tindex cyrillic @tindex iso-ir-144 @code{ISO8859-5}, @code{ISO_8859-5}, @code{ISO_8859-5:1988}, @code{cyrillic} and @code{iso-ir-144} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-6 @tindex ISO-8859-6@r{, aliases and source} @tindex ASMO-708 @tindex ECMA-114 @tindex ISO8859-6 @tindex ISO_8859-6 @tindex ISO_8859-6(1987) @tindex arabic @tindex iso-ir-127 @code{ASMO-708}, @code{ECMA-114}, @code{ISO8859-6}, @code{ISO_8859-6}, @code{ISO_8859-6:1987}, @code{arabic} and @code{iso-ir-127} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-7 @tindex ISO-8859-7@r{, aliases and source} @tindex ECMA-118 @tindex ELOT_928 @tindex ISO8859-7 @tindex ISO_8859-7 @tindex ISO_8859-7(1987) @tindex greek @tindex greek8 @tindex iso-ir-126 @code{ECMA-118}, @code{ELOT_928}, @code{ISO8859-7}, @code{ISO_8859-7}, @code{ISO_8859-7:1987}, @code{greek}, @code{greek8} and @code{iso-ir-126} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-8 @tindex ISO-8859-8@r{, aliases and source} @tindex ISO8859-8 @tindex ISO_8859-8 @tindex ISO_8859-8(1988) @tindex hebrew @tindex iso-ir-138 @code{ISO8859-8}, @code{ISO_8859-8}, @code{ISO_8859-8:1988}, @code{hebrew} and @code{iso-ir-138} are aliases for this charset. Source: ISO 2375 registry. @item ISO-8859-9 @tindex ISO-8859-9@r{, aliases and source} @tindex ISO8859-9 @tindex ISO_8859-9 @tindex ISO_8859-9(1989) @tindex iso-ir-148 @tindex l5 @tindex latin5 @code{ISO8859-9}, @code{ISO_8859-9}, @code{ISO_8859-9:1989}, @code{iso-ir-148}, @code{l5} and @code{latin5} are aliases for this charset. Source: ISO 2375 registry. @item ISO_10367-box @tindex ISO_10367-box@r{, aliases and source} @tindex iso-ir-155 @code{iso-ir-155} is an alias for this charset. Source: ISO 2375 registry. @item ISO_2033-1983 @tindex ISO_2033-1983@r{, aliases and source} @tindex e13b @tindex iso-ir-98 @code{e13b} and @code{iso-ir-98} are aliases for this charset. Source: ISO 2375 registry. @item ISO_5427 @tindex ISO_5427@r{, aliases and source} @tindex iso-ir-37 @code{iso-ir-37} is an alias for this charset. Source: ISO 2375 registry. @item ISO_5427-ext @tindex ISO_5427-ext@r{, aliases and source} @tindex ISO_5427(1981) @tindex iso-ir-54 @code{ISO_5427:1981} and @code{iso-ir-54} are aliases for this charset. Source: ISO 2375 registry. @item ISO_5428 @tindex ISO_5428@r{, aliases and source} @tindex ISO_5428(1980) @tindex iso-ir-55 @code{ISO_5428:1980} and @code{iso-ir-55} are aliases for this charset. Source: ISO 2375 registry. @item ISO_646.basic @tindex ISO_646.basic@r{, aliases and source} @tindex ISO_646.basic(1983) @tindex ref @code{ISO_646.basic:1983} and @code{ref} are aliases for this charset. Source: ISO 2375 registry. @item ISO_646.irv @tindex ISO_646.irv@r{, aliases and source} @tindex ISO_646.irv(1983) @tindex irv @tindex iso-ir-2 @code{ISO_646.irv:1983}, @code{irv} and @code{iso-ir-2} are aliases for this charset. Source: ISO 2375 registry. @item ISO_6937-2-25 @tindex ISO_6937-2-25@r{, aliases and source} @tindex iso-ir-152 @code{iso-ir-152} is an alias for this charset. Source: ISO 2375 registry. @item ISO_8859-supp @tindex ISO_8859-supp@r{, aliases and source} @tindex iso-ir-154 @tindex latin1-2-5 @code{iso-ir-154} and @code{latin1-2-5} are aliases for this charset. Source: ISO 2375 registry. @item IT @tindex IT@r{, aliases and source} @tindex ISO646-IT @tindex iso-ir-15 @code{ISO646-IT} and @code{iso-ir-15} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6220-1969-jp @tindex JIS_C6220-1969-jp@r{, aliases and source} @tindex JIS_C6220-1969 @tindex iso-ir-13 @tindex katakana @tindex x0201-7 @code{JIS_C6220-1969}, @code{iso-ir-13}, @code{katakana} and @code{x0201-7} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6220-1969-ro @tindex JIS_C6220-1969-ro@r{, aliases and source} @tindex ISO646-JP @tindex iso-ir-14 @tindex jp @code{ISO646-JP}, @code{iso-ir-14} and @code{jp} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-a @tindex JIS_C6229-1984-a@r{, aliases and source} @tindex jp-ocr-a @code{jp-ocr-a} is an alias for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-b @tindex JIS_C6229-1984-b@r{, aliases and source} @tindex ISO646-JP-OCR-B @tindex jp-ocr-b @code{ISO646-JP-OCR-B} and @code{jp-ocr-b} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-b-add @tindex JIS_C6229-1984-b-add@r{, aliases and source} @tindex iso-ir-93 @tindex jp-ocr-b-add @code{iso-ir-93} and @code{jp-ocr-b-add} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-hand @tindex JIS_C6229-1984-hand@r{, aliases and source} @tindex iso-ir-94 @tindex jp-ocr-hand @code{iso-ir-94} and @code{jp-ocr-hand} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-hand-add @tindex JIS_C6229-1984-hand-add@r{, aliases and source} @tindex iso-ir-95 @tindex jp-ocr-hand-add @code{iso-ir-95} and @code{jp-ocr-hand-add} are aliases for this charset. Source: ISO 2375 registry. @item JIS_C6229-1984-kana @tindex JIS_C6229-1984-kana@r{, aliases and source} @tindex iso-ir-96 @code{iso-ir-96} is an alias for this charset. Source: ISO 2375 registry. @item JIS_X0201 @tindex JIS_X0201@r{, aliases and source} @tindex X0201 @code{X0201} is an alias for this charset. @item JUS_I.B1.002 @tindex JUS_I.B1.002@r{, aliases and source} @tindex ISO646-YU @tindex iso-ir-141 @tindex js @tindex yu @code{ISO646-YU}, @code{iso-ir-141}, @code{js} and @code{yu} are aliases for this charset. Source: ISO 2375 registry. @item JUS_I.B1.003-mac @tindex JUS_I.B1.003-mac@r{, aliases and source} @tindex iso-ir-147 @tindex macedonian @code{iso-ir-147} and @code{macedonian} are aliases for this charset. Source: ISO 2375 registry. @item JUS_I.B1.003-serb @tindex JUS_I.B1.003-serb@r{, aliases and source} @tindex iso-ir-146 @tindex serbian @code{iso-ir-146} and @code{serbian} are aliases for this charset. Source: ISO 2375 registry. @item KOI-7 @tindex KOI-7@r{, aliases and source} Source: Andrey A. Chernov . @item KOI-8 @tindex KOI-8@r{, aliases and source} @tindex GOST_19768-74 @code{GOST_19768-74} is an alias for this charset. Source: Andrey A. Chernov . @item KOI8-R @tindex KOI8-R@r{, aliases and source} Source: RFC1489 via Gabor Kiss . And Andrey A. Chernov . @item KOI8-RU @tindex KOI8-RU@r{, aliases and source} Source: http://cad.ntu-kpi.kiev.ua/multiling/koi8-ru/. @item KOI8-U @tindex KOI8-U@r{, aliases and source} Source: RFC 2319. Mibenum: 2088. Source: http://www.net.ua/KOI8-U/. @item KSC5636 @tindex KSC5636@r{, aliases and source} @tindex ISO646-KR @code{ISO646-KR} is an alias for this charset. @item Latin-greek-1 @tindex Latin-greek-1@r{, aliases and source} @tindex iso-ir-27 @code{iso-ir-27} is an alias for this charset. Source: ISO 2375 registry. @item MSZ_7795.3 @tindex MSZ_7795.3@r{, aliases and source} @tindex ISO646-HU @tindex hu @tindex iso-ir-86 @code{ISO646-HU}, @code{hu} and @code{iso-ir-86} are aliases for this charset. Source: ISO 2375 registry. @item NATS-DANO @tindex NATS-DANO@r{, aliases and source} @tindex iso-ir-9-1 @code{iso-ir-9-1} is an alias for this charset. Source: ISO 2375 registry. @item NATS-DANO-ADD @tindex NATS-DANO-ADD@r{, aliases and source} @tindex iso-ir-9-2 @code{iso-ir-9-2} is an alias for this charset. Source: ISO 2375 registry. @item NATS-SEFI @tindex NATS-SEFI@r{, aliases and source} @tindex iso-ir-8-1 @code{iso-ir-8-1} is an alias for this charset. Source: ISO 2375 registry. @item NATS-SEFI-ADD @tindex NATS-SEFI-ADD@r{, aliases and source} @tindex iso-ir-8-2 @code{iso-ir-8-2} is an alias for this charset. Source: ISO 2375 registry. @item NC_NC00-10 @tindex NC_NC00-10@r{, aliases and source} @tindex ISO646-CU @tindex NC_NC00-10(81) @tindex cuba @tindex iso-ir-151 @code{ISO646-CU}, @code{NC_NC00-10:81}, @code{cuba} and @code{iso-ir-151} are aliases for this charset. Source: ISO 2375 registry. @item NF_Z_62-010 @tindex NF_Z_62-010@r{, aliases and source} @tindex ISO646-FR @tindex fr @tindex iso-ir-69 @code{ISO646-FR}, @code{fr} and @code{iso-ir-69} are aliases for this charset. Source: ISO 2375 registry. @item NF_Z_62-010_(1973) @tindex NF_Z_62-010_(1973)@r{, aliases and source} @tindex ISO646-FR1 @tindex iso-ir-25 @code{ISO646-FR1} and @code{iso-ir-25} are aliases for this charset. Source: ISO 2375 registry. @item NS_4551-1 @tindex NS_4551-1@r{, aliases and source} @tindex ISO646-NO @tindex iso-ir-60 @tindex no @code{ISO646-NO}, @code{iso-ir-60} and @code{no} are aliases for this charset. Source: ISO 2375 registry. @item NS_4551-2 @tindex NS_4551-2@r{, aliases and source} @tindex ISO646-NO2 @tindex iso-ir-61 @tindex no2 @code{ISO646-NO2}, @code{iso-ir-61} and @code{no2} are aliases for this charset. Source: ISO 2375 registry. @item NeXTSTEP @tindex NeXTSTEP@r{, aliases and source} @tindex next @code{next} is an alias for this charset. Source: Peter Svanberg - psv@@nada.kth.se. @item PT @tindex PT@r{, aliases and source} @tindex ISO646-PT @tindex iso-ir-16 @code{ISO646-PT} and @code{iso-ir-16} are aliases for this charset. Source: ISO 2375 registry. @item PT2 @tindex PT2@r{, aliases and source} @tindex ISO646-PT2 @tindex iso-ir-84 @code{ISO646-PT2} and @code{iso-ir-84} are aliases for this charset. Source: ISO 2375 registry. @item SEN_850200_B @tindex SEN_850200_B@r{, aliases and source} @tindex FI @tindex ISO646-FI @tindex ISO646-SE @tindex SS636127 @tindex iso-ir-10 @tindex se @code{FI}, @code{ISO646-FI}, @code{ISO646-SE}, @code{SS636127}, @code{iso-ir-10} and @code{se} are aliases for this charset. Source: ISO 2375 registry. @item SEN_850200_C @tindex SEN_850200_C@r{, aliases and source} @tindex ISO646-SE2 @tindex iso-ir-11 @tindex se2 @code{ISO646-SE2}, @code{iso-ir-11} and @code{se2} are aliases for this charset. Source: ISO 2375 registry. @item T.61-7bit @tindex T.61-7bit@r{, aliases and source} @tindex iso-ir-102 @code{iso-ir-102} is an alias for this charset. Source: ISO 2375 registry. @item baltic @tindex baltic@r{, aliases and source} @tindex iso-ir-179 @code{iso-ir-179} is an alias for this charset. Source: ISO 2375 registry. &g1esc x2d56 &g2esc x2e56 &g3esc x2f56. @item greek-ccitt @tindex greek-ccitt@r{, aliases and source} @tindex iso-ir-150 @code{iso-ir-150} is an alias for this charset. Source: ISO 2375 registry. @item greek7 @tindex greek7@r{, aliases and source} @tindex iso-ir-88 @code{iso-ir-88} is an alias for this charset. Source: ISO 2375 registry. @item greek7-old @tindex greek7-old@r{, aliases and source} @tindex iso-ir-18 @code{iso-ir-18} is an alias for this charset. Source: ISO 2375 registry. @item hp-roman8 @tindex hp-roman8@r{, aliases and source} @tindex r8 @tindex roman8 @code{r8} and @code{roman8} are aliases for this charset. Source: LaserJet IIP Printer User's Manual,. HP part no 33471-90901, Hewlet-Packard, June 1989. @item latin-greek @tindex latin-greek@r{, aliases and source} @tindex iso-ir-19 @code{iso-ir-19} is an alias for this charset. Source: ISO 2375 registry. @item mac-is @tindex mac-is@r{, aliases and source} @item macintosh @tindex macintosh@r{, aliases and source} @tindex mac @code{mac} is an alias for this charset. Source: The Unicode Standard ver 1.0, ISBN 0-201-56788-1, Oct 1991. @item macintosh_ce @tindex macintosh_ce@r{, aliases and source} @tindex macce @code{macce} is an alias for this charset. Source: Macintosh CE fonts. @item sami @tindex sami@r{, aliases and source} @tindex iso-ir-158 @tindex lap @tindex latin-lap @code{iso-ir-158}, @code{lap} and @code{latin-lap} are aliases for this charset. Source: ISO 2375 registry. recode-3.6/doc/File-Latin10100644000000000000000000000406106411766062014030 0ustar rootrootFrom Martin Maechler , on 1993-12-30. Here are ALL codes 128 - 255 [== OKTAL 200 - 377 ] you see ISO-Latin1 ---------------------------- --------- ---------- To produce such a letter in Emacs, you type qNNN where q or "C-q" or "^q" is and "Q" , and NNN = OCTAL code BETTER: With 'iso-insert' [now in our default], ------- type ([ C-x 8 " a ]) to get ä --> C-x 8 C-h gives bindings NUCH BETTER: with "/u/sfs/emacs/international.el": =========== Alt + a = A-a |--> ä, A-O |--> Ö , etc. Note that \200 - \236 [the first 32, 128--160] are NOT ISO-latin1 displayed: €‚ƒ„…†‡ ||| ˆ‰Š‹ŒŽ ‘’“”•–— ||| ˜™š›œž Note that \240 is VERY funny "invisible", makes things reversevideo../invisible depending on Emacs version. For this reason, I OMIT it in the following [Enter it with ^Q240]: Dec Oct Dec Oct ¡¢£¤¥¦§ ¨©ª«¬­®¯ 160 240: 01234567 168 250: 01234567 °±²³´µ¶· ¸¹º»¼½¾¿ 176 260: 01234567 184 270: 01234567 ÀÁÂÃÄÅÆÇ ÈÉÊËÌÍÎÏ 192 300: 01234567 200 310: 01234567 ÐÑÒÓÔÕÖ× ØÙÚÛÜÝÞß 208 320: 01234567 216 330: 01234567 àáâãäåæç èéêëìíîï 224 340: 01234567 232 350: 01234567 ðñòóôõö÷ øùúûüýþÿ 240 360: 01234567 248 370: 01234567 -------------- Ein paar Beispiele / some examples [using OCT code] ö <-| 366 - 40 = 326 |-> Ö ä <-| 344 - 40 = 304 |-> Ä ü <-| 374 - 40 = 334 |-> Ü Texte: Österreich ist für Zürcher und Zürcherinnen eigentlich näher als das Bärner Oberland, aber wer möchte wohl Kärnten mit einem Besuch beglücken ? Peter Bühlmann, Markus Hürzeler, Prof. Hansruedi Künsch, Frau Christina Künzli, Martin Mächler -- alle hätten gerne ihre Namen mit Umlauten. Ob dies Markus Äbi wohl auch so sähe ? Pour Paul-André ou Étienne, c'est plustôt les accents aigus, grave et circonflexes, ça c'est clair. El Niño, das ist ein warmer Wind in der südlichen Hemisphäre... «3·4 = 3 × 4 = 12» oder «(¯2)² = 4» oder « 1÷2 = ½ » schreiben sich auch schöner... recode-3.6/doc/help2man0100755000000000000000000002644507132721572013544 0ustar rootroot#!/usr/bin/perl -w # Generate a short man page from --help and --version output. # Copyright © 1997, 1998, 1999, 2000 Free Software Foundation, Inc. # This program 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. # This program 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 this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Written by Brendan O'Dea # Available from ftp://ftp.gnu.org/gnu/help2man/ use 5.004; use strict; use Getopt::Long; use Text::Tabs qw(expand); use POSIX qw(strftime setlocale LC_TIME); my $this_program = 'help2man'; my $this_version = '1.022'; my $version_info = < EOT my $help_info = <. EOT my $section = 1; my ($opt_name, @opt_include, $opt_output, $opt_no_info); # Parse options. Getopt::Long::config('bundling'); GetOptions ( 'n|name=s' => \$opt_name, 's|section=s' => \$section, 'i|include=s' => sub { push @opt_include, [ pop, 1 ] }, 'I|opt-include=s' => sub { push @opt_include, [ pop, 0 ] }, 'o|output=s' => \$opt_output, 'N|no-info' => \$opt_no_info, help => sub { print $help_info; exit }, version => sub { print $version_info; exit }, ) or die $help_info; die $help_info unless @ARGV == 1; my %include = (); my %append = (); my @include = (); # retain order given in include file # Provide replacement `quote-regex' operator for pre-5.005. BEGIN { eval q(sub qr { '' =~ $_[0]; $_[0] }) if $] < 5.005 } # Process include file (if given). Format is: # # [section name] # verbatim text # # or # # /pattern/ # verbatim text # for (@opt_include) { my ($inc, $required) = @$_; next unless -f $inc or $required; die "$this_program: can't open `$inc' ($!)\n" unless open INC, $inc; my $key; my $hash = \%include; while () { # [section] if (/^\[([^]]+)\]/) { $key = uc $1; $key =~ s/^\s+//; $key =~ s/\s+$//; $hash = \%include; push @include, $key unless $include{$key}; next; } # /pattern/ if (m!^/(.*)/([ims]*)!) { my $pat = $2 ? "(?$2)$1" : $1; # Check pattern. eval { $key = qr($pat) }; if ($@) { $@ =~ s/ at .*? line \d.*//; die "$inc:$.:$@"; } $hash = \%append; next; } # Silently ignore anything before the first # section--allows for comments and revision info. next unless $key; $hash->{$key} ||= ''; $hash->{$key} .= $_; } close INC; die "$this_program: no valid information found in `$inc'\n" unless $key; } # Compress trailing blank lines. for my $hash (\(%include, %append)) { for (keys %$hash) { $hash->{$_} =~ s/\n+$/\n/ } } # Turn off localisation of executable's ouput. @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; # Turn off localisation of date (for strftime). setlocale LC_TIME, 'C'; # Grab help and version info from executable. my ($help_text, $version_text) = map { join '', map { s/ +$//; expand $_ } `$ARGV[0] --$_ 2>/dev/null` or die "$this_program: can't get `--$_' info from $ARGV[0]\n" } qw(help version); my $date = strftime "%B %Y", localtime; (my $program = $ARGV[0]) =~ s!.*/!!; my $package = $program; my $version; if ($opt_output) { unlink $opt_output or die "$this_program: can't unlink $opt_output ($!)\n" if -e $opt_output; open STDOUT, ">$opt_output" or die "$this_program: can't create $opt_output ($!)\n"; } # The first line of the --version information is assumed to be in one # of the following formats: # # # # {GNU,Free} # ({GNU,Free} ) # - {GNU,Free} # # and seperated from any copyright/author details by a blank line. ($_, $version_text) = split /\n+/, $version_text, 2; if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/) { $program = $1; $package = $2; $version = $3; } elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/) { $program = $2; $package = $1 ? "$1$2" : $2; $version = $3; } else { $version = $_; } $program =~ s!.*/!!; # No info for `info' itself. $opt_no_info = 1 if $program eq 'info'; # --name overrides --include contents. $include{NAME} = "$program \\- $opt_name\n" if $opt_name; # Default (useless) NAME paragraph. $include{NAME} ||= "$program \\- manual page for $program $version\n"; # Man pages traditionally have the page title in caps. my $PROGRAM = uc $program; # Extract usage clause(s) [if any] for SYNOPSIS. if ($help_text =~ s/^Usage:( +(\S+))(.*)((?:\n(?: {6}\1| *or: +\S).*)*)//m) { my @syn = $2 . $3; if ($_ = $4) { s/^\n//; for (split /\n/) { s/^ *(or: +)?//; push @syn, $_ } } my $synopsis = ''; for (@syn) { $synopsis .= ".br\n" if $synopsis; s!^\S*/!!; s/^(\S+) *//; $synopsis .= ".B $1\n"; s/\s+$//; s/(([][]|\.\.+)+)/\\fR$1\\fI/g; s/^/\\fI/ unless s/^\\fR//; $_ .= '\fR'; s/(\\fI)( *)/$2$1/g; s/\\fI\\fR//g; s/^\\fR//; s/\\fI$//; s/^\./\\&./; $synopsis .= "$_\n"; } $include{SYNOPSIS} ||= $synopsis; } # Process text, initial section is DESCRIPTION. my $sect = 'DESCRIPTION'; $_ = "$help_text\n\n$version_text"; # Normalise paragraph breaks. s/^\n+//; s/\n*$/\n/; s/\n\n+/\n\n/g; # Temporarily exchange leading dots and backslashes for tokens. s/^\./\x80/mg; s/\\/\x81/g; # Start a new paragraph (if required) for these. s/([^\n])\n(Report +bugs|Email +bug +reports +to|Written +by)/$1\n\n$2/g; sub convert_option; while (length) { # Convert some standard paragraph names. if (s/^(Options|Examples): *\n//) { $sect = uc $1; next; } # Copyright section if (/^Copyright +[(\xa9]/) { $sect = 'COPYRIGHT'; $include{$sect} ||= ''; $include{$sect} .= ".PP\n" if $include{$sect}; my $copy; ($copy, $_) = split /\n\n/, $_, 2; for ($copy) { # Add back newline s/\n*$/\n/; # Convert iso9959-1 copyright symbol or (c) to nroff # character. s/^Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/mg; # Insert line breaks before additional copyright messages # and the disclaimer. s/(.)\n(Copyright |This +is +free +software)/$1\n.br\n$2/g; # Join hyphenated lines. s/([A-Za-z])-\n */$1/g; } $include{$sect} .= $copy; $_ ||= ''; next; } # Catch bug report text. if (/^(Report +bugs|Email +bug +reports +to) /) { $sect = 'REPORTING BUGS'; } # Author section. elsif (/^Written +by/) { $sect = 'AUTHOR'; } # Examples, indicated by an indented leading $, % or > are # rendered in a constant width font. if (/^( +)([\$\%>] )\S/) { my $indent = $1; my $prefix = $2; my $break = '.IP'; $include{$sect} ||= ''; while (s/^$indent\Q$prefix\E(\S.*)\n*//) { $include{$sect} .= "$break\n\\f(CW$prefix$1\\fR\n"; $break = '.br'; } next; } my $matched = ''; $include{$sect} ||= ''; # Sub-sections have a trailing colon and the second line indented. if (s/^(\S.*:) *\n / /) { $matched .= $& if %append; $include{$sect} .= qq(.SS "$1"\n); } my $indent = 0; my $content = ''; # Option with description. if (s/^( {1,10}([+-]\S.*?))(?:( +)|\n( {20,}))(\S.*)\n//) { $matched .= $& if %append; $indent = length ($4 || "$1$3"); $content = ".TP\n\x82$2\n\x82$5\n"; unless ($4) { # Indent may be different on second line. $indent = length $& if /^ {20,}/; } } # Option without description. elsif (s/^ {1,10}([+-]\S.*)\n//) { $matched .= $& if %append; $content = ".HP\n\x82$1\n"; $indent = 80; # not continued } # Indented paragraph with tag. elsif (s/^( +(\S.*?) +)(\S.*)\n//) { $matched .= $& if %append; $indent = length $1; $content = ".TP\n\x82$2\n\x82$3\n"; } # Indented paragraph. elsif (s/^( +)(\S.*)\n//) { $matched .= $& if %append; $indent = length $1; $content = ".IP\n\x82$2\n"; } # Left justified paragraph. else { s/(.*)\n//; $matched .= $& if %append; $content = ".PP\n" if $include{$sect}; $content .= "$1\n"; } # Append continuations. while (s/^ {$indent}(\S.*)\n//) { $matched .= $& if %append; $content .= "\x82$1\n" } # Move to next paragraph. s/^\n+//; for ($content) { # Leading dot protection. s/\x82\./\x80/g; s/\x82//g; # Convert options. s/(^| )(-[][\w=-]+)/$1 . convert_option $2/mge; } # Check if matched paragraph contains /pat/. if (%append) { for my $pat (keys %append) { if ($matched =~ $pat) { $content .= ".PP\n" unless $append{$pat} =~ /^\./; $content .= $append{$pat}; } } } $include{$sect} .= $content; } # Refer to the real documentation. unless ($opt_no_info) { $sect = 'SEE ALSO'; $include{$sect} ||= ''; $include{$sect} .= ".PP\n" if $include{$sect}; $include{$sect} .= <, 1997. # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. include Makefile ## Some files in the `recode' distribution are mechanically derived ## from data files while is available from the net using FTP or HTTP. ## These original files are not distributed. From the *distribution* ## standpoint, one might consider those derived files just as sources, ## forgetting there is some hidden magic behind them. But the magic ## is revealed here! :-). The distribution already contains all ## non-trivial derivation tools I made. For completeness, this ## special Makefile holds the accompanying derivation recipes. ## For activating the included recipes, it suffices to link this ## `Makemore' file as `GNUmakefile' in the `doc/' directory of your ## *build* hierarchy. You need GNU make, GNU wget, Python and Internet ## connectivity for all this to work. However, be warned that if ## external files changed, you may be hit. I am interested in hearing ## about such problems (maybe at `recode-bugs@iro.umontreal.ca'), but ## I do not want to commit myself at maintaining the derivation stuff ## at the same level as for the the remainder of `recode'. CHSET = chset32a LIBICONV = MAPURL = ftp://ftp.unicode.org/MAPPINGS MNEMONICS_DS = mnemonic,ds ISO10646_DEF = $(CHSET)/iso10646.def CHARSETS_DEF = $(CHSET)/charsets.def ENCODINGS_DEF = ../libiconv/encodings.def ../libiconv/encodings_local.def MNEMONICS_DS = keld-email/iso10646.def ISO10646_DEF = keld-email/iso10646.def CHARSETS_DEF = keld-email/charsets.def MNEMONICS_DS = keld-email/iso10646.def keld-email/other.def keld-email/control.def NOMS_CARACS = noms_juc_19981216.txt NOMS_CARACS = NomsSeulsfinal.lst PYTHON = python SURF = netscape WGET = wget # Merely add our things to standard `all' goal. all: $(srcdir)/libiconv.texi $(srcdir)/rfc1345.texi \ $(srcdir)/fr-libiconv.texi $(srcdir)/fr-rfc1345.texi \ $(top_srcdir)/src/libiconv.h $(top_srcdir)/src/rfc1345.h \ $(top_srcdir)/src/charname.h $(top_srcdir)/src/fr-charname.h doc-check: all -cd $(top_srcdir)/src && diff -u charname.h{-,} -cd $(top_srcdir)/src && diff -u fr-charname.h{-,} -cd $(top_srcdir)/src && diff -u rfc1345.h{-,} -cd $(top_srcdir)/src && diff -u strip-data.c{-,} -cd $(top_srcdir)/src && diff -u strip-pool.c{-,} -cd $(srcdir) && diff -u libiconv.texi{-,} -cd $(srcdir) && diff -u fr-libiconv.texi{-,} -cd $(srcdir) && diff -u rfc1345.texi{-,} -cd $(srcdir) && diff -u fr-rfc1345.texi{-,} # The next rules, when written, for example: #rfc1345.texi pool.c tables.c: ... # may launch many parallel occurrences of the action. This is bad. # Any idea, someone? For now, just list one of them. $(top_srcdir)/src/charname.h: tables.py $(MNEMONICS_DS) rfc1345.txt cd $(srcdir) && $(PYTHON) tables.py -n $(MNEMONICS_DS) rfc1345.txt mv $(srcdir)/charname.h $@ $(top_srcdir)/src/fr-charname.h: tables.py $(NOMS_CARACS) cd $(srcdir) && $(PYTHON) tables.py -Fn $(NOMS_CARACS) mv $(srcdir)/fr-charname.h $@ $(top_srcdir)/src/libiconv.h: tables.py $(ENCODINGS_DEF) cd $(srcdir) && $(PYTHON) tables.py -l $(ENCODINGS_DEF) mv $(srcdir)/libiconv.h $@ $(top_srcdir)/src/rfc1345.h: tables.py $(MNEMONICS_DS) cd $(srcdir) && $(PYTHON) tables.py -m $(MNEMONICS_DS) mv $(srcdir)/rfc1345.h $@ $(srcdir)/libiconv.texi: tables.py $(ENCODINGS_DEF) cd $(srcdir) && $(PYTHON) tables.py -s $(ENCODINGS_DEF) $(srcdir)/fr-libiconv.texi: tables.py $(ENCODINGS_DEF) cd $(srcdir) && $(PYTHON) tables.py -Fs $(ENCODINGS_DEF) $(srcdir)/rfc1345.texi: tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) cd $(srcdir) && $(PYTHON) tables.py -pt $(MNEMONICS_DS) $(CHARSETS_DEF) mv $(srcdir)/strip-pool.c $(top_srcdir)/src/strip-pool.c mv $(srcdir)/strip-data.c $(top_srcdir)/src/strip-data.c $(srcdir)/fr-rfc1345.texi: tables.py $(MNEMONICS_DS) $(CHARSETS_DEF) cd $(srcdir) && $(PYTHON) tables.py -Ft $(MNEMONICS_DS) $(CHARSETS_DEF) # -----------------------------------# # External files built into recode. # # -----------------------------------# $(srcdir)/$(CHARSET_DEFS): $(srcdir)/$(CHSET) $(srcdir)/$(CHSET): mkdir $@-tmp $(WGET) ftp://dkuug.dk/pub/$(CHSET).tar tar xfC $(CHSET).tar $@-tmp rm $(CHSET).tar mv $@-tmp $@ # Also look in `ftp://dkuug.dk/i18n/WG15-collection/charmaps/iso10646'. $(srcdir)/mnemonic,ds: $(WGET) ftp://dkuug.dk/i18n/WG15-collection/repertoiremaps/mnemonic,ds test $(srcdir) = . || mv mnemonic,ds $@ $(srcdir)/rfc1345.txt: $(WGET) ftp://nic.ddn.mil/rfc/rfc1345.txt test $(srcdir) = . || mv rfc1345.txt $@ # -------------------------------------------------# # Useful external files, but unbuilt into recode. # # -------------------------------------------------# $(srcdir)/cp1250.txt: $(WGET) $(MAPURL)/VENDORS/MICSFT/WINDOWS/CP1250.TXT mv CP1250.TXT $@ $(srcdir)/cp1251.txt: $(WGET) $(MAPURL)/VENDORS/MICSFT/WINDOWS/CP1251.TXT mv CP1251.TXT $@ $(srcdir)/cp1252.txt: $(WGET) $(MAPURL)/VENDORS/MICSFT/WINDOWS/CP1252.TXT mv CP1252.TXT $@ # Index at `http://www.dkuug.dk/jtc1/sc22/wg20/docs/projects.html.en'. i18n.txt: $(WGET) http://www.dkuug.dk/jtc1/sc22/wg20/docs/i18n.txt i18nrep.txt: $(WGET) http://www.dkuug.dk/jtc1/sc22/wg20/docs/i18nrep.txt # Various files. iso2375reg.txt: $(WGET) ftp://dkuug.dk/i18n/iso2375reg.txt # Online documentation. # Index at `http://osiris.dkuug.dk/jtc1/sc2/wg3'. character-sets: $(SURF) http://www.ewos.be/tg-cs/gtop.htm recode-3.6/doc/tables.py0100755000000000000000000014136307126661545013742 0ustar rootroot#!/usr/bin/python # -*- coding: latin-1 -*- # Automatically derive `recode' table files from various sources. # Copyright © 1993, 1994, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. # François Pinard , 1993. # This program 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. # This program 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 this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """\ `tables.py' derives `recode' table files from various sources. Usage: python tables.py [OPTION]... DATA-FILE... -e produce C source file for explode data (explode.c) -l produce C source file for libiconv charsets (libiconv.h) -m produce C inclusion file for short RFC 1345 mnemonics (rfc1345.h) -n produce C inclusion file for character names (charname.h) -p produce C source files for strip data (strip-pool.c and strip-data.c) -s produce Texinfo inclusion file for libiconv (libiconv.texi) -t produce Texinfo inclusion file for RFC 1345 (rfc1345.texi) -F produce French versions for -n, -s or -t DATA-FILEs may be rfc1345.txt, mnemonic[.,]ds, Unicode maps, or .def files from Keld's chset* packages. The digesting order is usually important. When `-F' and `-n' are used, process Alain's tables. """ import re, string, sys # Character constants. REPLACEMENT_CHARACTER = 0xFFFD NOT_A_CHARACTER = 0xFFFF # Main driver. def main(*arguments): import getopt global explodes charnames = explodes = libiconv = mnemonics = rfc1345 = strips = None French_option = 0 options, arguments = getopt.getopt(arguments, 'Felmnpst') for option, value in options: if option == '-F': French_option = 1 elif option == '-e': if not explodes: explodes = Explodes() explodes.do_sources = 1 elif option == '-l': if not libiconv: libiconv = Libiconv() libiconv.do_sources = 1 elif option == '-m': if not mnemonics: mnemonics = Mnemonics() mnemonics.do_sources = 1 elif option == '-n': if not charnames: charnames = Charnames() charnames.do_sources = 1 elif option == '-p': if not strips: strips = Strips() strips.do_sources = 1 elif option == '-s': if not libiconv: libiconv = Libiconv() libiconv.do_texinfo = 1 elif option == '-t': if not strips: strips = Strips() strips.do_texinfo = 1 if not arguments: raise __doc__ # Read all data tables. for name in arguments: input = Input(name) while 1: line = input.readline() if not line: break if line[0] == '\n': continue if line[0:2] == '/*': while string.find(line, '*/') < 0: line = input.readline() continue if input.begins('DEFENCODING'): if not libiconv: libiconv = Libiconv() libiconv.digest(input) break if input.begins('# Name:'): if not strips: strips = Strips() strips.digest_unimap(input) break if line[0] == '#': continue if input.begins('escape_char'): if not mnemonics: mnemonics = Mnemonics() mnemonics.digest_mnemonics_ds(input) break if input.match('Network Working Group +K\. Simonsen$'): if charnames and charnames.do_sources and not French_option: while not input.begins( ' 3rd field is the long descriptive'): line = input.readline() if not mnemonics: mnemonics = Mnemonics() mnemonics.digest_rfc1345(input, charnames) if explodes or strips: while line != '5. CHARSET TABLES\n': line = input.readline() if not strips: strips = Strips() strips.digest_rfc1345(input, mnemonics) break if input.begins('@@\t'): if charnames.do_sources and French_option: charnames.digest_french(input) break if line == '&referenceset\n': while line != '\n': line = input.readline() if not strips: strips = Strips() if not mnemonics: mnemonics = Mnemonics() strips.digest_rfc1345(input, mnemonics) break if line in (' Repertoire according to ISO/IEC 10646-1:1993\n', ' Control characters\n', ' Private use\n'): while line not in (' Plane 000\n', ' plane 000\n'): line = input.readline() if not mnemonics: mnemonics = Mnemonics() mnemonics.digest_iso10646_def(input) break input.die("Data file with unknown contents") for instance in explodes, strips, charnames, libiconv, mnemonics: if instance: instance.complete(French_option) class Options: def __init__(self): self.do_sources = 0 self.do_texinfo = 0 # Charnames. class Charnames(Options): SOURCES = 'charname.h' # Name of character, given its numerical value. charname_map = {} # Maximum printable length of a character name. max_length = 0 # Frequency of each word, then its crypt code. code_map = {} def digest_french(self, input): self.preset_french() fold_table = range(256) for before, after in map(None, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÇÈÉÊÎÏÑÔÖÛ', 'abcdefghijklmnopqrstuvwxyzàâçèéêîïñôöû'): fold_table[ord(before)] = ord(after) folding = string.join(map(chr, fold_table), '') while 1: line = input.readline() if not line: break if input.begins('@@\t'): continue # Pour éliminer la fin de ligne. line = string.rstrip(line) input.line = line match = input.match('([0-9A-F]{4})\t([^(]+)( \\(.*\\))?( \\*)?$') if match: ucs = string.atoi(match.group(1), 16) text = string.translate(match.group(2), folding) if text in ('', '', ''): continue self.declare(ucs, re.sub(r' +\*$', '', text, 1)) else: input.warn("Unrecognised line") def preset_french(self): self.max_length = 0 ucs = 0x0000 for text in ( "nul (nul)", # 0000 "début d'en-tête (soh)", # 0001 "début de texte (stx)", # 0002 "fin de texte (etx)", # 0003 "fin de transmission (eot)", # 0004 "demande (enq)", # 0005 "accusé de réception positif (ack)", # 0006 "sonnerie (bel)", # 0007 "espace arrière (bs)", # 0008 "tabulation horizontale (ht)", # 0009 "interligne (lf)", # 000A "tabulation verticale (vt)", # 000B "page suivante (ff)", # 000C "retour de chariot (cr)", # 000D "hors code (so)", # 000E "en code (si)", # 000F "échappement transmission (dle)", # 0010 "commande d'appareil un (dc1)", # 0011 "commande d'appareil deux (dc2)", # 0012 "commande d'appareil trois (dc3)", # 0013 "commande d'appareil quatre (dc4)", # 0014 "accusé de réception négatif (nak)", # 0015 "synchronisation (syn)", # 0016 "fin de transmission de bloc (etb)", # 0017 "annulation (can)", # 0018 "fin de support (em)", # 0019 "caractère de substitution (sub)", # 001A "échappement (esc)", # 001B "séparateur de fichier (fs)", # 001C "séparateur de groupe (gs)", # 001D "séparateur d'article (rs)", # 001E "séparateur de sous-article (us)", # 001F ): self.declare(ucs, text) ucs = ucs + 1 ucs = 0x007F for text in ( "suppression (del)", # 007F "caractère de bourre (pad)", # 0080 "octet supérieur prédéfini (hop)", # 0081 "arrêt permis ici (bph)", # 0082 "aucun arrêt ici (nbh)", # 0083 "index (ind)", # 0084 "à la ligne (nel)", # 0085 "début de zone sélectionnée (ssa)", # 0086 "fin de zone sélectionnée (esa)", # 0087 "arrêt de tabulateur horizontal (hts)", # 0088 "tabulateur horizontal avec justification (htj)", # 0089 "arrêt de tabulateur vertical (vts)", # 008A "interligne partiel vers <= bas (pld)", # 008B "interligne partiel vers <= haut (plu)", # 008C "index inversé (ri)", # 008D "remplacement unique deux (ss2)", # 008E "remplacement unique trois (ss3)", # 008F "chaîne de commande d'appareil (dcs)", # 0090 "usage privé un (pu1)", # 0091 "usage privé deux (pu2)", # 0092 "mise en mode transmission (sts)", # 0093 "annulation du caractère précédent (cch)", # 0094 "message en attente (mw)", # 0095 "début de zone protégée (sga)", # 0096 "fin de zone protégée (ega)", # 0097 "début de chaîne (sos)", # 0098 "introducteur de caractère graphique unique (sgci)",# 0099 "introducteur de caractère unique (sci)", # 009A "introducteur de séquence de commande (csi)", # 009B "fin de chaîne (st)", # 009C "commande de système d'exploitation (osc)", # 009D "message privé (pm)", # 009E "commande de progiciel (apc)", # 009F ): self.declare(ucs, text) ucs = ucs + 1 def declare(self, ucs, text): self.charname_map[ucs] = text if len(text) > self.max_length: self.max_length = len(text) for word in string.split(text): self.code_map[word] = self.code_map.get(word, 0) + 1 def presort_word(self, word): return -self.code_map[word], word # Write a compressed list of character names. def complete(self, french): if not self.do_sources: return if french: write = Output('fr-%s' % self.SOURCES).write else: write = Output(self.SOURCES).write # Establish a mild compression scheme. Words word[0:singles] # will be represented by a single byte running from 1 to # singles. All remaining words will be represented by two # bytes, the first one running slowly from singles+1 to 255, # the second cycling faster from 1 to 255. sys.stderr.write(' sorting words...') pairs = map(self.presort_word, self.code_map.keys()) pairs.sort() words = map(lambda pair: pair[1], pairs) pairs = None sys.stderr.write(' %d of them\n' % len(words)) count = len(words) singles = (255 * 255 - count) / 254 # Transmit a few values for further usage by the C code. sys.stderr.write(' sorting names...') ucs2_table = self.charname_map.keys() ucs2_table.sort() sys.stderr.write(' %d of them\n' % len(ucs2_table)) write('\n' '#define NUMBER_OF_SINGLES %d\n' '#define MAX_CHARNAME_LENGTH %d\n' '#define NUMBER_OF_CHARNAMES %d\n' % (singles, self.max_length, len(ucs2_table))) # Establish a mild compression scheme (one or two bytes per word). sys.stderr.write(" writing words\n") write('\n' 'static const char *const word[%d] =\n' ' {\n' % count) char1 = 1 char2 = 1 for counter in range(singles): word = words[counter] write(' %-28s/* \\%0.3o */\n' % ('"%s",' % re.sub('"', r'\"', word), char1)) self.code_map[words[counter]] = char1 char1 = char1 + 1 for counter in range(singles, count): word = words[counter] write(' %-28s/* \\%0.3o\\%0.3o */\n' % ('"%s",' % re.sub('"', r'\"', word, 1), char1, char2)) self.code_map[words[counter]] = 256 * char1 + char2 if char2 == 255: char1 = char1 + 1 char2 = 1 else: char2 = char2 + 1 write(' };\n') sys.stderr.write(" writing names\n") write('\n' 'struct charname\n' ' {\n' ' recode_ucs2 code;\n' ' const char *crypted;\n' ' };\n' '\n' 'static const struct charname charname[NUMBER_OF_CHARNAMES] =\n' ' {\n') for ucs2 in ucs2_table: write(' {0x%04X, "' % ucs2) for word in string.split(self.charname_map[ucs2]): if self.code_map.has_key(word): code = self.code_map[word] if code < 256: write('\\%0.3o' % code) else: write('\\%0.3o\\%0.3o' % (code / 256, code % 256)) else: sys.stderr.write('??? %s\n' % word) write('"},\n') write(' };\n') # Explodes. class Explodes(Options): SOURCES = 'explode.c' def __init__(self): Options.__init__(self) # Table fragments will be produced while reading data tables. self.write = Output(self.SOURCES).write write = self.write write('\n' '#include "common.h"\n') def complete(self, french): if not self.do_sources: return # Print the collectable initialization function. sys.stderr.write("Completing %s\n" % self.SOURCES) write = self.write write('\n' 'bool\n' 'module_explodes (struct recode_outer *outer)\n' '{\n') count = 0 while self.declare_charset: write(' if (!declare_explode_data (outer, &data_%d, "%s"))\n' ' return false;\n' % (count, self.declare_charset[0])) del self.declare_charset[0] count = count + 1 write('\n') while declare_alias: write(' if (!declare_alias (outer, "%s", "%s"))\n' ' return false;\n' % declare_alias[0]) del declare_alias[0] write('\n' ' return true;\n' '}\n' '\n' 'void\n' 'delmodule_explodes (struct recode_outer *outer)\n' '{\n' '}\n') # Libiconv. class Libiconv(Options): SOURCES = 'libiconv.h' TEXINFO = 'libiconv.texi' data = [] def digest(self, input): canonical = {} for charset in ('Georgian-Academy', 'Georgian-PS', 'MuleLao-1', 'Macintosh', 'MacArabic', 'MacCentralEurope', 'MacCroatian', 'MacCyrillic', 'MacGreek', 'MacHebrew', 'MacIceland', 'MacRoman', 'MacRomania', 'MacThai', 'MacTurkish', 'MacUkraine'): canonical[string.upper(charset)] = charset comment = None # Read in the encodings.def file. line = input.line while line: if input.begins('DEFENCODING(('): aliases = [] match = re.search('"(.*)"', line) if match: alias = match.group(1) if canonical.has_key(alias): alias = canonical[alias] aliases.append(alias) line = string.lstrip(input.readline()) while line != '),\n': match = re.search('"(.*)"', line) if match: alias = match.group(1) if canonical.has_key(alias): alias = canonical[alias] aliases.append(alias) line = string.lstrip(input.readline()) while line and line != '\n': line = input.readline() self.data.append((comment, aliases[0], aliases[1:])) comment = None else: if input.begins('/*'): comment = line[3:-4] elif line != '\n': input.warn("Unrecognised line") line = input.readline() def complete(self, french): if self.do_sources: self.complete_sources() if self.do_texinfo: self.complete_texinfo(french) def complete_sources(self): if not self.do_sources: return write = Output(self.SOURCES).write count = 1 for comment, charset, aliases in self.data: count = count + 2 + len(aliases) write('\n' "/* This is derived from Bruno Haible's `libiconv' package. */" '\n' 'static const char *iconv_name_list[%d] =\n' ' {\n' % count) for comment, charset, aliases in self.data: if comment: write('\n' ' /* %s. */\n' '\n' % comment) if aliases: write(' "%s",\n' % charset) for alias in aliases[:-1]: write('\t"%s",\n' % alias) write('\t"%s", NULL,\n' % aliases[-1]) else: write(' "%s", NULL,\n' % charset) write(' NULL\n' ' };\n') def complete_texinfo(self, french): if not self.do_texinfo: return if french: write = Output('fr-%s' % self.TEXINFO, noheader=1).write else: write = Output(self.TEXINFO, noheader=1).write write('\n' '@itemize @bullet\n') block = None for comment, charset, aliases in self.data: if not block and not comment: comment = 'General character sets' if comment: if block: write('@end table\n' '\n') write('@item %s\n' '@table @code\n' % comment) block = comment else: write('\n') write('@item %s\n' % charset) if aliases: write('@tindex %s@r{, aliases}\n' % re.sub(':([0-9]+)', r'(\1)', charset)) for alias in aliases: write('@tindex %s\n' % re.sub(':([0-9]+)', r'(\1)', alias)) if len(aliases) == 1: write('@code{%s} is an alias for this charset.\n' % aliases[0]) else: write('@code{%s} and @code{%s} are aliases' ' for this charset.\n' % (string.join(aliases[:-1], '}, @code{'), aliases[-1])) else: write('@tindex %s\n' % re.sub(':([0-9]+)', r'(\1)', charset)) write('@end table\n' '@end itemize\n') # Mnemonics. class Mnemonics(Options): SOURCES = 'rfc1345.h' # Ignore any mnemonic whose length is greater than MAX_MNEMONIC_LENGTH. MAX_MNEMONIC_LENGTH = 3 # Numeric value of a character, given its mnemonic. ucs2_map = {} table_length = 0 mnemonic_map = {} # Read in a mnemonics file. def digest_mnemonics_ds(self, input): while input.readline(): match = input.match('<([^ \t\n]+)>\t') if match: mnemonic = re.sub('/(.)', r'\1', match.group(1)) ucs2 = string.atoi(match.group(2), 16) self.declare(mnemonic, ucs2, input.warn) # Read in Keld's list of 10646 characters. def digest_iso10646_def(self, input): while 1: line = input.readline() if not line: break if line == '\n': continue if len(line) == 3: continue if input.begins(' \.\.\.'): continue if line == ' Presentation forms\n': continue if input.begins(' naming: first vertical '): continue match = input.match(' row ([0-9][0-9][0-9])$') if match and int(match.group(1)) < 256: row = int(match.group(1)) cell = 0 continue if line == ' cell 00\n': cell = 0 continue match = input.match(' cell ([0-9][0-9][0-9])$') if match and int(match.group(1)) < 256: cell = int(match.group(1)) continue if input.match(' [^ ]+'): if not input.match(' [A-Z][A-Z][A-Z]'): continue if input.match(' [^ ].*'): if cell == 256: input.warn("Over 256 cells in row %d", row) cell = cell + 1 continue match = (input.match('([^ ]) [^ ].*') or input.match('([^ ][^ ]+) [^ ].*')) if match: if cell == 256: input.warn("Over 256 cells in row %d", row) self.declare(match.group(1), 256*row + cell, input.warn) cell = cell + 1 continue input.warn("Unrecognised line") # Read the text of RFC 1345, saving all character names it declares. def digest_rfc1345(self, input, charnames): def read_line(input=input): skip = 0 while 1: line = input.readline() if not line: break if input.begins('Simonsen'): skip = 1 continue if skip: if input.begins('RFC 1345'): skip = 0 continue if input.begins('4. CHARSETS'): break if line == '\n': continue if line[0] == ' ': return string.lstrip(line[:-1]) return None self.max_length = 0 # Read the character descriptions. Count words in charnames. line = read_line() while line: # Look ahead one line and merge it if it should. next = read_line() while next: match = re.match(' *( .*)', next) if not match: break line = line + match.group(1) next = read_line() # Separate fields and save needed information. match = re.search('([^ ]+) +[0-9a-f]+ +(.*)', line) if match: mnemo = match.group(1) text = string.lower(match.group(2)) if self.ucs2_map.has_key(mnemo): charnames.declare(self.ucs2_map[mnemo], text) elif len(mnemo) <= self.MAX_MNEMONIC_LENGTH: input.warn("No known UCS-2 code for `%s'", mnemo) elif not re.search(' +e000', line): input.warn("Unrecognised line") line = next # Declare a correspondence between a mnemonic and an UCS-2 value. def declare(self, mnemonic, ucs2, warn): if len(mnemonic) > self.MAX_MNEMONIC_LENGTH: return if self.do_sources: if self.mnemonic_map.has_key(ucs2): if self.mnemonic_map[ucs2] != mnemonic: warn("U+%04X `%s' known as `%s'", ucs2, mnemonic, self.mnemonic_map[ucs2]) if len(mnemonic) < len(self.mnemonic_map[ucs2]): self.mnemonic_map[ucs2] = mnemonic else: self.mnemonic_map[ucs2] = mnemonic self.table_length = self.table_length + 1 if self.ucs2_map.has_key(mnemonic): if self.ucs2_map[mnemonic] != ucs2: warn("`%s' U+%04X known as U+%04X", mnemonic, ucs2, self.ucs2_map[mnemonic]) #FIXME: ??? cell = self.ucs2_map[mnemonic] - 256*row else: self.ucs2_map[mnemonic] = ucs2 def complete(self, french): if self.do_sources: self.complete_sources() # Write an UCS-2 to RFC 1345 mnemonic table. def complete_sources(self): inverse_map = {} write = Output(self.SOURCES).write write('\n' '#define TABLE_LENGTH %d\n' '#define MAX_MNEMONIC_LENGTH %d\n' % (self.table_length, self.MAX_MNEMONIC_LENGTH)) write('\n' 'struct entry\n' ' {\n' ' recode_ucs2 code;\n' ' const char *rfc1345;\n' ' };\n' '\n' 'static const struct entry table[TABLE_LENGTH] =\n' ' {\n') count = 0 indices = self.mnemonic_map.keys() indices.sort() for ucs2 in indices: text = self.mnemonic_map[ucs2] inverse_map[text] = count write(' /* %4d */ {0x%04X, "%s"},\n' % (count, ucs2, re.sub(r'([\"])', r'\\\1', text))) count = count + 1 write(' };\n') write('\n' 'static const unsigned short inverse[TABLE_LENGTH] =\n' ' {') count = 0 keys = inverse_map.keys() keys.sort() for text in keys: if count % 10 == 0: if count != 0: write(',') write('\n /* %4d */ ' % count) else: write(', ') write('%4d' % inverse_map[text]) count = count + 1 write('\n' ' };\n') # Global table of strips. class Strips(Options): POOL = 'strip-pool.c' DATA = 'strip-data.c' TEXINFO = 'rfc1345.texi' # Change STRIP_SIZE in `src/recode.h' if you change the value here. # See the accompanying documentation there, as needed. STRIP_SIZE = 8 # Prepare the production of tables. pool_size = 0 pool_refs = 0 strip_map = {} strips = [] # While digesting files. used_map = {} table = [] declare_alias = [] implied_surface = {} def __init__(self): Options.__init__(self) self.write_data = None self.aliases_map = {} self.remark_map = {} self.declare_charset = [] # Prepare to read various tables. self.charset_ordinal = 0 self.discard_charset = 0 self.alias_count = 0 self.comment = '' def init_write_data(self): if self.do_sources and not self.write_data: # Table fragments will be produced while reading data tables. self.write_data = Output(self.DATA).write write = self.write_data write('\n' '#include \"common.h\"\n') # Read the text of RFC 1345, saving all charsets it declares. # UCS-2 mnemonics files should have been read in already. def digest_rfc1345(self, input, mnemonics): self.init_write_data() # Informal canonical order of presentation. CHARSET, REM, ALIAS, ESC, BITS, CODE = range(6) charset = None skip = 0 while 1: line = input.readline() if not line: break if input.begins('Simonsen'): skip = 1 continue if skip: if input.begins('RFC 1345'): skip = 0 continue if line == '\n': continue if line == 'ACKNOWLEDGEMENTS\n': break line, count = re.subn('^ ?', '', line) if not count: continue input.line = line # Recognize `&charset'. match = input.match('&charset (.*)') if match: # Before beginning a new charset, process the previous one. if charset: self.charset_done(charset, remark, aliases) charset = match.group(1) # Prepare for processing a new charset: save the charset # name for further declaration; announce this charset in # the array initialization section; and initialize its # processing. sys.stderr.write(" %d) %s\n" % (self.charset_ordinal + 1, charset)) status = CHARSET self.comment = '\n/* %s\n' % charset hashname = re.sub('[^a-z0-9]', '', string.lower(charset)) if self.used_map.has_key(hashname): input.warn("Duplicate of %s (discarded)", self.used_map[hashname]) self.discard_charset = 1 continue self.used_map[hashname] = charset self.alias_count = 0 self.table = [NOT_A_CHARACTER] * 256 codedim = 0 code = 0 aliases = [] remark = [] match = re.match('(CP|IBM)([0-9]+)$', charset) if match: self.implied_surface[match.group(2)] = 'crlf' self.implied_surface['CP' + match.group(2)] = 'crlf' self.implied_surface['IBM' + match.group(2)] = 'crlf' self.declare_alias.append((charset, charset)) self.alias_count = self.alias_count + 1 continue #FIXME:match = re.match('windows-([0-9]+)$', charset) #FIXME:if match: #FIXME: self.implied_surface[match.group(1)] = 'crlf' #FIXME: self.implied_surface['CP' + match.group(1)] = 'crlf' #FIXME: self.implied_surface['IBM' + match.group(1)] = 'crlf' #FIXME: self.declare_alias.append((charset, charset)) #FIXME: self.alias_count = self.alias_count + 1 #FIXME: continue if charset in ('macintosh', 'macintosh_ce'): self.implied_surface[charset] = 'cr' self.declare_alias.append((charset, charset)) self.alias_count = self.alias_count + 1 continue continue # Recognize other `&' directives. match = input.match('&rem (.*)') if match and not input.begins('&rem &alias'): # Keld now prefers `&rem' to be allowed everywhere. #if status > REM: # input.warn("`&rem' out of sequence") #status = REM; if self.do_texinfo: # Save remarks for Texinfo. text = match.group(1) remark.append(text) continue match = input.match('(&rem )?&alias (.*)') if match: if status > ALIAS: input.warn("`&alias' out of sequence") status = ALIAS # Save synonymous charset names for later declarations. alias = match.group(2) if alias[-1] == ' ': input.warn("Spurious trailing whitespace") alias = string.rstrip(alias) self.comment = self.comment + ' %s\n' % alias hashname = re.sub('[^a-z0-9]', '', string.lower(alias)) if self.used_map.has_key(hashname): if self.used_map[hashname] != charset: input.warn("Duplicate of %s", self.used_map[hashname]) continue else: self.used_map[hashname] = charset aliases.append(alias) match = re.match('(CP|IBM)([0-9]+)$', alias) if match: self.implied_surface[match.group(2)] = 'crlf' self.implied_surface['CP' + match.group(2)] = 'crlf' self.implied_surface['IBM' + match.group(2)] = 'crlf' elif alias in ('mac', 'macce'): self.implied_surface[alias] = 'cr' self.declare_alias.append((alias, charset)) self.alias_count = self.alias_count + 1 continue if input.match('&g[0-4]esc'): if status > ESC: input.warn("`&esc' out of sequence") status = ESC continue match = input.match('&bits ([0-9]+)$') if match: if status > BITS: input.warn("`&bits' out of sequence") status = BITS if int(match.group(1)) > 8: input.warn("`&bits %s' not accepted (charset discarded)", match.group(1)) self.discard_charset = 1 continue match = input.match('&code (.*)') if match: if status > CODE: input.warn("`&code' out of sequence") status = CODE # Save the code position. code = int(match.group(1)) continue # Other lines cause the charset to be discarded. match = input.match('&([^ ]+)') if match: if not self.discard_charset: input.warn("`&%s' not accepted (charset discarded)", match.group(1)) self.discard_charset = 1 if self.discard_charset: continue # Save all other tokens into the double table. for token in string.split(line): if token == '??': self.table[code] = NOT_A_CHARACTER elif token == '__': self.table[code] = REPLACEMENT_CHARACTER elif mnemonics.ucs2_map.has_key(token): self.table[code] = mnemonics.ucs2_map[token] if len(token) > codedim: codedim = len(token) else: input.warn("Unknown mnemonic for code: %s", token) self.table[code] = REPLACEMENT_CHARACTER code = code + 1 # Push the last charset out. self.charset_done(charset, remark, aliases) # Read a Unicode map, as found in ftp://ftp.unicode.com/MAPPINGS. def digest_unimap(self, input): self.init_write_data() line = input.line match = input.match('# +Name: +([^ ]+) to Unicode table$') if match: # Set comment. name = string.split(match.group(1)) charset = name[0] del name[0] self.comment = '\n/* %s\n' % charset # Set charset. hashname = re.sub('[^a-z0-9]', '', string.lower(charset)) if self.used_map[hashname]: input.warn("`%s' duplicates `%s' (charset discarded)", hashname, self.used_map[hashname]) self.discard_charset = 1 return self.used_map[hashname] = charset # Prepare for read. self.alias_count = 0 self.table = [NOT_A_CHARACTER] * 256 codedim = 0 code = 0 aliases = [] remark = [] if self.discard_charset: return # Process aliases. for alias in name: self.comment = self.comment + ' %s\n' % alias hashname = re.sub('[^a-z0-9]', '', string.lower(alias)) if self.used_map[hashname] and self.used_map[hashname] != charset: input.warn("`%s' duplicates `%s'", hashname, self.used_map[hashname]) continue self.used_map[hashname] = charset aliases.append(alias) self.declare_alias.append((alias, charset)) self.alias_count = self.alias_count + 1 # Read table contents. while 1: line = input.readline() if not line: break if line == '\n': continue if line[0] == '#': continue if input.match('0x([0-9A-F]+)\t\t#UNDEFINED$'): continue if input.search('\032'): # Old MS-DOS C-z !! break match = input.match('0x([0-9A-F]+)\t0x([0-9A-F]+)\t\#') if match: self.table[string.atoi( match.group(1), 16)] = string.atoi(match.group(2), 16) else: input.warn("Unrecognised input line") # Complete processing. self.charset_done(charset, remark, aliases) # Print all accumulated information for the charset. If the # charset should be discarded, adjust tables. def charset_done(self, charset, remark, aliases): if self.discard_charset: while self.alias_count > 0: del self.declare_alias[-1] self.alias_count = self.alias_count - 1 self.discard_charset = 0 self.comment = '' if not self.comment: return if self.do_texinfo: # Save the documentation. aliases.sort() self.aliases_map[charset] = aliases self.remark_map[charset] = remark if explodes: write = explodes.write # Make introductory C comments. write(self.comment) write('*/\n') # Make the table for this charset. write('\n' 'static const unsigned short data_%d[] =\n' ' {\n' % self.charset_ordinal) for code in range(256): if code != self.table[code]: write(' %3d, 0x%.4X, DONE,\n' % (code, self.table[code])) write(' DONE\n' ' };\n') # Register the table. self.declare_charset.append(charset) if self.do_sources: write = self.write_data # Make introductory C comments. write(self.comment) write('*/\n') # Make the table for this charset. write('\n' 'static struct strip_data data_%d =\n' ' {\n' ' ucs2_data_pool,\n' ' {\n' % self.charset_ordinal) count = 0 for code in range(0, 256, self.STRIP_SIZE): if count % 12 == 0: if count != 0: write(',\n') write(' ') else: write(', ') strip = self.table[code:code+self.STRIP_SIZE] write('%4d' % self.pool_index(strip)) count = count + 1 write('\n' ' }\n' ' };\n') # Register the table. self.declare_charset.append(charset) self.charset_ordinal = self.charset_ordinal + 1 self.comment = '' # Return the pool index for strip. Add to the pool as required. def pool_index(self, strip): def format(item): return '%04X' % item self.pool_refs = self.pool_refs + 1 text = string.join (map(format, strip), '') if not self.strip_map.has_key(text): self.strip_map[text] = self.pool_size self.pool_size = self.pool_size + self.STRIP_SIZE self.strips.append(text) return self.strip_map[text] def complete(self, french): if self.do_sources: self.complete_sources() if self.do_texinfo: self.complete_texinfo(french) def complete_sources(self): # Give memory statistics. sys.stderr.write('Table memory = %d bytes (pool %d, refs %d)\n' % (self.pool_size * 2 + self.pool_refs * 2, self.pool_size * 2, self.pool_refs * 2)) # Print the collectable initialization function. sys.stderr.write("Completing %s\n" % self.DATA) write = self.write_data write('\n' 'bool\n' 'module_strips (struct recode_outer *outer)\n' '{\n' ' RECODE_ALIAS alias;\n' '\n') count = 0 while self.declare_charset: write(' if (!declare_strip_data (outer, &data_%d, "%s"))\n' ' return false;\n' % (count, self.declare_charset[0])) del self.declare_charset[0] count = count + 1 write('\n') while self.declare_alias: alias, charset = self.declare_alias[0] if self.implied_surface.has_key(alias): write(' if (alias = declare_alias (outer, "%s", "%s"),' ' !alias)\n' ' return false;\n' % self.declare_alias[0]) write(' if (!declare_implied_surface (outer, alias,' ' outer->%s_surface))\n' ' return false;\n' % self.implied_surface[alias]) else: write(' if (!declare_alias (outer, "%s", "%s"))\n' ' return false;\n' % self.declare_alias[0]) del self.declare_alias[0] write('\n' ' return true;\n' '}\n' '\n' 'void\n' 'delmodule_strips (struct recode_outer *outer)\n' '{\n' '}\n') # Write the pool file. write = Output(self.POOL).write write('\n' '#include "common.h"\n' '\n' 'const recode_ucs2 ucs2_data_pool[%d] =\n' ' {' % self.pool_size) count = 0 for strip in self.strips: for pos in range(0, self.STRIP_SIZE * 4, 4): if count % 8 == 0: if count != 0: write(',') write('\n /* %4d */ ' % count) else: write(', ') write('0x' + strip[pos:pos+4]) count = count + 1 write('\n' ' };\n') def complete_texinfo(self, french): if french: write = Output('fr-%s' % self.TEXINFO, noheader=1).write else: write = Output(self.TEXINFO, noheader=1).write charsets = self.remark_map.keys() charsets.sort() for charset in charsets: write('\n' '@item %s\n' '@tindex %s@r{, aliases and source}\n' % (charset, re.sub(':([0-9]+)', r'(\1)', charset))) aliases = self.aliases_map[charset] if aliases: if len(aliases) == 1: if aliases[0]: # FIXME: pourquoi parfois vide ?? write('@tindex %s\n' '@code{%s} is an alias for this charset.\n' % (re.sub(':([0-9]+)', r'(\1)', aliases[0]), aliases[0])) else: for alias in aliases: write('@tindex %s\n' % re.sub(':([0-9]+)', r'(\1)', alias)) write('@code{%s} and @code{%s} are aliases' ' for this charset.\n' % (string.join(aliases[:-1], '}, @code{'), aliases[-1])) for line in self.remark_map[charset]: if line[0] in string.lowercase: line = string.upper(line[0]) + line[1:] write(string.replace(line, '@', '@@')) if line[-1] != '.': write('.') write('\n') # Handling basic input and output. class Input: def __init__(self, name): self.name = name self.input = open(name) self.line_count = 0 sys.stderr.write("Reading %s\n" % name) def readline(self): self.line = self.input.readline() self.line_count = self.line_count + 1 return self.line def warn(self, format, *args): sys.stderr.write('%s:%s: %s\n' % (self.name, self.line_count, format % args)) def die(self, format, *args): sys.stderr.write('%s:%s: %s\n' % (self.name, self.line_count, format % args)) raise 'Fatal' def begins(self, text): return self.line[:len(text)] == text def match(self, pattern): return re.match(pattern, self.line) def search(self, pattern): return re.search(pattern, self.line) class Output: def __init__(self, name, noheader=0): self.name = name self.write = open(name, 'w').write sys.stderr.write("Writing %s\n" % name) if not noheader: self.write("""\ /* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ """) if __name__ == '__main__': apply(main, tuple(sys.argv[1:])) recode-3.6/doc/recode.info0100644000000000000000000000664107224443041014214 0ustar rootrootThis is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY * recode: (recode). Conversion between character sets and surfaces. END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  Indirect: recode.info-1: 1118 recode.info-2: 42652 recode.info-3: 91007 recode.info-4: 123644 recode.info-5: 169477 recode.info-6: 211889 recode.info-7: 237172  Tag Table: (Indirect) Node: Top1118 Node: Tutorial5524 Node: Introduction9760 Node: Charset overview13998 Node: Surface overview15789 Node: Contributing17256 Ref: Contributing-Footnote-119497 Node: Invoking recode19631 Node: Synopsis20587 Ref: Synopsis-Footnote-123022 Node: Requests23321 Ref: Requests-Footnote-129229 Ref: Requests-Footnote-229296 Ref: Requests-Footnote-329474 Node: Listings29933 Node: Recoding39832 Node: Reversibility42652 Ref: Reversibility-Footnote-151150 Node: Sequencing51287 Node: Mixed53728 Node: Emacs57116 Node: Debugging58095 Node: Library62357 Node: Outer level63710 Node: Request level69235 Node: Task level79727 Node: Charset level90170 Node: Errors91007 Ref: Errors-Footnote-195856 Ref: Errors-Footnote-295970 Node: Universal96331 Ref: Universal-Footnote-199458 Ref: Universal-Footnote-299526 Node: UCS-299739 Node: UCS-4102268 Node: UTF-7102805 Node: UTF-8103397 Node: UTF-16107699 Node: count-characters108844 Node: dump-with-names109512 Node: libiconv112065 Node: Tabular123644 Node: ASCII misc145909 Node: ASCII146271 Node: ISO 8859147087 Node: ASCII-BS149381 Node: flat151215 Node: IBM and MS151883 Node: EBCDIC152455 Node: IBM-PC154564 Ref: IBM-PC-Footnote-1156681 Node: Icon-QNX156839 Node: CDC157261 Node: Display Code158962 Ref: Display Code-Footnote-1161244 Node: CDC-NOS161449 Node: Bang-Bang163406 Node: Micros165330 Node: Apple-Mac165712 Node: AtariST167760 Node: Miscellaneous168743 Node: HTML169477 Node: LaTeX175496 Node: Texinfo176265 Node: Vietnamese177038 Node: African178011 Node: Others179360 Node: Texte180811 Ref: Texte-Footnote-1185359 Ref: Texte-Footnote-2185439 Ref: Texte-Footnote-3185914 Node: Mule186011 Ref: Mule-Footnote-1187791 Node: Surfaces188310 Ref: Surfaces-Footnote-1191295 Node: Permutations191401 Node: End lines192239 Node: MIME194439 Node: Dump195623 Node: Test199810 Node: Internals202284 Node: Main flow203520 Node: New charsets206633 Node: New surfaces211168 Node: Design211889 Ref: Design-Footnote-1221103 Node: Concept Index221207 Node: Option Index231664 Node: Library Index233745 Node: Charset and Surface Index237172  End Tag Table recode-3.6/doc/recode.info-10100644000000000000000000012323407224443041014350 0ustar rootrootThis is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY * recode: (recode). Conversion between character sets and surfaces. END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: recode.info, Node: Top, Next: Tutorial, Prev: (dir), Up: (dir) `recode' ******** This recoding library converts files between various coded character sets and surface encodings. When this cannot be achieved exactly, it may get rid of the offending characters or fall back on approximations. The library recognises or produces more than 300 different character sets and is able to convert files between almost any pair. Most RFC 1345 character sets, and all `libiconv' character sets, are supported. The `recode' program is a handy front-end to the library. The current `recode' release is 3.6. * Menu: * Tutorial:: Quick Tutorial * Introduction:: Terminology and purpose * Invoking recode:: How to use this program * Library:: A recoding library * Universal:: The universal charset * libiconv:: The `iconv' library * Tabular:: Tabular sources (RFC 1345) * ASCII misc:: ASCII and some derivatives * IBM and MS:: Some IBM or Microsoft charsets * CDC:: Charsets for CDC machines * Micros:: Other micro-computer charsets * Miscellaneous:: Various other charsets * Surfaces:: All about surfaces * Internals:: Internal aspects * Concept Index:: Concept Index * Option Index:: Option Index * Library Index:: Library Index * Charset and Surface Index:: Charset and Surface Index --- The Detailed Node Listing --- Terminology and purpose * Charset overview:: Overview of charsets * Surface overview:: Overview of surfaces * Contributing:: Contributions and bug reports How to use this program * Synopsis:: Synopsis of `recode' call * Requests:: The REQUEST parameter * Listings:: Asking for various lists * Recoding:: Controlling how files are recoded * Reversibility:: Reversibility issues * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using `recode' within Emacs * Debugging:: Debugging considerations A recoding library * Outer level:: Outer level functions * Request level:: Request level functions * Task level:: Task level functions * Charset level:: Charset level functions * Errors:: Handling errors The universal charset * UCS-2:: Universal Character Set, 2 bytes * UCS-4:: Universal Character Set, 4 bytes * UTF-7:: Universal Transformation Format, 7 bits * UTF-8:: Universal Transformation Format, 8 bits * UTF-16:: Universal Transformation Format, 16 bits * count-characters:: Frequency count of characters * dump-with-names:: Fully interpreted UCS dump ASCII and some derivatives * ASCII:: Usual ASCII * ISO 8859:: ASCII extended by Latin Alphabets * ASCII-BS:: ASCII 7-bits, BS to overstrike * flat:: ASCII without diacritics nor underline Some IBM or Microsoft charsets * EBCDIC:: EBCDIC codes * IBM-PC:: IBM's PC code * Icon-QNX:: Unisys' Icon code Charsets for CDC machines * Display Code:: Control Data's Display Code * CDC-NOS:: ASCII 6/12 from NOS * Bang-Bang:: ASCII ``bang bang'' Other micro-computer charsets * Apple-Mac:: Apple's Macintosh code * AtariST:: Atari ST code Various other charsets * HTML:: World Wide Web representations * LaTeX:: LaTeX macro calls * Texinfo:: GNU project documentation files * Vietnamese:: Vietnamese charsets * African:: African charsets * Others:: Cyrillic and other charsets * Texte:: Easy French conventions * Mule:: Mule as a multiplexed charset All about surfaces * Permutations:: Permuting groups of bytes * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps * Test:: Artificial data for testing Internal aspects * Main flow:: Overall organisation * New charsets:: Adding new charsets * New surfaces:: Adding new surfaces * Design:: Comments on the library design  File: recode.info, Node: Tutorial, Next: Introduction, Prev: Top, Up: Top Quick Tutorial ************** So, really, you just are in a hurry to use `recode', and do not feel like studying this manual? Even reading this paragraph slows you down? We might have a problem, as you will have to do some guess work, and might not become very proficient unless you have a very solid intuition.... Let me use here, as a quick tutorial, an actual reply of mine to a `recode' user, who writes: My situation is this--I occasionally get email with special characters in it. Sometimes this mail is from a user using IBM software and sometimes it is a user using Mac software. I myself am on a SPARC Solaris machine. Your situation is similar to mine, except that I _often_ receive email needing recoding, that is, much more than _occasionally_! The usual recodings I do are Mac to Latin-1, IBM page codes to Latin-1, Easy-French to Latin-1, remove Quoted-Printable, remove Base64. These are so frequent that I made myself a few two-keystroke Emacs commands to filter the Emacs region. This is very convenient for me. I also resort to many other email conversions, yet more rarely than the frequent cases above. It _seems_ like this should be doable using `recode'. However, when I try something like `grecode mac macfile.txt' I get nothing out--no error, no output, nothing. Presuming you are using some recent version of `recode', the command: recode mac macfile.txt is a request for recoding `macfile.txt' over itself, overwriting the original, from Macintosh usual character code and Macintosh end of lines, to Latin-1 and Unix end of lines. This is overwrite mode. If you want to use `recode' as a filter, which is probably what you need, rather do: recode mac and give your Macintosh file as standard input, you'll get the Latin-1 file on standard output. The above command is an abbreviation for any of: recode mac.. recode mac..l1 recode mac..Latin-1 recode mac/CR..Latin-1/ recode Macintosh..ISO_8859-1 recode Macintosh/CR..ISO_8859-1/ That is, a `CR' surface, encoding newlines with ASCII , is first to be removed (this is a default surface for `mac'), then the Macintosh charset is converted to Latin-1 and no surface is added to the result (there is no default surface for `l1'). If you want `mac' code converted, but you know that newlines are already coded the Unix way, just do: recode mac/ the slash then overriding the default surface with empty, that is, none. Here are other easy recipes: recode pc to filter IBM-PC code and CR-LF (default) to Latin-1 recode pc/ to filter IBM-PC code to Latin-1 recode 850 to filter code page 850 and CR-LF (default) to Latin-1 recode 850/ to filter code page 850 to Latin-1 recode /qp to remove quoted printable The last one is indeed equivalent to any of: recode /qp.. recode l1/qp..l1/ recode ISO_8859-1/Quoted-Printable..ISO_8859-1/ Here are some reverse recipes: recode ..mac to filter Latin-1 to Macintosh code and CR (default) recode ..mac/ to filter Latin-1 to Macintosh code recode ..pc to filter Latin-1 to IBM-PC code and CR-LF (default) recode ..pc/ to filter Latin-1 to IBM-PC code recode ..850 to filter Latin-1 to code page 850 and CR-LF (default) recode ..850/ to filter Latin-1 to code page 850 recode ../qp to force quoted printable In all the above calls, replace `recode' by `recode -f' if you want to proceed despite recoding errors. If you do not use `-f' and there is an error, the recoding output will be interrupted after first error in filter mode, or the file will not be replaced by a recoded copy in overwrite mode. You may use `recode -l' to get a list of available charsets and surfaces, and `recode --help' to get a quick summary of options. The above output is meant for those having already read this manual, so let me dare a suggestion: why could not you find a few more minutes in your schedule to peek further down, right into the following chapters!  File: recode.info, Node: Introduction, Next: Invoking recode, Prev: Tutorial, Up: Top Terminology and purpose *********************** A few terms are used over and over in this manual, our wise reader will learn their meaning right away. Both ISO (International Organization for Standardisation) and IETF (Internet Engineering Task Force) have their own terminology, this document does not try to stick to either one in a strict way, while it does not want to throw more confusion in the field. On the other hand, it would not be efficient using paraphrases all the time, so `recode' coins a few short words, which are explained below. A "charset", in the context of `recode', is a particular association between computer codes on one side, and a repertoire of intended characters on the other side. Codes are usually taken from a set of consecutive small integers, starting at 0. Some characters have a graphical appearance (glyph) or displayable effect, others have special uses like, for example, to control devices or to interact with neighbouring codes to specify them more precisely. So, a _charset_ is roughly one of those tables, giving a meaning to each of the codes from the set of allowable values. MIME also uses the term charset with approximately the same meaning. It does _not_ exactly corresponds to what ISO calls a "coded character set", that is, a set of characters with an encoding for them. An coded character set does not necessarily use all available code positions, while a MIME charset usually tries to specify them all. A MIME charset might be the union of a few disjoint coded character sets. A "surface" is a term used in `recode' only, and is a short for surface transformation of a charset stream. This is any kind of mapping, usually reversible, which associates physical bits in some medium for a stream of characters taken from one or more charsets (usually one). A surface is a kind of varnish added over a charset so it fits in actual bits and bytes. How end of lines are exactly encoded is not really pertinent to the charset, and so, there is surface for end of lines. `Base64' is also a surface, as we may encode any charset in it. Other examples would `DES' enciphering, or `gzip' compression (even if `recode' does not offer them currently): these are ways to give a real life to theoretical charsets. The "trivial" surface consists into putting characters into fixed width little chunks of bits, usually eight such bits per character. But things are not always that simple. This `recode' library, and the program by that name, have the purpose of converting files between various charsets and surfaces. When this cannot be done in exact ways, as it is often the case, the program may get rid of the offending characters or fall back on approximations. This library recognises or produces around 175 such charsets under 500 names, and handle a dozen surfaces. Since it can convert each charset to almost any other one, many thousands of different conversions are possible. The `recode' program and library do not usually know how to split and sort out textual and non-textual information which may be mixed in a single input file. For example, there is no surface which currently addresses the problem of how lines are blocked into physical records, when the blocking information is added as binary markers or counters within files. So, `recode' should be given textual streams which are rather _pure_. This tool pays special attention to superimposition of diacritics for some French representations. This orientation is mostly historical, it does not impair the usefulness, generality or extensibility of the program. `recode' is both a French and English word. For those who pay attention to those things, the proper pronunciation is French (that is, `racud', with `a' like in `above', and `u' like in `cut'). The program `recode' has been written by Franc,ois Pinard. With time, it got to reuse works from other contributors, and notably, those of Keld Simonsen and Bruno Haible. * Menu: * Charset overview:: Overview of charsets * Surface overview:: Overview of surfaces * Contributing:: Contributions and bug reports  File: recode.info, Node: Charset overview, Next: Surface overview, Prev: Introduction, Up: Introduction Overview of charsets ==================== Recoding is currently possible between many charsets, the bulk of which is described by RFC 1345 tables or available in the `iconv' library. *Note Tabular::, and *note libiconv::. The `recode' library also handles some charsets in some specialised ways. These are: * 6-bit charsets based on CDC display code: 6/12 code from NOS; bang-bang code from Universite' de Montre'al; * 7-bit ASCII: without any diacritics, or else: using backspace for overstriking; Unisys' Icon convention; TeX/LaTeX coding; easy French conventions for electronic mail; * 8-bit extensions to ASCII: ISO Latin-1, Atari ST code, IBM's code for the PC, Apple's code for the Macintosh; * 8-bit non-ASCII codes: three flavours of EBCDIC; * 16-bit or 31-bit universal characters, and their transfer encodings. The introduction of RFC 1345 in `recode' has brought with it a few charsets having the functionality of older ones, but yet being different in subtle ways. The effects have not been fully investigated yet, so for now, clashes are avoided, the old and new charsets are kept well separate. Conversion is possible between almost any pair of charsets. Here is a list of the exceptions. One may not recode _from_ the `flat', `count-characters' or `dump-with-names' charsets, nor _from_ or _to_ the `data', `tree' or `:libiconv:' charsets. Also, if we except the `data' and `tree' pseudo-charsets, charsets and surfaces live in disjoint recoding spaces, one cannot really transform a surface into a charset or vice-versa, as surfaces are only meant to be applied over charsets, or removed from them.  File: recode.info, Node: Surface overview, Next: Contributing, Prev: Charset overview, Up: Introduction Overview of surfaces ==================== For various practical considerations, it sometimes happens that the codes making up a text, written in a particular charset, cannot simply be put out in a file one after another without creating problems or breaking other things. Sometimes, 8-bit codes cannot be written on a 7-bit medium, variable length codes need kind of envelopes, newlines require special treatment, etc. We sometimes have to apply "surfaces" to a stream of codes, which surfaces are kind of tricks used to fit the charset into those practical constraints. Moreover, similar surfaces or tricks may be useful for many unrelated charsets, and many surfaces can be used at once over a single charset. So, `recode' has machinery to describe a combination of a charset with surfaces used over it in a file. We would use the expression "pure charset" for referring to a charset free of any surface, that is, the conceptual association between integer codes and character intents. It is not always clear if some transformation will yield a charset or a surface, especially for those transformations which are only meaningful over a single charset. The `recode' library is not overly picky as identifying surfaces as such: when it is practical to consider a specialised surface as if it were a charset, this is preferred, and done.  File: recode.info, Node: Contributing, Prev: Surface overview, Up: Introduction Contributions and bug reports ============================= Even being the `recode' author and current maintainer, I am no specialist in charset standards. I only made `recode' along the years to solve my own needs, but felt it was applicable for the needs of others. Some FSF people liked the program structure and suggested to make it more widely available. I often rely on `recode' users suggestions to decide what is best to be done next. Properly protecting `recode' about possible copyright fights is a pain for me and for contributors, but we cannot avoid addressing the issue in the long run. Besides, the Free Software Foundation, which mandates the GNU project, is very sensible to this matter. GNU standards suggest that we stay cautious before looking at copyrighted code. The safest and simplest way for me is to gather ideas and reprogram them anew, even if this might slow me down considerably. For contributions going beyond a few lines of code here and there, the FSF definitely requires employer disclaimers and copyright assignments in writing. When you contribute something to `recode', _please_ explain what it is about. Do not take for granted that I know those charsets which are familiar to you. Once again, I'm no expert, and you have to help me. Your explanations could well find their way into this documentation, too. Also, for contributing new charsets or new surfaces, as much as possible, please provide good, solid, verifiable references for the tables you used(1). Many users contributed to `recode' already, I am grateful to them for their interest and involvement. Some suggestions can be integrated quickly while some others have to be delayed, I have to draw a line somewhere when time comes to make a new release, about what would go in it and what would go in the next. Please send suggestions, documentation errors and bug reports to or, if you prefer, directly to , Franc,ois Pinard. Do not be afraid to report details, because this program is the mere aggregation of hundreds of details. ---------- Footnotes ---------- (1) I'm not prone at accepting a charset you just invented, and which nobody uses yet: convince your friends and community first!  File: recode.info, Node: Invoking recode, Next: Library, Prev: Introduction, Up: Top How to use this program *********************** With the synopsis of the `recode' call, we stress the difference between using this program as a file filter, or recoding many files at once. The first parameter of any call states the recoding request, and this deserves a section on its own. Options are then presented, but somewhat grouped according to the related functionalities they control. * Menu: * Synopsis:: Synopsis of `recode' call * Requests:: The REQUEST parameter * Listings:: Asking for various lists * Recoding:: Controlling how files are recoded * Reversibility:: Reversibility issues * Sequencing:: Selecting sequencing methods * Mixed:: Using mixed charset input * Emacs:: Using `recode' within Emacs * Debugging:: Debugging considerations  File: recode.info, Node: Synopsis, Next: Requests, Prev: Invoking recode, Up: Invoking recode Synopsis of `recode' call ========================= The general format of the program call is one of: recode [OPTION]... [CHARSET | REQUEST [FILE]... ] Some calls are used only to obtain lists produced by `recode' itself, without actually recoding any file. They are recognised through the usage of listing options, and these options decide what meaning should be given to an optional CHARSET parameter. *Note Listings::. In other calls, the first parameter (REQUEST) always explains which transformations are expected on the files. There are many variations to the aspect of this parameter. We will discuss more complex situations later (*note Requests::), but for many simple cases, this parameter merely looks like this(1): BEFORE..AFTER where BEFORE and AFTER each gives the name of a charset. Each FILE will be read assuming it is coded with charset BEFORE, it will be recoded over itself so to use the charset AFTER. If there is no FILE on the `recode' command, the program rather acts as a Unix filter and transforms standard input onto standard output. The capability of recoding many files at once is very convenient. For example, one could easily prepare a distribution from Latin-1 to MSDOS, this way: mkdir package cp -p Makefile *.[ch] package recode Latin-1..MSDOS package/* zoo ah package.zoo package/* rm -rf package (In this example, the non-mandatory `-p' option to `cp' is for preserving timestamps, and the `zoo' program is an archiver from Rahul Dhesi which once was quite popular.) The filter operation is especially useful when the input files should not be altered. Let us make an example to illustrate this point. Suppose that someone has a file named `datum.txt', which is almost a TeX file, except that diacriticised characters are written using Latin-1. To complete the recoding of the diacriticised characters _only_ and produce a file `datum.tex', without destroying the original, one could do: cp -p datum.txt datum.tex recode -d l1..tex datum.tex However, using `recode' as a filter will achieve the same goal more neatly: recode -d l1..tex datum.tex This example also shows that `l1' could be used instead of `Latin-1'; charset names often have such aliases. ---------- Footnotes ---------- (1) In previous versions or `recode', a single colon `:' was used instead of the two dots `..' for separating charsets, but this was creating problems because colons are allowed in official charset names. The old request syntax is still recognised for compatibility purposes, but is deprecated.  File: recode.info, Node: Requests, Next: Listings, Prev: Synopsis, Up: Invoking recode The REQUEST parameter ===================== In the case where the REQUEST is merely written as BEFORE..AFTER, then BEFORE and AFTER specify the start charset and the goal charset for the recoding. For `recode', charset names may contain any character, besides a comma, a forward slash, or two periods in a row. But in practice, charset names are currently limited to alphabetic letters (upper or lower case), digits, hyphens, underlines, periods, colons or round parentheses. The complete syntax for a valid REQUEST allows for unusual things, which might surprise at first. (Do not pay too much attention to these facilities on first reading.) For example, REQUEST may also contain intermediate charsets, like in the following example: BEFORE..INTERIM1..INTERIM2..AFTER meaning that `recode' should internally produce the INTERIM1 charset from the start charset, then work out of this INTERIM1 charset to internally produce INTERIM2, and from there towards the goal charset. In fact, `recode' internally combines recipes and automatically uses interim charsets, when there is no direct recipe for transforming BEFORE into AFTER. But there might be many ways to do it. When many routes are possible, the above "chaining" syntax may be used to more precisely force the program towards a particular route, which it might not have naturally selected otherwise. On the other hand, because `recode' tries to choose good routes, chaining is only needed to achieve some rare, unusual effects. Moreover, many such requests (sub-requests, more precisely) may be separated with commas (but no spaces at all), indicating a sequence of recodings, where the output of one has to serve as the input of the following one. For example, the two following requests are equivalent: BEFORE..INTERIM1..INTERIM2..AFTER BEFORE..INTERIM1,INTERIM1..INTERIM2,INTERIM2..AFTER In this example, the charset input for any recoding sub-request is identical to the charset output by the preceding sub-request. But it does not have to be so in the general case. One might wonder what would be the meaning of declaring the charset input for a recoding sub-request of being of different nature than the charset output by a preceding sub-request, when recodings are chained in this way. Such a strange usage might have a meaning and be useful for the `recode' expert, but they are quite uncommon in practice. More useful is the distinction between the concept of charset, and the concept of surfaces. An encoded charset is represented by: PURE-CHARSET/SURFACE1/SURFACE2... using slashes to introduce surfaces, if any. The order of application of surfaces is usually important, they cannot be freely commuted. In the given example, SURFACE1 is first applied over the PURE-CHARSET, then SURFACE2 is applied over the result. Given this request: BEFORE/SURFACE1/SURFACE2..AFTER/SURFACE3 the `recode' program will understand that the input files should have SURFACE2 removed first (because it was applied last), then SURFACE1 should be removed. The next step will be to translate the codes from charset BEFORE to charset AFTER, prior to applying SURFACE3 over the result. Some charsets have one or more _implied_ surfaces. In this case, the implied surfaces are automatically handled merely by naming the charset, without any explicit surface to qualify it. Let's take an example to illustrate this feature. The request `pc..l1' will indeed decode MS-DOS end of lines prior to converting IBM-PC codes to Latin-1, because `pc' is the name of a charset(1) which has `CR-LF' for its usual surface. The request `pc/..l1' will _not_ decode end of lines, since the slash introduces surfaces, and even if the surface list is empty, it effectively defeats the automatic removal of surfaces for this charset. So, empty surfaces are useful, indeed! Both charsets and surfaces may have predefined alternate names, or aliases. However, and this is rather important to understand, implied surfaces are attached to individual aliases rather than on genuine charsets. Consequently, the official charset name and all of its aliases do not necessarily share the same implied surfaces. The charset and all its aliases may each have its own different set of implied surfaces. Charset names, surface names, or their aliases may always be abbreviated to any unambiguous prefix. Internally in `recode', disambiguating tables are kept separate for charset names and surface names. While recognising a charset name or a surface name (or aliases thereof), `recode' ignores all characters besides letters and digits, so for example, the hyphens and underlines being part of an official charset name may safely be omitted (no need to un-confuse them!). There is also no distinction between upper and lower case for charset or surface names. One of the BEFORE or AFTER keywords may be omitted. If the double dot separator is omitted too, then the charset is interpreted as the BEFORE charset.(2) When a charset name is omitted or left empty, the value of the `DEFAULT_CHARSET' variable in the environment is used instead. If this variable is not defined, the `recode' library uses the current locale's encoding. On POSIX compliant systems, this depends on the first non-empty value among the environment variables LC_ALL, LC_CTYPE, LANG, and can be determined through the command `locale charmap'. If the charset name is omitted but followed by surfaces, the surfaces then qualify the usual or default charset. For example, the request `../x' is sufficient for applying an hexadecimal surface to the input text(3). The allowable values for BEFORE or AFTER charsets, and various surfaces, are described in the remainder of this document. ---------- Footnotes ---------- (1) More precisely, `pc' is an alias for the charset `IBM-PC'. (2) Both BEFORE and AFTER may be omitted, in which case the double dot separator is mandatory. This is not very useful, as the recoding reduces to a mere copy in that case. (3) MS-DOS is one of those systems for which the default charset has implied surfaces, `CR-LF' here. Such surfaces are automatically removed or applied whenever the default charset is read or written, exactly as it would go for any other charset. In the example above, on such systems, the hexadecimal surface would then _replace_ the implied surfaces. For _adding_ an hexadecimal surface without removing any, one should write the request as `/../x'.  File: recode.info, Node: Listings, Next: Recoding, Prev: Requests, Up: Invoking recode Asking for various lists ======================== Many options control listing output generated by `recode' itself, they are not meant to accompany actual file recodings. These options are: `--version' The program merely prints its version numbers on standard output, and exits without doing anything else. `--help' The program merely prints a page of help on standard output, and exits without doing any recoding. `-C' `--copyright' Given this option, all other parameters and options are ignored. The program prints briefly the copyright and copying conditions. See the file `COPYING' in the distribution for full statement of the Copyright and copying conditions. `-h[LANGUAGE/][NAME]' `--header[=[LANGUAGE/][NAME]]' Instead of recoding files, `recode' writes a LANGUAGE source file on standard output and exits. This source is meant to be included in a regular program written in the same programming LANGUAGE: its purpose is to declare and initialise an array, named NAME, which represents the requested recoding. The only acceptable values for LANGUAGE are `c' or `perl', and may may be abbreviated. If LANGUAGE is not specified, `c' is assumed. If NAME is not specified, then it defaults to `BEFORE_AFTER'. Strings BEFORE and AFTER are cleaned before being used according to the syntax of LANGUAGE. Even if `recode' tries its best, this option does not always succeed in producing the requested source table. It will however, provided the recoding can be internally represented by only one step after the optimisation phase, and if this merged step conveys a one-to-one or a one-to-many explicit table. Also, when attempting to produce sources tables, `recode' relaxes its checking a tiny bit: it ignores the algorithmic part of some tabular recodings, it also avoids the processing of implied surfaces. But this is all fairly technical. Better try and see! Beware that other options might affect the produced source tables, these are: `-d', `-g' and, particularly, `-s'. `-k PAIRS' `--known=PAIRS' This particular option is meant to help identifying an unknown charset, using as hints some already identified characters of the charset. Some examples will help introducing the idea. Let's presume here that `recode' is run in an ISO-8859-1 locale, and that `DEFAULT_CHARSET' is unset in the environment. Suppose you have guessed that code 130 (decimal) of the unknown charset represents a lower case `e' with an acute accent. That is to say that this code should map to code 233 (decimal) in the usual charset. By executing: recode -k 130:233 you should obtain a listing similar to: AtariST atarist CWI cphu cwi cwi2 IBM437 437 cp437 ibm437 IBM850 850 cp850 ibm850 IBM851 851 cp851 ibm851 IBM852 852 cp852 ibm852 IBM857 857 cp857 ibm857 IBM860 860 cp860 ibm860 IBM861 861 cp861 cpis ibm861 IBM863 863 cp863 ibm863 IBM865 865 cp865 ibm865 You can give more than one clue at once, to restrict the list further. Suppose you have _also_ guessed that code 211 of the unknown charset represents an upper case `E' with diaeresis, that is, code 203 in the usual charset. By requesting: recode -k 130:233,211:203 you should obtain: IBM850 850 cp850 ibm850 IBM852 852 cp852 ibm852 IBM857 857 cp857 ibm857 The usual charset may be overridden by specifying one non-option argument. For example, to request the list of charsets for which code 130 maps to code 142 for the Macintosh, you may ask: recode -k 130:142 mac and get: AtariST atarist CWI cphu cwi cwi2 IBM437 437 cp437 ibm437 IBM850 850 cp850 ibm850 IBM851 851 cp851 ibm851 IBM852 852 cp852 ibm852 IBM857 857 cp857 ibm857 IBM860 860 cp860 ibm860 IBM861 861 cp861 cpis ibm861 IBM863 863 cp863 ibm863 IBM865 865 cp865 ibm865 which, of course, is identical to the result of the first example, since the code 142 for the Macintosh is a small `e' with acute. More formally, option `-k' lists all possible _before_ charsets for the _after_ charset given as the sole non-option argument to `recode', but subject to restrictions given in PAIRS. If there is no non-option argument, the _after_ charset is taken to be the default charset for this `recode'. The restrictions are given as a comma separated list of pairs, each pair consisting of two numbers separated by a colon. The numbers are taken as decimal when the initial digit is between `1' and `9'; `0x' starts an hexadecimal number, or else `0' starts an octal number. The first number is a code in any _before_ charset, while the second number is a code in the specified _after_ charset. If the first number would not be transformed into the second number by recoding from some _before_ charset to the _after_ charset, then this _before_ charset is rejected. A _before_ charset is listed only if it is not rejected by any pair. The program will only test those _before_ charsets having a tabular style internal description (*note Tabular::), so should be the selected _after_ charset. The produced list is in fact a subset of the list produced by the option `-l'. As for option `-l', the non-option argument is interpreted as a charset name, possibly abbreviated to any non ambiguous prefix. `-l[FORMAT]' `--list[=FORMAT]' This option asks for information about all charsets, or about one particular charset. No file will be recoded. If there is no non-option arguments, `recode' ignores the FORMAT value of the option, it writes a sorted list of charset names on standard output, one per line. When a charset name have aliases or synonyms, they follow the true charset name on its line, sorted from left to right. Each charset or alias is followed by its implied surfaces, if any. This list is over two hundred lines. It is best used with `grep -i', as in: recode -l | grep -i greek There might be one non-option argument, in which case it is interpreted as a charset name, possibly abbreviated to any non ambiguous prefix. This particular usage of the `-l' option is obeyed _only_ for charsets having a tabular style internal description (*note Tabular::). Even if most charsets have this property, some do not, and the option `-l' cannot be used to detail these particular charsets. For knowing if a particular charset can be listed this way, you should merely try and see if this works. The FORMAT value of the option is a keyword from the following list. Keywords may be abbreviated by dropping suffix letters, and even reduced to the first letter only: `decimal' This format asks for the production on standard output of a concise tabular display of the charset, in which character code values are expressed in decimal. `octal' This format uses octal instead of decimal in the concise tabular display of the charset. `hexadecimal' This format uses hexadecimal instead of decimal in the concise tabular display of the charset. `full' This format requests an extensive display of the charset on standard output, using one line per character showing its decimal, hexadecimal, octal and `UCS-2' code values, and also a descriptive comment which should be the 10646 name for the character. The descriptive comment is given in English and ASCII, yet if the English description is not available but a French one is, then the French description is given instead, using Latin-1. However, if the `LANGUAGE' or `LANG' environment variable begins with the letters `fr', then listing preference goes to French when both descriptions are available. When option `-l' is used together with a CHARSET argument, the FORMAT defaults to `decimal'. `-T' `--find-subsets' This option is a maintainer tool for evaluating the redundancy of those charsets, in `recode', which are internally represented by an `UCS-2' data table. After the listing has been produced, the program exits without doing any recoding. The output is meant to be sorted, like this: `recode -T | sort'. The option triggers `recode' into comparing all pairs of charsets, seeking those which are subsets of others. The concept and results are better explained through a few examples. Consider these three sample lines from `-T' output: [ 0] IBM891 == IBM903 [ 1] IBM1004 < CP1252 [ 12] INVARIANT < CSA_Z243.4-1985-1 The first line means that `IBM891' and `IBM903' are completely identical as far as `recode' is concerned, so one is fully redundant to the other. The second line says that `IBM1004' is wholly contained within `CP1252', yet there is a single character which is in `CP1252' without being in `IBM1004'. The third line says that `INVARIANT' is wholly contained within `CSA_Z243.4-1985-1', but twelve characters are in `CSA_Z243.4-1985-1' without being in `INVARIANT'. The whole output might most probably be reduced and made more significant through a transitivity study.  File: recode.info, Node: Recoding, Next: Reversibility, Prev: Listings, Up: Invoking recode Controlling how files are recoded ================================= The following options have the purpose of giving the user some fine grain control over the recoding operation themselves. `-c' `--colons' With `Texte' Easy French conventions, use the column `:' instead of the double-quote `"' for marking diaeresis. *Note Texte::. `-g' `--graphics' This option is only meaningful while getting _out_ of the `IBM-PC' charset. In this charset, characters 176 to 223 are used for constructing rulers and boxes, using simple or double horizontal or vertical lines. This option forces the automatic selection of ASCII characters for approximating these rulers and boxes, at cost of making the transformation irreversible. Option `-g' implies `-f'. `-t' `--touch' The _touch_ option is meaningful only when files are recoded over themselves. Without it, the time-stamps associated with files are preserved, to reflect the fact that changing the code of a file does not really alter its informational contents. When the user wants the recoded files to be time-stamped at the recoding time, this option inhibits the automatic protection of the time-stamps. `-v' `--verbose' Before doing any recoding, the program will first print on the `stderr' stream the list of all intermediate charsets planned for recoding, starting with the BEFORE charset and ending with the AFTER charset. It also prints an indication of the recoding quality, as one of the word `reversible', `one to one', `one to many', `many to one' or `many to many'. This information will appear once or twice. It is shown a second time only when the optimisation and step merging phase succeeds in replacing many single steps by a new one. This option also has a second effect. The program will print on `stderr' one message per recoded FILE, so as to keep the user informed of the progress of its command. An easy way to know beforehand the sequence or quality of a recoding is by using the command such as: recode -v BEFORE..AFTER < /dev/null using the fact that, in `recode', an empty input file produces an empty output file. `-x CHARSET' `--ignore=CHARSET' This option tells the program to ignore any recoding path through the specified CHARSET, so disabling any single step using this charset as a start or end point. This may be used when the user wants to force `recode' into using an alternate recoding path (yet using chained requests offers a finer control, *note Requests::). CHARSET may be abbreviated to any unambiguous prefix. recode-3.6/doc/recode.info-20100644000000000000000000014050107224443041014345 0ustar rootrootThis is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY * recode: (recode). Conversion between character sets and surfaces. END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: recode.info, Node: Reversibility, Next: Sequencing, Prev: Recoding, Up: Invoking recode Reversibility issues ==================== The following options are somewhat related to reversibility issues: `-f' `--force' With this option, irreversible or otherwise erroneous recodings are run to completion, and `recode' does not exit with a non-zero status if it would be only because irreversibility matters. *Note Reversibility::. Without this option, `recode' tries to protect you against recoding a file irreversibly over itself(1). Whenever an irreversible recoding is met, or any other recoding error, `recode' produces a warning on standard error. The current input file does not get replaced by its recoded version, and `recode' then proceeds with the recoding of the next file. When the program is merely used as a filter, standard output will have received a partially recoded copy of standard input, up to the first error point. After all recodings have been done or attempted, and if some recoding has been aborted, `recode' exits with a non-zero status. In releases of `recode' prior to version 3.5, this option was always selected, so it was rather meaningless. Nevertheless, users were invited to start using `-f' right away in scripts calling `recode' whenever convenient, in preparation for the current behaviour. `-q' `--quiet' `--silent' This option has the sole purpose of inhibiting warning messages about irreversible recodings, and other such diagnostics. It has no other effect, in particular, it does _not_ prevent recodings to be aborted or `recode' to return a non-zero exit status when irreversible recodings are met. This option is set automatically for the children processes, when recode splits itself in many collaborating copies. Doing so, the diagnostic is issued only once by the parent. See option `-p'. `-s' `--strict' By using this option, the user requests that `recode' be very strict while recoding a file, merely losing in the transformation any character which is not explicitly mapped from a charset to another. Such a loss is not reversible and so, will bring `recode' to fail, unless the option `-f' is also given as a kind of counter-measure. Using `-s' without `-f' might render the `recode' program very susceptible to the slighest file abnormalities. Despite the fact that it might be irritating to some users, such paranoia is sometimes wanted and useful. Even if `recode' tries hard to keep the recodings reversible, you should not develop an unconditional confidence in its ability to do so. You _ought_ to keep only reasonable expectations about reverse recodings. In particular, consider: * Most transformations are fully reversible for all inputs, but lose this property whenever `-s' is specified. * A few transformations are not meant to be reversible, by design. * Reversibility sometimes depends on actual file contents and cannot be ascertained beforehand, without reading the file. * Reversibility is never absolute across successive versions of this program. Even correcting a small bug in a mapping could induce slight discrepancies later. * Reversibility is easily lost by merging. This is best explained through an example. If you reversibly recode a file from charset A to charset B, then you reversibly recode the result from charset B to charset C, you cannot expect to recover the original file by merely recoding from charset C directly to charset A. You will instead have to recode from charset C back to charset B, and only then from charset B to charset A. * Faulty files create a particular problem. Consider an example, recoding from `IBM-PC' to `Latin-1'. End of lines are represented as `\r\n' in `IBM-PC' and as `\n' in `Latin-1'. There is no way by which a faulty `IBM-PC' file containing a `\n' not preceded by `\r' be translated into a `Latin-1' file, and then back. * There is another difficulty arising from code equivalences. For example, in a `LaTeX' charset file, the string `\^\i{}' could be recoded back and forth through another charset and become `\^{\i}'. Even if the resulting file is equivalent to the original one, it is not identical. Unless option `-s' is used, `recode' automatically tries to fill mappings with invented correspondences, often making them fully reversible. This filling is not made at random. The algorithm tries to stick to the identity mapping and, when this is not possible, it prefers generating many small permutation cycles, each involving only a few codes. For example, here is how `IBM-PC' code 186 gets translated to `control-U' in `Latin-1'. `Control-U' is 21. Code 21 is the `IBM-PC' section sign, which is 167 in `Latin-1'. `recode' cannot reciprocate 167 to 21, because 167 is the masculine ordinal indicator within `IBM-PC', which is 186 in `Latin-1'. Code 186 within `IBM-PC' has no `Latin-1' equivalent; by assigning it back to 21, `recode' closes this short permutation loop. As a consequence of this map filling, `recode' may sometimes produce _funny_ characters. They may look annoying, they are nevertheless helpful when one changes his (her) mind and wants to revert to the prior recoding. If you cannot stand these, use option `-s', which asks for a very strict recoding. This map filling sometimes has a few surprising consequences, which some users wrongly interpreted as bugs. Here are two examples. 1. In some cases, `recode' seems to copy a file without recoding it. But in fact, it does. Consider a request: recode l1..us < File-Latin1 > File-ASCII cmp File-Latin1 File-ASCII then `cmp' will not report any difference. This is quite normal. `Latin-1' gets correctly recoded to ASCII for charsets commonalities (which are the first 128 characters, in this case). The remaining last 128 `Latin-1' characters have no ASCII correspondent. Instead of losing them, `recode' elects to map them to unspecified characters of ASCII, so making the recoding reversible. The simplest way of achieving this is merely to keep those last 128 characters unchanged. The overall effect is copying the file verbatim. If you feel this behaviour is too generous and if you do not wish to care about reversibility, simply use option `-s'. By doing so, `recode' will strictly map only those `Latin-1' characters which have an ASCII equivalent, and will merely drop those which do not. Then, there is more chance that you will observe a difference between the input and the output file. 2. Recoding the wrong way could sometimes give the false impression that recoding has _almost_ been done properly. Consider the requests: recode 437..l1 < File-Latin1 > Temp1 recode 437..l1 < Temp1 > Temp2 so declaring wrongly `File-Latin1' to be an IBM-PC file, and recoding to `Latin-1'. This is surely ill defined and not meaningful. Yet, if you repeat this step a second time, you might notice that many (not all) characters in `Temp2' are identical to those in `File-Latin1'. Sometimes, people try to discover how `recode' works by experimenting a little at random, rather than reading and understanding the documentation; results such as this are surely confusing, as they provide those people with a false feeling that they understood something. Reversible codings have this property that, if applied several times in the same direction, they will eventually bring any character back to its original value. Since `recode' seeks small permutation cycles when creating reversible codings, besides characters unchanged by the recoding, most permutation cycles will be of length 2, and fewer of length 3, etc. So, it is just expectable that applying the recoding twice in the same direction will recover most characters, but will fail to recover those participating in permutation cycles of length 3. On the other end, recoding six times in the same direction would recover all characters in cycles of length 1, 2, 3 or 6. ---------- Footnotes ---------- (1) There are still some cases of ambiguous output which are rather difficult to detect, and for which the protection is not active.  File: recode.info, Node: Sequencing, Next: Mixed, Prev: Reversibility, Up: Invoking recode Selecting sequencing methods ============================ This program uses a few techniques when it is discovered that many passes are needed to comply with the REQUEST. For example, suppose that four elementary steps were selected at recoding path optimisation time. Then `recode' will split itself into four different interconnected tasks, logically equivalent to: STEP1 OUTPUT The splitting into subtasks is often done using Unix pipes. But the splitting may also be completely avoided, and rather simulated by using memory buffer, or intermediate files. The various `--sequence=STRATEGY' options gives you control over the flow methods, by replacing STRATEGY with `memory', `pipe' or `files'. So, these options may be used to override the default behaviour, which is also explained below. `--sequence=memory' When the recoding requires a combination of two or more elementary recoding steps, this option forces many passes over the data, using in-memory buffers to hold all intermediary results. `-i' `--sequence=files' When the recoding requires a combination of two or more elementary recoding steps, this option forces many passes over the data, using intermediate files between passes. This is the default behaviour when files are recoded over themselves. If this option is selected in filter mode, that is, when the program reads standard input and writes standard output, it might take longer for programs further down the pipe chain to start receiving some recoded data. `-p' `--sequence=pipe' When the recoding requires a combination of two or more elementary recoding steps, this option forces the program to fork itself into a few copies interconnected with pipes, using the `pipe(2)' system call. All copies of the program operate in parallel. This is the default behaviour in filter mode. If this option is used when files are recoded over themselves, this should also save disk space because some temporary files might not be needed, at the cost of more system overhead. If, at installation time, the `pipe(2)' call is said to be unavailable, selecting option `-p' is equivalent to selecting option `-i'. (This happens, for example, on MS-DOS systems.)  File: recode.info, Node: Mixed, Next: Emacs, Prev: Sequencing, Up: Invoking recode Using mixed charset input ========================= In real life and practice, textual files are often made up of many charsets at once. Some parts of the file encode one charset, while other parts encode another charset, and so forth. Usually, a file does not toggle between more than two or three charsets. The means to distinguish which charsets are encoded at various places is not always available. The `recode' program is able to handle only a few simple cases of mixed input. The default `recode' behaviour is to expect pure charset files, to be recoded as other pure charset files. However, the following options allow for a few precise kinds of mixed charset files. `-d' `--diacritics' While converting to or from one of `HTML' or `LaTeX' charset, limit conversion to some subset of all characters. For `HTML', limit conversion to the subset of all non-ASCII characters. For `LaTeX', limit conversion to the subset of all non-English letters. This is particularly useful, for example, when people create what would be valid `HTML', TeX or LaTeX files, if only they were using provided sequences for applying diacritics instead of using the diacriticised characters directly from the underlying character set. While converting to `HTML' or `LaTeX' charset, this option assumes that characters not in the said subset are properly coded or protected already, `recode' then transmit them literally. While converting the other way, this option prevents translating back coded or protected versions of characters not in the said subset. *Note HTML::. *Note LaTeX::. `-S[LANGUAGE]' `--source[=LANGUAGE]' The bulk of the input file is expected to be written in `ASCII', except for parts, like comments and string constants, which are written using another charset than `ASCII'. When LANGUAGE is `c', the recoding will proceed only with the contents of comments or strings, while everything else will be copied without recoding. When LANGUAGE is `po', the recoding will proceed only within translator comments (those having whitespace immediately following the initial `#') and with the contents of `msgstr' strings. For the above things to work, the non-`ASCII' encoding of the comment or string should be such that an `ASCII' scan will successfully find where the comment or string ends. Even if `ASCII' is the usual charset for writing programs, some compilers are able to directly read other charsets, like `UTF-8', say. There is currently no provision in `recode' for reading mixed charset sources which are not based on `ASCII'. It is probable that the need for mixed recoding is not as pressing in such cases. For example, after one does: recode -Spo pc/..u8 < INPUT.po > OUTPUT.po file `OUTPUT.po' holds a copy of `INPUT.po' in which _only_ translator comments and the contents of `msgstr' strings have been recoded from the `IBM-PC' charset to pure `UTF-8', without attempting conversion of end-of-lines. Machine generated comments and original `msgid' strings are not to be touched by this recoding. If LANGUAGE is not specified, `c' is assumed.  File: recode.info, Node: Emacs, Next: Debugging, Prev: Mixed, Up: Invoking recode Using `recode' within Emacs =========================== The fact `recode' is a filter makes it quite easy to use from within GNU Emacs. For example, recoding the whole buffer from the `IBM-PC' charset to current charset (`Latin-1' on Unix) is easily done with: C-x h C-u M-| recode ibmpc RET `C-x h' selects the whole buffer, and `C-u M-|' filters and replaces the current region through the given shell command. Here is another example, binding the keys `C-c T' to the recoding of the current region from Easy French to `Latin-1' (on Unix) and the key `C-u C-c T' from `Latin-1' (on Unix) to Easy French: (global-set-key "\C-cT" 'recode-texte) (defun recode-texte (flag) (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..txte" "txte")) t) (exchange-point-and-mark))  File: recode.info, Node: Debugging, Prev: Emacs, Up: Invoking recode Debugging considerations ======================== It is our experience that when `recode' does not provide satisfying results, either `recode' was not called properly, correct results raised some doubts nevertheless, or files to recode were somewhat mangled. Genuine bugs are surely possible. Unless you already are a `recode' expert, it might be a good idea to quickly revisit the tutorial (*note Tutorial::) or the prior sections in this chapter, to make sure that you properly formatted your recoding request. In the case you intended to use `recode' as a filter, make sure that you did not forget to redirect your standard input (through using the `<' symbol in the shell, say). Some `recode' false mysteries are also easily explained, *Note Reversibility::. For the other cases, some investigation is needed. To illustrate how to proceed, let's presume that you want to recode the `nicepage' file, coded `UTF-8', into `HTML'. The problem is that the command `recode u8..h nicepage' yields: recode: Invalid input in step `UTF-8..ISO-10646-UCS-2' One good trick is to use `recode' in filter mode instead of in file replacement mode, *Note Synopsis::. Another good trick is to use the `-v' option asking for a verbose description of the recoding steps. We could rewrite our recoding call as `recode -v u8..h temporary recode -v ISO_10646-UCS-2..HTML_4.0 ', then `recode' might have done a bit more that you wanted. In this case, your input file was half-`UTF-8', half-`HTML' already, that is, a mixed file (*note Mixed::). There is a special `-d' switch for this case. So, your might be end up calling `recode -fd nicepage'. Until you are quite sure that you accept overwriting your input file whatever what, I recommend that you stick with filter mode. If, after such experiments, you seriously think that the `recode' program does not behave properly, there might be a genuine bug in the program itself, in which case I invite you to to contribute a bug report, *Note Contributing::.  File: recode.info, Node: Library, Next: Universal, Prev: Invoking recode, Up: Top A recoding library ****************** The program named `recode' is just an application of its recoding library. The recoding library is available separately for other C programs. A good way to acquire some familiarity with the recoding library is to get acquainted with the `recode' program itself. To use the recoding library once it is installed, a C program needs to have a line: #include near its beginning, and the user should have `-lrecode' on the linking call, so modules from the recoding library are found. The library is still under development. As it stands, it contains four identifiable sets of routines: the outer level functions, the request level functions, the task level functions and the charset level functions. There are discussed in separate sections. For effectively using the recoding library in most applications, it should be rarely needed to study anything beyond the main initialisation function at outer level, and then, various functions at request level. * Menu: * Outer level:: Outer level functions * Request level:: Request level functions * Task level:: Task level functions * Charset level:: Charset level functions * Errors:: Handling errors  File: recode.info, Node: Outer level, Next: Request level, Prev: Library, Up: Library Outer level functions ===================== The outer level functions mainly prepare the whole recoding library for use, or do actions which are unrelated to specific recodings. Here is an example of a program which does not really make anything useful. #include #include const char *program_name; int main (int argc, char *const *argv) { program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (true); recode_delete_outer (outer); exit (0); } The header file `' declares an opaque `RECODE_OUTER' structure, which the programmer should use for allocating a variable in his program (let's assume the programmer is a male, here, no prejudice intended). This `outer' variable is given as a first argument to all outer level functions. The `' header file uses the Boolean type setup by the system header file `'. But this header file is still fairly new in C standards, and likely does not exist everywhere. If you system does not offer this system header file yet, the proper compilation of the `' file could be guaranteed through the replacement of the inclusion line by: typedef enum {false = 0, true = 1} bool; People wanting wider portability, or Autoconf lovers, might arrange their `configure.in' for being able to write something more general, like: #if STDC_HEADERS # include #endif /* Some systems do not define EXIT_*, even with STDC_HEADERS. */ #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 #endif #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #endif /* The following test is to work around the gross typo in systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE is defined to 0, not 1. */ #if !EXIT_FAILURE # undef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #if HAVE_STDBOOL_H # include #else typedef enum {false = 0, true = 1} bool; #endif #include const char *program_name; int main (int argc, char *const *argv) { program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (true); recode_term_outer (outer); exit (EXIT_SUCCESS); } but we will not insist on such details in the examples to come. * Initialisation functions RECODE_OUTER recode_new_outer (AUTO_ABORT); bool recode_delete_outer (OUTER); The recoding library absolutely needs to be initialised before being used, and `recode_new_outer' has to be called once, first. Besides the OUTER it is meant to initialise, the function accepts a Boolean argument whether or not the library should automatically issue diagnostics on standard and abort the whole program on errors. When AUTO_ABORT is `true', the library later conveniently issues diagnostics itself, and aborts the calling program on errors. This is merely a convenience, because if this parameter was `false', the calling program should always take care of checking the return value of all other calls to the recoding library functions, and when any error is detected, issue a diagnostic and abort processing itself. Regardless of the setting of AUTO_ABORT, all recoding library functions return a success status. Most functions are geared for returning `false' for an error, and `true' if everything went fine. Functions returning structures or strings return `NULL' instead of the result, when the result cannot be produced. If AUTO_ABORT is selected, functions either return `true', or do not return at all. As in the example above, `recode_new_outer' is called only once in most cases. Calling `recode_new_outer' implies some overhead, so calling it more than once should preferably be avoided. The termination function `recode_delete_outer' reclaims the memory allocated by `recode_new_outer' for a given OUTER variable. Calling `recode_delete_outer' prior to program termination is more aesthetic then useful, as all memory resources are automatically reclaimed when the program ends. You may spare this terminating call if you prefer. * The `program_name' declaration As we just explained, the user may set the `recode' library so that, in case of problems error, it issues the diagnostic itself and aborts the whole processing. This capability may be quite convenient. When this feature is used, the aborting routine includes the name of the running program in the diagnostic. On the other hand, when this feature is not used, the library merely return error codes, giving the library user fuller control over all this. This behaviour is more like what usual libraries do: they return codes and never abort. However, I would rather not force library users to necessarily check all return codes themselves, by leaving no other choice. In most simple applications, letting the library diagnose and abort is much easier, and quite welcome. This is precisely because both possibilities exist that the `program_name' variable is needed: it may be used by the library _when_ the user sets it to diagnose itself.  File: recode.info, Node: Request level, Next: Task level, Prev: Outer level, Up: Library Request level functions ======================= The request level functions are meant to cover most recoding needs programmers may have; they should provide all usual functionality. Their API is almost stable by now. To get started with request level functions, here is a full example of a program which sole job is to filter `ibmpc' code on its standard input into `latin1' code on its standard output. #include #include #include const char *program_name; int main (int argc, char *const *argv) { program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (true); RECODE_REQUEST request = recode_new_request (outer); bool success; recode_scan_request (request, "ibmpc..latin1"); success = recode_file_to_file (request, stdin, stdout); recode_delete_request (request); recode_delete_outer (outer); exit (success ? 0 : 1); } The header file `' declares a `RECODE_REQUEST' structure, which the programmer should use for allocating a variable in his program. This REQUEST variable is given as a first argument to all request level functions, and in most cases, may be considered as opaque. * Initialisation functions RECODE_REQUEST recode_new_request (OUTER); bool recode_delete_request (REQUEST); No REQUEST variable may not be used in other request level functions of the recoding library before having been initialised by `recode_new_request'. There may be many such REQUEST variables, in which case, they are independent of one another and they all need to be initialised separately. To avoid memory leaks, a REQUEST variable should not be initialised a second time without calling `recode_delete_request' to "un-initialise" it. Like for `recode_delete_outer', calling `recode_delete_request' prior to program termination, in the example above, may be left out. * Fields of `struct recode_request' Here are the fields of a `struct recode_request' which may be meaningfully changed, once a REQUEST has been initialised by `recode_new_request', but before it gets used. It is not very frequent, in practice, that these fields need to be changed. To access the fields, you need to include `recodext.h' _instead_ of `recode.h', in which case there also is a greater chance that you need to recompile your programs if a new version of the recoding library gets installed. `verbose_flag' This field is initially `false'. When set to `true', the library will echo to stderr the sequence of elementary recoding steps needed to achieve the requested recoding. `diaeresis_char' This field is initially the ASCII value of a double quote `"', but it may also be the ASCII value of a colon `:'. In `texte' charset, some countries use double quotes to mark diaeresis, while other countries prefer colons. This field contains the diaeresis character for the `texte' charset. `make_header_flag' This field is initially `false'. When set to `true', it indicates that the program is merely trying to produce a recoding table in source form rather than completing any actual recoding. In such a case, the optimisation of step sequence can be attempted much more aggressively. If the step sequence cannot be reduced to a single step, table production will fail. `diacritics_only' This field is initially `false'. For `HTML' and `LaTeX' charset, it is often convenient to recode the diacriticized characters only, while just not recoding other HTML code using ampersands or angular brackets, or LaTeX code using backslashes. Set the field to `true' for getting this behaviour. In the other charset, one can edit text as well as HTML or LaTeX directives. `ascii_graphics' This field is initially `false', and relate to characters 176 to 223 in the `ibmpc' charset, which are use to draw boxes. When set to `true', while getting out of `ibmpc', ASCII characters are selected so to graphically approximate these boxes. * Study of request strings bool recode_scan_request (REQUEST, "STRING"); The main role of a REQUEST variable is to describe a set of recoding transformations. Function `recode_scan_request' studies the given STRING, and stores an internal representation of it into REQUEST. Note that STRING may be a full-fledged `recode' request, possibly including surfaces specifications, intermediary charsets, sequences, aliases or abbreviations (*note Requests::). The internal representation automatically receives some pre-conditioning and optimisation, so the REQUEST may then later be used many times to achieve many actual recodings. It would not be efficient calling `recode_scan_request' many times with the same STRING, it is better having many REQUEST variables instead. * Actual recoding jobs Once the REQUEST variable holds the description of a recoding transformation, a few functions use it for achieving an actual recoding. Either input or output of a recoding may be string, an in-memory buffer, or a file. Functions with names like `recode_INPUT-TYPE_to_OUTPUT-TYPE' request an actual recoding, and are described below. It is easy to remember which arguments each function accepts, once grasped some simple principles for each possible TYPE. However, one of the recoding function escapes these principles and is discussed separately, first. recode_string (REQUEST, STRING); The function `recode_string' recodes STRING according to REQUEST, and directly returns the resulting recoded string freshly allocated, or `NULL' if the recoding could not succeed for some reason. When this function is used, it is the responsibility of the programmer to ensure that the memory used by the returned string is later reclaimed. char *recode_string_to_buffer (REQUEST, INPUT_STRING, &OUTPUT_BUFFER, &OUTPUT_LENGTH, &OUTPUT_ALLOCATED); bool recode_string_to_file (REQUEST, INPUT_FILE, OUTPUT_FILE); bool recode_buffer_to_buffer (REQUEST, INPUT_BUFFER, INPUT_LENGTH, &OUTPUT_BUFFER, &OUTPUT_LENGTH, &OUTPUT_ALLOCATED); bool recode_buffer_to_file (REQUEST, INPUT_BUFFER, INPUT_LENGTH, OUTPUT_FILE); bool recode_file_to_buffer (REQUEST, INPUT_FILE, &OUTPUT_BUFFER, &OUTPUT_LENGTH, &OUTPUT_ALLOCATED); bool recode_file_to_file (REQUEST, INPUT_FILE, OUTPUT_FILE); All these functions return a `bool' result, `false' meaning that the recoding was not successful, often because of reversibility issues. The name of the function well indicates on which types it reads and which type it produces. Let's discuss these three types in turn. string A string is merely an in-memory buffer which is terminated by a `NUL' character (using as many bytes as needed), instead of being described by a byte length. For input, a pointer to the buffer is given through one argument. It is notable that there is no `to_string' functions. Only one function recodes into a string, and it is `recode_string', which has already been discussed separately, above. buffer A buffer is a sequence of bytes held in computer memory. For input, two arguments provide a pointer to the start of the buffer and its byte size. Note that for charsets using many bytes per character, the size is given in bytes, not in characters. For output, three arguments provide the address of three variables, which will receive the buffer pointer, the used buffer size in bytes, and the allocated buffer size in bytes. If at the time of the call, the buffer pointer is `NULL', then the allocated buffer size should also be zero, and the buffer will be allocated afresh by the recoding functions. However, if the buffer pointer is not `NULL', it should be already allocated, the allocated buffer size then gives its size. If the allocated size gets exceeded while the recoding goes, the buffer will be automatically reallocated bigger, probably elsewhere, and the allocated buffer size will be adjusted accordingly. The second variable, giving the in-memory buffer size, will receive the exact byte size which was needed for the recoding. A `NUL' character is guaranteed at the end of the produced buffer, but is not counted in the byte size of the recoding. Beyond that `NUL', there might be some extra space after the recoded data, extending to the allocated buffer size. file A file is a sequence of bytes held outside computer memory, but buffered through it. For input, one argument provides a pointer to a file already opened for read. The file is then read and recoded from its current position until the end of the file, effectively swallowing it in memory if the destination of the recoding is a buffer. For reading a file filtered through the recoding library, but only a little bit at a time, one should rather use `recode_filter_open' and `recode_filter_close' (these two functions are not yet available). For output, one argument provides a pointer to a file already opened for write. The result of the recoding is written to that file starting at its current position. The following special function is still subject to change: void recode_format_table (REQUEST, LANGUAGE, "NAME"); and is not documented anymore for now.  File: recode.info, Node: Task level, Next: Charset level, Prev: Request level, Up: Library Task level functions ==================== The task level functions are used internally by the request level functions, they allow more explicit control over files and memory buffers holding input and output to recoding processes. The interface specification of task level functions is still subject to change a bit. To get started with task level functions, here is a full example of a program which sole job is to filter `ibmpc' code on its standard input into `latin1' code on its standard output. That is, this program has the same goal as the one from the previous section, but does its things a bit differently. #include #include #include const char *program_name; int main (int argc, char *const *argv) { program_name = argv[0]; RECODE_OUTER outer = recode_new_outer (false); RECODE_REQUEST request = recode_new_request (outer); RECODE_TASK task; bool success; recode_scan_request (request, "ibmpc..latin1"); task = recode_new_task (request); task->input.file = ""; task->output.file = ""; success = recode_perform_task (task); recode_delete_task (task); recode_delete_request (request); recode_delete_outer (outer); exit (success ? 0 : 1); } The header file `' declares a `RECODE_TASK' structure, which the programmer should use for allocating a variable in his program. This `task' variable is given as a first argument to all task level functions. The programmer ought to change and possibly consult a few fields in this structure, using special functions. * Initialisation functions RECODE_TASK recode_new_task (REQUEST); bool recode_delete_task (TASK); No TASK variable may be used in other task level functions of the recoding library without having first been initialised with `recode_new_task'. There may be many such TASK variables, in which case, they are independent of one another and they all need to be initialised separately. To avoid memory leaks, a TASK variable should not be initialised a second time without calling `recode_delete_task' to "un-initialise" it. This function also accepts a REQUEST argument and associates the request to the task. In fact, a task is essentially a set of recoding transformations with the specification for its current input and its current output. The REQUEST variable may be scanned before or after the call to `recode_new_task', it does not matter so far. Immediately after initialisation, before further changes, the TASK variable associates REQUEST empty in-memory buffers for both input and output. The output buffer will later get allocated automatically on the fly, as needed, by various task processors. Even if a call to `recode_delete_task' is not strictly mandatory before ending the program, it is cleaner to always include it. Moreover, in some future version of the recoding library, it might become required. * Fields of `struct task_request' Here are the fields of a `struct task_request' which may be meaningfully changed, once a TASK has been initialised by `recode_new_task'. In fact, fields are expected to change. Once again, to access the fields, you need to include `recodext.h' _instead_ of `recode.h', in which case there also is a greater chance that you need to recompile your programs if a new version of the recoding library gets installed. `request' The field `request' points to the current recoding request, but may be changed as needed between recoding calls, for example when there is a need to achieve the construction of a resulting text made up of many pieces, each being recoded differently. `input.name' `input.file' If `input.name' is not `NULL' at start of a recoding, this is a request that a file by that name be first opened for reading and later automatically closed once the whole file has been read. If the file name is not `NULL' but an empty string, it means that standard input is to be used. The opened file pointer is then held into `input.file'. If `input.name' is `NULL' and `input.file' is not, than `input.file' should point to a file already opened for read, which is meant to be recoded. `input.buffer' `input.cursor' `input.limit' When both `input.name' and `input.file' are `NULL', three pointers describe an in-memory buffer containing the text to be recoded. The buffer extends from `input.buffer' to `input.limit', yet the text to be recoded only extends from `input.cursor' to `input.limit'. In most situations, `input.cursor' starts with the value that `input.buffer' has. (Its value will internally advance as the recoding goes, until it reaches the value of `input.limit'.) `output.name' `output.file' If `output.name' is not `NULL' at start of a recoding, this is a request that a file by that name be opened for write and later automatically closed after the recoding is done. If the file name is not `NULL' but an empty string, it means that standard output is to be used. The opened file pointer is then held into `output.file'. If several passes with intermediate files are needed to produce the recoding, the `output.name' file is opened only for the final pass. If `output.name' is `NULL' and `output.file' is not, then `output.file' should point to a file already opened for write, which will receive the result of the recoding. `output.buffer' `output.cursor' `output.limit' When both `output.name' and `output.file' are `NULL', three pointers describe an in-memory buffer meant to receive the text, once it is recoded. The buffer is already allocated from `output.buffer' to `output.limit'. In most situations, `output.cursor' starts with the value that `output.buffer' has. Once the recoding is done, `output.cursor' will point at the next free byte in the buffer, just after the recoded text, so another recoding could be called without changing any of these three pointers, for appending new information to it. The number of recoded bytes in the buffer is the difference between `output.cursor' and `output.buffer'. Each time `output.cursor' reaches `output.limit', the buffer is reallocated bigger, possibly at a different location in memory, always held up-to-date in `output.buffer'. It is still possible to call a task level function with no output buffer at all to start with, in which case all three fields should have `NULL' as a value. This is the situation immediately after a call to `recode_new_task'. `strategy' This field, which is of type `enum recode_sequence_strategy', tells how various recoding steps (passes) will be interconnected. Its initial value is `RECODE_STRATEGY_UNDECIDED', which is a constant defined in the header file `'. Other possible values are: `RECODE_SEQUENCE_IN_MEMORY' Keep intermediate recodings in memory. `RECODE_SEQUENCE_WITH_FILES' Do not fork, use intermediate files. `RECODE_SEQUENCE_WITH_PIPE' Fork processes connected with `pipe(2)'. The best for now is to leave this field alone, and let the recoding library decide its strategy, as many combinations have not been tested yet. `byte_order_mark' This field, which is preset to `true', indicates that a byte order mark is to be expected at the beginning of any canonical `UCS-2' or `UTF-16' text, and that such a byte order mark should be also produced for these charsets. `fail_level' This field, which is of type `enum recode_error' (*note Errors::), sets the error level at which task level functions should report a failure. If an error being detected is equal or greater than `fail_level', the function will eventually return `false' instead of `true'. The preset value for this field is `RECODE_NOT_CANONICAL', that means that if not reset to another value, the library will report failure on _any_ error. `abort_level' This field, which is of type `enum recode_error' (*note Errors::), sets the error level at which task level functions should immediately interrupt their processing. If an error being detected is equal or greater than `abort_level', the function returns immediately, but the returned value (`true' or `false') is still is decided from the setting of `fail_level', not `abort_level'. The preset value for this field is `RECODE_MAXIMUM_ERROR', that means that is not reset to another value, the library will never interrupt a recoding task. `error_so_far' This field, which is of type `enum recode_error' (*note Errors::), maintains the maximum error level met so far while the recoding task was proceeding. The preset value is `RECODE_NO_ERROR'. * Task execution recode_perform_task (TASK); recode_filter_open (TASK, FILE); recode_filter_close (TASK); The function `recode_perform_task' reads as much input as possible, and recode all of it on prescribed output, given a properly initialised TASK. Functions `recode_filter_open' and `recode_filter_close' are only planned for now. They are meant to read input in piecemeal ways. Even if functionality already exists informally in the library, it has not been made available yet through such interface functions.  File: recode.info, Node: Charset level, Next: Errors, Prev: Task level, Up: Library Charset level functions ======================= Many functions are internal to the recoding library. Some of them have been made external and available, for the `recode' program had to retain all its previous functionality while being transformed into a mere application of the recoding library. These functions are not really documented here for the time being, as we hope that many of them will vanish over time. When this set of routines will stabilise, it would be convenient to document them as an API for handling charset names and contents. RECODE_CHARSET find_charset (NAME, CLEANING-TYPE); bool list_all_charsets (CHARSET); bool list_concise_charset (CHARSET, LIST-FORMAT); bool list_full_charset (CHARSET); recode-3.6/doc/recode.info-30100644000000000000000000010173307224443041014352 0ustar rootrootThis is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY * recode: (recode). Conversion between character sets and surfaces. END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: recode.info, Node: Errors, Prev: Charset level, Up: Library Handling errors =============== The `recode' program, while using the `recode' library, needs to control whether recoding problems are reported or not, and then reflect these in the exit status. The program should also instruct the library whether the recoding should be abruptly interrupted when an error is met (so sparing processing when it is known in advance that a wrong result would be discarded anyway), or if it should proceed nevertheless. Here is how the library groups errors into levels, listed here in order of increasing severity. `RECODE_NO_ERROR' No error was met on previous library calls. `RECODE_NOT_CANONICAL' The input text was using one of the many alternative codings for some phenomenon, but not the one `recode' would have canonically generated. So, if the reverse recoding is later attempted, it would produce a text having the same _meaning_ as the original text, yet not being byte identical. For example, a `Base64' block in which end-of-lines appear elsewhere that at every 76 characters is not canonical. An e-circumflex in TeX which is coded as `\^{e}' instead of `\^e' is not canonical. `RECODE_AMBIGUOUS_OUTPUT' It has been discovered that if the reverse recoding was attempted on the text output by this recoding, we would not obtain the original text, only because an ambiguity was generated by accident in the output text. This ambiguity would then cause the wrong interpretation to be taken. Here are a few examples. If the `Latin-1' sequence `e^' is converted to Easy French and back, the result will be interpreted as e-circumflex and so, will not reflect the intent of the original two characters. Recoding an `IBM-PC' text to `Latin-1' and back, where the input text contained an isolated `LF', will have a spurious `CR' inserted before the `LF'. Currently, there are many cases in the library where the production of ambiguous output is not properly detected, as it is sometimes a difficult problem to accomplish this detection, or to do it speedily. `RECODE_UNTRANSLATABLE' One or more input character could not be recoded, because there is just no representation for this character in the output charset. Here are a few examples. Non-strict mode often allows `recode' to compute on-the-fly mappings for unrepresentable characters, but strict mode prohibits such attribution of reversible translations: so strict mode might often trigger such an error. Most `UCS-2' codes used to represent Asian characters cannot be expressed in various Latin charsets. `RECODE_INVALID_INPUT' The input text does not comply with the coding it is declared to hold. So, there is no way by which a reverse recoding would reproduce this text, because `recode' should never produce invalid output. Here are a few examples. In strict mode, `ASCII' text is not allowed to contain characters with the eight bit set. `UTF-8' encodings ought to be minimal(1). `RECODE_SYSTEM_ERROR' The underlying system reported an error while the recoding was going on, likely an input/output error. (This error symbol is currently unused in the library.) `RECODE_USER_ERROR' The programmer or user requested something the recoding library is unable to provide, or used the API wrongly. (This error symbol is currently unused in the library.) `RECODE_INTERNAL_ERROR' Something really wrong, which should normally never happen, was detected within the recoding library. This might be due to genuine bugs in the library, or maybe due to un-initialised or overwritten arguments to the API. (This error symbol is currently unused in the library.) `RECODE_MAXIMUM_ERROR' This error code should never be returned, it is only internally used as a sentinel for the list of all possible error codes. One should be able to set the error level threshold for returning failure at end of recoding, and also the threshold for immediate interruption. If many errors occur while the recoding proceed, which are not severe enough to interrupt the recoding, then the most severe error is retained, while others are forgotten(2). So, in case of an error, the possible actions currently are: * do nothing and let go, returning success at end of recoding, * just let go for now, but return failure at end of recoding, * interrupt recoding right away and return failure now. *Note Task level::, and particularly the description of the fields `fail_level', `abort_level' and `error_so_far', for more information about how errors are handled. ---------- Footnotes ---------- (1) The minimality of an `UTF-8' encoding is guaranteed on output, but currently, it is not checked on input. (2) Another approach would have been to define the level symbols as masks instead, and to give masks to threshold setting routines, and to retain all errors--yet I never met myself such a need in practice, and so I fear it would be overkill. On the other hand, it might be interesting to maintain counters about how many times each kind of error occurred.  File: recode.info, Node: Universal, Next: libiconv, Prev: Library, Up: Top The universal charset ********************* Standard ISO 10646 defines a universal character set, intended to encompass in the long run all languages written on this planet. It is based on wide characters, and offer possibilities for two billion characters (2^31). This charset was to become available in `recode' under the name `UCS', with many external surfaces for it. But in the current version, only surfaces of `UCS' are offered, each presented as a genuine charset rather than a surface. Such surfaces are only meaningful for the `UCS' charset, so it is not that useful to draw a line between the surfaces and the only charset to which they may apply. `UCS' stands for Universal Character Set. `UCS-2' and `UCS-4' are fixed length encodings, using two or four bytes per character respectively. `UTF' stands for `UCS' Transformation Format, and are variable length encodings dedicated to `UCS'. `UTF-1' was based on ISO 2022, it did not succeed(1). `UTF-2' replaced it, it has been called `UTF-FSS' (File System Safe) in Unicode or Plan9 context, but is better known today as `UTF-8'. To complete the picture, there is `UTF-16' based on 16 bits bytes, and `UTF-7' which is meant for transmissions limited to 7-bit bytes. Most often, one might see `UTF-8' used for external storage, and `UCS-2' used for internal storage. When `recode' is producing any representation of `UCS', it uses the replacement character `U+FFFD' for any _valid_ character which is not representable in the goal charset(2). This happens, for example, when `UCS-2' is not capable to echo a wide `UCS-4' character, or for a similar reason, an `UTF-8' sequence using more than three bytes. The replacement character is meant to represent an existing character. So, it is never produced to represent an invalid sequence or ill-formed character in the input text. In such cases, `recode' just gets rid of the noise, while taking note of the error in its usual ways. Even if `UTF-8' is an encoding, really, it is the encoding of a single character set, and nothing else. It is useful to distinguish between an encoding (a _surface_ within `recode') and a charset, but only when the surface may be applied to several charsets. Specifying a charset is a bit simpler than specifying a surface in a `recode' request. There would not be a practical advantage at imposing a more complex syntax to `recode' users, when it is simple to assimilate `UTF-8' to a charset. Similar considerations apply for `UCS-2', `UCS-4', `UTF-16' and `UTF-7'. These are all considered to be charsets. * Menu: * UCS-2:: Universal Character Set, 2 bytes * UCS-4:: Universal Character Set, 4 bytes * UTF-7:: Universal Transformation Format, 7 bits * UTF-8:: Universal Transformation Format, 8 bits * UTF-16:: Universal Transformation Format, 16 bits * count-characters:: Frequency count of characters * dump-with-names:: Fully interpreted UCS dump ---------- Footnotes ---------- (1) It is not probable that `recode' will ever support `UTF-1'. (2) This is when the goal charset allows for 16-bits. For shorter charsets, the `--strict' (`-s') option decides what happens: either the character is dropped, or a reversible mapping is produced on the fly.  File: recode.info, Node: UCS-2, Next: UCS-4, Prev: Universal, Up: Universal Universal Character Set, 2 bytes ================================ One surface of `UCS' is usable for the subset defined by its first sixty thousand characters (in fact, 31 * 2^11 codes), and uses exactly two bytes per character. It is a mere dump of the internal memory representation which is _natural_ for this subset and as such, conveys with it endianness problems. A non-empty `UCS-2' file normally begins with a so called "byte order mark", having value `0xFEFF'. The value `0xFFFE' is not an `UCS' character, so if this value is seen at the beginning of a file, `recode' reacts by swapping all pairs of bytes. The library also properly reacts to other occurrences of `0xFEFF' or `0xFFFE' elsewhere than at the beginning, because concatenation of `UCS-2' files should stay a simple matter, but it might trigger a diagnostic about non canonical input. By default, when producing an `UCS-2' file, `recode' always outputs the high order byte before the low order byte. But this could be easily overridden through the `21-Permutation' surface (*note Permutations::). For example, the command: recode u8..u2/21 < INPUT > OUTPUT asks for an `UTF-8' to `UCS-2' conversion, with swapped byte output. Use `UCS-2' as a genuine charset. This charset is available in `recode' under the name `ISO-10646-UCS-2'. Accepted aliases are `UCS-2', `BMP', `rune' and `u2'. The `recode' library is able to combine `UCS-2' some sequences of codes into single code characters, to represent a few diacriticized characters, ligatures or diphtongs which have been included to ease mapping with other existing charsets. It is also able to explode such single code characters into the corresponding sequence of codes. The request syntax for triggering such operations is rudimentary and temporary. The `combined-UCS-2' pseudo character set is a special form of `UCS-2' in which known combinings have been replaced by the simpler code. Using `combined-UCS-2' instead of `UCS-2' in an _after_ position of a request forces a combining step, while using `combined-UCS-2' instead of `UCS-2' in a _before_ position of a request forces an exploding step. For the time being, one has to resort to advanced request syntax to achieve other effects. For example: recode u8..co,u2..u8 < INPUT > OUTPUT copies an `UTF-8' INPUT over OUTPUT, still to be in `UTF-8', yet merging combining characters into single codes whenever possible.  File: recode.info, Node: UCS-4, Next: UTF-7, Prev: UCS-2, Up: Universal Universal Character Set, 4 bytes ================================ Another surface of `UCS' uses exactly four bytes per character, and is a mere dump of the internal memory representation which is _natural_ for the whole charset and as such, conveys with it endianness problems. Use it as a genuine charset. This charset is available in `recode' under the name `ISO-10646-UCS-4'. Accepted aliases are `UCS', `UCS-4', `ISO_10646', `10646' and `u4'.  File: recode.info, Node: UTF-7, Next: UTF-8, Prev: UCS-4, Up: Universal Universal Transformation Format, 7 bits ======================================= `UTF-7' comes from IETF rather than ISO, and is described by RFC 2152, in the MIME series. The `UTF-7' encoding is meant to fit `UCS-2' over channels limited to seven bits per byte. It proceeds from a mix between the spirit of `Quoted-Printable' and methods of `Base64', adapted to Unicode contexts. This charset is available in `recode' under the name `UNICODE-1-1-UTF-7'. Accepted aliases are `UTF-7', `TF-7' and `u7'.  File: recode.info, Node: UTF-8, Next: UTF-16, Prev: UTF-7, Up: Universal Universal Transformation Format, 8 bits ======================================= Even if `UTF-8' does not originally come from IETF, there is now RFC 2279 to describe it. In letters sent on 1995-01-21 and 1995-04-20, Markus Kuhn writes: `UTF-8' is an `ASCII' compatible multi-byte encoding of the ISO 10646 universal character set (`UCS'). `UCS' is a 31-bit superset of all other character set standards. The first 256 characters of `UCS' are identical to those of ISO 8859-1 (Latin-1). The `UCS-2' encoding of UCS is a sequence of bigendian 16-bit words, the `UCS-4' encoding is a sequence of bigendian 32-bit words. The `UCS-2' subset of ISO 10646 is also known as "Unicode". As both `UCS-2' and `UCS-4' require heavy modifications to traditional `ASCII' oriented system designs (e.g. Unix), the `UTF-8' encoding has been designed for these applications. In `UTF-8', only `ASCII' characters are encoded using bytes below 128. All other non-ASCII characters are encoded as multi-byte sequences consisting only of bytes in the range 128-253. This avoids critical bytes like `NUL' and `/' in `UTF-8' strings, which makes the `UTF-8' encoding suitable for being handled by the standard C string library and being used in Unix file names. Other properties include the preserved lexical sorting order and that `UTF-8' allows easy self-synchronisation of software receiving `UTF-8' strings. `UTF-8' is the most common external surface of `UCS', each character uses from one to six bytes, and is able to encode all 2^31 characters of the `UCS'. It is implemented as a charset, with the following properties: * Strict 7-bit `ASCII' is completely invariant under `UTF-8', and those are the only one-byte characters. `UCS' values and `ASCII' values coincide. No multi-byte characters ever contain bytes less than 128. `NUL' _is_ `NUL'. A multi-byte character always starts with a byte of 192 or more, and is always followed by a number of bytes between 128 to 191. That means that you may read at random on disk or memory, and easily discover the start of the current, next or previous character. You can count, skip or extract characters with this only knowledge. * If you read the first byte of a multi-byte character in binary, it contains many `1' bits in successions starting with the most significant one (from the left), at least two. The length of this `1' sequence equals the byte size of the character. All succeeding bytes start by `10'. This is a lot of redundancy, making it fairly easy to guess that a file is valid `UTF-8', or to safely state that it is not. * In a multi-byte character, if you remove all leading `1' bits of the first byte of a multi-byte character, and the initial `10' bits of all remaining bytes (so keeping 6 bits per byte for those), the remaining bits concatenated are the UCS value. These properties also have a few nice consequences: * Conversion to/from values is algorithmically simple, and reasonably speedy. * A sequence of N bytes can hold characters needing up to 2 + 5N bits in their `UCS' representation. Here, N is a number between 1 and 6. So, `UTF-8' is most economical when mapping ASCII (1 byte), followed by `UCS-2' (1 to 3 bytes) and `UCS-4' (1 to 6 bytes). * The lexicographic sorting order of `UCS' strings is preserved. * Bytes with value 254 or 255 never appear, and because of that, these are sometimes used when escape mechanisms are needed. In some case, when little processing is done on a lot of strings, one may choose for efficiency reasons to handle `UTF-8' strings directly even if variable length, as it is easy to get start of characters. Character insertion or replacement might require moving the remainder of the string in either direction. In most cases, it is faster and easier to convert from `UTF-8' to `UCS-2' or `UCS-4' prior to processing. This charset is available in `recode' under the name `UTF-8'. Accepted aliases are `UTF-2', `UTF-FSS', `FSS_UTF', `TF-8' and `u8'.  File: recode.info, Node: UTF-16, Next: count-characters, Prev: UTF-8, Up: Universal Universal Transformation Format, 16 bits ======================================== Another external surface of `UCS' is also variable length, each character using either two or four bytes. It is usable for the subset defined by the first million characters (17 * 2^16) of `UCS'. Martin J. Du"rst writes (to `comp.std.internat', on 1995-03-28): `UTF-16' is another method that reserves two times 1024 codepoints in Unicode and uses them to index around one million additional characters. `UTF-16' is a little bit like former multibyte codes, but quite not so, as both the first and the second 16-bit code clearly show what they are. The idea is that one million codepoints should be enough for all the rare Chinese ideograms and historical scripts that do not fit into the Base Multilingual Plane of ISO 10646 (with just about 63,000 positions available, now that 2,000 are gone). This charset is available in `recode' under the name `UTF-16'. Accepted aliases are `Unicode', `TF-16' and `u6'.  File: recode.info, Node: count-characters, Next: dump-with-names, Prev: UTF-16, Up: Universal Frequency count of characters ============================= A device may be used to obtain a list of characters in a file, and how many times each character appears. Each count is followed by the `UCS-2' value of the character and, when known, the RFC 1345 mnemonic for that character. This charset is available in `recode' under the name `count-characters'. This `count' feature has been implemented as a charset. This may change in some later version, as it would sometimes be convenient to count original bytes, instead of their `UCS-2' equivalent.  File: recode.info, Node: dump-with-names, Prev: count-characters, Up: Universal Fully interpreted UCS dump ========================== Another device may be used to get fully interpreted dumps of an `UCS-2' stream of characters, with one `UCS-2' character displayed on a full output line. Each line receives the RFC 1345 mnemonic for the character if it exists, the `UCS-2' value of the character, and a descriptive comment for that character. As each input character produces its own output line, beware that the output file from this conversion may be much, much bigger than the input file. This charset is available in `recode' under the name `dump-with-names'. This `dump-with-names' feature has been implemented as a charset rather than a surface. This is surely debatable. The current implementation allows for dumping charsets other than `UCS-2'. For example, the command `recode l2..full < INPUT' implies a necessary conversion from `Latin-2' to `UCS-2', as `dump-with-names' is only connected out from `UCS-2'. In such cases, `recode' does not display the original `Latin-2' codes in the dump, only the corresponding `UCS-2' values. To give a simpler example, the command echo 'Hello, world!' | recode us..dump produces the following output: UCS2 Mne Description 0048 H latin capital letter h 0065 e latin small letter e 006C l latin small letter l 006C l latin small letter l 006F o latin small letter o 002C , comma 0020 SP space 0077 w latin small letter w 006F o latin small letter o 0072 r latin small letter r 006C l latin small letter l 0064 d latin small letter d 0021 ! exclamation mark 000A LF line feed (lf) The descriptive comment is given in English and `ASCII', yet if the English description is not available but a French one is, then the French description is given instead, using `Latin-1'. However, if the `LANGUAGE' or `LANG' environment variable begins with the letters `fr', then listing preference goes to French when both descriptions are available. Here is another example. To get the long description of the code 237 in Latin-5 table, one may use the following command. echo -n 237 | recode l5/d..dump If your `echo' does not grok `-n', use `echo 237\c' instead. Here is how to see what Unicode `U+03C6' means, while getting rid of the title lines. echo -n 0x03C6 | recode u2/x2..dump | tail +3  File: recode.info, Node: libiconv, Next: Tabular, Prev: Universal, Up: Top The `iconv' library ******************* The `recode' library itself contains most code and tables from the portable `iconv' library, written by Bruno Haible. In fact, many capabilities of the `recode' library are duplicated because of this merging, as the older `recode' and `iconv' libraries share many charsets. We discuss, here, the issues related to this duplication, and other peculiarities specific to the `iconv' library. The plan is to remove duplications and better merge specificities, as `recode' evolves. As implemented, if a recoding request can be satisfied by the `recode' library both with and without its `iconv' library part, it is likely that the `iconv' library will be used. To sort out if the `iconv' is indeed used of not, just use the `-v' or `--verbose' option, *note Recoding::. The `:libiconv:' charset represents a conceptual pivot charset within the `iconv' part of the `recode' library (in fact, this pivot exists, but is not directly reachable). This charset has a mere `:' (a colon) for an alias. It is not allowed to recode from or to this charset directly. But when this charset is selected as an intermediate, usually by automatic means, then the `iconv' part of the `recode' library is called to handle the transformations. By using an `--ignore=:libiconv:' option on the `recode' call or equivalently, but more simply, `-x:', `recode' is instructed to fully avoid this charset as an intermediate, with the consequence that the `iconv' part of the library is defeated. Consider these two calls: recode l1..1250 < INPUT > OUTPUT recode -x: l1..1250 < INPUT > OUTPUT Both should transform INPUT from `ISO-8859-1' to `CP1250' on OUTPUT. The first call uses the `iconv' part of the library, while the second call avoids it. Whatever the path used, the results should normally be identical. However, there might be observable differences. Most of them might result from reversibility issues, as the `iconv' engine, which the `recode' library directly uses for the time being, does not address reversibility. Even if much less likely, some differences might result from slight errors in the tables used, such differences should then be reported as bugs. Other irregularities might be seen in the area of error detection and recovery. The `recode' library usually tries to detect canonicity errors in input, and production of ambiguous output, but the `iconv' part of the library currently does not. Input is always validated, however. The `recode' library may not always react properly when its `iconv' part has no translation for a given character. Within a collection of names for a single charset, the `recode' library distinguishes one of them as being the genuine charset name, while the others are said to be aliases. When `recode' lists all charsets, for example with the `-l' or `--list' option, the list integrates all `iconv' library charsets. The selection of one of the aliases as the genuine charset name is an artifact added by `recode', it does not come from `iconv'. Moreover, the `recode' library dynamically resolves some conflicts when it initialises itself at runtime. This might explain some discrepancies in the table below, as for what is the genuine charset name. * General character sets `US-ASCII' `ASCII', `ISO646-US', `ISO_646.IRV:1991', `ISO-IR-6', `ANSI_X3.4-1968', `CP367', `IBM367', `US', `csASCII' and `ISO646.1991-IRV' are aliases for this charset. * General multi-byte encodings `UTF-8' `UTF8' is an alias for this charset. `UCS-2' `ISO-10646-UCS-2' and `csUnicode' are aliases for this charset. `UCS-2BE' `UNICODEBIG', `UNICODE-1-1' and `csUnicode11' are aliases for this charset. `UCS-2LE' `UNICODELITTLE' is an alias for this charset. `UCS-4' `ISO-10646-UCS-4' and `csUCS4' are aliases for this charset. `UCS-4BE' `UCS-4LE' `UTF-16' `UTF-16BE' `UTF-16LE' `UTF-7' `UNICODE-1-1-UTF-7' and `csUnicode11UTF7' are aliases for this charset. `UCS-2-INTERNAL' `UCS-2-SWAPPED' `UCS-4-INTERNAL' `UCS-4-SWAPPED' `JAVA' * Standard 8-bit encodings `ISO-8859-1' `ISO_8859-1', `ISO_8859-1:1987', `ISO-IR-100', `CP819', `IBM819', `LATIN1', `L1', `csISOLatin1', `ISO8859-1' and `ISO8859_1' are aliases for this charset. `ISO-8859-2' `ISO_8859-2', `ISO_8859-2:1987', `ISO-IR-101', `LATIN2', `L2', `csISOLatin2', `ISO8859-2' and `ISO8859_2' are aliases for this charset. `ISO-8859-3' `ISO_8859-3', `ISO_8859-3:1988', `ISO-IR-109', `LATIN3', `L3', `csISOLatin3', `ISO8859-3' and `ISO8859_3' are aliases for this charset. `ISO-8859-4' `ISO_8859-4', `ISO_8859-4:1988', `ISO-IR-110', `LATIN4', `L4', `csISOLatin4', `ISO8859-4' and `ISO8859_4' are aliases for this charset. `ISO-8859-5' `ISO_8859-5', `ISO_8859-5:1988', `ISO-IR-144', `CYRILLIC', `csISOLatinCyrillic', `ISO8859-5' and `ISO8859_5' are aliases for this charset. `ISO-8859-6' `ISO_8859-6', `ISO_8859-6:1987', `ISO-IR-127', `ECMA-114', `ASMO-708', `ARABIC', `csISOLatinArabic', `ISO8859-6' and `ISO8859_6' are aliases for this charset. `ISO-8859-7' `ISO_8859-7', `ISO_8859-7:1987', `ISO-IR-126', `ECMA-118', `ELOT_928', `GREEK8', `GREEK', `csISOLatinGreek', `ISO8859-7' and `ISO8859_7' are aliases for this charset. `ISO-8859-8' `ISO_8859-8', `ISO_8859-8:1988', `ISO-IR-138', `HEBREW', `csISOLatinHebrew', `ISO8859-8' and `ISO8859_8' are aliases for this charset. `ISO-8859-9' `ISO_8859-9', `ISO_8859-9:1989', `ISO-IR-148', `LATIN5', `L5', `csISOLatin5', `ISO8859-9' and `ISO8859_9' are aliases for this charset. `ISO-8859-10' `ISO_8859-10', `ISO_8859-10:1992', `ISO-IR-157', `LATIN6', `L6', `csISOLatin6' and `ISO8859-10' are aliases for this charset. `ISO-8859-13' `ISO_8859-13', `ISO-IR-179', `LATIN7' and `L7' are aliases for this charset. `ISO-8859-14' `ISO_8859-14', `ISO_8859-14:1998', `ISO-IR-199', `LATIN8' and `L8' are aliases for this charset. `ISO-8859-15' `ISO_8859-15', `ISO_8859-15:1998' and `ISO-IR-203' are aliases for this charset. `ISO-8859-16' `ISO_8859-16', `ISO_8859-16:2000' and `ISO-IR-226' are aliases for this charset. `KOI8-R' `csKOI8R' is an alias for this charset. `KOI8-U' `KOI8-RU' * Windows 8-bit encodings `CP1250' `WINDOWS-1250' and `MS-EE' are aliases for this charset. `CP1251' `WINDOWS-1251' and `MS-CYRL' are aliases for this charset. `CP1252' `WINDOWS-1252' and `MS-ANSI' are aliases for this charset. `CP1253' `WINDOWS-1253' and `MS-GREEK' are aliases for this charset. `CP1254' `WINDOWS-1254' and `MS-TURK' are aliases for this charset. `CP1255' `WINDOWS-1255' and `MS-HEBR' are aliases for this charset. `CP1256' `WINDOWS-1256' and `MS-ARAB' are aliases for this charset. `CP1257' `WINDOWS-1257' and `WINBALTRIM' are aliases for this charset. `CP1258' `WINDOWS-1258' is an alias for this charset. * DOS 8-bit encodings `CP850' `IBM850', `850' and `csPC850Multilingual' are aliases for this charset. `CP866' `IBM866', `866' and `csIBM866' are aliases for this charset. * Macintosh 8-bit encodings `MacRoman' `Macintosh', `MAC' and `csMacintosh' are aliases for this charset. `MacCentralEurope' `MacIceland' `MacCroatian' `MacRomania' `MacCyrillic' `MacUkraine' `MacGreek' `MacTurkish' `MacHebrew' `MacArabic' `MacThai' * Other platform specific 8-bit encodings `HP-ROMAN8' `ROMAN8', `R8' and `csHPRoman8' are aliases for this charset. `NEXTSTEP' * Regional 8-bit encodings used for a single language `ARMSCII-8' `Georgian-Academy' `Georgian-PS' `MuleLao-1' `CP1133' `IBM-CP1133' is an alias for this charset. `TIS-620' `TIS620', `TIS620-0', `TIS620.2529-1', `TIS620.2533-0', `TIS620.2533-1' and `ISO-IR-166' are aliases for this charset. `CP874' `WINDOWS-874' is an alias for this charset. `VISCII' `VISCII1.1-1' and `csVISCII' are aliases for this charset. `TCVN' `TCVN-5712', `TCVN5712-1' and `TCVN5712-1:1993' are aliases for this charset. * CJK character sets (not documented) `JIS_C6220-1969-RO' `ISO646-JP', `ISO-IR-14', `JP' and `csISO14JISC6220ro' are aliases for this charset. `JIS_X0201' `JISX0201-1976', `X0201', `csHalfWidthKatakana', `JISX0201.1976-0' and `JIS0201' are aliases for this charset. `JIS_X0208' `JIS_X0208-1983', `JIS_X0208-1990', `JIS0208', `X0208', `ISO-IR-87', `csISO87JISX0208', `JISX0208.1983-0', `JISX0208.1990-0' and `JIS0208' are aliases for this charset. `JIS_X0212' `JIS_X0212.1990-0', `JIS_X0212-1990', `X0212', `ISO-IR-159', `csISO159JISX02121990', `JISX0212.1990-0' and `JIS0212' are aliases for this charset. `GB_1988-80' `ISO646-CN', `ISO-IR-57', `CN' and `csISO57GB1988' are aliases for this charset. `GB_2312-80' `ISO-IR-58', `csISO58GB231280', `CHINESE' and `GB2312.1980-0' are aliases for this charset. `ISO-IR-165' `CN-GB-ISOIR165' is an alias for this charset. `KSC_5601' `KS_C_5601-1987', `KS_C_5601-1989', `ISO-IR-149', `csKSC56011987', `KOREAN', `KSC5601.1987-0' and `KSX1001:1992' are aliases for this charset. * CJK encodings `EUC-JP' `EUCJP', `Extended_UNIX_Code_Packed_Format_for_Japanese', `csEUCPkdFmtJapanese' and `EUC_JP' are aliases for this charset. `SJIS' `SHIFT_JIS', `SHIFT-JIS', `MS_KANJI' and `csShiftJIS' are aliases for this charset. `CP932' `ISO-2022-JP' `csISO2022JP' and `ISO2022JP' are aliases for this charset. `ISO-2022-JP-1' `ISO-2022-JP-2' `csISO2022JP2' is an alias for this charset. `EUC-CN' `EUCCN', `GB2312', `CN-GB', `csGB2312' and `EUC_CN' are aliases for this charset. `GBK' `CP936' is an alias for this charset. `GB18030' `ISO-2022-CN' `csISO2022CN' and `ISO2022CN' are aliases for this charset. `ISO-2022-CN-EXT' `HZ' `HZ-GB-2312' is an alias for this charset. `EUC-TW' `EUCTW', `csEUCTW' and `EUC_TW' are aliases for this charset. `BIG5' `BIG-5', `BIG-FIVE', `BIGFIVE', `CN-BIG5' and `csBig5' are aliases for this charset. `CP950' `BIG5HKSCS' `EUC-KR' `EUCKR', `csEUCKR' and `EUC_KR' are aliases for this charset. `CP949' `UHC' is an alias for this charset. `JOHAB' `CP1361' is an alias for this charset. `ISO-2022-KR' `csISO2022KR' and `ISO2022KR' are aliases for this charset. `CHAR' `WCHAR_T' recode-3.6/doc/recode.info-40100644000000000000000000013354707224443041014363 0ustar rootrootThis is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY * recode: (recode). Conversion between character sets and surfaces. END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: recode.info, Node: Tabular, Next: ASCII misc, Prev: libiconv, Up: Top Tabular sources (RFC 1345) ************************** An important part of the tabular charset knowledge in `recode' comes from RFC 1345 or, alternatively, from the `chset' tools, both maintained by Keld Simonsen. The RFC 1345 document: "Character Mnemonics & Character Sets", K. Simonsen, Request for Comments no. 1345, Network Working Group, June 1992. defines many character mnemonics and character sets. The `recode' library implements most of RFC 1345, however: * It does not recognise those charsets which overload character positions: `dk-us' and `us-dk'. However, *Note Mixed::. * It does not recognise those charsets which combine two characters for representing a third: `ANSI_X3.110-1983', `ISO_6937-2-add', `T.101-G2', `T.61-8bit', `iso-ir-90' and `videotex-suppl'. * It does not recognise 16-bits charsets: `GB_2312-80', `JIS_C6226-1978', `JIS_C6226-1983', `JIS_X0212-1990' and `KS_C_5601-1987'. * It interprets the charset `isoir91' as `NATS-DANO' (alias `iso-ir-9-1'), _not_ as `JIS_C6229-1984-a' (alias `iso-ir-91'). It also interprets the charset `isoir92' as `NATS-DANO-ADD' (alias `iso-ir-9-2'), _not_ as `JIS_C6229-1984-b' (alias `iso-ir-92'). It might be better just avoiding these two alias names. Keld Simonsen did most of RFC 1345 himself, with some funding from Danish Standards and Nordic standards (INSTA) project. He also did the character set design work, with substantial input from Olle Jaernefors. Keld typed in almost all of the tables, some have been contributed. A number of people have checked the tables in various ways. The RFC lists a number of people who helped. Keld and the `recode' maintainer have an arrangement by which any new discovered information submitted by `recode' users, about tabular charsets, is forwarded to Keld, eventually merged into Keld's work, and only then, reimported into `recode'. Neither the `recode' program nor its library try to compete, nor even establish themselves as an alternate or diverging reference: RFC 1345 and its new drafts stay the genuine source for most tabular information conveyed by `recode'. Keld has been more than collaborative so far, so there is no reason that we act otherwise. In a word, `recode' should be perceived as the application of external references, but not as a reference in itself. Internally, RFC 1345 associates which each character an unambiguous mnemonic of a few characters, taken from ISO 646, which is a minimal ASCII subset of 83 characters. The charset made up by these mnemonics is available in `recode' under the name `RFC1345'. It has `mnemonic' and `1345' for aliases. As implemened, this charset exactly corresponds to `mnemonic+ascii+38', using RFC 1345 nomenclature. Roughly said, ISO 646 characters represent themselves, except for the ampersand (`&') which appears doubled. A prefix of a single ampersand introduces a mnemonic. For mnemonics using two characters, the prefix is immediately by the mnemonic. For longer mnemonics, the prefix is followed by an underline (`_'), the mmemonic, and another underline. Conversions to this charset are usually reversible. Currently, `recode' does not offer any of the many other possible variations of this family of representations. They will likely be implemented in some future version, however. `ANSI_X3.4-1968' `367', `ANSI_X3.4-1986', `ASCII', `CP367', `IBM367', `ISO646-US', `ISO_646.irv:1991', `US-ASCII', `iso-ir-6' and `us' are aliases for this charset. Source: ISO 2375 registry. `ASMO_449' `ISO_9036', `arabic7' and `iso-ir-89' are aliases for this charset. Source: ISO 2375 registry. `BS_4730' `ISO646-GB', `gb', `iso-ir-4' and `uk' are aliases for this charset. Source: ISO 2375 registry. `BS_viewdata' `iso-ir-47' is an alias for this charset. Source: ISO 2375 registry. `CP1250' `1250', `ms-ee' and `windows-1250' are aliases for this charset. Source: UNICODE 1.0. `CP1251' `1251', `ms-cyrl' and `windows-1251' are aliases for this charset. Source: UNICODE 1.0. `CP1252' `1252', `ms-ansi' and `windows-1252' are aliases for this charset. Source: UNICODE 1.0. `CP1253' `1253', `ms-greek' and `windows-1253' are aliases for this charset. Source: UNICODE 1.0. `CP1254' `1254', `ms-turk' and `windows-1254' are aliases for this charset. Source: UNICODE 1.0. `CP1255' `1255', `ms-hebr' and `windows-1255' are aliases for this charset. Source: UNICODE 1.0. `CP1256' `1256', `ms-arab' and `windows-1256' are aliases for this charset. Source: UNICODE 1.0. `CP1257' `1257', `WinBaltRim' and `windows-1257' are aliases for this charset. Source: CEN/TC304 N283. `CSA_Z243.4-1985-1' `ISO646-CA', `ca', `csa7-1' and `iso-ir-121' are aliases for this charset. Source: ISO 2375 registry. `CSA_Z243.4-1985-2' `ISO646-CA2', `csa7-2' and `iso-ir-122' are aliases for this charset. Source: ISO 2375 registry. `CSA_Z243.4-1985-gr' `iso-ir-123' is an alias for this charset. Source: ISO 2375 registry. `CSN_369103' `KOI-8_L2', `iso-ir-139' and `koi8l2' are aliases for this charset. Source: ISO 2375 registry. `CWI' `CWI-2' and `cp-hu' are aliases for this charset. Source: Computerworld Sza'mita'stechnika vol 3 issue 13 1988-06-29. `DEC-MCS' `dec' is an alias for this charset. VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986. `DIN_66003' `ISO646-DE', `de' and `iso-ir-21' are aliases for this charset. Source: ISO 2375 registry. `DS_2089' `DS2089', `ISO646-DK' and `dk' are aliases for this charset. Source: Danish Standard, DS 2089, February 1974. `EBCDIC-AT-DE' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-AT-DE-A' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-CA-FR' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-DK-NO' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-DK-NO-A' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-ES' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-ES-A' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-ES-S' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-FI-SE' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-FI-SE-A' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-FR' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-IS-FRISS' `friss' is an alias for this charset. Source: Skyrsuvelar Rikisins og Reykjavikurborgar, feb 1982. `EBCDIC-IT' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-PT' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-UK' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `EBCDIC-US' Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987. `ECMA-cyrillic' `ECMA-113', `ECMA-113:1986' and `iso-ir-111' are aliases for this charset. Source: ISO 2375 registry. `ES' `ISO646-ES' and `iso-ir-17' are aliases for this charset. Source: ISO 2375 registry. `ES2' `ISO646-ES2' and `iso-ir-85' are aliases for this charset. Source: ISO 2375 registry. `GB_1988-80' `ISO646-CN', `cn' and `iso-ir-57' are aliases for this charset. Source: ISO 2375 registry. `GOST_19768-87' `ST_SEV_358-88' and `iso-ir-153' are aliases for this charset. Source: ISO 2375 registry. `IBM037' `037', `CP037', `ebcdic-cp-ca', `ebcdic-cp-nl', `ebcdic-cp-us' and `ebcdic-cp-wt' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM038' `038', `CP038' and `EBCDIC-INT' are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. `IBM1004' `1004', `CP1004' and `os2latin1' are aliases for this charset. Source: CEN/TC304 N283, 1994-02-04. `IBM1026' `1026' and `CP1026' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM1047' `1047' and `CP1047' are aliases for this charset. Source: IBM Character Data Representation Architecture. Registry SC09-1391-00 p 150. `IBM256' `256', `CP256' and `EBCDIC-INT1' are aliases for this charset. Source: IBM Registry C-H 3-3220-050. `IBM273' `273' and `CP273' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM274' `274', `CP274' and `EBCDIC-BE' are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. `IBM275' `275', `CP275' and `EBCDIC-BR' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM277' `EBCDIC-CP-DK' and `EBCDIC-CP-NO' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM278' `278', `CP278', `ebcdic-cp-fi' and `ebcdic-cp-se' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM280' `280', `CP280' and `ebcdic-cp-it' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM281' `281', `CP281' and `EBCDIC-JP-E' are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. `IBM284' `284', `CP284' and `ebcdic-cp-es' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM285' `285', `CP285' and `ebcdic-cp-gb' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM290' `290', `CP290' and `EBCDIC-JP-kana' are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. `IBM297' `297', `CP297' and `ebcdic-cp-fr' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM420' `420', `CP420' and `ebcdic-cp-ar1' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. IBM NLS RM p 11-11. `IBM423' `423', `CP423' and `ebcdic-cp-gr' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM424' `424', `CP424' and `ebcdic-cp-he' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM437' `437' and `CP437' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM500' `500', `500V1', `CP500', `ebcdic-cp-be' and `ebcdic-cp-ch' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM850' `850' and `CP850' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. Source: UNICODE 1.0. `IBM851' `851' and `CP851' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM852' `852', `CP852', `pcl2' and `pclatin2' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM855' `855' and `CP855' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM857' `857' and `CP857' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM860' `860' and `CP860' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM861' `861', `CP861' and `cp-is' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM862' `862' and `CP862' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM863' `863' and `CP863' are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. `IBM864' `864' and `CP864' are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. `IBM865' `865' and `CP865' are aliases for this charset. Source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987). `IBM868' `868', `CP868' and `cp-ar' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM869' `869', `CP869' and `cp-gr' are aliases for this charset. Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991. `IBM870' `870', `CP870', `ebcdic-cp-roece' and `ebcdic-cp-yu' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM871' `871', `CP871' and `ebcdic-cp-is' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM875' `875', `CP875' and `EBCDIC-Greek' are aliases for this charset. Source: UNICODE 1.0. `IBM880' `880', `CP880' and `EBCDIC-Cyrillic' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM891' `891' and `CP891' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM903' `903' and `CP903' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM904' `904' and `CP904' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IBM905' `905', `CP905' and `ebcdic-cp-tr' are aliases for this charset. Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990. `IBM918' `918', `CP918' and `ebcdic-cp-ar2' are aliases for this charset. Source: IBM NLS RM Vol2 SE09-8002-01, March 1990. `IEC_P27-1' `iso-ir-143' is an alias for this charset. Source: ISO 2375 registry. `INIS' `iso-ir-49' is an alias for this charset. Source: ISO 2375 registry. `INIS-8' `iso-ir-50' is an alias for this charset. Source: ISO 2375 registry. `INIS-cyrillic' `iso-ir-51' is an alias for this charset. Source: ISO 2375 registry. `INVARIANT' `iso-ir-170' is an alias for this charset. `ISO-8859-1' `819', `CP819', `IBM819', `ISO8859-1', `ISO_8859-1', `ISO_8859-1:1987', `iso-ir-100', `l1' and `latin1' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-10' `ISO8859-10', `ISO_8859-10', `ISO_8859-10:1993', `L6', `iso-ir-157' and `latin6' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-13' `ISO8859-13', `ISO_8859-13', `ISO_8859-13:1998', `iso-baltic', `iso-ir-179a', `l7' and `latin7' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-14' `ISO8859-14', `ISO_8859-14', `ISO_8859-14:1998', `iso-celtic', `iso-ir-199', `l8' and `latin8' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-15' `ISO8859-15', `ISO_8859-15', `ISO_8859-15:1998', `iso-ir-203', `l9' and `latin9' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-2' `912', `CP912', `IBM912', `ISO8859-2', `ISO_8859-2', `ISO_8859-2:1987', `iso-ir-101', `l2' and `latin2' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-3' `ISO8859-3', `ISO_8859-3', `ISO_8859-3:1988', `iso-ir-109', `l3' and `latin3' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-4' `ISO8859-4', `ISO_8859-4', `ISO_8859-4:1988', `iso-ir-110', `l4' and `latin4' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-5' `ISO8859-5', `ISO_8859-5', `ISO_8859-5:1988', `cyrillic' and `iso-ir-144' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-6' `ASMO-708', `ECMA-114', `ISO8859-6', `ISO_8859-6', `ISO_8859-6:1987', `arabic' and `iso-ir-127' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-7' `ECMA-118', `ELOT_928', `ISO8859-7', `ISO_8859-7', `ISO_8859-7:1987', `greek', `greek8' and `iso-ir-126' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-8' `ISO8859-8', `ISO_8859-8', `ISO_8859-8:1988', `hebrew' and `iso-ir-138' are aliases for this charset. Source: ISO 2375 registry. `ISO-8859-9' `ISO8859-9', `ISO_8859-9', `ISO_8859-9:1989', `iso-ir-148', `l5' and `latin5' are aliases for this charset. Source: ISO 2375 registry. `ISO_10367-box' `iso-ir-155' is an alias for this charset. Source: ISO 2375 registry. `ISO_2033-1983' `e13b' and `iso-ir-98' are aliases for this charset. Source: ISO 2375 registry. `ISO_5427' `iso-ir-37' is an alias for this charset. Source: ISO 2375 registry. `ISO_5427-ext' `ISO_5427:1981' and `iso-ir-54' are aliases for this charset. Source: ISO 2375 registry. `ISO_5428' `ISO_5428:1980' and `iso-ir-55' are aliases for this charset. Source: ISO 2375 registry. `ISO_646.basic' `ISO_646.basic:1983' and `ref' are aliases for this charset. Source: ISO 2375 registry. `ISO_646.irv' `ISO_646.irv:1983', `irv' and `iso-ir-2' are aliases for this charset. Source: ISO 2375 registry. `ISO_6937-2-25' `iso-ir-152' is an alias for this charset. Source: ISO 2375 registry. `ISO_8859-supp' `iso-ir-154' and `latin1-2-5' are aliases for this charset. Source: ISO 2375 registry. `IT' `ISO646-IT' and `iso-ir-15' are aliases for this charset. Source: ISO 2375 registry. `JIS_C6220-1969-jp' `JIS_C6220-1969', `iso-ir-13', `katakana' and `x0201-7' are aliases for this charset. Source: ISO 2375 registry. `JIS_C6220-1969-ro' `ISO646-JP', `iso-ir-14' and `jp' are aliases for this charset. Source: ISO 2375 registry. `JIS_C6229-1984-a' `jp-ocr-a' is an alias for this charset. Source: ISO 2375 registry. `JIS_C6229-1984-b' `ISO646-JP-OCR-B' and `jp-ocr-b' are aliases for this charset. Source: ISO 2375 registry. `JIS_C6229-1984-b-add' `iso-ir-93' and `jp-ocr-b-add' are aliases for this charset. Source: ISO 2375 registry. `JIS_C6229-1984-hand' `iso-ir-94' and `jp-ocr-hand' are aliases for this charset. Source: ISO 2375 registry. `JIS_C6229-1984-hand-add' `iso-ir-95' and `jp-ocr-hand-add' are aliases for this charset. Source: ISO 2375 registry. `JIS_C6229-1984-kana' `iso-ir-96' is an alias for this charset. Source: ISO 2375 registry. `JIS_X0201' `X0201' is an alias for this charset. `JUS_I.B1.002' `ISO646-YU', `iso-ir-141', `js' and `yu' are aliases for this charset. Source: ISO 2375 registry. `JUS_I.B1.003-mac' `iso-ir-147' and `macedonian' are aliases for this charset. Source: ISO 2375 registry. `JUS_I.B1.003-serb' `iso-ir-146' and `serbian' are aliases for this charset. Source: ISO 2375 registry. `KOI-7' Source: Andrey A. Chernov . `KOI-8' `GOST_19768-74' is an alias for this charset. Source: Andrey A. Chernov . `KOI8-R' Source: RFC1489 via Gabor Kiss . And Andrey A. Chernov . `KOI8-RU' Source: http://cad.ntu-kpi.kiev.ua/multiling/koi8-ru/. `KOI8-U' Source: RFC 2319. Mibenum: 2088. Source: http://www.net.ua/KOI8-U/. `KSC5636' `ISO646-KR' is an alias for this charset. `Latin-greek-1' `iso-ir-27' is an alias for this charset. Source: ISO 2375 registry. `MSZ_7795.3' `ISO646-HU', `hu' and `iso-ir-86' are aliases for this charset. Source: ISO 2375 registry. `NATS-DANO' `iso-ir-9-1' is an alias for this charset. Source: ISO 2375 registry. `NATS-DANO-ADD' `iso-ir-9-2' is an alias for this charset. Source: ISO 2375 registry. `NATS-SEFI' `iso-ir-8-1' is an alias for this charset. Source: ISO 2375 registry. `NATS-SEFI-ADD' `iso-ir-8-2' is an alias for this charset. Source: ISO 2375 registry. `NC_NC00-10' `ISO646-CU', `NC_NC00-10:81', `cuba' and `iso-ir-151' are aliases for this charset. Source: ISO 2375 registry. `NF_Z_62-010' `ISO646-FR', `fr' and `iso-ir-69' are aliases for this charset. Source: ISO 2375 registry. `NF_Z_62-010_(1973)' `ISO646-FR1' and `iso-ir-25' are aliases for this charset. Source: ISO 2375 registry. `NS_4551-1' `ISO646-NO', `iso-ir-60' and `no' are aliases for this charset. Source: ISO 2375 registry. `NS_4551-2' `ISO646-NO2', `iso-ir-61' and `no2' are aliases for this charset. Source: ISO 2375 registry. `NeXTSTEP' `next' is an alias for this charset. Source: Peter Svanberg - psv@nada.kth.se. `PT' `ISO646-PT' and `iso-ir-16' are aliases for this charset. Source: ISO 2375 registry. `PT2' `ISO646-PT2' and `iso-ir-84' are aliases for this charset. Source: ISO 2375 registry. `SEN_850200_B' `FI', `ISO646-FI', `ISO646-SE', `SS636127', `iso-ir-10' and `se' are aliases for this charset. Source: ISO 2375 registry. `SEN_850200_C' `ISO646-SE2', `iso-ir-11' and `se2' are aliases for this charset. Source: ISO 2375 registry. `T.61-7bit' `iso-ir-102' is an alias for this charset. Source: ISO 2375 registry. `baltic' `iso-ir-179' is an alias for this charset. Source: ISO 2375 registry. &g1esc x2d56 &g2esc x2e56 &g3esc x2f56. `greek-ccitt' `iso-ir-150' is an alias for this charset. Source: ISO 2375 registry. `greek7' `iso-ir-88' is an alias for this charset. Source: ISO 2375 registry. `greek7-old' `iso-ir-18' is an alias for this charset. Source: ISO 2375 registry. `hp-roman8' `r8' and `roman8' are aliases for this charset. Source: LaserJet IIP Printer User's Manual,. HP part no 33471-90901, Hewlet-Packard, June 1989. `latin-greek' `iso-ir-19' is an alias for this charset. Source: ISO 2375 registry. `mac-is' `macintosh' `mac' is an alias for this charset. Source: The Unicode Standard ver 1.0, ISBN 0-201-56788-1, Oct 1991. `macintosh_ce' `macce' is an alias for this charset. Source: Macintosh CE fonts. `sami' `iso-ir-158', `lap' and `latin-lap' are aliases for this charset. Source: ISO 2375 registry.  File: recode.info, Node: ASCII misc, Next: IBM and MS, Prev: Tabular, Up: Top ASCII and some derivatives ************************** * Menu: * ASCII:: Usual ASCII * ISO 8859:: ASCII extended by Latin Alphabets * ASCII-BS:: ASCII 7-bits, BS to overstrike * flat:: ASCII without diacritics nor underline  File: recode.info, Node: ASCII, Next: ISO 8859, Prev: ASCII misc, Up: ASCII misc Usual ASCII =========== This charset is available in `recode' under the name `ASCII'. In fact, it's true name is `ANSI_X3.4-1968' as per RFC 1345, accepted aliases being `ANSI_X3.4-1986', `ASCII', `IBM367', `ISO646-US', `ISO_646.irv:1991', `US-ASCII', `cp367', `iso-ir-6' and `us'. The shortest way of specifying it in `recode' is `us'. This documentation used to include ASCII tables. They have been removed since the `recode' program can now recreate these easily: recode -lf us for commented ASCII recode -ld us for concise decimal table recode -lo us for concise octal table recode -lh us for concise hexadecimal table  File: recode.info, Node: ISO 8859, Next: ASCII-BS, Prev: ASCII, Up: ASCII misc ASCII extended by Latin Alphabets ================================= There are many Latin charsets. The following has been written by Tim Lasko , a long while ago: ISO Latin-1, or more completely ISO Latin Alphabet No 1, is now an international standard as of February 1987 (IS 8859, Part 1). For those American USEnet'rs that care, the 8-bit ASCII standard, which is essentially the same code, is going through the final administrative processes prior to publication. ISO Latin-1 (IS 8859/1) is actually one of an entire family of eight-bit one-byte character sets, all having ASCII on the left hand side, and with varying repertoires on the right hand side: * Latin Alphabet No 1 (caters to Western Europe - now approved). * Latin Alphabet No 2 (caters to Eastern Europe - now approved). * Latin Alphabet No 3 (caters to SE Europe + others - in draft ballot). * Latin Alphabet No 4 (caters to Northern Europe - in draft ballot). * Latin-Cyrillic alphabet (right half all Cyrillic - processing currently suspended pending USSR input). * Latin-Arabic alphabet (right half all Arabic - now approved). * Latin-Greek alphabet (right half Greek + symbols - in draft ballot). * Latin-Hebrew alphabet (right half Hebrew + symbols - proposed). The ISO Latin Alphabet 1 is available as a charset in `recode' under the name `Latin-1'. In fact, it's true name is `ISO_8859-1:1987' as per RFC 1345, accepted aliases being `CP819', `IBM819', `ISO-8859-1', `ISO_8859-1', `iso-ir-100', `l1' and `Latin-1'. The shortest way of specifying it in `recode' is `l1'. It is an eight-bit code which coincides with ASCII for the lower half. This documentation used to include Latin-1 tables. They have been removed since the `recode' program can now recreate these easily: recode -lf l1 for commented ISO Latin-1 recode -ld l1 for concise decimal table recode -lo l1 for concise octal table recode -lh l1 for concise hexadecimal table  File: recode.info, Node: ASCII-BS, Next: flat, Prev: ISO 8859, Up: ASCII misc ASCII 7-bits, `BS' to overstrike ================================ This charset is available in `recode' under the name `ASCII-BS', with `BS' as an acceptable alias. The file is straight ASCII, seven bits only. According to the definition of ASCII, diacritics are applied by a sequence of three characters: the letter, one `BS', the diacritic mark. We deviate slightly from this by exchanging the diacritic mark and the letter so, on a screen device, the diacritic will disappear and let the letter alone. At recognition time, both methods are acceptable. The French quotes are coded by the sequences: `< BS "' or `" BS <' for the opening quote and `> BS "' or `" BS >' for the closing quote. This artificial convention was inherited in straight `ASCII-BS' from habits around `Bang-Bang' entry, and is not well known. But we decided to stick to it so that `ASCII-BS' charset will not lose French quotes. The `ASCII-BS' charset is independent of `ASCII', and different. The following examples demonstrate this, knowing at advance that `!2' is the `Bang-Bang' way of representing an `e' with an acute accent. Compare: % echo \!2 | recode -v bang..l1/d Request: Bang-Bang..ISO-8859-1/Decimal-1 233, 10 with: % echo \!2 | recode -v bang..bs/d Request: Bang-Bang..ISO-8859-1..ASCII-BS/Decimal-1 39, 8, 101, 10 In the first case, the `e' with an acute accent is merely transmitted by the `Latin-1..ASCII' mapping, not having a special recoding rule for it. In the `Latin-1..ASCII-BS' case, the acute accent is applied over the `e' with a backspace: diacriticised characters have special rules. For the `ASCII-BS' charset, reversibility is still possible, but there might be difficult cases.  File: recode.info, Node: flat, Prev: ASCII-BS, Up: ASCII misc ASCII without diacritics nor underline ====================================== This charset is available in `recode' under the name `flat'. This code is ASCII expunged of all diacritics and underlines, as long as they are applied using three character sequences, with `BS' in the middle. Also, despite slightly unrelated, each control character is represented by a sequence of two or three graphic characters. The newline character, however, keeps its functionality and is not represented. Note that charset `flat' is a terminal charset. We can convert _to_ `flat', but not _from_ it.  File: recode.info, Node: IBM and MS, Next: CDC, Prev: ASCII misc, Up: Top Some IBM or Microsoft charsets ****************************** The `recode' program provides various IBM or Microsoft code pages (*note Tabular::). An easy way to find them all at once out of the `recode' program itself is through the command: recode -l | egrep -i '(CP|IBM)[0-9]' But also, see few special charsets presented in the incoming sections. * Menu: * EBCDIC:: EBCDIC codes * IBM-PC:: IBM's PC code * Icon-QNX:: Unisys' Icon code  File: recode.info, Node: EBCDIC, Next: IBM-PC, Prev: IBM and MS, Up: IBM and MS EBCDIC code =========== This charset is the IBM's External Binary Coded Decimal for Interchange Coding. This is an eight bits code. The following three variants were implemented in `recode' independently of RFC 1345: `EBCDIC' In `recode', the `us..ebcdic' conversion is identical to `dd conv=ebcdic' conversion, and `recode' `ebcdic..us' conversion is identical to `dd conv=ascii' conversion. This charset also represents the way Control Data Corporation relates EBCDIC to 8-bits ASCII. `EBCDIC-CCC' In `recode', the `us..ebcdic-ccc' or `ebcdic-ccc..us' conversions represent the way Concurrent Computer Corporation (formerly Perkin Elmer) relates EBCDIC to 8-bits ASCII. `EBCDIC-IBM' In `recode', the `us..ebcdic-ibm' conversion is _almost_ identical to the GNU `dd conv=ibm' conversion. Given the exact `dd conv=ibm' conversion table, `recode' once said: Codes 91 and 213 both recode to 173 Codes 93 and 229 both recode to 189 No character recodes to 74 No character recodes to 106 So I arbitrarily chose to recode 213 by 74 and 229 by 106. This makes the `EBCDIC-IBM' recoding reversible, but this is not necessarily the best correction. In any case, I think that GNU `dd' should be amended. `dd' and `recode' should ideally agree on the same correction. So, this table might change once again. RFC 1345 brings into `recode' 15 other EBCDIC charsets, and 21 other charsets having EBCDIC in at least one of their alias names. You can get a list of all these by executing: recode -l | grep -i ebcdic Note that `recode' may convert a pure stream of EBCDIC characters, but it does not know how to handle binary data between records which is sometimes used to delimit them and build physical blocks. If end of lines are not marked, fixed record size may produce something readable, but `VB' or `VBS' blocking is likely to yield some garbage in the converted results.  File: recode.info, Node: IBM-PC, Next: Icon-QNX, Prev: EBCDIC, Up: IBM and MS IBM's PC code ============= This charset is available in `recode' under the name `IBM-PC', with `dos', `MSDOS' and `pc' as acceptable aliases. The shortest way of specifying it in `recode' is `pc'. The charset is aimed towards a PC microcomputer from IBM or any compatible. This is an eight-bit code. This charset is fairly old in `recode', its tables were produced a long while ago by mere inspection of a printed chart of the IBM-PC codes and glyph. It has `CR-LF' as its implied surface. This means that, if the original end of lines have to be preserved while going out of `IBM-PC', they should currently be added back through the usage of a surface on the other charset, or better, just never removed. Here are examples for both cases: recode pc..l2/cl < INPUT > OUTPUT recode pc/..l2 < INPUT > OUTPUT RFC 1345 brings into `recode' 44 `IBM' charsets or code pages, and also 8 other code pages. You can get a list of these all these by executing:(1) recode -l | egrep -i '(CP|IBM)[0-9]' All charset or aliases beginning with letters `CP' or `IBM' also have `CR-LF' as their implied surface. The same is true for a purely numeric alias in the same family. For example, all of `819', `CP819' and `IBM819' imply `CR-LF' as a surface. Note that `ISO-8859-1' does _not_ imply a surface, despite it shares the same tabular data as `819'. There are a few discrepancies between this `IBM-PC' charset and the very similar RFC 1345 charset `ibm437', which have not been analysed yet, so the charsets are being kept separate for now. This might change in the future, and the `IBM-PC' charset might disappear. Wizards would be interested in comparing the output of these two commands: recode -vh IBM-PC..Latin-1 recode -vh IBM437..Latin-1 The first command uses the charset prior to RFC 1345 introduction. Both methods give different recodings. These differences are annoying, the fuzziness will have to be explained and settle down one day. ---------- Footnotes ---------- (1) On DOS/Windows, stock shells do not know that apostrophes quote special characters like `|', so one need to use double quotes instead of apostrophes.  File: recode.info, Node: Icon-QNX, Prev: IBM-PC, Up: IBM and MS Unisys' Icon code ================= This charset is available in `recode' under the name `Icon-QNX', with `QNX' as an acceptable alias. The file is using Unisys' Icon way to represent diacritics with code 25 escape sequences, under the system QNX. This is a seven-bit code, even if eight-bit codes can flow through as part of IBM-PC charset.  File: recode.info, Node: CDC, Next: Micros, Prev: IBM and MS, Up: Top Charsets for CDC machines ************************* What is now `recode' evolved out, through many transformations really, from a set of programs which were originally written in "COMPASS", Control Data Corporation's assembler, with bits in FORTRAN, and later rewritten in CDC 6000 Pascal. The CDC heritage shows by the fact some old CDC charsets are still supported. The `recode' author used to be familiar with CDC Scope-NOS/BE and Kronos-NOS, and many CDC formats. Reading CDC tapes directly on other machines is often a challenge, and `recode' does not always solve it. It helps having tapes created in coded mode instead of binary mode, and using `S' (Stranger) tapes instead of `I' (Internal) tapes. ANSI labels and multi-file tapes might be the source of trouble. There are ways to handle a few Cyber Record Manager formats, but some of them might be quite difficult to decode properly after the transfer is done. The `recode' program is usable only for a small subset of NOS text formats, and surely not with binary textual formats, like `UPDATE' or `MODIFY' sources, for example. `recode' is not especially suited for reading 8/12 or 56/60 packing, yet this could easily arranged if there was a demand for it. It does not have the ability to translate Display Code directly, as the ASCII conversion implied by tape drivers or FTP does the initial approximation. `recode' can decode 6/12 caret notation over Display Code already mapped to ASCII. * Menu: * Display Code:: Control Data's Display Code * CDC-NOS:: ASCII 6/12 from NOS * Bang-Bang:: ASCII ``bang bang''  File: recode.info, Node: Display Code, Next: CDC-NOS, Prev: CDC, Up: CDC Control Data's Display Code =========================== This code is not available in `recode', but repeated here for reference. This is a 6-bit code used on CDC mainframes. Octal display code to graphic Octal display code to octal ASCII 00 : 20 P 40 5 60 # 00 072 20 120 40 065 60 043 01 A 21 Q 41 6 61 [ 01 101 21 121 41 066 61 133 02 B 22 R 42 7 62 ] 02 102 22 122 42 067 62 135 03 C 23 S 43 8 63 % 03 103 23 123 43 070 63 045 04 D 24 T 44 9 64 " 04 104 24 124 44 071 64 042 05 E 25 U 45 + 65 _ 05 105 25 125 45 053 65 137 06 F 26 V 46 - 66 ! 06 106 26 126 46 055 66 041 07 G 27 W 47 * 67 & 07 107 27 127 47 052 67 046 10 H 30 X 50 / 70 ' 10 110 30 130 50 057 70 047 11 I 31 Y 51 ( 71 ? 11 111 31 131 51 050 71 077 12 J 32 Z 52 ) 72 < 12 112 32 132 52 051 72 074 13 K 33 0 53 $ 73 > 13 113 33 060 53 044 73 076 14 L 34 1 54 = 74 @ 14 114 34 061 54 075 74 100 15 M 35 2 55 75 \ 15 115 35 062 55 040 75 134 16 N 36 3 56 , 76 ^ 16 116 36 063 56 054 76 136 17 O 37 4 57 . 77 ; 17 117 37 064 57 056 77 073 In older times, `:' used octal 63, and octal 0 was not a character. The table above shows the ASCII glyph interpretation of codes 60 to 77, yet these 16 codes were once defined differently. There is no explicit end of line in Display Code, and the Cyber Record Manager introduced many new ways to represent them, the traditional end of lines being reachable by setting `RT' to `Z'. If 6-bit bytes in a file are sequentially counted from 1, a traditional end of line does exist if bytes 10*N+9 and 10N+10 are both zero for a given N, in which case these two bytes are not to be interpreted as `::'. Also, up to 9 immediately preceeding zero bytes, going backward, are to be considered as part of the end of line and not interpreted as `:'(1). ---------- Footnotes ---------- (1) This convention replaced an older one saying that up to 4 immediately preceeding _pairs_ of zero bytes, going backward, are to be considered as part of the end of line and not interpreted as `::'.  File: recode.info, Node: CDC-NOS, Next: Bang-Bang, Prev: Display Code, Up: CDC ASCII 6/12 from NOS =================== This charset is available in `recode' under the name `CDC-NOS', with `NOS' as an acceptable alias. This is one of the charsets in use on CDC Cyber NOS systems to represent ASCII, sometimes named "NOS 6/12" code for coding ASCII. This code is also known as "caret ASCII". It is based on a six bits character set in which small letters and control characters are coded using a `^' escape and, sometimes, a `@' escape. The routines given here presume that the six bits code is already expressed in ASCII by the communication channel, with embedded ASCII `^' and `@' escapes. Here is a table showing which characters are being used to encode each ASCII character. 000 ^5 020 ^# 040 060 0 100 @A 120 P 140 @G 160 ^P 001 ^6 021 ^[ 041 ! 061 1 101 A 121 Q 141 ^A 161 ^Q 002 ^7 022 ^] 042 " 062 2 102 B 122 R 142 ^B 162 ^R 003 ^8 023 ^% 043 # 063 3 103 C 123 S 143 ^C 163 ^S 004 ^9 024 ^" 044 $ 064 4 104 D 124 T 144 ^D 164 ^T 005 ^+ 025 ^_ 045 % 065 5 105 E 125 U 145 ^E 165 ^U 006 ^- 026 ^! 046 & 066 6 106 F 126 V 146 ^F 166 ^V 007 ^* 027 ^& 047 ' 067 7 107 G 127 W 147 ^G 167 ^W 010 ^/ 030 ^' 050 ( 070 8 110 H 130 X 150 ^H 170 ^X 011 ^( 031 ^? 051 ) 071 9 111 I 131 Y 151 ^I 171 ^Y 012 ^) 032 ^< 052 * 072 @D 112 J 132 Z 152 ^J 172 ^Z 013 ^$ 033 ^> 053 + 073 ; 113 K 133 [ 153 ^K 173 ^0 014 ^= 034 ^@ 054 , 074 < 114 L 134 \ 154 ^L 174 ^1 015 ^ 035 ^\ 055 - 075 = 115 M 135 ] 155 ^M 175 ^2 016 ^, 036 ^^ 056 . 076 > 116 N 136 @B 156 ^N 176 ^3 017 ^. 037 ^; 057 / 077 ? 117 O 137 _ 157 ^O 177 ^4  File: recode.info, Node: Bang-Bang, Prev: CDC-NOS, Up: CDC ASCII "bang bang" ================= This charset is available in `recode' under the name `Bang-Bang'. This code, in use on Cybers at Universite' de Montre'al mainly, served to code a lot of French texts. The original name of this charset is "ASCII code' Display". This code is also known as "Bang-bang". It is based on a six bits character set in which capitals, French diacritics and a few others are coded using an `!' escape followed by a single character, and control characters using a double `!' escape followed by a single character. The routines given here presume that the six bits code is already expressed in ASCII by the communication channel, with embedded ASCII `!' escapes. Here is a table showing which characters are being used to encode each ASCII character. 000 !!@ 020 !!P 040 060 0 100 @ 120 !P 140 !@ 160 P 001 !!A 021 !!Q 041 !" 061 1 101 !A 121 !Q 141 A 161 Q 002 !!B 022 !!R 042 " 062 2 102 !B 122 !R 142 B 162 R 003 !!C 023 !!S 043 # 063 3 103 !C 123 !S 143 C 163 S 004 !!D 024 !!T 044 $ 064 4 104 !D 124 !T 144 D 164 T 005 !!E 025 !!U 045 % 065 5 105 !E 125 !U 145 E 165 U 006 !!F 026 !!V 046 & 066 6 106 !F 126 !V 146 F 166 V 007 !!G 027 !!W 047 ' 067 7 107 !G 127 !W 147 G 167 W 010 !!H 030 !!X 050 ( 070 8 110 !H 130 !X 150 H 170 X 011 !!I 031 !!Y 051 ) 071 9 111 !I 131 !Y 151 I 171 Y 012 !!J 032 !!Z 052 * 072 : 112 !J 132 !Z 152 J 172 Z 013 !!K 033 !![ 053 + 073 ; 113 !K 133 [ 153 K 173 ![ 014 !!L 034 !!\ 054 , 074 < 114 !L 134 \ 154 L 174 !\ 015 !!M 035 !!] 055 - 075 = 115 !M 135 ] 155 M 175 !] 016 !!N 036 !!^ 056 . 076 > 116 !N 136 ^ 156 N 176 !^ 017 !!O 037 !!_ 057 / 077 ? 117 !O 137 _ 157 O 177 !_  File: recode.info, Node: Micros, Next: Miscellaneous, Prev: CDC, Up: Top Other micro-computer charsets ***************************** The `NeXT' charset, which used to be especially provided in releases of `recode' before 3.5, has been integrated since as one RFC 1345 table. * Menu: * Apple-Mac:: Apple's Macintosh code * AtariST:: Atari ST code  File: recode.info, Node: Apple-Mac, Next: AtariST, Prev: Micros, Up: Micros Apple's Macintosh code ====================== This charset is available in `recode' under the name `Apple-Mac'. The shortest way of specifying it in `recode' is `ap'. The charset is aimed towards a Macintosh micro-computer from Apple. This is an eight bit code. The file is the data fork only. This charset is fairly old in `recode', its tables were produced a long while ago by mere inspection of a printed chart of the Macintosh codes and glyph. It has `CR' as its implied surface. This means that, if the original end of lines have to be preserved while going out of `Apple-Mac', they should currently be added back through the usage of a surface on the other charset, or better, just never removed. Here are examples for both cases: recode ap..l2/cr < INPUT > OUTPUT recode ap/..l2 < INPUT > OUTPUT RFC 1345 brings into `recode' 2 other Macintosh charsets. You can discover them by using `grep' over the output of `recode -l': recode -l | grep -i mac Charsets `macintosh' and `macintosh_ce', as well as their aliases `mac' and `macce' also have `CR' as their implied surface. There are a few discrepancies between the `Apple-Mac' charset and the very similar RFC 1345 charset `macintosh', which have not been analysed yet, so the charsets are being kept separate for now. This might change in the future, and the `Apple-Mac' charset might disappear. Wizards would be interested in comparing the output of these two commands: recode -vh Apple-Mac..Latin-1 recode -vh macintosh..Latin-1 The first command use the charset prior to RFC 1345 introduction. Both methods give different recodings. These differences are annoying, the fuzziness will have to be explained and settle down one day. As a side note, some people ask if there is a Macintosh port of the `recode' program. I'm not aware of any. I presume that if the tool fills a need for Macintosh users, someone will port it one of these days?  File: recode.info, Node: AtariST, Prev: Apple-Mac, Up: Micros Atari ST code ============= This charset is available in `recode' under the name `AtariST'. This is the character set used on the Atari ST/TT/Falcon. This is similar to `IBM-PC', but differs in some details: it includes some more accented characters, the graphic characters are mostly replaced by Hebrew characters, and there is a true German `sharp s' different from Greek `beta'. About the end-of-line conversions: the canonical end-of-line on the Atari is `\r\n', but unlike `IBM-PC', the OS makes no difference between text and binary input/output; it is up to the application how to interpret the data. In fact, most of the libraries that come with compilers can grok both `\r\n' and `\n' as end of lines. Many of the users who also have access to Unix systems prefer `\n' to ease porting Unix utilities. So, for easing reversibility, `recode' tries to let `\r' undisturbed through recodings.  File: recode.info, Node: Miscellaneous, Next: Surfaces, Prev: Micros, Up: Top Various other charsets ********************** Even if these charsets were originally added to `recode' for handling texts written in French, they find other uses. We did use them a lot for writing French diacriticised texts in the past, so `recode' knows how to handle these particularly well for French texts. * Menu: * HTML:: World Wide Web representations * LaTeX:: LaTeX macro calls * Texinfo:: GNU project documentation files * Vietnamese:: * African:: African charsets * Others:: * Texte:: Easy French conventions * Mule:: Mule as a multiplexed charset recode-3.6/doc/recode.info-50100644000000000000000000012501207224443041014350 0ustar rootrootThis is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY * recode: (recode). Conversion between character sets and surfaces. END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: recode.info, Node: HTML, Next: LaTeX, Prev: Miscellaneous, Up: Miscellaneous World Wide Web representations ============================== Character entities have been introduced by SGML and made widely popular through HTML, the markup language in use for the World Wide Web, or Web or WWW for short. For representing _unusual_ characters, HTML texts use special sequences, beginning with an ampersand `&' and ending with a semicolon `;'. The sequence may itself start with a number sigh `#' and be followed by digits, so forming a "numeric character reference", or else be an alphabetic identifier, so forming a "character entity reference". The HTML standards have been revised into different HTML levels over time, and the list of allowable character entities differ in them. The later XML, meant to simplify many things, has an option (`standalone=yes') which much restricts that list. The `recode' library is able to convert character references between their mnemonic form and their numeric form, depending on aimed HTML standard level. It also can, of course, convert between HTML and various other charsets. Here is a list of those HTML variants which `recode' supports. Some notes have been provided by François Yergeau . `XML-standalone' This charset is available in `recode' under the name `XML-standalone', with `h0' as an acceptable alias. It is documented in section 4.1 of `http://www.w3.org/TR/REC-xml'. It only knows `&', `>', `<', `"' and `''. `HTML_1.1' This charset is available in `recode' under the name `HTML_1.1', with `h1' as an acceptable alias. HTML 1.0 was never really documented. `HTML_2.0' This charset is available in `recode' under the name `HTML_2.0', and has `RFC1866', `1866' and `h2' for aliases. HTML 2.0 entities are listed in RFC 1866. Basically, there is an entity for each _alphabetical_ character in the right part of ISO 8859-1. In addition, there are four entities for syntax-significant ASCII characters: `&', `>', `<' and `"'. `HTML-i18n' This charset is available in `recode' under the name `HTML-i18n', and has `RFC2070' and `2070' for aliases. RFC 2070 added entities to cover the whole right part of ISO 8859-1. The list is conveniently accessible at `http://www.alis.com:8085/ietf/html/html-latin1.sgml'. In addition, four i18n-related entities were added: `‌' (`‌'), `‍' (`‍'), `‎' (`‎') and `‏' (`‏'). `HTML_3.2' This charset is available in `recode' under the name `HTML_3.2', with `h3' as an acceptable alias. HTML 3.2 (http://www.w3.org/TR/REC-html32.html) took up the full Latin-1 list but not the i18n-related entities from RFC 2070. `HTML_4.0' This charset is available in `recode' under the name `HTML_4.0', and has `h4' and `h' for aliases. Beware that the particular alias `h' is not _tied_ to HTML 4.0, but to the highest HTML level supported by `recode'; so it might later represent HTML level 5 if this is ever created. HTML 4.0 (http://www.w3.org/TR/REC-html40/) has the whole Latin-1 list, a set of entities for symbols, mathematical symbols, and Greek letters, and another set for markup-significant and internationalization characters comprising the 4 ASCII entities, the 4 i18n-related from RFC 2070 plus some more. See `http://www.w3.org/TR/REC-html40/sgml/entities.html'. Printable characters from Latin-1 may be used directly in an HTML text. However, partly because people have deficient keyboards, partly because people want to transmit HTML texts over non 8-bit clean channels while not using MIME, it is common (yet debatable) to use character entity references even for Latin-1 characters, when they fall outside ASCII (that is, when they have the 8th bit set). When you recode from another charset to `HTML', beware that all occurrences of double quotes, ampersands, and left or right angle brackets are translated into special sequences. However, in practice, people often use ampersands and angle brackets in the other charset for introducing HTML commands, compromising it: it is not pure HTML, not it is pure other charset. These particular translations can be rather inconvenient, they may be specifically inhibited through the command option `-d' (*note Mixed::). Codes not having a mnemonic entity are output by `recode' using the `&#NNN;' notation, where NNN is a decimal representation of the UCS code value. When there is an entity name for a character, it is always preferred over a numeric character reference. ASCII printable characters are always generated directly. So is the newline. While reading HTML, `recode' supports numeric character reference as alternate writings, even when written as hexadecimal numbers, as in `�'. This is documented in: http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.3 When `recode' translates to HTML, the translation occurs according to the HTML level as selected by the goal charset. When translating _from_ HTML, `recode' not only accepts the character entity references known at that level, but also those of all other levels, as well as a few alternative special sequences, to be forgiving to files using other HTML standards. The `recode' program can be used to _normalise_ an HTML file using oldish conventions. For example, it accepts `&AE;', as this once was a valid writing, somewhere. However, it should always produce `Æ' instead of `&AE;'. Yet, this is not completely true. If one does: recode h3..h3 < INPUT the operation will be optimised into a mere copy, and you can get `&AE;' this way, if you had some in your input file. But if you explicitly defeat the optimisation, like this maybe: recode h3..u2,u2..h3 < INPUT then `&AE;' should be normalised into `Æ' by the operation.  File: recode.info, Node: LaTeX, Next: Texinfo, Prev: HTML, Up: Miscellaneous LaTeX macro calls ================= This charset is available in `recode' under the name `LaTeX' and has `ltex' as an alias. It is used for ASCII files coded to be read by LaTeX or, in certain cases, by TeX. Whenever you recode from another charset to `LaTeX', beware that all occurrences of backslashes `\' are translated into the string `\backslash{}'. However, in practice, people often use backslashes in the other charset for introducing TeX commands, compromising it: it is not pure TeX, nor it is pure other charset. This translation of backslashes into `\backslash{}' can be rather inconvenient, it may be inhibited through the command option `-d' (*note Mixed::).  File: recode.info, Node: Texinfo, Next: Vietnamese, Prev: LaTeX, Up: Miscellaneous GNU project documentation files =============================== This charset is available in `recode' under the name `Texinfo' and has `texi' and `ti' for aliases. It is used by the GNU project for its documentation. Texinfo files may be converted into Info files by the `makeinfo' program and into nice printed manuals by the TeX system. Even if `recode' may transform other charsets to Texinfo, it may not read Texinfo files yet. In these times, usages are also changing between versions of Texinfo, and `recode' only partially succeeds in correctly following these changes. So, for now, Texinfo support in `recode' should be considered as work still in progress (!).  File: recode.info, Node: Vietnamese, Next: African, Prev: Texinfo, Up: Miscellaneous Vietnamese charsets =================== We are currently experimenting the implementation, in `recode', of a few character sets and transliterated forms to handle the Vietnamese language. They are quite briefly summarised, here. `TCVN' The TCVN charset has an incomplete name. It might be one of the three charset `VN1', `VN2' or `VN3'. Yes `VN2' might be a second version of `VISCII'. To be clarified. `VISCII' This is an 8-bit character set which seems to be rather popular for writing Vietnamese. `VPS' This is an 8-bit character set for Vietnamese. No much reference. `VIQR' The VIQR convention is a 7-bit, `ASCII' transliteration for Vietnamese. `VNI' The VNI convention is a 8-bit, `Latin-1' transliteration for Vietnamese. Still lacking for Vietnamese in `recode', are the charsets `CP1129' and `CP1258'.  File: recode.info, Node: African, Next: Others, Prev: Vietnamese, Up: Miscellaneous African charsets ================ Some African character sets are available for a few languages, when these are heavily used in countries where French is also currently spoken. One African charset is usable for Bambara, Ewondo and Fulfude, as well as for French. This charset is available in `recode' under the name `AFRFUL-102-BPI_OCIL'. Accepted aliases are `bambara', `bra', `ewondo' and `fulfude'. Transliterated forms of the same are available under the name `AFRFUL-103-BPI_OCIL'. Accepted aliases are `t-bambara', `t-bra', `t-ewondo' and `t-fulfude'. Another African charset is usable for Lingala, Sango and Wolof, as well as for French. This charset is available in `recode' under the name `AFRLIN-104-BPI_OCIL'. Accepted aliases are `lingala', `lin', `sango' and `wolof'. Transliterated forms of the same are available under the name `AFRLIN-105-BPI_OCIL'. Accepted aliases are `t-lingala', `t-lin', `t-sango' and `t-wolof'. To ease exchange with `ISO-8859-1', there is a charset conveying transliterated forms for Latin-1 in a way which is compatible with the other African charsets in this series. This charset is available in `recode' under the name `AFRL1-101-BPI_OCIL'. Accepted aliases are `t-fra' and `t-francais'.  File: recode.info, Node: Others, Next: Texte, Prev: African, Up: Miscellaneous Cyrillic and other charsets =========================== The following Cyrillic charsets are already available in `recode' through RFC 1345 tables: `CP1251' with aliases `1251', ` ms-cyrl' and `windows-1251'; `CSN_369103' with aliases `ISO-IR-139' and `KOI8_L2'; `ECMA-cyrillic' with aliases `ECMA-113', `ECMA-113:1986' and `iso-ir-111', `IBM880' with aliases `880', `CP880' and `EBCDIC-Cyrillic'; `INIS-cyrillic' with alias `iso-ir-51'; `ISO-8859-5' with aliases `cyrillic', ` ISO-8859-5:1988' and `iso-ir-144'; `KOI-7'; `KOI-8' with alias `GOST_19768-74'; `KOI8-R'; `KOI8-RU' and finally `KOI8-U'. There seems to remain some confusion in Roman charsets for Cyrillic languages, and because a few users requested it repeatedly, `recode' now offers special services in that area. Consider these charsets as experimental and debatable, as the extraneous tables describing them are still a bit fuzzy or non-standard. Hopefully, in the long run, these charsets will be covered in Keld Simonsen's works to the satisfaction of everybody, and this section will merely disappear. `KEYBCS2' This charset is available under the name `KEYBCS2', with `Kamenicky' as an accepted alias. `CORK' This charset is available under the name `CORK', with `T1' as an accepted alias. `KOI-8_CS2' This charset is available under the name `KOI-8_CS2'.  File: recode.info, Node: Texte, Next: Mule, Prev: Others, Up: Miscellaneous Easy French conventions ======================= This charset is available in `recode' under the name `Texte' and has `txte' for an alias. It is a seven bits code, identical to `ASCII-BS', save for French diacritics which are noted using a slightly different convention. At text entry time, these conventions provide a little speed up. At read time, they slightly improve the readability over a few alternate ways of coding diacritics. Of course, it would better to have a specialised keyboard to make direct eight bits entries and fonts for immediately displaying eight bit ISO Latin-1 characters. But not everybody is so fortunate. In a few mailing environments, and sadly enough, it still happens that the eight bit is often willing-fully destroyed. Easy French has been in use in France for a while. I only slightly adapted it (the diaeresis option) to make it more comfortable to several usages in Que'bec originating from Universite' de Montre'al. In fact, the main problem for me was not to necessarily to invent Easy French, but to recognise the "best" convention to use, (best is not being defined, here) and to try to solve the main pitfalls associated with the selected convention. Shortly said, we have: `e'' for `e' (and some other vowels) with an acute accent, `e`' for `e' (and some other vowels) with a grave accent, `e^' for `e' (and some other vowels) with a circumflex accent, `e"' for `e' (and some other vowels) with a diaeresis, `c,' for `c' with a cedilla. There is no attempt at expressing the `ae' and `oe' diphthongs. French also uses tildes over `n' and `a', but seldomly, and this is not represented either. In some countries, `:' is used instead of `"' to mark diaeresis. `recode' supports only one convention per call, depending on the `-c' option of the `recode' command. French quotes (sometimes called "angle quotes") are noted the same way English quotes are noted in TeX, _id est_ by ```' and `'''. No effort has been put to preserve Latin ligatures (`ae', `oe') which are representable in several other charsets. So, these ligatures may be lost through Easy French conventions. The convention is prone to losing information, because the diacritic meaning overloads some characters that already have other uses. To alleviate this, some knowledge of the French language is boosted into the recognition routines. So, the following subtleties are systematically obeyed by the various recognisers. 1. A comma which follows a `c' is interpreted as a cedilla only if it is followed by one of the vowels `a', `o' or `u'. 2. A single quote which follows a `e' does not necessarily means an acute accent if it is followed by a single other one. For example: `e'' will give an `e' with an acute accent. `e''' will give a simple `e', with a closing quotation mark. `e'''' will give an `e' with an acute accent, followed by a closing quotation mark. There is a problem induced by this convention if there are English quotations with a French text. In sentences like: There's a meeting at Archie's restaurant. the single quotes will be mistaken twice for acute accents. So English contractions and suffix possessives could be mangled. 3. A double quote or colon, depending on `-c' option, which follows a vowel is interpreted as diaeresis only if it is followed by another letter. But there are in French several words that _end_ with a diaeresis, and the `recode' library is aware of them. There are words ending in "igue", either feminine words without a relative masculine (besaigue" and cigue"), or feminine words with a relative masculine(1) (aigue", ambigue", contigue", exigue", subaigue" and suraigue"). There are also words not ending in "igue", but instead, either ending by "i"(2) (ai", congai", goi", hai"kai", inoui", sai", samurai", thai" and tokai"), ending by "e" (canoe") or ending by "u"(3) (Esau"). Just to complete this topic, note that it would be wrong to make a rule for all words ending in "igue" as needing a diaerisis, as there are counter-examples (becfigue, be`sigue, bigue, bordigue, bourdigue, brigue, contre-digue, digue, d'intrigue, fatigue, figue, garrigue, gigue, igue, intrigue, ligue, prodigue, sarigue and zigue). ---------- Footnotes ---------- (1) There are supposed to be seven words in this case. So, one is missing. (2) Look at one of the following sentences (the second has to be interpreted with the `-c' option): "Ai"e! Voici le proble`me que j'ai" Ai:e! Voici le proble`me que j'ai: There is an ambiguity between an ai", the small animal, and the indicative future of _avoir_ (first person singular), when followed by what could be a diaeresis mark. Hopefully, the case is solved by the fact that an apostrophe always precedes the verb and almost never the animal. (3) I did not pay attention to proper nouns, but this one showed up as being fairly evident.  File: recode.info, Node: Mule, Prev: Texte, Up: Miscellaneous Mule as a multiplexed charset ============================= This version of `recode' barely starts supporting multiplexed or super-charsets, that is, those encoding methods by which a single text stream may contain a combination of more than one constituent charset. The only multiplexed charset in `recode' is `Mule', and even then, it is only very partially implemented: the only correspondence available is with `Latin-1'. The author fastly implemented this only because he needed this for himself. However, it is intended that Mule support to become more real in subsequent releases of `recode'. Multiplexed charsets are not to be confused with mixed charset texts (*note Mixed::). For mixed charset input, the rules allowing to distinguish which charset is current, at any given place, are kind of informal, and driven from the semantics of what the file contains. On the other side, multiplexed charsets are _designed_ to be interpreted fairly precisely, and quite independently of any informational context. The spelling `Mule' originally stands for `_mul_tilingual _e_nhancement to GNU Emacs', it is the result of a collective effort orchestrated by Handa Ken'ichi since 1993. When `Mule' got rewritten in the main development stream of GNU Emacs 20, the FSF renamed it `MULE', meaning `_mul_tilingual _e_nvironment in GNU Emacs'. Even if the charset `Mule' is meant to stay internal to GNU Emacs, it sometimes breaks loose in external files, and as a consequence, a recoding tool is sometimes needed. Within Emacs, `Mule' comes with `Leim', which stands for `_l_ibraries of _e_macs _i_nput _m_ethods'. One of these libraries is named `quail'(1). ---------- Footnotes ---------- (1) Usually, quail means quail egg in Japanese, while egg alone is usually chicken egg. Both quail egg and chicken egg are popular food in Japan. The `quail' input system has been named because it is smaller that the previous `EGG' system. As for `EGG', it is the translation of `TAMAGO'. This word comes from the Japanese sentence `_ta_kusan _ma_tasete _go_mennasai', meaning `sorry to have let you wait so long'. Of course, the publication of `EGG' has been delayed many times... (Story by Takahashi Naoto)  File: recode.info, Node: Surfaces, Next: Internals, Prev: Miscellaneous, Up: Top All about surfaces ****************** The "trivial surface" consists of using a fixed number of bits (often eight) for each character, the bits together hold the integer value of the index for the character in its charset table. There are many kinds of surfaces, beyond the trivial one, all having the purpose of increasing selected qualities for the storage or transmission. For example, surfaces might increase the resistance to channel limits (`Base64'), the transmission speed (`gzip'), the information privacy (`DES'), the conformance to operating system conventions (`CR-LF'), the blocking into records (`VB'), and surely other things as well(1). Many surfaces may be applied to a stream of characters from a charset, the order of application of surfaces is important, and surfaces should be removed in the reverse order of their application. Even if surfaces may generally be applied to various charsets, some surfaces were specifically designed for a particular charset, and would not make much sense if applied to other charsets. In such cases, these conceptual surfaces have been implemented as `recode' charsets, instead of as surfaces. This choice yields to cleaner syntax and usage. *Note Universal::. Surfaces are implemented within `recode' as special charsets which may only transform to or from the `data' or `tree' special charsets. Clever users may use this knowledge for writing surface names in requests exactly as if they were pure charsets, when the only need is to change surfaces without any kind of recoding between real charsets. In such contexts, either `data' or `tree' may also be used as if it were some kind of generic, anonymous charset: the request `data..SURFACE' merely adds the given SURFACE, while the request `SURFACE..data' removes it. The `recode' library distinguishes between mere data surfaces, and structural surfaces, also called tree surfaces for short. Structural surfaces might allow, in the long run, transformations between a few specialised representations of structural information like MIME parts, Perl or Python initialisers, LISP S-expressions, XML, Emacs outlines, etc. We are still experimenting with surfaces in `recode'. The concept opens the doors to many avenues; it is not clear yet which ones are worth pursuing, and which should be abandoned. In particular, implementation of structural surfaces is barely starting, there is not even a commitment that tree surfaces will stay in `recode', if they do prove to be more cumbersome than useful. This chapter presents all surfaces currently available. * Menu: * Permutations:: Permuting groups of bytes * End lines:: Representation for end of lines * MIME:: MIME contents encodings * Dump:: Interpreted character dumps * Test:: Artificial data for testing ---------- Footnotes ---------- (1) These are mere examples to explain the concept, `recode' only has `Base64' and `CR-LF', actually.  File: recode.info, Node: Permutations, Next: End lines, Prev: Surfaces, Up: Surfaces Permuting groups of bytes ========================= A permutation is a surface transformation which reorders groups of eight-bit bytes. A _21_ permutation exchanges pairs of successive bytes. If the text contains an odd number of bytes, the last byte is merely copied. An _4321_ permutation inverts the order of quadruples of bytes. If the text does not contains a multiple of four bytes, the remaining bytes are nevertheless permuted as _321_ if there are three bytes, _21_ if there are two bytes, or merely copied otherwise. `21' This surface is available in `recode' under the name `21-Permutation' and has `swabytes' for an alias. `4321' This surface is available in `recode' under the name `4321-Permutation'.  File: recode.info, Node: End lines, Next: MIME, Prev: Permutations, Up: Surfaces Representation for end of lines =============================== The same charset might slightly differ, from one system to another, for the single fact that end of lines are not represented identically on all systems. The representation for an end of line within `recode' is the `ASCII' or `UCS' code with value 10, or `LF'. Other conventions for representing end of lines are available through surfaces. `CR' This convention is popular on Apple's Macintosh machines. When this surface is applied, each line is terminated by `CR', which has `ASCII' value 13. Unless the library is operating in strict mode, adding or removing the surface will in fact _exchange_ `CR' and `LF', for better reversibility. However, in strict mode, the exchange does not happen, any `CR' will be copied verbatim while applying the surface, and any `LF' will be copied verbatim while removing it. This surface is available in `recode' under the name `CR', it does not have any aliases. This is the implied surface for the Apple Macintosh related charsets. `CR-LF' This convention is popular on Microsoft systems running on IBM PCs and compatible. When this surface is applied, each line is terminated by a sequence of two characters: one `CR' followed by one `LF', in that order. For compatibility with oldish MS-DOS systems, removing a `CR-LF' surface will discard the first encountered `C-z', which has `ASCII' value 26, and everything following it in the text. Adding this surface will not, however, append a `C-z' to the result. This surface is available in `recode' under the name `CR-LF' and has `cl' for an alias. This is the implied surface for the IBM or Microsoft related charsets or code pages. Some other charsets might have their own representation for an end of line, which is different from `LF'. For example, this is the case of various `EBCDIC' charsets, or `Icon-QNX'. The recoding of end of lines is intimately tied into such charsets, it is not available separately as surfaces.  File: recode.info, Node: MIME, Next: Dump, Prev: End lines, Up: Surfaces MIME contents encodings ======================= RFC 2045 defines two 7-bit surfaces, meant to prepare 8-bit messages for transmission. Base64 is especially usable for binary entities, while Quoted-Printable is especially usable for text entities, in those case the lower 128 characters of the underlying charset coincide with ASCII. `Base64' This surface is available in `recode' under the name `Base64', with `b64' and `64' as acceptable aliases. `Quoted-Printable' This surface is available in `recode' under the name `Quoted-Printable', with `quote-printable' and `QP' as acceptable aliases. Note that `UTF-7', which may be also considered as a MIME surface, is provided as a genuine charset instead, as it necessary relates to `UCS-2' and nothing else. *Note UTF-7::. A little historical note, also showing the three levels of acceptance of Internet standards. MIME changed from a "Proposed Standard" (RFC 1341-1344, 1992) to a "Draft Standard" (RFC 1521-1523) in 1993, and was _recycled_ as a "Draft Standard" in 1996-11. It is not yet a "Full Standard".  File: recode.info, Node: Dump, Next: Test, Prev: MIME, Up: Surfaces Interpreted character dumps =========================== Dumps are surfaces meant to express, in ways which are a bit more readable, the bit patterns used to represent characters. They allow the inspection or debugging of character streams, but also, they may assist a bit the production of C source code which, once compiled, would hold in memory a copy of the original coding. However, `recode' does not attempt, in any way, to produce complete C source files in dumps. User hand editing or `Makefile' trickery is still needed for adding missing lines. Dumps may be given in decimal, hexadecimal and octal, and be based over chunks of either one, two or four eight-bit bytes. Formatting has been chosen to respect the C language syntax for number constants, with commas and newlines inserted appropriately. However, when dumping two or four byte chunks, the last chunk may be incomplete. This is observable through the usage of narrower expression for that last chunk only. Such a shorter chunk would not be compiled properly within a C initialiser, as all members of an array share a single type, and so, have identical sizes. `Octal-1' This surface corresponds to an octal expression of each input byte. It is available in `recode' under the name `Octal-1', with `o1' and `o' as acceptable aliases. `Octal-2' This surface corresponds to an octal expression of each pair of input bytes, except for the last pair, which may be short. It is available in `recode' under the name `Octal-2' and has `o2' for an alias. `Octal-4' This surface corresponds to an octal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in `recode' under the name `Octal-4' and has `o4' for an alias. `Decimal-1' This surface corresponds to an decimal expression of each input byte. It is available in `recode' under the name `Decimal-1', with `d1' and `d' as acceptable aliases. `Decimal-2' This surface corresponds to an decimal expression of each pair of input bytes, except for the last pair, which may be short. It is available in `recode' under the name `Decimal-2' and has `d2' for an alias. `Decimal-4' This surface corresponds to an decimal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in `recode' under the name `Decimal-4' and has `d4' for an alias. `Hexadecimal-1' This surface corresponds to an hexadecimal expression of each input byte. It is available in `recode' under the name `Hexadecimal-1', with `x1' and `x' as acceptable aliases. `Hexadecimal-2' This surface corresponds to an hexadecimal expression of each pair of input bytes, except for the last pair, which may be short. It is available in `recode' under the name `Hexadecimal-2', with `x2' for an alias. `Hexadecimal-4' This surface corresponds to an hexadecimal expression of each quadruple of input bytes, except for the last quadruple, which may be short. It is available in `recode' under the name `Hexadecimal-4', with `x4' for an alias. When removing a dump surface, that is, when reading a dump results back into a sequence of bytes, the narrower expression for a short last chunk is recognised, so dumping is a fully reversible operation. However, in case you want to produce dumps by other means than through `recode', beware that for decimal dumps, the library has to rely on the number of spaces to establish the original byte size of the chunk. Although the library might report reversibility errors, removing a dump surface is a rather forgiving process: one may mix bases, group a variable number of data per source line, or use shorter chunks in places other than at the far end. Also, source lines not beginning with a number are skipped. So, `recode' should often be able to read a whole C header file, wrapping the results of a previous dump, and regenerate the original byte string.  File: recode.info, Node: Test, Prev: Dump, Up: Surfaces Artificial data for testing =========================== A few pseudo-surfaces exist to generate debugging data out of thin air. These surfaces are only meant for the expert `recode' user, and are only useful in a few contexts, like for generating binary permutations from the recoding or acting on them. Debugging surfaces, _when removed_, insert their generated data at the beginning of the output stream, and copy all the input stream after the generated data, unchanged. This strange removal constraint comes from the fact that debugging surfaces are usually specified in the _before_ position instead of the _after_ position within a request. With debugging surfaces, one often recodes file `/dev/null' in filter mode. Specifying many debugging surfaces at once has an accumulation effect on the output, and since surfaces are removed from right to left, each generating its data at the beginning of previous output, the net effect is an _impression_ that debugging surfaces are generated from left to right, each appending to the result of the previous. In any case, any real input data gets appended after what was generated. `test7' When removed, this surface produces 128 single bytes, the first having value 0, the second having value 1, and so forth until all 128 values have been generated. `test8' When removed, this surface produces 256 single bytes, the first having value 0, the second having value 1, and so forth until all 256 values have been generated. `test15' When removed, this surface produces 64509 double bytes, the first having value 0, the second having value 1, and so forth until all values have been generated, but excluding risky `UCS-2' values, like all codes from the surrogate `UCS-2' area (for `UTF-16'), the byte order mark, and values known as invalid `UCS-2'. `test16' When removed, this surface produces 65536 double bytes, the first having value 0, the second having value 1, and so forth until all 65536 values have been generated. As an example, the command `recode l5/test8..dump < /dev/null' is a convoluted way to produce an output similar to `recode -lf l5'. It says to generate all possible 256 bytes and interpret them as `ISO-8859-9' codes, while converting them to `UCS-2'. Resulting `UCS-2' characters are dumped one per line, accompanied with their explicative name.  File: recode.info, Node: Internals, Next: Concept Index, Prev: Surfaces, Up: Top Internal aspects **************** The incoming explanations of the internals of `recode' should help people who want to dive into `recode' sources for adding new charsets. Adding new charsets does not require much knowledge about the overall organisation of `recode'. You can rather concentrate of your new charset, letting the remainder of the `recode' mechanics take care of interconnecting it with all others charsets. If you intend to play seriously at modifying `recode', beware that you may need some other GNU tools which were not required when you first installing `recode'. If you modify or create any `.l' file, then you need Flex, and some better `awk' like `mawk', GNU `awk', or `nawk'. If you modify the documentation (and you should!), you need `makeinfo'. If you are really audacious, you may also want Perl for modifying tabular processing, then `m4', Autoconf, Automake and `libtool' for adjusting configuration matters. * Menu: * Main flow:: Overall organisation * New charsets:: Adding new charsets * New surfaces:: Adding new surfaces * Design:: Comments on the library design  File: recode.info, Node: Main flow, Next: New charsets, Prev: Internals, Up: Internals Overall organisation ==================== The `recode' mechanics slowly evolved for many years, and it would be tedious to explain all problems I met and mistakes I did all along, yielding the current behaviour. Surely, one of the key choices was to stop trying to do all conversions in memory, one line or one buffer at a time. It has been fruitful to use the character stream paradigm, and the elementary recoding steps now convert a whole stream to another. Most of the control complexity in `recode' exists so that each elementary recoding step stays simple, making easier to add new ones. The whole point of `recode', as I see it, is providing a comfortable nest for growing new charset conversions. The main `recode' driver constructs, while initialising all conversion modules, a table giving all the conversion routines available ("single step"s) and for each, the starting charset and the ending charset. If we consider these charsets as being the nodes of a directed graph, each single step may be considered as oriented arc from one node to the other. A cost is attributed to each arc: for example, a high penalty is given to single steps which are prone to losing characters, a lower penalty is given to those which need studying more than one input character for producing an output character, etc. Given a starting code and a goal code, `recode' computes the most economical route through the elementary recodings, that is, the best sequence of conversions that will transform the input charset into the final charset. To speed up execution, `recode' looks for subsequences of conversions which are simple enough to be merged, and then dynamically creates new single steps to represent these mergings. A "double step" in `recode' is a special concept representing a sequence of two single steps, the output of the first single step being the special charset `UCS-2', the input of the second single step being also `UCS-2'. Special `recode' machinery dynamically produces efficient, reversible, merge-able single steps out of these double steps. I made some statistics about how many internal recoding steps are required between any two charsets chosen at random. The initial recoding layout, before optimisation, always uses between 1 and 5 steps. Optimisation could sometimes produce mere copies, which are counted as no steps at all. In other cases, optimisation is unable to save any step. The number of steps after optimisation is currently between 0 and 5 steps. Of course, the _expected_ number of steps is affected by optimisation: it drops from 2.8 to 1.8. This means that `recode' uses a theoretical average of a bit less than one step per recoding job. This looks good. This was computed using reversible recodings. In strict mode, optimisation might be defeated somewhat. Number of steps run between 1 and 6, both before and after optimisation, and the expected number of steps decreases by a lesser amount, going from 2.2 to 1.3. This is still manageable.  File: recode.info, Node: New charsets, Next: New surfaces, Prev: Main flow, Up: Internals Adding new charsets =================== The main part of `recode' is written in C, as are most single steps. A few single steps need to recognise sequences of multiple characters, they are often better written in Flex. It is easy for a programmer to add a new charset to `recode'. All it requires is making a few functions kept in a single `.c' file, adjusting `Makefile.am' and remaking `recode'. One of the function should convert from any previous charset to the new one. Any previous charset will do, but try to select it so you will not lose too much information while converting. The other function should convert from the new charset to any older one. You do not have to select the same old charset than what you selected for the previous routine. Once again, select any charset for which you will not lose too much information while converting. If, for any of these two functions, you have to read multiple bytes of the old charset before recognising the character to produce, you might prefer programming it in Flex in a separate `.l' file. Prototype your C or Flex files after one of those which exist already, so to keep the sources uniform. Besides, at `make' time, all `.l' files are automatically merged into a single big one by the script `mergelex.awk'. There are a few hidden rules about how to write new `recode' modules, for allowing the automatic creation of `decsteps.h' and `initsteps.h' at `make' time, or the proper merging of all Flex files. Mimetism is a simple approach which relieves me of explaining all these rules! Start with a module closely resembling what you intend to do. Here is some advice for picking up a model. First decide if your new charset module is to be be driven by algorithms rather than by tables. For algorithmic recodings, see `iconqnx.c' for C code, or `txtelat1.l' for Flex code. For table driven recodings, see `ebcdic.c' for one-to-one style recodings, `lat1html.c' for one-to-many style recodings, or `atarist.c' for double-step style recodings. Just select an example from the style that better fits your application. Each of your source files should have its own initialisation function, named `module_CHARSET', which is meant to be executed _quickly_ once, prior to any recoding. It should declare the name of your charsets and the single steps (or elementary recodings) you provide, by calling `declare_step' one or more times. Besides the charset names, `declare_step' expects a description of the recoding quality (see `recodext.h') and two functions you also provide. The first such function has the purpose of allocating structures, pre-conditioning conversion tables, etc. It is also the way of further modifying the `STEP' structure. This function is executed if and only if the single step is retained in an actual recoding sequence. If you do not need such delayed initialisation, merely use `NULL' for the function argument. The second function executes the elementary recoding on a whole file. There are a few cases when you can spare writing this function: * Some single steps do nothing else than a pure copy of the input onto the output, in this case, you can use the predefined function `file_one_to_one', while having a delayed initialisation for presetting the `STEP' field `one_to_one' to the predefined value `one_to_same'. * Some single steps are driven by a table which recodes one character into another; if the recoding does nothing else, you can use the predefined function `file_one_to_one', while having a delayed initialisation for presetting the `STEP' field `one_to_one' with your table. * Some single steps are driven by a table which recodes one character into a string; if the recoding does nothing else, you can use the predefined function `file_one_to_many', while having a delayed initialisation for presetting the `STEP' field `one_to_many' with your table. If you have a recoding table handy in a suitable format but do not use one of the predefined recoding functions, it is still a good idea to use a delayed initialisation to save it anyway, because `recode' option `-h' will take advantage of this information when available. Finally, edit `Makefile.am' to add the source file name of your routines to the `C_STEPS' or `L_STEPS' macro definition, depending on the fact your routines is written in C or in Flex.  File: recode.info, Node: New surfaces, Next: Design, Prev: New charsets, Up: Internals Adding new surfaces =================== Adding a new surface is technically quite similar to adding a new charset. *Note New charsets::. A surface is provided as a set of two transformations: one from the predefined special charset `data' or `tree' to the new surface, meant to apply the surface, the other from the new surface to the predefined special charset `data' or `tree', meant to remove the surface. Internally in `recode', function `declare_step' especially recognises when a charset is so related to `data' or `tree', and then takes appropriate actions so that charset gets indeed installed as a surface. recode-3.6/doc/recode.info-60100644000000000000000000006344107224443041014360 0ustar rootrootThis is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY * recode: (recode). Conversion between character sets and surfaces. END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: recode.info, Node: Design, Prev: New surfaces, Up: Internals Comments on the library design ============================== * Why a shared library? There are many different approaches to reduce system requirements to handle all tables needed in the `recode' library. One of them is to have the tables in an external format and only read them in on demand. After having pondered this for a while, I finally decided against it, mainly because it involves its own kind of installation complexity, and it is not clear to me that it would be as interesting as I first imagined. It looks more efficient to see all tables and algorithms already mapped into virtual memory from the start of the execution, yet not loaded in actual memory, than to go through many disk accesses for opening various data files once the program is already started, as this would be needed with other solutions. Using a shared library also has the indirect effect of making various algorithms handily available, right in the same modules providing the tables. This alleviates much the burden of the maintenance. Of course, I would like to later make an exception for only a few tables, built locally by users for their own particular needs once `recode' is installed. `recode' should just go and fetch them. But I do not perceive this as very urgent, yet useful enough to be worth implementing. Currently, all tables needed for recoding are precompiled into binaries, and all these binaries are then made into a shared library. As an initial step, I turned `recode' into a main program and a non-shared library, this allowed me to tidy up the API, get rid of all global variables, etc. It required a surprising amount of program source massaging. But once this cleaned enough, it was easy to use Gordon Matzigkeit's `libtool' package, and take advantage of the Automake interface to neatly turn the non-shared library into a shared one. Sites linking with the `recode' library, whose system does not support any form of shared libraries, might end up with bulky executables. Surely, the `recode' library will have to be used statically, and might not very nicely usable on such systems. It seems that progress has a price for those being slow at it. There is a locality problem I did not address yet. Currently, the `recode' library takes many cycles to initialise itself, calling each module in turn for it to set up associated knowledge about charsets, aliases, elementary steps, recoding weights, etc. _Then_, the recoding sequence is decided out of the command given. I would not be surprised if initialisation was taking a perceivable fraction of a second on slower machines. One thing to do, most probably not right in version 3.5, but the version after, would have `recode' to pre-load all tables and dump them at installation time. The result would then be compiled and added to the library. This would spare many initialisation cycles, but more importantly, would avoid calling all library modules, scattered through the virtual memory, and so, possibly causing many spurious page exceptions each time the initialisation is requested, at least once per program execution. * Why not a central charset? It would be simpler, and I would like, if something like ISO 10646 was used as a turning template for all charsets in `recode'. Even if I think it could help to a certain extent, I'm still not fully sure it would be sufficient in all cases. Moreover, some people disagree about using ISO 10646 as the central charset, to the point I cannot totally ignore them, and surely, `recode' is not a mean for me to force my own opinions on people. I would like that `recode' be practical more than dogmatic, and reflect usage more than religions. Currently, if you ask `recode' to go from CHARSET1 to CHARSET2 chosen at random, it is highly probable that the best path will be quickly found as: CHARSET1..`UCS-2'..CHARSET2 That is, it will almost always use the `UCS' as a trampoline between charsets. However, `UCS-2' will be immediately be optimised out, and CHARSET1..CHARSET2 will often be performed in a single step through a permutation table generated on the fly for the circumstance (1). In those few cases where `UCS-2' is not selected as a conceptual intermediate, I plan to study if it could be made so. But I guess some cases will remain where `UCS-2' is not a proper choice. Even if `UCS' is often the good choice, I do not intend to forcefully restrain `recode' around `UCS-2' (nor `UCS-4') for now. We might come to that one day, but it will come out of the natural evolution of `recode'. It will then reflect a fact, rather than a preset dogma. * Why not `iconv'? The `iconv' routine and library allows for converting characters from an input buffer to an input buffer, synchronously advancing both buffer cursors. If the output buffer is not big enough to receive all of the conversion, the routine returns with the input cursor set at the position where the conversion could later be resumed, and the output cursor set to indicate until where the output buffer has been filled. Despite this scheme is simple and nice, the `recode' library does not offer it currently. Why not? When long sequences of decodings, stepwise recodings, and re-encodings are involved, as it happens in true life, synchronising the input buffer back to where it should have stopped, when the output buffer becomes full, is a difficult problem. Oh, we could make it simpler at the expense of loosing space or speed: by inserting markers between each input character and counting them at the output end; by processing only one character in a time through the whole sequence; by repeatedly attempting to recode various subsets of the input buffer, binary searching on their length until the output just fits. The overhead of such solutions looks fully prohibitive to me, and the gain very minimal. I do not see a real advantage, nowadays, imposing a fixed length to an output buffer. It makes things so much simpler and efficient to just let the output buffer size float a bit. Of course, if the above problem was solved, the `iconv' library should be easily emulated, given that `recode' has similar knowledge about charsets, of course. This either solved or not, the `iconv' program remains trivial (given similar knowledge about charsets). I also presume that the `genxlt' program would be easy too, but I do not have enough detailed specifications of it to be sure. A lot of years ago, `recode' was using a similar scheme, and I found it rather hard to manage for some cases. I rethought the overall structure of `recode' for getting away from that scheme, and never regretted it. I perceive `iconv' as an artificial solution which surely has some elegances and virtues, but I do not find it really useful as it stands: one always has to wrap `iconv' into something more refined, extending it for real cases. From past experience, I think it is unduly hard to fully implement this scheme. It would be awkward that we do contortions for the sole purpose of implementing exactly its specification, without real, fairly sounded reasons (other then the fact some people once thought it was worth standardising). It is much better to immediately aim for the refinement we need, without uselessly forcing us into the dubious detour `iconv' represents. Some may argue that if `recode' was using a comprehensive charset as a turning template, as discussed in a previous point, this would make `iconv' easier to implement. Some may be tempted to say that the cases which are hard to handle are not really needed, nor interesting, anyway. I feel and fear a bit some pressure wanting that `recode' be split into the part that well fits the `iconv' model, and the part that does not fit, considering this second part less important, with the idea of dropping it one of these days, maybe. My guess is that users of the `recode' library, whatever its form, would not like to have such arbitrary limitations. In the long run, we should not have to explain to our users that some recodings may not be made available just because they do not fit the simple model we had in mind when we did it. Instead, we should try to stay opened to the difficulties of real life. There is still a lot of complex needs for Asian people, say, that `recode' does not currently address, while it should. Not only the doors should stay open, but we should force them wider! ---------- Footnotes ---------- (1) If strict mapping is requested, another efficient device will be used instead of a permutation.  File: recode.info, Node: Concept Index, Next: Option Index, Prev: Internals, Up: Top Concept Index ************* * Menu: * abbreviated names for charsets and surfaces: Requests. * adding new charsets: New charsets. * adding new surfaces: New surfaces. * African charsets: African. * aliases: Requests. * alternate names for charsets and surfaces: Requests. * ambiguous output, error message: Errors. * ASCII table, recreating with recode: ASCII. * average number of recoding steps: Main flow. * bool data type: Outer level. * box-drawing characters: Recoding. * bug reports, where to send: Contributing. * byte order mark: UCS-2. * byte order swapping: Permutations. * caret ASCII code: CDC-NOS. * CDC charsets: CDC. * CDC Display Code, a table: Display Code. * chaining of charsets in a request: Requests. * character entities: HTML. * character entity references: HTML. * character mnemonics, documentation: Tabular. * character streams, description: dump-with-names. * charset level functions: Charset level. * charset names, valid characters: Requests. * charset, default: Requests. * charset, pure: Surface overview. * charset, what it is: Introduction. * charsets for CDC machines: CDC. * charsets, aliases: Requests. * charsets, chaining in a request: Requests. * charsets, guessing: Listings. * charsets, overview: Charset overview. * chset tools: Tabular. * codepages: IBM and MS. * combining characters: UCS-2. * commutativity of surfaces: Requests. * contributing charsets: Contributing. * conversions, unavailable: Charset overview. * convert a subset of characters: Mixed. * convert strings and comments: Mixed. * copyright conditions, printing: Listings. * counting characters: count-characters. * CR surface, in Macintosh charsets: Apple-Mac. * CR-LF surface, in IBM-PC charsets: IBM-PC. * Ctrl-Z, discarding: End lines. * Cyrillic charsets: Others. * debugging surfaces: Test. * default charset: Requests. * description of individual characters: dump-with-names. * details about recoding: Recoding. * deviations from RFC 1345: Tabular. * diacritics and underlines, removing: flat. * diacritics, with ASCII-BS charset: ASCII-BS. * diaeresis: Recoding. * disable map filling: Reversibility. * double step: Main flow. * dumping characters: Dump. * dumping characters, with description: dump-with-names. * Easy French: Texte. * EBCDIC charsets: EBCDIC. * end of line format: End lines. * endiannes, changing: Permutations. * entities: HTML. * error handling: Errors. * error level threshold: Errors. * error messages: Errors. * error messages, suppressing: Reversibility. * exceptions to available conversions: Charset overview. * file sequencing: Sequencing. * file time stamps: Recoding. * filter operation: Synopsis. * force recoding: Reversibility. * French description of charsets: Listings. * guessing charsets: Listings. * Haible, Bruno: libiconv. * handling errors: Errors. * help page, printing: Listings. * HTML: HTML. * HTML normalization: HTML. * IBM codepages: IBM and MS. * IBM graphics characters: Recoding. * iconv: Design. * iconv library: libiconv. * identifying subsets in charsets: Listings. * ignore charsets: Recoding. * implied surfaces: Requests. * impossible conversions: Charset overview. * information about charsets: Listings. * initialisation functions, outer: Outer level. * initialisation functions, request: Request level. * initialisation functions, task: Task level. * interface, with iconv library: libiconv. * intermediate charsets: Requests. * internal functions: Charset level. * internal recoding bug, error message: Errors. * internals: Internals. * invalid input, error message: Errors. * invocation of recode, synopsis: Synopsis. * irreversible recoding: Reversibility. * ISO 10646: Universal. * languages, programming: Listings. * LaTeX files: LaTeX. * Latin charsets: ISO 8859. * Latin-1 table, recreating with recode: ISO 8859. * letter case, in charset and surface names: Requests. * libiconv: libiconv. * library, iconv: libiconv. * listing charsets: Listings. * Macintosh charset: Apple-Mac. * map filling: Reversibility. * map filling, disable: Reversibility. * markup language: HTML. * memory sequencing: Sequencing. * MIME encodings: MIME. * misuse of recoding library, error message: Errors. * MS-DOS charsets: IBM-PC. * MULE, in Emacs: Mule. * multiplexed charsets: Mule. * names of charsets and surfaces, abbreviation: Requests. * new charsets, how to add: New charsets. * new surfaces, how to add: New surfaces. * NeXT charsets: Micros. * non canonical input, error message: Errors. * normilise an HTML file: HTML. * NOS 6/12 code: CDC-NOS. * numeric character references: HTML. * outer level functions: Outer level. * partial conversion: Mixed. * permutations of groups of bytes: Permutations. * pipe sequencing: Sequencing. * program_name variable: Outer level. * programming language support: Listings. * pseudo-charsets: Charset overview. * pure charset: Surface overview. * quality of recoding: Recoding. * recode internals: Internals. * recode request syntax: Requests. * recode use, a tutorial: Tutorial. * recode version, printing: Listings. * recode, a Macintosh port: Apple-Mac. * recode, and RFC 1345: Tabular. * recode, main flow of operation: Main flow. * recode, operation as filter: Synopsis. * recode, synopsis of invocation: Synopsis. * recoding details: Recoding. * recoding library: Library. * recoding path, rejection: Recoding. * recoding steps, statistics: Main flow. * removing diacritics and underlines: flat. * reporting bugs: Contributing. * request level functions: Request level. * request, syntax: Requests. * reversibility of recoding: Reversibility. * RFC 1345: Tabular. * RFC 2045: MIME. * sequencing: Sequencing. * SGML: HTML. * shared library implementation: Design. * silent operation: Reversibility. * single step: Main flow. * source file generation: Listings. * stdbool.h header: Outer level. * strict operation: Reversibility. * string and comments conversion: Mixed. * structural surfaces: Surfaces. * subsets in charsets: Listings. * super-charsets: Mule. * supported programming languages: Listings. * suppressing diagnostic messages: Reversibility. * surface, what it is <1>: Surfaces. * surface, what it is: Introduction. * surfaces, aliases: Requests. * surfaces, commutativity: Requests. * surfaces, implementation in recode: Surfaces. * surfaces, implied: Requests. * surfaces, overview: Surface overview. * surfaces, structural: Surfaces. * surfaces, syntax: Requests. * surfaces, trees: Surfaces. * system detected problem, error message: Errors. * task execution: Task level. * task level functions: Task level. * TeX files: LaTeX. * Texinfo files: Texinfo. * threshold for error reporting: Errors. * time stamps of files: Recoding. * trivial surface: Surfaces. * tutorial: Tutorial. * unavailable conversions: Charset overview. * Unicode: UCS-2. * unknown charsets: Listings. * unreachable charsets: Charset overview. * untranslatable input, error message: Errors. * valid characters in charset names: Requests. * verbose operation: Recoding. * Vietnamese charsets: Vietnamese. * Web: HTML. * World Wide Web: HTML. * WWW: HTML. * XML: HTML.  File: recode.info, Node: Option Index, Next: Library Index, Prev: Concept Index, Up: Top Option Index ************ This is an alphabetical list of all command-line options accepted by `recode'. * Menu: * --colons: Recoding. * --copyright: Listings. * --diacritics: Mixed. * --find-subsets: Listings. * --force: Reversibility. * --graphics: Recoding. * --header: Listings. * --help: Listings. * --ignore: Recoding. * --known=: Listings. * --list: Listings. * --quiet: Reversibility. * --sequence: Sequencing. * --silent: Reversibility. * --source: Mixed. * --strict: Reversibility. * --touch: Recoding. * --verbose: Recoding. * --version: Listings. * -c: Recoding. * -C: Listings. * -d: Mixed. * -f: Reversibility. * -g: Recoding. * -h: Listings. * -i: Sequencing. * -k: Listings. * -l: Listings. * -p: Sequencing. * -q: Reversibility. * -S: Mixed. * -s: Reversibility. * -t: Recoding. * -T: Listings. * -v: Recoding. * -x: Recoding.  File: recode.info, Node: Library Index, Next: Charset and Surface Index, Prev: Option Index, Up: Top Library Index ************* This is an alphabetical index of important functions, data structures, and variables in the `recode' library. * Menu: * abort_level: Task level. * ascii_graphics: Request level. * byte_order_mark: Task level. * declare_step: New surfaces. * DEFAULT_CHARSET: Requests. * diacritics_only: Request level. * diaeresis_char: Request level. * error_so_far: Task level. * fail_level: Task level. * file_one_to_many: New charsets. * file_one_to_one: New charsets. * find_charset: Charset level. * LANG, when listing charsets: Listings. * LANGUAGE, when listing charsets: Listings. * list_all_charsets: Charset level. * list_concise_charset: Charset level. * list_full_charset: Charset level. * make_header_flag: Request level. * RECODE_AMBIGUOUS_OUTPUT: Errors. * recode_buffer_to_buffer: Request level. * recode_buffer_to_file: Request level. * recode_delete_outer: Outer level. * recode_delete_request: Request level. * recode_delete_task: Task level. * recode_file_to_buffer: Request level. * recode_file_to_file: Request level. * recode_filter_close: Task level. * recode_filter_close, not available: Request level. * recode_filter_open: Task level. * recode_filter_open, not available: Request level. * recode_format_table: Request level. * RECODE_INTERNAL_ERROR: Errors. * RECODE_INVALID_INPUT: Errors. * RECODE_MAXIMUM_ERROR <1>: Errors. * RECODE_MAXIMUM_ERROR: Task level. * recode_new_outer: Outer level. * recode_new_request: Request level. * recode_new_task: Task level. * RECODE_NO_ERROR: Errors. * RECODE_NOT_CANONICAL: Errors. * RECODE_OUTER structure: Outer level. * recode_perform_task: Task level. * recode_request structure: Request level. * RECODE_REQUEST structure: Request level. * recode_scan_request: Request level. * RECODE_SEQUENCE_IN_MEMORY: Task level. * RECODE_SEQUENCE_WITH_FILES: Task level. * RECODE_SEQUENCE_WITH_PIPE: Task level. * RECODE_STRATEGY_UNDECIDED: Task level. * recode_string: Request level. * recode_string_to_buffer: Request level. * recode_string_to_file: Request level. * RECODE_SYSTEM_ERROR: Errors. * RECODE_TASK structure: Task level. * RECODE_UNTRANSLATABLE: Errors. * RECODE_USER_ERROR: Errors. * strategy: Task level. * task_request structure: Task level. * verbose_flag: Request level. recode-3.6/doc/recode.info-70100644000000000000000000015264307224443041014364 0ustar rootrootThis is recode.info, produced by makeinfo version 4.0 from recode.texi. INFO-DIR-SECTION Internationalization and character sets START-INFO-DIR-ENTRY * recode: (recode). Conversion between character sets and surfaces. END-INFO-DIR-ENTRY This file documents the `recode' command, which has the purpose of converting files between various character sets and surfaces. Copyright (C) 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: recode.info, Node: Charset and Surface Index, Prev: Library Index, Up: Top Charset and Surface Index ************************* This is an alphabetical list of all the charsets and surfaces supported by `recode', and their aliases. * Menu: * 037: Tabular. * 038: Tabular. * 1004: Tabular. * 1026: Tabular. * 1047: Tabular. * 10646: UCS-4. * 1129, not available: Vietnamese. * 1250: Tabular. * 1251: Tabular. * 1252: Tabular. * 1253: Tabular. * 1254: Tabular. * 1255: Tabular. * 1256: Tabular. * 1257: Tabular. * 1258, not available: Vietnamese. * 1345: Tabular. * 1866: HTML. * 2070: HTML. * 21-Permutation: Permutations. * 256: Tabular. * 273: Tabular. * 274: Tabular. * 275: Tabular. * 278: Tabular. * 280: Tabular. * 281: Tabular. * 284: Tabular. * 285: Tabular. * 290: Tabular. * 297: Tabular. * 367: Tabular. * 420: Tabular. * 423: Tabular. * 424: Tabular. * 4321-Permutation: Permutations. * 437: Tabular. * 500: Tabular. * 500V1: Tabular. * 64: MIME. * 819: Tabular. * 850 <1>: Tabular. * 850: libiconv. * 851: Tabular. * 852: Tabular. * 855: Tabular. * 857: Tabular. * 860: Tabular. * 861: Tabular. * 862: Tabular. * 863: Tabular. * 864: Tabular. * 865: Tabular. * 866: libiconv. * 868: Tabular. * 869: Tabular. * 870: Tabular. * 871: Tabular. * 875: Tabular. * 880: Tabular. * 891: Tabular. * 903: Tabular. * 904: Tabular. * 905: Tabular. * 912: Tabular. * 918: Tabular. * AFRFUL-102-BPI_OCIL, and aliases: African. * AFRFUL-103-BPI_OCIL, and aliases: African. * AFRL1-101-BPI_OCIL: African. * AFRLIN-104-BPI_OCIL: African. * AFRLIN-105-BPI_OCIL: African. * ANSI_X3.110-1983, not recognised by recode: Tabular. * ANSI_X3.4-1968: libiconv. * ANSI_X3.4-1968, aliases and source: Tabular. * ANSI_X3.4-1968, and its aliases: ASCII. * ANSI_X3.4-1986: Tabular. * Apple-Mac: Apple-Mac. * arabic: Tabular. * ARABIC: libiconv. * arabic7: Tabular. * ARMSCII-8: libiconv. * ASCII <1>: Tabular. * ASCII: libiconv. * ASCII, an alias for the ANSI_X3.4-1968 charset: ASCII. * ASCII-BS, and its aliases: ASCII-BS. * ASMO-708 <1>: Tabular. * ASMO-708: libiconv. * ASMO_449, aliases and source: Tabular. * AtariST: AtariST. * b64: MIME. * baltic, aliases and source: Tabular. * bambara: African. * Bang-Bang: Bang-Bang. * Base64: MIME. * BIG-5: libiconv. * BIG-FIVE: libiconv. * BIG5, aliases: libiconv. * BIG5HKSCS: libiconv. * BIGFIVE: libiconv. * BMP: UCS-2. * bra: African. * BS, an alias for ASCII-BS charset: ASCII-BS. * BS_4730, aliases and source: Tabular. * BS_viewdata, aliases and source: Tabular. * ca: Tabular. * CDC-NOS, and its aliases: CDC-NOS. * CHAR: libiconv. * CHINESE: libiconv. * cl: End lines. * cn: Tabular. * CN: libiconv. * CN-BIG5: libiconv. * CN-GB: libiconv. * CN-GB-ISOIR165: libiconv. * combined-UCS-2: UCS-2. * CORK: Others. * count-characters: count-characters. * count-characters, not as before charset: Charset overview. * cp-ar: Tabular. * cp-gr: Tabular. * cp-hu: Tabular. * cp-is: Tabular. * CP037: Tabular. * CP038: Tabular. * CP1004: Tabular. * CP1026: Tabular. * CP1047: Tabular. * CP1129, not available: Vietnamese. * CP1133, aliases: libiconv. * CP1250, aliases: libiconv. * CP1250, aliases and source: Tabular. * CP1251, aliases: libiconv. * CP1251, aliases and source: Tabular. * CP1252, aliases: libiconv. * CP1252, aliases and source: Tabular. * CP1253, aliases: libiconv. * CP1253, aliases and source: Tabular. * CP1254, aliases: libiconv. * CP1254, aliases and source: Tabular. * CP1255, aliases: libiconv. * CP1255, aliases and source: Tabular. * CP1256, aliases: libiconv. * CP1256, aliases and source: Tabular. * CP1257, aliases: libiconv. * CP1257, aliases and source: Tabular. * CP1258, aliases: libiconv. * CP1258, not available: Vietnamese. * CP1361: libiconv. * CP256: Tabular. * CP273: Tabular. * CP274: Tabular. * CP275: Tabular. * CP278: Tabular. * CP280: Tabular. * CP281: Tabular. * CP284: Tabular. * CP285: Tabular. * CP290: Tabular. * CP297: Tabular. * cp367: ASCII. * CP367 <1>: Tabular. * CP367: libiconv. * CP420: Tabular. * CP423: Tabular. * CP424: Tabular. * CP437: Tabular. * CP500: Tabular. * CP819 <1>: Tabular. * CP819: libiconv. * CP850: Tabular. * CP850, aliases: libiconv. * CP851: Tabular. * CP852: Tabular. * CP855: Tabular. * CP857: Tabular. * CP860: Tabular. * CP861: Tabular. * CP862: Tabular. * CP863: Tabular. * CP864: Tabular. * CP865: Tabular. * CP866, aliases: libiconv. * CP868: Tabular. * CP869: Tabular. * CP870: Tabular. * CP871: Tabular. * CP874, aliases: libiconv. * CP875: Tabular. * CP880: Tabular. * CP891: Tabular. * CP903: Tabular. * CP904: Tabular. * CP905: Tabular. * CP912: Tabular. * CP918: Tabular. * CP932: libiconv. * CP936: libiconv. * CP949, aliases: libiconv. * CP950: libiconv. * CR, a surface: End lines. * CR-LF, a surface: End lines. * csa7-1: Tabular. * csa7-2: Tabular. * CSA_Z243.4-1985-1, aliases and source: Tabular. * CSA_Z243.4-1985-2, aliases and source: Tabular. * CSA_Z243.4-1985-gr, aliases and source: Tabular. * csASCII: libiconv. * csBig5: libiconv. * csEUCKR: libiconv. * csEUCPkdFmtJapanese: libiconv. * csEUCTW: libiconv. * csGB2312: libiconv. * csHalfWidthKatakana: libiconv. * csHPRoman8: libiconv. * csIBM866: libiconv. * csISO14JISC6220ro: libiconv. * csISO159JISX02121990: libiconv. * csISO2022CN: libiconv. * csISO2022JP: libiconv. * csISO2022JP2: libiconv. * csISO2022KR: libiconv. * csISO57GB1988: libiconv. * csISO58GB231280: libiconv. * csISO87JISX0208: libiconv. * csISOLatin1: libiconv. * csISOLatin2: libiconv. * csISOLatin3: libiconv. * csISOLatin4: libiconv. * csISOLatin5: libiconv. * csISOLatin6: libiconv. * csISOLatinArabic: libiconv. * csISOLatinCyrillic: libiconv. * csISOLatinGreek: libiconv. * csISOLatinHebrew: libiconv. * csKOI8R: libiconv. * csKSC56011987: libiconv. * csMacintosh: libiconv. * CSN_369103, aliases and source: Tabular. * csPC850Multilingual: libiconv. * csShiftJIS: libiconv. * csUCS4: libiconv. * csUnicode: libiconv. * csUnicode11: libiconv. * csUnicode11UTF7: libiconv. * csVISCII: libiconv. * cuba: Tabular. * CWI, aliases and source: Tabular. * CWI-2: Tabular. * cyrillic: Tabular. * CYRILLIC: libiconv. * d1: Dump. * d2: Dump. * d4: Dump. * data, a special charset: Surfaces. * data, not with charsets: Charset overview. * de: Tabular. * dec: Tabular. * DEC-MCS, aliases and source: Tabular. * Decimal-1: Dump. * Decimal-2: Dump. * Decimal-4: Dump. * DIN_66003, aliases and source: Tabular. * dk: Tabular. * dk-us, not recognised by recode: Tabular. * dos: IBM-PC. * DS2089: Tabular. * DS_2089, aliases and source: Tabular. * dump-with-names: dump-with-names. * dump-with-names, not as before charset: Charset overview. * e13b: Tabular. * EBCDIC, a charset: EBCDIC. * EBCDIC-AT-DE, aliases and source: Tabular. * EBCDIC-AT-DE-A, aliases and source: Tabular. * EBCDIC-BE: Tabular. * EBCDIC-BR: Tabular. * EBCDIC-CA-FR, aliases and source: Tabular. * EBCDIC-CCC: EBCDIC. * ebcdic-cp-ar1: Tabular. * ebcdic-cp-ar2: Tabular. * ebcdic-cp-be: Tabular. * ebcdic-cp-ca: Tabular. * ebcdic-cp-ch: Tabular. * EBCDIC-CP-DK: Tabular. * ebcdic-cp-es: Tabular. * ebcdic-cp-fi: Tabular. * ebcdic-cp-fr: Tabular. * ebcdic-cp-gb: Tabular. * ebcdic-cp-gr: Tabular. * ebcdic-cp-he: Tabular. * ebcdic-cp-is: Tabular. * ebcdic-cp-it: Tabular. * ebcdic-cp-nl: Tabular. * EBCDIC-CP-NO: Tabular. * ebcdic-cp-roece: Tabular. * ebcdic-cp-se: Tabular. * ebcdic-cp-tr: Tabular. * ebcdic-cp-us: Tabular. * ebcdic-cp-wt: Tabular. * ebcdic-cp-yu: Tabular. * EBCDIC-Cyrillic: Tabular. * EBCDIC-DK-NO, aliases and source: Tabular. * EBCDIC-DK-NO-A, aliases and source: Tabular. * EBCDIC-ES, aliases and source: Tabular. * EBCDIC-ES-A, aliases and source: Tabular. * EBCDIC-ES-S, aliases and source: Tabular. * EBCDIC-FI-SE, aliases and source: Tabular. * EBCDIC-FI-SE-A, aliases and source: Tabular. * EBCDIC-FR, aliases and source: Tabular. * EBCDIC-Greek: Tabular. * EBCDIC-IBM: EBCDIC. * EBCDIC-INT: Tabular. * EBCDIC-INT1: Tabular. * EBCDIC-IS-FRISS, aliases and source: Tabular. * EBCDIC-IT, aliases and source: Tabular. * EBCDIC-JP-E: Tabular. * EBCDIC-JP-kana: Tabular. * EBCDIC-PT, aliases and source: Tabular. * EBCDIC-UK, aliases and source: Tabular. * EBCDIC-US, aliases and source: Tabular. * ECMA-113: Tabular. * ECMA-113(1986): Tabular. * ECMA-114 <1>: Tabular. * ECMA-114: libiconv. * ECMA-118 <1>: Tabular. * ECMA-118: libiconv. * ECMA-cyrillic, aliases and source: Tabular. * ELOT_928 <1>: Tabular. * ELOT_928: libiconv. * ES, aliases and source: Tabular. * ES2, aliases and source: Tabular. * EUC-CN, aliases: libiconv. * EUC-JP, aliases: libiconv. * EUC-KR, aliases: libiconv. * EUC-TW, aliases: libiconv. * EUC_CN: libiconv. * EUC_JP: libiconv. * EUC_KR: libiconv. * EUC_TW: libiconv. * EUCCN: libiconv. * EUCJP: libiconv. * EUCKR: libiconv. * EUCTW: libiconv. * ewondo: African. * Extended_UNIX_Code_Packed_Format_for_Japanese: libiconv. * FI: Tabular. * flat, a charset: flat. * flat, not as before charset: Charset overview. * fr: Tabular. * friss: Tabular. * FSS_UTF: UTF-8. * fulfude: African. * gb: Tabular. * GB18030: libiconv. * GB2312: libiconv. * GB2312.1980-0: libiconv. * GB_1988-80, aliases: libiconv. * GB_1988-80, aliases and source: Tabular. * GB_2312-80, aliases: libiconv. * GB_2312-80, not recognised by recode: Tabular. * GBK, aliases: libiconv. * Georgian-Academy: libiconv. * Georgian-PS: libiconv. * GOST_19768-74: Tabular. * GOST_19768-87, aliases and source: Tabular. * greek: Tabular. * GREEK: libiconv. * greek-ccitt, aliases and source: Tabular. * greek7, aliases and source: Tabular. * greek7-old, aliases and source: Tabular. * greek8: Tabular. * GREEK8: libiconv. * h: HTML. * h0: HTML. * h1: HTML. * h2: HTML. * h3: HTML. * h4: HTML. * hebrew: Tabular. * HEBREW: libiconv. * Hexadecimal-1: Dump. * Hexadecimal-2: Dump. * Hexadecimal-4: Dump. * HP-ROMAN8, aliases: libiconv. * hp-roman8, aliases and source: Tabular. * HTML-i18n: HTML. * HTML_1.1: HTML. * HTML_2.0: HTML. * HTML_3.2: HTML. * hu: Tabular. * HZ, aliases: libiconv. * HZ-GB-2312: libiconv. * IBM-CP1133: libiconv. * IBM-PC: IBM-PC. * IBM-PC charset, and CR-LF surface: Requests. * IBM037, aliases and source: Tabular. * IBM038, aliases and source: Tabular. * IBM1004, aliases and source: Tabular. * IBM1026, aliases and source: Tabular. * IBM1047, aliases and source: Tabular. * IBM256, aliases and source: Tabular. * IBM273, aliases and source: Tabular. * IBM274, aliases and source: Tabular. * IBM275, aliases and source: Tabular. * IBM277, aliases and source: Tabular. * IBM278, aliases and source: Tabular. * IBM280, aliases and source: Tabular. * IBM281, aliases and source: Tabular. * IBM284, aliases and source: Tabular. * IBM285, aliases and source: Tabular. * IBM290, aliases and source: Tabular. * IBM297, aliases and source: Tabular. * IBM367 <1>: ASCII. * IBM367 <2>: Tabular. * IBM367: libiconv. * IBM420, aliases and source: Tabular. * IBM423, aliases and source: Tabular. * IBM424, aliases and source: Tabular. * ibm437: IBM-PC. * IBM437, aliases and source: Tabular. * IBM500, aliases and source: Tabular. * IBM819 <1>: Tabular. * IBM819: libiconv. * IBM819, and CR-LF surface: IBM-PC. * IBM850: libiconv. * IBM850, aliases and source: Tabular. * IBM851, aliases and source: Tabular. * IBM852, aliases and source: Tabular. * IBM855, aliases and source: Tabular. * IBM857, aliases and source: Tabular. * IBM860, aliases and source: Tabular. * IBM861, aliases and source: Tabular. * IBM862, aliases and source: Tabular. * IBM863, aliases and source: Tabular. * IBM864, aliases and source: Tabular. * IBM865, aliases and source: Tabular. * IBM866: libiconv. * IBM868, aliases and source: Tabular. * IBM869, aliases and source: Tabular. * IBM870, aliases and source: Tabular. * IBM871, aliases and source: Tabular. * IBM875, aliases and source: Tabular. * IBM880, aliases and source: Tabular. * IBM891, aliases and source: Tabular. * IBM903, aliases and source: Tabular. * IBM904, aliases and source: Tabular. * IBM905, aliases and source: Tabular. * IBM912: Tabular. * IBM918, aliases and source: Tabular. * Icon-QNX, and aliases: Icon-QNX. * IEC_P27-1, aliases and source: Tabular. * INIS, aliases and source: Tabular. * INIS-8, aliases and source: Tabular. * INIS-cyrillic, aliases and source: Tabular. * INVARIANT, aliases and source: Tabular. * irv: Tabular. * ISO-10646-UCS-2: libiconv. * ISO-10646-UCS-2, and aliases: UCS-2. * ISO-10646-UCS-4: libiconv. * ISO-10646-UCS-4, and aliases: UCS-4. * ISO-2022-CN, aliases: libiconv. * ISO-2022-CN-EXT: libiconv. * ISO-2022-JP, aliases: libiconv. * ISO-2022-JP-1: libiconv. * ISO-2022-JP-2, aliases: libiconv. * ISO-2022-KR, aliases: libiconv. * ISO-8859-1, aliases: libiconv. * ISO-8859-1, aliases and source: Tabular. * ISO-8859-10, aliases: libiconv. * ISO-8859-10, aliases and source: Tabular. * ISO-8859-13, aliases: libiconv. * ISO-8859-13, aliases and source: Tabular. * ISO-8859-14, aliases: libiconv. * ISO-8859-14, aliases and source: Tabular. * ISO-8859-15, aliases: libiconv. * ISO-8859-15, aliases and source: Tabular. * ISO-8859-16, aliases: libiconv. * ISO-8859-2, aliases: libiconv. * ISO-8859-2, aliases and source: Tabular. * ISO-8859-3, aliases: libiconv. * ISO-8859-3, aliases and source: Tabular. * ISO-8859-4, aliases: libiconv. * ISO-8859-4, aliases and source: Tabular. * ISO-8859-5, aliases: libiconv. * ISO-8859-5, aliases and source: Tabular. * ISO-8859-6, aliases: libiconv. * ISO-8859-6, aliases and source: Tabular. * ISO-8859-7, aliases: libiconv. * ISO-8859-7, aliases and source: Tabular. * ISO-8859-8, aliases: libiconv. * ISO-8859-8, aliases and source: Tabular. * ISO-8859-9, aliases: libiconv. * ISO-8859-9, aliases and source: Tabular. * iso-baltic: Tabular. * iso-celtic: Tabular. * iso-ir-10: Tabular. * iso-ir-100: Tabular. * ISO-IR-100: libiconv. * iso-ir-101: Tabular. * ISO-IR-101: libiconv. * iso-ir-102: Tabular. * iso-ir-109: Tabular. * ISO-IR-109: libiconv. * iso-ir-11: Tabular. * iso-ir-110: Tabular. * ISO-IR-110: libiconv. * iso-ir-111: Tabular. * iso-ir-121: Tabular. * iso-ir-122: Tabular. * iso-ir-123: Tabular. * iso-ir-126: Tabular. * ISO-IR-126: libiconv. * iso-ir-127: Tabular. * ISO-IR-127: libiconv. * iso-ir-13: Tabular. * iso-ir-138: Tabular. * ISO-IR-138: libiconv. * iso-ir-139: Tabular. * iso-ir-14: Tabular. * ISO-IR-14: libiconv. * iso-ir-141: Tabular. * iso-ir-143: Tabular. * iso-ir-144: Tabular. * ISO-IR-144: libiconv. * iso-ir-146: Tabular. * iso-ir-147: Tabular. * iso-ir-148: Tabular. * ISO-IR-148: libiconv. * ISO-IR-149: libiconv. * iso-ir-15: Tabular. * iso-ir-150: Tabular. * iso-ir-151: Tabular. * iso-ir-152: Tabular. * iso-ir-153: Tabular. * iso-ir-154: Tabular. * iso-ir-155: Tabular. * iso-ir-157: Tabular. * ISO-IR-157: libiconv. * iso-ir-158: Tabular. * ISO-IR-159: libiconv. * iso-ir-16: Tabular. * ISO-IR-165, aliases: libiconv. * ISO-IR-166: libiconv. * iso-ir-17: Tabular. * iso-ir-170: Tabular. * iso-ir-179: Tabular. * ISO-IR-179: libiconv. * iso-ir-179a: Tabular. * iso-ir-18: Tabular. * iso-ir-19: Tabular. * iso-ir-199: Tabular. * ISO-IR-199: libiconv. * iso-ir-2: Tabular. * iso-ir-203: Tabular. * ISO-IR-203: libiconv. * iso-ir-21: Tabular. * ISO-IR-226: libiconv. * iso-ir-25: Tabular. * iso-ir-27: Tabular. * iso-ir-37: Tabular. * iso-ir-4: Tabular. * iso-ir-47: Tabular. * iso-ir-49: Tabular. * iso-ir-50: Tabular. * iso-ir-51: Tabular. * iso-ir-54: Tabular. * iso-ir-55: Tabular. * iso-ir-57: Tabular. * ISO-IR-57: libiconv. * ISO-IR-58: libiconv. * iso-ir-6 <1>: ASCII. * iso-ir-6: Tabular. * ISO-IR-6: libiconv. * iso-ir-60: Tabular. * iso-ir-61: Tabular. * iso-ir-69: Tabular. * iso-ir-8-1: Tabular. * iso-ir-8-2: Tabular. * iso-ir-84: Tabular. * iso-ir-85: Tabular. * iso-ir-86: Tabular. * ISO-IR-87: libiconv. * iso-ir-88: Tabular. * iso-ir-89: Tabular. * iso-ir-9-1: Tabular. * iso-ir-9-2: Tabular. * iso-ir-90, not recognised by recode: Tabular. * iso-ir-93: Tabular. * iso-ir-94: Tabular. * iso-ir-95: Tabular. * iso-ir-96: Tabular. * iso-ir-98: Tabular. * ISO2022CN: libiconv. * ISO2022JP: libiconv. * ISO2022KR: libiconv. * ISO646-CA: Tabular. * ISO646-CA2: Tabular. * ISO646-CN <1>: Tabular. * ISO646-CN: libiconv. * ISO646-CU: Tabular. * ISO646-DE: Tabular. * ISO646-DK: Tabular. * ISO646-ES: Tabular. * ISO646-ES2: Tabular. * ISO646-FI: Tabular. * ISO646-FR: Tabular. * ISO646-FR1: Tabular. * ISO646-GB: Tabular. * ISO646-HU: Tabular. * ISO646-IT: Tabular. * ISO646-JP <1>: Tabular. * ISO646-JP: libiconv. * ISO646-JP-OCR-B: Tabular. * ISO646-KR: Tabular. * ISO646-NO: Tabular. * ISO646-NO2: Tabular. * ISO646-PT: Tabular. * ISO646-PT2: Tabular. * ISO646-SE: Tabular. * ISO646-SE2: Tabular. * ISO646-US <1>: Tabular. * ISO646-US: libiconv. * ISO646-YU: Tabular. * ISO646.1991-IRV: libiconv. * ISO8859-1 <1>: Tabular. * ISO8859-1: libiconv. * ISO8859-10 <1>: Tabular. * ISO8859-10: libiconv. * ISO8859-13: Tabular. * ISO8859-14: Tabular. * ISO8859-15: Tabular. * ISO8859-2 <1>: Tabular. * ISO8859-2: libiconv. * ISO8859-3 <1>: Tabular. * ISO8859-3: libiconv. * ISO8859-4 <1>: Tabular. * ISO8859-4: libiconv. * ISO8859-5 <1>: Tabular. * ISO8859-5: libiconv. * ISO8859-6 <1>: Tabular. * ISO8859-6: libiconv. * ISO8859-7 <1>: Tabular. * ISO8859-7: libiconv. * ISO8859-8 <1>: Tabular. * ISO8859-8: libiconv. * ISO8859-9 <1>: Tabular. * ISO8859-9: libiconv. * ISO8859_1: libiconv. * ISO8859_2: libiconv. * ISO8859_3: libiconv. * ISO8859_4: libiconv. * ISO8859_5: libiconv. * ISO8859_6: libiconv. * ISO8859_7: libiconv. * ISO8859_8: libiconv. * ISO8859_9: libiconv. * ISO_10367-box, aliases and source: Tabular. * ISO_10646: UCS-4. * ISO_2033-1983, aliases and source: Tabular. * ISO_5427(1981): Tabular. * ISO_5427, aliases and source: Tabular. * ISO_5427-ext, aliases and source: Tabular. * ISO_5428(1980): Tabular. * ISO_5428, aliases and source: Tabular. * ISO_646.basic(1983): Tabular. * ISO_646.basic, aliases and source: Tabular. * ISO_646.irv(1983): Tabular. * ISO_646.irv(1991): Tabular. * ISO_646.IRV(1991): libiconv. * ISO_646.irv, aliases and source: Tabular. * ISO_6937-2-25, aliases and source: Tabular. * ISO_6937-2-add, not recognised by recode: Tabular. * ISO_8859-1 <1>: Tabular. * ISO_8859-1: libiconv. * ISO_8859-1(1987) <1>: Tabular. * ISO_8859-1(1987): libiconv. * ISO_8859-10 <1>: Tabular. * ISO_8859-10: libiconv. * ISO_8859-10(1992): libiconv. * ISO_8859-10(1993): Tabular. * ISO_8859-13 <1>: Tabular. * ISO_8859-13: libiconv. * ISO_8859-13(1998): Tabular. * ISO_8859-14 <1>: Tabular. * ISO_8859-14: libiconv. * ISO_8859-14(1998) <1>: Tabular. * ISO_8859-14(1998): libiconv. * ISO_8859-15 <1>: Tabular. * ISO_8859-15: libiconv. * ISO_8859-15(1998) <1>: Tabular. * ISO_8859-15(1998): libiconv. * ISO_8859-16: libiconv. * ISO_8859-16(2000): libiconv. * ISO_8859-2 <1>: Tabular. * ISO_8859-2: libiconv. * ISO_8859-2(1987) <1>: Tabular. * ISO_8859-2(1987): libiconv. * ISO_8859-3 <1>: Tabular. * ISO_8859-3: libiconv. * ISO_8859-3(1988) <1>: Tabular. * ISO_8859-3(1988): libiconv. * ISO_8859-4 <1>: Tabular. * ISO_8859-4: libiconv. * ISO_8859-4(1988) <1>: Tabular. * ISO_8859-4(1988): libiconv. * ISO_8859-5 <1>: Tabular. * ISO_8859-5: libiconv. * ISO_8859-5(1988) <1>: Tabular. * ISO_8859-5(1988): libiconv. * ISO_8859-6 <1>: Tabular. * ISO_8859-6: libiconv. * ISO_8859-6(1987) <1>: Tabular. * ISO_8859-6(1987): libiconv. * ISO_8859-7 <1>: Tabular. * ISO_8859-7: libiconv. * ISO_8859-7(1987) <1>: Tabular. * ISO_8859-7(1987): libiconv. * ISO_8859-8 <1>: Tabular. * ISO_8859-8: libiconv. * ISO_8859-8(1988) <1>: Tabular. * ISO_8859-8(1988): libiconv. * ISO_8859-9 <1>: Tabular. * ISO_8859-9: libiconv. * ISO_8859-9(1989) <1>: Tabular. * ISO_8859-9(1989): libiconv. * ISO_8859-supp, aliases and source: Tabular. * ISO_9036: Tabular. * isoir91: Tabular. * isoir92: Tabular. * IT, aliases and source: Tabular. * JAVA: libiconv. * JIS0201: libiconv. * JIS0208: libiconv. * JIS0212: libiconv. * JIS_C6220-1969: Tabular. * JIS_C6220-1969-jp, aliases and source: Tabular. * JIS_C6220-1969-RO, aliases: libiconv. * JIS_C6220-1969-ro, aliases and source: Tabular. * JIS_C6226-1978, not recognised by recode: Tabular. * JIS_C6229-1984-a, aliases and source: Tabular. * JIS_C6229-1984-b, aliases and source: Tabular. * JIS_C6229-1984-b-add, aliases and source: Tabular. * JIS_C6229-1984-hand, aliases and source: Tabular. * JIS_C6229-1984-hand-add, aliases and source: Tabular. * JIS_C6229-1984-kana, aliases and source: Tabular. * JIS_X0201, aliases: libiconv. * JIS_X0201, aliases and source: Tabular. * JIS_X0208, aliases: libiconv. * JIS_X0208-1983: libiconv. * JIS_X0208-1990: libiconv. * JIS_X0212, aliases: libiconv. * JIS_X0212-1990: libiconv. * JIS_X0212-1990, not recognised by recode: Tabular. * JIS_X0212.1990-0: libiconv. * JISX0201-1976: libiconv. * JISX0201.1976-0: libiconv. * JISX0208.1983-0: libiconv. * JISX0208.1990-0: libiconv. * JISX0212.1990-0: libiconv. * JOHAB, aliases: libiconv. * jp: Tabular. * JP: libiconv. * jp-ocr-a: Tabular. * jp-ocr-b: Tabular. * jp-ocr-b-add: Tabular. * jp-ocr-hand: Tabular. * jp-ocr-hand-add: Tabular. * js: Tabular. * JUS_I.B1.002, aliases and source: Tabular. * JUS_I.B1.003-mac, aliases and source: Tabular. * JUS_I.B1.003-serb, aliases and source: Tabular. * Kamenicky: Others. * katakana: Tabular. * KEYBCS2: Others. * KOI-7, aliases and source: Tabular. * KOI-8, aliases and source: Tabular. * KOI-8_CS2: Others. * KOI-8_L2: Tabular. * KOI8-R, aliases: libiconv. * KOI8-R, aliases and source: Tabular. * KOI8-RU: libiconv. * KOI8-RU, aliases and source: Tabular. * KOI8-U: libiconv. * KOI8-U, aliases and source: Tabular. * koi8l2: Tabular. * KOREAN: libiconv. * KS_C_5601-1987: libiconv. * KS_C_5601-1987, not recognised by recode: Tabular. * KS_C_5601-1989: libiconv. * KSC5601.1987-0: libiconv. * KSC5636, aliases and source: Tabular. * KSC_5601, aliases: libiconv. * KSX1001(1992): libiconv. * l1: Tabular. * L1: libiconv. * l2: Tabular. * L2: libiconv. * l3: Tabular. * L3: libiconv. * l4: Tabular. * L4: libiconv. * l5: Tabular. * L5: libiconv. * L6 <1>: Tabular. * L6: libiconv. * l7: Tabular. * L7: libiconv. * l8: Tabular. * L8: libiconv. * l9: Tabular. * lap: Tabular. * LaTeX, a charset: LaTeX. * Latin-1: ISO 8859. * latin-greek, aliases and source: Tabular. * Latin-greek-1, aliases and source: Tabular. * latin-lap: Tabular. * latin1: Tabular. * LATIN1: libiconv. * latin1-2-5: Tabular. * latin2: Tabular. * LATIN2: libiconv. * latin3: Tabular. * LATIN3: libiconv. * latin4: Tabular. * LATIN4: libiconv. * latin5: Tabular. * LATIN5: libiconv. * latin6: Tabular. * LATIN6: libiconv. * latin7: Tabular. * LATIN7: libiconv. * latin8: Tabular. * LATIN8: libiconv. * latin9: Tabular. * libiconv: libiconv. * libiconv, not in requests: Charset overview. * lin: African. * lingala: African. * ltex: LaTeX. * mac <1>: Apple-Mac. * mac: Tabular. * MAC: libiconv. * mac-is, aliases and source: Tabular. * MacArabic: libiconv. * macce <1>: Apple-Mac. * macce: Tabular. * MacCentralEurope: libiconv. * MacCroatian: libiconv. * MacCyrillic: libiconv. * macedonian: Tabular. * MacGreek: libiconv. * MacHebrew: libiconv. * MacIceland: libiconv. * Macintosh: libiconv. * macintosh, a charset, and its aliases: Apple-Mac. * macintosh, aliases and source: Tabular. * macintosh_ce, aliases and source: Tabular. * macintosh_ce, and its aliases: Apple-Mac. * MacRoman, aliases: libiconv. * MacRomania: libiconv. * MacThai: libiconv. * MacTurkish: libiconv. * MacUkraine: libiconv. * mnemonic, an alias for RFC1345 charset: Tabular. * ms-ansi: Tabular. * MS-ANSI: libiconv. * ms-arab: Tabular. * MS-ARAB: libiconv. * ms-cyrl: Tabular. * MS-CYRL: libiconv. * ms-ee: Tabular. * MS-EE: libiconv. * ms-greek: Tabular. * MS-GREEK: libiconv. * ms-hebr: Tabular. * MS-HEBR: libiconv. * ms-turk: Tabular. * MS-TURK: libiconv. * MS_KANJI: libiconv. * MSDOS: IBM-PC. * MSZ_7795.3, aliases and source: Tabular. * Mule, a charset: Mule. * MuleLao-1: libiconv. * NATS-DANO, aliases and source: Tabular. * NATS-DANO-ADD, aliases and source: Tabular. * NATS-SEFI, aliases and source: Tabular. * NATS-SEFI-ADD, aliases and source: Tabular. * NC_NC00-10(81): Tabular. * NC_NC00-10, aliases and source: Tabular. * next: Tabular. * NEXTSTEP: libiconv. * NeXTSTEP, aliases and source: Tabular. * NF_Z_62-010, aliases and source: Tabular. * NF_Z_62-010_(1973), aliases and source: Tabular. * no: Tabular. * no2: Tabular. * NOS: CDC-NOS. * NS_4551-1, aliases and source: Tabular. * NS_4551-2, aliases and source: Tabular. * o1: Dump. * o2: Dump. * o4: Dump. * Octal-1: Dump. * Octal-2: Dump. * Octal-4: Dump. * os2latin1: Tabular. * pc: IBM-PC. * pcl2: Tabular. * pclatin2: Tabular. * PT, aliases and source: Tabular. * PT2, aliases and source: Tabular. * QNX, an alias for a charset: Icon-QNX. * QP: MIME. * quote-printable: MIME. * Quoted-Printable: MIME. * r8: Tabular. * R8: libiconv. * ref: Tabular. * RFC1345, a charset, and its aliases: Tabular. * RFC1866: HTML. * RFC2070: HTML. * roman8: Tabular. * ROMAN8: libiconv. * rune: UCS-2. * sami, aliases and source: Tabular. * sango: African. * se: Tabular. * se2: Tabular. * SEN_850200_B, aliases and source: Tabular. * SEN_850200_C, aliases and source: Tabular. * serbian: Tabular. * SHIFT-JIS: libiconv. * SHIFT_JIS: libiconv. * SJIS, aliases: libiconv. * SS636127: Tabular. * ST_SEV_358-88: Tabular. * swabytes: Permutations. * t-bambara: African. * t-bra: African. * t-ewondo: African. * t-fra: African. * t-francais: African. * t-fulfude: African. * t-lin: African. * t-lingala: African. * t-sango: African. * t-wolof: African. * T.101-G2, not recognised by recode: Tabular. * T.61-7bit, aliases and source: Tabular. * T.61-8bit, not recognised by recode: Tabular. * T1: Others. * TCVN, aliases: libiconv. * TCVN, for Vienamese: Vietnamese. * TCVN-5712: libiconv. * TCVN5712-1: libiconv. * TCVN5712-1(1993): libiconv. * test15: Test. * test16: Test. * test7: Test. * test8: Test. * texi: Texinfo. * Texinfo, a charset: Texinfo. * Texte: Texte. * TF-16: UTF-16. * TF-7: UTF-7. * TF-8: UTF-8. * ti: Texinfo. * TIS-620, aliases: libiconv. * TIS620: libiconv. * TIS620-0: libiconv. * TIS620.2529-1: libiconv. * TIS620.2533-0: libiconv. * TIS620.2533-1: libiconv. * tree, a special charset: Surfaces. * txte: Texte. * u2: UCS-2. * u4: UCS-4. * u6: UTF-16. * u7: UTF-7. * u8: UTF-8. * UCS: Universal. * UCS-2: UCS-2. * UCS-2, aliases: libiconv. * UCS-2-INTERNAL: libiconv. * UCS-2-SWAPPED: libiconv. * UCS-2BE, aliases: libiconv. * UCS-2LE, aliases: libiconv. * UCS-4: UCS-4. * UCS-4, aliases: libiconv. * UCS-4-INTERNAL: libiconv. * UCS-4-SWAPPED: libiconv. * UCS-4BE: libiconv. * UCS-4LE: libiconv. * UHC: libiconv. * uk: Tabular. * Unicode, an alias for UTF-16: UTF-16. * UNICODE-1-1: libiconv. * UNICODE-1-1-UTF-7: libiconv. * UNICODE-1-1-UTF-7, and aliases: UTF-7. * UNICODEBIG: libiconv. * UNICODELITTLE: libiconv. * us <1>: ASCII. * us: Tabular. * US: libiconv. * US-ASCII <1>: ASCII. * US-ASCII: Tabular. * US-ASCII, aliases: libiconv. * us-dk, not recognised by recode: Tabular. * UTF-1: Universal. * UTF-16: libiconv. * UTF-16, and aliases: UTF-16. * UTF-16BE: libiconv. * UTF-16LE: libiconv. * UTF-7: UTF-7. * UTF-7, aliases: libiconv. * UTF-8: UTF-8. * UTF-8, aliases <1>: libiconv. * UTF-8, aliases: UTF-8. * UTF-FSS: UTF-8. * UTF8: libiconv. * VIQR: Vietnamese. * VISCII: Vietnamese. * VISCII, aliases: libiconv. * VISCII1.1-1: libiconv. * VN1, maybe not available: Vietnamese. * VN2, maybe not available: Vietnamese. * VN3, maybe not available: Vietnamese. * VNI: Vietnamese. * VPS: Vietnamese. * WCHAR_T: libiconv. * WinBaltRim: Tabular. * WINBALTRIM: libiconv. * windows-1250: Tabular. * WINDOWS-1250: libiconv. * windows-1251: Tabular. * WINDOWS-1251: libiconv. * windows-1252: Tabular. * WINDOWS-1252: libiconv. * windows-1253: Tabular. * WINDOWS-1253: libiconv. * windows-1254: Tabular. * WINDOWS-1254: libiconv. * windows-1255: Tabular. * WINDOWS-1255: libiconv. * windows-1256: Tabular. * WINDOWS-1256: libiconv. * windows-1257: Tabular. * WINDOWS-1257: libiconv. * WINDOWS-1258: libiconv. * WINDOWS-874: libiconv. * wolof: African. * X0201 <1>: Tabular. * X0201: libiconv. * x0201-7: Tabular. * X0208: libiconv. * X0212: libiconv. * x1: Dump. * x2: Dump. * x4: Dump. * XML-standalone: HTML. * yu: Tabular. recode-3.6/lib/0040755000000000000000000000000007233074166012103 5ustar rootrootrecode-3.6/lib/Makefile.in0100644000000000000000000002211607233074166014147 0ustar rootroot# Makefile.in generated automatically by automake 1.4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 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. # Makefile for `recode' (own internal) library. # Copyright © 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. # François Pinard # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ CC = @CC@ CPP = @CPP@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ GLIBC21 = @GLIBC21@ LEX = @LEX@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MOFILES = @MOFILES@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ U = @U@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = gnits noinst_LIBRARIES = libreco.a noinst_HEADERS = error.h getopt.h gettext.h pathmax.h xstring.h libreco_a_SOURCES = error.c getopt.c getopt1.c xstrdup.c EXTRA_DIST = alloca.c gettext.c malloc.c realloc.c strtol.c strtoul.c INCLUDES = -I.. -I$(srcdir) libreco_a_LIBADD = @ALLOCA@ @LIBOBJS@ localedir = $(prefix)/share/locale aliaspath = $(localedir):. mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = LIBRARIES = $(noinst_LIBRARIES) DEFS = @DEFS@ -I. -I$(srcdir) -I.. CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ libreco_a_DEPENDENCIES = @ALLOCA@ @LIBOBJS@ libreco_a_OBJECTS = error.o getopt.o getopt1.o xstrdup.o AR = ar CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ HEADERS = $(noinst_HEADERS) DIST_COMMON = ChangeLog Makefile.am Makefile.in alloca.c gettext.c \ strtol.c strtoul.c DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best SOURCES = $(libreco_a_SOURCES) OBJECTS = $(libreco_a_OBJECTS) all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .lo .o .s $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps lib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status mostlyclean-noinstLIBRARIES: clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) distclean-noinstLIBRARIES: maintainer-clean-noinstLIBRARIES: .c.o: $(COMPILE) -c $< .s.o: $(COMPILE) -c $< .S.o: $(COMPILE) -c $< mostlyclean-compile: -rm -f *.o core *.core clean-compile: distclean-compile: -rm -f *.tab.c maintainer-clean-compile: .c.lo: $(LIBTOOL) --mode=compile $(COMPILE) -c $< .s.lo: $(LIBTOOL) --mode=compile $(COMPILE) -c $< .S.lo: $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: maintainer-clean-libtool: libreco.a: $(libreco_a_OBJECTS) $(libreco_a_DEPENDENCIES) -rm -f libreco.a $(AR) cru libreco.a $(libreco_a_OBJECTS) $(libreco_a_LIBADD) $(RANLIB) libreco.a tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = lib distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done error.o: error.c ../config.h error.h getopt.o: getopt.c ../config.h getopt1.o: getopt1.c ../config.h getopt.h xstrdup.o: xstrdup.c ../config.h info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall: uninstall-am all-am: Makefile $(LIBRARIES) $(HEADERS) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \ mostlyclean-libtool mostlyclean-tags \ mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-noinstLIBRARIES clean-compile clean-libtool clean-tags \ clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-noinstLIBRARIES distclean-compile \ distclean-libtool distclean-tags distclean-generic \ clean-am -rm -f libtool distclean: distclean-am maintainer-clean-am: maintainer-clean-noinstLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ maintainer-clean-tags maintainer-clean-generic \ distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \ clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile mostlyclean-libtool distclean-libtool \ clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ install-exec install-data-am install-data install-am install \ uninstall-am uninstall all-redirect all-am all installdirs \ mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean gettext.o: gettext.c $(COMPILE) -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" \ -c $(srcdir)/gettext.c gettext._o: gettext._c @rm -f _gettext.c @ln gettext._c _gettext.c $(COMPILE) -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" \ -c _gettext.c @mv _gettext.o $@ @rm _gettext.c # 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: recode-3.6/lib/ChangeLog0100644000000000000000000000461207175365070013657 0ustar rootroot2000-10-24 Bruno Haible * xmalloc.c, xalloc.h: Move to src/. * Makefile.am (noinst_HEADERS): Remove xalloc.h. (libreco_a_SOURCES): Remove xmalloc.c. Reported by Tomasz KÅ‚oczko . 2000-08-30 Bruno Haible * gettext.c (_nl_unload_domain): Enclose declaration in #ifdef _LIBC. 1999-12-28 François Pinard * Makefile.am (INCLUDES): Do not use ../intl. 1999-12-14 François Pinard * Makefile.am: Adapt to the gettext scheme used in wdiff. * gettext.c, gettext.h: New files. 1999-12-12 François Pinard * Makefile.am: Replace strtol and strtoul only when missing. Reported by Tom Hageman. 1999-06-15 François Pinard * alloca.c, malloc.c, realloc.c: New files, from elsewhere. * Makefile.am (EXTRA_DIST): Distribute them. (libreco_a_LIBADD): Uncomment. Reported by Alan J. Flavell, Alexandre Oliva, Olivier Lecarme and Peter Turcan. 1998-12-13 François Pinard * argmatch.c, argmatch.h, hash.c, hash.h: Moved away, into src. * Makefile.am: Adjusted. 1998-10-31 François Pinard * strtol.c, strtoul.c: New files, from elsewhere. * Makefile.am (libreco_a_SOURCES): Include strtoul.c. (EXTRA_DIST): Include strtol.c. 1998-10-26 François Pinard * hash.h, hash.c: New version, with tuning parameters. 1998-10-13 François Pinard * hash.c, hash.h: New, from elsewhere. * Makefile.am: Adjusted. 1998-09-30 François Pinard * Makefile.am (noinst_HEADERS): Include argmatch.h. 1998-03-31 François Pinard * Makefile.am: Rename xmalloc.h to xalloc.h. 1997-10-15 François Pinard * xmalloc.h, xstring.h: New files, from elsewhere. * Makefile.am (noinst_HEADERS): Distribute them. 1997-02-25 François Pinard * Makefile.am: Adjusted for Automake 1.1l. 1996-08-27 François Pinard * Makefile.am (noinst_HEADERS): Distribute error.h. 1996-08-24 François Pinard * Makefile.am: New file, replacing Makefile.in. 1995-07-10 François Pinard Distribution unflattened, for using GNU gettext. * Makefile.in: New file. recode-3.6/lib/Makefile.am0100644000000000000000000000307007175363630014136 0ustar rootroot# Makefile for `recode' (own internal) library. # Copyright © 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. # François Pinard # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AUTOMAKE_OPTIONS = gnits noinst_LIBRARIES = libreco.a noinst_HEADERS = error.h getopt.h gettext.h pathmax.h xstring.h libreco_a_SOURCES = error.c getopt.c getopt1.c xstrdup.c EXTRA_DIST = alloca.c gettext.c malloc.c realloc.c strtol.c strtoul.c INCLUDES = -I.. -I$(srcdir) libreco_a_LIBADD = @ALLOCA@ @LIBOBJS@ ## libreco_a_DEPENDENCIES = $(libtar_a_LIBADD) localedir = $(prefix)/share/locale aliaspath = $(localedir):. gettext.o: gettext.c $(COMPILE) -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" \ -c $(srcdir)/gettext.c gettext._o: gettext._c @rm -f _gettext.c @ln gettext._c _gettext.c $(COMPILE) -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" \ -c _gettext.c @mv _gettext.o $@ @rm _gettext.c recode-3.6/lib/alloca.c0100644000000000000000000003364507142144411013500 0ustar rootroot/* alloca.c -- allocate automatically reclaimed memory (Mostly) portable public-domain implementation -- D A Gwyn This implementation of the PWB library alloca function, which is used to allocate space off the run-time stack so that it is automatically reclaimed upon procedure exit, was inspired by discussions with J. Q. Johnson of Cornell. J.Otto Tennant contributed the Cray support. There are some preprocessor constants that can be defined when compiling for your specific system, for improved efficiency; however, the defaults should be okay. The general concept of this implementation is to keep track of all alloca-allocated blocks, and reclaim any that are found to be deeper in the stack than the current invocation. This heuristic does not reclaim storage as soon as it becomes invalid, but it will do so eventually. As a special case, alloca(0) reclaims storage without allocating any. It is a good idea to use alloca(0) in your main control loop, etc. to force garbage collection. */ #ifdef HAVE_CONFIG_H # include #endif #ifdef emacs # include "blockinput.h" #endif /* If compiling with GCC 2, this file's not needed. */ #if !defined (__GNUC__) || __GNUC__ < 2 /* If someone has defined alloca as a macro, there must be some other way alloca is supposed to work. */ # ifndef alloca # ifdef emacs # ifdef static /* actually, only want this if static is defined as "" -- this is for usg, in which emacs must undefine static in order to make unexec workable */ # ifndef STACK_DIRECTION you lose -- must know STACK_DIRECTION at compile-time # endif /* STACK_DIRECTION undefined */ # endif /* static */ # endif /* emacs */ /* If your stack is a linked list of frames, you have to provide an "address metric" ADDRESS_FUNCTION macro. */ # if defined (CRAY) && defined (CRAY_STACKSEG_END) long i00afunc (); # define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg)) # else # define ADDRESS_FUNCTION(arg) &(arg) # endif # if __STDC__ typedef void *pointer; # else typedef char *pointer; # endif # ifndef NULL # define NULL 0 # endif /* Different portions of Emacs need to call different versions of malloc. The Emacs executable needs alloca to call xmalloc, because ordinary malloc isn't protected from input signals. On the other hand, the utilities in lib-src need alloca to call malloc; some of them are very simple, and don't have an xmalloc routine. Non-Emacs programs expect this to call xmalloc. Callers below should use malloc. */ # ifndef emacs # define malloc xmalloc # endif extern pointer malloc (); /* Define STACK_DIRECTION if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ # ifndef STACK_DIRECTION # define STACK_DIRECTION 0 /* Direction unknown. */ # endif # if STACK_DIRECTION != 0 # define STACK_DIR STACK_DIRECTION /* Known at compile-time. */ # else /* STACK_DIRECTION == 0; need run-time code. */ static int stack_dir; /* 1 or -1 once known. */ # define STACK_DIR stack_dir static void find_stack_direction () { static char *addr = NULL; /* Address of first `dummy', once known. */ auto char dummy; /* To get stack address. */ if (addr == NULL) { /* Initial entry. */ addr = ADDRESS_FUNCTION (dummy); find_stack_direction (); /* Recurse once. */ } else { /* Second entry. */ if (ADDRESS_FUNCTION (dummy) > addr) stack_dir = 1; /* Stack grew upward. */ else stack_dir = -1; /* Stack grew downward. */ } } # endif /* STACK_DIRECTION == 0 */ /* An "alloca header" is used to: (a) chain together all alloca'ed blocks; (b) keep track of stack depth. It is very important that sizeof(header) agree with malloc alignment chunk size. The following default should work okay. */ # ifndef ALIGN_SIZE # define ALIGN_SIZE sizeof(double) # endif typedef union hdr { char align[ALIGN_SIZE]; /* To force sizeof(header). */ struct { union hdr *next; /* For chaining headers. */ char *deep; /* For stack depth measure. */ } h; } header; static header *last_alloca_header = NULL; /* -> last alloca header. */ /* Return a pointer to at least SIZE bytes of storage, which will be automatically reclaimed upon exit from the procedure that called alloca. Originally, this space was supposed to be taken from the current stack frame of the caller, but that method cannot be made to work for some implementations of C, for example under Gould's UTX/32. */ pointer alloca (unsigned size) { auto char probe; /* Probes stack depth: */ register char *depth = ADDRESS_FUNCTION (probe); # if STACK_DIRECTION == 0 if (STACK_DIR == 0) /* Unknown growth direction. */ find_stack_direction (); # endif /* Reclaim garbage, defined as all alloca'd storage that was allocated from deeper in the stack than currently. */ { register header *hp; /* Traverses linked list. */ # ifdef emacs BLOCK_INPUT; # endif for (hp = last_alloca_header; hp != NULL;) if ((STACK_DIR > 0 && hp->h.deep > depth) || (STACK_DIR < 0 && hp->h.deep < depth)) { register header *np = hp->h.next; free ((pointer) hp); /* Collect garbage. */ hp = np; /* -> next header. */ } else break; /* Rest are not deeper. */ last_alloca_header = hp; /* -> last valid storage. */ # ifdef emacs UNBLOCK_INPUT; # endif } if (size == 0) return NULL; /* No allocation required. */ /* Allocate combined header + user data storage. */ { register pointer new = malloc (sizeof (header) + size); /* Address of header. */ ((header *) new)->h.next = last_alloca_header; ((header *) new)->h.deep = depth; last_alloca_header = (header *) new; /* User storage begins just after header. */ return (pointer) ((char *) new + sizeof (header)); } } # if defined (CRAY) && defined (CRAY_STACKSEG_END) # ifdef DEBUG_I00AFUNC # include # endif # ifndef CRAY_STACK # define CRAY_STACK # ifndef CRAY2 /* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */ struct stack_control_header { long shgrow:32; /* Number of times stack has grown. */ long shaseg:32; /* Size of increments to stack. */ long shhwm:32; /* High water mark of stack. */ long shsize:32; /* Current size of stack (all segments). */ }; /* The stack segment linkage control information occurs at the high-address end of a stack segment. (The stack grows from low addresses to high addresses.) The initial part of the stack segment linkage control information is 0200 (octal) words. This provides for register storage for the routine which overflows the stack. */ struct stack_segment_linkage { long ss[0200]; /* 0200 overflow words. */ long sssize:32; /* Number of words in this segment. */ long ssbase:32; /* Offset to stack base. */ long:32; long sspseg:32; /* Offset to linkage control of previous segment of stack. */ long:32; long sstcpt:32; /* Pointer to task common address block. */ long sscsnm; /* Private control structure number for microtasking. */ long ssusr1; /* Reserved for user. */ long ssusr2; /* Reserved for user. */ long sstpid; /* Process ID for pid based multi-tasking. */ long ssgvup; /* Pointer to multitasking thread giveup. */ long sscray[7]; /* Reserved for Cray Research. */ long ssa0; long ssa1; long ssa2; long ssa3; long ssa4; long ssa5; long ssa6; long ssa7; long sss0; long sss1; long sss2; long sss3; long sss4; long sss5; long sss6; long sss7; }; # else /* CRAY2 */ /* The following structure defines the vector of words returned by the STKSTAT library routine. */ struct stk_stat { long now; /* Current total stack size. */ long maxc; /* Amount of contiguous space which would be required to satisfy the maximum stack demand to date. */ long high_water; /* Stack high-water mark. */ long overflows; /* Number of stack overflow ($STKOFEN) calls. */ long hits; /* Number of internal buffer hits. */ long extends; /* Number of block extensions. */ long stko_mallocs; /* Block allocations by $STKOFEN. */ long underflows; /* Number of stack underflow calls ($STKRETN). */ long stko_free; /* Number of deallocations by $STKRETN. */ long stkm_free; /* Number of deallocations by $STKMRET. */ long segments; /* Current number of stack segments. */ long maxs; /* Maximum number of stack segments so far. */ long pad_size; /* Stack pad size. */ long current_address; /* Current stack segment address. */ long current_size; /* Current stack segment size. This number is actually corrupted by STKSTAT to include the fifteen word trailer area. */ long initial_address; /* Address of initial segment. */ long initial_size; /* Size of initial segment. */ }; /* The following structure describes the data structure which trails any stack segment. I think that the description in 'asdef' is out of date. I only describe the parts that I am sure about. */ struct stk_trailer { long this_address; /* Address of this block. */ long this_size; /* Size of this block (does not include this trailer). */ long unknown2; long unknown3; long link; /* Address of trailer block of previous segment. */ long unknown5; long unknown6; long unknown7; long unknown8; long unknown9; long unknown10; long unknown11; long unknown12; long unknown13; long unknown14; }; # endif /* CRAY2 */ # endif /* not CRAY_STACK */ # ifdef CRAY2 /* Determine a "stack measure" for an arbitrary ADDRESS. I doubt that "lint" will like this much. */ static long i00afunc (long *address) { struct stk_stat status; struct stk_trailer *trailer; long *block, size; long result = 0; /* We want to iterate through all of the segments. The first step is to get the stack status structure. We could do this more quickly and more directly, perhaps, by referencing the $LM00 common block, but I know that this works. */ STKSTAT (&status); /* Set up the iteration. */ trailer = (struct stk_trailer *) (status.current_address + status.current_size - 15); /* There must be at least one stack segment. Therefore it is a fatal error if "trailer" is null. */ if (trailer == 0) abort (); /* Discard segments that do not contain our argument address. */ while (trailer != 0) { block = (long *) trailer->this_address; size = trailer->this_size; if (block == 0 || size == 0) abort (); trailer = (struct stk_trailer *) trailer->link; if ((block <= address) && (address < (block + size))) break; } /* Set the result to the offset in this segment and add the sizes of all predecessor segments. */ result = address - block; if (trailer == 0) { return result; } do { if (trailer->this_size <= 0) abort (); result += trailer->this_size; trailer = (struct stk_trailer *) trailer->link; } while (trailer != 0); /* We are done. Note that if you present a bogus address (one not in any segment), you will get a different number back, formed from subtracting the address of the first block. This is probably not what you want. */ return (result); } # else /* not CRAY2 */ /* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP. Determine the number of the cell within the stack, given the address of the cell. The purpose of this routine is to linearize, in some sense, stack addresses for alloca. */ static long i00afunc (long address) { long stkl = 0; long size, pseg, this_segment, stack; long result = 0; struct stack_segment_linkage *ssptr; /* Register B67 contains the address of the end of the current stack segment. If you (as a subprogram) store your registers on the stack and find that you are past the contents of B67, you have overflowed the segment. B67 also points to the stack segment linkage control area, which is what we are really interested in. */ stkl = CRAY_STACKSEG_END (); ssptr = (struct stack_segment_linkage *) stkl; /* If one subtracts 'size' from the end of the segment, one has the address of the first word of the segment. If this is not the first segment, 'pseg' will be nonzero. */ pseg = ssptr->sspseg; size = ssptr->sssize; this_segment = stkl - size; /* It is possible that calling this routine itself caused a stack overflow. Discard stack segments which do not contain the target address. */ while (!(this_segment <= address && address <= stkl)) { # ifdef DEBUG_I00AFUNC fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl); # endif if (pseg == 0) break; stkl = stkl - pseg; ssptr = (struct stack_segment_linkage *) stkl; size = ssptr->sssize; pseg = ssptr->sspseg; this_segment = stkl - size; } result = address - this_segment; /* If you subtract pseg from the current end of the stack, you get the address of the previous stack segment's end. This seems a little convoluted to me, but I'll bet you save a cycle somewhere. */ while (pseg != 0) { # ifdef DEBUG_I00AFUNC fprintf (stderr, "%011o %011o\n", pseg, size); # endif stkl = stkl - pseg; ssptr = (struct stack_segment_linkage *) stkl; size = ssptr->sssize; pseg = ssptr->sspseg; result += size; } return (result); } # endif /* not CRAY2 */ # endif /* CRAY */ # endif /* no alloca */ #endif /* not GCC version 2 */ recode-3.6/lib/gettext.c0100644000000000000000000017717107153265355013751 0ustar rootroot/* Begin of l10nflist.c */ /* Handle list of needed message catalogs Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1995. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if HAVE_CONFIG_H # include #endif #ifdef __GNUC__ # define alloca __builtin_alloca # define HAVE_ALLOCA 1 #else # if defined HAVE_ALLOCA_H || defined _LIBC # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca char *alloca (); # endif # endif # endif #endif #if defined HAVE_STRING_H || defined _LIBC # ifndef _GNU_SOURCE # define _GNU_SOURCE 1 # endif # include #else # include # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #if !HAVE_STRCHR && !defined _LIBC # ifndef strchr # define strchr index # endif #endif #if defined _LIBC || defined HAVE_ARGZ_H # include #endif #include #include #if defined STDC_HEADERS || defined _LIBC # include #endif /* Interrupt of l10nflist.c */ /* Begin of loadinfo.h */ /* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. */ #ifndef PARAMS # if __STDC__ # define PARAMS(args) args # else # define PARAMS(args) () # endif #endif /* Encoding of locale name parts. */ #define CEN_REVISION 1 #define CEN_SPONSOR 2 #define CEN_SPECIAL 4 #define XPG_NORM_CODESET 8 #define XPG_CODESET 16 #define TERRITORY 32 #define CEN_AUDIENCE 64 #define XPG_MODIFIER 128 #define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) #define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) struct loaded_l10nfile { const char *filename; int decided; const void *data; struct loaded_l10nfile *next; struct loaded_l10nfile *successor[1]; }; static const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset, size_t name_len)); static struct loaded_l10nfile * _nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, const char *dirlist, size_t dirlist_len, int mask, const char *language, const char *territory, const char *codeset, const char *normalized_codeset, const char *modifier, const char *special, const char *sponsor, const char *revision, const char *filename, int do_allocate)); static const char *_nl_expand_alias PARAMS ((const char *name)); static int _nl_explode_name PARAMS ((char *name, const char **language, const char **modifier, const char **territory, const char **codeset, const char **normalized_codeset, const char **special, const char **sponsor, const char **revision)); /* End of loadinfo.h */ /* Resume of l10nflist.c */ /* On some strange systems still no definition of NULL is found. Sigh! */ #ifndef NULL # if defined __STDC__ && __STDC__ # define NULL ((void *) 0) # else # define NULL 0 # endif #endif #ifdef _LIBC /* Rename the non ANSI C functions. This is required by the standard because some ANSI C functions will require linking with this object file and the name space must not be polluted. */ # ifndef stpcpy # define stpcpy(dest, src) __stpcpy(dest, src) # endif #else # ifndef HAVE_STPCPY static char *stpcpy PARAMS ((char *dest, const char *src)); # endif #endif /* Define function which are usually not available. */ #if !defined _LIBC && !defined HAVE___ARGZ_COUNT /* Returns the number of strings in ARGZ. */ static size_t argz_count__ PARAMS ((const char *argz, size_t len)); static size_t argz_count__ (argz, len) const char *argz; size_t len; { size_t count = 0; while (len > 0) { size_t part_len = strlen (argz); argz += part_len + 1; len -= part_len + 1; count++; } return count; } # undef __argz_count # define __argz_count(argz, len) argz_count__ (argz, len) #endif /* !_LIBC && !HAVE___ARGZ_COUNT */ #if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY /* Make '\0' separated arg vector ARGZ printable by converting all the '\0's except the last into the character SEP. */ static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); static void argz_stringify__ (argz, len, sep) char *argz; size_t len; int sep; { while (len > 0) { size_t part_len = strlen (argz); argz += part_len; len -= part_len + 1; if (len > 0) *argz++ = sep; } } # undef __argz_stringify # define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) #endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ #if !defined _LIBC && !defined HAVE___ARGZ_NEXT static char *argz_next__ PARAMS ((char *argz, size_t argz_len, const char *entry)); static char * argz_next__ (argz, argz_len, entry) char *argz; size_t argz_len; const char *entry; { if (entry) { if (entry < argz + argz_len) entry = strchr (entry, '\0') + 1; return entry >= argz + argz_len ? NULL : (char *) entry; } else if (argz_len > 0) return argz; else return 0; } # undef __argz_next # define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) #endif /* !_LIBC && !HAVE___ARGZ_NEXT */ /* Return number of bits set in X. */ static int pop PARAMS ((int x)); static inline int pop (x) int x; { /* We assume that no more than 16 bits are used. */ x = ((x & ~0x5555) >> 1) + (x & 0x5555); x = ((x & ~0x3333) >> 2) + (x & 0x3333); x = ((x >> 4) + x) & 0x0f0f; x = ((x >> 8) + x) & 0xff; return x; } struct loaded_l10nfile * _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, territory, codeset, normalized_codeset, modifier, special, sponsor, revision, filename, do_allocate) struct loaded_l10nfile **l10nfile_list; const char *dirlist; size_t dirlist_len; int mask; const char *language; const char *territory; const char *codeset; const char *normalized_codeset; const char *modifier; const char *special; const char *sponsor; const char *revision; const char *filename; int do_allocate; { char *abs_filename; struct loaded_l10nfile *last = NULL; struct loaded_l10nfile *retval; char *cp; size_t entries; int cnt; /* Allocate room for the full file name. */ abs_filename = (char *) malloc (dirlist_len + strlen (language) + ((mask & TERRITORY) != 0 ? strlen (territory) + 1 : 0) + ((mask & XPG_CODESET) != 0 ? strlen (codeset) + 1 : 0) + ((mask & XPG_NORM_CODESET) != 0 ? strlen (normalized_codeset) + 1 : 0) + (((mask & XPG_MODIFIER) != 0 || (mask & CEN_AUDIENCE) != 0) ? strlen (modifier) + 1 : 0) + ((mask & CEN_SPECIAL) != 0 ? strlen (special) + 1 : 0) + (((mask & CEN_SPONSOR) != 0 || (mask & CEN_REVISION) != 0) ? (1 + ((mask & CEN_SPONSOR) != 0 ? strlen (sponsor) + 1 : 0) + ((mask & CEN_REVISION) != 0 ? strlen (revision) + 1 : 0)) : 0) + 1 + strlen (filename) + 1); if (abs_filename == NULL) return NULL; retval = NULL; last = NULL; /* Construct file name. */ memcpy (abs_filename, dirlist, dirlist_len); __argz_stringify (abs_filename, dirlist_len, ':'); cp = abs_filename + (dirlist_len - 1); *cp++ = '/'; cp = stpcpy (cp, language); if ((mask & TERRITORY) != 0) { *cp++ = '_'; cp = stpcpy (cp, territory); } if ((mask & XPG_CODESET) != 0) { *cp++ = '.'; cp = stpcpy (cp, codeset); } if ((mask & XPG_NORM_CODESET) != 0) { *cp++ = '.'; cp = stpcpy (cp, normalized_codeset); } if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) { /* This component can be part of both syntaces but has different leading characters. For CEN we use `+', else `@'. */ *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; cp = stpcpy (cp, modifier); } if ((mask & CEN_SPECIAL) != 0) { *cp++ = '+'; cp = stpcpy (cp, special); } if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) { *cp++ = ','; if ((mask & CEN_SPONSOR) != 0) cp = stpcpy (cp, sponsor); if ((mask & CEN_REVISION) != 0) { *cp++ = '_'; cp = stpcpy (cp, revision); } } *cp++ = '/'; stpcpy (cp, filename); /* Look in list of already loaded domains whether it is already available. */ last = NULL; for (retval = *l10nfile_list; retval != NULL; retval = retval->next) if (retval->filename != NULL) { int compare = strcmp (retval->filename, abs_filename); if (compare == 0) /* We found it! */ break; if (compare < 0) { /* It's not in the list. */ retval = NULL; break; } last = retval; } if (retval != NULL || do_allocate == 0) { free (abs_filename); return retval; } retval = (struct loaded_l10nfile *) malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) * (1 << pop (mask)) * sizeof (struct loaded_l10nfile *))); if (retval == NULL) return NULL; retval->filename = abs_filename; retval->decided = (__argz_count (dirlist, dirlist_len) != 1 || ((mask & XPG_CODESET) != 0 && (mask & XPG_NORM_CODESET) != 0)); retval->data = NULL; if (last == NULL) { retval->next = *l10nfile_list; *l10nfile_list = retval; } else { retval->next = last->next; last->next = retval; } entries = 0; /* If the DIRLIST is a real list the RETVAL entry corresponds not to a real file. So we have to use the DIRLIST separation mechanism of the inner loop. */ cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; for (; cnt >= 0; --cnt) if ((cnt & ~mask) == 0 && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) { /* Iterate over all elements of the DIRLIST. */ char *dir = NULL; while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) != NULL) retval->successor[entries++] = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, language, territory, codeset, normalized_codeset, modifier, special, sponsor, revision, filename, 1); } retval->successor[entries] = NULL; return retval; } /* Normalize codeset name. There is no standard for the codeset names. Normalization allows the user to use any of the common names. */ static const char * _nl_normalize_codeset (codeset, name_len) const unsigned char *codeset; size_t name_len; { int len = 0; int only_digit = 1; char *retval; char *wp; size_t cnt; for (cnt = 0; cnt < name_len; ++cnt) if (isalnum (codeset[cnt])) { ++len; if (isalpha (codeset[cnt])) only_digit = 0; } retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); if (retval != NULL) { if (only_digit) wp = stpcpy (retval, "iso"); else wp = retval; for (cnt = 0; cnt < name_len; ++cnt) if (isalpha (codeset[cnt])) *wp++ = tolower (codeset[cnt]); else if (isdigit (codeset[cnt])) *wp++ = codeset[cnt]; *wp = '\0'; } return (const char *) retval; } /* End of l10nflist.c */ /* Begin of explodename.c */ /* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1995. */ #if defined STDC_HEADERS || defined _LIBC #endif #if defined HAVE_STRING_H || defined _LIBC #else #endif static int _nl_explode_name (name, language, modifier, territory, codeset, normalized_codeset, special, sponsor, revision) char *name; const char **language; const char **modifier; const char **territory; const char **codeset; const char **normalized_codeset; const char **special; const char **sponsor; const char **revision; { enum { undecided, xpg, cen } syntax; char *cp; int mask; *modifier = NULL; *territory = NULL; *codeset = NULL; *normalized_codeset = NULL; *special = NULL; *sponsor = NULL; *revision = NULL; /* Now we determine the single parts of the locale name. First look for the language. Termination symbols are `_' and `@' if we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ mask = 0; syntax = undecided; *language = cp = name; while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@' && cp[0] != '+' && cp[0] != ',') ++cp; if (*language == cp) /* This does not make sense: language has to be specified. Use this entry as it is without exploding. Perhaps it is an alias. */ cp = strchr (*language, '\0'); else if (cp[0] == '_') { /* Next is the territory. */ cp[0] = '\0'; *territory = ++cp; while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') ++cp; mask |= TERRITORY; if (cp[0] == '.') { /* Next is the codeset. */ syntax = xpg; cp[0] = '\0'; *codeset = ++cp; while (cp[0] != '\0' && cp[0] != '@') ++cp; mask |= XPG_CODESET; if (*codeset != cp && (*codeset)[0] != '\0') { *normalized_codeset = _nl_normalize_codeset (*codeset, cp - *codeset); if (strcmp (*codeset, *normalized_codeset) == 0) free ((char *) *normalized_codeset); else mask |= XPG_NORM_CODESET; } } } if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) { /* Next is the modifier. */ syntax = cp[0] == '@' ? xpg : cen; cp[0] = '\0'; *modifier = ++cp; while (syntax == cen && cp[0] != '\0' && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') ++cp; mask |= XPG_MODIFIER | CEN_AUDIENCE; } if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) { syntax = cen; if (cp[0] == '+') { /* Next is special application (CEN syntax). */ cp[0] = '\0'; *special = ++cp; while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') ++cp; mask |= CEN_SPECIAL; } if (cp[0] == ',') { /* Next is sponsor (CEN syntax). */ cp[0] = '\0'; *sponsor = ++cp; while (cp[0] != '\0' && cp[0] != '_') ++cp; mask |= CEN_SPONSOR; } if (cp[0] == '_') { /* Next is revision (CEN syntax). */ cp[0] = '\0'; *revision = ++cp; mask |= CEN_REVISION; } } /* For CEN syntax values it might be important to have the separator character in the file name, not for XPG syntax. */ if (syntax == xpg) { if (*territory != NULL && (*territory)[0] == '\0') mask &= ~TERRITORY; if (*codeset != NULL && (*codeset)[0] == '\0') mask &= ~XPG_CODESET; if (*modifier != NULL && (*modifier)[0] == '\0') mask &= ~XPG_MODIFIER; } return mask; } /* End of explodename.c */ /* Begin of loadmsgcat.c */ /* Load needed message catalogs. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. */ #include #include #if defined STDC_HEADERS || defined _LIBC #endif #if defined HAVE_UNISTD_H || defined _LIBC # include #endif #if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC # include #endif /* Interrupt of loadmsgcat.c */ /* Begin of gettext.h */ /* Internal header for GNU gettext internationalization functions. Copyright (C) 1995, 1997 Free Software Foundation, Inc. */ #ifndef _GETTEXT_H #define _GETTEXT_H 1 #include #if HAVE_LIMITS_H || _LIBC # include #endif /* The magic number of the GNU message catalog format. */ #define _MAGIC 0x950412de #define _MAGIC_SWAPPED 0xde120495 /* Revision number of the currently used .mo (binary) file format. */ #define MO_REVISION_NUMBER 0 /* The following contortions are an attempt to use the C preprocessor to determine an unsigned integral type that is 32 bits wide. An alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but doing that would require that the configure script compile and *run* the resulting executable. Locally running cross-compiled executables is usually not possible. */ #if __STDC__ # define UINT_MAX_32_BITS 4294967295U #else # define UINT_MAX_32_BITS 0xFFFFFFFF #endif /* If UINT_MAX isn't defined, assume it's a 32-bit type. This should be valid for all systems GNU cares about because that doesn't include 16-bit systems, and only modern systems (that certainly have ) have 64+-bit integral types. */ #ifndef UINT_MAX # define UINT_MAX UINT_MAX_32_BITS #endif #if UINT_MAX == UINT_MAX_32_BITS typedef unsigned nls_uint32; #else # if USHRT_MAX == UINT_MAX_32_BITS typedef unsigned short nls_uint32; # else # if ULONG_MAX == UINT_MAX_32_BITS typedef unsigned long nls_uint32; # else /* The following line is intended to throw an error. Using #error is not portable enough. */ "Cannot determine unsigned 32-bit data type." # endif # endif #endif /* Header for binary .mo file format. */ struct mo_file_header { /* The magic number. */ nls_uint32 magic; /* The revision number of the file format. */ nls_uint32 revision; /* The number of strings pairs. */ nls_uint32 nstrings; /* Offset of table with start offsets of original strings. */ nls_uint32 orig_tab_offset; /* Offset of table with start offsets of translation strings. */ nls_uint32 trans_tab_offset; /* Size of hashing table. */ nls_uint32 hash_tab_size; /* Offset of first hashing entry. */ nls_uint32 hash_tab_offset; }; struct string_desc { /* Length of addressed string. */ nls_uint32 length; /* Offset of string in file. */ nls_uint32 offset; }; #endif /* gettext.h */ /* End of gettext.h */ /* Resume of loadmsgcat.c */ /* Interrupt of loadmsgcat.c */ /* Begin of gettextP.h */ /* Header describing internals of gettext library Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. */ #ifndef _GETTEXTP_H #define _GETTEXTP_H #ifndef PARAMS # if __STDC__ # define PARAMS(args) args # else # define PARAMS(args) () # endif #endif #ifndef internal_function # define internal_function #endif #ifndef W # define W(flag, data) ((flag) ? SWAP (data) : (data)) #endif #ifdef _LIBC # include # define SWAP(i) bswap_32 (i) #else static nls_uint32 SWAP PARAMS ((nls_uint32 i)); static inline nls_uint32 SWAP (i) nls_uint32 i; { return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); } #endif struct loaded_domain { const char *data; int use_mmap; size_t mmap_size; int must_swap; nls_uint32 nstrings; struct string_desc *orig_tab; struct string_desc *trans_tab; nls_uint32 hash_size; nls_uint32 *hash_tab; }; struct binding { struct binding *next; char *domainname; char *dirname; }; static struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, char *__locale, const char *__domainname)) internal_function; static void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain)) internal_function; #ifdef _LIBC static void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) internal_function; #endif #endif /* gettextP.h */ /* End of gettextP.h */ /* Resume of loadmsgcat.c */ #ifdef _LIBC /* Rename the non ISO C functions. This is required by the standard because some ISO C functions will require linking with this object file and the name space must not be polluted. */ # define open __open # define close __close # define read __read # define mmap __mmap # define munmap __munmap #endif /* We need a sign, whether a new catalog was loaded, which can be associated with all translations. This is important if the translations are cached by one of GCC's features. */ int _nl_msg_cat_cntr = 0; /* Load the message catalogs specified by FILENAME. If it is no valid message catalog do nothing. */ static void internal_function _nl_load_domain (domain_file) struct loaded_l10nfile *domain_file; { int fd; size_t size; struct stat st; struct mo_file_header *data = (struct mo_file_header *) -1; #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC int use_mmap = 0; #endif struct loaded_domain *domain; domain_file->decided = 1; domain_file->data = NULL; /* If the record does not represent a valid locale the FILENAME might be NULL. This can happen when according to the given specification the locale file name is different for XPG and CEN syntax. */ if (domain_file->filename == NULL) return; /* Try to open the addressed file. */ fd = open (domain_file->filename, O_RDONLY); if (fd == -1) return; /* We must know about the size of the file. */ if (fstat (fd, &st) != 0 || (size = (size_t) st.st_size) != st.st_size || size < sizeof (struct mo_file_header)) { /* Something went wrong. */ close (fd); return; } #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC /* Now we are ready to load the file. If mmap() is available we try this first. If not available or it failed we try to load it. */ data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, MAP_PRIVATE, fd, 0); if (data != (struct mo_file_header *) -1) { /* mmap() call was successful. */ close (fd); use_mmap = 1; } #endif /* If the data is not yet available (i.e. mmap'ed) we try to load it manually. */ if (data == (struct mo_file_header *) -1) { size_t to_read; char *read_ptr; data = (struct mo_file_header *) malloc (size); if (data == NULL) return; to_read = size; read_ptr = (char *) data; do { long int nb = (long int) read (fd, read_ptr, to_read); if (nb == -1) { close (fd); return; } read_ptr += nb; to_read -= nb; } while (to_read > 0); close (fd); } /* Using the magic number we can test whether it really is a message catalog file. */ if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED) { /* The magic number is wrong: not a message catalog file. */ #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC if (use_mmap) munmap ((caddr_t) data, size); else #endif free (data); return; } domain_file->data = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); if (domain_file->data == NULL) return; domain = (struct loaded_domain *) domain_file->data; domain->data = (char *) data; #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC domain->use_mmap = use_mmap; #endif domain->mmap_size = size; domain->must_swap = data->magic != _MAGIC; /* Fill in the information about the available tables. */ switch (W (domain->must_swap, data->revision)) { case 0: domain->nstrings = W (domain->must_swap, data->nstrings); domain->orig_tab = (struct string_desc *) ((char *) data + W (domain->must_swap, data->orig_tab_offset)); domain->trans_tab = (struct string_desc *) ((char *) data + W (domain->must_swap, data->trans_tab_offset)); domain->hash_size = W (domain->must_swap, data->hash_tab_size); domain->hash_tab = (nls_uint32 *) ((char *) data + W (domain->must_swap, data->hash_tab_offset)); break; default: /* This is an illegal revision. */ #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ || defined _LIBC if (use_mmap) munmap ((caddr_t) data, size); else #endif free (data); free (domain); domain_file->data = NULL; return; } /* Show that one domain is changed. This might make some cached translations invalid. */ ++_nl_msg_cat_cntr; } #ifdef _LIBC static void internal_function _nl_unload_domain (domain) struct loaded_domain *domain; { if (domain->use_mmap) munmap ((caddr_t) domain->data, domain->mmap_size); else free ((void *) domain->data); free (domain); } #endif /* End of loadmsgcat.c */ /* Begin of localealias.c */ /* Handle aliases for locale names. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. */ #if defined STDC_HEADERS || defined _LIBC #else char *getenv (); # ifdef HAVE_MALLOC_H # include # else void free (); # endif #endif #if defined HAVE_STRING_H || defined _LIBC # ifndef _GNU_SOURCE # define _GNU_SOURCE 1 # endif #else # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #if !HAVE_STRCHR && !defined _LIBC # ifndef strchr # define strchr index # endif #endif #ifdef _LIBC /* Rename the non ANSI C functions. This is required by the standard because some ANSI C functions will require linking with this object file and the name space must not be polluted. */ # define strcasecmp __strcasecmp # define mempcpy __mempcpy # define HAVE_MEMPCPY 1 /* We need locking here since we can be called from different places. */ # include __libc_lock_define_initialized (static, lock); #endif /* For those loosing systems which don't have `alloca' we have to add some additional code emulating it. */ #ifdef HAVE_ALLOCA /* Nothing has to be done. */ # define ADD_BLOCK(list, address) /* nothing */ # define FREE_BLOCKS(list) /* nothing */ #else struct block_list { void *address; struct block_list *next; }; # define ADD_BLOCK(list, addr) \ do { \ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ /* If we cannot get a free block we cannot add the new element to \ the list. */ \ if (newp != NULL) { \ newp->address = (addr); \ newp->next = (list); \ (list) = newp; \ } \ } while (0) # define FREE_BLOCKS(list) \ do { \ while (list != NULL) { \ struct block_list *old = list; \ list = list->next; \ free (old); \ } \ } while (0) # undef alloca # define alloca(size) (malloc (size)) #endif /* have alloca */ struct alias_map { const char *alias; const char *value; }; static char *string_space = NULL; static size_t string_space_act = 0; static size_t string_space_max = 0; static struct alias_map *map; static size_t nmap = 0; static size_t maxmap = 0; /* Prototypes for local functions. */ static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) internal_function; static void extend_alias_table PARAMS ((void)); static int alias_compare PARAMS ((const struct alias_map *map1, const struct alias_map *map2)); static const char * _nl_expand_alias (name) const char *name; { static const char *locale_alias_path = ALIASPATH; struct alias_map *retval; const char *result = NULL; size_t added; #ifdef _LIBC __libc_lock_lock (lock); #endif do { struct alias_map item; item.alias = name; if (nmap > 0) retval = (struct alias_map *) bsearch (&item, map, nmap, sizeof (struct alias_map), (int (*) PARAMS ((const void *, const void *)) ) alias_compare); else retval = NULL; /* We really found an alias. Return the value. */ if (retval != NULL) { result = retval->value; break; } /* Perhaps we can find another alias file. */ added = 0; while (added == 0 && locale_alias_path[0] != '\0') { const char *start; while (locale_alias_path[0] == ':') ++locale_alias_path; start = locale_alias_path; while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':') ++locale_alias_path; if (start < locale_alias_path) added = read_alias_file (start, locale_alias_path - start); } } while (added != 0); #ifdef _LIBC __libc_lock_unlock (lock); #endif return result; } static size_t internal_function read_alias_file (fname, fname_len) const char *fname; int fname_len; { #ifndef HAVE_ALLOCA struct block_list *block_list = NULL; #endif FILE *fp; char *full_fname; size_t added; static const char aliasfile[] = "/locale.alias"; full_fname = (char *) alloca (fname_len + sizeof aliasfile); ADD_BLOCK (block_list, full_fname); #ifdef HAVE_MEMPCPY mempcpy (mempcpy (full_fname, fname, fname_len), aliasfile, sizeof aliasfile); #else memcpy (full_fname, fname, fname_len); memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); #endif fp = fopen (full_fname, "r"); if (fp == NULL) { FREE_BLOCKS (block_list); return 0; } added = 0; while (!feof (fp)) { /* It is a reasonable approach to use a fix buffer here because a) we are only interested in the first two fields b) these fields must be usable as file names and so must not be that long */ unsigned char buf[BUFSIZ]; unsigned char *alias; unsigned char *value; unsigned char *cp; if (fgets (buf, sizeof buf, fp) == NULL) /* EOF reached. */ break; /* Possibly not the whole line fits into the buffer. Ignore the rest of the line. */ if (strchr (buf, '\n') == NULL) { char altbuf[BUFSIZ]; do if (fgets (altbuf, sizeof altbuf, fp) == NULL) /* Make sure the inner loop will be left. The outer loop will exit at the `feof' test. */ break; while (strchr (altbuf, '\n') == NULL); } cp = buf; /* Ignore leading white space. */ while (isspace (cp[0])) ++cp; /* A leading '#' signals a comment line. */ if (cp[0] != '\0' && cp[0] != '#') { alias = cp++; while (cp[0] != '\0' && !isspace (cp[0])) ++cp; /* Terminate alias name. */ if (cp[0] != '\0') *cp++ = '\0'; /* Now look for the beginning of the value. */ while (isspace (cp[0])) ++cp; if (cp[0] != '\0') { size_t alias_len; size_t value_len; value = cp++; while (cp[0] != '\0' && !isspace (cp[0])) ++cp; /* Terminate value. */ if (cp[0] == '\n') { /* This has to be done to make the following test for the end of line possible. We are looking for the terminating '\n' which do not overwrite here. */ *cp++ = '\0'; *cp = '\n'; } else if (cp[0] != '\0') *cp++ = '\0'; if (nmap >= maxmap) extend_alias_table (); alias_len = strlen (alias) + 1; value_len = strlen (value) + 1; if (string_space_act + alias_len + value_len > string_space_max) { /* Increase size of memory pool. */ size_t new_size = (string_space_max + (alias_len + value_len > 1024 ? alias_len + value_len : 1024)); char *new_pool = (char *) realloc (string_space, new_size); if (new_pool == NULL) { FREE_BLOCKS (block_list); return added; } string_space = new_pool; string_space_max = new_size; } map[nmap].alias = memcpy (&string_space[string_space_act], alias, alias_len); string_space_act += alias_len; map[nmap].value = memcpy (&string_space[string_space_act], value, value_len); string_space_act += value_len; ++nmap; ++added; } } } /* Should we test for ferror()? I think we have to silently ignore errors. --drepper */ fclose (fp); if (added > 0) qsort (map, nmap, sizeof (struct alias_map), (int (*) PARAMS ((const void *, const void *))) alias_compare); FREE_BLOCKS (block_list); return added; } static void extend_alias_table () { size_t new_size; struct alias_map *new_map; new_size = maxmap == 0 ? 100 : 2 * maxmap; new_map = (struct alias_map *) realloc (map, (new_size * sizeof (struct alias_map))); if (new_map == NULL) /* Simply don't extend: we don't have any more core. */ return; map = new_map; maxmap = new_size; } #ifdef _LIBC static void __attribute__ ((unused)) free_mem (void) { if (string_space != NULL) free (string_space); if (map != NULL) free (map); } text_set_element (__libc_subfreeres, free_mem); #endif static int alias_compare (map1, map2) const struct alias_map *map1; const struct alias_map *map2; { #if defined _LIBC || defined HAVE_STRCASECMP return strcasecmp (map1->alias, map2->alias); #else const unsigned char *p1 = (const unsigned char *) map1->alias; const unsigned char *p2 = (const unsigned char *) map2->alias; unsigned char c1, c2; if (p1 == p2) return 0; do { /* I know this seems to be odd but the tolower() function in some systems libc cannot handle nonalpha characters. */ c1 = isupper (*p1) ? tolower (*p1) : *p1; c2 = isupper (*p2) ? tolower (*p2) : *p2; if (c1 == '\0') break; ++p1; ++p2; } while (c1 == c2); return c1 - c2; #endif } /* End of localealias.c */ /* Begin of finddomain.c */ /* Handle list of needed message catalogs Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. */ #include #if defined STDC_HEADERS || defined _LIBC #else # ifdef HAVE_MALLOC_H # else void free (); # endif #endif #if defined HAVE_STRING_H || defined _LIBC #else # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #if !HAVE_STRCHR && !defined _LIBC # ifndef strchr # define strchr index # endif #endif #if defined HAVE_UNISTD_H || defined _LIBC #endif #ifdef _LIBC # include #else # include "gettext.h" #endif /* List of already loaded domains. */ static struct loaded_l10nfile *_nl_loaded_domains; /* Return a data structure describing the message catalog described by the DOMAINNAME and CATEGORY parameters with respect to the currently established bindings. */ static struct loaded_l10nfile * internal_function _nl_find_domain (dirname, locale, domainname) const char *dirname; char *locale; const char *domainname; { struct loaded_l10nfile *retval; const char *language; const char *modifier; const char *territory; const char *codeset; const char *normalized_codeset; const char *special; const char *sponsor; const char *revision; const char *alias_value; int mask; /* LOCALE can consist of up to four recognized parts for the XPG syntax: language[_territory[.codeset]][@modifier] and six parts for the CEN syntax: language[_territory][+audience][+special][,[sponsor][_revision]] Beside the first part all of them are allowed to be missing. If the full specified locale is not found, the less specific one are looked for. The various parts will be stripped off according to the following order: (1) revision (2) sponsor (3) special (4) codeset (5) normalized codeset (6) territory (7) audience/modifier */ /* If we have already tested for this locale entry there has to be one data set in the list of loaded domains. */ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, strlen (dirname) + 1, 0, locale, NULL, NULL, NULL, NULL, NULL, NULL, NULL, domainname, 0); if (retval != NULL) { /* We know something about this locale. */ int cnt; if (retval->decided == 0) _nl_load_domain (retval); if (retval->data != NULL) return retval; for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) { if (retval->successor[cnt]->decided == 0) _nl_load_domain (retval->successor[cnt]); if (retval->successor[cnt]->data != NULL) break; } return cnt >= 0 ? retval : NULL; /* NOTREACHED */ } /* See whether the locale value is an alias. If yes its value *overwrites* the alias name. No test for the original value is done. */ alias_value = _nl_expand_alias (locale); if (alias_value != NULL) { #if defined _LIBC || defined HAVE_STRDUP locale = strdup (alias_value); if (locale == NULL) return NULL; #else size_t len = strlen (alias_value) + 1; locale = (char *) malloc (len); if (locale == NULL) return NULL; memcpy (locale, alias_value, len); #endif } /* Now we determine the single parts of the locale name. First look for the language. Termination symbols are `_' and `@' if we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ mask = _nl_explode_name (locale, &language, &modifier, &territory, &codeset, &normalized_codeset, &special, &sponsor, &revision); /* Create all possible locale entries which might be interested in generalization. */ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, strlen (dirname) + 1, mask, language, territory, codeset, normalized_codeset, modifier, special, sponsor, revision, domainname, 1); if (retval == NULL) /* This means we are out of core. */ return NULL; if (retval->decided == 0) _nl_load_domain (retval); if (retval->data == NULL) { int cnt; for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) { if (retval->successor[cnt]->decided == 0) _nl_load_domain (retval->successor[cnt]); if (retval->successor[cnt]->data != NULL) break; } } /* The room for an alias was dynamically allocated. Free it now. */ if (alias_value != NULL) free (locale); return retval; } #ifdef _LIBC static void __attribute__ ((unused)) free_mem (void) { struct loaded_l10nfile *runp = _nl_loaded_domains; while (runp != NULL) { struct loaded_l10nfile *here = runp; if (runp->data != NULL) _nl_unload_domain ((struct loaded_domain *) runp->data); runp = runp->next; free (here); } } text_set_element (__libc_subfreeres, free_mem); #endif /* End of finddomain.c */ /* Begin of dcgettext.c */ /* Implementation of the dcgettext(3) function. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. */ #ifndef errno extern int errno; #endif #ifndef __set_errno # define __set_errno(val) errno = (val) #endif #if defined STDC_HEADERS || defined _LIBC #else char *getenv (); # ifdef HAVE_MALLOC_H # else void free (); # endif #endif #if defined HAVE_STRING_H || defined _LIBC # ifndef _GNU_SOURCE # define _GNU_SOURCE 1 # endif #else #endif #if !HAVE_STRCHR && !defined _LIBC # ifndef strchr # define strchr index # endif #endif #if defined HAVE_UNISTD_H || defined _LIBC #endif #ifdef _LIBC #else #endif /* Interrupt of dcgettext.c */ /* Begin of hash-string.h */ /* Implements a string hashing function. Copyright (C) 1995, 1997 Free Software Foundation, Inc. */ #ifndef PARAMS # if __STDC__ # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif #endif /* We assume to have `unsigned long int' value with at least 32 bits. */ #define HASHWORDBITS 32 /* Defines the so called `hashpjw' function by P.J. Weinberger [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, 1986, 1987 Bell Telephone Laboratories, Inc.] */ static unsigned long hash_string PARAMS ((const char *__str_param)); static inline unsigned long hash_string (str_param) const char *str_param; { unsigned long int hval, g; const char *str = str_param; /* Compute the hash value for the given string. */ hval = 0; while (*str != '\0') { hval <<= 4; hval += (unsigned long) *str++; g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4)); if (g != 0) { hval ^= g >> (HASHWORDBITS - 8); hval ^= g; } } return hval; } /* End of hash-string.h */ /* Resume of dcgettext.c */ #ifdef _LIBC /* Rename the non ANSI C functions. This is required by the standard because some ANSI C functions will require linking with this object file and the name space must not be polluted. */ # define getcwd __getcwd # ifndef stpcpy # define stpcpy __stpcpy # endif #else # if !defined HAVE_GETCWD char *getwd (); # define getcwd(buf, max) getwd (buf) # else char *getcwd (); # endif # ifndef HAVE_STPCPY static char *stpcpy PARAMS ((char *dest, const char *src)); # endif #endif /* Amount to increase buffer size by in each try. */ #define PATH_INCR 32 /* The following is from pathmax.h. */ /* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define PATH_MAX but might cause redefinition warnings when sys/param.h is later included (as on MORE/BSD 4.3). */ #if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) #endif #ifndef _POSIX_PATH_MAX # define _POSIX_PATH_MAX 255 #endif #if !defined(PATH_MAX) && defined(_PC_PATH_MAX) # define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) #endif /* Don't include sys/param.h if it already has been. */ #if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) # include #endif #if !defined(PATH_MAX) && defined(MAXPATHLEN) # define PATH_MAX MAXPATHLEN #endif #ifndef PATH_MAX # define PATH_MAX _POSIX_PATH_MAX #endif /* XPG3 defines the result of `setlocale (category, NULL)' as: ``Directs `setlocale()' to query `category' and return the current setting of `local'.'' However it does not specify the exact format. And even worse: POSIX defines this not at all. So we can use this feature only on selected system (e.g. those using GNU C Library). */ #ifdef _LIBC # define HAVE_LOCALE_NULL #endif /* Name of the default domain used for gettext(3) prior any call to textdomain(3). The default value for this is "messages". */ static const char _nl_default_default_domain[] = "messages"; /* Value used as the default domain for gettext(3). */ static const char *_nl_current_default_domain = _nl_default_default_domain; /* Contains the default location of the message catalogs. */ static const char _nl_default_dirname[] = LOCALEDIR; /* List with bindings of specific domains created by bindtextdomain() calls. */ static struct binding *_nl_domain_bindings; /* Prototypes for local functions. */ static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file, const char *msgid)) internal_function; static const char *category_to_name PARAMS ((int category)) internal_function; static const char *guess_category_value PARAMS ((int category, const char *categoryname)) internal_function; /* For those loosing systems which don't have `alloca' we have to add some additional code emulating it. */ #ifdef HAVE_ALLOCA /* Nothing has to be done. */ # define ADD_BLOCK(list, address) /* nothing */ # define FREE_BLOCKS(list) /* nothing */ #else struct block_list { void *address; struct block_list *next; }; # define ADD_BLOCK(list, addr) \ do { \ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ /* If we cannot get a free block we cannot add the new element to \ the list. */ \ if (newp != NULL) { \ newp->address = (addr); \ newp->next = (list); \ (list) = newp; \ } \ } while (0) # define FREE_BLOCKS(list) \ do { \ while (list != NULL) { \ struct block_list *old = list; \ list = list->next; \ free (old); \ } \ } while (0) # undef alloca # define alloca(size) (malloc (size)) #endif /* have alloca */ /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define DCGETTEXT __dcgettext #else # define DCGETTEXT dcgettext__ #endif /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY locale. */ char * DCGETTEXT (domainname, msgid, category) const char *domainname; const char *msgid; int category; { #ifndef HAVE_ALLOCA struct block_list *block_list = NULL; #endif struct loaded_l10nfile *domain; struct binding *binding; const char *categoryname; const char *categoryvalue; char *dirname, *xdomainname; char *single_locale; char *retval; int saved_errno = errno; /* If no real MSGID is given return NULL. */ if (msgid == NULL) return NULL; /* If DOMAINNAME is NULL, we are interested in the default domain. If CATEGORY is not LC_MESSAGES this might not make much sense but the defintion left this undefined. */ if (domainname == NULL) domainname = _nl_current_default_domain; /* First find matching binding. */ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) { int compare = strcmp (domainname, binding->domainname); if (compare == 0) /* We found it! */ break; if (compare < 0) { /* It is not in the list. */ binding = NULL; break; } } if (binding == NULL) dirname = (char *) _nl_default_dirname; else if (binding->dirname[0] == '/') dirname = binding->dirname; else { /* We have a relative path. Make it absolute now. */ size_t dirname_len = strlen (binding->dirname) + 1; size_t path_max; char *ret; path_max = (unsigned) PATH_MAX; path_max += 2; /* The getcwd docs say to do this. */ dirname = (char *) alloca (path_max + dirname_len); ADD_BLOCK (block_list, dirname); __set_errno (0); while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE) { path_max += PATH_INCR; dirname = (char *) alloca (path_max + dirname_len); ADD_BLOCK (block_list, dirname); __set_errno (0); } if (ret == NULL) { /* We cannot get the current working directory. Don't signal an error but simply return the default string. */ FREE_BLOCKS (block_list); __set_errno (saved_errno); return (char *) msgid; } stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); } /* Now determine the symbolic name of CATEGORY and its value. */ categoryname = category_to_name (category); categoryvalue = guess_category_value (category, categoryname); xdomainname = (char *) alloca (strlen (categoryname) + strlen (domainname) + 5); ADD_BLOCK (block_list, xdomainname); stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), domainname), ".mo"); /* Creating working area. */ single_locale = (char *) alloca (strlen (categoryvalue) + 1); ADD_BLOCK (block_list, single_locale); /* Search for the given string. This is a loop because we perhaps got an ordered list of languages to consider for th translation. */ while (1) { /* Make CATEGORYVALUE point to the next element of the list. */ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') ++categoryvalue; if (categoryvalue[0] == '\0') { /* The whole contents of CATEGORYVALUE has been searched but no valid entry has been found. We solve this situation by implicitly appending a "C" entry, i.e. no translation will take place. */ single_locale[0] = 'C'; single_locale[1] = '\0'; } else { char *cp = single_locale; while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') *cp++ = *categoryvalue++; *cp = '\0'; } /* If the current locale value is C (or POSIX) we don't load a domain. Return the MSGID. */ if (strcmp (single_locale, "C") == 0 || strcmp (single_locale, "POSIX") == 0) { FREE_BLOCKS (block_list); __set_errno (saved_errno); return (char *) msgid; } /* Find structure describing the message catalog matching the DOMAINNAME and CATEGORY. */ domain = _nl_find_domain (dirname, single_locale, xdomainname); if (domain != NULL) { retval = find_msg (domain, msgid); if (retval == NULL) { int cnt; for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) { retval = find_msg (domain->successor[cnt], msgid); if (retval != NULL) break; } } if (retval != NULL) { FREE_BLOCKS (block_list); __set_errno (saved_errno); return retval; } } } /* NOTREACHED */ } #ifdef _LIBC /* Alias for function name in GNU C Library. */ #endif static char * internal_function find_msg (domain_file, msgid) struct loaded_l10nfile *domain_file; const char *msgid; { size_t top, act, bottom; struct loaded_domain *domain; if (domain_file->decided == 0) _nl_load_domain (domain_file); if (domain_file->data == NULL) return NULL; domain = (struct loaded_domain *) domain_file->data; /* Locate the MSGID and its translation. */ if (domain->hash_size > 2 && domain->hash_tab != NULL) { /* Use the hashing table. */ nls_uint32 len = strlen (msgid); nls_uint32 hash_val = hash_string (msgid); nls_uint32 idx = hash_val % domain->hash_size; nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); if (nstr == 0) /* Hash table entry is empty. */ return NULL; if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len && strcmp (msgid, domain->data + W (domain->must_swap, domain->orig_tab[nstr - 1].offset)) == 0) return (char *) domain->data + W (domain->must_swap, domain->trans_tab[nstr - 1].offset); while (1) { if (idx >= domain->hash_size - incr) idx -= domain->hash_size - incr; else idx += incr; nstr = W (domain->must_swap, domain->hash_tab[idx]); if (nstr == 0) /* Hash table entry is empty. */ return NULL; if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len && strcmp (msgid, domain->data + W (domain->must_swap, domain->orig_tab[nstr - 1].offset)) == 0) return (char *) domain->data + W (domain->must_swap, domain->trans_tab[nstr - 1].offset); } /* NOTREACHED */ } /* Now we try the default method: binary search in the sorted array of messages. */ bottom = 0; top = domain->nstrings; while (bottom < top) { int cmp_val; act = (bottom + top) / 2; cmp_val = strcmp (msgid, domain->data + W (domain->must_swap, domain->orig_tab[act].offset)); if (cmp_val < 0) top = act; else if (cmp_val > 0) bottom = act + 1; else break; } /* If an translation is found return this. */ return bottom >= top ? NULL : (char *) domain->data + W (domain->must_swap, domain->trans_tab[act].offset); } /* Return string representation of locale CATEGORY. */ static const char * internal_function category_to_name (category) int category; { const char *retval; switch (category) { #ifdef LC_COLLATE case LC_COLLATE: retval = "LC_COLLATE"; break; #endif #ifdef LC_CTYPE case LC_CTYPE: retval = "LC_CTYPE"; break; #endif #ifdef LC_MONETARY case LC_MONETARY: retval = "LC_MONETARY"; break; #endif #ifdef LC_NUMERIC case LC_NUMERIC: retval = "LC_NUMERIC"; break; #endif #ifdef LC_TIME case LC_TIME: retval = "LC_TIME"; break; #endif #ifdef LC_MESSAGES case LC_MESSAGES: retval = "LC_MESSAGES"; break; #endif #ifdef LC_RESPONSE case LC_RESPONSE: retval = "LC_RESPONSE"; break; #endif #ifdef LC_ALL case LC_ALL: /* This might not make sense but is perhaps better than any other value. */ retval = "LC_ALL"; break; #endif default: /* If you have a better idea for a default value let me know. */ retval = "LC_XXX"; } return retval; } /* Guess value of current locale from value of the environment variables. */ static const char * internal_function guess_category_value (category, categoryname) int category; const char *categoryname; { const char *retval; /* The highest priority value is the `LANGUAGE' environment variable. This is a GNU extension. */ retval = getenv ("LANGUAGE"); if (retval != NULL && retval[0] != '\0') return retval; /* `LANGUAGE' is not set. So we have to proceed with the POSIX methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some systems this can be done by the `setlocale' function itself. */ #if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL return setlocale (category, NULL); #else /* Setting of LC_ALL overwrites all other. */ retval = getenv ("LC_ALL"); if (retval != NULL && retval[0] != '\0') return retval; /* Next comes the name of the desired category. */ retval = getenv (categoryname); if (retval != NULL && retval[0] != '\0') return retval; /* Last possibility is the LANG environment variable. */ retval = getenv ("LANG"); if (retval != NULL && retval[0] != '\0') return retval; /* We use C as the default domain. POSIX says this is implementation defined. */ return "C"; #endif } /* We don't want libintl.a to depend on any other library. So we avoid the non-standard function stpcpy. In GNU C Library this function is available, though. Also allow the symbol HAVE_STPCPY to be defined. */ #if !_LIBC && !HAVE_STPCPY static char * stpcpy (dest, src) char *dest; const char *src; { while ((*dest++ = *src++) != '\0') /* Do nothing. */ ; return dest - 1; } #endif #ifdef _LIBC /* If we want to free all resources we have to do some work at program's end. */ static void __attribute__ ((unused)) free_mem (void) { struct binding *runp; for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next) { free (runp->domainname); if (runp->dirname != _nl_default_dirname) /* Yes, this is a pointer comparison. */ free (runp->dirname); } if (_nl_current_default_domain != _nl_default_default_domain) /* Yes, again a pointer comparison. */ free ((char *) _nl_current_default_domain); } text_set_element (__libc_subfreeres, free_mem); #endif /* End of dcgettext.c */ /* Begin of bindtextdom.c */ /* Implementation of the bindtextdomain(3) function Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. */ #if defined STDC_HEADERS || defined _LIBC #else # ifdef HAVE_MALLOC_H # else void free (); # endif #endif #if defined HAVE_STRING_H || defined _LIBC #else # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #ifdef _LIBC #else #endif /* Contains the default location of the message catalogs. */ static const char _nl_default_dirname[]; /* List with bindings of specific domains. */ static struct binding *_nl_domain_bindings; /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define BINDTEXTDOMAIN __bindtextdomain # ifndef strdup # define strdup(str) __strdup (str) # endif #else # define BINDTEXTDOMAIN bindtextdomain__ #endif /* Specify that the DOMAINNAME message catalog will be found in DIRNAME rather than in the system locale data base. */ static char * BINDTEXTDOMAIN (domainname, dirname) const char *domainname; const char *dirname; { struct binding *binding; /* Some sanity checks. */ if (domainname == NULL || domainname[0] == '\0') return NULL; for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) { int compare = strcmp (domainname, binding->domainname); if (compare == 0) /* We found it! */ break; if (compare < 0) { /* It is not in the list. */ binding = NULL; break; } } if (dirname == NULL) /* The current binding has be to returned. */ return binding == NULL ? (char *) _nl_default_dirname : binding->dirname; if (binding != NULL) { /* The domain is already bound. If the new value and the old one are equal we simply do nothing. Otherwise replace the old binding. */ if (strcmp (dirname, binding->dirname) != 0) { char *new_dirname; if (strcmp (dirname, _nl_default_dirname) == 0) new_dirname = (char *) _nl_default_dirname; else { #if defined _LIBC || defined HAVE_STRDUP new_dirname = strdup (dirname); if (new_dirname == NULL) return NULL; #else size_t len = strlen (dirname) + 1; new_dirname = (char *) malloc (len); if (new_dirname == NULL) return NULL; memcpy (new_dirname, dirname, len); #endif } if (binding->dirname != _nl_default_dirname) free (binding->dirname); binding->dirname = new_dirname; } } else { /* We have to create a new binding. */ #if !defined _LIBC && !defined HAVE_STRDUP size_t len; #endif struct binding *new_binding = (struct binding *) malloc (sizeof (*new_binding)); if (new_binding == NULL) return NULL; #if defined _LIBC || defined HAVE_STRDUP new_binding->domainname = strdup (domainname); if (new_binding->domainname == NULL) return NULL; #else len = strlen (domainname) + 1; new_binding->domainname = (char *) malloc (len); if (new_binding->domainname == NULL) return NULL; memcpy (new_binding->domainname, domainname, len); #endif if (strcmp (dirname, _nl_default_dirname) == 0) new_binding->dirname = (char *) _nl_default_dirname; else { #if defined _LIBC || defined HAVE_STRDUP new_binding->dirname = strdup (dirname); if (new_binding->dirname == NULL) return NULL; #else len = strlen (dirname) + 1; new_binding->dirname = (char *) malloc (len); if (new_binding->dirname == NULL) return NULL; memcpy (new_binding->dirname, dirname, len); #endif } /* Now enqueue it. */ if (_nl_domain_bindings == NULL || strcmp (domainname, _nl_domain_bindings->domainname) < 0) { new_binding->next = _nl_domain_bindings; _nl_domain_bindings = new_binding; } else { binding = _nl_domain_bindings; while (binding->next != NULL && strcmp (domainname, binding->next->domainname) > 0) binding = binding->next; new_binding->next = binding->next; binding->next = new_binding; } binding = new_binding; } return binding->dirname; } #ifdef _LIBC /* Alias for function name in GNU C Library. */ #endif /* End of bindtextdom.c */ /* Begin of dgettext.c */ /* Implementation of the dgettext(3) function Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. */ #if defined HAVE_LOCALE_H || defined _LIBC # include #endif #ifdef _LIBC #else #endif /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define DGETTEXT __dgettext # define DCGETTEXT __dcgettext #else # define DGETTEXT dgettext__ # define DCGETTEXT dcgettext__ #endif /* Look up MSGID in the DOMAINNAME message catalog of the current LC_MESSAGES locale. */ static char * DGETTEXT (domainname, msgid) const char *domainname; const char *msgid; { return DCGETTEXT (domainname, msgid, LC_MESSAGES); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ #endif /* End of dgettext.c */ /* Begin of gettext.c */ /* Implementation of gettext(3) function. Copyright (C) 1995, 1997 Free Software Foundation, Inc. */ #ifdef _LIBC # define __need_NULL # include #else # ifdef STDC_HEADERS # include /* Just for NULL. */ # else # ifdef HAVE_STRING_H # else # define NULL ((void *) 0) # endif # endif #endif #ifdef _LIBC #else #endif /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define GETTEXT __gettext # define DGETTEXT __dgettext #else # define GETTEXT gettext__ # define DGETTEXT dgettext__ #endif /* Look up MSGID in the current default message catalog for the current LC_MESSAGES locale. If not found, returns MSGID itself (the default text). */ static char * GETTEXT (msgid) const char *msgid; { return DGETTEXT (NULL, msgid); } #ifdef _LIBC /* Alias for function name in GNU C Library. */ #endif /* End of gettext.c */ /* Begin of textdomain.c */ /* Implementation of the textdomain(3) function. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Written by Ulrich Drepper , 1995. */ #if defined STDC_HEADERS || defined _LIBC #endif #if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC #else # ifndef memcpy # define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) # endif #endif #ifdef _LIBC #else #endif /* Name of the default text domain. */ static const char _nl_default_default_domain[]; /* Default text domain in which entries for gettext(3) are to be found. */ static const char *_nl_current_default_domain; /* Names for the libintl functions are a problem. They must not clash with existing names and they should follow ANSI C. But this source code is also used in GNU C Library where the names have a __ prefix. So we have to make a difference here. */ #ifdef _LIBC # define TEXTDOMAIN __textdomain # ifndef strdup # define strdup(str) __strdup (str) # endif #else # define TEXTDOMAIN textdomain__ #endif /* Set the current default message catalog to DOMAINNAME. If DOMAINNAME is null, return the current default. If DOMAINNAME is "", reset to the default of "messages". */ static char * TEXTDOMAIN (domainname) const char *domainname; { char *old; /* A NULL pointer requests the current setting. */ if (domainname == NULL) return (char *) _nl_current_default_domain; old = (char *) _nl_current_default_domain; /* If domain name is the null string set to default domain "messages". */ if (domainname[0] == '\0' || strcmp (domainname, _nl_default_default_domain) == 0) _nl_current_default_domain = _nl_default_default_domain; else { /* If the following malloc fails `_nl_current_default_domain' will be NULL. This value will be returned and so signals we are out of core. */ #if defined _LIBC || defined HAVE_STRDUP _nl_current_default_domain = strdup (domainname); #else size_t len = strlen (domainname) + 1; char *cp = (char *) malloc (len); if (cp != NULL) memcpy (cp, domainname, len); _nl_current_default_domain = cp; #endif } if (old != _nl_default_default_domain) free (old); return (char *) _nl_current_default_domain; } #ifdef _LIBC /* Alias for function name in GNU C Library. */ #endif /* End of textdomain.c */ /* Begin of intl-compat.c */ /* intl-compat.c - Stub functions to call gettext functions from GNU gettext Library. Copyright (C) 1995 Software Foundation, Inc. */ #undef gettext #undef dgettext #undef dcgettext #undef textdomain #undef bindtextdomain char * bindtextdomain (domainname, dirname) const char *domainname; const char *dirname; { return bindtextdomain__ (domainname, dirname); } char * dcgettext (domainname, msgid, category) const char *domainname; const char *msgid; int category; { return dcgettext__ (domainname, msgid, category); } char * dgettext (domainname, msgid) const char *domainname; const char *msgid; { return dgettext__ (domainname, msgid); } char * gettext (msgid) const char *msgid; { return gettext__ (msgid); } char * textdomain (domainname) const char *domainname; { return textdomain__ (domainname); } /* End of intl-compat.c */ recode-3.6/lib/strtol.c0100644000000000000000000002635507142144410013573 0ustar rootroot/* Convert string representation of a number into an integer value. Copyright (C) 1991, 92, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if HAVE_CONFIG_H # include #endif #ifdef _LIBC # define USE_NUMBER_GROUPING # define STDC_HEADERS # define HAVE_LIMITS_H #endif #include #include #ifndef errno extern int errno; #endif #ifndef __set_errno # define __set_errno(Val) errno = (Val) #endif #ifdef HAVE_LIMITS_H # include #endif #ifdef STDC_HEADERS # include # include # include #else # ifndef NULL # define NULL 0 # endif #endif #ifdef USE_NUMBER_GROUPING # include "../locale/localeinfo.h" #endif /* Nonzero if we are defining `strtoul' or `strtoull', operating on unsigned integers. */ #ifndef UNSIGNED # define UNSIGNED 0 # define INT LONG int #else # define INT unsigned LONG int #endif /* Determine the name. */ #ifdef USE_IN_EXTENDED_LOCALE_MODEL # if UNSIGNED # ifdef USE_WIDE_CHAR # ifdef QUAD # define strtol __wcstoull_l # else # define strtol __wcstoul_l # endif # else # ifdef QUAD # define strtol __strtoull_l # else # define strtol __strtoul_l # endif # endif # else # ifdef USE_WIDE_CHAR # ifdef QUAD # define strtol __wcstoll_l # else # define strtol __wcstol_l # endif # else # ifdef QUAD # define strtol __strtoll_l # else # define strtol __strtol_l # endif # endif # endif #else # if UNSIGNED # ifdef USE_WIDE_CHAR # ifdef QUAD # define strtol wcstoull # else # define strtol wcstoul # endif # else # ifdef QUAD # define strtol strtoull # else # define strtol strtoul # endif # endif # else # ifdef USE_WIDE_CHAR # ifdef QUAD # define strtol wcstoll # else # define strtol wcstol # endif # else # ifdef QUAD # define strtol strtoll # endif # endif # endif #endif /* If QUAD is defined, we are defining `strtoll' or `strtoull', operating on `long long int's. */ #ifdef QUAD # define LONG long long # define STRTOL_LONG_MIN LONG_LONG_MIN # define STRTOL_LONG_MAX LONG_LONG_MAX # define STRTOL_ULONG_MAX ULONG_LONG_MAX /* The extra casts work around common compiler bugs, e.g. Cray C 5.0.3.0 when t == time_t. */ # ifndef TYPE_SIGNED # define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) # endif # ifndef TYPE_MINIMUM # define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \ : (t) 0)) # endif # ifndef TYPE_MAXIMUM # define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) # endif # ifndef ULONG_LONG_MAX # define ULONG_LONG_MAX TYPE_MAXIMUM (unsigned long long) # endif # ifndef LONG_LONG_MAX # define LONG_LONG_MAX TYPE_MAXIMUM (long long int) # endif # ifndef LONG_LONG_MIN # define LONG_LONG_MIN TYPE_MINIMUM (long long int) # endif # if __GNUC__ == 2 && __GNUC_MINOR__ < 7 /* Work around gcc bug with using this constant. */ static const unsigned long long int maxquad = ULONG_LONG_MAX; # undef STRTOL_ULONG_MAX # define STRTOL_ULONG_MAX maxquad # endif #else # define LONG long # ifndef ULONG_MAX # define ULONG_MAX ((unsigned long) ~(unsigned long) 0) # endif # ifndef LONG_MAX # define LONG_MAX ((long int) (ULONG_MAX >> 1)) # endif # define STRTOL_LONG_MIN LONG_MIN # define STRTOL_LONG_MAX LONG_MAX # define STRTOL_ULONG_MAX ULONG_MAX #endif /* We use this code also for the extended locale handling where the function gets as an additional argument the locale which has to be used. To access the values we have to redefine the _NL_CURRENT macro. */ #ifdef USE_IN_EXTENDED_LOCALE_MODEL # undef _NL_CURRENT # define _NL_CURRENT(category, item) \ (current->values[_NL_ITEM_INDEX (item)].string) # define LOCALE_PARAM , loc # define LOCALE_PARAM_DECL __locale_t loc; #else # define LOCALE_PARAM # define LOCALE_PARAM_DECL #endif #if defined _LIBC || defined HAVE_WCHAR_H # include #endif #ifdef USE_WIDE_CHAR # include # define L_(Ch) L##Ch # define UCHAR_TYPE wint_t # define STRING_TYPE wchar_t # ifdef USE_IN_EXTENDED_LOCALE_MODEL # define ISSPACE(Ch) __iswspace_l ((Ch), loc) # define ISALPHA(Ch) __iswalpha_l ((Ch), loc) # define TOUPPER(Ch) __towupper_l ((Ch), loc) # else # define ISSPACE(Ch) iswspace (Ch) # define ISALPHA(Ch) iswalpha (Ch) # define TOUPPER(Ch) towupper (Ch) # endif #else # if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) # define IN_CTYPE_DOMAIN(c) 1 # else # define IN_CTYPE_DOMAIN(c) isascii(c) # endif # define L_(Ch) Ch # define UCHAR_TYPE unsigned char # define STRING_TYPE char # ifdef USE_IN_EXTENDED_LOCALE_MODEL # define ISSPACE(Ch) __isspace_l ((Ch), loc) # define ISALPHA(Ch) __isalpha_l ((Ch), loc) # define TOUPPER(Ch) __toupper_l ((Ch), loc) # else # define ISSPACE(Ch) (IN_CTYPE_DOMAIN (Ch) && isspace (Ch)) # define ISALPHA(Ch) (IN_CTYPE_DOMAIN (Ch) && isalpha (Ch)) # define TOUPPER(Ch) (IN_CTYPE_DOMAIN (Ch) ? toupper (Ch) : (Ch)) # endif #endif /* For compilers which are ansi but don't define __STDC__, like SGI Irix-4.0.5 cc, also check whether PROTOTYPES is defined. */ #if defined (__STDC__) || defined (PROTOTYPES) # define INTERNAL(X) INTERNAL1(X) # define INTERNAL1(X) __##X##_internal # define WEAKNAME(X) WEAKNAME1(X) #else # define INTERNAL(X) __/**/X/**/_internal #endif #ifdef USE_NUMBER_GROUPING /* This file defines a function to check for correct grouping. */ # include "grouping.h" #endif /* Convert NPTR to an `unsigned long int' or `long int' in base BASE. If BASE is 0 the base is determined by the presence of a leading zero, indicating octal or a leading "0x" or "0X", indicating hexadecimal. If BASE is < 2 or > 36, it is reset to 10. If ENDPTR is not NULL, a pointer to the character after the last one converted is stored in *ENDPTR. */ INT INTERNAL (strtol) (nptr, endptr, base, group LOCALE_PARAM) const STRING_TYPE *nptr; STRING_TYPE **endptr; int base; int group; LOCALE_PARAM_DECL { int negative; register unsigned LONG int cutoff; register unsigned int cutlim; register unsigned LONG int i; register const STRING_TYPE *s; register UCHAR_TYPE c; const STRING_TYPE *save, *end; int overflow; #ifdef USE_NUMBER_GROUPING # ifdef USE_IN_EXTENDED_LOCALE_MODEL struct locale_data *current = loc->__locales[LC_NUMERIC]; # endif /* The thousands character of the current locale. */ wchar_t thousands = L'\0'; /* The numeric grouping specification of the current locale, in the format described in . */ const char *grouping; if (group) { grouping = _NL_CURRENT (LC_NUMERIC, GROUPING); if (*grouping <= 0 || *grouping == CHAR_MAX) grouping = NULL; else { /* Figure out the thousands separator character. */ # if defined _LIBC || defined _HAVE_BTOWC thousands = __btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP)); if (thousands == WEOF) thousands = L'\0'; # endif if (thousands == L'\0') grouping = NULL; } } else grouping = NULL; #endif if (base < 0 || base == 1 || base > 36) { __set_errno (EINVAL); return 0; } save = s = nptr; /* Skip white space. */ while (ISSPACE (*s)) ++s; if (*s == L_('\0')) goto noconv; /* Check for a sign. */ if (*s == L_('-')) { negative = 1; ++s; } else if (*s == L_('+')) { negative = 0; ++s; } else negative = 0; /* Recognize number prefix and if BASE is zero, figure it out ourselves. */ if (*s == L_('0')) { if ((base == 0 || base == 16) && TOUPPER (s[1]) == L_('X')) { s += 2; base = 16; } else if (base == 0) base = 8; } else if (base == 0) base = 10; /* Save the pointer so we can check later if anything happened. */ save = s; #ifdef USE_NUMBER_GROUPING if (group) { /* Find the end of the digit string and check its grouping. */ end = s; for (c = *end; c != L_('\0'); c = *++end) if ((wchar_t) c != thousands && ((wchar_t) c < L_('0') || (wchar_t) c > L_('9')) && (!ISALPHA (c) || (int) (TOUPPER (c) - L_('A') + 10) >= base)) break; if (*s == thousands) end = s; else end = correctly_grouped_prefix (s, end, thousands, grouping); } else #endif end = NULL; cutoff = STRTOL_ULONG_MAX / (unsigned LONG int) base; cutlim = STRTOL_ULONG_MAX % (unsigned LONG int) base; overflow = 0; i = 0; for (c = *s; c != L_('\0'); c = *++s) { if (s == end) break; if (c >= L_('0') && c <= L_('9')) c -= L_('0'); else if (ISALPHA (c)) c = TOUPPER (c) - L_('A') + 10; else break; if ((int) c >= base) break; /* Check for overflow. */ if (i > cutoff || (i == cutoff && c > cutlim)) overflow = 1; else { i *= (unsigned LONG int) base; i += c; } } /* Check if anything actually happened. */ if (s == save) goto noconv; /* Store in ENDPTR the address of one character past the last character we converted. */ if (endptr != NULL) *endptr = (STRING_TYPE *) s; #if !UNSIGNED /* Check for a value that is within the range of `unsigned LONG int', but outside the range of `LONG int'. */ if (overflow == 0 && i > (negative ? -((unsigned LONG int) (STRTOL_LONG_MIN + 1)) + 1 : (unsigned LONG int) STRTOL_LONG_MAX)) overflow = 1; #endif if (overflow) { __set_errno (ERANGE); #if UNSIGNED return STRTOL_ULONG_MAX; #else return negative ? STRTOL_LONG_MIN : STRTOL_LONG_MAX; #endif } /* Return the result of the appropriate sign. */ return negative ? -i : i; noconv: /* We must handle a special case here: the base is 0 or 16 and the first two characters are '0' and 'x', but the rest are no hexadecimal digits. This is no error case. We return 0 and ENDPTR points to the `x`. */ if (endptr != NULL) { if (save - nptr >= 2 && TOUPPER (save[-1]) == L_('X') && save[-2] == L_('0')) *endptr = (STRING_TYPE *) &save[-1]; else /* There was no number to convert. */ *endptr = (STRING_TYPE *) nptr; } return 0L; } /* External user entry point. */ #if _LIBC - 0 == 0 # undef PARAMS # if defined (__STDC__) && __STDC__ # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif /* Prototype. */ INT strtol PARAMS ((const STRING_TYPE *nptr, STRING_TYPE **endptr, int base)); #endif INT #ifdef weak_function weak_function #endif strtol (nptr, endptr, base LOCALE_PARAM) const STRING_TYPE *nptr; STRING_TYPE **endptr; int base; LOCALE_PARAM_DECL { return INTERNAL (strtol) (nptr, endptr, base, 0 LOCALE_PARAM); } recode-3.6/lib/strtoul.c0100644000000000000000000000160107142144411013744 0ustar rootroot/* Copyright (C) 1991, 1999 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define UNSIGNED 1 #include recode-3.6/lib/error.c0100644000000000000000000001455207142144411013372 0ustar rootroot/* Error handler for noninteractive utilities Copyright (C) 1990,91,92,93,94,95,96,97,98, 99 Free Software Foundation, Inc. This file is part of the GNU C Library. Its master source is NOT part of the C library, however. The master source lives in /gd/gnu/lib. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU C Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by David MacKenzie . */ #ifdef HAVE_CONFIG_H # include #endif #include #if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC # if __STDC__ # include # define VA_START(args, lastarg) va_start(args, lastarg) # else # include # define VA_START(args, lastarg) va_start(args) # endif #else # define va_alist a1, a2, a3, a4, a5, a6, a7, a8 # define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8; #endif #if STDC_HEADERS || _LIBC # include # include #else void exit (); #endif #include "error.h" #ifndef _ # define _(String) String #endif /* If NULL, error will flush stdout, then print on stderr the program name, a colon and a space. Otherwise, error will call this function without parameters instead. */ void (*error_print_progname) ( #if __STDC__ - 0 void #endif ); /* This variable is incremented each time `error' is called. */ unsigned int error_message_count; #ifdef _LIBC /* In the GNU C library, there is a predefined variable for this. */ # define program_name program_invocation_name # include /* In GNU libc we want do not want to use the common name `error' directly. Instead make it a weak alias. */ # define error __error # define error_at_line __error_at_line #else /* not _LIBC */ /* The calling program should define program_name and set it to the name of the executing program. */ extern char *program_name; # ifdef HAVE_STRERROR_R # define __strerror_r strerror_r # else # if HAVE_STRERROR # ifndef strerror /* On some systems, strerror is a macro */ char *strerror (); # endif # else static char * private_strerror (errnum) int errnum; { extern char *sys_errlist[]; extern int sys_nerr; if (errnum > 0 && errnum <= sys_nerr) return _(sys_errlist[errnum]); return _("Unknown system error"); } # define strerror private_strerror # endif /* HAVE_STRERROR */ # endif /* HAVE_STRERROR_R */ #endif /* not _LIBC */ /* Print the program name and error message MESSAGE, which is a printf-style format string with optional args. If ERRNUM is nonzero, print its corresponding system error message. Exit with status STATUS if it is nonzero. */ /* VARARGS */ void #if defined VA_START && __STDC__ error (int status, int errnum, const char *message, ...) #else error (status, errnum, message, va_alist) int status; int errnum; char *message; va_dcl #endif { #ifdef VA_START va_list args; #endif if (error_print_progname) (*error_print_progname) (); else { fflush (stdout); fprintf (stderr, "%s: ", program_name); } #ifdef VA_START VA_START (args, message); # if HAVE_VPRINTF || _LIBC vfprintf (stderr, message, args); # else _doprnt (message, args, stderr); # endif va_end (args); #else fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); #endif ++error_message_count; if (errnum) { #if defined HAVE_STRERROR_R || defined _LIBC char errbuf[1024]; /* Don't use __strerror_r's return value because on some systems (at least DEC UNIX 4.0[A-D]) strerror_r returns `int'. */ __strerror_r (errnum, errbuf, sizeof errbuf); fprintf (stderr, ": %s", errbuf); #else fprintf (stderr, ": %s", strerror (errnum)); #endif } putc ('\n', stderr); fflush (stderr); if (status) exit (status); } /* Sometimes we want to have at most one error per line. This variable controls whether this mode is selected or not. */ int error_one_per_line; void #if defined VA_START && __STDC__ error_at_line (int status, int errnum, const char *file_name, unsigned int line_number, const char *message, ...) #else error_at_line (status, errnum, file_name, line_number, message, va_alist) int status; int errnum; const char *file_name; unsigned int line_number; char *message; va_dcl #endif { #ifdef VA_START va_list args; #endif if (error_one_per_line) { static const char *old_file_name; static unsigned int old_line_number; if (old_line_number == line_number && (file_name == old_file_name || !strcmp (old_file_name, file_name))) /* Simply return and print nothing. */ return; old_file_name = file_name; old_line_number = line_number; } if (error_print_progname) (*error_print_progname) (); else { fflush (stdout); fprintf (stderr, "%s:", program_name); } if (file_name != NULL) fprintf (stderr, "%s:%d: ", file_name, line_number); #ifdef VA_START VA_START (args, message); # if HAVE_VPRINTF || _LIBC vfprintf (stderr, message, args); # else _doprnt (message, args, stderr); # endif va_end (args); #else fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); #endif ++error_message_count; if (errnum) { #if defined HAVE_STRERROR_R || defined _LIBC char errbuf[1024]; /* Don't use __strerror_r's return value because on some systems (at least DEC UNIX 4.0[A-D]) strerror_r returns `int'. */ __strerror_r (errnum, errbuf, sizeof errbuf); fprintf (stderr, ": %s", errbuf); #else fprintf (stderr, ": %s", strerror (errnum)); #endif } putc ('\n', stderr); fflush (stderr); if (status) exit (status); } #ifdef _LIBC /* Make the weak alias. */ # undef error # undef error_at_line weak_alias (__error, error) weak_alias (__error_at_line, error_at_line) #endif recode-3.6/lib/getopt.c0100644000000000000000000007240207142144410013540 0ustar rootroot/* Getopt for GNU. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO # define _NO_PROTO #endif #ifdef HAVE_CONFIG_H # include #else # if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ # ifndef const # define const # endif # endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 # include # if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION # define ELIDE_CODE # endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ # include # include #endif /* GNU C library. */ #ifdef VMS # include # if HAVE_STRING_H - 0 # include # endif #endif #ifndef _ /* This is for other GNU distributions with internationalized messages. When compiling libc, the _ macro is predefined. */ # ifdef HAVE_LIBINTL_H # include # define _(msgid) gettext (msgid) # else # define _(msgid) (msgid) # endif #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ int optind = 1; /* Formerly, initialization of getopt depended on optind==0, which causes problems with re-calling getopt as programs generally don't know that. */ int __getopt_initialized; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return -1 with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ static char *posixly_correct; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ # include # define my_index strchr #else # if HAVE_STRING_H # include # else # include # endif /* Avoid depending on library functions or files whose names are inconsistent. */ #ifndef getenv extern char *getenv (); #endif static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } /* If using GCC, we can safely declare strlen this way. If not using GCC, it is ok not to declare it. */ #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ # if (!defined __STDC__ || !__STDC__) && !defined strlen /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); # endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; #ifdef _LIBC /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; static int nonoption_flags_max_len; static int nonoption_flags_len; static int original_argc; static char *const *original_argv; /* Make sure the environment variable bash 2.0 puts in the environment is valid for the getopt call we must make sure that the ARGV passed to getopt is that one passed to the process. */ static void __attribute__ ((unused)) store_args_and_env (int argc, char *const *argv) { /* XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ original_argc = argc; original_argv = argv; } # ifdef text_set_element text_set_element (__libc_subinit, store_args_and_env); # endif /* text_set_element */ # define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ #if defined __STDC__ && __STDC__ static void exchange (char **); #endif static void exchange (argv) char **argv; { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ #ifdef _LIBC /* First make sure the handling of the `__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ char *new_str = malloc (top + 1); if (new_str == NULL) nonoption_flags_len = nonoption_flags_max_len = 0; else { memset (__mempcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len), '\0', top + 1 - nonoption_flags_max_len); nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } } #endif while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; SWAP_FLAGS (bottom + i, middle + i); } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /* Initialize the internal data when the first call is made. */ #if defined __STDC__ && __STDC__ static const char *_getopt_initialize (int, char *const *, const char *); #endif static const char * _getopt_initialize (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ first_nonopt = last_nonopt = optind; nextchar = NULL; posixly_correct = getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; #ifdef _LIBC if (posixly_correct == NULL && argc == original_argc && argv == original_argv) { if (nonoption_flags_max_len == 0) { if (__getopt_nonoption_flags == NULL || __getopt_nonoption_flags[0] == '\0') nonoption_flags_max_len = -1; else { const char *orig_str = __getopt_nonoption_flags; int len = nonoption_flags_max_len = strlen (orig_str); if (nonoption_flags_max_len < argc) nonoption_flags_max_len = argc; __getopt_nonoption_flags = (char *) malloc (nonoption_flags_max_len); if (__getopt_nonoption_flags == NULL) nonoption_flags_max_len = -1; else memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), '\0', nonoption_flags_max_len - len); } } nonoption_flags_len = nonoption_flags_max_len; } else nonoption_flags_len = 0; #endif return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns -1. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { optarg = NULL; if (optind == 0 || !__getopt_initialized) { if (optind == 0) optind = 1; /* Don't scan ARGV[0], the program name. */ optstring = _getopt_initialize (argc, argv, optstring); __getopt_initialized = 1; } /* Test whether ARGV[optind] points to a non-option argument. Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #ifdef _LIBC # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ || (optind < nonoption_flags_len \ && __getopt_nonoption_flags[optind] == '1')) #else # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') #endif if (nextchar == NULL || *nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (last_nonopt > optind) last_nonopt = optind; if (first_nonopt > optind) first_nonopt = optind; if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && NONOPTION_P) optind++; last_nonopt = optind; } /* The special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (ordering == REQUIRE_ORDER) return -1; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[optind][1] == '-' || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = -1; int option_index; for (nameend = nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == (unsigned int) strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (opterr) fprintf (stderr, _("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; optopt = 0; return '?'; } if (pfound != NULL) { option_index = indfound; optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (opterr) { if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, _("%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, _("%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); } nextchar += strlen (nextchar); optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (opterr) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { if (opterr) { if (argv[optind][1] == '-') /* --option */ fprintf (stderr, _("%s: unrecognized option `--%s'\n"), argv[0], nextchar); else /* +option or -option */ fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; optind++; optopt = 0; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (opterr) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); else fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); } optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = 0; int option_index; /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (opterr) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; /* optarg is now the argument, see if it's in the table of longopts. */ for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (opterr) fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; return '?'; } if (pfound != NULL) { option_index = indfound; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (opterr) fprintf (stderr, _("\ %s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); nextchar += strlen (nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (opterr) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } nextchar = NULL; return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = NULL; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (opterr) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } #endif /* Not ELIDE_CODE. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ recode-3.6/lib/getopt1.c0100644000000000000000000001071307142144410013616 0ustar rootroot/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include #else #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #endif #include "getopt.h" #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 #include #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION #define ELIDE_CODE #endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #endif #ifndef NULL #define NULL 0 #endif int getopt_long (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } #endif /* Not ELIDE_CODE. */ #ifdef TEST #include int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case 'd': printf ("option d with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ recode-3.6/lib/xstrdup.c0100644000000000000000000000244607142144410013750 0ustar rootroot/* xstrdup.c -- copy a string with out of memory checking Copyright (C) 1990, 1996, 1998 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if HAVE_CONFIG_H # include #endif #ifndef PARAMS # if defined PROTOTYPES || (defined __STDC__ && __STDC__) # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif #endif #if STDC_HEADERS || HAVE_STRING_H # include #else # include #endif #include char *xmalloc PARAMS ((size_t n)); /* Return a newly allocated copy of STRING. */ char * xstrdup (const char *string) { return strcpy (xmalloc (strlen (string) + 1), string); } recode-3.6/lib/error.h0100644000000000000000000000516007142144411013372 0ustar rootroot/* Declaration for error-reporting function Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _ERROR_H #define _ERROR_H 1 #ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ # define __attribute__(Spec) /* empty */ # endif /* The __-protected variants of `format' and `printf' attributes are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) # define __format__ format # define __printf__ printf # endif #endif #ifdef __cplusplus extern "C" { #endif #if defined (__STDC__) && __STDC__ /* Print a message with `fprintf (stderr, FORMAT, ...)'; if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). If STATUS is nonzero, terminate the program with `exit (STATUS)'. */ extern void error (int status, int errnum, const char *format, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern void error_at_line (int status, int errnum, const char *fname, unsigned int lineno, const char *format, ...) __attribute__ ((__format__ (__printf__, 5, 6))); /* If NULL, error will flush stdout, then print on stderr the program name, a colon and a space. Otherwise, error will call this function without parameters instead. */ extern void (*error_print_progname) (void); #else void error (); void error_at_line (); extern void (*error_print_progname) (); #endif /* This variable is incremented each time `error' is called. */ extern unsigned int error_message_count; /* Sometimes we want to have at most one error per line. This variable controls whether this mode is selected or not. */ extern int error_one_per_line; #ifdef __cplusplus } #endif #endif /* error.h */ recode-3.6/lib/getopt.h0100644000000000000000000001334707142144411013551 0ustar rootroot/* Declarations for getopt. Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GETOPT_H #ifndef __need_getopt # define _GETOPT_H 1 #endif #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; #ifndef __need_getopt /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { # if defined __STDC__ && __STDC__ const char *name; # else char *name; # endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ # define no_argument 0 # define required_argument 1 # define optional_argument 2 #endif /* need getopt */ /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. Return the option character from OPTS just read. Return -1 when there are no more options. For unrecognized options, or options missing arguments, `optopt' is set to the option letter, and '?' is returned. The OPTS string is a list of characters which are recognized option letters, optionally followed by colons, specifying that that letter takes an argument, to be placed in `optarg'. If a letter in OPTS is followed by two colons, its argument is optional. This behavior is specific to the GNU `getopt'. The argument `--' causes premature termination of argument scanning, explicitly telling `getopt' that there are no more options. If OPTS begins with `--', then non-option arguments are treated as arguments to the option '\0'. This behavior is specific to the GNU `getopt'. */ #if defined __STDC__ && __STDC__ # ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ extern int getopt (int __argc, char *const *__argv, const char *__shortopts); # else /* not __GNU_LIBRARY__ */ extern int getopt (); # endif /* __GNU_LIBRARY__ */ # ifndef __need_getopt extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind); extern int getopt_long_only (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind); /* Internal only. Users should not call this directly. */ extern int _getopt_internal (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only); # endif #else /* not __STDC__ */ extern int getopt (); # ifndef __need_getopt extern int getopt_long (); extern int getopt_long_only (); extern int _getopt_internal (); # endif #endif /* __STDC__ */ #ifdef __cplusplus } #endif /* Make sure we later can get all the definitions and declarations. */ #undef __need_getopt #endif /* getopt.h */ recode-3.6/lib/gettext.h0100644000000000000000000001314007142144410013721 0ustar rootroot/* Begin of libgettext.h */ /* Message catalogs for internationalization. Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Because on some systems (e.g. Solaris) we sometimes have to include the systems libintl.h as well as this file we have more complex include protection above. But the systems header might perhaps also define _LIBINTL_H and therefore we have to protect the definition here. */ #if !defined _LIBINTL_H || !defined _LIBGETTEXT_H #ifndef _LIBINTL_H # define _LIBINTL_H 1 #endif #define _LIBGETTEXT_H 1 /* We define an additional symbol to signal that we use the GNU implementation of gettext. */ #define __USE_GNU_GETTEXT 1 #include #if HAVE_LOCALE_H # include #endif #ifdef __cplusplus extern "C" { #endif #ifndef PARAMS # if __STDC__ || defined __cplusplus # define PARAMS(args) args # else # define PARAMS(args) () # endif #endif #ifndef NULL # if !defined __cplusplus || defined __GNUC__ # define NULL ((void *) 0) # else # define NULL (0) # endif #endif #if !HAVE_LC_MESSAGES /* This value determines the behaviour of the gettext() and dgettext() function. But some system does not have this defined. Define it to a default value. */ # define LC_MESSAGES (-1) #endif /* Declarations for gettext-using-catgets interface. Derived from Jim Meyering's libintl.h. */ struct _msg_ent { const char *_msg; int _msg_number; }; #if HAVE_CATGETS /* These two variables are defined in the automatically by po-to-tbl.sed generated file `cat-id-tbl.c'. */ extern const struct _msg_ent _msg_tbl[]; extern int _msg_tbl_length; #endif /* For automatical extraction of messages sometimes no real translation is needed. Instead the string itself is the result. */ #define gettext_noop(Str) (Str) /* Look up MSGID in the current default message catalog for the current LC_MESSAGES locale. If not found, returns MSGID itself (the default text). */ extern char *gettext PARAMS ((const char *__msgid)); static char *gettext__ PARAMS ((const char *__msgid)); /* Look up MSGID in the DOMAINNAME message catalog for the current LC_MESSAGES locale. */ extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); static char *dgettext__ PARAMS ((const char *__domainname, const char *__msgid)); /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY locale. */ extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid, int __category)); extern char *dcgettext__ PARAMS ((const char *__domainname, const char *__msgid, int __category)); /* Set the current default message catalog to DOMAINNAME. If DOMAINNAME is null, return the current default. If DOMAINNAME is "", reset to the default of "messages". */ extern char *textdomain PARAMS ((const char *__domainname)); static char *textdomain__ PARAMS ((const char *__domainname)); /* Specify that the DOMAINNAME message catalog will be found in DIRNAME rather than in the system locale data base. */ extern char *bindtextdomain PARAMS ((const char *__domainname, const char *__dirname)); static char *bindtextdomain__ PARAMS ((const char *__domainname, const char *__dirname)); #if ENABLE_NLS /* Solaris 2.3 has the gettext function but dcgettext is missing. So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4 has dcgettext. */ # if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT) # define gettext(Msgid) \ dgettext (NULL, Msgid) # define dgettext(Domainname, Msgid) \ dcgettext (Domainname, Msgid, LC_MESSAGES) # if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7 /* This global variable is defined in loadmsgcat.c. We need a sign, whether a new catalog was loaded, which can be associated with all translations. */ extern int _nl_msg_cat_cntr; # define dcgettext(Domainname, Msgid, Category) \ (__extension__ \ ({ \ char *__result; \ if (__builtin_constant_p (Msgid)) \ { \ static char *__translation__; \ static int __catalog_counter__; \ if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \ { \ __translation__ = \ dcgettext__ (Domainname, Msgid, Category); \ __catalog_counter__ = _nl_msg_cat_cntr; \ } \ __result = __translation__; \ } \ else \ __result = dcgettext__ (Domainname, Msgid, Category); \ __result; \ })) # endif # endif #else # define gettext(Msgid) (Msgid) # define dgettext(Domainname, Msgid) (Msgid) # define dcgettext(Domainname, Msgid, Category) (Msgid) # define textdomain(Domainname) ((char *) Domainname) # define bindtextdomain(Domainname, Dirname) ((char *) Dirname) #endif #ifdef __cplusplus } #endif #endif /* End of libgettext.h */ recode-3.6/lib/pathmax.h0100644000000000000000000000334307142144411013704 0ustar rootroot/* Define PATH_MAX somehow. Requires sys/types.h. Copyright (C) 1992, 1999 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _PATHMAX_H # define _PATHMAX_H # ifdef HAVE_UNISTD_H # include # endif /* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define PATH_MAX but might cause redefinition warnings when sys/param.h is later included (as on MORE/BSD 4.3). */ # if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) # include # endif # ifndef _POSIX_PATH_MAX # define _POSIX_PATH_MAX 255 # endif # if !defined(PATH_MAX) && defined(_PC_PATH_MAX) # define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 \ : pathconf ("/", _PC_PATH_MAX)) # endif /* Don't include sys/param.h if it already has been. */ # if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) # include # endif # if !defined(PATH_MAX) && defined(MAXPATHLEN) # define PATH_MAX MAXPATHLEN # endif # ifndef PATH_MAX # define PATH_MAX _POSIX_PATH_MAX # endif #endif /* _PATHMAX_H */ recode-3.6/lib/xstring.h0100644000000000000000000000265107142144410013740 0ustar rootroot/* xstring.h - string declarations wrapper wrapper Copyright (C) 1986, 1995, 1996 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _xstring_h_ #define _xstring_h_ #define dirname sidestep_dirname_declaration #define basename sidestep_basename_declaration #ifdef HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #else # include char *memchr (); #endif #undef dirname #undef basename #define strequ(s1, s2) (strcmp ((s1), (s2)) == 0) #define strnequ(s1, s2, n) (strncmp ((s1), (s2), (n)) == 0) #if !HAVE_STRNDUP extern char *strndup __P((char const *, size_t n)); #endif extern char *basename __P((char const *)); extern char *dirname __P((char const *)); #endif /* not _xstring_h_ */ recode-3.6/lib/malloc.c0100644000000000000000000000215407142144411013503 0ustar rootroot/* Work around bug on some systems where malloc (0) fails. Copyright (C) 1997, 1998 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* written by Jim Meyering */ #if HAVE_CONFIG_H # include #endif #undef malloc #include char *malloc (); /* Allocate an N-byte block of memory from the heap. If N is zero, allocate a 1-byte block. */ char * rpl_malloc (size_t n) { if (n == 0) n = 1; return malloc (n); } recode-3.6/lib/realloc.c0100644000000000000000000000237207142144410013656 0ustar rootroot/* Work around bug on some systems where realloc (NULL, 0) fails. Copyright (C) 1997 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* written by Jim Meyering */ #if HAVE_CONFIG_H # include #endif #undef realloc #include char *malloc (); char *realloc (); /* Change the size of an allocated block of memory P to N bytes, with error checking. If N is zero, change it to 1. If P is NULL, use malloc. */ char * rpl_realloc (p, n) char *p; size_t n; { if (n == 0) n = 1; if (p == 0) return malloc (n); return realloc (p, n); } recode-3.6/libiconv/0040755000000000000000000000000007233074166013142 5ustar rootrootrecode-3.6/libiconv/Makefile.in0100644000000000000000000002256607233074166015217 0ustar rootroot# Makefile.in generated automatically by automake 1.4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 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. # Makefile for `libiconv' part of `recode'. # Copyright © 1999, 2000 Free Software Foundation, Inc. # François Pinard # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ CC = @CC@ CPP = @CPP@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ GLIBC21 = @GLIBC21@ LEX = @LEX@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MOFILES = @MOFILES@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ U = @U@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = gnits noinst_HEADERS = iconv.h aliases.h armscii_8.h ascii.h big5.h big5hkscs.h ces_big5.h ces_gbk.h cjk_variants.h cns11643.h cns11643_1.h cns11643_2.h cns11643_3.h cns11643_inv.h converters.h cp1133.h cp1250.h cp1251.h cp1252.h cp1253.h cp1254.h cp1255.h cp1256.h cp1257.h cp1258.h cp850.h cp866.h cp874.h cp932.h cp932ext.h cp936ext.h cp949.h cp950.h cp950ext.h euc_cn.h euc_jp.h euc_kr.h euc_tw.h flags.h gb12345.h gb12345ext.h gb18030.h gb18030ext.h gb18030uni.h gb2312.h gbk.h gbkext1.h gbkext2.h gbkext_inv.h georgian_academy.h georgian_ps.h hkscs.h hp_roman8.h hz.h iso2022_cn.h iso2022_cnext.h iso2022_jp.h iso2022_jp1.h iso2022_jp2.h iso2022_kr.h iso646_cn.h iso646_jp.h iso8859_1.h iso8859_10.h iso8859_13.h iso8859_14.h iso8859_15.h iso8859_16.h iso8859_2.h iso8859_3.h iso8859_4.h iso8859_5.h iso8859_6.h iso8859_7.h iso8859_8.h iso8859_9.h isoir165.h isoir165ext.h java.h jisx0201.h jisx0208.h jisx0212.h johab.h johab_hangul.h koi8_r.h koi8_ru.h koi8_u.h ksc5601.h loops.h loop_unicode.h loop_wchar.h mac_arabic.h mac_centraleurope.h mac_croatian.h mac_cyrillic.h mac_greek.h mac_hebrew.h mac_iceland.h mac_roman.h mac_romania.h mac_thai.h mac_turkish.h mac_ukraine.h mulelao.h nextstep.h sjis.h tcvn.h tis620.h translit.h ucs2.h ucs2be.h ucs2le.h ucs2internal.h ucs2swapped.h ucs4.h ucs4be.h ucs4le.h ucs4internal.h ucs4swapped.h uhc_1.h uhc_2.h utf16.h utf16be.h utf16le.h utf7.h utf8.h viscii.h libcharset.h EXTRA_DIST = encodings.def encodings_local.def config.charset ref-add.sin ref-del.sin charset_alias = $(DESTDIR)$(libdir)/charset.alias charset_tmp = $(DESTDIR)$(libdir)/charset.tmp SUFFIXES = .sed .sin CLEANFILES = charset.alias ref-add.sed ref-del.sed mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ HEADERS = $(noinst_HEADERS) DIST_COMMON = README ChangeLog Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: .SUFFIXES: .sed .sin $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps libiconv/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = libiconv distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-exec-local install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-local uninstall: uninstall-am all-am: Makefile $(HEADERS) all-local all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-tags clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-tags distclean-generic clean-am -rm -f libtool distclean: distclean-am maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: tags mostlyclean-tags distclean-tags clean-tags \ maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \ installcheck-am installcheck install-exec-local install-exec-am \ install-exec install-data-am install-data install-am install \ uninstall-local uninstall-am uninstall all-local all-redirect all-am \ all installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean all-local: charset.alias ref-add.sed ref-del.sed install-exec-local: all-local $(mkinstalldirs) $(DESTDIR)$(libdir) if test -f $(charset_alias); then \ sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \ rm -f $(charset_tmp) ; \ else \ if test @GLIBC21@ = no; then \ sed -f ref-add.sed charset.alias > $(charset_tmp) ; \ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \ rm -f $(charset_tmp) ; \ fi ; \ fi uninstall-local: all-local if test -f $(charset_alias); then \ sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \ if grep '^# Packages using this file: $$' $(charset_tmp) \ > /dev/null; then \ rm -f $(charset_alias); \ else \ $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \ fi; \ rm -f $(charset_tmp); \ fi charset.alias: config.charset $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ mv t-$@ $@ .sin.sed: sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > $@-t mv $@-t $@ # 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: recode-3.6/libiconv/README0100644000000000000000000000046107132422110014000 0ustar rootrootThe files in this directory (except Makefile.am, Makefile.in,ChangeLog and this README) are taken from Bruno Haible's libiconv library, homepage http://clisp.cons.org/~haible/packages-libiconv.html The copyright owner is the Free Software Foundation, Inc., and the files are covered by the GNU LGPL. recode-3.6/libiconv/ChangeLog0100644000000000000000000001361607220721226014710 0ustar rootroot2000-12-18 Bruno Haible * config.charset: Add support for BeOS. 2000-12-05 Bruno Haible * Updated to libiconv 1.5. * iconv.h (_LIBICONV_VERSION): Bump version number. * iconv.h (_libiconv_version): New declaration. * cp950.h (cp950_mbtowc, cp950_wctomb): Change implementation so that it agrees with Microsoft's definition of CP950. Add support for locale dependent "char" and "wchar_t" encodings. * loop_unicode.h: New file, extracted from src/iconv.c. * loop_wchar.h: New file. * loops.h: New file. Include loop_unicode.h and loop_wchar.h. * encodings_local.def: New file. * converters.h (conv_struct): Add lfuncs field. * aliases.h: Regenerated. * config.charset: New file, from libiconv-1.5. * red-add.sin, ref-del.sin: New files, from libiconv-1.5. * libcharset.h: New file, from libiconv-1.5. * Makefile.am (noinst_HEADERS): Add loops.h, loop_unicode.h, loop_wchar.h, libcharset.h. (EXTRA_DIST): Add encodings_local.def, config.charset, ref-add.sin, ref-del.sin. (all-local, install-exec-local, uninstall-local, charset.alias): New targets. (charset_alias, charset_tmp, SUFFIXES, CLEANFILES): New variables. (.sin.sed): New rule. * converters.h (ucs4_t): New type. (wchar_t): Remove locally defined override. (mbtowc_funcs, wctomb_funcs): Use ucs4_t instead of wchar_t. * armscii_8.h: Use ucs4_t instead of wchar_t. * ascii.h: Likewise. * big5.h: Likewise. * big5hkscs.h: Likewise. * ces_big5.h: Likewise. * ces_gbk.h: Likewise. * cns11643.h: Likewise. * cns11643_1.h: Likewise. * cns11643_2.h: Likewise. * cns11643_3.h: Likewise. * cns11643_inv.h: Likewise. * cp1133.h: Likewise. * cp1250.h: Likewise. * cp1251.h: Likewise. * cp1252.h: Likewise. * cp1253.h: Likewise. * cp1254.h: Likewise. * cp1255.h: Likewise. * cp1256.h: Likewise. * cp1257.h: Likewise. * cp1258.h: Likewise. * cp850.h: Likewise. * cp866.h: Likewise. * cp874.h: Likewise. * cp932.h: Likewise. * cp932ext.h: Likewise. * cp936ext.h: Likewise. * cp949.h: Likewise. * cp950.h: Likewise. * cp950ext.h: Likewise. * euc_cn.h: Likewise. * euc_jp.h: Likewise. * euc_kr.h: Likewise. * euc_tw.h: Likewise. * gb12345.h: Likewise. * gb12345ext.h: Likewise. * gb18030.h: Likewise. * gb18030ext.h: Likewise. * gb18030uni.h: Likewise. * gb2312.h: Likewise. * gbk.h: Likewise. * gbkext1.h: Likewise. * gbkext2.h: Likewise. * gbkext_inv.h: Likewise. * georgian_academy.h: Likewise. * georgian_ps.h: Likewise. * hkscs.h: Likewise. * hp_roman8.h: Likewise. * hz.h: Likewise. * iso2022_cn.h: Likewise. * iso2022_cnext.h: Likewise. * iso2022_jp.h: Likewise. * iso2022_jp1.h: Likewise. * iso2022_jp2.h: Likewise. * iso2022_kr.h: Likewise. * iso646_cn.h: Likewise. * iso646_jp.h: Likewise. * iso8859_1.h: Likewise. * iso8859_10.h: Likewise. * iso8859_13.h: Likewise. * iso8859_14.h: Likewise. * iso8859_15.h: Likewise. * iso8859_16.h: Likewise. * iso8859_2.h: Likewise. * iso8859_3.h: Likewise. * iso8859_4.h: Likewise. * iso8859_5.h: Likewise. * iso8859_6.h: Likewise. * iso8859_7.h: Likewise. * iso8859_8.h: Likewise. * iso8859_9.h: Likewise. * isoir165.h: Likewise. * isoir165ext.h: Likewise. * java.h: Likewise. * jisx0201.h: Likewise. * jisx0208.h: Likewise. * jisx0212.h: Likewise. * johab.h: Likewise. * johab_hangul.h: Likewise. * koi8_r.h: Likewise. * koi8_ru.h: Likewise. * koi8_u.h: Likewise. * ksc5601.h: Likewise. * mac_arabic.h: Likewise. * mac_centraleurope.h: Likewise. * mac_croatian.h: Likewise. * mac_cyrillic.h: Likewise. * mac_greek.h: Likewise. * mac_hebrew.h: Likewise. * mac_iceland.h: Likewise. * mac_roman.h: Likewise. * mac_romania.h: Likewise. * mac_thai.h: Likewise. * mac_turkish.h: Likewise. * mac_ukraine.h: Likewise. * mulelao.h: Likewise. * nextstep.h: Likewise. * sjis.h: Likewise. * tcvn.h: Likewise. * tis620.h: Likewise. * ucs2.h: Likewise. * ucs2be.h: Likewise. * ucs2internal.h: Likewise. * ucs2le.h: Likewise. * ucs2swapped.h: Likewise. * ucs4.h: Likewise. * ucs4be.h: Likewise. * ucs4internal.h: Likewise. * ucs4le.h: Likewise. * ucs4swapped.h: Likewise. * uhc_1.h: Likewise. * uhc_2.h: Likewise. * utf16.h: Likewise. * utf16be.h: Likewise. * utf16le.h: Likewise. * utf7.h: Likewise. * utf8.h: Likewise. * viscii.h: Likewise. 2000-10-24 Bruno Haible * Updated to libiconv 1.4. * iconv.h (_LIBICONV_VERSION): Bump version number. * gb18030ext.h, gb18030uni.h, gb18030.h, hkscs.h, big5hkscs.h: New files. * Makefile.am (noinst_HEADERS): Add them. * converters.h: Include gb18030.h and big5hkscs.h. * encodings.def (GB18030, BIG5HKSCS): New encodings. * aliases.h, flags.h: Update. * utf16.h (utf16_wctomb): Reject single surrogates. * utf16be.h (utf16be_wctomb): Likewise. * utf16le.h (utf16le_wctomb): Likewise. * ucs2.h (ucs2_mbtowc, ucs2_wctomb): Likewise. * ucs2be.h (ucs2be_mbtowc, ucs2be_wctomb): Likewise. * ucs2le.h (ucs2le_mbtowc, ucs2le_wctomb): Likewise. * ucs2internal.h (ucs2internal_mbtowc, ucs2internal_wctomb): Likewise. * ucs2swapped.h (ucs2swapped_mbtowc, ucs2swapped_wctomb): Likewise. 2000-09-11 Bruno Haible * utf7.h (utf7_mbtowc): Fix combining of UTF-16 surrogates. 2000-07-10 François Pinard * README: New file. Reported by Bruno Haible. 2000-06-29 Bruno Haible * ucs2internal.h, ucs2swapped.h, ucs4internal.h, ucs4swapped.h: Cosmetic changes to avoid compiler warnings. 2000-06-28 François Pinard * Makefile.am (noinst_HEADERS): Distribute iconv.h. 2000-04-23 Bruno Haible * Updated to libiconv 1.3. * iconv.h: New file, nearly copied from libiconv's iconv.h.in. 2000-03-14 Bruno Haible * Updated to libiconv 0.3, 1.0, 1.1, then 1.2. 1999-12-28 François Pinard * Makefile.am: New file. * encoding.def, all .h files: From Bruno Haible's libiconv 0.2. recode-3.6/libiconv/Makefile.am0100644000000000000000000000702307213505322015164 0ustar rootroot# Makefile for `libiconv' part of `recode'. # Copyright © 1999, 2000 Free Software Foundation, Inc. # François Pinard # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AUTOMAKE_OPTIONS = gnits noinst_HEADERS = iconv.h aliases.h armscii_8.h ascii.h big5.h big5hkscs.h \ ces_big5.h ces_gbk.h cjk_variants.h cns11643.h cns11643_1.h cns11643_2.h \ cns11643_3.h cns11643_inv.h converters.h cp1133.h cp1250.h cp1251.h cp1252.h \ cp1253.h cp1254.h cp1255.h cp1256.h cp1257.h cp1258.h cp850.h cp866.h cp874.h \ cp932.h cp932ext.h cp936ext.h cp949.h cp950.h cp950ext.h euc_cn.h euc_jp.h \ euc_kr.h euc_tw.h flags.h gb12345.h gb12345ext.h gb18030.h gb18030ext.h \ gb18030uni.h gb2312.h gbk.h gbkext1.h gbkext2.h gbkext_inv.h \ georgian_academy.h georgian_ps.h hkscs.h hp_roman8.h hz.h iso2022_cn.h \ iso2022_cnext.h iso2022_jp.h iso2022_jp1.h iso2022_jp2.h iso2022_kr.h \ iso646_cn.h iso646_jp.h iso8859_1.h iso8859_10.h iso8859_13.h iso8859_14.h \ iso8859_15.h iso8859_16.h iso8859_2.h iso8859_3.h iso8859_4.h iso8859_5.h \ iso8859_6.h iso8859_7.h iso8859_8.h iso8859_9.h isoir165.h isoir165ext.h java.h jisx0201.h jisx0208.h jisx0212.h johab.h johab_hangul.h koi8_r.h \ koi8_ru.h koi8_u.h ksc5601.h loops.h loop_unicode.h loop_wchar.h mac_arabic.h \ mac_centraleurope.h mac_croatian.h mac_cyrillic.h mac_greek.h mac_hebrew.h \ mac_iceland.h mac_roman.h mac_romania.h mac_thai.h mac_turkish.h \ mac_ukraine.h mulelao.h nextstep.h sjis.h tcvn.h tis620.h translit.h \ ucs2.h ucs2be.h ucs2le.h ucs2internal.h ucs2swapped.h \ ucs4.h ucs4be.h ucs4le.h ucs4internal.h ucs4swapped.h \ uhc_1.h uhc_2.h utf16.h utf16be.h utf16le.h utf7.h \ utf8.h viscii.h \ libcharset.h EXTRA_DIST = encodings.def encodings_local.def \ config.charset ref-add.sin ref-del.sin all-local: charset.alias ref-add.sed ref-del.sed charset_alias = $(DESTDIR)$(libdir)/charset.alias charset_tmp = $(DESTDIR)$(libdir)/charset.tmp install-exec-local: all-local $(mkinstalldirs) $(DESTDIR)$(libdir) if test -f $(charset_alias); then \ sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \ rm -f $(charset_tmp) ; \ else \ if test @GLIBC21@ = no; then \ sed -f ref-add.sed charset.alias > $(charset_tmp) ; \ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \ rm -f $(charset_tmp) ; \ fi ; \ fi uninstall-local: all-local if test -f $(charset_alias); then \ sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \ if grep '^# Packages using this file: $$' $(charset_tmp) \ > /dev/null; then \ rm -f $(charset_alias); \ else \ $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \ fi; \ rm -f $(charset_tmp); \ fi charset.alias: config.charset $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ mv t-$@ $@ SUFFIXES = .sed .sin .sin.sed: sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > $@-t mv $@-t $@ CLEANFILES = charset.alias ref-add.sed ref-del.sed recode-3.6/libiconv/iconv.h0100644000000000000000000000750207213267435014433 0ustar rootroot/* Copyright (C) 1999-2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU ICONV Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* When installed, this file is called "iconv.h". */ #ifndef _LIBICONV_H #define _LIBICONV_H #define _LIBICONV_VERSION 0x0105 /* version number: (major<<8) + minor */ extern int _libiconv_version; /* Likewise */ /* We would like to #include any system header file which could define iconv_t, 1. in order to eliminate the risk that the user gets compilation errors because some other system header file includes /usr/include/iconv.h which defines iconv_t or declares iconv after this file, 2. when compiling for LIBICONV_PLUG, we need the proper iconv_t type in order to produce binary compatible code. But gcc's #include_next is not portable. Thus, once libiconv's iconv.h has been installed in /usr/local/include, there is no way any more to include the original /usr/include/iconv.h. We simply have to get away without it. Ad 1. The risk that a system header file does #include "iconv.h" or #include_next "iconv.h" is small. They all do #include . Ad 2. The iconv_t type is a pointer type in all cases I have seen. (It has to be a scalar type because (iconv_t)(-1) is a possible return value from iconv_open().) */ /* Define iconv_t ourselves. */ #undef iconv_t #define iconv_t libiconv_t typedef void* iconv_t; /* Get size_t declaration. */ #include /* Get errno declaration and values. */ #include /* Some systems, like SunOS 4, don't have EILSEQ. On these systems, define EILSEQ ourselves, but don't define it as EINVAL, because iconv() callers want to distinguish EINVAL and EILSEQ. */ #ifndef EILSEQ #define EILSEQ ENOENT #endif #ifdef __cplusplus extern "C" { #endif /* Allocates descriptor for code conversion from encoding `fromcode' to encoding `tocode'. */ #ifndef LIBICONV_PLUG #define iconv_open libiconv_open #endif extern iconv_t iconv_open (const char* tocode, const char* fromcode); /* Converts, using conversion descriptor `cd', at most `*inbytesleft' bytes starting at `*inbuf', writing at most `*outbytesleft' bytes starting at `*outbuf'. Decrements `*inbytesleft' and increments `*inbuf' by the same amount. Decrements `*outbytesleft' and increments `*outbuf' by the same amount. */ #ifndef LIBICONV_PLUG #define iconv libiconv #endif extern size_t iconv (iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); /* Frees resources allocated for conversion descriptor `cd'. */ #ifndef LIBICONV_PLUG #define iconv_close libiconv_close #endif extern int iconv_close (iconv_t cd); #ifndef LIBICONV_PLUG /* Nonstandard extensions. */ /* Control of attributes. */ #define iconvctl libiconvctl extern int iconvctl (iconv_t cd, int request, void* argument); /* Requests for iconvctl. */ #define ICONV_TRIVIALP 0 /* int *argument */ #define ICONV_GET_TRANSLITERATE 1 /* int *argument */ #define ICONV_SET_TRANSLITERATE 2 /* const int *argument */ #endif #ifdef __cplusplus } #endif #endif /* _LIBICONV_H */ recode-3.6/libiconv/aliases.h0100644000000000000000000006666507206270522014746 0ustar rootroot/* ANSI-C code produced by gperf version 2.7.2 */ /* Command-line: gperf -t -L ANSI-C -H aliases_hash -N aliases_lookup -7 -C -k '1,3-11,$' -i 1 src/aliases.gperf */ struct alias { const char* name; unsigned int encoding_index; }; #define TOTAL_KEYWORDS 297 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 45 #define MIN_HASH_VALUE 8 #define MAX_HASH_VALUE 2446 /* maximum key range = 2439, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static unsigned int aliases_hash (register const char *str, register unsigned int len) { static const unsigned short asso_values[] = { 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 1, 11, 2447, 41, 236, 26, 471, 86, 131, 61, 196, 1, 246, 1, 2447, 2447, 2447, 2447, 2447, 2447, 21, 506, 317, 231, 1, 91, 131, 311, 1, 66, 46, 507, 116, 6, 1, 51, 2447, 16, 1, 1, 438, 6, 1, 391, 1, 1, 2447, 2447, 2447, 2447, 166, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447, 2447 }; register int hval = len; switch (hval) { default: case 11: hval += asso_values[(unsigned char) str[10]]; case 10: hval += asso_values[(unsigned char) str[9]]; case 9: hval += asso_values[(unsigned char) str[8]]; case 8: hval += asso_values[(unsigned char) str[7]]; case 7: hval += asso_values[(unsigned char) str[6]]; case 6: hval += asso_values[(unsigned char) str[5]]; case 5: hval += asso_values[(unsigned char) str[4]]; case 4: hval += asso_values[(unsigned char) str[3]]; case 3: hval += asso_values[(unsigned char) str[2]]; case 2: case 1: hval += asso_values[(unsigned char) str[0]]; break; } return hval + asso_values[(unsigned char) str[len - 1]]; } #ifdef __GNUC__ __inline #endif const struct alias * aliases_lookup (register const char *str, register unsigned int len) { static const struct alias wordlist[] = { {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"SJIS", ei_sjis}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"R8", ei_hp_roman8}, {""}, {""}, {""}, {"TCVN", ei_tcvn}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"850", ei_cp850}, {"KOI8-R", ei_koi8_r}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"KOREAN", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"JAVA", ei_java}, {"JP", ei_iso646_jp}, {""}, {""}, {""}, {""}, {""}, {"MS-EE", ei_cp1250}, {"866", ei_cp866}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-6", ei_ascii}, {""}, {""}, {"MS-ANSI", ei_cp1252}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-58", ei_gb2312}, {""}, {""}, {""}, {"ROMAN8", ei_hp_roman8}, {""}, {""}, {""}, {""}, {""}, {"SHIFT-JIS", ei_sjis}, {""}, {""}, {""}, {"TIS620", ei_tis620}, {""}, {"TIS-620", ei_tis620}, {""}, {""}, {""}, {""}, {"JIS0208", ei_jisx0208}, {""}, {""}, {"GREEK8", ei_iso8859_7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-226", ei_iso8859_16}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-2022-KR", ei_iso2022_kr}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"TIS620-0", ei_tis620}, {""}, {""}, {""}, {""}, {"GBK", ei_ces_gbk}, {""}, {""}, {""}, {"GREEK", ei_iso8859_7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-2022-JP-2", ei_iso2022_jp2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-2022-JP", ei_iso2022_jp}, {""}, {""}, {""}, {""}, {"IBM866", ei_cp866}, {""}, {""}, {""}, {""}, {""}, {""}, {"HZ", ei_hz}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CN", ei_iso646_cn}, {"EUCTW", ei_euc_tw}, {""}, {"EUC-TW", ei_euc_tw}, {""}, {""}, {""}, {""}, {"VISCII", ei_viscii}, {""}, {"CHINESE", ei_gb2312}, {""}, {"IBM850", ei_cp850}, {"SHIFT_JIS", ei_sjis}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ASCII", ei_ascii}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-148", ei_iso8859_9}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"MS-GREEK", ei_cp1253}, {""}, {""}, {""}, {""}, {""}, {"GEORGIAN-PS", ei_georgian_ps}, {""}, {"CHAR", ei_local_char}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ASMO-708", ei_iso8859_6}, {""}, {"ISO646-JP", ei_iso646_jp}, {""}, {"ISO-IR-100", ei_iso8859_1}, {""}, {""}, {""}, {""}, {"ISO-8859-8", ei_iso8859_8}, {""}, {""}, {""}, {""}, {""}, {"EUCKR", ei_euc_kr}, {""}, {"EUC-KR", ei_euc_kr}, {""}, {"CSKOI8R", ei_koi8_r}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-126", ei_iso8859_7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-87", ei_jisx0208}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"MS_KANJI", ei_sjis}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-14", ei_iso646_jp}, {""}, {""}, {"US", ei_ascii}, {""}, {""}, {""}, {"ISO-8859-2", ei_iso8859_2}, {""}, {""}, {""}, {""}, {"ISO-IR-166", ei_tis620}, {"ELOT_928", ei_iso8859_7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-2022-CN-EXT", ei_iso2022_cn_ext}, {"ISO-2022-CN", ei_iso2022_cn}, {""}, {"X0208", ei_jisx0208}, {""}, {""}, {""}, {"ARMSCII-8", ei_armscii_8}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"HP-ROMAN8", ei_hp_roman8}, {""}, {""}, {""}, {""}, {""}, {"ISO-2022-JP-1", ei_iso2022_jp1}, {""}, {"EUCJP", ei_euc_jp}, {""}, {"EUC-JP", ei_euc_jp}, {""}, {""}, {""}, {"UCS-2", ei_ucs2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CP866", ei_cp866}, {""}, {""}, {""}, {"L8", ei_iso8859_14}, {"NEXTSTEP", ei_nextstep}, {""}, {""}, {""}, {"ISO-8859-6", ei_iso8859_6}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"LATIN8", ei_iso8859_14}, {"WCHAR_T", ei_local_wchar_t}, {"ISO-IR-144", ei_iso8859_5}, {""}, {""}, {"CSISO2022KR", ei_iso2022_kr}, {""}, {""}, {""}, {""}, {""}, {""}, {"L2", ei_iso8859_2}, {"CP850", ei_cp850}, {"UTF-8", ei_utf8}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO646-CN", ei_iso646_cn}, {""}, {""}, {""}, {"ISO-IR-57", ei_iso646_cn}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO_8859-8", ei_iso8859_8}, {""}, {""}, {""}, {""}, {"ISO-8859-4", ei_iso8859_4}, {"ISO_8859-8:1988", ei_iso8859_8}, {""}, {""}, {""}, {"L6", ei_iso8859_10}, {""}, {""}, {"LATIN2", ei_iso8859_2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-110", ei_iso8859_4}, {""}, {""}, {""}, {""}, {"ISO-IR-165", ei_isoir165}, {""}, {""}, {""}, {"CSISO2022JP2", ei_iso2022_jp2}, {"L4", ei_iso8859_4}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"MACROMAN", ei_mac_roman}, {""}, {""}, {"ISO_8859-2", ei_iso8859_2}, {""}, {""}, {""}, {""}, {""}, {""}, {"UCS-4", ei_ucs4}, {"CSISO2022JP", ei_iso2022_jp}, {""}, {""}, {"ECMA-118", ei_iso8859_7}, {"WINDOWS-874", ei_cp874}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"TCVN-5712", ei_tcvn}, {""}, {"L5", ei_iso8859_9}, {""}, {""}, {"LATIN6", ei_iso8859_10}, {""}, {""}, {"MACROMANIA", ei_mac_romania}, {""}, {"WINDOWS-1258", ei_cp1258}, {""}, {""}, {"ISO_8859-4:1988", ei_iso8859_4}, {"EUCCN", ei_euc_cn}, {"CSVISCII", ei_viscii}, {"EUC-CN", ei_euc_cn}, {"ISO-8859-5", ei_iso8859_5}, {""}, {""}, {""}, {""}, {"ISO646-US", ei_ascii}, {""}, {"ISO_646.IRV:1991", ei_ascii}, {"GEORGIAN-ACADEMY", ei_georgian_academy}, {""}, {""}, {"CSASCII", ei_ascii}, {""}, {""}, {""}, {""}, {"MS-TURK", ei_cp1254}, {""}, {"WINDOWS-1252", ei_cp1252}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO_8859-6", ei_iso8859_6}, {""}, {"MACGREEK", ei_mac_greek}, {""}, {""}, {"ISO-IR-127", ei_iso8859_6}, {""}, {""}, {"WINDOWS-1250", ei_cp1250}, {""}, {""}, {"CP874", ei_cp874}, {""}, {"LATIN4", ei_iso8859_4}, {""}, {""}, {"ISO_8859-5:1988", ei_iso8859_5}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"L7", ei_iso8859_13}, {""}, {""}, {"WINDOWS-1256", ei_cp1256}, {""}, {"X0212", ei_jisx0212}, {""}, {"ISO-8859-10", ei_iso8859_10}, {""}, {""}, {""}, {""}, {""}, {"CP1258", ei_cp1258}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO_8859-4", ei_iso8859_4}, {""}, {""}, {"WINDOWS-1254", ei_cp1254}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-138", ei_iso8859_8}, {""}, {""}, {"JIS_X0208", ei_jisx0208}, {"BIGFIVE", ei_ces_big5}, {"L1", ei_iso8859_1}, {"BIG-FIVE", ei_ces_big5}, {""}, {""}, {""}, {""}, {""}, {"ISO-8859-16", ei_iso8859_16}, {"MAC", ei_mac_roman}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CP1252", ei_cp1252}, {""}, {""}, {""}, {""}, {""}, {""}, {"MACTHAI", ei_mac_thai}, {""}, {""}, {"WINDOWS-1255", ei_cp1255}, {"CSISO2022CN", ei_iso2022_cn}, {"ISO-IR-101", ei_iso8859_2}, {"CP950", ei_cp950}, {""}, {"LATIN5", ei_iso8859_9}, {""}, {"ISO-8859-7", ei_iso8859_7}, {"ISO_8859-2:1987", ei_iso8859_2}, {""}, {""}, {"US-ASCII", ei_ascii}, {"ISO-IR-157", ei_iso8859_10}, {"ECMA-114", ei_iso8859_6}, {""}, {""}, {""}, {""}, {""}, {""}, {"CP1250", ei_cp1250}, {""}, {"ISO-IR-109", ei_iso8859_3}, {"CSSHIFTJIS", ei_sjis}, {"ISO-8859-14", ei_iso8859_14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"TIS620.2529-1", ei_tis620}, {"ISO_8859-5", ei_iso8859_5}, {"ISO_8859-6:1987", ei_iso8859_6}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"MACCROATIAN", ei_mac_croatian}, {""}, {"UCS-2-SWAPPED", ei_ucs2swapped}, {""}, {"CP1256", ei_cp1256}, {""}, {""}, {""}, {"HEBREW", ei_iso8859_8}, {"WINDOWS-1257", ei_cp1257}, {""}, {"ISO-IR-149", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {"CSHPROMAN8", ei_hp_roman8}, {"IBM819", ei_iso8859_1}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-8859-1", ei_iso8859_1}, {""}, {"ISO_8859-10:1992", ei_iso8859_10}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"GB_1988-80", ei_iso646_cn}, {""}, {"ISO_8859-10", ei_iso8859_10}, {""}, {""}, {""}, {""}, {""}, {"WINDOWS-1251", ei_cp1251}, {""}, {"ISO-8859-9", ei_iso8859_9}, {""}, {"ISO_8859-14:1998", ei_iso8859_14}, {"CP1254", ei_cp1254}, {""}, {"ISO-IR-159", ei_jisx0212}, {""}, {"ISO-8859-15", ei_iso8859_15}, {""}, {"UTF-16", ei_utf16}, {""}, {"UCS-4-SWAPPED", ei_ucs4swapped}, {""}, {""}, {""}, {""}, {""}, {"ISO_8859-16:2000", ei_iso8859_16}, {"BIG5", ei_ces_big5}, {""}, {"BIG-5", ei_ces_big5}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"LATIN7", ei_iso8859_13}, {""}, {""}, {""}, {"ISO_8859-16", ei_iso8859_16}, {""}, {"CSISOLATIN2", ei_iso8859_2}, {""}, {""}, {"GB2312", ei_euc_cn}, {""}, {""}, {""}, {""}, {"UTF-7", ei_utf7}, {""}, {""}, {""}, {"KOI8-U", ei_koi8_u}, {"ISO_8859-15:1998", ei_iso8859_15}, {""}, {""}, {"X0201", ei_jisx0201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"KOI8-RU", ei_koi8_ru}, {""}, {"ISO_8859-7", ei_iso8859_7}, {""}, {""}, {""}, {""}, {"ISO-IR-179", ei_iso8859_13}, {"ISO_8859-7:1987", ei_iso8859_7}, {""}, {""}, {"JIS_C6220-1969-RO", ei_iso646_jp}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO_8859-14", ei_iso8859_14}, {"ISO-10646-UCS-2", ei_ucs2}, {"GB18030", ei_gb18030}, {""}, {""}, {""}, {"MACUKRAINE", ei_mac_ukraine}, {"MS-HEBR", ei_cp1255}, {""}, {""}, {""}, {"CP1255", ei_cp1255}, {""}, {"L3", ei_iso8859_3}, {"UCS-2BE", ei_ucs2be}, {"UCS-2LE", ei_ucs2le}, {""}, {""}, {""}, {""}, {""}, {"JIS_X0212", ei_jisx0212}, {"CSISOLATIN6", ei_iso8859_10}, {""}, {""}, {"CSISO87JISX0208", ei_jisx0208}, {"LATIN1", ei_iso8859_1}, {""}, {""}, {"ISO_8859-1:1987", ei_iso8859_1}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-IR-199", ei_iso8859_14}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"UCS-2-INTERNAL", ei_ucs2internal}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"JIS_X0208-1990", ei_jisx0208}, {""}, {""}, {"ISO-10646-UCS-4", ei_ucs4}, {""}, {"ISO_8859-1", ei_iso8859_1}, {""}, {""}, {""}, {""}, {""}, {"ISO_8859-3:1988", ei_iso8859_3}, {""}, {""}, {"CSISOLATIN4", ei_iso8859_4}, {"ISO-IR-203", ei_iso8859_15}, {"UCS-4BE", ei_ucs4be}, {"UCS-4LE", ei_ucs4le}, {""}, {""}, {"CSISO14JISC6220RO", ei_iso646_jp}, {""}, {"IBM367", ei_ascii}, {"CSISOLATINGREEK", ei_iso8859_7}, {""}, {"ISO_8859-9", ei_iso8859_9}, {"CP819", ei_iso8859_1}, {""}, {""}, {""}, {""}, {"ISO_8859-9:1989", ei_iso8859_9}, {"ISO_8859-15", ei_iso8859_15}, {""}, {""}, {""}, {""}, {"CSISO159JISX02121990", ei_jisx0212}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"UCS-4-INTERNAL", ei_ucs4internal}, {"MACINTOSH", ei_mac_roman}, {"UHC", ei_cp949}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSEUCTW", ei_euc_tw}, {""}, {"TCVN5712-1", ei_tcvn}, {""}, {""}, {""}, {""}, {""}, {"CP932", ei_cp932}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CP1257", ei_cp1257}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"WINDOWS-1253", ei_cp1253}, {""}, {""}, {"CN-GB-ISOIR165", ei_isoir165}, {""}, {""}, {""}, {""}, {""}, {""}, {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", ei_euc_jp}, {"CSISOLATIN5", ei_iso8859_9}, {""}, {""}, {"CSIBM866", ei_cp866}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CP949", ei_cp949}, {""}, {""}, {""}, {"GB_2312-80", ei_gb2312}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSEUCKR", ei_euc_kr}, {""}, {""}, {"CP936", ei_ces_gbk}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSISOLATINHEBREW", ei_iso8859_8}, {""}, {""}, {""}, {"CP1251", ei_cp1251}, {"ARABIC", ei_iso8859_6}, {""}, {""}, {""}, {""}, {"MS-ARAB", ei_cp1256}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSISOLATINARABIC", ei_iso8859_6}, {""}, {""}, {"JIS_X0201", ei_jisx0201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSBIG5", ei_ces_big5}, {""}, {"CN-BIG5", ei_ces_big5}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"KSC_5601", ei_ksc5601}, {""}, {""}, {"JIS_X0212-1990", ei_jisx0212}, {"CP367", ei_ascii}, {""}, {""}, {""}, {""}, {"CSUCS4", ei_ucs4}, {""}, {""}, {""}, {""}, {""}, {"JIS_X0212.1990-0", ei_jisx0212}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"MACHEBREW", ei_mac_hebrew}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"VISCII1.1-1", ei_viscii}, {"TIS620.2533-0", ei_tis620}, {""}, {""}, {""}, {""}, {""}, {""}, {"WINBALTRIM", ei_cp1257}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"MACCENTRALEUROPE", ei_mac_centraleurope}, {""}, {"CSUNICODE", ei_ucs2}, {""}, {""}, {""}, {"TCVN5712-1:1993", ei_tcvn}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO-8859-3", ei_iso8859_3}, {""}, {""}, {""}, {"CSISOLATIN1", ei_iso8859_1}, {""}, {""}, {""}, {"UTF-16BE", ei_utf16be}, {"UTF-16LE", ei_utf16le}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"JISX0201-1976", ei_jisx0201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ANSI_X3.4-1968", ei_ascii}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSMACINTOSH", ei_mac_roman}, {"JOHAB", ei_johab}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"BIG5HKSCS", ei_big5hkscs}, {"JIS_X0208-1983", ei_jisx0208}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"LATIN3", ei_iso8859_3}, {""}, {""}, {"CN-GB", ei_euc_cn}, {""}, {""}, {""}, {""}, {""}, {"MS-CYRL", ei_cp1251}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"TIS620.2533-1", ei_tis620}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO_8859-3", ei_iso8859_3}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSISOLATINCYRILLIC", ei_iso8859_5}, {""}, {""}, {""}, {""}, {"UNICODELITTLE", ei_ucs2le}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CP1361", ei_johab}, {""}, {""}, {""}, {""}, {"MACTURKISH", ei_mac_turkish}, {""}, {""}, {""}, {"ISO-8859-13", ei_iso8859_13}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"KS_C_5601-1987", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSEUCPKDFMTJAPANESE", ei_euc_jp}, {""}, {""}, {""}, {""}, {""}, {"MULELAO-1", ei_mulelao}, {""}, {""}, {""}, {""}, {""}, {"MACARABIC", ei_mac_arabic}, {"CSISO58GB231280", ei_gb2312}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CP1253", ei_cp1253}, {""}, {""}, {"KS_C_5601-1989", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"UNICODE-1-1-UTF-7", ei_utf7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"UNICODE-1-1", ei_ucs2be}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ISO_8859-13", ei_iso8859_13}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"HZ-GB-2312", ei_hz}, {""}, {"CSGB2312", ei_euc_cn}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"MACICELAND", ei_mac_iceland}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"UNICODEBIG", ei_ucs2be}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSISO57GB1988", ei_iso646_cn}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSISOLATIN3", ei_iso8859_3}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSHALFWIDTHKATAKANA", ei_jisx0201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSKSC56011987", ei_ksc5601}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CYRILLIC", ei_iso8859_5}, {""}, {""}, {""}, {"CSUNICODE11UTF7", ei_utf7}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSUNICODE11", ei_ucs2be}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CP1133", ei_cp1133}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"IBM-CP1133", ei_cp1133}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"MACCYRILLIC", ei_mac_cyrillic}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"CSPC850MULTILINGUAL", ei_cp850} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { register int key = aliases_hash (str, len); if (key <= MAX_HASH_VALUE && key >= 0) { register const char *s = wordlist[key].name; if (*str == *s && !strcmp (str + 1, s + 1)) return &wordlist[key]; } } return 0; } recode-3.6/libiconv/armscii_8.h0100644000000000000000000000650507206266436015177 0ustar rootroot /* * ARMSCII-8 */ static const unsigned short armscii_8_2uni[96] = { /* 0xa0 */ 0x00a0, 0x2741, 0x00a7, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab, 0x2014, 0x002e, 0x055d, 0x002c, 0x002d, 0x055f, 0x2026, 0x055c, /* 0xb0 */ 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563, 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567, /* 0xc0 */ 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b, 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f, /* 0xd0 */ 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573, 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577, /* 0xe0 */ 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b, 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f, /* 0xf0 */ 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583, 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x2019, 0x0027, }; static int armscii_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) armscii_8_2uni[c-0xa0]; return 1; } static const unsigned char armscii_8_page00[16] = { 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0xff, /* 0x20-0x27 */ 0xa5, 0xa4, 0x2a, 0x2b, 0xab, 0xac, 0xa9, 0x2f, /* 0x28-0x2f */ }; static const unsigned char armscii_8_page00_1[32] = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ }; static const unsigned char armscii_8_page05[96] = { 0x00, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, /* 0x30-0x37 */ 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, /* 0x38-0x3f */ 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, /* 0x40-0x47 */ 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, /* 0x48-0x4f */ 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0xb0, 0xaf, 0xaa, 0xb1, 0xad, /* 0x58-0x5f */ 0x00, 0xb3, 0xb5, 0xb7, 0xb9, 0xbb, 0xbd, 0xbf, /* 0x60-0x67 */ 0xc1, 0xc3, 0xc5, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, /* 0x68-0x6f */ 0xd1, 0xd3, 0xd5, 0xd7, 0xd9, 0xdb, 0xdd, 0xdf, /* 0x70-0x77 */ 0xe1, 0xe3, 0xe5, 0xe7, 0xe9, 0xeb, 0xed, 0xef, /* 0x78-0x7f */ 0xf1, 0xf3, 0xf5, 0xf7, 0xf9, 0xfb, 0xfd, 0x00, /* 0x80-0x87 */ 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ }; static const unsigned char armscii_8_page20[24] = { 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x20-0x27 */ }; static int armscii_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0020) { *r = wc; return 1; } else if (wc >= 0x0020 && wc < 0x0030) c = armscii_8_page00[wc-0x0020]; else if (wc >= 0x0030 && wc < 0x00a0) c = wc; else if (wc >= 0x00a0 && wc < 0x00c0) c = armscii_8_page00_1[wc-0x00a0]; else if (wc >= 0x0530 && wc < 0x0590) c = armscii_8_page05[wc-0x0530]; else if (wc >= 0x2010 && wc < 0x2028) c = armscii_8_page20[wc-0x2010]; else if (wc == 0x2741) c = 0xa1; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/ascii.h0100644000000000000000000000054607206266436014410 0ustar rootroot /* * ASCII */ static int ascii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } return RET_ILSEQ; } static int ascii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x0080) { *r = wc; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/big5.h0100644000000000000000000077572107206266436014164 0ustar rootroot /* * BIG5 */ static const unsigned short big5_2uni_pagea1[6121] = { /* 0xa1 */ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a, 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52, 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31, 0x2014, 0xfe33, 0xfffd, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35, 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39, 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d, 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41, 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d, 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7, 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105, 0x203e, 0xfffd, 0xff3f, 0xfffd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642, 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xfffd, /* 0xa2 */ 0xfffd, 0xff0f, 0xff3c, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3, 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5, 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4, 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7, 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a, 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500, 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0xfffd, 0x5344, 0xfffd, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, /* 0xa3 */ 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xa4 */ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c, 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b, 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a, 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e, 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f, 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8, 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2, 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11, 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88, 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3, 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141, 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207, 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929, 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f, 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236, 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247, 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19, /* 0xa5 */ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e, 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4, 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9, 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317, 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e, 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8, 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1, 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e, 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7, 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17, 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6, 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11, 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f, 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff, 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f, 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, /* 0xa6 */ 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216, 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f, 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d, 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd, 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919, 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979, 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89, 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f, 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263, 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2, 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64, 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50, 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d, 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001, 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c, 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e, 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621, 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34, 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38, 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63, /* 0xa7 */ 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48, 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225, 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac, 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426, 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b, 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436, 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea, 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747, 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d, 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4, 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c, 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90, 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a, 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8, 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d, 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298, 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538, 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c, 0x6756, 0x675e, 0x6749, 0x6746, 0x6760, /* 0xa8 */ 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81, 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70, 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e, 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076, 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2, 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3, 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093, 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b, 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d, 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2, 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6, 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a, 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab, 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b, 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b, 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238, 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379, 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475, /* 0xa9 */ 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492, 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462, 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a, 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947, 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae, 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af, 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a, 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46, 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18, 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97, 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80, 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff, 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021, 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e, 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9, 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8, 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da, 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e, 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602, 0x660e, 0x6600, 0x660f, 0x6615, 0x660a, /* 0xaa */ 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c, 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f, 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a, 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3, 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe, 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9, 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1, 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095, 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248, 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9, 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a, 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940, 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54, 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1, 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d, 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1, 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7, 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1, 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580, 0x961c, 0x9640, 0x963f, 0x963b, 0x9644, /* 0xab */ 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae, 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd, 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0, 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192, 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b, 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b, 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8, 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4, 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf, 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae, 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8, 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6, 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5, 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7, 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08, 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c, 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a, 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301, 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7, /* 0xac */ 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545, 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f, 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1, 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef, 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de, 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83, 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32, 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b, 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38, 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3, 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272, 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb, 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c, 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701, 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc, 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947, 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff, 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04, 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004, /* 0xad */ 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3, 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd, 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6, 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301, 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306, 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4, 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4, 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed, 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b, 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df, 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef, 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f, 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1, 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a, 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd, 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d, 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501, 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9, 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea, /* 0xae */ 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2, 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a, 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20, 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0, 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04, 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8, 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab, 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063, 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f, 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3, 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346, 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328, 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642, 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851, 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845, 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27, 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87, 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93, /* 0xaf */ 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a, 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9, 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8, 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de, 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7, 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b, 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728, 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825, 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f, 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7, 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06, 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22, 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b, 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015, 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105, 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a, 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b, 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, /* 0xb0 */ 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3, 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18, 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16, 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77, 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7, 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095, 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd, 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b, 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8, 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c, 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e, 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d, 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8, 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3, 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543, 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538, 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708, 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4, 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36, 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40, /* 0xb1 */ 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5, 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60, 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22, 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2, 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5, 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97, 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3, 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5, 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df, 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7, 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa, 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384, 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b, 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557, 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac, 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668, 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2, 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0, 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8, 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba, /* 0xb2 */ 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2, 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb, 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5, 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea, 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf, 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d, 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7, 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4, 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db, 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843, 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20, 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92, 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c, 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31, 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a, 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398, 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393, 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c, /* 0xb3 */ 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4, 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e, 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f, 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b, 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa, 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019, 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015, 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8, 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7, 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0, 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5, 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096, 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269, 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7, 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594, 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2, 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599, 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960, /* 0xb4 */ 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71, 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c, 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43, 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9, 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c, 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1, 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3, 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2, 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4, 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676, 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f, 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df, 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb, 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb, 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e, 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67, 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24, 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a, 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb, /* 0xb5 */ 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f, 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c, 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a, 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f, 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2, 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c, 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c, 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97, 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52, 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e, 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66, 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052, 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146, 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403, 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1, 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2, 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df, 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0, 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b, 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41, /* 0xb6 */ 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56, 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb, 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85, 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb, 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031, 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163, 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d, 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593, 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686, 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7, 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea, 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd, 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be, 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d, 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8, 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4, 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712, 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b, 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1, 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc, /* 0xb7 */ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9, 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148, 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c, 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137, 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d, 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417, 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968, 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b, 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf, 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5, 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4, 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164, 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e, 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f, 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f, 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601, 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df, 0x775b, 0x776b, 0x7766, 0x775e, 0x7763, /* 0xb8 */ 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee, 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891, 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c, 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77, 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93, 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a, 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179, 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431, 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435, 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f, 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702, 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc, 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3, 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c, 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c, 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca, 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1, 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6, 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a, /* 0xb9 */ 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c, 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e, 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237, 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264, 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a, 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca, 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810, 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd, 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e, 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da, 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3, 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617, 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616, 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e, 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925, 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7, 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5, 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84, 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6, 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147, /* 0xba */ 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158, 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f, 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1, 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995, 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab, 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3, 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4, 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff, 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b, 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7, 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d, 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1, 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7, 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31, 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75, 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9, 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0, 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5, 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac, /* 0xbb */ 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150, 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa, 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4, 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3, 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902, 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6, 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa, 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d, 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc, 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c, 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118, 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285, 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291, 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c, 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817, 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1, 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3, 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc, /* 0xbc */ 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e, 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e, 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e, 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb, 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb, 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2, 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7, 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c, 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac, 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479, 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495, 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499, 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4, 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd, 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11, 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84, 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e, 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f, 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b, 0x734e, 0x7357, 0x7469, 0x748b, 0x7483, /* 0xbd */ 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626, 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c, 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5, 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b, 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7, 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb, 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9, 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9, 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517, 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523, 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c, 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915, 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8, 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6, 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6, 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1, 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f, 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f, 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e, /* 0xbe */ 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d, 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb, 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2, 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707, 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c, 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df, 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef, 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03, 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3, 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668, 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be, 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e, 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be, 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc, 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4, 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8, 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44, 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59, 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1, /* 0xbf */ 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6, 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8, 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368, 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d, 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f, 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e, 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4, 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11, 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79, 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8, 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f, 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b, 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00, 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed, 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44, 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38, 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c, 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f, 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a, /* 0xc0 */ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7, 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713, 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b, 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b, 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb, 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12, 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121, 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f, 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a, 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c, 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234, 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1, 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94, 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90, 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf, 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1, 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6, 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370, 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c, 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac, /* 0xc1 */ 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901, 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7, 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9, 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b, 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35, 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070, 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf, 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584, 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8, 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab, 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938, 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20, 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd, 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a, 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d, 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e, 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc, 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0, 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01, /* 0xc2 */ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b, 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2, 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233, 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7, 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2, 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe, 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8, 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652, 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62, 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23, 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52, 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf, 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba, 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2, 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59, 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d, 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a, 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a, 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9, 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6, /* 0xc3 */ 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba, 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03, 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8, 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133, 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2, 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5, 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d, 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a, 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7, 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d, 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85, 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea, 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9, 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58, 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a, 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54, 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1, 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd, 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a, 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e, /* 0xc4 */ 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d, 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a, 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7, 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6, 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727, 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662, 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c, 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82, 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa, 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba, 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f, 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418, 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8, 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5, 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1, 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d, 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c, 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f, 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821, 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74, /* 0xc5 */ 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf, 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b, 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957, 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d, 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19, 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9, 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61, 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3, 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc, 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955, 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b, 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6, 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca, 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638, 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464, 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4, 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1, 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88, 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92, /* 0xc6 */ 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744, 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa, 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063, 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470, 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a, 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5, 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f, 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x30fe, 0x309d, 0x309e, 0x3005, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, /* 0xc7 */ 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, }; static const unsigned short big5_2uni_pagec9[7652] = { /* 0xc9 */ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47, 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e, 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c, 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3, 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9, 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723, 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73, 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36, 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a, 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00, 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04, 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322, 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a, 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977, 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e, 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4, 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259, 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738, 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52, 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b, /* 0xca */ 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f, 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d, 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64, 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33, 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad, 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437, 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d, 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5, 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940, 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f, 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f, 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95, 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d, 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed, 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef, 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e, 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281, 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4, 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747, /* 0xcb */ 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b, 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b, 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95, 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a, 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594, 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092, 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a, 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5, 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33, 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74, 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79, 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82, 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392, 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b, 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9, 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780, 0x5775, 0x577b, 0x5773, 0x5774, 0x5762, /* 0xcc */ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce, 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1, 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93, 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf, 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7, 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19, 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d, 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034, 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d, 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214, 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca, 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d, 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb, 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6, 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798, 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791, 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25, 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee, 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2, 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2, /* 0xcd */ 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0, 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1, 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9, 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1, 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8, 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1, 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7, 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd, 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220, 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7, 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9, 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d, 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5, 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d, 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9, 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb, 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249, 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398, 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf, /* 0xce */ 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6, 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0, 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b, 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4, 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd, 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db, 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8, 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde, 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf, 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22, 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3, 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054, 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c, 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e, 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303, 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313, 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa, 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622, 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f, 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba, /* 0xcf */ 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb, 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee, 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc, 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9, 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6, 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d, 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04, 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01, 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c, 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1, 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a, 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb, 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8, 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7, 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e, 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703, 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809, 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5, 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80, /* 0xd0 */ 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f, 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d, 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7, 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9, 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd, 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8, 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1, 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4, 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673, 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07, 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf, 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3, 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033, 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027, 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca, 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e, 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2, 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504, 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1, /* 0xd1 */ 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b, 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6, 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9, 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15, 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad, 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1, 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa, 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041, 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095, 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2, 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4, 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358, 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4, 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f, 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816, 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844, 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d, 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34, 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4, /* 0xd2 */ 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64, 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f, 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60, 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68, 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d, 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39, 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5, 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277, 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb, 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3, 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7, 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b, 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6, 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823, 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821, 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c, 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed, 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b, 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10, /* 0xd3 */ 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09, 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85, 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f, 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d, 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e, 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100, 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351, 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342, 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324, 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353, 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2, 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686, 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695, 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883, 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4, 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3, 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6, 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8, 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150, /* 0xd4 */ 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc, 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e, 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041, 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b, 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051, 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d, 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a, 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c, 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540, 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc, 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3, 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1, 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9, 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67, 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c, 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b, 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69, 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1, 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c, 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f, /* 0xd5 */ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1, 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96, 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3, 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db, 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365, 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397, 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375, 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378, 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665, 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887, 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f, 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877, 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e, 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b, 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38, 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab, 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6, 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5, 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0, 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9, /* 0xd6 */ 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb, 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104, 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8, 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f, 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff, 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401, 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b, 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb, 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f, 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b, 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b, 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94, 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24, 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f, 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3, 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29, 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63, 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0, 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f, /* 0xd7 */ 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127, 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232, 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4, 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9, 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e, 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387, 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2, 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8, 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852, 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1, 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac, 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30, 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d, 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf, 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1, 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea, 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9, 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1, 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea, /* 0xd8 */ 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c, 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5, 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083, 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087, 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8, 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f, 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6, 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819, 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c, 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d, 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2, 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae, 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b, 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd, 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37, 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e, 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42, 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45, 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9, 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114, /* 0xd9 */ 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc, 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104, 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8, 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5, 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4, 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0, 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568, 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c, 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701, 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1, 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910, 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911, 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8, 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6, 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7, 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95, 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47, 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b, 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40, 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e, /* 0xda */ 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b, 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64, 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a, 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a, 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330, 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323, 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a, 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420, 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1, 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da, 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b, 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d, 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c, 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48, 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8, 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a, 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51, 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65, /* 0xdb */ 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050, 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d, 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204, 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423, 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410, 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5, 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9, 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5, 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee, 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8, 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb, 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856, 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6, 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998, 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59, 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51, 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe, 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3, 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8, 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa, /* 0xdc */ 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6, 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f, 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb, 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f, 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226, 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204, 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689, 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c, 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83, 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca, 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb, 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c, 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0, 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5, 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855, 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871, 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5, 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6, /* 0xdd */ 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90, 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a, 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0, 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6, 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a, 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f, 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5, 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433, 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423, 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a, 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e, 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695, 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966, 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a, 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935, 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969, 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c, 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952, 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48, 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc, /* 0xde */ 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0, 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2, 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6, 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92, 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca, 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142, 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144, 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e, 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444, 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450, 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe, 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603, 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6, 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f, 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759, 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895, 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896, 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19, 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13, /* 0xdf */ 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64, 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70, 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88, 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b, 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d, 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb, 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b, 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144, 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1, 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459, 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434, 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b, 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c, 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433, 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450, 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d, 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6, 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0, 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4, /* 0xe0 */ 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f, 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81, 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66, 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c, 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0, 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2, 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00, 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044, 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114, 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a, 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246, 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253, 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692, 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac, 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab, 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4, 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3, 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0, /* 0xe1 */ 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627, 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613, 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c, 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a, 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894, 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea, 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec, 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3, 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77, 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f, 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc, 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6, 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153, 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165, 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b, 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d, 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b, 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459, 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705, 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9, /* 0xe2 */ 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999, 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4, 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3, 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2, 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f, 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03, 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19, 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36, 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35, 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39, 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590, 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8, 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e, 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab, 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a, 0x798b, 0x7996, 0x7995, 0x7994, 0x7993, /* 0xe3 */ 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f, 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c, 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e, 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf, 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1, 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc, 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9, 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024, 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c, 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce, 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd, 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2, 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6, 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db, 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740, 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741, 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712, 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724, 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa, 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb, /* 0xe4 */ 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9, 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96, 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09, 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06, 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d, 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124, 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4, 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6, 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e, 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286, 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b, 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e, 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce, 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d, 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7, 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f, 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8, 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a, 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635, 0x5641, 0x564a, 0x5649, 0x5646, 0x5658, /* 0xe5 */ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a, 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af, 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7, 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05, 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93, 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d, 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2, 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b, 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d, 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485, 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f, 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2, 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af, 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4, 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27, 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6, 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25, 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5, 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41, 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92, /* 0xe6 */ 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96, 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57, 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67, 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77, 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a, 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa, 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e, 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362, 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488, 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619, 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d, 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb, 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4, 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76, 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac, 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc, 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03, 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76, 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6, 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f, /* 0xe7 */ 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253, 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500, 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c, 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2, 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9, 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e, 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9, 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756, 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b, 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750, 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c, 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a, 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed, 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4, 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3, 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf, 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1, 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b, 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27, /* 0xe8 */ 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c, 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073, 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a, 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182, 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6, 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc, 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd, 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5, 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0, 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a, 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829, 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3, 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc, 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43, 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68, 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07, 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3, 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de, 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e, /* 0xe9 */ 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c, 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc, 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10, 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1, 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2, 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9, 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8, 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf, 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd, 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c, 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd, 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67, 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51, 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50, 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56, 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7, 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad, 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4, 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba, 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8, /* 0xea */ 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5, 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4, 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da, 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365, 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495, 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633, 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d, 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797, 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1, 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47, 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7, 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea, 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7, 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20, 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f, 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c, 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6, 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2, 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856b, 0x854d, 0x8553, 0x8561, 0x8558, /* 0xeb */ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547, 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555, 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c, 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785, 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789, 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2, 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0, 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91, 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c, 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45, 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36, 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079, 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190, 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306, 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301, 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325, 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329, 0x9339, 0x9335, 0x932a, 0x9314, 0x930c, /* 0xec */ 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd, 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9, 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0, 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929, 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea, 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa, 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e, 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d, 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d, 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87, 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c, 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681, 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23, 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2, 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc, 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9, 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da, 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b, 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e, /* 0xed */ 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a, 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9, 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde, 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2, 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2, 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510, 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4, 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc, 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c, 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1, 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4, 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd, 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c, 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47, 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45, 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4, 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a, 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b, 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e, /* 0xee */ 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e, 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582, 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668, 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5, 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af, 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de, 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937, 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18, 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15, 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f, 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f, 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40, 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f, 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356, 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351, 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355, 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363, 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3, 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718, 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c, /* 0xef */ 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a, 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933, 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1, 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb, 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01, 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1, 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41, 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45, 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d, 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff, 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e, 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c, 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed, 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff, 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db, 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6, 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9, 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e, 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201, 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376, /* 0xf0 */ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2, 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657, 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c, 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac, 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d, 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56, 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53, 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0, 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3, 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8, 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be, 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5, 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8, 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd, 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949, 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f, 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e, 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98, 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60, 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67, /* 0xf1 */ 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47, 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5, 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b, 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395, 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4, 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3, 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722, 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2, 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851, 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09, 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0, 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c, 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8, 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f, 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52, 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01, 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c, 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad, 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912, 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70, /* 0xf2 */ 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e, 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1, 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd, 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016, 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c, 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6, 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516, 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921, 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c, 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78, 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b, 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7, 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9, 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8, 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de, 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c, 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962, 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959, 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40, 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55, /* 0xf3 */ 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a, 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d, 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51, 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad, 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec, 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3, 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da, 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3, 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d, 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943, 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b, 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2, 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0, 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec, 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81, 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b, 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85, 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68, 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d, 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2, /* 0xf4 */ 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef, 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df, 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9, 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034, 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b, 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba, 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd, 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2, 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47, 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff, 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff, 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605, 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68, 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84, 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143, 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb, 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419, 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412, 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff, /* 0xf5 */ 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df, 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862, 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c, 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36, 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10, 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8, 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f, 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0, 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8, 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99, 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e, 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139, 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb, 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8, 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046, 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d, 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88, 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618, 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e, 0x8621, 0x8620, 0x8629, 0x861e, 0x8625, /* 0xf6 */ 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a, 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45, 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e, 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b, 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437, 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a, 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956, 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f, 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b, 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21, 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe, 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac, 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a, 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31, 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb, 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520, 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056, 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5, 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71, 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a, /* 0xf7 */ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634, 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826, 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84, 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a, 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c, 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b, 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49, 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55, 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c, 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde, 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9, 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35, 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299, 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12, 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640, 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e, 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe, /* 0xf8 */ 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64, 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4, 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52, 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c, 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4, 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec, 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3, 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71, 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d, 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223, 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97, 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94, 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2, 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7, 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62, 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05, 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e, 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18, 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9, 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a, /* 0xf9 */ 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648, 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5, 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749, 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10, 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78, 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2, 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74, 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4, 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e, 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961, 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48, 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481, 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483, 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a, 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, }; static int big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0xa1 && c1 <= 0xc7) || (c1 >= 0xc9 && c1 <= 0xf9)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); unsigned short wc = 0xfffd; if (i < 6280) { if (i < 6121) wc = big5_2uni_pagea1[i]; } else { if (i < 13932) wc = big5_2uni_pagec9[i-6280]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short big5_2charset[13703] = { 0xa246, 0xa247, 0xa244, 0xa1b1, 0xa258, 0xa1d3, 0xa150, 0xa1d1, 0xa1d2, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa3bb, 0xa344, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355, 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d, 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372, 0xa373, 0xc7b3, 0xc7b1, 0xc7b2, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7ce, 0xa156, 0xa158, 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145, 0xa14c, 0xa14b, 0xa1ac, 0xa1ab, 0xa1b0, 0xa1c2, 0xa24a, 0xa1c1, 0xa24b, 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2, 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9, 0xa1fb, 0xa1fa, 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5, 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1e3, 0xa1dc, 0xa1da, 0xa1dd, 0xa1d8, 0xa1d9, 0xa1e6, 0xa1e9, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa275, 0xa274, 0xa273, 0xa272, 0xa271, 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa27e, 0xa2a1, 0xa2a3, 0xa2a2, 0xa2ac, 0xa2ad, 0xa2ae, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f, 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a, 0xa276, 0xa279, 0xa1bd, 0xa1bc, 0xa1b6, 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3, 0xa1b7, 0xa1b4, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8, 0xa1f3, 0xa1f0, 0xa1f2, 0xa1f1, 0xa140, 0xa142, 0xa143, 0xa1b2, 0xc6a4, 0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179, 0xa17a, 0xa169, 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1a9, 0xa1aa, 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6a2, 0xc6a3, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc6a1, 0xa374, 0xa375, 0xa376, 0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, 0xa3b9, 0xa3ba, 0xa1c0, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252, 0xa254, 0xa257, 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0xa440, 0xa442, 0xa443, 0xc945, 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3, 0xc94f, 0xc94d, 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543, 0xa4fe, 0xa5e0, 0xa5e1, 0xa8c3, 0xa458, 0xa4a4, 0xc950, 0xa4a5, 0xc963, 0xa6ea, 0xcbb1, 0xa459, 0xa4a6, 0xa544, 0xc964, 0xc940, 0xa444, 0xa45b, 0xc947, 0xa45c, 0xa4a7, 0xa545, 0xa547, 0xa546, 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441, 0xc941, 0xa445, 0xa45e, 0xa45d, 0xa5e4, 0xa8c5, 0xb0ae, 0xd44b, 0xb6c3, 0xdcb1, 0xdcb2, 0xa446, 0xa4a9, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0xa4aa, 0xa4ac, 0xc951, 0xa4ad, 0xa4ab, 0xa5e5, 0xa8c7, 0xa8c8, 0xab45, 0xa460, 0xa4ae, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46, 0xab47, 0xadbd, 0xdcb3, 0xf6d6, 0xa448, 0xa4b0, 0xa4af, 0xc952, 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3, 0xc954, 0xc953, 0xa4b5, 0xa4b6, 0xa4b4, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a, 0xc966, 0xc969, 0xa551, 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548, 0xc965, 0xc967, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae, 0xa5f3, 0xc9b2, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8, 0xc9b5, 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0xa5ee, 0xc9ab, 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0xc9ac, 0xa5eb, 0xc9b4, 0xc9b7, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0xca67, 0xa6f1, 0xa744, 0xa6f9, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60, 0xca68, 0xca64, 0xa6fa, 0xa6fd, 0xa6ee, 0xa747, 0xca5d, 0xcbbd, 0xa6ec, 0xa743, 0xa6ed, 0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb, 0xa6f3, 0xca5a, 0xa6ef, 0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740, 0xa746, 0xa6f0, 0xca63, 0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f, 0xca61, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5, 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de, 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9, 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0xa8d2, 0xa8cd, 0xa8dc, 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da, 0xcbbe, 0xcbb2, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0xab56, 0xab4a, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d, 0xcdee, 0xcdec, 0xcde7, 0xab4b, 0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde, 0xcdea, 0xcde1, 0xab54, 0xcde2, 0xcddd, 0xab5b, 0xab4e, 0xab57, 0xab4d, 0xcddf, 0xcde4, 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a, 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53, 0xab4c, 0xab48, 0xcdef, 0xadd7, 0xadc1, 0xadd1, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5, 0xadc4, 0xadcd, 0xadda, 0xadce, 0xd0c9, 0xadc7, 0xd0ca, 0xaddc, 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb, 0xadcf, 0xd45b, 0xadc6, 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce, 0xd0d7, 0xd0c8, 0xadc9, 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3, 0xadc2, 0xd0d9, 0xadd0, 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8, 0xd0db, 0xd0cd, 0xd0dc, 0xd0d1, 0xd0da, 0xd0d2, 0xadc8, 0xd463, 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459, 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba, 0xd466, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d, 0xd450, 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0xd85b, 0xd45e, 0xd44d, 0xd45f, 0xb0c1, 0xd464, 0xb0c0, 0xd44c, 0xd454, 0xd465, 0xb0bc, 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af, 0xb0b0, 0xb3c8, 0xd85e, 0xd857, 0xb3c5, 0xd85f, 0xd855, 0xd858, 0xb3c4, 0xd859, 0xb3c7, 0xd85d, 0xd853, 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c, 0xd85a, 0xd854, 0xb3c3, 0xd856, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd, 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb, 0xdcc4, 0xdcbf, 0xb6cc, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe, 0xdcbc, 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1, 0xb9b6, 0xb9b3, 0xb9b4, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2, 0xb9b1, 0xe0f5, 0xe0f7, 0xe0fe, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0, 0xb9ac, 0xe0f3, 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc, 0xe0fb, 0xb9b5, 0xe0f4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7, 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd, 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0xbeaa, 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0xe8f6, 0xbea8, 0xe8f7, 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb, 0xecbc, 0xecba, 0xecb9, 0xecbe, 0xc075, 0xefb8, 0xefb9, 0xe4e8, 0xefb7, 0xc078, 0xc35f, 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b, 0xf7d0, 0xa449, 0xa461, 0xa4b9, 0xa4b8, 0xa553, 0xa552, 0xa5fc, 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a, 0xa749, 0xa74b, 0xa8e0, 0xa8df, 0xa8e1, 0xab5e, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b, 0xd860, 0xa25d, 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2, 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0xa74c, 0xa8e4, 0xa8e3, 0xa8e5, 0xaddd, 0xbeac, 0xc94e, 0xa554, 0xa555, 0xa641, 0xca6a, 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0xa4be, 0xc955, 0xcbcd, 0xab61, 0xade0, 0xadde, 0xaddf, 0xbead, 0xa556, 0xa642, 0xc9bc, 0xa74d, 0xa74e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0xd0e2, 0xd0e3, 0xade3, 0xd0e4, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0xd468, 0xd861, 0xdcc5, 0xe140, 0xbbfe, 0xbeae, 0xe8f9, 0xa44c, 0xa45a, 0xb0c4, 0xb3cd, 0xb9b9, 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558, 0xa8e7, 0xa44d, 0xa44e, 0xa462, 0xa4c0, 0xa4c1, 0xa4c2, 0xc9be, 0xa55a, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645, 0xc9bd, 0xa647, 0xa643, 0xca6c, 0xaaec, 0xca6d, 0xca6e, 0xa750, 0xa74f, 0xa753, 0xa751, 0xa752, 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0xcbd0, 0xa8ee, 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xa8ef, 0xab63, 0xcdf0, 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62, 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xd0e7, 0xade8, 0xade6, 0xade9, 0xd0e9, 0xd0ea, 0xd0e6, 0xd0ec, 0xb3d1, 0xb0c5, 0xd469, 0xd46b, 0xd46a, 0xd46c, 0xb0c6, 0xb3ce, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7, 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb, 0xb9ba, 0xe35a, 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3, 0xbc43, 0xbeaf, 0xbeb0, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1, 0xa44f, 0xa55c, 0xa55b, 0xa648, 0xc9c0, 0xa755, 0xa756, 0xa754, 0xa757, 0xca6f, 0xca70, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3, 0xab6b, 0xab69, 0xab6a, 0xd0ed, 0xb0c7, 0xd46e, 0xb0ca, 0xd46d, 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3, 0xb3d2, 0xb6d2, 0xb6d5, 0xb6d6, 0xb6d4, 0xb6d3, 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4, 0xbeb1, 0xecbf, 0xc079, 0xf1ee, 0xc455, 0xa463, 0xa4c3, 0xc956, 0xa4c4, 0xa4c5, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7, 0xab6d, 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6, 0xa55f, 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a, 0xc9c1, 0xa758, 0xadea, 0xd46f, 0xb6d7, 0xe145, 0xb9bc, 0xe8fa, 0xf3fd, 0xa4c7, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451, 0xa464, 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d, 0xc9c3, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452, 0xa4cb, 0xa565, 0xa564, 0xca72, 0xa8f6, 0xc957, 0xa567, 0xa566, 0xa64c, 0xa64d, 0xca73, 0xa759, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9, 0xab6f, 0xcdf5, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74, 0xca75, 0xcbd9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8, 0xab70, 0xd470, 0xaded, 0xd0ef, 0xadec, 0xd864, 0xb3d6, 0xd865, 0xe146, 0xb9bd, 0xbc46, 0xf1ef, 0xc958, 0xa568, 0xb0d1, 0xa453, 0xa465, 0xa4ce, 0xa4cd, 0xa4cf, 0xa8fb, 0xa8fa, 0xa8fc, 0xab71, 0xadee, 0xe8fb, 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575, 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576, 0xa56b, 0xa572, 0xa571, 0xa57b, 0xa570, 0xa653, 0xa659, 0xa655, 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657, 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xca7e, 0xca7b, 0xa767, 0xca7c, 0xa75b, 0xa75d, 0xa775, 0xa770, 0xcaa5, 0xca7d, 0xa75f, 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d, 0xca76, 0xa773, 0xa764, 0xa76e, 0xa76f, 0xca77, 0xa76c, 0xa76a, 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772, 0xcaa3, 0xa766, 0xa763, 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769, 0xa760, 0xcaa2, 0xca79, 0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee, 0xa950, 0xcbe1, 0xcbe5, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd, 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949, 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0xa948, 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xa94a, 0xcbde, 0xa947, 0xa942, 0xa940, 0xcbec, 0xa94e, 0xce48, 0xcdfb, 0xce4b, 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72, 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0xab79, 0xce45, 0xce42, 0xab77, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9, 0xab73, 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a, 0xaba2, 0xab76, 0xab75, 0xcdfe, 0xce44, 0xce4e, 0xd144, 0xadfb, 0xd0f1, 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9, 0xadfe, 0xd0fb, 0xadfa, 0xadfd, 0xd0fe, 0xadf5, 0xd0f5, 0xd142, 0xd143, 0xadf7, 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1, 0xd146, 0xd0f9, 0xd0fd, 0xadf6, 0xae42, 0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0xd145, 0xae44, 0xadf0, 0xd0fc, 0xd0f3, 0xadf8, 0xd0f2, 0xd0f7, 0xd0f0, 0xae41, 0xd477, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df, 0xd47c, 0xb0db, 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2, 0xb0e1, 0xd4a5, 0xd4a8, 0xd473, 0xb3e8, 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e, 0xb0d3, 0xd4a6, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475, 0xd478, 0xd47d, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xb0d7, 0xb1d2, 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0xb0d4, 0xd471, 0xd472, 0xd86a, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8, 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db, 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0xd866, 0xd873, 0xd86d, 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc, 0xb3e7, 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9, 0xd867, 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0xb3ed, 0xb3e9, 0xb3e5, 0xd870, 0xb3eb, 0xdcd5, 0xdcd1, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5, 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde, 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9, 0xdcdb, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0xb6d8, 0xb6e4, 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f, 0xb6d9, 0xdcd4, 0xb6e2, 0xdcdd, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0xe14b, 0xb9c2, 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0xb9c4, 0xb9cb, 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc, 0xe14a, 0xe14f, 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0, 0xe14d, 0xe152, 0xb9ca, 0xe147, 0xbc4d, 0xe547, 0xe544, 0xbc47, 0xbc53, 0xbc54, 0xbc4a, 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xe546, 0xbc49, 0xe548, 0xbc48, 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa, 0xe4f7, 0xd86b, 0xe4fd, 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8, 0xbc4f, 0xbc4e, 0xbc50, 0xe4fe, 0xbeb2, 0xe540, 0xe945, 0xe8fd, 0xbebe, 0xe942, 0xbeb6, 0xbeba, 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe, 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0xbebf, 0xe946, 0xbeb7, 0xbeb4, 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5, 0xecc4, 0xc07d, 0xecc3, 0xc07e, 0xecc1, 0xecc2, 0xc07a, 0xc0a1, 0xc07c, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf, 0xefbd, 0xefbb, 0xefbe, 0xc360, 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5, 0xf1f1, 0xc251, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457, 0xc45a, 0xf5c5, 0xf5c6, 0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0xf6d8, 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0xc5f1, 0xf8a5, 0xf8ee, 0xc949, 0xa57d, 0xa57c, 0xa65f, 0xa65e, 0xc9c7, 0xa65d, 0xc9c6, 0xa779, 0xcaa9, 0xcaa8, 0xa777, 0xa77a, 0xcaa7, 0xa778, 0xcbf0, 0xcbf1, 0xa954, 0xabaa, 0xd148, 0xd149, 0xae45, 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2, 0xb6e9, 0xb6ea, 0xdce1, 0xb9cf, 0xb9ce, 0xe549, 0xe948, 0xe947, 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f, 0xa662, 0xa666, 0xc9c9, 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661, 0xa660, 0xc9ca, 0xa7a6, 0xa7a3, 0xa77d, 0xcaaa, 0xcaab, 0xa7a1, 0xcaad, 0xa77b, 0xcaae, 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf, 0xa959, 0xcbfe, 0xa95b, 0xa95a, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4, 0xcbf2, 0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8, 0xa956, 0xcbfb, 0xa95c, 0xcc41, 0xcbf9, 0xabab, 0xa955, 0xabac, 0xce54, 0xce5a, 0xabb2, 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b, 0xce5d, 0xce57, 0xce56, 0xce51, 0xce52, 0xabad, 0xabaf, 0xabae, 0xce53, 0xce5c, 0xabb1, 0xce50, 0xd153, 0xd152, 0xd157, 0xd14e, 0xd151, 0xd150, 0xd154, 0xd158, 0xae47, 0xae4a, 0xd14f, 0xd155, 0xae49, 0xd14a, 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c, 0xd4b1, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf, 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0xd4ca, 0xd4c8, 0xd4be, 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5, 0xd4b7, 0xb0f6, 0xb0f2, 0xd4ad, 0xd4c3, 0xd4b5, 0xd4b3, 0xd4c6, 0xb0f3, 0xd4cc, 0xb0ed, 0xb0ef, 0xd4bb, 0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb, 0xd4c2, 0xd4c4, 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2, 0xb3fb, 0xb3f9, 0xd8a4, 0xb3f6, 0xd8a8, 0xd8a3, 0xd8a5, 0xd87d, 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b, 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0xd8b3, 0xdcef, 0xd8ac, 0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6, 0xdcea, 0xdce5, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0xb6ee, 0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0xdceb, 0xb6eb, 0xb6f5, 0xdcf0, 0xdce4, 0xdced, 0xdce3, 0xb6f1, 0xb6f3, 0xdce8, 0xdcf1, 0xe15d, 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1, 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6, 0xe15a, 0xe160, 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168, 0xe158, 0xe161, 0xb9d3, 0xe167, 0xe159, 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d, 0xe552, 0xe54e, 0xe551, 0xbc5c, 0xbea5, 0xbc5b, 0xe54a, 0xe550, 0xbc5a, 0xe54f, 0xe54c, 0xbc58, 0xe94d, 0xe94f, 0xe94a, 0xbec1, 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950, 0xbec2, 0xe949, 0xe94b, 0xc0a5, 0xeccc, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca, 0xc253, 0xc252, 0xf1f6, 0xf1f8, 0xf1f7, 0xc361, 0xc362, 0xc363, 0xf442, 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7, 0xce5f, 0xb3fc, 0xb3fd, 0xdcf2, 0xb9d8, 0xe169, 0xe553, 0xc95a, 0xcab0, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xf1f9, 0xc4dc, 0xa469, 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xb0f7, 0xb9da, 0xb9db, 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1, 0xc971, 0xa5a2, 0xa669, 0xa66a, 0xc9cb, 0xa7a8, 0xcab1, 0xa961, 0xcc43, 0xa95f, 0xa960, 0xa95e, 0xd15a, 0xabb6, 0xabb5, 0xabb7, 0xabb4, 0xce61, 0xa962, 0xabb3, 0xae4d, 0xae4e, 0xae4f, 0xd4cd, 0xb3fe, 0xd8b4, 0xb0f8, 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d, 0xbec4, 0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0xa5a4, 0xc9d1, 0xa66c, 0xa66f, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc, 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0xa7b3, 0xa7b0, 0xcab6, 0xcab9, 0xcab8, 0xa7aa, 0xa7b2, 0xa7af, 0xcab5, 0xcab3, 0xa7ae, 0xa7a9, 0xa7ac, 0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4, 0xcab2, 0xcaba, 0xa7ab, 0xa967, 0xa96f, 0xcc4f, 0xcc48, 0xa970, 0xcc53, 0xcc44, 0xcc4b, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50, 0xa963, 0xcc51, 0xcc4a, 0xcc4d, 0xa972, 0xa969, 0xcc54, 0xcc52, 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968, 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xabc0, 0xce6f, 0xabb8, 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe, 0xabc1, 0xabbc, 0xce70, 0xabbf, 0xae56, 0xce76, 0xce64, 0xce66, 0xce6d, 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e, 0xce68, 0xabc3, 0xce6a, 0xce69, 0xce74, 0xabba, 0xce65, 0xabc2, 0xabbd, 0xae5c, 0xd162, 0xae5b, 0xd160, 0xae50, 0xae55, 0xd15f, 0xd15c, 0xd161, 0xae51, 0xd15b, 0xae54, 0xae52, 0xd163, 0xae53, 0xae57, 0xae58, 0xae5a, 0xae59, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2, 0xd4d3, 0xd4e6, 0xb140, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0, 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144, 0xd4e7, 0xd4e5, 0xd4d6, 0xd4eb, 0xd4df, 0xd4da, 0xd4d0, 0xd4ec, 0xd4dc, 0xd4cf, 0xb142, 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7, 0xd4ce, 0xb141, 0xd4db, 0xd4d8, 0xb0fc, 0xd4d1, 0xd4e9, 0xb0fd, 0xd4d9, 0xd4d5, 0xd4e8, 0xb440, 0xd8bb, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0xb442, 0xd8c6, 0xd8c3, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47, 0xb443, 0xd8ce, 0xd8b6, 0xd8c0, 0xd8c5, 0xb441, 0xb444, 0xd8cc, 0xd8cf, 0xd8ba, 0xd8b7, 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xd8bf, 0xd8c1, 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9, 0xdd44, 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd, 0xb6fc, 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0xdcf4, 0xdcfe, 0xdcf3, 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0xe16e, 0xb9e2, 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178, 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4, 0xe16d, 0xb9df, 0xe17b, 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0xe173, 0xe555, 0xbc61, 0xe558, 0xe557, 0xe55a, 0xe55c, 0xbc5f, 0xe556, 0xe554, 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60, 0xbc62, 0xe560, 0xe957, 0xe956, 0xe955, 0xe958, 0xe951, 0xe952, 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xe95b, 0xe954, 0xecd1, 0xc0a8, 0xeccf, 0xecd4, 0xecd3, 0xe959, 0xc0a7, 0xecd2, 0xecce, 0xecd6, 0xecd5, 0xc0a6, 0xecd0, 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb, 0xf1fc, 0xc45c, 0xc45d, 0xf443, 0xf5c8, 0xf5c7, 0xf6db, 0xf6dc, 0xf7d5, 0xf8a7, 0xa46c, 0xa46d, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3, 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0xa973, 0xcc55, 0xa975, 0xa974, 0xcc56, 0xabc4, 0xae5d, 0xd165, 0xd4f0, 0xb145, 0xb447, 0xd4ef, 0xb446, 0xb9e5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7, 0xc45e, 0xc570, 0xc972, 0xa5a6, 0xc973, 0xa676, 0xa674, 0xa675, 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0xcabd, 0xcc57, 0xcc58, 0xa976, 0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0xabc8, 0xabc5, 0xabc7, 0xabc9, 0xabc6, 0xd166, 0xce77, 0xd168, 0xd167, 0xae63, 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a, 0xd4f2, 0xd4f1, 0xb149, 0xb148, 0xb147, 0xb14b, 0xb146, 0xd8d5, 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448, 0xb44a, 0xd8d3, 0xdd48, 0xdd49, 0xdd4a, 0xb9e6, 0xb9ee, 0xe17e, 0xb9e8, 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7, 0xb9eb, 0xbc66, 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d, 0xbec8, 0xecd8, 0xecd9, 0xc364, 0xc45f, 0xa46f, 0xa678, 0xabca, 0xd169, 0xae67, 0xb14e, 0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470, 0xc95c, 0xa4d6, 0xc974, 0xc9d4, 0xa679, 0xa97c, 0xdd4b, 0xa471, 0xa4d7, 0xc9d5, 0xcabe, 0xcabf, 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c, 0xc0aa, 0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0xa7c0, 0xa7bf, 0xa7bd, 0xa7be, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a, 0xa97d, 0xabce, 0xce78, 0xabcd, 0xabcb, 0xabcc, 0xae6a, 0xae68, 0xd16b, 0xae69, 0xd16a, 0xae5e, 0xd4f3, 0xb150, 0xb151, 0xb14f, 0xb9f0, 0xe1a2, 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8, 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8, 0xc9d6, 0xc9d9, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4, 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9, 0xcc68, 0xcc62, 0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69, 0xcc6c, 0xcc67, 0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64, 0xcc5b, 0xcc5f, 0xcc6b, 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2, 0xa9a4, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b, 0xceac, 0xcea9, 0xce79, 0xabd0, 0xcea7, 0xcea8, 0xcea6, 0xce7c, 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0xae6f, 0xae6e, 0xd16c, 0xae6b, 0xd16e, 0xae70, 0xd16f, 0xae73, 0xae71, 0xd170, 0xceae, 0xd172, 0xae6d, 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153, 0xb152, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe, 0xb158, 0xd541, 0xb15a, 0xb156, 0xb15e, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4, 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d, 0xd4fa, 0xb159, 0xd544, 0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451, 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4, 0xd8ed, 0xd8e6, 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0xd8f1, 0xb452, 0xd8eb, 0xdd4f, 0xd8dd, 0xb44f, 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2, 0xd8e8, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743, 0xd8db, 0xdd52, 0xb744, 0xdd4d, 0xdd51, 0xe1a9, 0xe1b0, 0xe1a7, 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4, 0xe1a8, 0xe1a3, 0xb9f1, 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab, 0xe1aa, 0xe1af, 0xe565, 0xe567, 0xbc6b, 0xe568, 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d, 0xe564, 0xe569, 0xe56b, 0xe566, 0xe961, 0xe966, 0xe960, 0xe965, 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a, 0xe962, 0xecda, 0xc0af, 0xc0ad, 0xc0ac, 0xc0ae, 0xefc4, 0xf172, 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9, 0xc4de, 0xf5ca, 0xf6de, 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xf7d6, 0xa474, 0xa67b, 0xc9da, 0xcaca, 0xa8b5, 0xb15f, 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5, 0xae74, 0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0xabd1, 0xceaf, 0xb453, 0xa479, 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xcacb, 0xa7c6, 0xcacc, 0xa9ae, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d, 0xa9a9, 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0, 0xceb1, 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75, 0xb162, 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545, 0xb456, 0xd8f3, 0xb457, 0xd8f2, 0xb454, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59, 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5, 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3, 0xe571, 0xe56f, 0xbc6d, 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d, 0xe96b, 0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6, 0xe96e, 0xf1fe, 0xa47a, 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af, 0xb746, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0xc979, 0xc97a, 0xc9dc, 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0xa7c7, 0xa9b3, 0xa9b4, 0xa9b1, 0xa9b0, 0xceb8, 0xa9b2, 0xabd6, 0xceb7, 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79, 0xd175, 0xd177, 0xae77, 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548, 0xb167, 0xb166, 0xb164, 0xb165, 0xd549, 0xb168, 0xb45a, 0xb45b, 0xb45c, 0xdd5d, 0xdd5f, 0xdd61, 0xb748, 0xb747, 0xb459, 0xdd60, 0xdd5e, 0xe1b8, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9, 0xe1b7, 0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574, 0xbc71, 0xbc74, 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970, 0xe972, 0xe96f, 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655, 0xa9b5, 0xa7ca, 0xabd8, 0xa47b, 0xa4dc, 0xa5af, 0xc9dd, 0xa7cb, 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c, 0xa6a1, 0xb749, 0xa47d, 0xa4dd, 0xa4de, 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc, 0xcc71, 0xcc72, 0xcc73, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda, 0xcebc, 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d, 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca, 0xe974, 0xc0b1, 0xc573, 0xf7d8, 0xcc74, 0xcebd, 0xb16b, 0xd8f4, 0xb74a, 0xc255, 0xa7ce, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343, 0xb16e, 0xb16c, 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xc94c, 0xc9df, 0xcad5, 0xa7cf, 0xcad4, 0xa7d0, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb, 0xa9b9, 0xa9ba, 0xcc75, 0xabdd, 0xcebe, 0xabe0, 0xabdc, 0xabe2, 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f, 0xb16f, 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174, 0xb173, 0xd8f6, 0xd8f5, 0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64, 0xb74c, 0xdd63, 0xe577, 0xbc78, 0xe1c1, 0xbc77, 0xb9fd, 0xecde, 0xe975, 0xc0b2, 0xecdd, 0xf240, 0xf448, 0xf449, 0xa4df, 0xa5b2, 0xc97b, 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1, 0xc9e0, 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0xa9bd, 0xcc78, 0xa9be, 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6, 0xcad9, 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2, 0xa7d7, 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2, 0xcc7e, 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3, 0xccac, 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0, 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xcecd, 0xabe6, 0xcc7b, 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab, 0xa9c4, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0xcebf, 0xcec0, 0xceca, 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6, 0xcec7, 0xcec9, 0xabe9, 0xaea3, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e, 0xd17d, 0xcec8, 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2, 0xaea2, 0xced0, 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef, 0xaea5, 0xced1, 0xaea7, 0xabea, 0xcec2, 0xb176, 0xd1a4, 0xd1a6, 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178, 0xd551, 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9, 0xaeaf, 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xaea9, 0xb179, 0xd1a2, 0xb177, 0xb17a, 0xd555, 0xd55e, 0xb464, 0xb17c, 0xb1a3, 0xb465, 0xd560, 0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554, 0xd562, 0xd565, 0xd949, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac, 0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559, 0xb462, 0xd557, 0xd558, 0xb1a7, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f, 0xb1a4, 0xd55c, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0xd55a, 0xb17d, 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65, 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0xd948, 0xd94e, 0xb473, 0xb754, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0xb755, 0xb472, 0xd941, 0xd950, 0xb75d, 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe, 0xb46a, 0xd942, 0xd94b, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750, 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e, 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0xb75a, 0xba40, 0xdd71, 0xe1c4, 0xb758, 0xdd69, 0xdd6d, 0xb9fe, 0xb74f, 0xdd66, 0xdd67, 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f, 0xe1c8, 0xe1c9, 0xe1ce, 0xbc7d, 0xe1d5, 0xba47, 0xba46, 0xe1d0, 0xbc7c, 0xe1c5, 0xba45, 0xe1d4, 0xba43, 0xba44, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3, 0xbca3, 0xe1cb, 0xbc7b, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd, 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xbca4, 0xe1cc, 0xbc7e, 0xe579, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8, 0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0xe978, 0xbcaa, 0xe5a1, 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd, 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b, 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0xe9a2, 0xe97e, 0xece1, 0xbed1, 0xe9a1, 0xe97c, 0xc0b4, 0xecdf, 0xe979, 0xe97b, 0xc0b5, 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0xefcf, 0xefc7, 0xece7, 0xefc8, 0xece3, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2, 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb, 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241, 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db, 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8, 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae, 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7, 0xe1d6, 0xba49, 0xe1d8, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8, 0xc257, 0xc0b9, 0xa4e1, 0xcae6, 0xccb2, 0xa9d1, 0xa9d0, 0xa9d2, 0xabf3, 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af, 0xb476, 0xd951, 0xa4e2, 0xa47e, 0xa4e3, 0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab, 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8, 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0, 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef, 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0xcae7, 0xa7db, 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9, 0xcaea, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc, 0xa7e9, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba, 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0xccc0, 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7, 0xa9d8, 0xa9d6, 0xa9ee, 0xa9e6, 0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7, 0xa9f0, 0xced4, 0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xa9ec, 0xa9ed, 0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xceda, 0xac41, 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43, 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7, 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc, 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2, 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0xaec1, 0xd1be, 0xaebf, 0xaec0, 0xd1b4, 0xd1c4, 0xaeb6, 0xd566, 0xd1c6, 0xd1c0, 0xd1b7, 0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb, 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc, 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd, 0xd1c8, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7, 0xd567, 0xb1b7, 0xb1cb, 0xb1ca, 0xb1bf, 0xd579, 0xd575, 0xd572, 0xd5a6, 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0xb1cc, 0xb1c9, 0xd57b, 0xd56a, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1, 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xb478, 0xd5a5, 0xd571, 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3, 0xd56f, 0xb1b8, 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e, 0xb1b0, 0xb1c4, 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0, 0xb1bb, 0xb1b9, 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954, 0xd953, 0xd56b, 0xd964, 0xb47a, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b, 0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479, 0xb4a3, 0xb4a1, 0xd969, 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971, 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0xd963, 0xd95d, 0xb4a4, 0xb4a2, 0xd1b9, 0xd956, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6, 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961, 0xd95e, 0xb4ae, 0xb770, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c, 0xddbb, 0xb769, 0xdd7a, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e, 0xb76f, 0xdda5, 0xddb2, 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d, 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad, 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0, 0xddac, 0xdda1, 0xba53, 0xddaf, 0xb76d, 0xdda7, 0xdda6, 0xb767, 0xb763, 0xe1ee, 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec, 0xba51, 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0xe1db, 0xe1e8, 0xe1dc, 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3, 0xba52, 0xe5ba, 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0, 0xe5ae, 0xe1df, 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3, 0xba4e, 0xbcb1, 0xba50, 0xba55, 0xe1e1, 0xe1ed, 0xe1e6, 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa, 0xe5b6, 0xe5b5, 0xe5b7, 0xe5b4, 0xbcb5, 0xbcbb, 0xbcb8, 0xbcb9, 0xe5af, 0xe5b2, 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2, 0xe5b9, 0xe5b0, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba, 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3, 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0xbed6, 0xbedd, 0xe9ab, 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7, 0xbede, 0xc0ba, 0xe9a7, 0xe9a6, 0xbee0, 0xbee1, 0xe9a5, 0xe9a4, 0xc0bc, 0xe9ae, 0xbeda, 0xe9ac, 0xc0bd, 0xc0c2, 0xecea, 0xecec, 0xc0bf, 0xeced, 0xece9, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259, 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3, 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242, 0xf245, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0xf44e, 0xc464, 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd, 0xc4e2, 0xc4e1, 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0xf7dc, 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4, 0xd972, 0xe9af, 0xa6ac, 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46, 0xcee7, 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xb1d3, 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0, 0xd976, 0xb1cd, 0xb4af, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0, 0xd973, 0xd977, 0xd974, 0xb771, 0xddbc, 0xba56, 0xe1f4, 0xbee3, 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1, 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0xa4e5, 0xd979, 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6, 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2, 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c, 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xecf0, 0xc25f, 0xf8f0, 0xa4e8, 0xccc3, 0xa9f3, 0xac49, 0xceea, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1, 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da, 0xd97d, 0xd97e, 0xddbe, 0xba59, 0xba58, 0xecf1, 0xefd9, 0xf24a, 0xf249, 0xf44f, 0xc95e, 0xac4a, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af, 0xa6b0, 0xc9ee, 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9, 0xcafc, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0xa9fb, 0xa9f9, 0xccca, 0xccc6, 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb, 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6, 0xa9f5, 0xa9fd, 0xceef, 0xcef5, 0xac50, 0xac4d, 0xceec, 0xcef1, 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3, 0xac4c, 0xcef8, 0xac4f, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0xcef7, 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xaecf, 0xd1d5, 0xaeca, 0xd1d3, 0xaece, 0xaecb, 0xd1d6, 0xaecd, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad, 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0xb1e0, 0xd5a9, 0xb1e2, 0xb1e1, 0xd9a7, 0xd9a2, 0xb4b6, 0xb4ba, 0xb4b7, 0xd9a5, 0xd9a8, 0xb4b8, 0xb4b9, 0xb4be, 0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1, 0xb4bd, 0xd9a4, 0xb779, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4, 0xddc3, 0xddc0, 0xb77b, 0xddc2, 0xb4bb, 0xddc6, 0xddc1, 0xb778, 0xb774, 0xb77a, 0xddc5, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6, 0xba5a, 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xbcc7, 0xe5c9, 0xe5c4, 0xbcca, 0xe5c6, 0xbcc9, 0xe5c3, 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba, 0xe9b9, 0xe9b4, 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5, 0xe9b6, 0xe9b7, 0xe9bc, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6, 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452, 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea, 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4, 0xb0d2, 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xb77c, 0xe1fa, 0xe1f9, 0xa4eb, 0xa6b3, 0xccd2, 0xaa42, 0xaa41, 0xcef9, 0xcefa, 0xd1d7, 0xd1d8, 0xaed2, 0xaed3, 0xaed4, 0xd5af, 0xb1e6, 0xb4c2, 0xb4c1, 0xddc8, 0xdf7a, 0xe1fb, 0xe9bd, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd, 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0xc9f1, 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4, 0xcafd, 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42, 0xcb45, 0xa7f5, 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa, 0xa841, 0xcb40, 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe, 0xaa57, 0xccd4, 0xaa43, 0xaa4d, 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53, 0xccd7, 0xaa49, 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4, 0xaa51, 0xaa4f, 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a, 0xaa50, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0xaa52, 0xcce1, 0xccd6, 0xaa55, 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47, 0xaa4b, 0xcce0, 0xcf5b, 0xac5c, 0xac69, 0xcf56, 0xcf4c, 0xac62, 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52, 0xcefe, 0xcf41, 0xcf44, 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0xcefd, 0xcf5f, 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66, 0xac59, 0xac61, 0xac6d, 0xac56, 0xac58, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40, 0xac6c, 0xac67, 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c, 0xcf54, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f, 0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d, 0xcf42, 0xcf5e, 0xcf57, 0xac55, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1, 0xaedf, 0xaeeb, 0xd1da, 0xd1e3, 0xd1eb, 0xd1d9, 0xd1f4, 0xaed5, 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0xd1e6, 0xd1f0, 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0xaed6, 0xaeda, 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0xaee5, 0xaeec, 0xaedb, 0xaee7, 0xd1e9, 0xaee9, 0xaed8, 0xaed7, 0xd1db, 0xd1df, 0xaee0, 0xd1f1, 0xd1e8, 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0xd5c4, 0xd5b4, 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1, 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec, 0xd5c7, 0xb1e7, 0xb1fc, 0xb1f2, 0xb1f6, 0xb1f5, 0xd5b1, 0xd5ce, 0xd5d4, 0xd5cc, 0xd5d3, 0xd5c0, 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7, 0xd5cb, 0xb1f0, 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb, 0xb1e9, 0xd5ba, 0xd5cf, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7, 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede, 0xd9c0, 0xb1eb, 0xb1f3, 0xd9c3, 0xd9d9, 0xd9ce, 0xb4d6, 0xb4d1, 0xd9bd, 0xb4d2, 0xd9cd, 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5, 0xb4c4, 0xd9b3, 0xb4c7, 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0, 0xb4c9, 0xb4c5, 0xd9bb, 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9, 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1, 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd, 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc, 0xd9be, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2, 0xd9b9, 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc, 0xd9d8, 0xd9ae, 0xddf2, 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xddec, 0xddcb, 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xddcf, 0xdde2, 0xdde7, 0xddd3, 0xdde4, 0xddd0, 0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0xddcc, 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0xd5b8, 0xddd4, 0xdde6, 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca, 0xb7a3, 0xddcd, 0xb7b0, 0xdddd, 0xddc9, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa, 0xddda, 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0xdde8, 0xb7a5, 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0xb7a7, 0xdec6, 0xb7ae, 0xe24a, 0xe248, 0xe25e, 0xe246, 0xe258, 0xb77d, 0xba5f, 0xe242, 0xe25d, 0xe247, 0xe255, 0xba64, 0xba5d, 0xe25b, 0xe240, 0xe25a, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b, 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc, 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245, 0xe250, 0xe24c, 0xe24e, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0xe262, 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256, 0xba69, 0xba62, 0xe252, 0xe25c, 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de, 0xbccd, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5, 0xe5ee, 0xe5eb, 0xe5dd, 0xe5ce, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8, 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed, 0xe5e0, 0xe5e6, 0xbcd4, 0xe5e3, 0xe5ea, 0xbcd9, 0xbcd3, 0xe5dc, 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0, 0xe5d6, 0xe5d7, 0xbccf, 0xbccc, 0xe5d2, 0xbcd2, 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca, 0xe9c2, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7, 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0xbef1, 0xe9dd, 0xbef5, 0xbef8, 0xe9c0, 0xbef4, 0xe9db, 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9, 0xe9d3, 0xe9da, 0xe9d9, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5, 0xe9d8, 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0xe9d0, 0xe9bf, 0xe9c1, 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0xe9c7, 0xc0cf, 0xed45, 0xc0c8, 0xecf5, 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7, 0xed49, 0xecf3, 0xecfe, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9, 0xed40, 0xecf4, 0xc0d0, 0xed47, 0xecf9, 0xc0cc, 0xecfb, 0xecf8, 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0xed42, 0xc263, 0xefe7, 0xc268, 0xc269, 0xc262, 0xefe6, 0xefe3, 0xefe4, 0xc266, 0xefde, 0xefe2, 0xc265, 0xefdf, 0xc267, 0xc264, 0xefdd, 0xefe1, 0xefe5, 0xf251, 0xf24e, 0xf257, 0xf256, 0xf254, 0xf24f, 0xc372, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252, 0xf24d, 0xefe0, 0xc36f, 0xf24c, 0xf456, 0xf455, 0xf255, 0xc468, 0xf459, 0xf45a, 0xf454, 0xf458, 0xf453, 0xf5d1, 0xf457, 0xc4e7, 0xc4e5, 0xf5cf, 0xf5d2, 0xf5ce, 0xf5d0, 0xc4e6, 0xf6e5, 0xf6e6, 0xc576, 0xf6e4, 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656, 0xf8f3, 0xf8f1, 0xf8f2, 0xf8f4, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59, 0xcce9, 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7, 0xd1f9, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd, 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5, 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb, 0xbcda, 0xe5f0, 0xe9df, 0xe9de, 0xe9e0, 0xbef9, 0xed4b, 0xc0d3, 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842, 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0xb7b3, 0xe6d1, 0xbefa, 0xc26b, 0xa4ef, 0xa6ba, 0xcceb, 0xaa5c, 0xccea, 0xcf65, 0xac6f, 0xcf66, 0xac70, 0xd1fc, 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db, 0xd5da, 0xd9de, 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb, 0xe266, 0xe267, 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4, 0xe9e1, 0xe9e2, 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8, 0xc95f, 0xac71, 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5, 0xb7b4, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9, 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6, 0xa4f1, 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xccec, 0xcf6a, 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0xb240, 0xb241, 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42, 0xde40, 0xddfd, 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7, 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d, 0xefea, 0xf25b, 0xf6e7, 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0xc9f7, 0xcb49, 0xcb4a, 0xaa5e, 0xcced, 0xac74, 0xcf6b, 0xcf6c, 0xaef0, 0xaef4, 0xd244, 0xaef3, 0xaef1, 0xaef2, 0xd5df, 0xb242, 0xb4e3, 0xb4e1, 0xb4e2, 0xd9e6, 0xba72, 0xa4f4, 0xc9a1, 0xa5c3, 0xc9a4, 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0xc9f8, 0xc9fc, 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb, 0xa6c1, 0xc9f9, 0xc9fd, 0xa6c2, 0xa6bd, 0xa6be, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf, 0xa6c0, 0xa6c3, 0xcb5b, 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c, 0xcb4d, 0xcb55, 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858, 0xa85a, 0xcb4b, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0xcd45, 0xa847, 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848, 0xa849, 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e, 0xa853, 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54, 0xa84b, 0xcb58, 0xcd44, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0xcd4b, 0xaa62, 0xaa65, 0xcd42, 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76, 0xaa68, 0xaa66, 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb, 0xaa6e, 0xaa73, 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xaa63, 0xcd49, 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d, 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0xaa7e, 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e, 0xccf0, 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74, 0xccfe, 0xaa61, 0xaca6, 0xcd4c, 0xcf7c, 0xcfa1, 0xcfa4, 0xcf77, 0xcfa7, 0xcfaa, 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad, 0xcf7b, 0xcf73, 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5, 0xcf7d, 0xac7d, 0xcf70, 0xcfa8, 0xcfab, 0xac7a, 0xaca8, 0xcf6d, 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48, 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9, 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6, 0xac79, 0xcf7e, 0xd24c, 0xaefd, 0xaf43, 0xd255, 0xd25b, 0xd257, 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256, 0xd25f, 0xaf45, 0xaef6, 0xaf40, 0xd24e, 0xaf42, 0xd24f, 0xd259, 0xaf44, 0xd268, 0xd248, 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a, 0xd267, 0xd261, 0xd253, 0xd262, 0xd25c, 0xd265, 0xd263, 0xaf49, 0xd254, 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251, 0xb243, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xd258, 0xd25d, 0xb265, 0xd5e1, 0xd5e5, 0xb252, 0xb250, 0xb247, 0xd5e3, 0xd5e2, 0xb25b, 0xd5e8, 0xb255, 0xd5fa, 0xd647, 0xb244, 0xd5f7, 0xd5f0, 0xb267, 0xd5e0, 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e, 0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640, 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e, 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed, 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6, 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260, 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c, 0xb24b, 0xd9e7, 0xd643, 0xd5eb, 0xd9fc, 0xb24d, 0xb541, 0xb25a, 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea, 0xb4eb, 0xb4e7, 0xda49, 0xb4ed, 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d, 0xda44, 0xd9f1, 0xb4fa, 0xb4f4, 0xd9fd, 0xb4e4, 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55, 0xda56, 0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd, 0xd9f2, 0xd9f9, 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9, 0xd9eb, 0xb4ea, 0xd9f8, 0xb4f8, 0xb542, 0xd9fa, 0xda53, 0xda4b, 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xda57, 0xb4ef, 0xda41, 0xd9f4, 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c, 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6, 0xda46, 0xb545, 0xd9f5, 0xd5e4, 0xda50, 0xda4e, 0xda52, 0xd9ec, 0xb540, 0xde61, 0xde60, 0xde46, 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7, 0xde68, 0xb7c2, 0xde5e, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48, 0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc, 0xb7cb, 0xb7c5, 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65, 0xb7cd, 0xb7bb, 0xde54, 0xde4d, 0xb7c4, 0xb7c3, 0xde50, 0xde5a, 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e, 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c, 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44, 0xde5d, 0xde5c, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e, 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xe273, 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d, 0xe26f, 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e, 0xe2b6, 0xe2ac, 0xba7c, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0xe27a, 0xe277, 0xe278, 0xe2b2, 0xe2b7, 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0xe270, 0xe5fa, 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274, 0xbaaa, 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0xe2a9, 0xe2a1, 0xe272, 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xba79, 0xbcdf, 0xe2a6, 0xe5f9, 0xe2ad, 0xe276, 0xe644, 0xe64e, 0xbce2, 0xe64d, 0xe659, 0xbce4, 0xe64b, 0xe64f, 0xbcef, 0xe646, 0xbce7, 0xe652, 0xe9f0, 0xbcf3, 0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0xbce3, 0xe657, 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1, 0xbcec, 0xe64c, 0xe2a2, 0xe648, 0xe65f, 0xbce8, 0xbceb, 0xe661, 0xbce0, 0xe656, 0xe5fb, 0xe65c, 0xc0df, 0xe64a, 0xbce1, 0xe645, 0xbce5, 0xe5fc, 0xbaab, 0xe641, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658, 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xe9f3, 0xbf49, 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43, 0xe9f5, 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44, 0xea46, 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0xbf47, 0xe9fe, 0xbf46, 0xe9f9, 0xe9ed, 0xe9f2, 0xe9fd, 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1, 0xe5fd, 0xe9ec, 0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43, 0xe9ee, 0xe9fc, 0xed51, 0xc0e3, 0xc0d7, 0xc0db, 0xed53, 0xed59, 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56, 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de, 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0xeff7, 0xc271, 0xeff4, 0xeff6, 0xc26f, 0xeff2, 0xeff3, 0xefee, 0xe9f6, 0xefef, 0xc270, 0xefeb, 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273, 0xc272, 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379, 0xf25c, 0xc376, 0xc373, 0xf267, 0xc377, 0xc374, 0xf25e, 0xf261, 0xf262, 0xf263, 0xf266, 0xeff5, 0xf25d, 0xc375, 0xf264, 0xf268, 0xf260, 0xf45d, 0xc46a, 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465, 0xf464, 0xf467, 0xf45b, 0xc469, 0xf463, 0xf466, 0xf469, 0xf461, 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xc4e9, 0xc578, 0xf6eb, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5, 0xf7e4, 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665, 0xf9a3, 0xf96c, 0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0xa6c7, 0xca41, 0xcb5e, 0xa85f, 0xa862, 0xcb5f, 0xa860, 0xa861, 0xcd58, 0xcd5a, 0xcd55, 0xcd52, 0xcd54, 0xaaa4, 0xaaa2, 0xcd56, 0xaaa3, 0xcd53, 0xcd50, 0xaaa1, 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0xcfb3, 0xacb7, 0xcfb6, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3, 0xcfb2, 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae, 0xacb5, 0xacb0, 0xcfb0, 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xd276, 0xd27b, 0xaf51, 0xd26c, 0xd272, 0xd26b, 0xd275, 0xd271, 0xaf4d, 0xaf4f, 0xd27a, 0xd26a, 0xd26d, 0xd273, 0xd274, 0xd27c, 0xd270, 0xaf4e, 0xb26d, 0xd64e, 0xd650, 0xd64c, 0xd658, 0xd64a, 0xd657, 0xb269, 0xd648, 0xda5b, 0xd652, 0xb26c, 0xd653, 0xd656, 0xd65a, 0xd64f, 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0xd651, 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f, 0xda59, 0xda62, 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f, 0xb54a, 0xda63, 0xda5c, 0xda5a, 0xb54b, 0xda5d, 0xda61, 0xb54d, 0xda64, 0xde70, 0xde77, 0xde79, 0xdea1, 0xb7da, 0xde6b, 0xb7d2, 0xde7a, 0xb7d7, 0xdea2, 0xb7ce, 0xde7d, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf, 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72, 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75, 0xb7d5, 0xb54e, 0xde7b, 0xde73, 0xde74, 0xe2c1, 0xbab4, 0xe2bd, 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0xe2bc, 0xbab5, 0xe2c0, 0xe2bb, 0xbab7, 0xbab2, 0xe2c4, 0xbab3, 0xe667, 0xe664, 0xe670, 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0xe66d, 0xe66b, 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0xe663, 0xe665, 0xbcf6, 0xe662, 0xe672, 0xe669, 0xea4a, 0xbf51, 0xea55, 0xea53, 0xbf4b, 0xea49, 0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56, 0xea51, 0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d, 0xbf4e, 0xea4f, 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58, 0xbf54, 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9, 0xc0e6, 0xed5e, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f, 0xc0ed, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa, 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a, 0xf26b, 0xf26a, 0xf269, 0xc37b, 0xc46c, 0xf46a, 0xf46b, 0xf5dc, 0xf5db, 0xc4ea, 0xf5da, 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xf8f6, 0xf9bc, 0xc679, 0xf9c6, 0xa4f6, 0xaaa6, 0xaaa7, 0xacb8, 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52, 0xb7dd, 0xa4f8, 0xb26e, 0xbab8, 0xc962, 0xcfb7, 0xd27d, 0xe2c5, 0xc0f0, 0xa4f9, 0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4, 0xb7de, 0xe2c6, 0xbcf8, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0xa6c9, 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0xaaaa, 0xaaab, 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9, 0xcfbc, 0xacbb, 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e, 0xb26f, 0xd65c, 0xd65f, 0xb552, 0xb270, 0xb551, 0xda6b, 0xda6a, 0xda68, 0xda69, 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0xdea8, 0xdea7, 0xbab9, 0xe2c9, 0xe2c8, 0xbaba, 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a, 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c, 0xf6ee, 0xf8f7, 0xa4fc, 0xc9a5, 0xa5c7, 0xc9a6, 0xca43, 0xca44, 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866, 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0xaaad, 0xaab0, 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e, 0xaaae, 0xcd63, 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xcfc5, 0xcfbf, 0xcfc4, 0xcfc0, 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5, 0xd2a7, 0xaf58, 0xaf57, 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667, 0xd2a3, 0xd2aa, 0xd662, 0xd666, 0xd665, 0xda6e, 0xda79, 0xd668, 0xd663, 0xda6d, 0xb274, 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271, 0xd660, 0xd669, 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xb556, 0xda75, 0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553, 0xb7df, 0xdead, 0xdeac, 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0xdeab, 0xe2ca, 0xbabb, 0xb7e0, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa, 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b, 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c, 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65, 0xc0f1, 0xc0f2, 0xed63, 0xc279, 0xeffe, 0xc278, 0xc37e, 0xc3a1, 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a, 0xf7e8, 0xf7e7, 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a, 0xa5c9, 0xc9a7, 0xa4fd, 0xca45, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69, 0xcd6d, 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69, 0xaab2, 0xaab1, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5, 0xcfce, 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0xacc1, 0xd2af, 0xcfd2, 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4, 0xcfd1, 0xcfc9, 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xd2b4, 0xd2ab, 0xd2b6, 0xd2ae, 0xd2b9, 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f, 0xaf5d, 0xd2b1, 0xd2ad, 0xd2b0, 0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf, 0xaf5a, 0xaf5c, 0xd678, 0xd66d, 0xd66b, 0xd66c, 0xd673, 0xd674, 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0xb279, 0xd66e, 0xb277, 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c, 0xda7e, 0xdaa1, 0xb560, 0xdaa7, 0xdaa9, 0xdaa2, 0xb55a, 0xdaa6, 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b, 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e, 0xb55c, 0xb55d, 0xb557, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0xdeb1, 0xdebc, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba, 0xdeb8, 0xdeb9, 0xdeb5, 0xdeb4, 0xdebe, 0xb7e5, 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec, 0xb7e7, 0xb7e6, 0xe2ce, 0xbabe, 0xbabd, 0xe2d3, 0xbcfc, 0xbabf, 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0xe2d1, 0xe6ab, 0xe6aa, 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xbcfe, 0xe6a8, 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0xed69, 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0xea63, 0xbf58, 0xbf5c, 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xed6d, 0xc0f5, 0xc27a, 0xc0f6, 0xc0f3, 0xed6a, 0xed68, 0xed6b, 0xed6e, 0xc0f4, 0xed6c, 0xed67, 0xf042, 0xf045, 0xf275, 0xf040, 0xf46f, 0xf046, 0xc3a2, 0xf044, 0xc27b, 0xf041, 0xf043, 0xf047, 0xf276, 0xf274, 0xc3a3, 0xf273, 0xc46e, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0, 0xf6f2, 0xc5d0, 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d, 0xdebf, 0xbf5d, 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xcd6f, 0xa260, 0xcfd7, 0xcfd8, 0xd2be, 0xd2bf, 0xb27e, 0xb2a1, 0xdaab, 0xdec2, 0xdec1, 0xdec0, 0xe2d5, 0xe2d6, 0xe2d7, 0xbac2, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e, 0xbf5f, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c, 0xf277, 0xf5de, 0xa5cc, 0xacc6, 0xb2a2, 0xdec3, 0xa5cd, 0xd2c0, 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869, 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa86b, 0xa86c, 0xcb6e, 0xcb6d, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0xcfda, 0xcfdb, 0xaccb, 0xacc9, 0xacca, 0xacc8, 0xaf60, 0xaf64, 0xaf63, 0xd2c1, 0xaf62, 0xaf61, 0xd2c2, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4, 0xb2a5, 0xb566, 0xb565, 0xdaae, 0xdaad, 0xb2a7, 0xb7ed, 0xdec5, 0xb7ee, 0xdec4, 0xe2d8, 0xe6ae, 0xbd42, 0xea6a, 0xed73, 0xc3a6, 0xc3a5, 0xc57c, 0xa5d4, 0xcd73, 0xb2a8, 0xe2d9, 0xbac3, 0xcb6f, 0xcb70, 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xaccf, 0xacd0, 0xaccd, 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0xaf68, 0xaf69, 0xb2ab, 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65, 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xd2c6, 0xaf66, 0xaf67, 0xb2ac, 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e, 0xd6a4, 0xd6a3, 0xd67d, 0xb2a9, 0xb2aa, 0xdab6, 0xb56b, 0xb56a, 0xdab0, 0xb568, 0xdab3, 0xb56c, 0xdab4, 0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2, 0xdaaf, 0xded2, 0xdec7, 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6, 0xded3, 0xded1, 0xdeca, 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc, 0xded4, 0xdecb, 0xb7f5, 0xb7ef, 0xb7f1, 0xdec9, 0xe2db, 0xbac7, 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8, 0xe2e0, 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2, 0xe6b0, 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af, 0xbd47, 0xbac4, 0xe6b6, 0xbd44, 0xea6c, 0xea6b, 0xea73, 0xea6d, 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0xea70, 0xea6e, 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76, 0xc0f9, 0xf04d, 0xc2a1, 0xf04e, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a, 0xc3a7, 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0xc4ee, 0xf5df, 0xc57e, 0xf6f4, 0xc57d, 0xf7ea, 0xc5f5, 0xc5f6, 0xf9cc, 0xacd1, 0xcfde, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d, 0xaaba, 0xacd2, 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae, 0xd6a5, 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb, 0xe6b8, 0xe6b9, 0xe6ba, 0xed78, 0xf051, 0xf471, 0xf470, 0xf6f5, 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xe2e1, 0xbd4b, 0xea74, 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6, 0xacd5, 0xd2cc, 0xaf71, 0xaf72, 0xaf73, 0xb2b0, 0xd6a7, 0xb2af, 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca, 0xbd4c, 0xbf64, 0xea75, 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473, 0xa5d8, 0xa86e, 0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79, 0xcfe5, 0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9, 0xcfe1, 0xcfe2, 0xcfe3, 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd, 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce, 0xd2cd, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xd6b0, 0xd2d8, 0xaf77, 0xaf74, 0xd6aa, 0xd6a9, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2, 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af, 0xb2b3, 0xdabc, 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2, 0xdabd, 0xdac0, 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xdee1, 0xdedd, 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846, 0xb7fe, 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb, 0xb842, 0xdee2, 0xe2e6, 0xe2e8, 0xb840, 0xe2e3, 0xbacc, 0xe2e9, 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e, 0xe6bf, 0xe6be, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50, 0xea7d, 0xeaa1, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66, 0xbf67, 0xbf65, 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3, 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb, 0xeda1, 0xed7a, 0xed7e, 0xed7d, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2, 0xc2a3, 0xf054, 0xf27b, 0xc3a9, 0xf279, 0xf27a, 0xf474, 0xf477, 0xf475, 0xf476, 0xf5e0, 0xc4ef, 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8, 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0xdac3, 0xdee3, 0xa5da, 0xa86f, 0xaabe, 0xcfe8, 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142, 0xeda4, 0xf27c, 0xf478, 0xa5db, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e, 0xcd7d, 0xcd7b, 0xaabf, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0xcff1, 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec, 0xcff3, 0xace3, 0xaf7c, 0xafa4, 0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0xafa1, 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2, 0xd2df, 0xd2dd, 0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc, 0xaf7e, 0xaf7b, 0xb2b9, 0xd6ba, 0xd6b3, 0xd6b5, 0xd6b7, 0xd6b8, 0xd6b6, 0xb2ba, 0xd6bb, 0xd6b4, 0xdac8, 0xb576, 0xdad0, 0xdac5, 0xdad1, 0xdac6, 0xdac7, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577, 0xdac9, 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0xdef2, 0xb84e, 0xe2f0, 0xb851, 0xdef0, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4, 0xb84d, 0xb84c, 0xb848, 0xdee7, 0xb84f, 0xb850, 0xdee6, 0xdee9, 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5, 0xe2f2, 0xbad0, 0xe2f4, 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0xbad1, 0xe2ef, 0xbad3, 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xb849, 0xe2eb, 0xbad2, 0xe2ed, 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53, 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2, 0xbd59, 0xe6c4, 0xe6c6, 0xbd57, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6, 0xeaac, 0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0xeaa4, 0xbf6c, 0xbf69, 0xeaa3, 0xeaa5, 0xbf6b, 0xeaab, 0xc146, 0xedaa, 0xeda5, 0xc145, 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056, 0xc147, 0xeda7, 0xedae, 0xedab, 0xf05a, 0xf057, 0xc2a6, 0xf05b, 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3, 0xc3aa, 0xf27e, 0xf2a2, 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b, 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0xf5e3, 0xf5e2, 0xf6f6, 0xf8b5, 0xf8fa, 0xa5dc, 0xcb72, 0xaac0, 0xcda3, 0xaac1, 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9, 0xace8, 0xace7, 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec, 0xd2eb, 0xd2ea, 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0xafae, 0xd2e7, 0xd2e9, 0xafac, 0xafab, 0xafa9, 0xafa8, 0xd6c2, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd, 0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0xb2bd, 0xdad5, 0xdad4, 0xdad3, 0xdad2, 0xdef6, 0xb852, 0xdef3, 0xdef5, 0xb853, 0xb854, 0xdef4, 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5, 0xbad6, 0xe343, 0xe342, 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340, 0xe2f8, 0xe6cb, 0xe6d0, 0xe6ce, 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0xbf6d, 0xc148, 0xedb0, 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab, 0xf4a1, 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb, 0xd6c3, 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0xcda4, 0xaac4, 0xaac3, 0xacee, 0xcffa, 0xcffd, 0xcffb, 0xacec, 0xaced, 0xcff9, 0xcffc, 0xafb5, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2, 0xd2ef, 0xafb0, 0xafaf, 0xafb3, 0xafb1, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0, 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8, 0xdada, 0xb57c, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0xdf41, 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8, 0xdef9, 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd, 0xe349, 0xe348, 0xe344, 0xbad8, 0xe347, 0xe346, 0xbad9, 0xbd5e, 0xe6d2, 0xbd5f, 0xbd5b, 0xbd5d, 0xbd5a, 0xbd5c, 0xeaaf, 0xbf70, 0xeab1, 0xeab0, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3, 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8, 0xc2a9, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2, 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6, 0xaac5, 0xcda6, 0xd040, 0xacef, 0xcffe, 0xacf0, 0xafb6, 0xd2f8, 0xd2f6, 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0xd6c8, 0xd6ca, 0xb2bf, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44, 0xb85d, 0xb85e, 0xdf43, 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b, 0xe34c, 0xbd61, 0xbd60, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4, 0xeab2, 0xeab6, 0xeab3, 0xbf73, 0xedb7, 0xc14b, 0xedb8, 0xedb9, 0xc2ab, 0xc2ac, 0xc475, 0xc5d1, 0xa5df, 0xd041, 0xd2fd, 0xafb8, 0xb3ba, 0xb3b9, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0xdf45, 0xbadc, 0xe34d, 0xbadd, 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2, 0xacf1, 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347, 0xd345, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341, 0xd6d3, 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0xb2c1, 0xd6d0, 0xd6dd, 0xd6d1, 0xd6ce, 0xb2c5, 0xb2c2, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8, 0xb2c8, 0xd6d9, 0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb, 0xd6db, 0xdadf, 0xdae4, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1, 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8, 0xb5ae, 0xb5a9, 0xb5aa, 0xb5a6, 0xdae5, 0xb861, 0xdf50, 0xdf53, 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0xdf48, 0xb862, 0xdf4f, 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f, 0xdf51, 0xe35d, 0xbae8, 0xe358, 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355, 0xe354, 0xe357, 0xbae5, 0xe352, 0xe351, 0xbae4, 0xbadf, 0xe353, 0xbae2, 0xe359, 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade, 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0xbd65, 0xe6de, 0xe6d6, 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66, 0xbd67, 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0xeac0, 0xeabb, 0xeac5, 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6, 0xc151, 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9, 0xeabe, 0xbf7a, 0xeac1, 0xeac4, 0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1, 0xc14f, 0xedc8, 0xeabf, 0xedbf, 0xedc9, 0xc14e, 0xedbe, 0xedbd, 0xedc7, 0xedc4, 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce, 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0xf063, 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a, 0xc2b1, 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab, 0xf066, 0xf06c, 0xf2a8, 0xc3b2, 0xc3b0, 0xf2aa, 0xf2ac, 0xf2a9, 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0xc478, 0xf4aa, 0xf4a9, 0xf4a7, 0xf4a6, 0xf4a8, 0xc477, 0xc479, 0xc4f0, 0xf5e5, 0xf5e4, 0xf6fa, 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2, 0xc5d4, 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0xc659, 0xf96d, 0xc67e, 0xa6cc, 0xcda8, 0xd045, 0xd046, 0xd044, 0xacf3, 0xd047, 0xd048, 0xd049, 0xd349, 0xd34f, 0xd34d, 0xafbb, 0xd34b, 0xd34c, 0xd34e, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca, 0xd6df, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0, 0xdae9, 0xdf56, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0xbae9, 0xe361, 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f, 0xe6df, 0xe6e0, 0xbd6b, 0xe6e2, 0xe6e1, 0xa261, 0xeaca, 0xeacb, 0xeac7, 0xeac8, 0xbf7c, 0xbf7d, 0xeac9, 0xc157, 0xc153, 0xc158, 0xc154, 0xc156, 0xc152, 0xc155, 0xc2b3, 0xedcf, 0xf2ae, 0xf2ad, 0xf4ab, 0xc47a, 0xc47b, 0xf741, 0xf5e6, 0xf740, 0xf8fd, 0xf9a4, 0xa6cd, 0xa874, 0xcda9, 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa, 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353, 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355, 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350, 0xd357, 0xafc0, 0xafbc, 0xafc1, 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8, 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5, 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed, 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb, 0xd6ee, 0xdafb, 0xdaf2, 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7, 0xb5b4, 0xdaef, 0xdaeb, 0xb86c, 0xdaf4, 0xb5b1, 0xdafa, 0xb5b8, 0xb5ba, 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5, 0xdaf3, 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868, 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60, 0xdf64, 0xdf5c, 0xdf58, 0xdf57, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b, 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0xbaee, 0xe36a, 0xbd78, 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0xe375, 0xe362, 0xe377, 0xe366, 0xbafe, 0xbafb, 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4, 0xbaf3, 0xbaf9, 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373, 0xbaef, 0xbaf0, 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369, 0xe36d, 0xbafd, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0xe36b, 0xbafc, 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0xbd72, 0xbd76, 0xe6f0, 0xbd6c, 0xe6e8, 0xbd74, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5, 0xbd71, 0xe6ef, 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d, 0xe6ec, 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0xe6e9, 0xbfa2, 0xbfa7, 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9, 0xbfa8, 0xbfa1, 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace, 0xead6, 0xbfa3, 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd, 0xead7, 0xbfa4, 0xeade, 0xeadd, 0xedda, 0xedd6, 0xc15f, 0xedd0, 0xc159, 0xc169, 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c, 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168, 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9, 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4, 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba, 0xc2b7, 0xf06d, 0xc2b6, 0xf073, 0xf075, 0xc2b8, 0xf072, 0xf070, 0xf2b8, 0xc3b7, 0xc3b8, 0xc3b4, 0xc3b5, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0, 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d, 0xf4ad, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9, 0xf5e7, 0xf5ea, 0xc4f2, 0xf5ec, 0xc4f1, 0xf742, 0xc5d5, 0xc5d7, 0xf7ee, 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0xa6ce, 0xacfb, 0xd26f, 0xafca, 0xb2da, 0xdafc, 0xdafd, 0xeadf, 0xc16a, 0xede1, 0xc2bb, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0xf743, 0xc5f8, 0xca49, 0xaac9, 0xa875, 0xd04d, 0xd360, 0xd35b, 0xd35f, 0xd35d, 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe, 0xdb40, 0xdf69, 0xdf6a, 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0xbb40, 0xb870, 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d, 0xbfa9, 0xeae2, 0xeae0, 0xeae1, 0xede4, 0xede3, 0xede2, 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9, 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0xd04e, 0xd362, 0xafcc, 0xd6f2, 0xd361, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db, 0xdb42, 0xdb43, 0xdb41, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e, 0xb872, 0xb871, 0xe6f2, 0xe6f4, 0xbd7e, 0xe6f3, 0xeae3, 0xbfaa, 0xf079, 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3, 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce, 0xd364, 0xd363, 0xafcd, 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc, 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf, 0xdb44, 0xdf6f, 0xdf70, 0xe37e, 0xbb43, 0xbb41, 0xbb42, 0xe37b, 0xe37c, 0xe37d, 0xe6f9, 0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4, 0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b, 0xc2bc, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1, 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051, 0xb5c0, 0xa6d3, 0xad41, 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366, 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0xd740, 0xd6fe, 0xdf71, 0xe3a1, 0xbda2, 0xbfae, 0xeae6, 0xeae5, 0xede7, 0xf5ef, 0xa6d5, 0xcb73, 0xcdaa, 0xad43, 0xd055, 0xd368, 0xafd4, 0xd367, 0xafd5, 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45, 0xb5c1, 0xb874, 0xb875, 0xbb45, 0xe3a3, 0xe3a2, 0xbb44, 0xe6fb, 0xe6fc, 0xeae7, 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c, 0xc2bf, 0xc2be, 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0xd1fb, 0xb877, 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9, 0xcdab, 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75, 0xa87b, 0xa87a, 0xcb78, 0xa878, 0xaad1, 0xaacf, 0xcdad, 0xaace, 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0, 0xa87c, 0xaad4, 0xcdaf, 0xcdae, 0xaacd, 0xd05b, 0xad47, 0xad48, 0xd05d, 0xd057, 0xd05a, 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064, 0xd05c, 0xd059, 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f, 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e, 0xad4e, 0xad45, 0xd066, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a, 0xafde, 0xafdb, 0xd36c, 0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2, 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xafd9, 0xafdc, 0xafdf, 0xafe1, 0xd74e, 0xb2e4, 0xd745, 0xd747, 0xd748, 0xd750, 0xd74c, 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0xd74f, 0xb2e7, 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8, 0xb5c8, 0xdb51, 0xdb4f, 0xb5ca, 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0xdb4b, 0xb5c5, 0xb5cb, 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4, 0xb5c3, 0xdf77, 0xdf75, 0xdf7b, 0xdf73, 0xdfa2, 0xdf78, 0xdf72, 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e, 0xb87c, 0xdf7e, 0xb879, 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0xdf7c, 0xdf74, 0xb87a, 0xb8a1, 0xb8a2, 0xbb4c, 0xbb48, 0xbb4d, 0xe3a6, 0xe3a5, 0xe3a7, 0xbb4a, 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0xe741, 0xe744, 0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe, 0xbda6, 0xe742, 0xe6fd, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0xeaed, 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec, 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177, 0xc176, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded, 0xc179, 0xedeb, 0xedea, 0xc2c0, 0xc2c1, 0xf0a1, 0xf07d, 0xf07e, 0xf2c2, 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0xf5f0, 0xf745, 0xc5a6, 0xf943, 0xf944, 0xc5d8, 0xa6da, 0xaad7, 0xdb52, 0xbb4e, 0xc17b, 0xedef, 0xa6db, 0xafe5, 0xafe4, 0xdb53, 0xeaf4, 0xa6dc, 0xad50, 0xdb54, 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068, 0xafe6, 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c, 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51, 0xe3ab, 0xe745, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0, 0xcdb1, 0xd069, 0xad51, 0xd372, 0xafea, 0xafe8, 0xafe9, 0xafeb, 0xd371, 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec, 0xd753, 0xb2ee, 0xd755, 0xdb58, 0xdb59, 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8, 0xb8a5, 0xdfa4, 0xbb53, 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748, 0xe747, 0xeaf5, 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0, 0xedf2, 0xf0a3, 0xf0a2, 0xf2c4, 0xf2c5, 0xf2c3, 0xc4a5, 0xf4b6, 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2, 0xd758, 0xdb5b, 0xc641, 0xca4a, 0xca4b, 0xca4d, 0xa6e3, 0xca4e, 0xca4c, 0xcba2, 0xcba3, 0xcb7b, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c, 0xcb7a, 0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc, 0xcdb5, 0xcdb7, 0xaadb, 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6, 0xaae6, 0xcdc3, 0xaae3, 0xcdb9, 0xcdbf, 0xcdc1, 0xcdb4, 0xaae2, 0xaadd, 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8, 0xcdc5, 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade, 0xaae8, 0xcdb3, 0xcdc2, 0xcdc4, 0xad62, 0xad5c, 0xad64, 0xad61, 0xd071, 0xd074, 0xad5d, 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65, 0xd0a2, 0xd077, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f, 0xd07e, 0xd073, 0xd076, 0xd0a5, 0xad66, 0xd07d, 0xad5e, 0xd078, 0xd0a4, 0xd075, 0xd079, 0xd07c, 0xd06d, 0xd0a3, 0xd07b, 0xd06c, 0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e, 0xd3a5, 0xad5b, 0xd07a, 0xce41, 0xd3a8, 0xaffa, 0xd376, 0xd3a3, 0xd37d, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5, 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc, 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8, 0xd072, 0xdb5c, 0xd3a6, 0xd37a, 0xaffb, 0xd37b, 0xd3a1, 0xaffe, 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0, 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef, 0xd379, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d, 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0xb340, 0xd777, 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef, 0xd761, 0xd759, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773, 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0xd76b, 0xb2f0, 0xb2fb, 0xb2f3, 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767, 0xd76d, 0xb2f6, 0xd778, 0xd771, 0xd774, 0xb2f5, 0xdb6c, 0xdb60, 0xb5d7, 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3, 0xdb69, 0xdb77, 0xb5e2, 0xdb73, 0xb5df, 0xdb74, 0xdb5d, 0xdba4, 0xb5e8, 0xdba1, 0xdb75, 0xdbac, 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a, 0xb5e9, 0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63, 0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0xdba9, 0xb5d8, 0xb5dd, 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e, 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1, 0xb5e5, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3, 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0xdbae, 0xdb5f, 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xdfca, 0xdfb5, 0xb8a9, 0xdfc5, 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf, 0xdfc0, 0xdfd6, 0xb8b0, 0xb8a8, 0xdfaa, 0xdfb2, 0xdfcb, 0xdfc3, 0xdfdc, 0xdfc6, 0xb8b6, 0xdfd7, 0xb8ad, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0, 0xdfe1, 0xdfb1, 0xdfd2, 0xdfdf, 0xdfab, 0xb5db, 0xdfb9, 0xdfb8, 0xb8af, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xb8b3, 0xdfb0, 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0, 0xdfd3, 0xdfce, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4, 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb, 0xb8a6, 0xdfb3, 0xdfaf, 0xdfd5, 0xdfae, 0xbb60, 0xe3d3, 0xe3c2, 0xe3ac, 0xe3ca, 0xbb58, 0xe3bb, 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd, 0xe3ae, 0xe3c1, 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0xe3b4, 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a, 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6, 0xe3b0, 0xe3c0, 0xbb61, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57, 0xdfd4, 0xbb56, 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9, 0xe3b1, 0xe3cc, 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9, 0xe3ce, 0xe3d1, 0xe773, 0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4, 0xbdac, 0xe776, 0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0xe770, 0xe761, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6, 0xe74f, 0xe76d, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b, 0xe75c, 0xe753, 0xe751, 0xe74e, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3, 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b, 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772, 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c, 0xe77d, 0xe77a, 0xe771, 0xe74d, 0xbdaa, 0xeb49, 0xeb40, 0xeb43, 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6, 0xeafb, 0xeb4c, 0xeb46, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46, 0xeafe, 0xbfb7, 0xeb4a, 0xeb54, 0xbfbf, 0xeb51, 0xeafd, 0xeb44, 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba, 0xbfbe, 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0xeb4b, 0xeb4e, 0xee53, 0xee40, 0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0xc1a2, 0xedf4, 0xee4d, 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8, 0xee50, 0xee42, 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5, 0xee55, 0xc1a4, 0xc1a5, 0xedf7, 0xee48, 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3, 0xee4c, 0xedfe, 0xee56, 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc, 0xc2cb, 0xedf6, 0xc1a9, 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3, 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9, 0xf0ab, 0xf0b9, 0xf0ae, 0xf0a6, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2, 0xf0a5, 0xf0ac, 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3, 0xc2c6, 0xf2d5, 0xf0b5, 0xc3c2, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc, 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3, 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8, 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0, 0xc4a7, 0xc4a9, 0xc4a6, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd, 0xf4ba, 0xf4bf, 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0xc4a8, 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4, 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8, 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xf7f4, 0xf74b, 0xf749, 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3, 0xf7f6, 0xc5da, 0xf7f1, 0xf8bc, 0xf945, 0xf946, 0xf947, 0xf9c7, 0xf9bd, 0xca4f, 0xaaea, 0xad68, 0xd3b8, 0xd3b7, 0xb040, 0xb342, 0xd77c, 0xd77b, 0xb5ea, 0xb8b8, 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e, 0xeb58, 0xeb5a, 0xeb59, 0xc1ab, 0xee57, 0xf0ba, 0xf9a5, 0xa6e4, 0xcdc9, 0xcdca, 0xcdc8, 0xcdc7, 0xaaeb, 0xd0a9, 0xd0a7, 0xd0a6, 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041, 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0xb043, 0xd3ce, 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc, 0xd3be, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8, 0xd3ba, 0xb045, 0xb042, 0xb34c, 0xd7a5, 0xb34b, 0xd7a8, 0xd7ab, 0xb348, 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af, 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3, 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a, 0xd7aa, 0xb5f1, 0xdbbf, 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef, 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2, 0xdbb5, 0xb5f0, 0xdbb3, 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0xdfe8, 0xdfee, 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0xb8bf, 0xb8be, 0xdfed, 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec, 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb, 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0xe3db, 0xe3e4, 0xe3dc, 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d, 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da, 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5, 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0, 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2, 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9, 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b, 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4, 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba, 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af, 0xe7b8, 0xe7b5, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd, 0xeb64, 0xe7b7, 0xe7bc, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67, 0xeb65, 0xeb60, 0xeb6f, 0xbfc4, 0xeb5c, 0xeb68, 0xeb69, 0xeb5f, 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e, 0xeb5b, 0xeb6d, 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb, 0xee59, 0xc1b1, 0xee5d, 0xee5a, 0xee61, 0xee67, 0xee5c, 0xee70, 0xc1ae, 0xee6a, 0xee5f, 0xee6b, 0xee66, 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60, 0xee6e, 0xee58, 0xee6c, 0xc1ac, 0xee64, 0xee63, 0xee68, 0xee5b, 0xc1b0, 0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0xc1ad, 0xc1af, 0xf0c7, 0xf0c5, 0xf0cc, 0xf0c9, 0xf0cd, 0xf0be, 0xf0c6, 0xf0d1, 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1, 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0xc2cc, 0xc2ce, 0xf0c3, 0xf0cf, 0xf2de, 0xf2df, 0xc3c9, 0xf2dc, 0xc3c6, 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0xc3c7, 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0xf4c5, 0xf4c6, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7, 0xf4c4, 0xf642, 0xf645, 0xf641, 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644, 0xf751, 0xf74f, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0xf7f9, 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be, 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5, 0xd0aa, 0xd3cf, 0xd3d0, 0xdbc0, 0xf647, 0xf8c0, 0xa6e6, 0xad6c, 0xd0ab, 0xd7b1, 0xb34e, 0xdbc2, 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1, 0xbdc3, 0xbdc4, 0xbfc5, 0xc5fc, 0xa6e7, 0xd0ac, 0xaaed, 0xd0ae, 0xd0ad, 0xad6d, 0xd3d1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4, 0xd3db, 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7, 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xb350, 0xd7b2, 0xb355, 0xd7c2, 0xb354, 0xd7c4, 0xd7b8, 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf, 0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0xb34f, 0xd7ba, 0xd7b9, 0xd7b5, 0xd7c0, 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0xb5f6, 0xdbcd, 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca, 0xdbcc, 0xdbc8, 0xdbc7, 0xb5f4, 0xb5f5, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3, 0xdff4, 0xdff9, 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca, 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc, 0xe3f6, 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7, 0xe3f8, 0xbb6e, 0xbb70, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9, 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0xdbce, 0xbb6f, 0xe7c2, 0xe7c9, 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc, 0xbdc5, 0xe7cb, 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6, 0xe7c7, 0xe7c8, 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79, 0xbfc8, 0xeb71, 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a, 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71, 0xc1b7, 0xee77, 0xc1b9, 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75, 0xee78, 0xc1b8, 0xf0d6, 0xf0d9, 0xf0d3, 0xf0d5, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2, 0xc3cd, 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0, 0xc3ce, 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0xf4cb, 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752, 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0xf948, 0xf949, 0xf94b, 0xf94a, 0xca50, 0xa6e8, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa, 0xc2d0, 0xf2f2, 0xa8a3, 0xb357, 0xb356, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb, 0xb8d0, 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf, 0xbfcc, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a, 0xc2d1, 0xf2f4, 0xf2f3, 0xf4cc, 0xc4b1, 0xc4fd, 0xf754, 0xf753, 0xc65b, 0xa8a4, 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043, 0xdbd3, 0xdffc, 0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd, 0xe044, 0xe449, 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d, 0xee7c, 0xee7d, 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755, 0xc5a9, 0xf7fe, 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1, 0xad70, 0xb054, 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd, 0xb056, 0xb053, 0xb057, 0xb055, 0xb04f, 0xb35f, 0xb359, 0xd7cc, 0xb35e, 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0xb358, 0xd7cb, 0xb35d, 0xd7c9, 0xb35c, 0xb644, 0xb646, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd, 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd, 0xdbde, 0xb643, 0xdbe0, 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4, 0xb642, 0xdbe1, 0xdbdf, 0xb640, 0xb5fb, 0xb647, 0xdbdb, 0xdbdc, 0xdbd9, 0xb641, 0xb5fc, 0xb5fa, 0xe048, 0xb8df, 0xb8da, 0xb8d5, 0xb8e5, 0xb8d6, 0xb8d2, 0xb8e1, 0xb8de, 0xb8e0, 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050, 0xe04d, 0xe045, 0xe04a, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xe047, 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c, 0xbb78, 0xbb7b, 0xe44e, 0xbba5, 0xe44d, 0xbb7d, 0xbdcf, 0xe44f, 0xbba4, 0xe44b, 0xbba6, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a, 0xbb7e, 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0xbba1, 0xe44a, 0xbdd6, 0xbdd2, 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd, 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd, 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8, 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7, 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc, 0xe7e0, 0xe7e4, 0xbddb, 0xbfd2, 0xeba5, 0xebab, 0xeba8, 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd, 0xbfd3, 0xebad, 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0, 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce, 0xebb0, 0xbfdc, 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3, 0xeea4, 0xeead, 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0xeeab, 0xc1bc, 0xeea7, 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2, 0xc1bd, 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e, 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3, 0xf0da, 0xc2d6, 0xc2d5, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4, 0xf0dd, 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec, 0xf0e3, 0xf2f9, 0xc3cf, 0xf341, 0xf64f, 0xc3d6, 0xf0e0, 0xf2f7, 0xc3d2, 0xf2f8, 0xf2fd, 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342, 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3, 0xc3d0, 0xf4d0, 0xc4b7, 0xf4ce, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4, 0xf4d1, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe, 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b, 0xc5aa, 0xf758, 0xf757, 0xf75a, 0xf759, 0xf843, 0xc5dc, 0xf842, 0xf840, 0xf841, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0xf94d, 0xf94e, 0xc667, 0xc66d, 0xf9a9, 0xf9c8, 0xa8a6, 0xd7cd, 0xd7ce, 0xe052, 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844, 0xa8a7, 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6, 0xbddd, 0xeeb1, 0xc2d7, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362, 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057, 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2, 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c, 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a, 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1, 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347, 0xf9aa, 0xa8a9, 0xad73, 0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1, 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0xb64a, 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652, 0xb655, 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654, 0xb650, 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0xb8ea, 0xb8eb, 0xb8e9, 0xe05b, 0xe454, 0xbbac, 0xbbad, 0xbbab, 0xe453, 0xe455, 0xe7ea, 0xe7ec, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5, 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0xbde8, 0xbde3, 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0xebb8, 0xbfe0, 0xebb4, 0xc1cb, 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0xf0f6, 0xf0f5, 0xf0f4, 0xc2d8, 0xf348, 0xf349, 0xc3d8, 0xf34a, 0xc3d9, 0xc4ba, 0xc4b9, 0xf652, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0xf845, 0xc642, 0xa8aa, 0xb36a, 0xb369, 0xe05c, 0xe05d, 0xbbae, 0xebb9, 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2, 0xad76, 0xad75, 0xd3e3, 0xb05f, 0xd3e4, 0xd7d5, 0xd7d4, 0xd7d3, 0xdbee, 0xb658, 0xdbed, 0xb657, 0xdbef, 0xb656, 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065, 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2, 0xe7f0, 0xbdeb, 0xe7ef, 0xe7f1, 0xbdec, 0xebbb, 0xebbc, 0xc1cd, 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac, 0xad77, 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b, 0xd7d9, 0xd7da, 0xd7d7, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9, 0xb65b, 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1, 0xdbf7, 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a, 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0xb8f9, 0xe070, 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b, 0xb8f4, 0xe067, 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1, 0xe45b, 0xe461, 0xe459, 0xe462, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e, 0xe457, 0xe45c, 0xe45a, 0xbdf1, 0xbdee, 0xe7fb, 0xe841, 0xe843, 0xe840, 0xe7f8, 0xe7fa, 0xe845, 0xe842, 0xe7fc, 0xe846, 0xe7f9, 0xe844, 0xbdef, 0xbdf5, 0xbdf3, 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4, 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe, 0xbdf2, 0xbded, 0xe7f7, 0xebc6, 0xbfe2, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0xebc3, 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1, 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba, 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa, 0xc2d9, 0xf141, 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9, 0xf142, 0xf0f8, 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0xf144, 0xf352, 0xc3de, 0xf34f, 0xf353, 0xc3db, 0xf351, 0xc3e0, 0xc3dd, 0xf350, 0xc3df, 0xf354, 0xc3da, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc, 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761, 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846, 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950, 0xf94f, 0xf970, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0xb8fa, 0xbdf6, 0xebc8, 0xc2df, 0xf355, 0xf9ac, 0xa8ae, 0xaaee, 0xad79, 0xad78, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db, 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1, 0xdc43, 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48, 0xdc4a, 0xdc42, 0xdbfc, 0xdc49, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe, 0xb661, 0xb663, 0xb8fd, 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb, 0xe078, 0xe074, 0xe079, 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467, 0xe466, 0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d, 0xe84e, 0xe849, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9, 0xe84b, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847, 0xebca, 0xbfe8, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce, 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0xc1d4, 0xeec0, 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0xf149, 0xc2e1, 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd, 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658, 0xf659, 0xf657, 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0xa8af, 0xb664, 0xb940, 0xbbb6, 0xbfec, 0xbfeb, 0xc3e3, 0xc47c, 0xc547, 0xa8b0, 0xb064, 0xb941, 0xf35b, 0xcba6, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2, 0xcba5, 0xcdcd, 0xcdcf, 0xaaef, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0, 0xcdd1, 0xcdd0, 0xcdd2, 0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3, 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1, 0xd0b5, 0xad7a, 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0xb069, 0xd3ee, 0xd3f0, 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef, 0xb06d, 0xb066, 0xd7e3, 0xd7e6, 0xb370, 0xb37a, 0xb376, 0xd7e4, 0xb37e, 0xb377, 0xb37c, 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5, 0xb375, 0xb378, 0xb374, 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2, 0xdc4d, 0xb665, 0xdc4f, 0xb667, 0xb669, 0xdc4e, 0xb666, 0xb66a, 0xb668, 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1, 0xb94a, 0xe0a2, 0xb943, 0xb942, 0xb94d, 0xb94c, 0xb94b, 0xb949, 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0xbbb8, 0xbbbb, 0xbbbf, 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0xbbbd, 0xbbba, 0xe852, 0xbe43, 0xbe41, 0xe853, 0xbe44, 0xbe42, 0xe851, 0xe850, 0xbff0, 0xe84f, 0xbfee, 0xbfed, 0xebd0, 0xbe45, 0xbfef, 0xebd1, 0xbff2, 0xebd2, 0xbff1, 0xc1d8, 0xeec3, 0xc1d7, 0xc1dc, 0xc1da, 0xc1db, 0xc2e3, 0xc1d9, 0xeec2, 0xebd3, 0xc2e2, 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0, 0xc5de, 0xc5dd, 0xa8b6, 0xca55, 0xb06f, 0xca52, 0xca53, 0xca51, 0xca54, 0xcbaa, 0xcba7, 0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0xcba9, 0xa8b9, 0xcbab, 0xa8b8, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6, 0xcdd4, 0xaaf2, 0xaaf5, 0xaaf3, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7, 0xada8, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee, 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc, 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8, 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea, 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57, 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c, 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5, 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952, 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c, 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a, 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46, 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd, 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b, 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075, 0xb074, 0xd440, 0xd441, 0xd3fe, 0xb073, 0xd7f5, 0xd7f6, 0xd7f2, 0xb3a4, 0xd7f3, 0xd7f4, 0xdc5f, 0xdc61, 0xdc5d, 0xdc60, 0xb66f, 0xdc5e, 0xb670, 0xdd73, 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad, 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0xbbc5, 0xbbc4, 0xe474, 0xe472, 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a, 0xbe4b, 0xe85d, 0xbe4c, 0xebdb, 0xebdc, 0xebd9, 0xebda, 0xbff4, 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9, 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150, 0xf14e, 0xf152, 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151, 0xf35e, 0xc3e6, 0xf4e5, 0xf4e6, 0xc4bf, 0xf4e4, 0xf4e3, 0xf65d, 0xc548, 0xf849, 0xf8c8, 0xf8c7, 0xc643, 0xc65d, 0xf8c9, 0xf971, 0xc66f, 0xa8bc, 0xaaf6, 0xb956, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7, 0xd0c1, 0xd0c0, 0xd442, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079, 0xb077, 0xd443, 0xb3a8, 0xd7fc, 0xb3a7, 0xb3a9, 0xd842, 0xb3ab, 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa, 0xd7f8, 0xb3a6, 0xd841, 0xd7fb, 0xd7fd, 0xdc6d, 0xdc6c, 0xdc6a, 0xdc62, 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679, 0xb675, 0xdc63, 0xdc69, 0xb677, 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0xb672, 0xb673, 0xdc77, 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0xb674, 0xdc73, 0xdc64, 0xdc67, 0xdc70, 0xe4ba, 0xe0b7, 0xe0b0, 0xe0c3, 0xe0cc, 0xe0b3, 0xb961, 0xe0c0, 0xb957, 0xb959, 0xb965, 0xe0b1, 0xb95a, 0xb95c, 0xb966, 0xb95b, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8, 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af, 0xe0c9, 0xe0c4, 0xe0cb, 0xb958, 0xb967, 0xb95d, 0xe0b5, 0xe0bd, 0xe0c1, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be, 0xe0bb, 0xe0ba, 0xe0bf, 0xe0c2, 0xe0c7, 0xe478, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc, 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0xe4aa, 0xe0b6, 0xbbc9, 0xe4b1, 0xe4b6, 0xe4ae, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9, 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5, 0xbbca, 0xe4b3, 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b, 0xe4af, 0xe4ac, 0xe4a7, 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf, 0xe4b7, 0xe47d, 0xe4a3, 0xbe52, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xbe4f, 0xbe56, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3, 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875, 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0xe878, 0xe86d, 0xe86b, 0xe866, 0xe86e, 0xe87b, 0xe86a, 0xe87a, 0xe8a2, 0xbe53, 0xe876, 0xe87c, 0xe872, 0xe86c, 0xbe51, 0xe4a8, 0xe870, 0xbe59, 0xe869, 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0xec41, 0xebf8, 0xec43, 0xebe9, 0xebf6, 0xbffd, 0xebe1, 0xebdf, 0xec42, 0xec40, 0xebfe, 0xebed, 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd, 0xc043, 0xec45, 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde, 0xebe0, 0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041, 0xebdd, 0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0xebeb, 0xc044, 0xbff9, 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5, 0xebea, 0xeed2, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3, 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4, 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0xeeda, 0xeee7, 0xeee9, 0xeed0, 0xc1e6, 0xeeea, 0xeede, 0xc1ea, 0xeedb, 0xc1ec, 0xeee4, 0xc1e4, 0xeed6, 0xeee5, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0xc1e9, 0xeeeb, 0xc1e2, 0xeece, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163, 0xf15b, 0xeedc, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2, 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0xf158, 0xf15d, 0xf162, 0xeecd, 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a, 0xf168, 0xf36a, 0xf15c, 0xc2ee, 0xc2ed, 0xeecf, 0xc2ef, 0xf164, 0xf166, 0xc2ec, 0xf169, 0xf153, 0xf156, 0xf373, 0xf363, 0xc3eb, 0xf371, 0xf361, 0xc3ec, 0xf36c, 0xf368, 0xc3f1, 0xf372, 0xf362, 0xf365, 0xc3e9, 0xf374, 0xf36d, 0xf370, 0xc3ef, 0xc3f4, 0xc3f2, 0xf369, 0xf364, 0xc3ed, 0xc3ee, 0xf360, 0xc3ea, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3, 0xf36b, 0xf375, 0xc3f5, 0xf367, 0xf36e, 0xf4f3, 0xf542, 0xf4f5, 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe, 0xf4f4, 0xc4c2, 0xf544, 0xf4f6, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541, 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec, 0xf4ee, 0xf4f8, 0xc4c1, 0xf4f1, 0xf4ea, 0xf4f0, 0xf661, 0xf666, 0xc54f, 0xf668, 0xc549, 0xf664, 0xf66a, 0xc54e, 0xc54a, 0xc54b, 0xf660, 0xf667, 0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662, 0xf65e, 0xf669, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f, 0xf769, 0xf76a, 0xf767, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0xf84b, 0xf84d, 0xf84c, 0xf84e, 0xc5e0, 0xf84a, 0xc5df, 0xc5e1, 0xf8cb, 0xf8cc, 0xc644, 0xf8ca, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955, 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0xc672, 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0xaaf8, 0xd844, 0xdc78, 0xe8a5, 0xf376, 0xaaf9, 0xadac, 0xb07b, 0xd845, 0xd846, 0xb3ac, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c, 0xdc7b, 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0xb968, 0xe0d0, 0xe0ce, 0xe0cf, 0xe0cd, 0xbbd2, 0xbbd5, 0xbbd7, 0xbbd6, 0xbbd3, 0xbbd4, 0xe8a7, 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9, 0xbe5c, 0xec4d, 0xec4b, 0xeef3, 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c, 0xeeef, 0xeef1, 0xeef2, 0xc1f3, 0xeeee, 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0, 0xc1f1, 0xec47, 0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6, 0xc2f4, 0xf377, 0xf378, 0xc3f6, 0xf545, 0xf547, 0xf546, 0xc4c4, 0xc550, 0xf66d, 0xf66c, 0xf66b, 0xaafa, 0xc9aa, 0xca58, 0xa6e9, 0xca56, 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf, 0xcbaf, 0xcbad, 0xa8c0, 0xa8be, 0xcdd8, 0xcddb, 0xaafd, 0xcdda, 0xcdd9, 0xaafc, 0xaafb, 0xab40, 0xcddc, 0xaafe, 0xd0c6, 0xadae, 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad, 0xd0c4, 0xd0c5, 0xd0c2, 0xb0a4, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446, 0xb07e, 0xb07c, 0xb07d, 0xb0a3, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1, 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0, 0xd847, 0xb6a7, 0xdc7d, 0xdca3, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9, 0xdc7c, 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0xe0d3, 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0xe0d4, 0xb969, 0xbbd8, 0xbbda, 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0xe8aa, 0xc047, 0xc048, 0xec4f, 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4, 0xf16f, 0xc3f7, 0xc1f5, 0xab41, 0xb0a6, 0xd447, 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6, 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d, 0xbbdb, 0xb96c, 0xe0d5, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6, 0xf170, 0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb, 0xf173, 0xf379, 0xc2f7, 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7, 0xb6b2, 0xdca8, 0xdca7, 0xb6b3, 0xe0d9, 0xb973, 0xb970, 0xe0d8, 0xb972, 0xe0d6, 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0xbe5d, 0xe8ad, 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b, 0xc050, 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb, 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xf177, 0xf176, 0xc2fc, 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c, 0xf548, 0xf549, 0xc4c5, 0xc553, 0xf66e, 0xc551, 0xc552, 0xf66f, 0xc5b4, 0xc5b5, 0xf771, 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0, 0xc646, 0xf957, 0xf9ad, 0xab43, 0xb974, 0xe4be, 0xe8b0, 0xc051, 0xc052, 0xab44, 0xbe61, 0xc3fb, 0xadb1, 0xc053, 0xc5e2, 0xadb2, 0xd84d, 0xdca9, 0xdcab, 0xdcaa, 0xe0dd, 0xe0da, 0xb975, 0xb976, 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8, 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0xe8b3, 0xe8b1, 0xbe63, 0xbe62, 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54, 0xeefc, 0xeefe, 0xef41, 0xef40, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd, 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340, 0xf17a, 0xf3a1, 0xf3a3, 0xf3a2, 0xf54a, 0xf54b, 0xf670, 0xc5b7, 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0xc669, 0xadb3, 0xb6b4, 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0xc1fa, 0xef43, 0xef42, 0xf1a5, 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6, 0xf671, 0xf772, 0xf8d2, 0xadb4, 0xec57, 0xef44, 0xadb5, 0xbbe0, 0xec58, 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6, 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a, 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979, 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0xe8bb, 0xbe65, 0xc05b, 0xe8b8, 0xe8bd, 0xe8ba, 0xe8b9, 0xbe66, 0xc059, 0xec5a, 0xc055, 0xec5b, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057, 0xef45, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0xedd4, 0xef48, 0xef47, 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa, 0xc346, 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551, 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0xc555, 0xf774, 0xf773, 0xc5b8, 0xc5e3, 0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0xadb7, 0xdcad, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68, 0xc1fc, 0xf1ab, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab, 0xf675, 0xf552, 0xf553, 0xc4c6, 0xf674, 0xf673, 0xf775, 0xf9b0, 0xadb8, 0xadb9, 0xb0a7, 0xd448, 0xd84f, 0xb6b8, 0xb6bb, 0xb6b9, 0xdcae, 0xb6bd, 0xb6ba, 0xb6bc, 0xb97e, 0xe0e2, 0xe0e3, 0xe8c0, 0xb97d, 0xb9a1, 0xb9a2, 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0, 0xe8bf, 0xbbe8, 0xbe69, 0xbbe7, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a, 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4, 0xbe6c, 0xc061, 0xc05f, 0xc05e, 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e, 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50, 0xef4f, 0xc1fd, 0xf1ae, 0xf1ad, 0xc34a, 0xc348, 0xc349, 0xf1ac, 0xf3b1, 0xc443, 0xf3b0, 0xf3af, 0xc444, 0xf558, 0xf557, 0xf555, 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557, 0xf676, 0xf556, 0xf777, 0xc5e4, 0xc661, 0xf959, 0xf9b1, 0xadba, 0xd850, 0xef55, 0xadbb, 0xe4d2, 0xe4d1, 0xec60, 0xef57, 0xef56, 0xc34c, 0xf3b2, 0xf3b3, 0xc4c9, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be, 0xe0e4, 0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0xe4d4, 0xe4d6, 0xe4d5, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0xe4d9, 0xe8cc, 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e, 0xbe71, 0xbe73, 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce, 0xbe74, 0xbe70, 0xe8c6, 0xbe6d, 0xbe6f, 0xc063, 0xec66, 0xec64, 0xec63, 0xec69, 0xec68, 0xec67, 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a, 0xef5e, 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60, 0xef61, 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8, 0xf1b7, 0xf1b1, 0xf1b5, 0xf1b0, 0xf1b2, 0xc34d, 0xf1af, 0xf1b4, 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7, 0xf3be, 0xf3bb, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0xf3bc, 0xf560, 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0xc4cb, 0xf55c, 0xf55a, 0xf55b, 0xc4cd, 0xf55f, 0xc4cc, 0xf562, 0xf678, 0xf67e, 0xf679, 0xc55b, 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558, 0xf67a, 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c, 0xf7a3, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0xf853, 0xc5e5, 0xc5e6, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0xf9b3, 0xc66b, 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0xb0a9, 0xe0e9, 0xe0e8, 0xbbea, 0xbbeb, 0xe4da, 0xe8d2, 0xec6c, 0xbe75, 0xc065, 0xec6a, 0xec6d, 0xc066, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1, 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc, 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xb0aa, 0xf1ba, 0xd449, 0xb9a6, 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77, 0xe8d7, 0xe8d6, 0xe8d5, 0xec6e, 0xec71, 0xec70, 0xec6f, 0xc067, 0xef68, 0xef66, 0xef65, 0xef67, 0xc34f, 0xf1bc, 0xf1bd, 0xc350, 0xf1bb, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0xf567, 0xf569, 0xf568, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd, 0xf854, 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78, 0xc069, 0xf1be, 0xf7a6, 0xf9c4, 0xd44a, 0xc67b, 0xb0ac, 0xec72, 0xf1bf, 0xf3c6, 0xf6a7, 0xf7a7, 0xb0ad, 0xe4dd, 0xe4de, 0xbbed, 0xbbee, 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1, 0xc353, 0xc352, 0xc351, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8, 0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2, 0xe8dd, 0xe8da, 0xe8e1, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db, 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77, 0xec73, 0xec79, 0xec74, 0xef72, 0xec75, 0xeca2, 0xec7c, 0xc06a, 0xec7b, 0xec7a, 0xec7e, 0xef6a, 0xef6d, 0xef6c, 0xef74, 0xef6f, 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243, 0xc242, 0xc244, 0xc241, 0xef75, 0xf1c8, 0xf1cb, 0xf1c9, 0xf1cd, 0xf1ce, 0xf1c6, 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4, 0xf1c3, 0xc357, 0xc355, 0xc354, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7, 0xc44b, 0xf3d2, 0xf3ca, 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4, 0xf3cc, 0xc449, 0xc448, 0xf3c7, 0xf3c8, 0xf3d1, 0xf3ce, 0xf56c, 0xf56f, 0xc356, 0xf56d, 0xf573, 0xf571, 0xf56b, 0xf576, 0xf56a, 0xc4cf, 0xf572, 0xf56e, 0xc4ce, 0xf575, 0xf574, 0xf6ab, 0xf6aa, 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0xf6ae, 0xf6af, 0xf6a9, 0xf6ac, 0xc55f, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0xf7b6, 0xf7b2, 0xf7ae, 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad, 0xf7aa, 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860, 0xf859, 0xf857, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858, 0xf85e, 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8, 0xf8d7, 0xf95a, 0xf95c, 0xf95b, 0xf979, 0xf978, 0xf977, 0xf97a, 0xc673, 0xc674, 0xf9ca, 0xf9ce, 0xb3be, 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec, 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb, 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0xe8e7, 0xe8ea, 0xbea1, 0xe8ef, 0xe8ee, 0xbe7d, 0xe8e9, 0xe8ed, 0xbe7e, 0xecac, 0xc06f, 0xeca7, 0xc06b, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae, 0xeca5, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8, 0xefa9, 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xef79, 0xefa5, 0xef7d, 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6, 0xef77, 0xefa2, 0xefa3, 0xefa1, 0xf1d2, 0xf1d4, 0xf1d7, 0xf1d1, 0xc359, 0xf1d9, 0xf1d0, 0xf1da, 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf, 0xc35a, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f, 0xf3e4, 0xc450, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5, 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0xf3e3, 0xf3ef, 0xf3de, 0xf3d9, 0xf3ec, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c, 0xf3da, 0xf3e1, 0xf3e2, 0xf57d, 0xf57b, 0xf5a2, 0xf5ae, 0xf5a5, 0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577, 0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0xf5af, 0xf5b0, 0xf5a9, 0xf5ad, 0xf5a4, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6, 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc, 0xf6b4, 0xf6b9, 0xf5ac, 0xf6b5, 0xc563, 0xf6bb, 0xf6ba, 0xf6b6, 0xf6c2, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc, 0xf7be, 0xf7b8, 0xc5c2, 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1, 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e, 0xf864, 0xf867, 0xc5ee, 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f, 0xf873, 0xf86a, 0xf863, 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4, 0xf868, 0xf862, 0xf866, 0xc64e, 0xc64f, 0xf861, 0xf8e6, 0xf8dd, 0xf8e5, 0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0, 0xf8de, 0xf8e4, 0xf95d, 0xf95e, 0xf960, 0xf95f, 0xf962, 0xf961, 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0xf9c5, 0xc678, 0xc67c, 0xf9cf, 0xc67d, 0xb3bf, 0xc4d0, 0xf6c9, 0xc650, 0xc651, 0xb3c0, 0xe0ee, 0xb9a8, 0xe8f0, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247, 0xf1df, 0xefac, 0xf1de, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0xc452, 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0xc5ef, 0xf8e8, 0xf963, 0xf9d2, 0xb3c1, 0xe4e5, 0xbea2, 0xecb3, 0xecb2, 0xefad, 0xc454, 0xc4d1, 0xf7c7, 0xf9cb, 0xb3c2, 0xbbf2, 0xbea3, 0xf3f4, 0xf874, 0xb6c0, 0xefae, 0xc664, 0xb6c1, 0xbea4, 0xc248, 0xf875, 0xb6c2, 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071, 0xefaf, 0xc24c, 0xc24a, 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6, 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc, 0xc566, 0xf7c8, 0xf876, 0xf877, 0xc5f0, 0xf964, 0xf97d, 0xc675, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5, 0xe0ef, 0xefb1, 0xf1e2, 0xf1e1, 0xf878, 0xc652, 0xf965, 0xf97e, 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3, 0xf6cf, 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab, 0xefb4, 0xefb3, 0xefb2, 0xf1e4, 0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6, 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9, 0xf87c, 0xf87b, 0xf87a, 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8, 0xf7cc, 0xf87d, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e, 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e, 0xbea6, 0xefb5, 0xf1ea, 0xf3fa, 0xf3fb, 0xf3fc, 0xf5be, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4, 0xf5bb, 0xc4d6, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a, 0xc5c6, 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4, 0xf8a2, 0xf8a1, 0xc654, 0xf8eb, 0xf8ec, 0xf8ed, 0xc653, 0xf967, 0xf96a, 0xf969, 0xf968, 0xf9d3, 0xc073, 0xc365, 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0xc074, 0xefb6, 0xf7cf, 0xf9a1, 0xc94a, 0xddfc, 0xa14a, 0xa157, 0xa159, 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164, 0xa167, 0xa168, 0xa16b, 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174, 0xa177, 0xa178, 0xa17b, 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c, 0xa14d, 0xa14f, 0xa151, 0xa152, 0xa153, 0xa154, 0xa17d, 0xa17e, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de, 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0xa24c, 0xa24d, 0xa24e, 0xa149, 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141, 0xa1d0, 0xa144, 0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5, 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa242, 0xa1c4, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef, 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340, 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa14e, }; static const Summary16 big5_uni2indx_page00[16] = { /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x00ac }, { 4, 0x0083 }, { 7, 0x0000 }, { 7, 0x0080 }, { 8, 0x0000 }, { 8, 0x0080 }, }; static const Summary16 big5_uni2indx_page02[38] = { /* 0x0200 */ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0e80 }, { 13, 0x0200 }, { 14, 0x0000 }, { 14, 0x0000 }, /* 0x0300 */ { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0xfffe }, { 29, 0x03fb }, { 38, 0xfffe }, { 53, 0x03fb }, { 62, 0x0000 }, { 62, 0x0000 }, { 62, 0x0000 }, /* 0x0400 */ { 62, 0x0002 }, { 63, 0x1ff0 }, { 72, 0xfff8 }, { 85, 0xffff }, { 101, 0xffff }, { 117, 0x0002 }, }; static const Summary16 big5_uni2indx_page20[44] = { /* 0x2000 */ { 118, 0x0000 }, { 118, 0x3318 }, { 124, 0x0064 }, { 127, 0x4824 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, /* 0x2100 */ { 131, 0x0228 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x03ff }, { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x03cf }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, /* 0x2200 */ { 152, 0x0000 }, { 152, 0xc400 }, { 155, 0x4e29 }, { 162, 0x1030 }, { 165, 0x0000 }, { 165, 0x0004 }, { 166, 0x00c3 }, { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0020 }, { 171, 0x8000 }, }; static const Summary16 big5_uni2indx_page24[37] = { /* 0x2400 */ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x03ff }, { 182, 0x3ff0 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, /* 0x2500 */ { 192, 0x1005 }, { 195, 0x1111 }, { 199, 0x1010 }, { 201, 0x1010 }, { 203, 0x0000 }, { 203, 0x4001 }, { 205, 0xe402 }, { 210, 0x000f }, { 214, 0xfffe }, { 229, 0x0030 }, { 231, 0x0003 }, { 233, 0x300c }, { 237, 0xc8c0 }, { 242, 0x0000 }, { 242, 0x003c }, { 246, 0x0000 }, /* 0x2600 */ { 246, 0x0260 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0007 }, }; static const Summary16 big5_uni2indx_page30[62] = { /* 0x3000 */ { 252, 0xff2f }, { 265, 0x6037 }, { 272, 0x03fe }, { 281, 0x0000 }, { 281, 0xfffe }, { 296, 0xffff }, { 312, 0xffff }, { 328, 0xffff }, { 344, 0xffff }, { 360, 0x600f }, { 366, 0xfffe }, { 381, 0xffff }, { 397, 0xffff }, { 413, 0xffff }, { 429, 0xffff }, { 445, 0x407f }, /* 0x3100 */ { 453, 0xffe0 }, { 464, 0xffff }, { 480, 0x03ff }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, /* 0x3200 */ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0008 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, /* 0x3300 */ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0xc000 }, { 493, 0x7000 }, { 496, 0x0002 }, { 497, 0x0000 }, { 497, 0x4010 }, { 499, 0x0026 }, }; static const Summary16 big5_uni2indx_page4e[1307] = { /* 0x4e00 */ { 502, 0xff8b }, { 514, 0xc373 }, { 523, 0x6840 }, { 527, 0x1b0f }, { 535, 0xe9ac }, { 544, 0xf34c }, { 553, 0x0200 }, { 554, 0xc008 }, { 557, 0x795c }, { 566, 0xca3e }, { 575, 0x7976 }, { 585, 0x0648 }, { 589, 0x2fdf }, { 601, 0xf7f0 }, { 612, 0x033a }, { 618, 0xa8ff }, /* 0x4f00 */ { 629, 0xef37 }, { 641, 0x233f }, { 650, 0xb004 }, { 654, 0xfd59 }, { 665, 0xf3ca }, { 675, 0xffff }, { 691, 0xde9f }, { 703, 0xfff9 }, { 717, 0xabff }, { 730, 0x7df7 }, { 743, 0xc000 }, { 745, 0x8eec }, { 754, 0xeebf }, { 767, 0xffdb }, { 781, 0xd003 }, { 786, 0x45fa }, /* 0x5000 */ { 795, 0xfae1 }, { 805, 0xdffe }, { 819, 0xbfef }, { 833, 0x10ab }, { 839, 0xffeb }, { 853, 0xfcaa }, { 863, 0xef3f }, { 876, 0x24fd }, { 885, 0x78ad }, { 894, 0x7f76 }, { 906, 0xf00c }, { 912, 0xedff }, { 926, 0xcff6 }, { 938, 0x2cfa }, { 947, 0xf7f9 }, { 960, 0xeb6b }, /* 0x5100 */ { 971, 0x1ffd }, { 983, 0x95bf }, { 994, 0x6677 }, { 1004, 0xbfbf }, { 1018, 0x3bfb }, { 1030, 0xfeb4 }, { 1041, 0x7bae }, { 1052, 0x11e2 }, { 1058, 0xa681 }, { 1064, 0x41be }, { 1072, 0x1435 }, { 1078, 0x72c3 }, { 1086, 0x7d70 }, { 1095, 0x7191 }, { 1102, 0x0003 }, { 1104, 0x276b }, /* 0x5200 */ { 1113, 0x57cb }, { 1123, 0x70cf }, { 1132, 0x4732 }, { 1139, 0x0def }, { 1149, 0x7eda }, { 1160, 0xfc74 }, { 1170, 0xfe06 }, { 1179, 0xbdb4 }, { 1189, 0x3f9f }, { 1201, 0x8bca }, { 1209, 0x7e49 }, { 1218, 0x5800 }, { 1221, 0x228f }, { 1228, 0xebec }, { 1239, 0x8a5c }, { 1246, 0xddbb }, /* 0x5300 */ { 1258, 0xef60 }, { 1267, 0xb6e7 }, { 1278, 0xa40f }, { 1285, 0xf293 }, { 1294, 0x37bb }, { 1305, 0x549e }, { 1313, 0xd04b }, { 1320, 0x9baf }, { 1331, 0xc414 }, { 1336, 0xf7d4 }, { 1347, 0x30b0 }, { 1352, 0x0a14 }, { 1356, 0x2f08 }, { 1362, 0x88d0 }, { 1367, 0xff7e }, { 1381, 0x192f }, /* 0x5400 */ { 1389, 0xffda }, { 1402, 0xfb07 }, { 1412, 0x7ff1 }, { 1424, 0x7beb }, { 1436, 0xc5ef }, { 1447, 0x0010 }, { 1448, 0x99ff }, { 1460, 0xfdff }, { 1475, 0x79d7 }, { 1486, 0x0567 }, { 1493, 0xffe7 }, { 1507, 0xfdcb }, { 1519, 0xc3ff }, { 1531, 0x4040 }, { 1533, 0x6ff7 }, { 1546, 0xbd8e }, /* 0x5500 */ { 1556, 0xdffa }, { 1569, 0x0497 }, { 1575, 0xf4c0 }, { 1582, 0x5bff }, { 1595, 0xed7b }, { 1607, 0xd0e7 }, { 1616, 0x047e }, { 1623, 0xf8e0 }, { 1631, 0xff9f }, { 1645, 0xb73e }, { 1656, 0x7dfe }, { 1669, 0x882e }, { 1675, 0xfffd }, { 1690, 0xbe7f }, { 1703, 0x83fe }, { 1713, 0xf6c4 }, /* 0x5600 */ { 1722, 0xf357 }, { 1733, 0xb8fd }, { 1744, 0xd680 }, { 1750, 0xef7d }, { 1763, 0x5767 }, { 1773, 0x4788 }, { 1779, 0xff7d }, { 1793, 0xc3df }, { 1804, 0xf0ff }, { 1816, 0x37a9 }, { 1825, 0x7de0 }, { 1834, 0x70fc }, { 1843, 0x3f6f }, { 1855, 0xec9a }, { 1864, 0x4cb3 }, { 1872, 0x8681 }, /* 0x5700 */ { 1877, 0x3f9e }, { 1888, 0xdd5c }, { 1898, 0xf70d }, { 1908, 0x4819 }, { 1913, 0xfea3 }, { 1924, 0x0007 }, { 1927, 0xaf56 }, { 1937, 0x38ff }, { 1948, 0x980d }, { 1954, 0xefb8 }, { 1965, 0x403d }, { 1971, 0xb760 }, { 1979, 0xd8ce }, { 1988, 0x9035 }, { 1994, 0x72bf }, { 2005, 0x3fff }, /* 0x5800 */ { 2019, 0x7ff7 }, { 2033, 0x7a11 }, { 2040, 0xf7bb }, { 2053, 0xabff }, { 2066, 0xff00 }, { 2074, 0x6fbe }, { 2086, 0xa93c }, { 2094, 0xfe72 }, { 2105, 0xcfef }, { 2118, 0xf11b }, { 2127, 0xdb6b }, { 2138, 0xf40a }, { 2145, 0xc3e6 }, { 2154, 0xef7e }, { 2167, 0x9b9c }, { 2176, 0xf610 }, /* 0x5900 */ { 2183, 0xf048 }, { 2189, 0x16f4 }, { 2197, 0xfeb5 }, { 2209, 0x5182 }, { 2214, 0xc7b1 }, { 2223, 0x15bb }, { 2232, 0x6e87 }, { 2241, 0xfbdf }, { 2255, 0xe43f }, { 2265, 0x63cd }, { 2274, 0xc1ff }, { 2285, 0x7e7e }, { 2297, 0xfdeb }, { 2310, 0x7d5f }, { 2322, 0x777b }, { 2334, 0xfcfe }, /* 0x5a00 */ { 2347, 0x960b }, { 2354, 0xdbea }, { 2365, 0x6229 }, { 2371, 0x53e8 }, { 2379, 0x37df }, { 2391, 0xfdef }, { 2405, 0x36f5 }, { 2415, 0xbd81 }, { 2423, 0xdc18 }, { 2430, 0xfcbd }, { 2442, 0xd2e4 }, { 2450, 0xffff }, { 2466, 0x3fd7 }, { 2478, 0xffe0 }, { 2489, 0x7f6f }, { 2502, 0xabf8 }, /* 0x5b00 */ { 2512, 0x9bae }, { 2522, 0x6ed9 }, { 2532, 0xf5fb }, { 2545, 0xf115 }, { 2553, 0x79a9 }, { 2562, 0xbdfb }, { 2575, 0x5a3c }, { 2583, 0xadaf }, { 2594, 0xdbba }, { 2605, 0x1fac }, { 2614, 0x71fc }, { 2624, 0x8379 }, { 2632, 0x7cf7 }, { 2644, 0xc35f }, { 2654, 0xdfff }, { 2669, 0x0567 }, /* 0x5c00 */ { 2676, 0xff9a }, { 2688, 0x8467 }, { 2695, 0x1534 }, { 2701, 0xdf8b }, { 2712, 0xf9f3 }, { 2724, 0x3373 }, { 2733, 0xf7bd }, { 2746, 0x5e1a }, { 2754, 0xbf40 }, { 2762, 0xa03f }, { 2770, 0xffff }, { 2786, 0x01eb }, { 2793, 0xdfc0 }, { 2802, 0xcfdd }, { 2814, 0x7500 }, { 2819, 0xabd3 }, /* 0x5d00 */ { 2829, 0xf8c3 }, { 2838, 0xeed6 }, { 2849, 0x43fd }, { 2859, 0xb7ff }, { 2873, 0x5eaf }, { 2884, 0x4227 }, { 2890, 0x9bac }, { 2899, 0xf686 }, { 2908, 0x27d7 }, { 2918, 0xf6bc }, { 2929, 0xf787 }, { 2940, 0x35b7 }, { 2950, 0xaacd }, { 2959, 0xe176 }, { 2968, 0x49e7 }, { 2977, 0xe29f }, /* 0x5e00 */ { 2987, 0x545c }, { 2994, 0xaff2 }, { 3005, 0x2b3f }, { 3015, 0x61d8 }, { 3022, 0xfc3b }, { 3033, 0xbbb8 }, { 3043, 0xffcf }, { 3057, 0x7b7d }, { 3069, 0xbf95 }, { 3080, 0x1ce0 }, { 3086, 0x7dfd }, { 3099, 0x43ff }, { 3110, 0x5ff6 }, { 3122, 0xfffe }, { 3137, 0xd3ef }, { 3149, 0xc4ce }, /* 0x5f00 */ { 3157, 0x8db6 }, { 3166, 0xadbc }, { 3176, 0x63dc }, { 3185, 0x11eb }, { 3193, 0xdf59 }, { 3204, 0x23d0 }, { 3210, 0xbeb4 }, { 3220, 0xf3db }, { 3232, 0x1fe7 }, { 3243, 0xdbc7 }, { 3254, 0xff63 }, { 3266, 0xfae4 }, { 3276, 0xb22b }, { 3284, 0x63f7 }, { 3295, 0xed3b }, { 3306, 0xadba }, /* 0x6000 */ { 3316, 0xfe01 }, { 3324, 0x7eff }, { 3338, 0xfff7 }, { 3353, 0x02bc }, { 3359, 0x32ff }, { 3370, 0xef39 }, { 3381, 0xfffc }, { 3395, 0x8005 }, { 3398, 0x77fb }, { 3411, 0xbcf5 }, { 3422, 0x010d }, { 3426, 0xfff7 }, { 3441, 0xfffb }, { 3456, 0xbf3a }, { 3467, 0x0057 }, { 3472, 0xdfff }, /* 0x6100 */ { 3487, 0xef7b }, { 3500, 0xbd7d }, { 3512, 0xdb88 }, { 3520, 0xc8d4 }, { 3527, 0xfff3 }, { 3541, 0xed7c }, { 3552, 0x5dee }, { 3563, 0x56ff }, { 3575, 0x7e0d }, { 3584, 0xac5f }, { 3594, 0xff96 }, { 3606, 0xd57f }, { 3618, 0x3fee }, { 3630, 0xc140 }, { 3634, 0x6ff9 }, { 3646, 0xffe7 }, /* 0x6200 */ { 3660, 0x779b }, { 3671, 0x8e77 }, { 3681, 0x6ebf }, { 3693, 0xe45d }, { 3702, 0x6fcf }, { 3714, 0x5f1f }, { 3725, 0xe07f }, { 3735, 0xfedf }, { 3749, 0xd7db }, { 3761, 0x01fe }, { 3769, 0xff00 }, { 3777, 0xfb7b }, { 3790, 0xffd4 }, { 3802, 0x1fdf }, { 3814, 0xf800 }, { 3819, 0xffff }, /* 0x6300 */ { 3835, 0xfb8f }, { 3847, 0x007b }, { 3853, 0xbf00 }, { 3860, 0x7f5c }, { 3871, 0xffff }, { 3887, 0x07f3 }, { 3896, 0xeba0 }, { 3904, 0x3de7 }, { 3915, 0xf7bf }, { 3929, 0xfbd7 }, { 3942, 0xffbf }, { 3957, 0x6003 }, { 3961, 0xfffd }, { 3976, 0xbfed }, { 3989, 0xefbb }, { 4002, 0x027f }, /* 0x6400 */ { 4010, 0xfe40 }, { 4018, 0xddfd }, { 4031, 0xfdff }, { 4046, 0xe2f9 }, { 4056, 0x680b }, { 4062, 0xfb1f }, { 4074, 0xfbe3 }, { 4086, 0xaffd }, { 4099, 0x9fa4 }, { 4108, 0xf7ed }, { 4121, 0x7a7d }, { 4132, 0xf80f }, { 4141, 0xeebe }, { 4153, 0x0fd5 }, { 4162, 0xbb5d }, { 4173, 0xfd9f }, /* 0x6500 */ { 4186, 0xf2db }, { 4197, 0x3bf9 }, { 4208, 0xfe7f }, { 4222, 0xebcc }, { 4232, 0x876a }, { 4240, 0x73fa }, { 4251, 0x95fc }, { 4261, 0x9ffc }, { 4273, 0x109f }, { 4280, 0xfaf7 }, { 4293, 0xddb7 }, { 4305, 0xbbcd }, { 4316, 0xf87e }, { 4327, 0xeccd }, { 4337, 0xf366 }, { 4347, 0x3c3f }, /* 0x6600 */ { 4357, 0xfffd }, { 4372, 0xb03f }, { 4381, 0xe9f7 }, { 4393, 0x067e }, { 4401, 0x96ae }, { 4410, 0xfe06 }, { 4419, 0xd576 }, { 4429, 0x5fd7 }, { 4441, 0x3fd1 }, { 4451, 0xa3f3 }, { 4461, 0xcf07 }, { 4470, 0x6fb7 }, { 4482, 0x9fd1 }, { 4492, 0x7f44 }, { 4501, 0x7b59 }, { 4511, 0xd3dd }, /* 0x6700 */ { 4522, 0xaf3b }, { 4533, 0xa9bd }, { 4543, 0x7dcf }, { 4555, 0xff3a }, { 4567, 0xfbe0 }, { 4577, 0xf6eb }, { 4589, 0xb401 }, { 4594, 0xffff }, { 4610, 0x7afa }, { 4621, 0xb7bf }, { 4634, 0xc000 }, { 4636, 0x0ffd }, { 4647, 0xff7f }, { 4662, 0xff1f }, { 4675, 0xfefc }, { 4688, 0x95ff }, /* 0x6800 */ { 4700, 0x0000 }, { 4700, 0xb5dc }, { 4710, 0xef63 }, { 4721, 0x3f3e }, { 4732, 0xfb7f }, { 4746, 0x001b }, { 4750, 0xe800 }, { 4754, 0xfbf6 }, { 4767, 0x9eef }, { 4779, 0xb8df }, { 4790, 0xff9f }, { 4804, 0x003f }, { 4810, 0x7bd0 }, { 4819, 0xf5ff }, { 4833, 0xdfdb }, { 4846, 0x3fff }, /* 0x6900 */ { 4860, 0xfdf0 }, { 4871, 0x00bf }, { 4878, 0x8420 }, { 4881, 0xbbbd }, { 4893, 0xdf37 }, { 4905, 0xffde }, { 4919, 0xff6d }, { 4932, 0x0ff3 }, { 4942, 0x604c }, { 4947, 0x5efb }, { 4959, 0xfffb }, { 4974, 0xfafb }, { 4987, 0xfe5e }, { 4999, 0x0219 }, { 5003, 0x79f4 }, { 5013, 0xf9de }, /* 0x6a00 */ { 5025, 0xa7f7 }, { 5037, 0xebfa }, { 5049, 0x01eb }, { 5056, 0xff34 }, { 5067, 0xebd3 }, { 5078, 0xef73 }, { 5090, 0xafd7 }, { 5102, 0xc040 }, { 5105, 0x72bb }, { 5115, 0xdcff }, { 5128, 0xf17f }, { 5140, 0x2fd8 }, { 5149, 0xb8ec }, { 5158, 0xfe0b }, { 5168, 0xdda3 }, { 5178, 0x1f0b }, /* 0x6b00 */ { 5186, 0x8f1d }, { 5195, 0x47cf }, { 5205, 0xb12b }, { 5213, 0xffde }, { 5227, 0x7fee }, { 5240, 0xda73 }, { 5250, 0x24ff }, { 5260, 0xcbc4 }, { 5268, 0xf75d }, { 5280, 0xcbf2 }, { 5290, 0xecfd }, { 5302, 0xb4ed }, { 5312, 0xbff9 }, { 5325, 0x4ddd }, { 5335, 0x99dd }, { 5345, 0xfb8d }, /* 0x6c00 */ { 5356, 0xbb7f }, { 5369, 0xaf7b }, { 5381, 0xddfb }, { 5394, 0xc959 }, { 5402, 0xfc4f }, { 5413, 0xfab5 }, { 5424, 0xafe3 }, { 5435, 0x6d5f }, { 5446, 0xffff }, { 5462, 0x3f7d }, { 5474, 0x7800 }, { 5478, 0xffdb }, { 5492, 0xb6ff }, { 5505, 0x7eff }, { 5519, 0xfbaf }, { 5532, 0x022f }, /* 0x6d00 */ { 5538, 0xff9b }, { 5551, 0xefc7 }, { 5563, 0xffa5 }, { 5575, 0xffff }, { 5591, 0x0007 }, { 5594, 0xc700 }, { 5599, 0xf7ff }, { 5614, 0xfff1 }, { 5627, 0x7ffd }, { 5641, 0x01bf }, { 5649, 0xdc00 }, { 5654, 0xfdbc }, { 5666, 0xbff5 }, { 5679, 0xffff }, { 5695, 0xff7f }, { 5710, 0x3eff }, /* 0x6e00 */ { 5723, 0x0029 }, { 5726, 0xbe00 }, { 5732, 0xf9ff }, { 5746, 0xff7f }, { 5761, 0x6efb }, { 5773, 0xfd7e }, { 5786, 0xcbff }, { 5799, 0x039e }, { 5806, 0xe300 }, { 5811, 0xfbdd }, { 5824, 0xccff }, { 5836, 0xf6df }, { 5849, 0xffff }, { 5865, 0x117f }, { 5874, 0xf800 }, { 5879, 0xfbf6 }, /* 0x6f00 */ { 5892, 0xe7ef }, { 5905, 0xd73c }, { 5915, 0xfeef }, { 5929, 0xdfef }, { 5943, 0xc00b }, { 5948, 0xedbf }, { 5961, 0xfedf }, { 5975, 0xfdcd }, { 5987, 0x7bf5 }, { 5999, 0x40fd }, { 6007, 0xffff }, { 6023, 0xb75f }, { 6035, 0xffdf }, { 6050, 0xf930 }, { 6058, 0xfbdf }, { 6072, 0xdc97 }, /* 0x7000 */ { 6082, 0xfef3 }, { 6095, 0xbff2 }, { 6107, 0x8fdf }, { 6119, 0xdfbf }, { 6133, 0x177f }, { 6144, 0xede6 }, { 6155, 0x0f7f }, { 6166, 0x3553 }, { 6174, 0x447c }, { 6181, 0x877e }, { 6191, 0xfa12 }, { 6199, 0x45bb }, { 6208, 0xede0 }, { 6217, 0x779e }, { 6228, 0x8017 }, { 6233, 0xbfd9 }, /* 0x7100 */ { 6245, 0x7e55 }, { 6255, 0xde89 }, { 6264, 0xc16f }, { 6273, 0x0447 }, { 6278, 0x7ade }, { 6289, 0xf75d }, { 6301, 0x57ff }, { 6314, 0x2905 }, { 6319, 0x86f7 }, { 6329, 0xfe95 }, { 6340, 0x97b3 }, { 6350, 0xf32f }, { 6361, 0xcfff }, { 6375, 0x9f75 }, { 6386, 0x71f7 }, { 6397, 0xfb17 }, /* 0x7200 */ { 6408, 0x34ee }, { 6417, 0xee19 }, { 6426, 0x37cc }, { 6435, 0xef61 }, { 6445, 0x9fd6 }, { 6456, 0xef4c }, { 6466, 0xd68f }, { 6476, 0xfbdd }, { 6489, 0x7b73 }, { 6500, 0x6def }, { 6512, 0xd7fe }, { 6525, 0xa431 }, { 6531, 0x5e7f }, { 6543, 0x97d7 }, { 6554, 0x0f5b }, { 6563, 0xffd8 }, /* 0x7300 */ { 6575, 0x9d83 }, { 6583, 0x7bce }, { 6594, 0x22ec }, { 6601, 0xdcff }, { 6614, 0x763d }, { 6624, 0xef87 }, { 6635, 0xdfe7 }, { 6648, 0xfded }, { 6661, 0x4fff }, { 6674, 0xa0fc }, { 6682, 0x3b77 }, { 6693, 0xdbfc }, { 6705, 0x3ded }, { 6716, 0x7fdc }, { 6728, 0x6fa9 }, { 6738, 0xf570 }, /* 0x7400 */ { 6747, 0x3ffb }, { 6760, 0x2c40 }, { 6764, 0xff7f }, { 6779, 0x847f }, { 6788, 0xec57 }, { 6798, 0xdeb7 }, { 6810, 0xe69c }, { 6819, 0xf22f }, { 6829, 0x0feb }, { 6839, 0xd5b5 }, { 6849, 0xafeb }, { 6861, 0xede7 }, { 6873, 0x8c2f }, { 6881, 0xfff0 }, { 6893, 0x537f }, { 6904, 0xe8f0 }, /* 0x7500 */ { 6912, 0xb99d }, { 6922, 0xb5ff }, { 6935, 0xff66 }, { 6947, 0xe78f }, { 6958, 0xd981 }, { 6965, 0xbe10 }, { 6972, 0x9c7c }, { 6981, 0xe3c1 }, { 6989, 0x9cd1 }, { 6997, 0x2733 }, { 7005, 0x0cbc }, { 7012, 0xff6d }, { 7025, 0xfcb7 }, { 7037, 0xefb7 }, { 7050, 0xa0df }, { 7059, 0xffff }, /* 0x7600 */ { 7075, 0xbf0b }, { 7085, 0xfe7b }, { 7098, 0xa3ff }, { 7110, 0x353f }, { 7120, 0x13cc }, { 7127, 0x97cd }, { 7137, 0x7637 }, { 7147, 0xfb27 }, { 7158, 0xcfd6 }, { 7169, 0x7e6c }, { 7179, 0xec50 }, { 7186, 0xed31 }, { 7195, 0x677c }, { 7205, 0xfc1c }, { 7214, 0xf6fa }, { 7226, 0x5fbf }, /* 0x7700 */ { 7239, 0x0fba }, { 7248, 0xae2f }, { 7258, 0xa3ad }, { 7267, 0x7ffe }, { 7281, 0xfcf0 }, { 7291, 0xde74 }, { 7301, 0xffef }, { 7316, 0xf200 }, { 7321, 0xfbbf }, { 7335, 0xfea2 }, { 7345, 0x3daf }, { 7356, 0xbcff }, { 7369, 0xf694 }, { 7378, 0x5fb9 }, { 7389, 0xf3ad }, { 7400, 0x3f8f }, /* 0x7800 */ { 7411, 0xf26c }, { 7420, 0xa01f }, { 7427, 0xffef }, { 7442, 0x01bf }, { 7450, 0x7728 }, { 7458, 0x7005 }, { 7463, 0xff35 }, { 7475, 0xda03 }, { 7482, 0xd2f9 }, { 7492, 0xc7fa }, { 7503, 0x3fbf }, { 7516, 0x5c1d }, { 7524, 0xff3a }, { 7536, 0xec33 }, { 7545, 0xb7af }, { 7557, 0xfe9c }, /* 0x7900 */ { 7568, 0x5236 }, { 7575, 0x7a9f }, { 7586, 0xbffa }, { 7599, 0xe722 }, { 7607, 0x9ff7 }, { 7620, 0xfcff }, { 7634, 0x2fbb }, { 7645, 0xb61d }, { 7654, 0xed06 }, { 7662, 0x1dfd }, { 7673, 0x7dd7 }, { 7685, 0xefdf }, { 7699, 0xeb23 }, { 7708, 0xf166 }, { 7717, 0x7ed9 }, { 7728, 0x0dc0 }, /* 0x7a00 */ { 7733, 0x3d3d }, { 7743, 0xdfbf }, { 7757, 0xc945 }, { 7764, 0xba83 }, { 7772, 0x7dd1 }, { 7782, 0x9dd0 }, { 7790, 0x7b87 }, { 7800, 0xcf73 }, { 7811, 0x9ff3 }, { 7823, 0xc3f5 }, { 7833, 0xdf0d }, { 7843, 0xc5fe }, { 7854, 0x0cb3 }, { 7861, 0x8302 }, { 7865, 0xe879 }, { 7874, 0xaec0 }, /* 0x7b00 */ { 7881, 0xc773 }, { 7891, 0x6f0f }, { 7901, 0xfd7d }, { 7914, 0x093f }, { 7922, 0xfff1 }, { 7935, 0x0157 }, { 7941, 0x62fb }, { 7951, 0x01ff }, { 7960, 0xfdb4 }, { 7971, 0x3bf3 }, { 7982, 0xb013 }, { 7988, 0x43b2 }, { 7995, 0x5ed3 }, { 8005, 0xff30 }, { 8015, 0x0fff }, { 8027, 0xeb9f }, /* 0x7c00 */ { 8039, 0xfeef }, { 8053, 0xf203 }, { 8060, 0x3fef }, { 8073, 0xfb89 }, { 8083, 0x37a9 }, { 8092, 0x9e99 }, { 8101, 0xdef9 }, { 8113, 0xa72c }, { 8121, 0x3733 }, { 8130, 0xc1f6 }, { 8139, 0x812e }, { 8145, 0xfe3e }, { 8157, 0x5d20 }, { 8163, 0xf2f7 }, { 8175, 0xd585 }, { 8183, 0x69d7 }, /* 0x7d00 */ { 8193, 0xffff }, { 8209, 0xffff }, { 8225, 0xdb07 }, { 8234, 0xff6f }, { 8248, 0xc4ff }, { 8259, 0xd97f }, { 8271, 0xefce }, { 8283, 0xbe0f }, { 8293, 0xf17b }, { 8304, 0xf05e }, { 8313, 0xf6cf }, { 8325, 0xffb7 }, { 8339, 0x5ef7 }, { 8351, 0xef84 }, { 8360, 0xd7cb }, { 8371, 0x0edf }, /* 0x7e00 */ { 8381, 0xff08 }, { 8390, 0xfcff }, { 8404, 0xee3f }, { 8416, 0xffff }, { 8432, 0x13ff }, { 8443, 0xd7ff }, { 8457, 0xaf0f }, { 8467, 0x7ffd }, { 8481, 0xbdc7 }, { 8492, 0x1ffa }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, /* 0x7f00 */ { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0xe740 }, { 8510, 0xbd38 }, { 8519, 0xf933 }, { 8529, 0x7feb }, { 8542, 0xfeed }, { 8555, 0x7fe8 }, { 8566, 0x7c76 }, { 8576, 0xb3f7 }, { 8588, 0xffef }, { 8603, 0xfeaf }, { 8616, 0xd8b7 }, { 8626, 0xff6f }, { 8640, 0xfbbf }, /* 0x8000 */ { 8654, 0xf8fb }, { 8666, 0xdbf7 }, { 8679, 0x1752 }, { 8686, 0xe2f9 }, { 8696, 0x85c8 }, { 8702, 0x7547 }, { 8711, 0x9090 }, { 8715, 0xe3ef }, { 8727, 0x9ef4 }, { 8737, 0x3f6d }, { 8748, 0xee2e }, { 8758, 0x0536 }, { 8764, 0xf7bc }, { 8776, 0x7ff3 }, { 8789, 0xa07b }, { 8797, 0x7f3f }, /* 0x8100 */ { 8810, 0x0567 }, { 8817, 0xeb60 }, { 8825, 0xbabe }, { 8836, 0x6601 }, { 8841, 0xfcd8 }, { 8851, 0x583f }, { 8860, 0xcaf7 }, { 8871, 0x87df }, { 8882, 0xbfcd }, { 8894, 0xffa0 }, { 8904, 0x5bcd }, { 8914, 0xfebf }, { 8928, 0xb6fd }, { 8940, 0xefa7 }, { 8952, 0x77ef }, { 8965, 0xdf9c }, /* 0x8200 */ { 8976, 0x3fb7 }, { 8988, 0xf877 }, { 8999, 0x9d27 }, { 9008, 0xb7fc }, { 9020, 0xcab5 }, { 9029, 0xdfef }, { 9043, 0xfb5a }, { 9054, 0xf1b6 }, { 9064, 0xec39 }, { 9073, 0xef1f }, { 9085, 0xfbbf }, { 9099, 0x7ffb }, { 9113, 0x000d }, { 9116, 0xdafe }, { 9128, 0xbdfb }, { 9141, 0x4e7f }, /* 0x8300 */ { 9152, 0x33ff }, { 9164, 0x5ac0 }, { 9170, 0xbff5 }, { 9183, 0x9ffe }, { 9196, 0xffbf }, { 9211, 0x005f }, { 9217, 0x0000 }, { 9217, 0xfdf8 }, { 9229, 0xffca }, { 9241, 0x6ffd }, { 9254, 0xcffd }, { 9267, 0xa001 }, { 9270, 0xdfff }, { 9285, 0xfbf2 }, { 9297, 0xdfbf }, { 9311, 0xff7f }, /* 0x8400 */ { 9326, 0xfeda }, { 9338, 0x080f }, { 9343, 0xba08 }, { 9349, 0xbfff }, { 9364, 0x7afd }, { 9376, 0xeed7 }, { 9388, 0xfbeb }, { 9401, 0x67f9 }, { 9412, 0xe044 }, { 9417, 0xff93 }, { 9429, 0xdf97 }, { 9441, 0x9f57 }, { 9452, 0xfef7 }, { 9466, 0x08df }, { 9474, 0xdf80 }, { 9482, 0xfedf }, /* 0x8500 */ { 9496, 0xffc5 }, { 9508, 0xf7fe }, { 9522, 0xfffb }, { 9537, 0x6803 }, { 9542, 0x67fb }, { 9554, 0x6bfa }, { 9565, 0x7fff }, { 9580, 0x5fe2 }, { 9590, 0xffff }, { 9606, 0xff73 }, { 9619, 0x87df }, { 9630, 0xe7fb }, { 9643, 0xebfd }, { 9656, 0xf7a7 }, { 9668, 0xbf7e }, { 9681, 0xefc7 }, /* 0x8600 */ { 9693, 0x1ef3 }, { 9703, 0xdf82 }, { 9712, 0x76ff }, { 9725, 0xdf7e }, { 9738, 0x79c9 }, { 9747, 0xda7d }, { 9758, 0xefbe }, { 9771, 0x1e9b }, { 9780, 0x7ce0 }, { 9788, 0x77fb }, { 9801, 0x87be }, { 9811, 0xfffb }, { 9826, 0x1bff }, { 9838, 0xffdb }, { 9852, 0x3f5c }, { 9862, 0x4fe0 }, /* 0x8700 */ { 9870, 0x7fff }, { 9885, 0x5f0e }, { 9894, 0x77ff }, { 9908, 0xddbf }, { 9921, 0xf04f }, { 9930, 0xffff }, { 9946, 0xffff }, { 9962, 0x0ff8 }, { 9971, 0xa3be }, { 9981, 0xfddf }, { 9995, 0xfc1c }, { 10004, 0xfffd }, { 10019, 0x1f7d }, { 10030, 0xfb9e }, { 10042, 0xbdff }, { 10056, 0xdedc }, /* 0x8800 */ { 10067, 0x3f6f }, { 10079, 0xbafb }, { 10091, 0xdf7f }, { 10105, 0xfbef }, { 10119, 0x7d1b }, { 10129, 0x2eec }, { 10138, 0xaf8e }, { 10148, 0xf2f7 }, { 10160, 0x7b0f }, { 10170, 0xcfee }, { 10182, 0x1d96 }, { 10190, 0x77c6 }, { 10200, 0x7e07 }, { 10209, 0xfff5 }, { 10223, 0xd982 }, { 10230, 0x7fdf }, /* 0x8900 */ { 10244, 0x5ee6 }, { 10254, 0xc7ff }, { 10267, 0xfeee }, { 10280, 0x79ef }, { 10292, 0x9a56 }, { 10300, 0xffcf }, { 10314, 0xfe5f }, { 10327, 0xde5e }, { 10338, 0x896e }, { 10346, 0xf9e8 }, { 10356, 0xf45e }, { 10366, 0xe6c4 }, { 10374, 0x0001 }, { 10375, 0xbe7c }, { 10386, 0x3b7f }, { 10398, 0xdddf }, /* 0x8a00 */ { 10411, 0xd59d }, { 10421, 0xe9ef }, { 10433, 0x34ac }, { 10440, 0xde53 }, { 10450, 0xf573 }, { 10461, 0x4bf7 }, { 10472, 0x7b4f }, { 10483, 0x9eff }, { 10496, 0xb8fe }, { 10507, 0x476e }, { 10516, 0x0dfb }, { 10526, 0xff45 }, { 10537, 0xabfd }, { 10549, 0xfbfe }, { 10563, 0xe9d7 }, { 10574, 0xddff }, /* 0x8b00 */ { 10588, 0xedf7 }, { 10601, 0x7fff }, { 10616, 0xddfd }, { 10629, 0x7eeb }, { 10641, 0xcfe7 }, { 10653, 0xb7ff }, { 10667, 0xbde9 }, { 10678, 0xef91 }, { 10688, 0x5d75 }, { 10698, 0xd77c }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, /* 0x8c00 */ { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0xfa80 }, { 10716, 0xffee }, { 10730, 0xb4f1 }, { 10739, 0xbf76 }, { 10751, 0x2fef }, { 10763, 0xb677 }, { 10774, 0x77bf }, { 10787, 0x9fbf }, { 10800, 0xfffd }, { 10815, 0x95bf }, { 10826, 0xf6ae }, { 10837, 0x75ff }, { 10850, 0x7f3b }, /* 0x8d00 */ { 10862, 0xa7f5 }, { 10873, 0x0af9 }, { 10881, 0x0000 }, { 10881, 0x0000 }, { 10881, 0x0000 }, { 10881, 0x0000 }, { 10881, 0xfbd0 }, { 10891, 0x2bdd }, { 10901, 0xf633 }, { 10911, 0x9a7f }, { 10922, 0xfdab }, { 10934, 0xd6fc }, { 10945, 0xf9e6 }, { 10956, 0xbfeb }, { 10969, 0xdfdf }, { 10983, 0xf41f }, /* 0x8e00 */ { 10993, 0xa6fd }, { 11004, 0xffff }, { 11020, 0x4aff }, { 11031, 0xf37b }, { 11043, 0x7fb7 }, { 11056, 0xfef9 }, { 11069, 0xb6ff }, { 11082, 0x1d5c }, { 11090, 0x7ff6 }, { 11103, 0xe5ff }, { 11116, 0x1f7b }, { 11127, 0x2404 }, { 11130, 0xbe05 }, { 11138, 0xf99e }, { 11149, 0xdbe3 }, { 11160, 0xdff2 }, /* 0x8f00 */ { 11172, 0x6fef }, { 11185, 0xfdff }, { 11200, 0xd679 }, { 11210, 0xcbfc }, { 11221, 0xebfd }, { 11234, 0xefff }, { 11249, 0x001f }, { 11254, 0x0000 }, { 11254, 0x0000 }, { 11254, 0x9800 }, { 11257, 0xe148 }, { 11263, 0x8017 }, { 11268, 0x6a74 }, { 11276, 0x00fe }, { 11283, 0x6d7f }, { 11295, 0xfdf1 }, /* 0x9000 */ { 11307, 0xb87f }, { 11318, 0xfef3 }, { 11331, 0xe01f }, { 11339, 0xf176 }, { 11349, 0xee96 }, { 11359, 0x7b3f }, { 11371, 0xeb8d }, { 11381, 0xfffd }, { 11396, 0xadff }, { 11409, 0xcbb3 }, { 11419, 0x84ef }, { 11428, 0xe17f }, { 11439, 0x4daa }, { 11447, 0xbff0 }, { 11458, 0xbf3f }, { 11471, 0xfe3f }, /* 0x9100 */ { 11484, 0xebff }, { 11498, 0xffd7 }, { 11512, 0xffdf }, { 11527, 0xcf7f }, { 11540, 0xfffb }, { 11555, 0x85ed }, { 11564, 0xd73f }, { 11576, 0x07bc }, { 11584, 0xaeff }, { 11597, 0xfe0f }, { 11608, 0xfdaf }, { 11621, 0x76bf }, { 11633, 0xfaef }, { 11646, 0x37bb }, { 11657, 0x7fdc }, { 11669, 0xa3ba }, /* 0x9200 */ { 11678, 0xb6ff }, { 11691, 0x56f7 }, { 11702, 0x60f8 }, { 11709, 0xe7df }, { 11722, 0xff61 }, { 11733, 0x4cdf }, { 11743, 0xb0fb }, { 11753, 0xff45 }, { 11764, 0x7ded }, { 11776, 0x3ffa }, { 11788, 0x1fff }, { 11801, 0x18fc }, { 11809, 0xffff }, { 11825, 0xe3af }, { 11836, 0xc7d3 }, { 11846, 0xdf83 }, /* 0x9300 */ { 11856, 0xfb57 }, { 11868, 0xef7d }, { 11881, 0xefff }, { 11896, 0x1378 }, { 11903, 0xfec0 }, { 11912, 0x5ff7 }, { 11925, 0x34bb }, { 11934, 0x5ee3 }, { 11944, 0xf70d }, { 11954, 0xeff6 }, { 11967, 0xd7fe }, { 11980, 0x00bf }, { 11987, 0xf59d }, { 11998, 0xf7f7 }, { 12012, 0x51de }, { 12021, 0xffe0 }, /* 0x9400 */ { 12032, 0xfec9 }, { 12043, 0x037f }, { 12052, 0x5f01 }, { 12059, 0xbfef }, { 12073, 0x9ff1 }, { 12084, 0x60a7 }, { 12091, 0xef1d }, { 12102, 0xf1ff }, { 12115, 0x000f }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, /* 0x9500 */ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x3c80 }, { 12124, 0xfb4d }, { 12135, 0xd91f }, { 12145, 0x7b3a }, { 12155, 0xfee3 }, { 12167, 0x3fe9 }, { 12178, 0xdc7f }, { 12190, 0x003f }, { 12196, 0x0000 }, /* 0x9600 */ { 12196, 0x0000 }, { 12196, 0x5000 }, { 12198, 0xf51f }, { 12209, 0xbe07 }, { 12218, 0xfc1d }, { 12228, 0xf91b }, { 12238, 0xbc1e }, { 12247, 0x71ff }, { 12259, 0x6ff9 }, { 12271, 0x5bbe }, { 12282, 0x5796 }, { 12291, 0x9b1b }, { 12300, 0x7fff }, { 12315, 0xfffc }, { 12329, 0x872e }, { 12337, 0xafe7 }, /* 0x9700 */ { 12349, 0xebf5 }, { 12361, 0xf34f }, { 12372, 0xdffd }, { 12386, 0xe725 }, { 12395, 0x0bdc }, { 12403, 0x5d44 }, { 12410, 0x5747 }, { 12419, 0xfddd }, { 12432, 0xed3f }, { 12444, 0x7790 }, { 12452, 0x7d7f }, { 12465, 0x8ac8 }, { 12471, 0xfafa }, { 12483, 0xf3f9 }, { 12495, 0x202a }, { 12499, 0xef4b }, /* 0x9800 */ { 12510, 0xf5ff }, { 12524, 0x79cf }, { 12535, 0xabd3 }, { 12545, 0x0ba5 }, { 12552, 0xf77a }, { 12564, 0xfb8f }, { 12576, 0x8ebd }, { 12586, 0x001f }, { 12591, 0x0000 }, { 12591, 0x0000 }, { 12591, 0xf300 }, { 12597, 0xfd4e }, { 12608, 0x1a57 }, { 12616, 0x8800 }, { 12618, 0xaeac }, { 12627, 0x7654 }, /* 0x9900 */ { 12635, 0x17ad }, { 12644, 0xcdff }, { 12657, 0xffb2 }, { 12669, 0xf42f }, { 12679, 0x5baa }, { 12688, 0xdbff }, { 12702, 0x0002 }, { 12703, 0x0000 }, { 12703, 0x0000 }, { 12703, 0x73c0 }, { 12710, 0xf9ea }, { 12721, 0x2e3f }, { 12731, 0xfa8e }, { 12741, 0xbbff }, { 12755, 0x76bc }, { 12765, 0xffd3 }, /* 0x9a00 */ { 12778, 0xeefe }, { 12791, 0x7e72 }, { 12801, 0x7ebd }, { 12813, 0xe7f7 }, { 12826, 0xf77f }, { 12840, 0xcefd }, { 12852, 0x0ff5 }, { 12862, 0x0000 }, { 12862, 0x0000 }, { 12862, 0x0000 }, { 12862, 0xa900 }, { 12866, 0xdb9b }, { 12877, 0xa4c7 }, { 12885, 0x917f }, { 12895, 0xf8ca }, { 12904, 0x7ece }, /* 0x9b00 */ { 12915, 0x7d7a }, { 12926, 0xc7e7 }, { 12937, 0xcbbd }, { 12948, 0xdcae }, { 12958, 0xfd7e }, { 12971, 0x8f76 }, { 12981, 0x91d3 }, { 12989, 0x7cf3 }, { 13000, 0x01e5 }, { 13006, 0x4c2f }, { 13014, 0xed77 }, { 13026, 0xa360 }, { 13032, 0x07db }, { 13041, 0x5ef8 }, { 13051, 0x1df7 }, { 13062, 0x2181 }, /* 0x9c00 */ { 13066, 0x6be0 }, { 13074, 0x309c }, { 13080, 0x3b3a }, { 13089, 0xfade }, { 13101, 0x7f53 }, { 13112, 0xc3f5 }, { 13122, 0x61cd }, { 13130, 0x07ba }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x26e0 }, { 13144, 0xbefe }, /* 0x9d00 */ { 13157, 0x03f9 }, { 13165, 0xebb5 }, { 13176, 0xe36d }, { 13186, 0xe9cb }, { 13196, 0x9c2f }, { 13205, 0xbfde }, { 13218, 0x9f83 }, { 13227, 0xabbf }, { 13239, 0x1ff7 }, { 13251, 0xffd5 }, { 13264, 0xb7df }, { 13277, 0xdffe }, { 13291, 0xfdae }, { 13303, 0xffef }, { 13318, 0xfb7e }, { 13331, 0xeffd }, /* 0x9e00 */ { 13345, 0xaaff }, { 13357, 0x6ebf }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0xb620 }, { 13375, 0x7fcd }, { 13387, 0xbe9e }, { 13398, 0x62b3 }, { 13406, 0x58f1 }, { 13414, 0xf10d }, { 13422, 0xfd7b }, { 13435, 0xe9f1 }, { 13445, 0xbefd }, /* 0x9f00 */ { 13458, 0xc6c3 }, { 13466, 0x5f6d }, { 13477, 0xff3d }, { 13490, 0x69ff }, { 13502, 0xffcf }, { 13516, 0xfbf4 }, { 13528, 0xdcfb }, { 13540, 0x4ff7 }, { 13552, 0x2000 }, { 13553, 0x1137 }, { 13560, 0x0015 }, }; static const Summary16 big5_uni2indx_pagefa[1] = { /* 0xfa00 */ { 13563, 0x3000 }, }; static const Summary16 big5_uni2indx_pagefe[23] = { /* 0xfe00 */ { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0xfffb }, { 13580, 0xfe1f }, { 13592, 0xfef5 }, { 13605, 0x0e7f }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, /* 0xff00 */ { 13615, 0xff7a }, { 13628, 0xffff }, { 13644, 0xffff }, { 13660, 0x97ff }, { 13673, 0xfffe }, { 13688, 0x3fff }, { 13702, 0x0010 }, }; static int big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0100) summary = &big5_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0200 && wc < 0x0460) summary = &big5_uni2indx_page02[(wc>>4)-0x020]; else if (wc >= 0x2000 && wc < 0x22c0) summary = &big5_uni2indx_page20[(wc>>4)-0x200]; else if (wc >= 0x2400 && wc < 0x2650) summary = &big5_uni2indx_page24[(wc>>4)-0x240]; else if (wc >= 0x3000 && wc < 0x33e0) summary = &big5_uni2indx_page30[(wc>>4)-0x300]; else if (wc >= 0x4e00 && wc < 0x9fb0) summary = &big5_uni2indx_page4e[(wc>>4)-0x4e0]; else if (wc >= 0xfa00 && wc < 0xfa10) summary = &big5_uni2indx_pagefa[(wc>>4)-0xfa0]; else if (wc >= 0xfe00 && wc < 0xff70) summary = &big5_uni2indx_pagefe[(wc>>4)-0xfe0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = big5_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/big5hkscs.h0100644000000000000000000000344307206266436015201 0ustar rootroot/* * BIG5HKSCS */ /* * BIG5HKSCS can be downloaded from * http://www.info.gov.hk/digital21/eng/hkscs/download.html * http://www.info.gov.hk/digital21/eng/hkscs/index.html * * It extends BIG5 (without the rows 0xC6..0xC7) through the ranges * * 0x{88..8D}{40..7E,A1..FE} 641 characters * 0x{8E..A0}{40..7E,A1..FE} 2898 characters * 0x{C6..C8}{40..7E,A1..FE} 359 characters * 0xF9{D6..FE} 41 characters * 0x{FA..FE}{40..7E,A1..FE} 763 characters * * It thereby introduces an irreversible mapping * 0x8BF8 0x9F9C * 0xC074 0x9F9C */ #include "hkscs.h" static int big5hkscs_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; /* Code set 0 (ASCII) */ if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* Code set 1 (BIG5 extended) */ if (c >= 0xa1 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { int ret = big5_mbtowc(conv,pwc,s,2); if (ret != RET_ILSEQ) return ret; } } } } return hkscs_mbtowc(conv,pwc,s,n); } static int big5hkscs_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Code set 0 (ASCII) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 1 (BIG5 extended) */ ret = big5_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { if (n < 2) return RET_TOOSMALL; r[0] = buf[0]; r[1] = buf[1]; return 2; } } return hkscs_wctomb(conv,r,wc,n); } recode-3.6/libiconv/ces_big5.h0100644000000000000000000000172407206266436014777 0ustar rootroot /* * BIG-5 */ static int ces_big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; /* Code set 0 (ASCII) */ if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* Code set 1 (BIG5) */ if (c >= 0xa1 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) return big5_mbtowc(conv,pwc,s,2); else return RET_ILSEQ; } } return RET_ILSEQ; } static int ces_big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Code set 0 (ASCII) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 1 (BIG5) */ ret = big5_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]; r[1] = buf[1]; return 2; } return RET_ILSEQ; } recode-3.6/libiconv/ces_gbk.h0100644000000000000000000000153107206266436014710 0ustar rootroot/* * GBK, CP936 */ static int ces_gbk_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; /* Code set 0 (ASCII or GB 1988-89) */ if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* Code set 1 (GBK) */ if (c >= 0x81 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); return gbk_mbtowc(conv,pwc,s,2); } return RET_ILSEQ; } static int ces_gbk_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Code set 0 (ASCII or GB 1988-89) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 1 (GBK) */ ret = gbk_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]; r[1] = buf[1]; return 2; } return RET_ILSEQ; } recode-3.6/libiconv/cjk_variants.h0100644000000000000000000075571407175363260016012 0ustar rootroot /* * CJK variants table */ static const unsigned short cjk_variants[12038] = { 0x9e44, 0x1e2a, 0x200b, 0xcb87, 0xaf0c, 0x9e0a, 0x9e0b, 0xd42c, 0x23c1, 0xaf0e, 0x9e04, 0x9e05, 0xa176, 0xd207, 0x2303, 0xa304, 0x1e12, 0x619c, 0xeb57, 0x9e11, 0x2c02, 0xac08, 0x1e17, 0xa34b, 0x1e16, 0xa34b, 0x1e20, 0xa775, 0xb96d, 0x23e2, 0x3a37, 0x3b09, 0xd5c2, 0xb771, 0x4cf8, 0xcd72, 0x1e22, 0xa3be, 0x1e18, 0xa775, 0x1e24, 0xa169, 0x1e1f, 0xa3be, 0xe149, 0x1e21, 0xa169, 0x23b3, 0xa6b4, 0x20a1, 0x2e76, 0xcadd, 0xa5aa, 0x00f6, 0x200b, 0xcb87, 0x3792, 0x3860, 0xb90f, 0xc23f, 0x5c4a, 0x5c50, 0x673b, 0x674a, 0x68a8, 0xe8ce, 0x9e33, 0x9e32, 0xd1e8, 0x40ba, 0xc232, 0x2a6f, 0xee97, 0x3319, 0x34e7, 0xd209, 0xa3ca, 0x2208, 0xd2c5, 0x2efc, 0xdffa, 0x0006, 0x9e94, 0x1e46, 0xe579, 0x1e45, 0xe579, 0x2c1b, 0x2e7a, 0x2e85, 0x6ebc, 0xeebd, 0xcfa9, 0xc0cf, 0x397d, 0xba02, 0x1f17, 0x3500, 0x473e, 0xd846, 0xa5ac, 0x564e, 0xd65d, 0x1e58, 0xb909, 0x1e57, 0xb909, 0x6690, 0x66a0, 0xe6b1, 0xcfd2, 0x60f7, 0x6109, 0x610a, 0xe115, 0xb6f8, 0x2158, 0xa9cb, 0xdcb7, 0x1e82, 0xe1e0, 0x1e7e, 0x1e81, 0xbf27, 0x1e79, 0x1e81, 0x2e72, 0xbf27, 0x6f9c, 0xef9f, 0x1e79, 0x1e7e, 0xbf27, 0x1e71, 0xe1e0, 0x36b8, 0xc7ad, 0xdc6b, 0xc22d, 0x1e8b, 0xa3d3, 0x1e8a, 0xa3d3, 0xaf0d, 0x1e8f, 0x1e90, 0xb5bc, 0x1e8e, 0x1e90, 0x35bc, 0xd667, 0x1e8e, 0x9e8f, 0x1f1d, 0xe6f2, 0x9e44, 0xa6db, 0x2c81, 0x2d57, 0x3b72, 0xbb73, 0x9e99, 0x9e98, 0x1e9c, 0x9e9e, 0x1e9a, 0x9e9e, 0x3589, 0x358a, 0x6f4a, 0xef50, 0x1e9a, 0x9e9c, 0xc10f, 0x1ebe, 0xa166, 0x4522, 0xc523, 0x4546, 0x4552, 0x455d, 0xc55e, 0x9eaf, 0x9eb0, 0x9eab, 0x9eac, 0xa91c, 0xd9aa, 0xd93b, 0xa6b2, 0x9ebb, 0x9eba, 0x1ea1, 0xa166, 0xa104, 0xafce, 0x20cd, 0x22a8, 0xa2d5, 0x1ed8, 0xa0c5, 0xa0d5, 0xdb8e, 0xa0df, 0x21ab, 0x21b0, 0xbc37, 0x2f93, 0xaf9e, 0x9f5b, 0x1f1e, 0xa098, 0x1f96, 0x2d18, 0xad19, 0x1efa, 0xa009, 0x9ec5, 0x20ca, 0xa0f2, 0xa40c, 0x9eed, 0xaf74, 0x214f, 0x6577, 0x6578, 0xe57f, 0xa100, 0xa011, 0x9ede, 0x2047, 0xa3cd, 0x1fa1, 0xa0f9, 0x1ed3, 0xa009, 0x9fc7, 0x2f6c, 0xb58c, 0x9f4e, 0x2023, 0x2f77, 0x2fac, 0x4706, 0xeae3, 0x20a0, 0xc26b, 0xae11, 0x1e51, 0x473e, 0xd846, 0xa12a, 0xa925, 0xb703, 0xa0b4, 0xa005, 0x1e91, 0x1f20, 0xa0b3, 0x1ed0, 0x2098, 0xce56, 0xa049, 0x1f1d, 0xa0b3, 0x9fe5, 0x9fd4, 0xa0b7, 0xa000, 0xa02b, 0xa096, 0x207d, 0xa0de, 0x1f47, 0xcada, 0xa2aa, 0x1f32, 0x1f60, 0xa11e, 0x1f31, 0x1f60, 0xa11e, 0x9f90, 0xd0c4, 0x9f40, 0x9f3c, 0xb014, 0x9f2b, 0xae03, 0x9efe, 0x4b28, 0x5eb0, 0x5ec6, 0x6ab5, 0xead4, 0xa360, 0x6918, 0xe980, 0x1ecf, 0x2f7f, 0xeaf4, 0xa05a, 0x9fab, 0x1f31, 0x1f32, 0x211e, 0xa9b3, 0xa0ad, 0xa0c9, 0xaf8a, 0x3cd5, 0xc04b, 0x2002, 0xae76, 0xaf88, 0xa058, 0x29b7, 0xa9ea, 0xb765, 0x6625, 0x6634, 0x6670, 0xe682, 0xb549, 0x9f35, 0x9ed1, 0x5350, 0xd5a6, 0x9fe0, 0x1ef7, 0xa0f9, 0x9fb6, 0xa0e5, 0x2075, 0xe049, 0xa074, 0xa0d1, 0xa108, 0xa115, 0x9f5e, 0xa102, 0x2118, 0xac3d, 0xc7e6, 0x9fa3, 0xac40, 0xc537, 0x9fe3, 0xccfb, 0x9efc, 0xa101, 0xdf14, 0xc23c, 0x1f23, 0xb093, 0xa16a, 0xcae2, 0x9fa0, 0xda2b, 0x9fee, 0x9fc1, 0x9f21, 0xa114, 0xa13c, 0xa006, 0xa137, 0xa008, 0x2039, 0xa109, 0x1fe2, 0xd129, 0xa036, 0x209a, 0xb548, 0x2079, 0x2099, 0x20c3, 0xa907, 0x4ca5, 0xeb3b, 0x30de, 0xbb23, 0x9f25, 0x1f75, 0xae76, 0x207a, 0x24b1, 0xa592, 0x9f1c, 0x9fe9, 0x9feb, 0x1ed3, 0x9efa, 0xa06c, 0x00f6, 0x1e2a, 0xcb87, 0xd146, 0xa010, 0xa00f, 0x9eec, 0xae78, 0xa0b9, 0x2fa3, 0xd5c9, 0x1eff, 0xc706, 0xa03c, 0x22b5, 0xa2cc, 0x9f26, 0xa25a, 0x9ff1, 0x1fed, 0xa109, 0xa0b5, 0xa024, 0xa0be, 0xd2f1, 0xdcf0, 0x9eee, 0x9f1f, 0x5d0b, 0x5d17, 0xdd5d, 0x9f83, 0xa0c0, 0x9f5c, 0xafa4, 0xe03c, 0x200a, 0xa0af, 0x9fa7, 0x1fa6, 0xe049, 0xa078, 0xa077, 0x1ffb, 0x2099, 0x20c3, 0xa907, 0x2003, 0x24b1, 0xa592, 0xa0c2, 0x1f2a, 0xa0de, 0xa0e8, 0xa11f, 0x4f75, 0x69e1, 0xea82, 0xafac, 0xb770, 0x9f27, 0x1ed0, 0x1f1e, 0xce56, 0x1ffb, 0x2079, 0x20c3, 0xa907, 0x1ff2, 0xb548, 0xafad, 0x1f10, 0xc26b, 0x1e26, 0x2e76, 0xcadd, 0xabb6, 0xa10e, 0xa13b, 0xa110, 0xa132, 0xa13a, 0x9f63, 0xa06c, 0x1f1d, 0x9f20, 0x9f1b, 0xa03a, 0x9f24, 0xa01e, 0xa03e, 0xa059, 0xa07b, 0x1ffb, 0x2079, 0x2099, 0xa907, 0xafb1, 0x9ec5, 0x9f65, 0x9ed9, 0x1ec2, 0x22a8, 0xa2d5, 0x9fa8, 0x9ec6, 0xb55e, 0xc67b, 0x1f2a, 0xa07d, 0x9ec9, 0xa0ed, 0x9fa5, 0xa07e, 0xa0f4, 0x3076, 0x30aa, 0xb0e1, 0xa0e3, 0xe6c7, 0x9ed9, 0xa0e9, 0x1ef7, 0x9fa1, 0x9eea, 0x9fca, 0x9fac, 0x9ebf, 0x9fa9, 0x1fed, 0xa039, 0xa0a4, 0xa0a7, 0x9fe6, 0x9faa, 0x1fad, 0xac3d, 0x1f31, 0x1f32, 0x9f60, 0xa07f, 0xa139, 0x9f18, 0xa0a8, 0x9fea, 0xa127, 0xa0a9, 0xa0a5, 0x9fe8, 0x2150, 0xa152, 0xcc2a, 0xa1f6, 0x406e, 0xc097, 0x214c, 0xa151, 0x224b, 0x22ca, 0xac05, 0x214a, 0xa151, 0xa154, 0x1ee7, 0x6577, 0x6578, 0xe57f, 0x213f, 0xa152, 0x214a, 0xa14c, 0x213f, 0xa150, 0xa14e, 0xa157, 0xa156, 0x1e68, 0xa9cb, 0xeee8, 0xa160, 0xa15c, 0xb5f7, 0x1ea1, 0x9ebe, 0xa185, 0x1e21, 0x9e24, 0x9fde, 0xd62d, 0x2929, 0x6754, 0xe75d, 0x24b2, 0x4b11, 0x65a2, 0x65d7, 0xe5dc, 0xd208, 0x9e0c, 0x530a, 0xd332, 0x4faa, 0xe90a, 0x4363, 0xc378, 0xa180, 0xa17e, 0xa6c5, 0xa18b, 0xae3d, 0xa189, 0xa167, 0x2706, 0x270e, 0xa713, 0xaca1, 0xa184, 0x218c, 0xcb27, 0xa182, 0x218a, 0xcb27, 0x226e, 0xa3e7, 0xa6e7, 0xa192, 0xd0c4, 0xa190, 0xab82, 0x21a9, 0xabeb, 0xdecd, 0xdfb2, 0x2b90, 0xab9c, 0xa85a, 0xb700, 0xabc3, 0x2bbc, 0xabc7, 0xabcc, 0x2199, 0xabeb, 0x2e42, 0xcf83, 0x1ecc, 0x21b0, 0xbc37, 0x3638, 0xef15, 0xe9ae, 0x1ecc, 0x21ab, 0xbc37, 0xa1b4, 0x3c96, 0xd85d, 0xbc7a, 0xa1b1, 0xbcc1, 0xbcef, 0xa1cd, 0xbd0c, 0x21c8, 0xbde8, 0xbd7c, 0xbd82, 0x3053, 0x30bd, 0xbdd2, 0xbdb8, 0x21d6, 0xbe96, 0xa1c0, 0xbdbc, 0xa1bb, 0xbe1b, 0xbe4a, 0xc69a, 0xb817, 0x21c6, 0xbe96, 0x21dc, 0xbf9f, 0x21db, 0xbf9f, 0x4108, 0x4155, 0x4188, 0xc199, 0x2e7e, 0xb73a, 0x21e2, 0xa1e3, 0x21e1, 0xa1e3, 0x21e1, 0xa1e2, 0xecf3, 0xac45, 0x2904, 0xd655, 0x21ec, 0x21ee, 0x68a8, 0x68cc, 0xe8ce, 0xece7, 0x21e8, 0x21ee, 0x68a8, 0x68cc, 0xe8ce, 0x21f4, 0x317f, 0xb191, 0x21e8, 0x21ec, 0x68a8, 0x68cc, 0xe8ce, 0xa1f1, 0xa1ef, 0x2c32, 0x2c34, 0x2c36, 0x2c37, 0xeb50, 0xbac8, 0x21ed, 0x317f, 0xb191, 0xa147, 0x2757, 0x284a, 0xa8a4, 0x2c80, 0xef63, 0x3483, 0xb4ca, 0xa1fe, 0xa1fd, 0xe47f, 0x2202, 0xe1d6, 0x2200, 0xe1d6, 0xa204, 0xa203, 0x221b, 0xa275, 0x1e42, 0xd2c5, 0xb81e, 0xd2bb, 0x2283, 0x2290, 0xc53b, 0xa6ed, 0xb289, 0xa289, 0xa247, 0xa25b, 0x2205, 0x2231, 0x224f, 0x2259, 0xa275, 0xa22a, 0xa22b, 0x2227, 0x223c, 0xa2ab, 0x2226, 0x223c, 0xa2ab, 0x624b, 0x6464, 0xe4c7, 0xa220, 0x2225, 0xaf46, 0x2257, 0x2277, 0x63df, 0xe4f2, 0xa244, 0xe8b3, 0x221b, 0x224f, 0x2259, 0xa275, 0xa241, 0xd8fd, 0xa24e, 0xa23e, 0x2226, 0x2227, 0xa2ab, 0xa28a, 0xa23a, 0xa28c, 0xa274, 0xa234, 0x2264, 0xa291, 0xeb00, 0xa22d, 0xa219, 0x214b, 0x22ca, 0xac05, 0xbe82, 0xbb6c, 0xa239, 0x221b, 0x2231, 0x2259, 0xa275, 0x226e, 0xa3e7, 0x2263, 0x2271, 0x228d, 0x228e, 0x2292, 0x2294, 0x61f0, 0xe1fc, 0x222c, 0x2277, 0x63df, 0xe4f2, 0x221b, 0x2231, 0x224f, 0xa275, 0xa033, 0xa21a, 0xa265, 0x2251, 0x2271, 0x228d, 0x228e, 0x2292, 0x2294, 0x61f0, 0xe1fc, 0x2242, 0xa291, 0xa25d, 0x65b9, 0xe609, 0xa287, 0xa270, 0x218e, 0x2250, 0xa3e7, 0xa269, 0x2251, 0x2263, 0x228d, 0x228e, 0x2292, 0x2294, 0x61f0, 0xe1fc, 0xb72d, 0xa240, 0x2205, 0x221b, 0x2231, 0x224f, 0xa259, 0x222c, 0x2257, 0x63df, 0xe4f2, 0xb22e, 0xa2e6, 0x2212, 0x2290, 0xc53b, 0xcb9a, 0xa267, 0xa218, 0xa23d, 0xa23f, 0x2251, 0x2263, 0x2271, 0x228e, 0x2292, 0x2294, 0x61f0, 0xe1fc, 0x2251, 0x2263, 0x2271, 0x228d, 0x2292, 0x2294, 0x61f0, 0xe1fc, 0x2212, 0x2283, 0xc53b, 0x2242, 0xa264, 0x2251, 0x2263, 0x2271, 0x228d, 0x228e, 0x2294, 0x61f0, 0xe1fc, 0x2251, 0x2263, 0x2271, 0x228d, 0x228e, 0x2292, 0x61f0, 0xe1fc, 0x5cad, 0xdcea, 0x22e7, 0xa2f8, 0xdfa6, 0x4cfc, 0xccff, 0xa2d9, 0xa2f1, 0x1ec2, 0x20cd, 0xa2d5, 0x9f2e, 0x2226, 0x2227, 0xa23c, 0xa2f5, 0xa2c1, 0x22b4, 0x22de, 0xb1a5, 0x22b3, 0x22de, 0xb1a5, 0x2026, 0xa2cc, 0xb548, 0xa2e2, 0xa2b2, 0xb54f, 0x22d1, 0xb555, 0xa2c8, 0xa2c7, 0x214b, 0x224b, 0xac05, 0x22db, 0x22f2, 0xa2f3, 0x2026, 0xa2b5, 0x22c5, 0x2f95, 0x2fa0, 0xb555, 0x1ec2, 0x20cd, 0xa2a8, 0x22d7, 0xb702, 0x22d6, 0xb702, 0xa2a1, 0xa2e9, 0x22cb, 0x22f2, 0xa2f3, 0xd0dc, 0x22b3, 0x22b4, 0xb1a5, 0xb22e, 0xa2bf, 0xb1c3, 0xa27f, 0x229d, 0xa2f8, 0xa2da, 0xa2a2, 0x22cb, 0x22db, 0xa2f3, 0x22cb, 0x22db, 0xa2f2, 0xa2b1, 0x229d, 0xa2e7, 0xa300, 0xa2fb, 0x1e10, 0xa304, 0x1e10, 0xa303, 0xeead, 0x2fe9, 0x3031, 0xb0a4, 0xb3ac, 0x5133, 0xd166, 0xa338, 0x37e9, 0xb7fe, 0x2e00, 0xdfca, 0xa320, 0xa31e, 0xa329, 0xa32d, 0xcbcb, 0x5535, 0xd5cf, 0xa321, 0xa326, 0xa331, 0x3c47, 0xbed9, 0xa32e, 0x2333, 0x2941, 0xa969, 0x2332, 0x2941, 0xa969, 0xa31a, 0xa340, 0x3bc9, 0xe1ab, 0xa33a, 0xe7c6, 0xa352, 0x3607, 0x36fb, 0x6629, 0xe65e, 0xd294, 0x1e16, 0x9e17, 0xa350, 0x2d0b, 0x53ef, 0xd550, 0x2354, 0x23f6, 0xb5ea, 0xa34d, 0xa346, 0x384c, 0xb9d5, 0x234f, 0x23f6, 0xb5ea, 0x2358, 0xa5ae, 0x28f2, 0xdce3, 0x2355, 0xa5ae, 0xb13d, 0xc387, 0x53d4, 0xd514, 0x9f54, 0xc6e7, 0x2365, 0x2877, 0x3ef7, 0x3f9b, 0x4002, 0x597f, 0xee75, 0x2364, 0xd97f, 0xd1e5, 0x585b, 0xd85e, 0xadf5, 0x2918, 0xb23c, 0xae01, 0x237d, 0xc68d, 0xa37b, 0x2dfb, 0xb372, 0xcf37, 0x3064, 0xdcc9, 0xa374, 0x2373, 0xc68d, 0x2388, 0x23b0, 0xaee0, 0xb239, 0x2ef0, 0xaef3, 0x23a4, 0x23af, 0x36a6, 0x36c6, 0x3b74, 0xbb77, 0xc8d4, 0xa382, 0xa3b2, 0x2727, 0xa8d3, 0xa3ad, 0xa399, 0xc825, 0xef8e, 0xad16, 0x23a0, 0xaec1, 0x28e5, 0x2edb, 0x613d, 0xe1d0, 0xa38d, 0xa795, 0xaef3, 0xa3a1, 0x2395, 0xaec1, 0xa39f, 0xaec2, 0xa3b4, 0x2386, 0xb6c6, 0xaec8, 0xaeda, 0x2ecf, 0xaed0, 0xa38c, 0xaedd, 0x2386, 0x36a6, 0x36c6, 0x3b74, 0xbb77, 0x2382, 0xaee0, 0xa389, 0x1e25, 0xa6b4, 0xa3a3, 0xbe90, 0xc9c1, 0xd0b1, 0x60bb, 0x6130, 0xe6a3, 0xa3bb, 0xa3ba, 0x1e1f, 0x9e22, 0x470c, 0xce23, 0x1e09, 0xaf0e, 0x23c3, 0x23c4, 0xa3c5, 0x23c2, 0x23c4, 0xa3c5, 0x23c2, 0x23c3, 0xa3c5, 0x23c2, 0x23c3, 0xa3c4, 0xe749, 0xe746, 0xa3f9, 0xb268, 0x9e41, 0xe6d9, 0x1eee, 0x23db, 0xc08d, 0xb536, 0xa92c, 0xc2ae, 0x467a, 0x467c, 0x6aea, 0xeaee, 0x1e8a, 0x9e8b, 0xcdb4, 0x2909, 0xdb8a, 0x354d, 0xb558, 0x23cd, 0xc08d, 0xac09, 0x4573, 0x4582, 0x4589, 0xc58a, 0x28e1, 0xc77f, 0x1e1b, 0x3a37, 0x3b09, 0xd5c2, 0x218e, 0x2250, 0xa26e, 0x49d6, 0x5879, 0xe6bb, 0xa44c, 0x276e, 0x37b1, 0x3aaf, 0x51fa, 0xe8b1, 0x234f, 0x2354, 0x35ea, 0xd449, 0xd65f, 0x23c8, 0x2606, 0xbb4e, 0xa630, 0x24a9, 0xa4f6, 0x4c72, 0xefa5, 0x25ab, 0xa644, 0xe5a4, 0xaf14, 0x1edd, 0xd855, 0xaf8c, 0x26ae, 0xb6cf, 0xa687, 0xa442, 0xa5ce, 0xb061, 0xa451, 0x252b, 0x2656, 0xda21, 0xa678, 0x5074, 0xd07d, 0x2518, 0x2553, 0x2554, 0x255f, 0x5aec, 0xe5d9, 0x2434, 0xa449, 0x2433, 0xa449, 0xa450, 0xd117, 0xa44d, 0xa44a, 0xa415, 0x3282, 0xc2c2, 0x2433, 0xa434, 0xa43f, 0xa3eb, 0xa43d, 0xa436, 0xa41e, 0xa638, 0xa6c8, 0xa614, 0xa6a6, 0xa504, 0x24e1, 0x5c9f, 0xdd20, 0x24bc, 0xa58e, 0xa4fa, 0xa5c6, 0xa5da, 0xda46, 0xe031, 0xa5dc, 0x2492, 0xda4b, 0xda4d, 0x2611, 0x5656, 0xdb3c, 0xa4e3, 0x248c, 0x30d2, 0xefa2, 0x248a, 0x30d2, 0xefa2, 0xda60, 0x246a, 0xda4b, 0xa6a8, 0xa680, 0xa4a4, 0xa65d, 0xa49c, 0x2400, 0xa4f6, 0xef69, 0x2580, 0xd849, 0x2003, 0x207a, 0xa592, 0x2173, 0xcb11, 0x618e, 0xee79, 0x2459, 0xa58e, 0xa6a5, 0x65a7, 0xeb28, 0xe7ff, 0x2516, 0x255e, 0x45d6, 0xc602, 0xa660, 0xa635, 0xa5f6, 0xa666, 0x2629, 0xdb41, 0xa672, 0xa68c, 0xa665, 0xa5b2, 0x2458, 0x5c9f, 0xdd20, 0xa485, 0xda36, 0x2560, 0x2586, 0x269e, 0x27d1, 0xb08a, 0x2400, 0xa4a9, 0xa45a, 0x5a98, 0xdbf1, 0xa457, 0xd123, 0xd39e, 0xa57a, 0xa523, 0x24d1, 0x255e, 0x45d6, 0xc602, 0x242f, 0x2553, 0x2554, 0x255f, 0x5aec, 0xe5d9, 0xa61c, 0xa5ca, 0xa62e, 0xa5e9, 0xa515, 0xa59a, 0xa59e, 0xa41f, 0xdaaf, 0xaff5, 0xa60a, 0xdb2a, 0xe5ee, 0x242f, 0x2518, 0x2554, 0x255f, 0x5aec, 0xe5d9, 0x242f, 0x2518, 0x2553, 0x255f, 0x5aec, 0xe5d9, 0xa649, 0xa649, 0x24d1, 0x2516, 0x45d6, 0xc602, 0x242f, 0x2518, 0x2553, 0x2554, 0x5aec, 0xe5d9, 0x24f2, 0x2586, 0x269e, 0x27d1, 0xb08a, 0x5854, 0x5858, 0xe29c, 0xa616, 0xa5c7, 0xa6c0, 0x265b, 0x2699, 0x26d3, 0xef67, 0xa613, 0x26c9, 0xcf57, 0xa63d, 0xa62f, 0xa510, 0x24af, 0xd849, 0x6927, 0xe935, 0xdb71, 0x24f2, 0x2560, 0x269e, 0x27d1, 0xb08a, 0x2459, 0xa4bc, 0x267e, 0xc616, 0x2003, 0x207a, 0xa4b1, 0xa524, 0x3198, 0x3199, 0xbb56, 0xa527, 0xa5bb, 0x9e27, 0x2403, 0xa644, 0x9e54, 0x2355, 0xa358, 0x25b7, 0xa674, 0x68df, 0x68e0, 0xe963, 0xa4df, 0x41df, 0xd425, 0x25af, 0xa674, 0xa5a9, 0xa60d, 0xa6b3, 0xef45, 0xa45b, 0xa56c, 0xa51d, 0xa417, 0xa45c, 0xa469, 0xe16a, 0xab60, 0xa637, 0xa522, 0xa6c1, 0xa66f, 0xa4d4, 0xdb30, 0x23f9, 0xbb4e, 0xa540, 0xa5bd, 0x247c, 0xdb3c, 0xa56f, 0xa455, 0xa567, 0x2690, 0x2c1d, 0xc51e, 0xa653, 0xa51b, 0xa6b6, 0xa62f, 0x24d7, 0xdb41, 0xa520, 0x2578, 0xa628, 0xa3fd, 0xa6d1, 0xa4d3, 0xa5e5, 0xa452, 0xa574, 0xb076, 0xdb50, 0x2403, 0xa5ab, 0xa655, 0x2556, 0xa557, 0xa668, 0xa618, 0xa645, 0x241f, 0xda21, 0x256e, 0xa699, 0xa695, 0xa49d, 0xa4d2, 0xdb6b, 0xa4dd, 0xa4d5, 0xa650, 0xdb5f, 0xa5f3, 0xa4d9, 0x25af, 0xa5b7, 0x585c, 0x585f, 0xe053, 0xa428, 0xaf53, 0xa591, 0xa49b, 0xa413, 0xa4dc, 0xa694, 0x2617, 0x2c1d, 0xc51e, 0xa68f, 0xa65c, 0x256e, 0x265b, 0x26d3, 0xef67, 0x24f2, 0x2560, 0x2586, 0x27d1, 0xb08a, 0xbd4f, 0xa6ca, 0xa6c2, 0xa4bd, 0xa456, 0xa499, 0xa411, 0x9eb8, 0xa5be, 0x1e25, 0xa3b3, 0xa624, 0xa6c2, 0xa56d, 0xa5eb, 0x26a3, 0xa6bb, 0xa181, 0xa453, 0x2570, 0xcf57, 0xa6a2, 0xd2cf, 0xd271, 0xa631, 0x256e, 0x2699, 0xef67, 0x26f2, 0x26f4, 0xa70d, 0x26de, 0x26ec, 0x2efb, 0x2efd, 0x5ff4, 0xe025, 0xa6e0, 0x9e96, 0x26d8, 0x26ec, 0x2efb, 0x2efd, 0x5ff4, 0xe025, 0xe856, 0xa6d9, 0x26e3, 0x2718, 0xccf0, 0x26e2, 0x2718, 0xccf0, 0x3df5, 0x3e0a, 0xbe15, 0xa18f, 0xa6f1, 0x26d8, 0x26de, 0x2efb, 0x2efd, 0x5ff4, 0xe025, 0x2213, 0x2712, 0xd597, 0x26f6, 0x26fb, 0x26fd, 0x2700, 0xa70b, 0xc74f, 0xa6ea, 0x26d7, 0x26f4, 0xa70d, 0x26fe, 0x2716, 0xa717, 0x26d7, 0x26f2, 0xa70d, 0xa707, 0x26ef, 0x26fb, 0x26fd, 0x2700, 0xa70b, 0xb5e5, 0x26ef, 0x26f6, 0x26fd, 0x2700, 0xa70b, 0x26ef, 0x26f6, 0x26fb, 0x2700, 0xa70b, 0x26f3, 0x2716, 0xa717, 0x26ef, 0x26f6, 0x26fb, 0x26fd, 0xa70b, 0xa711, 0x2186, 0x270e, 0xa713, 0xa6f5, 0xa70f, 0x26ef, 0x26f6, 0x26fb, 0x26fd, 0xa700, 0x26d7, 0x26f2, 0xa6f4, 0x2186, 0x2706, 0xa713, 0xa708, 0xa703, 0x26ed, 0xd597, 0x2186, 0x2706, 0xa70e, 0x26f3, 0x26fe, 0xa717, 0x26f3, 0x26fe, 0xa716, 0x26e2, 0xa6e3, 0x383e, 0xbb12, 0xa721, 0xa71f, 0x453a, 0xc53c, 0xd056, 0x238b, 0xa8d3, 0xb257, 0xb747, 0xc3ea, 0x2754, 0x27ca, 0xadb3, 0xa8d9, 0x2834, 0xa872, 0x3b7e, 0x3b7f, 0x3b81, 0xbca1, 0xe62f, 0x2c85, 0xe62a, 0x276f, 0x28ca, 0x28de, 0xe62b, 0xaea7, 0xe62c, 0xa78b, 0x2730, 0x27ca, 0xadb3, 0x21f7, 0x284a, 0xa8a4, 0xade0, 0xa805, 0x28b0, 0x28b5, 0x28c7, 0x28dc, 0x4f48, 0xcf4e, 0xa8e2, 0x27bb, 0xa8e9, 0x2862, 0xe696, 0x28b3, 0xe6ab, 0x289c, 0xc908, 0xa802, 0xa803, 0xb1bb, 0xa88c, 0x6640, 0xe641, 0xbce5, 0x23f0, 0xd1fa, 0x274f, 0xe62b, 0xa7a7, 0xa787, 0x1e18, 0x9e20, 0xa7a2, 0xa8a2, 0xa7c0, 0xa8df, 0xa8e0, 0xa8da, 0xa773, 0xa753, 0x2841, 0xa8d8, 0xc561, 0xe67b, 0xa39a, 0xa806, 0x282f, 0x2c27, 0xac2d, 0xa79c, 0xa79b, 0xa8a2, 0xa778, 0xa8be, 0xa770, 0xab88, 0x280a, 0xd056, 0xa88a, 0xa7e1, 0xa8b6, 0xa8cb, 0xa84f, 0xa816, 0x275d, 0xa8e9, 0xa782, 0xc86e, 0xe656, 0x2730, 0x2754, 0xadb3, 0x24f2, 0x2560, 0x2586, 0x269e, 0xb08a, 0xa7d3, 0xa7d2, 0xa852, 0x2864, 0xa8ce, 0xa81d, 0x28c4, 0xe1ce, 0x2824, 0xe684, 0xa7ad, 0xc897, 0xb267, 0x2d0e, 0x2d5c, 0xc895, 0xb383, 0xa763, 0xa764, 0xa75a, 0xa796, 0xd3eb, 0xa7a9, 0xa879, 0x28ae, 0xa8af, 0xa7b4, 0xe67b, 0xa7da, 0x27de, 0xe684, 0x6636, 0xe68e, 0x279a, 0x2c27, 0xac2d, 0x2895, 0xe681, 0xb2a5, 0x273a, 0xa872, 0x454c, 0xc54d, 0x2792, 0xa8d8, 0xa8ea, 0x21f7, 0x2757, 0xa8a4, 0xd314, 0xc57b, 0xa7b2, 0xa851, 0xa850, 0xa7d8, 0xa896, 0xbd82, 0xa8a7, 0xa1a2, 0xd46c, 0xa86b, 0xa75e, 0x27d9, 0xa8ce, 0xe663, 0x46d0, 0xee7d, 0xa861, 0x273a, 0xa834, 0xac18, 0x2364, 0xee75, 0x2811, 0xa8cd, 0x450e, 0x4816, 0xc8da, 0xc245, 0xa7ab, 0xa767, 0x2830, 0xe681, 0xa854, 0xa89e, 0x28bb, 0xc246, 0x2760, 0xc908, 0xa897, 0x277a, 0xa7a1, 0x21f7, 0x2757, 0xa84a, 0xa859, 0x2815, 0xa8af, 0x2815, 0xa8ae, 0x275b, 0x28b5, 0x28dc, 0x4f48, 0xcf4e, 0x275f, 0xe6ab, 0x275b, 0x28b0, 0x28dc, 0x4f48, 0xcf4e, 0xa7af, 0xde87, 0xa899, 0xa7a6, 0x27dc, 0xe1ce, 0xa75b, 0x274f, 0xa8de, 0xa7b1, 0xa8e4, 0xa879, 0x27d9, 0xa864, 0xc4bd, 0x238b, 0xa727, 0x2792, 0xa841, 0xa739, 0xa786, 0x275b, 0x28b0, 0x28b5, 0x4f48, 0xcf4e, 0x274f, 0xa8ca, 0xa784, 0xa785, 0x23e1, 0xc77f, 0xa75c, 0xa8cc, 0x2398, 0x2edb, 0xe13d, 0x275d, 0xa7bb, 0xa846, 0x28ef, 0xa8f5, 0x28ee, 0xa8f5, 0xd072, 0xa8f9, 0x2356, 0xdce3, 0x3bbb, 0xbbbc, 0x28ee, 0xa8ef, 0x28f7, 0xa8fa, 0x28f6, 0xa8fa, 0xa8fc, 0xa8f1, 0x28f6, 0xa8f7, 0x2a7f, 0xd05f, 0xa8f8, 0x2900, 0xabff, 0x28fd, 0xabff, 0xa90a, 0x21e6, 0xd655, 0xe64d, 0x1ffb, 0x2079, 0x2099, 0xa0c3, 0x23d8, 0xdb8a, 0xa902, 0x2fa9, 0x5907, 0xd986, 0xa913, 0xa90f, 0xd641, 0x236f, 0xb23c, 0xa91b, 0xa91a, 0x9eb1, 0xa920, 0xa91f, 0x2923, 0xb8a6, 0x2922, 0xb8a6, 0x9f19, 0x2172, 0x6754, 0xe75d, 0xa3cf, 0xbb80, 0x372c, 0xb94d, 0xbcf0, 0xe82d, 0xbbd4, 0xda87, 0xa93e, 0xa96a, 0xa939, 0x2332, 0x2333, 0xa969, 0xa950, 0xcad2, 0xb7f0, 0xa96e, 0xeede, 0xa942, 0x4287, 0xe029, 0x2968, 0x296c, 0xc34e, 0xaf09, 0xc55a, 0x2967, 0xadb4, 0x2965, 0xadb4, 0x2956, 0x296c, 0xc34e, 0x2332, 0x2333, 0xa941, 0xa93a, 0x2956, 0x2968, 0xc34e, 0xa94b, 0x29b3, 0xab2d, 0x29e6, 0xa9e7, 0x299d, 0x2a24, 0x4ca7, 0xccda, 0x2a66, 0xaa8d, 0xaabd, 0xa9d9, 0x29f8, 0xd505, 0xa9ac, 0xc945, 0xc385, 0xaab8, 0x2986, 0x2a24, 0x4ca7, 0xccda, 0xaaf5, 0xaad7, 0x2aaf, 0xab00, 0xa992, 0x1f60, 0x2976, 0xab2d, 0x1f84, 0xa9ea, 0x2a3f, 0xaa40, 0xaa12, 0xa9ca, 0xa9c9, 0x1e68, 0xa158, 0xa9d7, 0xaa8e, 0xaa30, 0xa9cd, 0xa98a, 0xd591, 0xaa1f, 0x2978, 0xa9e7, 0x2978, 0xa9e6, 0x1f84, 0xa9b7, 0xa9ec, 0xa9eb, 0xaae6, 0x298d, 0xd505, 0xaa63, 0xaa41, 0xaa6d, 0xab08, 0xab0c, 0xab4c, 0xa9c6, 0x2b22, 0xab43, 0x2a2f, 0xaa31, 0xa9e2, 0x2986, 0x299d, 0x4ca7, 0xccda, 0xab2a, 0xab09, 0x2a1b, 0xaa31, 0xa9d2, 0x2a1b, 0xaa2f, 0xaaa7, 0x2afa, 0xaafb, 0x29b8, 0xaa40, 0x29b8, 0x2a3f, 0xaa50, 0xaa04, 0xaa40, 0xa9fb, 0x2987, 0xaa8d, 0xbdeb, 0xaa05, 0x1e3d, 0xee97, 0xaaff, 0x2b30, 0x2b46, 0xab7e, 0xab0b, 0xab38, 0x28fb, 0xd05f, 0x2987, 0xaa66, 0xa9d0, 0xaa32, 0xaabc, 0xab03, 0x29ab, 0xab00, 0xa99b, 0xaaaa, 0xa988, 0x3127, 0xd06d, 0x2b1d, 0xd885, 0xab32, 0xab21, 0xab2a, 0xa9aa, 0xa9ee, 0xab19, 0xa9a9, 0x3194, 0xc644, 0x2a34, 0xaafb, 0x2a34, 0xaafa, 0xaa73, 0x29ab, 0xaaaf, 0xaaad, 0xaa06, 0xaa2d, 0xaa75, 0xaa07, 0xaaf1, 0x2acb, 0xd885, 0xaad2, 0x2a18, 0xab43, 0xab37, 0x2a26, 0xaad4, 0x2976, 0xa9b3, 0x2a74, 0x2b46, 0xab7e, 0xaad0, 0xab24, 0xaa76, 0xb1d2, 0x2a18, 0xab22, 0x2a74, 0x2b30, 0xab7e, 0xaa08, 0xab53, 0xab52, 0xab6b, 0xa5e3, 0x2b78, 0x3569, 0x3585, 0x3586, 0xb588, 0xab7f, 0xab59, 0x2b66, 0x3569, 0x3585, 0x3586, 0xb588, 0xab7d, 0xab7c, 0x2a74, 0x2b30, 0xab46, 0xab6a, 0x2bcd, 0x2bd5, 0x2bd7, 0x2bdc, 0x2be7, 0xc52f, 0xa197, 0x4260, 0x5675, 0xd6c7, 0xca79, 0xa7a8, 0xca81, 0xd089, 0x219d, 0xab9c, 0x219d, 0xab90, 0x2bda, 0x2bf3, 0x2bf6, 0xc3e4, 0x2b9f, 0xabe6, 0x2b9e, 0xabe6, 0xabf5, 0x2bb7, 0xabe9, 0xac4e, 0xb1b2, 0xabae, 0xabab, 0x5b8c, 0xe1bc, 0xa0a2, 0x2ba1, 0xabe9, 0xabc6, 0x21a6, 0xabc7, 0x2bdb, 0xabec, 0x5cd3, 0xdcd4, 0xe1c7, 0xa1a4, 0xabbb, 0x21a6, 0xabbc, 0x6751, 0xe752, 0x66ba, 0x674d, 0x674e, 0x674f, 0x6db4, 0x6e16, 0xee64, 0xa1a8, 0x2b81, 0x2bd5, 0x2bd7, 0x2bdc, 0x2be7, 0xc52f, 0xaebd, 0x2b81, 0x2bcd, 0x2bd7, 0x2bdc, 0x2be7, 0xc52f, 0x2b81, 0x2bcd, 0x2bd5, 0x2bdc, 0x2be7, 0xc52f, 0x2b9d, 0x2bf3, 0x2bf6, 0xc3e4, 0x2bbd, 0xabec, 0x2b81, 0x2bcd, 0x2bd5, 0x2bd7, 0x2be7, 0xc52f, 0xabe2, 0xda67, 0x4aad, 0xcab6, 0xabdd, 0x2b9e, 0xab9f, 0x2b81, 0x2bcd, 0x2bd5, 0x2bd7, 0x2bdc, 0xc52f, 0x2ba1, 0xabb7, 0x2199, 0xa1a9, 0x2bbd, 0xabdb, 0x2b9d, 0x2bda, 0x2bf6, 0xc3e4, 0xaba0, 0x2b9d, 0x2bda, 0x2bf3, 0xc3e4, 0x2bfe, 0xac0d, 0xac0b, 0xac0e, 0x2bf9, 0xac0d, 0x28fd, 0xa900, 0x1e13, 0xac08, 0x214b, 0x224b, 0xa2ca, 0xac07, 0xac06, 0x1e13, 0xac02, 0xa3de, 0xabfb, 0x2bf9, 0xabfe, 0xabfc, 0x2c13, 0x2c14, 0xc23e, 0x2c12, 0x2c14, 0xc23e, 0x2c12, 0x2c13, 0xc23e, 0xa875, 0xac1a, 0xac19, 0x1e48, 0x2e85, 0x6ebc, 0xeebd, 0x2617, 0x2690, 0xc51e, 0xc1ce, 0x2c20, 0x5d7b, 0x6bae, 0x6c7b, 0xec9c, 0x2c1f, 0x5d7b, 0x6bae, 0x6c7b, 0xec9c, 0x2c23, 0x2c24, 0xb023, 0xac22, 0x2c22, 0xb023, 0xac26, 0xac25, 0x279a, 0x282f, 0xac2d, 0xac2b, 0xac29, 0xeb40, 0x279a, 0x282f, 0xac27, 0x21f2, 0x2c34, 0x2c36, 0x2c37, 0xeb50, 0x21f2, 0x2c32, 0x2c36, 0x2c37, 0xeb50, 0x21f2, 0x2c32, 0x2c34, 0x2c37, 0xeb50, 0x21f2, 0x2c32, 0x2c34, 0x2c36, 0xeb50, 0xac4d, 0x1fad, 0x2118, 0xc6e1, 0x1fb7, 0xddfc, 0xac64, 0xac53, 0xa1e5, 0xac4a, 0xac46, 0x6ce5, 0xee1f, 0xac38, 0xaba9, 0x2c5b, 0xae48, 0xac43, 0x2c4f, 0xae48, 0xac6c, 0xac62, 0xac61, 0xac42, 0xac68, 0xac66, 0xac5e, 0xadbc, 0xa1fa, 0x1e97, 0x2d57, 0x3b72, 0xbb73, 0xdc48, 0x2742, 0xe62a, 0xdc3a, 0xad87, 0xad17, 0xacf4, 0xad50, 0x2cf6, 0x2d8b, 0x2d8c, 0x2db9, 0x6666, 0x669d, 0xe6af, 0xa188, 0x2d52, 0x2d53, 0x2dcc, 0x2dd6, 0x2dd7, 0xc89e, 0xadba, 0xadbd, 0xad87, 0xad2c, 0xadcb, 0xada8, 0xada7, 0xacdd, 0xacd2, 0xacfd, 0xada2, 0xada0, 0xad22, 0xadd2, 0xace9, 0xace8, 0xacf0, 0xacef, 0xac98, 0x2d58, 0x2db8, 0xadc6, 0x2c9b, 0x2d8b, 0x2d8c, 0x2db9, 0x6666, 0x669d, 0xe6af, 0xace1, 0xad97, 0xad0d, 0xadae, 0xad08, 0xad07, 0x234e, 0xd3ef, 0xad03, 0x27fc, 0x2d5c, 0xc895, 0xa393, 0xac97, 0x1ed1, 0xad19, 0x1ed1, 0xad18, 0xace5, 0xacbd, 0x2d83, 0xad84, 0xcbcf, 0xac9a, 0x2ca9, 0x2d53, 0xc89e, 0x2ca9, 0x2d52, 0xc89e, 0x1e97, 0x2c81, 0x3b72, 0xbb73, 0x2cf5, 0x2db8, 0xadc6, 0xad94, 0x27fc, 0x2d0e, 0xc895, 0xad81, 0x3e13, 0xbeaa, 0xad73, 0xad6f, 0xad5d, 0xad2d, 0xad2d, 0x2c96, 0xacb4, 0x2c9b, 0x2cf6, 0x2d8c, 0x2db9, 0x6666, 0x669d, 0xe6af, 0x2c9b, 0x2cf6, 0x2d8b, 0x2db9, 0x6666, 0x669d, 0xe6af, 0xad5a, 0xad02, 0xace4, 0xace3, 0xacc4, 0xacc3, 0xad04, 0xe6df, 0x2730, 0x2754, 0xa7ca, 0x2965, 0xa967, 0x2cf5, 0x2d58, 0xadc6, 0x2c9b, 0x2cf6, 0x2d8b, 0x2d8c, 0x6666, 0x669d, 0xe6af, 0xacad, 0xac7f, 0xacb3, 0x2dd3, 0xadd4, 0x2cf5, 0x2d58, 0xadb8, 0xacbf, 0x2ca9, 0x2dd6, 0xadd7, 0xace6, 0xadc5, 0xadc5, 0x2ca9, 0x2dcc, 0xadd7, 0x2ca9, 0x2dcc, 0xadd6, 0xaddd, 0xaddb, 0xa759, 0xade3, 0xade2, 0xe78f, 0xadf0, 0xadef, 0xa36e, 0xd856, 0xadfd, 0x2377, 0xb372, 0xadfa, 0x67cd, 0xe7e8, 0x231d, 0xdfca, 0x2370, 0x2e63, 0xae64, 0x9f48, 0xae25, 0xae2b, 0xcd19, 0xae43, 0xae33, 0x9f16, 0xd88b, 0xcd48, 0xcc3e, 0xcb92, 0x2e5f, 0xb5d8, 0xae05, 0x2e2f, 0xae36, 0xae40, 0xae08, 0xd4c6, 0x2e47, 0x2e5a, 0xae6b, 0x2e26, 0xae36, 0x2f52, 0x3b78, 0xc688, 0xae6c, 0xae10, 0x2e26, 0xae2f, 0xae58, 0xae57, 0xa183, 0xae27, 0x21aa, 0xcf83, 0xae0f, 0x2e2e, 0x2e5a, 0xae6b, 0x2c4f, 0xac5b, 0xce28, 0xae3c, 0xae3b, 0x2e2e, 0x2e47, 0xae6b, 0x2e1c, 0xb5d8, 0xb5d9, 0x2e01, 0xae64, 0x2e01, 0xae63, 0x2e2e, 0x2e47, 0xae5a, 0xae31, 0x1e7e, 0x2e79, 0xb9a6, 0xc9ca, 0x1e26, 0x1f75, 0x2002, 0x20a1, 0x2e77, 0xcadd, 0xae76, 0xa016, 0x2e72, 0xb9a6, 0x9e48, 0xa1e0, 0x2e83, 0x2eb5, 0xaee3, 0x2ef0, 0xaef3, 0x2e7f, 0xaee3, 0x5358, 0xd38a, 0x1e48, 0x2c1b, 0x6ebc, 0xeebd, 0xb176, 0xc240, 0xaeec, 0xaee1, 0xaeab, 0x2fdc, 0xb1c9, 0xaedf, 0xef90, 0x2ec3, 0xaee2, 0xa750, 0xae93, 0x2e7f, 0x53f4, 0x544a, 0xd4ed, 0xaebb, 0x377e, 0x3780, 0x37a9, 0x37d7, 0xb8a5, 0xaeb6, 0xaece, 0xabd3, 0xaedf, 0x2395, 0xa3a0, 0xa3a2, 0x2e9f, 0xaee2, 0xa3a6, 0xaebc, 0x23a9, 0xaed0, 0x23a9, 0xaecf, 0xa3a8, 0x2398, 0x28e5, 0xe13d, 0xa3ae, 0x2e99, 0xaebf, 0x2382, 0xa3b0, 0xae91, 0x2e9f, 0xaec3, 0x2e7f, 0xae83, 0xaeea, 0xaee9, 0xae90, 0x2385, 0x2e81, 0xaef3, 0x2385, 0x239b, 0x2e81, 0xaef0, 0xdfea, 0x26d8, 0x26de, 0x26ec, 0x2efd, 0x5ff4, 0xe025, 0x1e43, 0xdffa, 0x26d8, 0x26de, 0x26ec, 0x2efb, 0x5ff4, 0xe025, 0xe58b, 0x44e3, 0x598d, 0x5fa1, 0x5fa7, 0x5fa8, 0x5fa9, 0xdfaf, 0xc570, 0xb8c4, 0x330a, 0xb335, 0xa958, 0x9e00, 0x9e8c, 0x1e09, 0xa3c1, 0x5cae, 0x5cb3, 0xdd30, 0xaf12, 0xaf11, 0xa40a, 0xaf35, 0x2f4c, 0xc030, 0xcd43, 0xaf33, 0xaf4e, 0xaf2a, 0xaf20, 0xaf3a, 0x2f3e, 0xaf48, 0xaf37, 0xaf3c, 0xaf3b, 0x2f39, 0xaf48, 0xa22b, 0x2f39, 0xaf3e, 0xaf25, 0xaf2f, 0xaf51, 0xaf50, 0x2e30, 0x3b78, 0xc688, 0x2679, 0xc576, 0xaf55, 0x2f54, 0x6304, 0xe332, 0xcbf2, 0x2f5a, 0xbc47, 0x2f59, 0xbc47, 0x2f5c, 0x2f5d, 0xaf5e, 0x2f5b, 0x2f5d, 0xaf5e, 0x2f5b, 0x2f5c, 0xaf5e, 0x2f5b, 0x2f5c, 0xaf5d, 0xaf60, 0x2f5f, 0xd4a6, 0xaf66, 0xaf65, 0xaf72, 0xcdb5, 0xe6d5, 0x1efd, 0xb58c, 0xaf68, 0x9ee2, 0x1eff, 0x2fac, 0xeae3, 0xafb9, 0x1f5b, 0xeaf4, 0x2f83, 0xdfec, 0x2fb0, 0x2fb4, 0xafb5, 0xaf80, 0x2f91, 0x5ff3, 0xe015, 0xc2e5, 0x9f77, 0x9f6a, 0xa40e, 0xe65f, 0x2f84, 0x5ff3, 0xe015, 0x1ece, 0xaf9e, 0x22d1, 0xafa0, 0x1ece, 0xaf93, 0x22d1, 0xaf95, 0xc9a6, 0x201f, 0xd5c9, 0xa065, 0x290d, 0xd986, 0x1eff, 0x208d, 0xaf77, 0xa09c, 0xaf81, 0xa0c4, 0x2fb7, 0x3074, 0xb0b3, 0x2f81, 0xafb5, 0x2f81, 0xafb4, 0x2fb3, 0x3074, 0xb0b3, 0xaf7b, 0xafc4, 0xafc3, 0xb1b6, 0x9ec1, 0x31f4, 0xb1fa, 0xda8c, 0xb07e, 0x2e94, 0xb1c9, 0xb09f, 0xb025, 0xb182, 0x2306, 0x3031, 0xb0a4, 0xb0b4, 0xa538, 0xb13e, 0x31d0, 0xb1f7, 0xb14b, 0xb16b, 0xb1ae, 0xb16a, 0xb0b5, 0xb134, 0x9f42, 0xb091, 0xb190, 0xb056, 0x2c22, 0xac24, 0xafe3, 0xb060, 0x2306, 0x2fe9, 0xb0a4, 0x30e3, 0x3374, 0x4dcf, 0x4deb, 0xce3d, 0xb1df, 0xb1cc, 0xb052, 0xb200, 0xb046, 0x21c4, 0xb0bd, 0xb01d, 0xb02a, 0x241d, 0xb08b, 0x2379, 0xdcc9, 0xd03b, 0xb119, 0x3085, 0xb0a6, 0xb1c7, 0x2fb3, 0x2fb7, 0xb0b3, 0xb0e0, 0x20eb, 0x2641, 0x30aa, 0xb0e1, 0xb15f, 0xb1e8, 0xb137, 0xb0fb, 0x30a9, 0xb0f1, 0xb0f2, 0xafd9, 0x30e5, 0xb142, 0x3111, 0xb139, 0x3071, 0xb0a6, 0x24f2, 0x2560, 0x2586, 0x269e, 0xa7d1, 0xb061, 0xc302, 0xb016, 0x9fd4, 0x3102, 0xda96, 0xdbef, 0xafe2, 0xb0ca, 0x2306, 0x2fe9, 0xb031, 0x3071, 0xb085, 0x307c, 0xb0f1, 0x20eb, 0x3076, 0xb0e1, 0xb164, 0xb1f8, 0xb173, 0xb1ab, 0x2fb3, 0x2fb7, 0xb074, 0xaff0, 0xb005, 0xe5f7, 0x21c4, 0xb053, 0x30a2, 0xea5a, 0x248a, 0x248c, 0xefa2, 0x1ffd, 0xbb23, 0xb075, 0x20eb, 0x3076, 0xb0aa, 0xb03b, 0x307f, 0xb142, 0xb1fc, 0xb158, 0xb1f2, 0xb18a, 0xb11c, 0x3159, 0xb15a, 0xb19a, 0xb163, 0x307c, 0xb0a9, 0xb07d, 0xd822, 0xb07b, 0xd90a, 0x3096, 0xda96, 0x4609, 0xc652, 0x3080, 0xb139, 0xb06a, 0xc231, 0xb0ec, 0xb14d, 0xb181, 0xb1a4, 0xb192, 0x2abf, 0xd06d, 0xb1fc, 0xb006, 0xb07a, 0x3080, 0xb111, 0xb14e, 0xa35a, 0xaffe, 0xe858, 0x307f, 0xb0e5, 0xb817, 0xbbb7, 0xb001, 0xb120, 0x313c, 0x361a, 0xc718, 0x3174, 0xb1fe, 0xb0e8, 0x30ed, 0xb15a, 0x30ed, 0xb159, 0x3078, 0xb185, 0xb0ef, 0xb0ab, 0xb004, 0xb002, 0xb196, 0xd651, 0xb0ad, 0xb151, 0xae86, 0x317d, 0xb21a, 0x317c, 0xb21a, 0xbb32, 0x21ed, 0x21f4, 0xb191, 0xb121, 0xafe7, 0xb15f, 0xb1a9, 0xb0eb, 0xb01c, 0x21ed, 0x21f4, 0xb17f, 0xb126, 0x2af6, 0xc644, 0x316d, 0xb197, 0xb196, 0x259c, 0x3199, 0xbb56, 0x259c, 0x3198, 0xbb56, 0xb0ee, 0xb124, 0x22b3, 0x22b4, 0xa2de, 0xb187, 0xb0af, 0xb003, 0xabaa, 0xafc6, 0xa766, 0xa2e4, 0xb073, 0x2e94, 0xafdc, 0xb03f, 0xb1d4, 0x3000, 0xb1f7, 0xb1e3, 0x2b3e, 0xb1f6, 0xb1cd, 0xb1f5, 0xd499, 0xb03c, 0xb1d1, 0xb1e7, 0xb1e6, 0xb079, 0xb0e9, 0x2fcf, 0xb1ff, 0xb1dc, 0xb1d2, 0x3000, 0xb1d0, 0xb0ac, 0xafcf, 0x30e7, 0xb133, 0xbb22, 0xb151, 0xb1f4, 0xb04b, 0xb207, 0xb206, 0xb214, 0x322f, 0xb232, 0xb20b, 0xb227, 0x3226, 0xb230, 0x317c, 0xb17d, 0xb21e, 0x5ca1, 0xdd22, 0xb21b, 0x3218, 0xb230, 0xb217, 0xb22c, 0xb229, 0x2279, 0xa2e0, 0x320f, 0xb232, 0x3218, 0xb226, 0x320f, 0xb22f, 0x3237, 0xb238, 0x3236, 0xb238, 0x3236, 0xb237, 0xa384, 0xb23e, 0x236f, 0xa918, 0xb23b, 0xb24c, 0xb24b, 0xce94, 0x33e0, 0xcd2e, 0x34b2, 0xb4c8, 0xb2c2, 0xa728, 0x5a17, 0xdbac, 0xb34d, 0xb268, 0xe1e6, 0xa7f7, 0x23c9, 0xb260, 0x32e1, 0xb4f4, 0xb36b, 0xb383, 0xb3da, 0xb4a6, 0xb4fe, 0xb5bc, 0x2448, 0xc2c2, 0xa214, 0xb4ab, 0xb2cb, 0xb2d4, 0xb2d7, 0x32e9, 0xb4c7, 0xb476, 0xb473, 0xb384, 0xb436, 0xdb77, 0xa831, 0xb4e1, 0x32de, 0x4274, 0xd9dd, 0xb255, 0xb4d4, 0xb49a, 0xb29b, 0xb2ff, 0x37b4, 0xb7fa, 0xb428, 0xb29c, 0xb2d6, 0xb2d5, 0xb29d, 0xb2dd, 0xb2dc, 0xb2b5, 0xb4ec, 0x336e, 0xb4da, 0x3269, 0x3304, 0xb4f4, 0xb50f, 0xb3c0, 0xb4c1, 0xb514, 0xb4f0, 0x34a5, 0xc67a, 0x329e, 0xb4c7, 0xb2cf, 0xb39b, 0x32e1, 0xb4f4, 0x2f04, 0xb335, 0x1e3e, 0x34e7, 0xd209, 0xb46f, 0xb523, 0xb397, 0xb4be, 0xb4bb, 0xb33e, 0xb493, 0xb4cb, 0xb49f, 0xb399, 0xb4e0, 0xb3ee, 0xb48f, 0x2f04, 0xb30a, 0xb412, 0xdf13, 0xb31f, 0xb3d2, 0x3405, 0x34b9, 0xb52a, 0x38b1, 0x4975, 0xcd91, 0xb25e, 0xb3d1, 0xd379, 0xb41c, 0xb488, 0xb40d, 0xb4bf, 0xb3db, 0x3417, 0xb4e3, 0xd20d, 0xb26a, 0x32e0, 0xb4da, 0x2377, 0xadfb, 0xb03b, 0x3816, 0xb8f2, 0x27fd, 0xb26b, 0xb2a1, 0xb31c, 0xb323, 0xb302, 0xe1c7, 0xb4d1, 0xa30a, 0xb3ed, 0xb4c4, 0xb451, 0xb4f2, 0xb4a3, 0xb47b, 0xb414, 0xb45c, 0xc8b0, 0xb2e3, 0xb34f, 0xb33f, 0xb26c, 0xb362, 0xb24e, 0xb3b2, 0xb325, 0xd0cc, 0x3416, 0xb447, 0xb52c, 0xb4b3, 0xb519, 0xb4f1, 0xb45f, 0xce3d, 0x3341, 0x34b9, 0xb52a, 0xb784, 0xb35f, 0xb337, 0xb3bb, 0x33fa, 0xb447, 0xb363, 0x335c, 0xd490, 0xb2d3, 0xb498, 0xb528, 0xb2a2, 0x34d5, 0xb51c, 0xb9a8, 0x3444, 0xb51d, 0x3442, 0xb51d, 0xb504, 0x34fa, 0xd96c, 0x33fa, 0xb416, 0xb4ef, 0xb524, 0xb3b4, 0xb3bc, 0xb402, 0x4dcf, 0x4deb, 0xce3d, 0xb4f5, 0xb31a, 0xb2a0, 0xb29f, 0xb3ba, 0x21fb, 0xb4ca, 0xb516, 0xb35e, 0xb326, 0xb491, 0xb490, 0xb320, 0xb42d, 0xb2c8, 0xb322, 0xb4cd, 0xb3b8, 0x32e8, 0xc67a, 0xb26f, 0x4d55, 0x4d76, 0xcedd, 0xb29a, 0x3251, 0xb4c8, 0xb3ff, 0xb506, 0xb4f7, 0xb4fc, 0x3341, 0x3405, 0xb52a, 0xb51b, 0xb31e, 0xb31d, 0xb361, 0xb2e5, 0xb3b3, 0x329e, 0xb2e9, 0x3251, 0xb4b2, 0x21fb, 0xb483, 0xb321, 0xb4a1, 0xb3a5, 0xb2c5, 0x343a, 0xb51c, 0x32e0, 0xb36e, 0xb4fb, 0xb324, 0xb2ac, 0xb363, 0xb52c, 0x1e3e, 0x3319, 0xd209, 0xb2df, 0xb448, 0xb2e7, 0xb401, 0xb3b7, 0x3269, 0x32e1, 0xb304, 0xb469, 0x34b7, 0xd96d, 0xb446, 0xb4de, 0xb4b8, 0xb50a, 0xb270, 0x9e51, 0xb445, 0xb522, 0xb4b5, 0xb51f, 0xb4fd, 0xb2e2, 0xb522, 0xb2e6, 0xb484, 0xb400, 0xb4ba, 0x343a, 0xb4d5, 0x3442, 0xb444, 0xb508, 0x3505, 0xb512, 0xb31b, 0xb44a, 0xb432, 0x3341, 0x3405, 0xb4b9, 0xc234, 0x33fd, 0xb4e5, 0xb535, 0xb534, 0xa3ce, 0xd003, 0x4b27, 0x4b56, 0x4b5e, 0xcba3, 0x1ff2, 0x209a, 0xa2b9, 0x9f8e, 0xb575, 0x23d9, 0xb558, 0xb559, 0xa2c4, 0x22c5, 0xa2d1, 0x5d01, 0xdd25, 0x23d9, 0xb54d, 0xb54e, 0x3582, 0xbb5b, 0xa0d8, 0x2b66, 0x2b78, 0x3585, 0x3586, 0xb588, 0xb578, 0xb54c, 0xb5c9, 0xb570, 0x69c6, 0x69c8, 0x6a45, 0xea71, 0xbb5d, 0x355b, 0xbb5b, 0xbbd9, 0x2b66, 0x2b78, 0x3569, 0x3586, 0xb588, 0x2b66, 0x2b78, 0x3569, 0x3585, 0xb588, 0x2b66, 0x2b78, 0x3569, 0x3585, 0xb586, 0x1e9d, 0x358a, 0x6f4a, 0xef50, 0x1e9d, 0x3589, 0x6f4a, 0xef50, 0x358e, 0xef4b, 0x1efd, 0xaf6c, 0xd9ba, 0x358b, 0xef4b, 0xb595, 0x359e, 0xd7a4, 0xb593, 0x65d8, 0x6b25, 0x6b26, 0x6b2a, 0xeb2d, 0x3594, 0xd7a4, 0xe159, 0xb5ac, 0xb5a9, 0xb5b7, 0xb5b5, 0xb5b2, 0xb5ad, 0x1e8e, 0x1e8f, 0xb275, 0xb5d2, 0xb577, 0xb5c8, 0x4c31, 0xcc4f, 0x2e1c, 0xae5f, 0x2e61, 0xb5db, 0xb5d9, 0xc121, 0xa6f8, 0xd20a, 0x234f, 0x2354, 0xa3f6, 0x35f9, 0xb642, 0x2164, 0x363f, 0xb6e0, 0xb698, 0x35f6, 0xb642, 0xb680, 0xb625, 0xb664, 0xb63b, 0x2347, 0xb6fb, 0xb626, 0xb719, 0xb62c, 0xb6c7, 0xb14e, 0xc6a8, 0xb5fe, 0xb60a, 0xb60f, 0xc0a4, 0xb630, 0xb62f, 0xa1ac, 0xb602, 0x365d, 0xb6f8, 0xb6e8, 0x6855, 0xe86f, 0x35f7, 0xb6e0, 0x35f6, 0xb5f9, 0xb644, 0xb643, 0xb64b, 0xb649, 0xb6ec, 0x3681, 0xb6c9, 0xb6c4, 0xb688, 0xb689, 0xb669, 0x363c, 0xb6f8, 0xb660, 0xb65f, 0xb5ff, 0xb6df, 0xb65a, 0xb69c, 0x3692, 0xc520, 0xb697, 0xb5fa, 0x3653, 0xb6c9, 0xb6ab, 0x4f6a, 0xdfa0, 0xb655, 0xb656, 0xb674, 0x4156, 0xc157, 0x367b, 0x5af3, 0x5c19, 0x65c7, 0xe68c, 0xb5f8, 0xb66e, 0xc545, 0x36ad, 0x36cd, 0xc6a5, 0x2386, 0x23af, 0xb6c6, 0xb6d6, 0xb6c1, 0xb682, 0x36a4, 0xc6a5, 0x1e86, 0xc7ad, 0xb6a8, 0xb654, 0x2386, 0x23a4, 0x23af, 0xb6a6, 0xb619, 0x3653, 0xb681, 0x40a4, 0x4167, 0x41f3, 0xc7be, 0xb6a4, 0xa411, 0xb6a7, 0xb668, 0x35f7, 0xb63f, 0xb63d, 0xb652, 0x3d40, 0x4cac, 0x6eaf, 0x6eb4, 0xeeb9, 0xb6f5, 0xb6f3, 0x1e66, 0x363c, 0xb65d, 0xb6fa, 0xb6f9, 0x2347, 0xb607, 0xb6fe, 0xb6fd, 0xa1a3, 0x22d6, 0xa2d7, 0x9f1a, 0xd8e8, 0xb717, 0xb716, 0xb60e, 0xb722, 0xb71f, 0xb71e, 0xb71b, 0xd0e7, 0x2932, 0xb94d, 0xa273, 0xb72f, 0x372e, 0xd853, 0xc843, 0x3a38, 0xba8f, 0xb736, 0xb735, 0x21e0, 0xba5f, 0xbbba, 0x594d, 0x66d1, 0xe6dc, 0x3a29, 0xbb0a, 0xb87f, 0xa72c, 0x3766, 0x3919, 0xba86, 0xe0a8, 0xb9d3, 0xb89d, 0xb803, 0x9f86, 0xb749, 0xb94a, 0xb9aa, 0x386e, 0xc6c3, 0xa091, 0x9e1c, 0x2eba, 0x3780, 0x37a9, 0x37d7, 0x38a5, 0xeb06, 0xe5c6, 0x2eba, 0x377e, 0x37a9, 0x37d7, 0xb8a5, 0xb975, 0x3406, 0xb9cb, 0xb960, 0x1e2b, 0x3860, 0x390f, 0xb930, 0x5edb, 0x5ef6, 0xdf6d, 0xd3d3, 0xba05, 0xb85d, 0xba1e, 0xb8d7, 0xbaea, 0xb80c, 0xb898, 0xb8d6, 0x2eba, 0x377e, 0x3780, 0x37d7, 0xb8a5, 0x39cd, 0x6397, 0xe453, 0xb953, 0xb89f, 0x23f0, 0x3aaf, 0xd01c, 0x32d0, 0xb7fa, 0xb827, 0xd235, 0xb822, 0xb959, 0x2eba, 0x377e, 0x3780, 0x37a9, 0xb8a5, 0xbac3, 0xbab8, 0xb7fb, 0x231b, 0xb7fe, 0xa948, 0x3801, 0x387a, 0xba6e, 0xb805, 0xb7ff, 0x32d0, 0xb7b4, 0xb7e5, 0xba89, 0x231b, 0xb7e9, 0xb7f9, 0xb894, 0x37f3, 0x387a, 0xba6e, 0x3764, 0xbad4, 0x39ae, 0xd363, 0xb7f5, 0xba19, 0x385f, 0xb8e7, 0xbadb, 0x39de, 0xbaf3, 0xb8df, 0x37a6, 0xbae8, 0x3aaa, 0xbadf, 0x3b04, 0xbb17, 0xba39, 0x337f, 0xb8f2, 0x21d3, 0xb144, 0xa20a, 0xb7cf, 0xb7bb, 0x3a43, 0xcb4f, 0x39d8, 0xba23, 0xd988, 0x271d, 0xbb12, 0xb97f, 0x2353, 0xb9d5, 0xb852, 0xb851, 0xb90e, 0x3a31, 0xbafb, 0xb7a1, 0x3808, 0xb8e7, 0x1e2b, 0x3792, 0xb90f, 0xba48, 0xb968, 0xba94, 0xb9bf, 0x39d7, 0xba4b, 0xba3a, 0xba9c, 0xb9f3, 0xba01, 0xba33, 0x376f, 0xc6c3, 0xba03, 0x37f3, 0x3801, 0xba6e, 0xbf06, 0xb746, 0x3a11, 0xcc17, 0xb9f1, 0x3973, 0xb9d1, 0x4681, 0xc682, 0xb800, 0xb7a7, 0xb761, 0xb7ad, 0x2eba, 0x377e, 0x3780, 0x37a9, 0xb7d7, 0x2922, 0xa923, 0x3346, 0xcd91, 0xbaae, 0xb8f6, 0xb9e4, 0x391c, 0xbaa2, 0xbb1e, 0xaf03, 0x38cb, 0x3ab1, 0x3ac0, 0xc881, 0x38ca, 0x3ab1, 0x3ac0, 0xc881, 0xb936, 0xb7a8, 0xb7a3, 0xb80b, 0xba0a, 0x3808, 0xb85f, 0xca1c, 0x337f, 0xb816, 0xb8be, 0xbac2, 0xc897, 0xb9e8, 0x1e57, 0x9e58, 0xb858, 0x1e2b, 0x3792, 0xb860, 0x47f4, 0xc887, 0xb95a, 0xb749, 0x38c0, 0xbaa2, 0xbadd, 0xb9e7, 0xb9f6, 0xbb0f, 0xba3f, 0xba62, 0xb792, 0xd46e, 0xb8d5, 0xd45a, 0xb768, 0x2932, 0xb72c, 0xb7ab, 0xba62, 0xb7d5, 0xb918, 0xb78f, 0xb986, 0xb966, 0xb965, 0xb862, 0xc243, 0xba9d, 0x9e1a, 0x3885, 0xb9d1, 0xb781, 0xba13, 0x1e50, 0xba02, 0xb842, 0xbb16, 0xb9b2, 0xb961, 0xbaec, 0xbada, 0x3af8, 0xbb05, 0xc253, 0x2e72, 0xae79, 0xb43e, 0xb769, 0x3804, 0xd363, 0xb985, 0xba4a, 0xe198, 0xb864, 0xb9d9, 0x5028, 0xe392, 0xb784, 0xb7aa, 0x3885, 0xb973, 0xb760, 0x39f9, 0xba70, 0x2353, 0xb84c, 0x3865, 0xba4b, 0x3837, 0xba23, 0xb9c7, 0xba9f, 0x3abb, 0xce7f, 0xb80a, 0xbab3, 0xbae7, 0xb8bf, 0xb920, 0xb901, 0xb884, 0xb868, 0xb922, 0xb9d4, 0xb869, 0x1e50, 0xb97d, 0xb879, 0xb79e, 0xb8e5, 0xbad3, 0x3881, 0xcc17, 0xbac1, 0xb97c, 0xb807, 0xb7a2, 0x3837, 0xb9d8, 0x3743, 0xbb0a, 0x3a6b, 0xbace, 0x3aa3, 0xd262, 0x385c, 0xbafb, 0xb86a, 0x1e1b, 0x23e2, 0x3b09, 0xd5c2, 0x3734, 0xba8f, 0xb811, 0xb866, 0xcf47, 0xb92b, 0x3830, 0xcb4f, 0xb861, 0xb9b4, 0x3865, 0xb9d7, 0xb73a, 0x392d, 0xb955, 0x3a2a, 0xbace, 0x37f3, 0x3801, 0xb87a, 0xb9d4, 0xbae5, 0x3ad3, 0x5263, 0xd26a, 0xbade, 0xbaa9, 0xbafd, 0xb749, 0xb7fd, 0x3734, 0xba38, 0xcc37, 0xb863, 0x3a98, 0xd617, 0xba97, 0xb867, 0xb96b, 0xb9da, 0x38c0, 0xb91c, 0xba2f, 0xba81, 0x380e, 0xbadf, 0xb8bc, 0x23f0, 0xb7b1, 0x38ca, 0x38cb, 0x3ac0, 0xc881, 0xb9df, 0xb7e0, 0xb9db, 0x38ca, 0x38cb, 0x3ab1, 0xc881, 0xba12, 0xb8f9, 0xb7dc, 0xa1f3, 0xd030, 0x3a2a, 0xba6b, 0x3a10, 0xba79, 0xb803, 0xbb11, 0xb988, 0xb809, 0xb91f, 0xba7c, 0x380e, 0xbaaa, 0xba71, 0xb9e0, 0xb80c, 0xb7a5, 0xb987, 0xb80a, 0xb989, 0xbb1e, 0x385c, 0xba31, 0xba83, 0x380f, 0xbb17, 0xb989, 0x1e1b, 0x23e2, 0x3a37, 0xd5c2, 0x3743, 0xba29, 0xb924, 0xbad5, 0x271d, 0xb83e, 0xb984, 0x380f, 0xbb04, 0x60c1, 0x6b30, 0xeb31, 0x38c2, 0xbafa, 0x4f3a, 0xcf3c, 0x31fd, 0x3b53, 0x3b61, 0xea69, 0x1ffd, 0x30de, 0xda22, 0xbb5f, 0xbb50, 0xb17e, 0xbb3e, 0xbb58, 0xe4a6, 0xbb35, 0xdb0c, 0x23f9, 0xa606, 0xbb27, 0x3b22, 0xbb61, 0x259c, 0x3198, 0xb199, 0xbb3b, 0x355b, 0xb582, 0xb581, 0xbb24, 0x3b22, 0xbb53, 0x3b68, 0xbb69, 0x3b65, 0xbb69, 0x3b65, 0xbb68, 0xa24d, 0x3e0b, 0x3f80, 0xbf81, 0x6f52, 0xef7f, 0x1e97, 0x2c81, 0x2d57, 0xbb73, 0x1e97, 0x2c81, 0x2d57, 0xbb72, 0x2386, 0x23af, 0xbb77, 0x2386, 0x23af, 0xbb74, 0x2e30, 0x2f52, 0xc688, 0xbb7a, 0xbb79, 0x3bb1, 0xbbb2, 0x273d, 0x3b7f, 0x3b81, 0xbca1, 0x273d, 0x3b7e, 0x3b81, 0xbca1, 0xa92d, 0x273d, 0x3b7e, 0x3b7f, 0xbca1, 0xbba4, 0xbb98, 0xbb9e, 0xbbae, 0xbb8b, 0xbbab, 0xbb92, 0xbbaf, 0xbb87, 0xbb9a, 0xbb93, 0xbba1, 0x3b7c, 0xbbb2, 0x3b7c, 0xbbb1, 0xbbc6, 0xb147, 0xb740, 0x28f3, 0xbbbc, 0x28f3, 0xbbbb, 0xbbc1, 0x3bc0, 0x41ec, 0xdb6d, 0xdf42, 0xbbb4, 0x233b, 0xe1ab, 0xbbcf, 0xbbce, 0x50b2, 0xd8ac, 0xa936, 0xc562, 0xbbd8, 0xbbd7, 0xb583, 0xbbee, 0xbc08, 0xc403, 0xbbdf, 0xbbff, 0xbbf5, 0x4266, 0xc29b, 0xbc0c, 0x3be1, 0xbc0a, 0xbc08, 0xbc07, 0x3c17, 0x3c23, 0xc081, 0x3c14, 0x3c23, 0xc081, 0xe6f0, 0xbc2b, 0x3c14, 0x3c17, 0xc081, 0xbc2c, 0xbc22, 0xbc29, 0xbc33, 0xbc32, 0x3c35, 0xbc3a, 0x3c34, 0xbc3a, 0x1ecc, 0x21ab, 0xa1b0, 0x3c34, 0xbc35, 0x232f, 0x2f59, 0x2f5a, 0xbed9, 0xbf22, 0xbcdb, 0x3c5a, 0xbc61, 0x3c59, 0xbc61, 0x3c59, 0xbc5a, 0xbe6f, 0xbc74, 0xbc73, 0xbd36, 0xa1b3, 0xbef8, 0x3c89, 0xc00b, 0xbc88, 0xbca1, 0xa1b2, 0xbdfb, 0xbe9d, 0x273d, 0x3b7e, 0x3b7f, 0x3b81, 0xbc92, 0x3cfd, 0xbfa4, 0xc043, 0xbf1a, 0xc01d, 0xbdea, 0xbec4, 0xbe22, 0xbf59, 0x3eec, 0xcc04, 0xe63b, 0xbcb2, 0xbcb1, 0xbfd4, 0xe711, 0xa1b5, 0x1f71, 0xc04b, 0xbc4e, 0xbeaf, 0xbfd8, 0xa76d, 0xda3b, 0x3d99, 0xbdda, 0xa1ba, 0xa933, 0xbfa9, 0x3edd, 0xc027, 0xc018, 0xbffc, 0xc009, 0x3e8c, 0x3f51, 0xc67a, 0x3ca2, 0xbfa4, 0xbd87, 0xbf54, 0xa1bd, 0xc051, 0xbf54, 0xbc79, 0xcaaa, 0xb6f2, 0xbd79, 0xbde8, 0xbdfa, 0xbf3f, 0xbf86, 0xbe5e, 0xbeae, 0xbfc1, 0xbe2c, 0xbfae, 0x3e08, 0xbfdf, 0x26a0, 0xc00f, 0xbefb, 0xbe3e, 0xbef8, 0xbfc3, 0xbf6f, 0xbfdc, 0x3ee8, 0x3ff1, 0xbff5, 0xbfa3, 0x3f82, 0x3f84, 0xc013, 0xbf94, 0xbd43, 0xa1c2, 0x21c3, 0xa857, 0xbe7c, 0xbcfe, 0xbe09, 0xbe67, 0x5385, 0xd49e, 0x3cea, 0xbdda, 0xbfe4, 0x3e0e, 0xc006, 0xbf87, 0xbdf6, 0xbf23, 0xbf7f, 0xbe26, 0xbeb3, 0xbe19, 0xbecc, 0xbf64, 0x3f97, 0xc900, 0xbf32, 0x3e0b, 0x3f80, 0x3f81, 0xbfc7, 0xbf04, 0xa1c5, 0xa1c9, 0xbfb1, 0xbe7d, 0xc5f3, 0xa1c4, 0x3cea, 0xbd99, 0xbe0c, 0x21c0, 0xbd44, 0xbca6, 0x2a6c, 0xbedb, 0xbe7b, 0x26e6, 0x3e0a, 0xbe15, 0xbd9e, 0xbe05, 0xbd45, 0xbc97, 0xbdf8, 0xbe34, 0x3d4e, 0xbfdf, 0xbd89, 0x26e6, 0x3df5, 0xbe15, 0x3b6e, 0x3da9, 0x3f80, 0xbf81, 0xbde5, 0xbf2c, 0x3d9c, 0xc006, 0xbf38, 0xbfa0, 0x2d60, 0x3eaa, 0x5c3f, 0xdc40, 0xbf01, 0x26e6, 0x3df5, 0xbe0a, 0xc00b, 0xbef2, 0xbda3, 0xa1cf, 0xbca8, 0xbda1, 0xbeab, 0xbd4b, 0xbe07, 0x6030, 0xe04a, 0xbd51, 0xa1d1, 0xbd48, 0xbd8c, 0xbc64, 0xbdf3, 0xbd85, 0xbdc4, 0xc063, 0x3ebc, 0xbfd5, 0x3ee1, 0xbeff, 0xbfda, 0xa24c, 0xbf70, 0xbffa, 0xbf0a, 0xbf11, 0x3cfc, 0x3f51, 0xc67a, 0xa3b5, 0x3fdb, 0xd499, 0x21c6, 0xa1d6, 0xbf91, 0xbc9f, 0x2d60, 0x3e13, 0x5c3f, 0xdc40, 0xbe29, 0xbd49, 0x3cdd, 0xe061, 0xbda2, 0x4194, 0xe394, 0x3e7f, 0xbfd5, 0xbca7, 0xc06d, 0xbda4, 0xd365, 0xbf77, 0x232f, 0xbc47, 0xbefe, 0xbdeb, 0x3cf7, 0xc027, 0xbeef, 0x404e, 0x4054, 0xc067, 0xc044, 0x3e80, 0xbeff, 0xc005, 0xbffe, 0xbfeb, 0xc064, 0x3d5c, 0x3ff1, 0xbff5, 0xc058, 0xbfa6, 0x3caa, 0xcc04, 0xbede, 0xbe17, 0x2364, 0x3f9b, 0xc002, 0x3c7b, 0xbd52, 0xbd50, 0xbeda, 0x3e80, 0xbee1, 0xbe14, 0xbdaf, 0xb87c, 0xbe87, 0xbe89, 0xc055, 0xbca4, 0xbc49, 0xbd9f, 0x1e79, 0x1e7e, 0x9e81, 0xc1b3, 0xbe0d, 0xbf44, 0xbda8, 0xbe10, 0xbd46, 0xe88d, 0xbf31, 0xc04c, 0xc020, 0xc01f, 0xc032, 0xbff0, 0x3cfc, 0x3e8c, 0xc67a, 0x3d01, 0xbd2f, 0xbca9, 0x3f5c, 0xbff3, 0x3f5b, 0xbff3, 0xbda6, 0xbd54, 0xbe83, 0xc026, 0xbed7, 0xbda0, 0x3b6e, 0x3da9, 0x3e0b, 0xbf81, 0x3b6e, 0x3da9, 0x3e0b, 0xbf80, 0x3d67, 0x3f84, 0xc013, 0x3d67, 0x3f82, 0xc013, 0xbd47, 0xbd9d, 0xbe9c, 0xbd69, 0xbda7, 0xbfb3, 0x2364, 0x3ef7, 0xc002, 0xc03e, 0x21db, 0xa1dc, 0xbe11, 0xbd63, 0x3ca2, 0xbcfd, 0xbeea, 0xbcf6, 0xbd4d, 0xc032, 0xbdc0, 0xbf9a, 0xbd4a, 0xbd53, 0xbda9, 0x4028, 0xc02c, 0xc015, 0xbcb5, 0x3e7f, 0xbebc, 0xbcde, 0x3e81, 0xc02f, 0x3e95, 0xd499, 0xbd55, 0x3d4e, 0xbe08, 0xbd9b, 0xbee5, 0xbf4d, 0x3d5c, 0x3ee8, 0xbff5, 0x3f5b, 0xbf5c, 0x3d5c, 0x3ee8, 0xbff1, 0x65ca, 0xe614, 0xbe85, 0xbcfa, 0xbee4, 0x2364, 0x3ef7, 0xbf9b, 0xbee2, 0x3d9c, 0xbe0e, 0xbcfb, 0x3c88, 0xbe16, 0xbd4f, 0x3d67, 0x3f82, 0xbf84, 0xbfd2, 0xbcf8, 0xbca5, 0xbf47, 0xbf46, 0xbf74, 0x3cf7, 0xbedd, 0x3fd1, 0xc02c, 0x3fd1, 0xc028, 0xbfda, 0xaf25, 0x3f4b, 0xbfb0, 0xbf9c, 0xbca3, 0xbee0, 0x1f71, 0xbcd5, 0xbf45, 0x3edf, 0xc054, 0xc05d, 0xbd12, 0x3edf, 0xc04e, 0xbf13, 0xbee9, 0xc04f, 0xbe7e, 0xbee6, 0xbedf, 0xbec5, 0x2149, 0xc097, 0xc1c8, 0x670a, 0x671b, 0xe748, 0x4ac3, 0xcac8, 0x40fe, 0xdd64, 0x407e, 0xc0d6, 0x407d, 0xc0d6, 0xc1e6, 0xc16c, 0x3c14, 0x3c17, 0xbc23, 0x4210, 0x6229, 0xe46a, 0x23cd, 0xa3db, 0xc08f, 0xc08e, 0x2149, 0xc06e, 0xc152, 0xc197, 0x362d, 0x36cc, 0x4167, 0x41f3, 0xc7be, 0x4832, 0x491f, 0xc92e, 0xc0f1, 0xcf39, 0xeede, 0x1e3a, 0xc232, 0x4149, 0x632c, 0xe34a, 0xc1be, 0xc20d, 0x41d7, 0x421b, 0xc224, 0xc0f4, 0xc16c, 0x9e4c, 0x407d, 0xc07e, 0xc1ed, 0xc159, 0xc169, 0x413c, 0xc1d2, 0x41c1, 0xc217, 0xc1f4, 0xc1d9, 0xc1fc, 0xc1b1, 0xc0af, 0xc0c3, 0xc1a2, 0x407b, 0xdd64, 0xe2b7, 0x21de, 0x4155, 0x4188, 0xc199, 0xe2b2, 0x9e9f, 0x4130, 0xc1c4, 0xc165, 0xc1dc, 0xc1fe, 0x41cc, 0xc1d3, 0xb5e0, 0xc133, 0xc162, 0x4114, 0xc1c4, 0xc126, 0x40e7, 0xc1d2, 0xe35b, 0x40bc, 0x632c, 0xe34a, 0xc16e, 0xc09c, 0x21de, 0x4108, 0x4188, 0xc199, 0xb696, 0xb696, 0xc0df, 0x412d, 0xd315, 0xc115, 0x36cc, 0x40a4, 0x41f3, 0xc7be, 0xc0e6, 0x4080, 0xc0ca, 0xc151, 0x417e, 0xc185, 0x4174, 0xc185, 0x4174, 0xc17e, 0x21de, 0x4108, 0x4155, 0xc199, 0xc1fb, 0xd367, 0x3eb6, 0xe394, 0xc09d, 0x21de, 0x4108, 0x4155, 0xc188, 0xc0fd, 0xc0ed, 0xe88e, 0xbf2b, 0xc1ba, 0xc1b9, 0xc0bd, 0x40e8, 0xc217, 0x4114, 0xc130, 0xc06f, 0x411a, 0xc1d3, 0xac1e, 0x48f7, 0xcca6, 0x40e7, 0xc13c, 0x411a, 0xc1cc, 0xedf0, 0x40c2, 0x421b, 0xc224, 0xc0eb, 0xc116, 0x25b6, 0xd425, 0xc07f, 0xbbc1, 0xc0db, 0x36cc, 0x40a4, 0x4167, 0xc7be, 0xc0e9, 0xc18f, 0xc0ec, 0xc118, 0xd000, 0xc0c1, 0xc089, 0x40e8, 0xc1c1, 0x40c2, 0x41d7, 0xc224, 0x40c2, 0x41d7, 0xc21b, 0x9e89, 0xb11b, 0x1e3a, 0xc0ba, 0xb52b, 0xc23a, 0xc237, 0x9fce, 0x2c12, 0x2c13, 0xac14, 0x9e2c, 0xae8a, 0xb96a, 0xa889, 0xa899, 0xcb3a, 0xc258, 0x4255, 0x4a93, 0x4a97, 0xcabb, 0xb99c, 0x424e, 0x4a93, 0x4a97, 0xcabb, 0xc24d, 0xc25c, 0xc25b, 0xab83, 0x3c02, 0xc29b, 0x1f10, 0xa0a0, 0xb2b5, 0xc27d, 0x42a0, 0xc2a7, 0xc275, 0xc282, 0xc281, 0xa954, 0xc2a2, 0xd366, 0x3c02, 0xc266, 0x427a, 0xc2a7, 0xc28a, 0x427a, 0xc2a0, 0xc2ad, 0xc2ac, 0xa3d0, 0xdc7a, 0x5c7b, 0xdc8b, 0xc2c0, 0xc377, 0xc341, 0xc336, 0xc2b6, 0x2448, 0xb282, 0xc2fd, 0xdc7e, 0xc329, 0xc36e, 0xc370, 0xdc89, 0xaf87, 0xc368, 0xc2f9, 0xc345, 0xc36a, 0xc319, 0xc344, 0xc33b, 0x430d, 0xdc8d, 0xc2ed, 0xc2c8, 0xc318, 0xb08d, 0xc36b, 0xd653, 0xdc8e, 0x42f8, 0xdc8d, 0x431f, 0xc375, 0xc37c, 0xc2fe, 0xc2f0, 0x430e, 0xc375, 0xc380, 0xc33f, 0xc2cc, 0xdc6c, 0xdc93, 0xd75f, 0xc37b, 0xdc92, 0xc366, 0xc371, 0xc2b9, 0xc2f2, 0x4328, 0xd76f, 0xc2b8, 0xc2f1, 0xc2ee, 0xe3e1, 0x2956, 0x2968, 0xa96c, 0xdc98, 0xee9e, 0xc359, 0xc358, 0x217d, 0xc378, 0xc332, 0xc2ec, 0xc2ef, 0x4303, 0xc381, 0xc37a, 0xc2dd, 0xc2de, 0xc335, 0xd3b7, 0x430e, 0xc31f, 0xc2b7, 0x217d, 0xc363, 0xc36d, 0xc32e, 0xc315, 0xdc9b, 0xc321, 0xc36b, 0x583c, 0xdc9c, 0xa999, 0xa35b, 0xc4a3, 0xc4b5, 0xc452, 0xc46a, 0x43cf, 0xc474, 0xcfeb, 0xc44b, 0xc4b0, 0xc3fe, 0xc472, 0xc447, 0xc4bd, 0x4409, 0x4460, 0xc4a2, 0xc3ce, 0xc3cd, 0x43a8, 0xc474, 0xc43a, 0xc4cf, 0x4434, 0xc439, 0x2b9d, 0x2bda, 0x2bf3, 0xabf6, 0xa72d, 0xc4ab, 0x448e, 0xc4d4, 0xc43f, 0xc894, 0xc3b0, 0xbbec, 0xc46f, 0x43cb, 0x4460, 0xc4a2, 0x4483, 0xc4c8, 0xc4a1, 0xc489, 0x4411, 0xc463, 0x4410, 0xc463, 0xe6d5, 0x43e1, 0xc439, 0x43e1, 0xc434, 0xc3d0, 0xc4ca, 0xc3f2, 0xc3b3, 0xc3ae, 0xc39a, 0xc8af, 0x43cb, 0x4409, 0xc4a2, 0x4410, 0xc411, 0xc476, 0xc4a1, 0xd3b9, 0xc39b, 0xc405, 0xc4cc, 0xc3b1, 0x43a8, 0xc3cf, 0xc464, 0xc4a6, 0xc4b8, 0x440d, 0xc4c8, 0xc4bf, 0xc40f, 0x43f1, 0xc4d4, 0x440e, 0xc468, 0x43cb, 0x4409, 0xc460, 0xc391, 0xc477, 0xc3f0, 0xc3af, 0xc399, 0xc478, 0x28d0, 0xc3ba, 0xc487, 0x440d, 0xc483, 0xc4da, 0xc43c, 0xc470, 0xc3d1, 0xc4da, 0x43f1, 0xc48e, 0x44c9, 0xc4d2, 0xaf01, 0xcf38, 0xc515, 0xc50c, 0x4501, 0xcf3e, 0xc506, 0x44f6, 0xcf3e, 0xc4f7, 0xc4ef, 0x287c, 0x4816, 0xc8da, 0xc4ee, 0x4f42, 0xcf4c, 0x2617, 0x2690, 0xac1d, 0xb674, 0x1ea7, 0xc523, 0x1ea7, 0xc522, 0x4a4c, 0x52cf, 0xd607, 0x2b81, 0x2bcd, 0x2bd5, 0x2bd7, 0x2bdc, 0xabe7, 0xe6fb, 0x9fbd, 0x2722, 0xc53c, 0x2212, 0x2283, 0x2290, 0x456b, 0xc575, 0x2722, 0xc53a, 0xc54e, 0xc55d, 0x4559, 0xc571, 0xb6a2, 0x1ea9, 0x4552, 0x455d, 0xc55e, 0xd015, 0x283a, 0xc54d, 0x283a, 0xc54c, 0xc53d, 0xc560, 0x1ea9, 0x4546, 0x455d, 0xc55e, 0x4544, 0xc571, 0xa959, 0x1ea9, 0x4542, 0x4546, 0x4552, 0xc55e, 0x1ea9, 0x4546, 0x4552, 0xc55d, 0xc551, 0xa793, 0xbbd5, 0xc567, 0xc565, 0xc56a, 0xc568, 0x453b, 0xc575, 0xaf02, 0x4544, 0xc559, 0x23e0, 0x4582, 0x4589, 0xc58a, 0xc587, 0x453b, 0xc56b, 0xaf53, 0xc585, 0xa84d, 0x23e0, 0x4573, 0x4589, 0xc58a, 0x457a, 0xc586, 0xc585, 0xc574, 0x23e0, 0x4573, 0x4582, 0xc58a, 0x23e0, 0x4573, 0x4582, 0xc589, 0x458f, 0xde08, 0x458e, 0xde08, 0xc664, 0xc642, 0xc627, 0xc658, 0xc60d, 0xd0ac, 0xc667, 0xc632, 0xc621, 0xc60b, 0x46b0, 0xe764, 0xc5fe, 0xc665, 0xc670, 0xc5d9, 0xc662, 0x24d1, 0x2516, 0x255e, 0xc602, 0xc5c9, 0xc646, 0xc626, 0xc613, 0xc647, 0xd139, 0x45f3, 0xeebb, 0x3dcb, 0x45f2, 0xeebb, 0xc661, 0xc5fa, 0xc5f9, 0xc5b4, 0x24d1, 0x2516, 0x255e, 0xc5d6, 0xc649, 0xc62e, 0x3108, 0xc652, 0xc5af, 0xc5a1, 0xc5ea, 0xa591, 0xc61e, 0xc63b, 0xc617, 0xc5ae, 0xc645, 0xc5e9, 0xc59f, 0xc65f, 0xc671, 0xc606, 0xc5ad, 0xc63b, 0x4618, 0xc63a, 0xc66e, 0xc66d, 0xc597, 0x2af6, 0xb194, 0xc624, 0xc5e8, 0xc5eb, 0xc605, 0x3108, 0xc609, 0x4670, 0xd1c3, 0xc5a0, 0xc669, 0xc62a, 0xc5f4, 0xc5d2, 0xc66c, 0xc596, 0xc5c7, 0xc5ac, 0xc65e, 0xc672, 0xc663, 0xc63f, 0xc63e, 0xd1de, 0x45c8, 0x4655, 0xd1c3, 0xc62b, 0xc66b, 0xc675, 0xc674, 0x23d1, 0x32e8, 0x34a5, 0x3cfc, 0x3e8c, 0x3f51, 0x467c, 0x6166, 0x6197, 0xe1b1, 0xa0dc, 0x23d1, 0xc67a, 0x388d, 0xc682, 0x388d, 0xc681, 0xdc8c, 0x2e30, 0x2f52, 0xbb78, 0xc690, 0x2373, 0xa37d, 0xdccb, 0xc68b, 0xc69a, 0x21d2, 0xc691, 0xc6a1, 0xc69e, 0x36a4, 0xb6ad, 0xb61f, 0x45b1, 0xe764, 0xc6ba, 0x46b8, 0xc6b9, 0xef13, 0x46b2, 0xc6b9, 0x46b2, 0xc6b8, 0xc6b1, 0xef13, 0xc6c8, 0x376f, 0xb86e, 0xc6cd, 0xc6c1, 0x4f3d, 0x6262, 0xe4b5, 0xc897, 0xc6c7, 0xc6de, 0x2869, 0xee7d, 0x46e3, 0xdb7c, 0x5462, 0xd4cb, 0xc6dc, 0xc6e4, 0xcc20, 0xc6d7, 0xc6cf, 0xac3d, 0x46d1, 0xdb7c, 0xc6d8, 0xa362, 0x5361, 0xd62f, 0x1eff, 0xa023, 0xc742, 0x23bf, 0xce23, 0xc798, 0x5996, 0xd9c6, 0xb14e, 0xc71f, 0xc71e, 0xc726, 0xc725, 0xc72f, 0xc7d3, 0x472b, 0xc787, 0xc760, 0x1e51, 0x1f17, 0xd846, 0xd457, 0xc75c, 0xc709, 0xa6f0, 0xc75e, 0xc7bc, 0xc741, 0xc750, 0xc737, 0xc765, 0xc764, 0xd9a9, 0x23e1, 0xa8e1, 0xc7c1, 0xc7b6, 0xc72f, 0xc79e, 0xcff3, 0xc70d, 0xc792, 0xc7aa, 0xc7d2, 0xc7da, 0xc7a0, 0x1e86, 0xb6b8, 0xc7d9, 0xc786, 0xc751, 0x36cc, 0x40a4, 0x4167, 0xc1f3, 0xc785, 0xd499, 0xc7a2, 0xc72c, 0xc7b0, 0xc7a9, 0xcb36, 0x47e7, 0xda20, 0x9faf, 0x47e4, 0xda20, 0xc7ef, 0xc7eb, 0x3917, 0x4887, 0xc8f8, 0xc8ef, 0xc92c, 0x483f, 0x4926, 0x6271, 0x62db, 0xe45b, 0xc8ad, 0xc8bc, 0xc8c7, 0xc88e, 0x287c, 0x450e, 0xc8da, 0xc868, 0xc86f, 0xc8b8, 0xa38e, 0xc8aa, 0xc8d6, 0x40ae, 0x491f, 0xc92e, 0xc92a, 0xc931, 0xc92b, 0x47ff, 0x4926, 0x6271, 0x62db, 0xe45b, 0xc90e, 0xc85c, 0xb731, 0xc8a9, 0xc864, 0xc8fd, 0xc8d1, 0xc904, 0xc841, 0xc856, 0xc817, 0xc912, 0x27c6, 0x48ba, 0xc8bb, 0xc81a, 0xc8e0, 0x6e78, 0x6e7b, 0xee7c, 0x38ca, 0x38cb, 0x3ab1, 0xbac0, 0x3917, 0xc7f4, 0xc919, 0xc815, 0xc3f7, 0x27fc, 0x2d0e, 0xad5c, 0x27e6, 0x3900, 0xc6cc, 0xc8e7, 0xc8e3, 0x2ca9, 0x2d52, 0xad53, 0xe7a8, 0xc855, 0xc827, 0xc800, 0xc459, 0x33bd, 0xde2b, 0x6e78, 0xee7c, 0xc81c, 0x486e, 0xc8bb, 0x486e, 0xc8ba, 0xc801, 0xc920, 0xc812, 0xc859, 0xe695, 0xa387, 0xc82c, 0x287c, 0x450e, 0xc816, 0xc875, 0xc89c, 0xc89b, 0xc7f6, 0xc1d0, 0xc7f4, 0xeec4, 0xc857, 0xbda7, 0xc85a, 0x6669, 0x667a, 0xe6aa, 0x2760, 0xa89c, 0xc840, 0xc86a, 0xc88d, 0x40ae, 0x4832, 0xc92e, 0xc8c1, 0x47ff, 0x483f, 0x6271, 0x62db, 0xe45b, 0xc83a, 0xc83e, 0xc7fe, 0x40ae, 0x4832, 0xc91f, 0xc83b, 0xc93b, 0xc93a, 0xc9ae, 0xc9b4, 0xc9a9, 0xc9a1, 0xa996, 0xc995, 0xc9d8, 0xc9b0, 0xc98e, 0xb346, 0xc9b1, 0xc98d, 0xc984, 0xca1f, 0xc97f, 0xc9aa, 0xc978, 0xc96f, 0xc94e, 0xc943, 0xafa1, 0xc940, 0xc985, 0xc93c, 0xc962, 0xc977, 0xc93f, 0xe6e2, 0xc9c3, 0xa3b6, 0xc9bf, 0xca08, 0x527a, 0x52b8, 0x541f, 0x54fa, 0xd5dd, 0xcc7c, 0xae74, 0x49cc, 0x4a50, 0x67a6, 0x67a7, 0xef9d, 0x49cb, 0x4a50, 0xef9d, 0xca2e, 0xd018, 0x4a09, 0xccb3, 0xcc83, 0xa3ea, 0xe8eb, 0xc955, 0xca4d, 0x4a31, 0xca6a, 0xca2d, 0xca62, 0xca60, 0x4a3e, 0x4a3f, 0x55c1, 0xd5f3, 0xca0e, 0x4a5e, 0xca6d, 0xc9c6, 0x49d4, 0xccb3, 0xca05, 0x4cba, 0xd5ad, 0x4a3a, 0xca49, 0xb8f1, 0xc980, 0xca4c, 0xc9f8, 0xc9cd, 0x49f0, 0xca6a, 0xca3b, 0x4a4f, 0xca69, 0x4a1a, 0xca49, 0xca32, 0x4a01, 0x4a3f, 0x55c1, 0xd5f3, 0x4a01, 0x4a3e, 0x55c1, 0xd5f3, 0x4cd3, 0xdc37, 0xca57, 0x4c87, 0xcce0, 0x4a1a, 0xca3a, 0x4526, 0x4a23, 0x52cf, 0xd607, 0xc9ef, 0x6834, 0xe896, 0x4a33, 0xca69, 0x49cb, 0x49cc, 0xef9d, 0xca61, 0xca42, 0x4a06, 0xca6d, 0xc9fe, 0xca51, 0xc9fd, 0xca70, 0x6839, 0x683a, 0x683d, 0xe893, 0x4a33, 0xca4f, 0x49f0, 0xca31, 0xd3b7, 0x4a06, 0xca5e, 0xca63, 0x4aae, 0xcac6, 0xab86, 0xe631, 0xab8a, 0xcaca, 0xcab3, 0xcac5, 0xcab5, 0x4aaf, 0xcab0, 0x424e, 0x4255, 0x4a97, 0xcabb, 0x424e, 0x4255, 0x4a93, 0xcabb, 0xcac4, 0xcaa9, 0xcaba, 0xcac7, 0xca9d, 0xbd3c, 0xde30, 0x2be0, 0xcab6, 0x4a77, 0xcac6, 0x4a91, 0xcab0, 0x4a91, 0xcaaf, 0xca8a, 0xca8e, 0x2be0, 0xcaad, 0xcaa5, 0x424e, 0x4255, 0x4a93, 0xca97, 0x4076, 0xcac8, 0xca9c, 0xca8d, 0x4a77, 0xcaae, 0xcaa6, 0x4076, 0xcac3, 0xca83, 0xa947, 0x4aea, 0xdc4e, 0x9f2b, 0x6f8d, 0xef92, 0x1e26, 0x20a1, 0xae76, 0x4af6, 0xcaf8, 0x9fdf, 0x5abc, 0xdc0a, 0x4ad6, 0xdc4e, 0x4ade, 0xcaf8, 0x4ade, 0xcaf6, 0xcbea, 0xcbe4, 0x4b4d, 0xcbb0, 0x2173, 0xa4b2, 0xcb46, 0xcb67, 0xcb8d, 0x218a, 0x218c, 0x3547, 0x4b56, 0x4b5e, 0xcba3, 0x9f53, 0x4bc4, 0xd303, 0xc7e2, 0x424b, 0xcb8b, 0x4bed, 0xcc60, 0xcc69, 0xcbb2, 0xcb14, 0xd9d4, 0x4b0b, 0xcbb0, 0x3830, 0xba43, 0xcb7a, 0xcbc9, 0x3547, 0x4b27, 0x4b5e, 0xcba3, 0xcc06, 0xcb82, 0xcbf3, 0xcbe9, 0xcc39, 0xcb8f, 0x3547, 0x4b27, 0x4b56, 0xcba3, 0xcb15, 0xcbe0, 0xcc4c, 0xcb50, 0xcbd4, 0x4c3d, 0x4c56, 0xcc64, 0xcbe0, 0xcc21, 0xcb59, 0xcbe6, 0x00f6, 0x1e2a, 0xa00b, 0xcb3a, 0xcb1f, 0xcb5d, 0xae1a, 0xcc59, 0xa284, 0x3547, 0x4b27, 0x4b56, 0xcb5e, 0x4c00, 0xd536, 0xcbcb, 0xcc5c, 0xcc6e, 0xcc1e, 0xcc2b, 0xcbdb, 0x4b0b, 0xcb4d, 0xcb45, 0xd282, 0x4b35, 0xd303, 0xd483, 0xcb51, 0x2327, 0xcba7, 0xad4c, 0xcc23, 0xcc0d, 0xcb7c, 0xcc46, 0xcbac, 0x4b71, 0xcb7f, 0xcc12, 0xcb03, 0xcb86, 0x4b5b, 0x4c01, 0xcc6d, 0xcafe, 0x4b3c, 0xcc60, 0xcc43, 0xcc5b, 0xcc6c, 0xaf57, 0xcb5a, 0x4ba6, 0xd536, 0x4be9, 0xcc6d, 0x3caa, 0xbeec, 0xcb58, 0xcbd3, 0x4c14, 0xd4d1, 0xcbe1, 0x4c11, 0xd4d1, 0xcc6a, 0x3881, 0xba11, 0xcc2b, 0xcbaa, 0xc6d9, 0xcb80, 0xcbd1, 0xa142, 0x4bab, 0xcc18, 0x35d7, 0xcc4f, 0xba90, 0xcb5c, 0xcb7e, 0xae18, 0x4c52, 0xcc55, 0xcc5f, 0xcbee, 0xcbd7, 0xcb79, 0x35d7, 0xcc31, 0xcc58, 0xcc40, 0x55ae, 0xd5ea, 0xcc40, 0x4b7e, 0xcc64, 0x4c50, 0xd5e4, 0xcb93, 0xcbef, 0xcba8, 0xcc41, 0x4b3c, 0xcbed, 0x4b7e, 0xcc56, 0xcb3e, 0xcc16, 0xcbf1, 0x4be9, 0xcc01, 0xcba9, 0x2401, 0xefa5, 0xccf4, 0xe85e, 0xc9c8, 0xc9d5, 0x4a45, 0xcce0, 0xccb9, 0xeea4, 0xeecf, 0x5083, 0xd085, 0xccf6, 0xccf2, 0xccb5, 0x1ffc, 0xeb3b, 0xc1d0, 0x2986, 0x299d, 0x2a24, 0xccda, 0xccde, 0x36f2, 0x6eaf, 0x6eb4, 0xeeb9, 0xcce7, 0x49d4, 0xca09, 0xcca4, 0xcc8b, 0xca17, 0xccc9, 0xccdd, 0x6762, 0x6eaa, 0x6eab, 0x6eb5, 0xeeba, 0xe931, 0xccbd, 0xe92c, 0x4a40, 0xdc37, 0xe93b, 0x2986, 0x299d, 0x2a24, 0xcca7, 0xccc1, 0xccaa, 0x4a45, 0xcc87, 0xe94e, 0xccae, 0x26e2, 0xa6e3, 0xcc9d, 0xcc74, 0xcc9c, 0x1e1d, 0x4cf9, 0x4d72, 0xce9f, 0x4cf8, 0xce9f, 0xccfe, 0x1fc2, 0x4e18, 0x4e4b, 0xce6b, 0x229f, 0xccff, 0x4cfa, 0xcea0, 0x229f, 0xccfc, 0xceaa, 0xcea3, 0xcea6, 0xcea2, 0xcea1, 0xcea5, 0xcea8, 0xceab, 0xceb9, 0xceb3, 0xcebd, 0xcebe, 0xceaf, 0xceb0, 0xcebc, 0xceb1, 0x4d8b, 0xceae, 0x2e0b, 0xceb8, 0xcea7, 0xceb7, 0xcead, 0x4d4d, 0xceb4, 0xceba, 0xcdb7, 0xcd2e, 0xcdca, 0x4da2, 0xcef8, 0x324e, 0xcd25, 0x4e32, 0x4e8d, 0x4e9d, 0xcf27, 0xcec6, 0xcec2, 0xcec1, 0xcec5, 0xcebb, 0xcecd, 0xcec0, 0xcecb, 0xced0, 0xcecc, 0xcec8, 0xaf26, 0xcec4, 0xcd97, 0x4eca, 0xe77d, 0xae15, 0xcea9, 0x4d93, 0xcecf, 0xcd1d, 0xced7, 0xcec1, 0xced3, 0x34a7, 0x4d76, 0xcedd, 0xce8a, 0xcdea, 0x4e27, 0xcee6, 0x4ed4, 0xd8b4, 0xcede, 0xcedc, 0xceda, 0x4dab, 0x4dda, 0x4ebf, 0xcf10, 0xd32f, 0xced9, 0xced2, 0xced6, 0x4d82, 0xcedf, 0x1e1d, 0xccf8, 0xcedb, 0x4e6a, 0xced8, 0x34a7, 0x4d55, 0xcedd, 0xce36, 0x4e6d, 0xd812, 0xcee2, 0xced1, 0x4d71, 0xcedf, 0xcee1, 0xcee0, 0xcee8, 0xcee3, 0xcd18, 0xcee4, 0xcee5, 0x3346, 0xb8b1, 0x4d4c, 0xcecf, 0xcd45, 0x4e7c, 0xcee7, 0x4e8c, 0x4eed, 0xdce1, 0xcefc, 0xcf0d, 0x4dd1, 0xceff, 0x4d2c, 0xcef8, 0xcefb, 0x4d64, 0x4dda, 0x4ebf, 0xcf10, 0xcef6, 0xcef4, 0xcef9, 0xcefe, 0xceb2, 0xcf51, 0x4e43, 0xcef7, 0x23d5, 0xcf00, 0xaf69, 0xcd23, 0xceb6, 0xcefa, 0xceee, 0xcefd, 0x4e5b, 0xcef0, 0xceeb, 0xcef5, 0xcef2, 0xcf01, 0xcd27, 0xceef, 0xcde1, 0x303b, 0x3460, 0x4deb, 0xce3d, 0xce41, 0x4da0, 0xceff, 0x4dd6, 0xceea, 0xcef1, 0xce83, 0x4dd2, 0xceea, 0xcf03, 0xcf04, 0xcf02, 0x4d64, 0x4dab, 0x4ebf, 0xcf10, 0xcef5, 0xcf09, 0xcf0e, 0xcf14, 0x4dcd, 0xcf17, 0x4e01, 0xcf18, 0xd913, 0xcf0c, 0xcf16, 0xcf13, 0xcd5a, 0x303b, 0x3460, 0x4dcf, 0xce3d, 0xcf05, 0xceac, 0xcf11, 0xcf08, 0xcec3, 0xcf0f, 0xcf07, 0xd1f4, 0x4e15, 0xcf0a, 0x4de3, 0xcf18, 0x4e69, 0xcef3, 0xd426, 0xcf19, 0xcf22, 0xcf12, 0xcec9, 0xcf23, 0x4dfc, 0xcf0a, 0xcf1e, 0x4cfb, 0x4e4b, 0xce6b, 0xcf1a, 0xcf1c, 0xcf1f, 0xcf1b, 0x23bf, 0xc70c, 0x4e31, 0xceb5, 0x4d5b, 0xcee6, 0xae4c, 0xcf1d, 0xcf21, 0xcf29, 0x4e26, 0xceb5, 0x4d2f, 0x4e9d, 0xcf27, 0xcea4, 0xcf26, 0x4d77, 0xe9bd, 0xcf15, 0xcf25, 0x303b, 0x3403, 0x3460, 0x4dcf, 0xcdeb, 0xcee9, 0xcdd0, 0x4db3, 0xcef7, 0x4e70, 0xcf2b, 0xcf2a, 0xce66, 0x4e8e, 0x4e96, 0xcea4, 0x4cfb, 0x4e18, 0xce6b, 0x4e61, 0xcee3, 0xcf2f, 0xcec7, 0xcf2e, 0x1f1e, 0xa098, 0xcffb, 0xcf2d, 0xcdbd, 0xced5, 0x4e4d, 0xcee3, 0xcf0b, 0xce82, 0xce48, 0x4e04, 0xcef3, 0x4d75, 0xced8, 0x4cfb, 0x4e18, 0xce4b, 0x4d78, 0x5327, 0xd812, 0x4f30, 0xe7c1, 0xcf33, 0x4e45, 0x4f2b, 0xcf32, 0xcf34, 0xcece, 0x4d99, 0xcee7, 0xcf24, 0xcf31, 0xb9db, 0xce64, 0xcdd5, 0xe8a3, 0xcf2c, 0x4e98, 0xcf35, 0x4d56, 0xcea9, 0x4d9a, 0x4eed, 0xdce1, 0xcd2f, 0x4e4a, 0x4e96, 0xcea4, 0x4e92, 0xcf20, 0x4e8f, 0xcf20, 0xcf28, 0xb24d, 0x4e4a, 0x4e8e, 0xcea4, 0x4e89, 0xcf35, 0xcf06, 0x4d2f, 0x4e32, 0xcf27, 0x4cf8, 0xccf9, 0xccfe, 0xcd06, 0xcd05, 0xcd02, 0x4e34, 0x4e4a, 0x4e8e, 0xce96, 0xcd07, 0xcd04, 0xcd1a, 0xcd08, 0x4d4b, 0xce8a, 0xcd00, 0xcd09, 0xcdef, 0xcd1c, 0xcd18, 0xcd14, 0xcd15, 0xcd17, 0xcdb1, 0xcd0d, 0xcd1d, 0x4e26, 0xce31, 0xcdb8, 0xcd1b, 0xcd19, 0xcd0b, 0xcd21, 0xcd35, 0xcd16, 0xcd10, 0xcd13, 0x4d64, 0x4dab, 0x4dda, 0xcf10, 0xcd3a, 0x4d32, 0xcd4f, 0xcd31, 0xcdf4, 0xcd44, 0xcd33, 0xcd30, 0xce54, 0xcd42, 0xce10, 0xcd46, 0xcd3c, 0xcd40, 0xcd39, 0xce79, 0x4d4c, 0xcd93, 0xcd3f, 0xcd81, 0xcd68, 0xcd50, 0xcd5d, 0x4e5e, 0xe076, 0xcd70, 0xcd4e, 0x4d75, 0xce6a, 0xcd66, 0xcd62, 0xcd73, 0xcd61, 0x34a7, 0x4d55, 0xcd76, 0xcd5e, 0x4d71, 0xcd82, 0xcd86, 0xcd83, 0xcd79, 0x4d89, 0x4e4d, 0xce61, 0xcd8c, 0xcd8f, 0x4d5b, 0xce27, 0x4d99, 0xce7c, 0xcd88, 0xce3e, 0x4dd2, 0xcdd6, 0xcdbe, 0x4d9a, 0xce8c, 0xcdba, 0xcdcb, 0xcdbd, 0xcdd4, 0xcdc4, 0x4e04, 0xce69, 0xcdad, 0x4dbf, 0xcddc, 0xcdac, 0x4db3, 0xce43, 0x4d2c, 0xcda2, 0xcdaf, 0xcdb9, 0xcda3, 0xcd9c, 0xcdbb, 0xcdb0, 0x4da0, 0xcdd1, 0xcdb4, 0xcdc7, 0xcdd9, 0xcdd7, 0xcdd8, 0xcdec, 0xce9c, 0xcdf9, 0xcdf2, 0xcddd, 0x4dfc, 0xce15, 0xce62, 0xcde6, 0xcd9e, 0xcdde, 0xcdf6, 0x4d64, 0x4dab, 0x4dda, 0xcebf, 0xcdf1, 0xce0b, 0xcde9, 0xcde0, 0xce37, 0xcde8, 0xcde1, 0x4de3, 0xce01, 0xce09, 0xce1b, 0xce1f, 0xce1d, 0xce2b, 0xce17, 0xce1e, 0x4e8f, 0xce92, 0xce2d, 0xce0a, 0xce11, 0xce7d, 0xce39, 0xce35, 0x4d2f, 0x4e32, 0xce9d, 0xce93, 0xce2e, 0xce46, 0x4e45, 0xce70, 0xce88, 0xce5a, 0xce55, 0xce52, 0x4e6e, 0xe7c1, 0xce7e, 0xce70, 0xce6f, 0xce73, 0x4e89, 0xce98, 0x4f3b, 0x4f50, 0xe475, 0xa378, 0xc4e8, 0xc0b0, 0x3b20, 0xcf3c, 0xcf36, 0x3b20, 0xcf3a, 0x46cb, 0x6262, 0xe4b5, 0x44f6, 0xc501, 0x4516, 0xcf4c, 0xba3d, 0x275b, 0x28b0, 0x28b5, 0x28dc, 0xcf4e, 0x4516, 0xcf42, 0x275b, 0x28b0, 0x28b5, 0x28dc, 0xcf48, 0x4f36, 0xe475, 0x4db2, 0x4f52, 0xcf53, 0x4f51, 0xcf53, 0x4f51, 0xcf52, 0x2570, 0x26c9, 0xcf85, 0x4f70, 0xcf78, 0xcf77, 0x3683, 0xdfa0, 0x4f5a, 0xcf78, 0xcf86, 0x208c, 0x69e1, 0xea82, 0xcf80, 0xcf62, 0x4f5a, 0xcf70, 0xcf76, 0x4f88, 0xd98a, 0x21aa, 0xae42, 0xcf57, 0xcf74, 0x4f88, 0x5989, 0xd98a, 0x4f81, 0x4f87, 0x5989, 0xd98a, 0xd288, 0xd288, 0xcf97, 0xcf91, 0xcf90, 0xcf8c, 0xcfa5, 0xcfa8, 0xcfa4, 0xcfa3, 0xcf9f, 0xcfa1, 0x9e49, 0x217b, 0xe90a, 0xcfb9, 0x4fb6, 0xd1bb, 0x4fb4, 0xd1bb, 0xcfae, 0x4fc5, 0xcfe4, 0x4fc4, 0xcfe4, 0xcfe0, 0x9e60, 0xcff9, 0xcffd, 0xcfec, 0xcfc6, 0x4fc4, 0xcfc5, 0xc3a9, 0xcfda, 0xcffa, 0xc796, 0xcfd8, 0xcff1, 0x4e59, 0xe8dc, 0xcfd9, 0xc1ff, 0xb537, 0xd008, 0xd007, 0xd00b, 0xd00a, 0xc54a, 0xc9d0, 0xb7b1, 0xe504, 0xd02e, 0xd5c9, 0xd02c, 0x39c8, 0xe392, 0xd027, 0xd022, 0xbacc, 0xd073, 0xb065, 0xd043, 0xdead, 0x504c, 0x5077, 0xdec4, 0xd076, 0xd03c, 0xd07e, 0x5040, 0x5077, 0xdec4, 0xd079, 0x5068, 0xd06f, 0x2723, 0xa7a9, 0xe5fb, 0x28fb, 0xaa7f, 0x5066, 0x506a, 0xd070, 0x5061, 0x506a, 0xd070, 0x5054, 0xd06f, 0xd075, 0x5061, 0x5066, 0xd070, 0xd06f, 0x2abf, 0xb127, 0xd06f, 0x5054, 0x5068, 0x506b, 0xd06e, 0x5061, 0x5066, 0xd06a, 0xa8f0, 0xd038, 0x242c, 0xd07d, 0xd069, 0xd042, 0x5040, 0x504c, 0xdec4, 0xd04d, 0x242c, 0xd074, 0xd04b, 0x4c9b, 0xd085, 0x4c9b, 0xd083, 0xd088, 0xd087, 0xab8d, 0xd0af, 0x5178, 0xd193, 0xd135, 0xd19a, 0xd0da, 0xc5a3, 0xeaaf, 0x508e, 0xd0bb, 0xa3b7, 0x3bd3, 0xd8ac, 0xe91a, 0xd0af, 0xd14e, 0xd16b, 0xd139, 0x5105, 0x5107, 0xd10b, 0x1f37, 0xa191, 0x51bb, 0xd1bd, 0xb3f9, 0xd0a7, 0xa2dd, 0x585a, 0xeb0d, 0xb727, 0xd156, 0xd1da, 0x511b, 0xde01, 0xd1d9, 0xd1a0, 0x5106, 0xd13a, 0x50c1, 0xd10b, 0x5103, 0xd13a, 0xd0c1, 0xd109, 0xd108, 0x50c1, 0xd105, 0xd1be, 0x51d3, 0x51df, 0xead2, 0xd1cd, 0x5133, 0xd166, 0xd1bf, 0xd1e0, 0xa43b, 0x5173, 0xde0b, 0x50eb, 0xde01, 0xa507, 0x9fee, 0xd131, 0xd12b, 0x2318, 0x5111, 0xd166, 0xd0a1, 0xd161, 0xd1c9, 0x45ee, 0xd0c0, 0x5103, 0xd106, 0xd157, 0xa00e, 0x51c8, 0xd1d8, 0xe183, 0xd0be, 0xd0e8, 0xd13e, 0xd195, 0xd1a3, 0xd136, 0x2318, 0x5111, 0xd133, 0xd0bf, 0xef76, 0xe84b, 0x511a, 0xde0b, 0x50a0, 0xd193, 0xd1a9, 0xd183, 0xea30, 0xeac8, 0xd190, 0xd17d, 0xd182, 0xd1cf, 0x50a0, 0xd178, 0xd158, 0xd0a4, 0xd0f6, 0xd15f, 0xecd5, 0xd17b, 0xe94d, 0x6ac4, 0xead3, 0x4fb4, 0x4fb6, 0x50c6, 0xd1bd, 0x50c6, 0xd1bb, 0xd10d, 0xd113, 0xd1cb, 0x4655, 0xc670, 0x514a, 0xd1d8, 0xd138, 0xd1c0, 0xd110, 0x5191, 0xead5, 0x510f, 0xd1df, 0x514a, 0xd1c8, 0xd0ed, 0xd0ea, 0xd1e2, 0xc66f, 0x510f, 0xd1d3, 0xd114, 0xd1dc, 0xa367, 0x9e34, 0xd1f0, 0xd1ed, 0xcdfb, 0x23f0, 0xa76e, 0xdf3f, 0x9e0e, 0xa174, 0x1e3e, 0x3319, 0xb4e7, 0xb5e7, 0x3368, 0xd20e, 0xd20d, 0xd213, 0xd210, 0x5217, 0x62ea, 0xe4fa, 0x5216, 0x62ea, 0xe4fa, 0xe928, 0xd264, 0xd239, 0x523b, 0xd26b, 0xd266, 0xd259, 0xb7c1, 0xd24a, 0xd229, 0x522e, 0xd26b, 0xd236, 0xd231, 0xba2f, 0x3a79, 0xd26a, 0xd223, 0xd230, 0x3a79, 0xd263, 0x522e, 0xd23b, 0xd271, 0x26cf, 0xd270, 0x5276, 0x5277, 0x5c53, 0xdc54, 0x5273, 0x5277, 0x5c53, 0xdc54, 0x5273, 0x5276, 0x5c53, 0xdc54, 0xd279, 0xd278, 0x49c7, 0x52b8, 0x541f, 0x54fa, 0xd5dd, 0xcbc0, 0x4f8a, 0xcf8b, 0xd28c, 0xd28b, 0xa349, 0xd58c, 0xd56a, 0xd606, 0xd2b2, 0xd2b1, 0x49c7, 0x527a, 0x541f, 0x54b7, 0x54fa, 0x5553, 0xd5dd, 0xa20d, 0xd4ef, 0x1e42, 0xa208, 0xd466, 0xd5f6, 0xd3a7, 0xd407, 0xd4bc, 0xd2e7, 0x26cc, 0x4526, 0x4a4c, 0x5607, 0xd613, 0xd351, 0xd2e2, 0xd2e1, 0xd2ce, 0xa040, 0x55b2, 0xd60b, 0xd393, 0xd3f0, 0x4b35, 0xcbc4, 0x2179, 0xd332, 0xd396, 0xd622, 0xd526, 0xa84b, 0xc162, 0xd354, 0x4e6d, 0xd812, 0xcd65, 0xd438, 0x2179, 0xd30a, 0xd34a, 0xd395, 0xd346, 0x1f9f, 0xd5a6, 0xd2d0, 0xd318, 0x2e84, 0xd38a, 0xd598, 0xd3a2, 0xd558, 0xd4fd, 0xd434, 0xd54e, 0xd588, 0x5415, 0xd5ba, 0x46ea, 0x5569, 0xd62f, 0x3804, 0xb9ae, 0xd477, 0xbece, 0xc296, 0xc192, 0xd541, 0xd5ce, 0xd4c0, 0xd52d, 0xd552, 0xd452, 0xd464, 0x546f, 0x55ac, 0xd5e5, 0xdc46, 0xb357, 0xd510, 0x3d96, 0xd49e, 0x2e84, 0xd358, 0xd2fa, 0xd347, 0xd30e, 0xa50d, 0xd35a, 0xd2cb, 0xd40a, 0xd4ee, 0xd494, 0xd435, 0xd3df, 0xd59f, 0x4372, 0xca6b, 0xd555, 0xc469, 0x6d2c, 0x6daf, 0xee0e, 0x5493, 0xd4f4, 0xd3be, 0xd3bd, 0xd458, 0xb79c, 0x235c, 0xd514, 0xd3b5, 0xa807, 0x234e, 0x2d0b, 0xd550, 0xd2fd, 0xd506, 0x2eb5, 0x544a, 0xd4ed, 0xd445, 0xd2cc, 0xd3b1, 0xd420, 0xd4f1, 0x5360, 0xd5ba, 0xd600, 0xd63f, 0x49c7, 0x527a, 0x52b8, 0x54fa, 0xd5dd, 0xd40c, 0x56cd, 0xd7a2, 0x25b6, 0xc1df, 0xce08, 0xd56d, 0xd5a9, 0x9e07, 0x557f, 0x55fc, 0xd610, 0xd35d, 0xd3b4, 0xd330, 0xd55a, 0xd3f9, 0xa3f6, 0x2eb5, 0x53f4, 0xd4ed, 0xd36d, 0xc740, 0xd3d1, 0xb939, 0xd593, 0x46d6, 0xd4cb, 0xd36e, 0xd2c7, 0xd58a, 0xa85f, 0xb934, 0xd36f, 0xd525, 0xd364, 0xd515, 0xcbc6, 0xd546, 0xd562, 0xd523, 0xd51e, 0xb41c, 0x53bc, 0xd4f4, 0xd3b3, 0x31de, 0x3e95, 0x3fdb, 0xc7c7, 0x3d96, 0xd385, 0xaf60, 0xd533, 0xd2b8, 0xd2cd, 0xd36a, 0xae2d, 0x46d6, 0xd462, 0x4c11, 0xcc14, 0xd5cd, 0xd58a, 0xd63a, 0xd577, 0xe3a3, 0xea40, 0x2eb5, 0x53f4, 0xd44a, 0xd3b2, 0xd2c1, 0xd40d, 0x53bc, 0xd493, 0x49c7, 0x527a, 0x52b8, 0x541f, 0xd5dd, 0xd35c, 0x298d, 0xa9f8, 0xd3f1, 0xd37b, 0xd84a, 0x235c, 0xd3d4, 0xd482, 0xd48c, 0xd48b, 0xd471, 0xd311, 0xd36b, 0xd5bc, 0xd53b, 0xd4a8, 0xeebb, 0x2328, 0xd5cf, 0x4ba6, 0xcc00, 0xd594, 0xd61e, 0xd5fa, 0xd532, 0x55f9, 0xdb6a, 0xd368, 0xd487, 0x554b, 0xd602, 0x554a, 0xd602, 0xd35e, 0x234e, 0xd3ef, 0xd36c, 0xd2b8, 0xd3b8, 0xd35b, 0xd43c, 0xd489, 0xd361, 0xd29c, 0xd427, 0xd580, 0xd604, 0x55f4, 0xd60a, 0xd4e3, 0x5431, 0x55fc, 0xd610, 0xd570, 0xd35f, 0x546a, 0xd4df, 0xd297, 0xa9dc, 0xd460, 0xd537, 0x26ed, 0xa712, 0xd359, 0xd3b6, 0x1f9f, 0xd350, 0xd428, 0x55b0, 0xd60d, 0x536f, 0xd5e5, 0xca17, 0x4c54, 0xd5ea, 0xd5f7, 0x55ab, 0xd60d, 0x52f9, 0xd60b, 0x5360, 0xd415, 0xd52f, 0x4a01, 0x4a3e, 0x4a3f, 0xd5f3, 0x1e1b, 0x23e2, 0x3a37, 0xbb09, 0x201f, 0x2fa3, 0xd024, 0xd4dd, 0xd369, 0x2328, 0xd535, 0xd61a, 0x49c7, 0x527a, 0x52b8, 0x541f, 0xd4fa, 0x563d, 0xd646, 0xcc58, 0x536f, 0xd5ac, 0x4c54, 0xd5ae, 0x4a01, 0x4a3e, 0x4a3f, 0xd5c1, 0x5574, 0xd60a, 0xd2c8, 0xd5af, 0x553c, 0xdb6a, 0xd53a, 0x5431, 0x557f, 0xd610, 0xd41a, 0x554a, 0xd54b, 0xd572, 0xd2a6, 0x4526, 0x4a4c, 0x52cf, 0xd613, 0x5574, 0xd5f4, 0x52f9, 0xd5b2, 0x55ab, 0xd5b0, 0x6a65, 0xeaa5, 0x5431, 0x557f, 0xd5fc, 0x52cf, 0xd607, 0xba97, 0xd5d3, 0xd539, 0xd30f, 0xa170, 0x46ea, 0xd361, 0xd4e0, 0x55df, 0xd646, 0xd41d, 0xa914, 0x55df, 0xd63d, 0x1e55, 0xd65d, 0xd65c, 0xb16e, 0xc307, 0x21e6, 0xa904, 0xa47c, 0x565a, 0xd65b, 0x5657, 0xd65b, 0x5657, 0xd65a, 0xd64f, 0x1e55, 0xd64e, 0xa3f7, 0xd666, 0xd665, 0x9e8f, 0x567a, 0xd7f2, 0xd66f, 0xd7e3, 0xd66c, 0xd768, 0x2b83, 0xd6c7, 0xd66b, 0xd771, 0xe6d6, 0xd766, 0xd806, 0xd755, 0xd7fb, 0xd79e, 0xd801, 0x57a1, 0xd7c1, 0xd739, 0xd72f, 0x5745, 0x5836, 0xd83a, 0xd788, 0xd6d4, 0xd814, 0xd6ba, 0xec8d, 0xd706, 0xd6d4, 0xd6a6, 0x2b83, 0xd675, 0xd831, 0x5424, 0xd7a2, 0x5807, 0xd823, 0xd7f6, 0x5698, 0x56b4, 0xd716, 0xef03, 0xd83b, 0xd7a7, 0xd7c4, 0xd6fa, 0xd7ef, 0xd784, 0xd810, 0xd6f1, 0xd715, 0x5c9d, 0xdd1d, 0xd82d, 0xd6ac, 0xd782, 0xd6fb, 0xd6d4, 0xd778, 0x574b, 0xd81f, 0xd68c, 0xd68b, 0xeb4e, 0x5695, 0x5836, 0xd83a, 0x577f, 0xd805, 0xd7c8, 0xd7ec, 0x5721, 0xd81f, 0xd80d, 0xd680, 0xc32c, 0xd815, 0xd67e, 0xd671, 0xc33f, 0xd67b, 0xd717, 0xd7bb, 0xd811, 0x5747, 0xd805, 0xd7bf, 0xd70b, 0xd6f3, 0xd696, 0xd78e, 0xd78d, 0xd7fb, 0x5827, 0xd839, 0xd682, 0xd68a, 0x5424, 0xd6cd, 0x3594, 0xb59e, 0xd6ef, 0xd7ce, 0xd77c, 0xd780, 0xd68a, 0xd6f0, 0xd7c7, 0xd7c6, 0xd748, 0xd7a8, 0xd828, 0xd80e, 0xd66e, 0xd749, 0xd6f2, 0xd66b, 0xd6cf, 0xd821, 0xd80f, 0x5681, 0xd798, 0xd683, 0x5747, 0xd77f, 0xd67f, 0x56ce, 0xd823, 0xd74e, 0xd7d2, 0xd7f9, 0xd6f4, 0xd77e, 0x4d78, 0x4e6d, 0xd327, 0xd69d, 0xd761, 0x5721, 0xd74b, 0xd7f8, 0xb0f7, 0x56ce, 0xd807, 0x5799, 0xd839, 0xd7cf, 0xd702, 0xd6ca, 0x5695, 0x5745, 0xd83a, 0x5799, 0xd827, 0x5695, 0x5745, 0xd836, 0xd6ee, 0x4383, 0xdc9c, 0xd844, 0xd842, 0xe1c1, 0x1e51, 0x1f17, 0xc73e, 0x24af, 0xa580, 0xd511, 0xb72f, 0x2563, 0x5858, 0xe29c, 0xa40c, 0xadf7, 0x2563, 0x5854, 0xe29c, 0xd0e1, 0x236b, 0xd85e, 0x2675, 0x585f, 0xe053, 0xa1b2, 0x236b, 0xd85b, 0x2675, 0x585c, 0xe053, 0xd864, 0xd863, 0xd8dc, 0xe336, 0xd96f, 0xd89e, 0xa3ea, 0xd8b5, 0xd956, 0x2acb, 0x2b1d, 0xd8ca, 0xd918, 0xae12, 0x596a, 0x67c8, 0xe7e4, 0xd86e, 0x3bd3, 0xd0b2, 0xd972, 0xeef9, 0xd94f, 0x4d5d, 0xd8e4, 0xd87d, 0xd8cc, 0xd8dd, 0xd960, 0xd90c, 0xd885, 0xd8b7, 0x58e1, 0xe1cc, 0xd8e0, 0xd865, 0xd8c5, 0xd8d9, 0x58cf, 0xe1cc, 0xd933, 0xd95d, 0x58b4, 0xd932, 0xd947, 0x5912, 0xd943, 0xb707, 0xd92b, 0xd8f5, 0xd8f4, 0xa236, 0xa90d, 0xb0fc, 0xd8c8, 0xd90f, 0xd90e, 0x58e6, 0xd943, 0xcde5, 0xd886, 0xd938, 0xd94c, 0xd8ed, 0xd8e4, 0xd8e2, 0xd964, 0xd91b, 0x9eb5, 0x58e6, 0xd912, 0xd8e5, 0xd91d, 0xb742, 0xd8af, 0xd974, 0xd884, 0xd8e3, 0xd8c6, 0xd934, 0xd89c, 0xb446, 0xb4f7, 0xd86c, 0xd8ad, 0x5955, 0xd97d, 0xd974, 0x2364, 0xa365, 0x290d, 0xafa9, 0xe738, 0xb838, 0x4f87, 0x4f88, 0xd98a, 0x4f81, 0x4f87, 0x4f88, 0xd989, 0xd9c1, 0xaf01, 0xd9c3, 0xd9c4, 0x599a, 0x59ba, 0xd9c9, 0x5994, 0xd9c5, 0x5993, 0xd9c5, 0x470e, 0xd9c6, 0xd9c7, 0x5990, 0x59ba, 0xd9c9, 0xd9cb, 0xd9cd, 0xd9ce, 0x59bd, 0xd9c8, 0xc779, 0x9eb2, 0xd9ca, 0xd9cf, 0xd9b7, 0xd9d0, 0x59c0, 0xd9c2, 0xd9bc, 0x59b0, 0xd9d1, 0x358d, 0x5990, 0x599a, 0xd9c9, 0xd9b6, 0x59a7, 0xd9c8, 0xd9cc, 0x59b3, 0xd9c2, 0xd98b, 0x59b3, 0xd9c0, 0xd98e, 0xd98f, 0x5993, 0xd994, 0x470e, 0xd996, 0xd998, 0x59a7, 0xd9bd, 0x5990, 0x599a, 0xd9ba, 0xd9ac, 0xd9a1, 0xd9bf, 0xd9a5, 0xd9a6, 0xd9af, 0xd9b2, 0xd9b7, 0xcb4b, 0x59ef, 0xd9f6, 0xb2b5, 0xd9f4, 0xd9e7, 0xd9f8, 0xd9e3, 0x59d7, 0xd9f6, 0xd9de, 0x59d7, 0xd9ef, 0xd9e6, 0x59fd, 0xd9ff, 0x59f9, 0xd9ff, 0x59f9, 0xd9fd, 0x5a01, 0xdba0, 0x5a00, 0xdba0, 0xdba2, 0xdba3, 0xdba1, 0xdbaf, 0xdba7, 0xdba8, 0xdba6, 0xdbb1, 0xdbad, 0xdbaa, 0xdbab, 0x3258, 0xdbac, 0xdbb0, 0xdabe, 0xdbb9, 0xdbb6, 0xdbbc, 0x47e4, 0xc7e7, 0x241f, 0xa656, 0xbb23, 0xdbc0, 0xdbb7, 0xdbbb, 0xdbbf, 0x9fe1, 0xdbbe, 0xdbb8, 0x5b6f, 0xdbd1, 0xdbc9, 0x24ec, 0xdbc3, 0xdbca, 0xbce8, 0x5b49, 0xdbc1, 0xda6c, 0xdbc2, 0x2467, 0xdbcb, 0x246a, 0xa492, 0xa46d, 0xdbb5, 0xdbc8, 0xdbd2, 0xdbcf, 0xdbc4, 0xdbd0, 0xdbc7, 0xdbce, 0xdbc5, 0xdbcd, 0xdb8b, 0xa48f, 0xdbe9, 0xdbe2, 0xdbe3, 0xdbd5, 0xabdf, 0xdbd7, 0xdbe7, 0x5a3d, 0xdbdf, 0xdbe1, 0xdbe0, 0xdbd8, 0x5b6e, 0xdbdd, 0xdbe5, 0xdbe6, 0xdbdc, 0xdbd9, 0xdbd6, 0xdbd4, 0xdbdb, 0xdbd3, 0xa938, 0xdb7d, 0xdb04, 0xafd7, 0xdba4, 0xdbf3, 0xdbf6, 0xdbde, 0x3096, 0xb102, 0x2500, 0xdbf1, 0xdbee, 0xdbed, 0xdbda, 0xdbeb, 0xdbec, 0xdbef, 0xdbf0, 0xdbf5, 0xdbf2, 0x5aac, 0xdbf4, 0x5aaa, 0xdbf4, 0x5b80, 0xdbfb, 0xa531, 0xdc01, 0xdbfe, 0xdc07, 0xdbfd, 0x4ae9, 0xdc0a, 0xda1a, 0xdc03, 0xdc04, 0xdc06, 0xdc08, 0xdbff, 0xdbf7, 0x5aeb, 0xdc0f, 0xdbe4, 0xdbf9, 0xdbfc, 0xdc05, 0xdbba, 0xdc02, 0xdc00, 0xdc0d, 0xdc1e, 0xdc1d, 0x5afc, 0xdc16, 0x5b1a, 0xdc25, 0xdbe8, 0x5b8d, 0xdc14, 0xdc1b, 0xdc10, 0xdb5c, 0x5acc, 0xdc0f, 0x242f, 0x2518, 0x2553, 0x2554, 0x255f, 0xe5d9, 0xdc15, 0xdc18, 0xdbb3, 0x3697, 0xdc19, 0xdc0c, 0x5bbd, 0xe8a8, 0xdbf8, 0xdc1a, 0x5ae0, 0xdc16, 0xdbfa, 0xdc0b, 0xdc12, 0xdc13, 0xda8a, 0xdbcc, 0xdc0e, 0xbb4c, 0xdc1c, 0xdc27, 0xdc11, 0xdc21, 0xdc24, 0xdc26, 0x5ae1, 0xdc25, 0xdbb2, 0xdc22, 0x5b21, 0xdc23, 0x5b20, 0xdc23, 0xdc1f, 0xa546, 0x5b81, 0xdc2a, 0xdc2c, 0x5b7e, 0xdc2b, 0xa5f9, 0xdbb4, 0xdc28, 0x247c, 0xa611, 0xdc29, 0x24d7, 0xa629, 0x5a3c, 0xdbc1, 0xdbb9, 0xdc32, 0xdba5, 0xa642, 0x5b5b, 0xdc2e, 0xdbc6, 0xdc2f, 0xdc2d, 0x5b56, 0xdc2e, 0x5ae9, 0xdc31, 0xa66a, 0x553c, 0xd5f9, 0x2661, 0xdc35, 0xbbc1, 0x5a71, 0xdbdd, 0x5a33, 0xdbd1, 0xdbae, 0xa584, 0x5b93, 0xdba9, 0xdc34, 0xb2a4, 0xdbea, 0x46d1, 0xc6e3, 0xda89, 0x5b2d, 0xdc2b, 0x5aad, 0xdbfb, 0x5b2b, 0xdc2a, 0x5b9a, 0xdd5e, 0xdc09, 0x23d8, 0xa909, 0xda5f, 0x2bb4, 0xe1bc, 0x5ae4, 0xdc14, 0x1ec7, 0x5b90, 0xe6e0, 0x5b8e, 0xe6e0, 0xdc17, 0x5b72, 0xdba9, 0xdc30, 0xdc36, 0x5b83, 0xdd5e, 0xdc20, 0xdc33, 0x5a00, 0xda01, 0xda08, 0xda02, 0xda03, 0xda8d, 0xdb4f, 0xda10, 0xda0c, 0xda0e, 0x5b72, 0xdb93, 0xda15, 0xda16, 0x3258, 0xda17, 0xda13, 0xdb70, 0xda0a, 0xda18, 0xda12, 0xdb1b, 0xdaf1, 0xdb33, 0xda4e, 0xda1d, 0xda25, 0xda31, 0x5a1b, 0xdb4c, 0xdad6, 0xda29, 0xda1f, 0x5af7, 0xe8a8, 0xda2d, 0xda2a, 0xda23, 0x5a3c, 0xdb49, 0xda41, 0xda36, 0xda55, 0xda5b, 0xdb58, 0xda57, 0xda50, 0xda34, 0xda3a, 0xda46, 0xdb05, 0xda5e, 0xda58, 0xda54, 0xda56, 0x5a33, 0xdb6f, 0xda52, 0xda86, 0xda84, 0xda66, 0xda7f, 0xda69, 0xda70, 0xda7c, 0xdaa0, 0xda85, 0xda75, 0x5a71, 0xdb6e, 0xda95, 0xda6c, 0xda6e, 0xda6d, 0xda62, 0xda63, 0xdacd, 0xda72, 0xda73, 0xda6b, 0xdae2, 0xda61, 0xdb78, 0xdaa1, 0xdaa3, 0xda9e, 0xda9a, 0x309e, 0xdaa4, 0xdaa5, 0x2500, 0xda98, 0xdaa8, 0xda91, 0x5aaa, 0xdaac, 0xdaa6, 0xda92, 0xdacb, 0xdaf8, 0xdacf, 0xdafe, 0x5aad, 0xdb80, 0xdad1, 0xdab9, 0xdab2, 0xdac9, 0xdadb, 0xdab0, 0xdad7, 0xdabf, 0xdac2, 0xdad2, 0xdac4, 0xdab6, 0xdac7, 0xdb85, 0x4ae9, 0xdabc, 0xdb00, 0xdaf6, 0xdadc, 0xdb0a, 0x5acc, 0xdaeb, 0xdae7, 0xdb14, 0xdb01, 0xdb02, 0x5ae4, 0xdb8d, 0xdaed, 0x5ae0, 0xdafc, 0xdb92, 0xdaee, 0x3697, 0xdaf3, 0xdafa, 0xdae6, 0xdb0e, 0xdade, 0xdadd, 0xdb28, 0xdb9c, 0xdb16, 0xdb1d, 0x5b20, 0xdb21, 0xdb17, 0x5ae1, 0xdb1a, 0xdb19, 0xdb10, 0xdb39, 0xdb3e, 0x5b2b, 0xdb81, 0x5b2d, 0xdb7e, 0xdb2c, 0xdb5a, 0x5b56, 0xdb5b, 0xdb59, 0xdb95, 0xdb5c, 0xdb4e, 0xdb9e, 0xdb74, 0xdb6b, 0xdb96, 0x4a40, 0xccd3, 0xac88, 0x3e13, 0x3eaa, 0xdc40, 0x3e13, 0x3eaa, 0xdc3f, 0xd373, 0xac82, 0x1e30, 0x5c50, 0x673b, 0xe74a, 0x4ad6, 0xcaea, 0x1e30, 0x5c4a, 0x673b, 0xe74a, 0x5273, 0x5276, 0x5277, 0xdc54, 0x5273, 0x5276, 0x5277, 0xdc53, 0xdc5a, 0xdc58, 0xdc87, 0x9e88, 0xc32a, 0xdc76, 0xdc6e, 0xc2b2, 0xc2b4, 0xdc94, 0xc2c9, 0xef26, 0xdc64, 0xc2e2, 0xc2b4, 0xc683, 0x42f8, 0xc30d, 0xc30a, 0xc32f, 0xc32b, 0xdc7c, 0xc34f, 0xc37e, 0x4383, 0xd83c, 0x56fd, 0xdd1d, 0xdd1e, 0x2458, 0x24e1, 0xdd20, 0xdd1f, 0x321d, 0xdd22, 0xdd21, 0xdd2b, 0xdd27, 0xdd29, 0xdd2a, 0xdd2f, 0xdd23, 0x2295, 0x5cea, 0xdd28, 0x2f10, 0x5cb3, 0xdd30, 0xdd2e, 0xdd33, 0xdd40, 0x2f10, 0x5cae, 0xdd30, 0xdd35, 0xdd2c, 0x9e70, 0xdd37, 0xdd36, 0xdd39, 0xdd34, 0xdd3b, 0xdd38, 0xdd3a, 0xdd32, 0xdd42, 0xdd41, 0xdd3f, 0xdd45, 0xdd44, 0xdd3e, 0x2379, 0xb064, 0xdd3c, 0xc68e, 0x5d13, 0xdd43, 0x5ce4, 0xdd31, 0xdd48, 0xdd4a, 0x2bbe, 0xdcd4, 0x2bbe, 0xdcd3, 0xdd47, 0xdd4a, 0xdd52, 0xdd49, 0x5d0a, 0xdd5e, 0xdd50, 0xdd4f, 0xdd54, 0x4d9a, 0x4e8c, 0xdd53, 0x5d12, 0xdd24, 0x2356, 0xa8f2, 0x5cce, 0xdd31, 0xdd4b, 0xdd55, 0x2295, 0x5cad, 0xdd28, 0xdd4d, 0xdd26, 0xdd4c, 0xa046, 0x5d56, 0xe83c, 0xdd57, 0x5d4d, 0xef4e, 0xdd5a, 0xdd59, 0xdd2d, 0xdd5b, 0xdd5c, 0x3557, 0xdd25, 0xdd3d, 0xdd58, 0xdd5f, 0xdd60, 0x5cdb, 0xdd5e, 0x2050, 0x5d17, 0xdd5d, 0xdd61, 0xdd62, 0xdd46, 0x5ce2, 0xdd24, 0x5ccd, 0xdd43, 0xdd51, 0xdd4e, 0x2050, 0x5d0b, 0xdd5d, 0xdd63, 0xdd43, 0x56fd, 0xdc9d, 0xdc9e, 0xdca0, 0x2458, 0x24e1, 0xdc9f, 0xdca2, 0x321d, 0xdca1, 0xdcac, 0x5ce2, 0xdd12, 0x3557, 0xdd01, 0xdcec, 0xdca8, 0x5cad, 0xdcea, 0xdca9, 0xdcaa, 0xdca7, 0xdcb6, 0xdcfc, 0xdcaf, 0xdcab, 0x2f10, 0x5cae, 0xdcb3, 0x5cce, 0xdce4, 0xdcc1, 0xdcb0, 0xdcbc, 0xdcb4, 0xdcba, 0xdcb8, 0xdcbf, 0xdcbb, 0xdcc0, 0xdcbd, 0xdcca, 0xdd04, 0xdcc8, 0xdcc4, 0xdcb2, 0xdcc3, 0xdcc2, 0x5ccd, 0x5d13, 0xdd1c, 0xdcc7, 0xdcc5, 0xdd10, 0xdcd5, 0xdcd1, 0xdcda, 0x5cd2, 0xdcd6, 0xdce6, 0xdced, 0x5ceb, 0x5cf7, 0xef4e, 0xdd16, 0xdcde, 0xdcdc, 0xdd14, 0xdcd9, 0xdce1, 0xdce0, 0xdce7, 0x5cf4, 0xe83c, 0xdcf5, 0xdd05, 0xdcfb, 0xdcfa, 0xdcfd, 0xdcfe, 0x2050, 0x5d0b, 0xdd17, 0x5b83, 0x5b9a, 0x5cdb, 0xdd0a, 0xdd07, 0xdd08, 0xdd0d, 0xdd0f, 0xdd1b, 0x407b, 0xc0fe, 0xdd6c, 0xdd6a, 0xdd71, 0xdd70, 0xdd99, 0xdd95, 0x2c1f, 0x2c20, 0x6bae, 0x6c7b, 0xec9c, 0xdfdf, 0xdd82, 0xdd81, 0xdda8, 0xdda6, 0xdd76, 0xdd75, 0xdd91, 0xdd8b, 0xde7a, 0x5dc3, 0xde8d, 0xddb2, 0xddb1, 0xde89, 0xde38, 0x5daf, 0xde8d, 0xde4c, 0xde92, 0xdff9, 0xddfa, 0xde29, 0xde10, 0xde82, 0xde7a, 0xde55, 0xde9a, 0xdde5, 0xde8b, 0xac40, 0x50eb, 0xd11b, 0x458e, 0xc58f, 0xde34, 0x511a, 0xd173, 0xde8a, 0xddf5, 0xde64, 0xddf4, 0xde64, 0xc8b0, 0xde93, 0xde91, 0xcaac, 0xde0a, 0xddbb, 0xde4f, 0x5e79, 0xdea2, 0xddc4, 0xde44, 0xdea1, 0xde63, 0xddf8, 0xdff9, 0xde52, 0x5e28, 0xde2a, 0x5e8a, 0xde95, 0x5e4b, 0xdea2, 0x5dac, 0xddf7, 0xdea5, 0xddf6, 0xde84, 0xde83, 0xa8b8, 0xddb8, 0x5e0c, 0x5e70, 0xde95, 0x5dfb, 0xe6ae, 0x5daf, 0xddc3, 0xdeaa, 0xde2f, 0xddde, 0xde2c, 0x5e70, 0xde8a, 0xdeaa, 0xddf9, 0xdea6, 0xde51, 0x5e4b, 0xde79, 0xde7f, 0xde9c, 0x5e8f, 0xde99, 0xdeb3, 0xd03d, 0xdec0, 0x1f53, 0x5ec6, 0x6ab5, 0xead4, 0xdeb2, 0xdeb1, 0xdeac, 0xdeaf, 0x5040, 0x504c, 0xd077, 0x1f53, 0x5eb0, 0x6ab5, 0xead4, 0xdf66, 0xdf67, 0xdf68, 0xa19b, 0xdf6a, 0xdf69, 0xdf6b, 0x3799, 0x5ef6, 0xdf6d, 0xdf6f, 0x5f49, 0xdf6c, 0x5f5f, 0xdf70, 0xdf77, 0xdf78, 0x5f29, 0xdf88, 0xdf71, 0x3799, 0x5edb, 0xdf6d, 0xdf74, 0xdf75, 0xdf7a, 0xdf72, 0xdf76, 0x5f15, 0xdf7b, 0xdf7c, 0xdf5c, 0xdf83, 0xdf82, 0xdf81, 0xdf80, 0xdf7d, 0xdf7e, 0x5f1b, 0xdf86, 0xdf36, 0x5f19, 0xdf84, 0xb33d, 0x1fcc, 0xdf85, 0x5efd, 0xdf7b, 0x5f12, 0xdf84, 0x5f0c, 0xdf86, 0x5f3a, 0xdf8e, 0xdf89, 0xdf8b, 0xdf8d, 0xdf57, 0xdf8a, 0xdf87, 0x5ef0, 0xdf88, 0xdf6e, 0xdf8c, 0xdf6f, 0xdf91, 0xdf8f, 0xdf0f, 0xdf93, 0x5f1c, 0xdf8e, 0xdf90, 0xdf92, 0xdf97, 0xd206, 0x67b1, 0x67dc, 0xe7ec, 0xbbc2, 0x5f96, 0xe38b, 0xdf95, 0xdf98, 0x5ee2, 0xdf6c, 0xdf99, 0xdf7f, 0xdf9a, 0xdf21, 0xdf00, 0x5ee3, 0xdf70, 0xdf94, 0xdf79, 0xdf73, 0xdeca, 0xdecb, 0xdecc, 0xded2, 0xded1, 0xded4, 0x5ee2, 0xdf49, 0x3799, 0x5edb, 0xdef6, 0xdf2a, 0x5edf, 0xdf2d, 0x5ee3, 0xdf5f, 0xdef2, 0xdefb, 0xdf64, 0xdef8, 0xdef9, 0xdefc, 0xdee4, 0xdeeb, 0xdf62, 0xdefa, 0x5efd, 0xdf15, 0xdefe, 0xdf09, 0xdf0a, 0xdf4e, 0xdf08, 0xdf07, 0xdf05, 0xdf03, 0x5f12, 0xdf19, 0xdf14, 0x5f0c, 0xdf1b, 0xdf26, 0x5ef0, 0xdf29, 0xdf1d, 0xdf25, 0xdf1e, 0xdf2c, 0xdf1f, 0x5f1c, 0xdf3a, 0xdf33, 0xdf3b, 0xdf2f, 0xdf3c, 0xdf38, 0xdf61, 0xdf45, 0xdf44, 0xdf3e, 0xdf46, 0xdf4d, 0xdf54, 0x5f9e, 0x5fa4, 0xdfad, 0x5f9d, 0x5fa4, 0xdfad, 0xe5e2, 0x3683, 0xcf6a, 0x2f01, 0x5fa9, 0xdfaf, 0x5f9d, 0x5f9e, 0xdfad, 0xa29e, 0x2f01, 0xdfa8, 0x2f01, 0xdfa7, 0x2f01, 0x5fa1, 0xdfaf, 0xdfae, 0x5f9d, 0x5f9e, 0xdfa4, 0xdfab, 0x2f01, 0x5fa1, 0xdfa9, 0xa19c, 0xdfb6, 0xdfb5, 0x5fba, 0x6089, 0xe08a, 0x5fb9, 0x6089, 0xe08a, 0xe07c, 0x6039, 0xe054, 0xe077, 0xdfc3, 0xdfc2, 0xdfe4, 0xe04e, 0xe081, 0x231d, 0xae00, 0xe04b, 0xe084, 0xe019, 0xe032, 0xe060, 0xe055, 0xe023, 0x5d7f, 0x6045, 0xe072, 0xdfc6, 0xe008, 0xe087, 0xaef8, 0xaf80, 0xe003, 0x2f84, 0x2f91, 0xe015, 0x26d8, 0x26de, 0x26ec, 0x2efb, 0x2efd, 0xe025, 0x5de1, 0xde5f, 0x1e43, 0xaefc, 0xe069, 0xdfef, 0xdfe5, 0xe078, 0xe05c, 0xe052, 0x6013, 0xe05e, 0x6012, 0xe05e, 0x2f84, 0x2f91, 0xdff3, 0xdfd9, 0xdfde, 0x26d8, 0x26de, 0x26ec, 0x2efb, 0x2efd, 0xdff4, 0xe090, 0xa954, 0x3e38, 0xe04a, 0xa468, 0xdfdb, 0x5fbe, 0xe054, 0xe060, 0xe08f, 0xa06a, 0xe06f, 0x5fdf, 0xe072, 0x1fa6, 0xa075, 0x3e38, 0xe030, 0xdfd0, 0xdfc7, 0xe00e, 0x2675, 0x585c, 0xd85f, 0x5fbe, 0xe039, 0xdfdd, 0xe07a, 0xe065, 0xe00a, 0x6012, 0xe013, 0x5fdc, 0xe03a, 0xbeaf, 0xe059, 0xe002, 0xe041, 0x5fdf, 0xe045, 0xced5, 0xdfc1, 0xe009, 0xe057, 0xdfbd, 0xdfc8, 0xdfd8, 0xdfe9, 0x5fb9, 0x5fba, 0xe08a, 0x5fb9, 0x5fba, 0xe089, 0xe03b, 0xe026, 0xe61d, 0xe127, 0xe13a, 0xe0ab, 0xb751, 0xe0a6, 0xe114, 0xe0f5, 0xe112, 0xe134, 0x23b8, 0x6130, 0xe6a3, 0xe0cc, 0x3b1d, 0x6b30, 0xeb31, 0xe0bd, 0x60d2, 0xe0de, 0xe0df, 0xe136, 0xe12d, 0x60ce, 0xe0de, 0xe106, 0x60ce, 0xe0d2, 0xe0cf, 0xe148, 0xe116, 0xe0f6, 0xe0ae, 0xe0e8, 0x1e61, 0x6109, 0x610a, 0xe115, 0xe132, 0xe0d3, 0x1e61, 0x60f7, 0x610a, 0xe115, 0x1e61, 0x60f7, 0x6109, 0xe115, 0xe0b9, 0xe0ac, 0x1e61, 0x60f7, 0x6109, 0xe10a, 0xe0e7, 0xe093, 0xe0d1, 0x23b8, 0x60bb, 0xe6a3, 0xe0f8, 0xe0ba, 0xe0d0, 0xe146, 0xe09d, 0xe147, 0x2398, 0x28e5, 0xaedb, 0xe147, 0xe137, 0x613c, 0xe142, 0xe0e6, 0x9e23, 0xe194, 0xe189, 0xb59f, 0x6196, 0xe19e, 0xe18b, 0x467a, 0x6197, 0xe1b1, 0x616c, 0xe1bb, 0xa5e0, 0x6167, 0xe1bb, 0x61a4, 0xe1ac, 0xe1c5, 0xe1c3, 0x61b8, 0xe1c0, 0xd14c, 0xe195, 0xe154, 0xe91f, 0xe162, 0x24b8, 0xee79, 0xe14b, 0xe187, 0x615d, 0xe19e, 0x467a, 0x6166, 0xe1b1, 0xb9bc, 0x1e11, 0xeb57, 0x615d, 0xe196, 0x6171, 0xe1ac, 0x233b, 0xbbc9, 0x6171, 0xe1a4, 0x467a, 0x6166, 0xe197, 0x617f, 0xe1c0, 0x6167, 0xe16c, 0x2bb4, 0xdb8c, 0x617f, 0xe1b8, 0xd845, 0xe17e, 0xe17d, 0x2bc0, 0xb3a1, 0x61ca, 0xe1cb, 0x61c8, 0xe1cb, 0x61c8, 0xe1ca, 0x58cf, 0xd8e1, 0x27dc, 0xa8c4, 0xa398, 0x61d2, 0xe485, 0x61d1, 0xe485, 0x61da, 0x61fb, 0xe486, 0xe487, 0xe48c, 0x2200, 0xa202, 0xe48a, 0xe489, 0xe48b, 0x61d3, 0xe1fb, 0xe1e1, 0xe488, 0x1e71, 0x9e82, 0xe1dc, 0x621f, 0xe493, 0xe490, 0xb263, 0xe48f, 0xe492, 0xe2e9, 0x2251, 0x2263, 0x2271, 0x228d, 0x228e, 0x2292, 0x2294, 0xe1fc, 0xe497, 0xe48d, 0xe495, 0xe48e, 0x61d3, 0x61da, 0xe486, 0x2251, 0x2263, 0x2271, 0x228d, 0x228e, 0x2292, 0x2294, 0xe1f0, 0xe4af, 0xe4ab, 0xe498, 0xe4ad, 0xe4a5, 0x625b, 0xe4c5, 0xe49a, 0xe4a0, 0xe49d, 0x6264, 0xe4a9, 0xe4a4, 0xe4a3, 0xe491, 0xe49e, 0xe4ae, 0x629e, 0xe4a7, 0xe1e3, 0xe49f, 0xe499, 0xe4ac, 0xe49b, 0xe4aa, 0xe3ba, 0x4089, 0xe46a, 0x6438, 0xe4ce, 0x6268, 0xe4cc, 0xe4c8, 0xe4b6, 0xe4c3, 0xe4b4, 0xe4b9, 0xe4cd, 0xe4b0, 0xe4b8, 0xe4c0, 0xe4bf, 0xe4be, 0x6295, 0x62e8, 0x6421, 0x6435, 0xe4c1, 0xe49c, 0xe4bb, 0xe4ca, 0xe4ca, 0xe4c9, 0x2228, 0xe4c7, 0xe4cb, 0xe4c2, 0xe4b7, 0xe4b3, 0xe4c6, 0x6206, 0xe4c5, 0xe4ba, 0xe348, 0x46cb, 0x4f3d, 0xe4b5, 0x620e, 0xe4a9, 0xe4b2, 0x622e, 0xe4cc, 0xe4bc, 0xe4bd, 0x47ff, 0x483f, 0x4926, 0x62db, 0xe45b, 0x6373, 0x6451, 0x6452, 0xe46c, 0xe4cf, 0xe4f0, 0xe4d2, 0xe4ec, 0xe4ea, 0xe4f6, 0xe4f3, 0xe4dc, 0xe4da, 0xe4e3, 0xe4e8, 0x6244, 0x62e8, 0x6421, 0xe435, 0xe4e2, 0xe4ed, 0x6443, 0xe4eb, 0x62bd, 0xe4e6, 0x2563, 0x5854, 0xd858, 0xe21e, 0xe4d1, 0xe4f7, 0xe4f1, 0xe4df, 0xe4f5, 0xe4e5, 0xe4d5, 0xe4ef, 0xe4d0, 0x6322, 0xe4b1, 0xe47e, 0xe4de, 0xc10a, 0x62ed, 0xe510, 0x4107, 0xe500, 0xe508, 0xe511, 0xe509, 0xe29b, 0xe4dd, 0xe512, 0xe50c, 0xe4a1, 0xe4e4, 0xe4d7, 0xe50b, 0xe4fb, 0x47ff, 0x483f, 0x4926, 0x6271, 0xe45b, 0xe50a, 0x646f, 0xe513, 0x6381, 0xe4d8, 0xe504, 0xe503, 0xe514, 0x6244, 0x6295, 0x6421, 0x6435, 0xe507, 0x61ef, 0xe4d3, 0x5216, 0x5217, 0xe4fa, 0x62b3, 0xe510, 0xe4d6, 0xe506, 0xe502, 0xe4fd, 0x6444, 0xe4f8, 0xe50d, 0xe52f, 0xe4a2, 0xe51e, 0x2f55, 0xe332, 0xe516, 0xe52b, 0xe529, 0x641a, 0xe4d4, 0xe525, 0xe515, 0xe51f, 0xe524, 0x637f, 0xe531, 0xe4ee, 0xe51b, 0xe52c, 0xe52d, 0xe51c, 0x62ad, 0xe4b1, 0xe526, 0xe51a, 0xe520, 0xe521, 0x40bc, 0x4149, 0xe34a, 0xe522, 0xe519, 0x2f55, 0xe304, 0xe530, 0xd868, 0xe486, 0xe4fc, 0xe3e8, 0xe51d, 0xe528, 0xe52a, 0xe494, 0xe534, 0x6260, 0xe533, 0x40bc, 0x4149, 0xe32c, 0xe505, 0xe540, 0xe537, 0xe4e1, 0xe496, 0x4145, 0xe53b, 0xe4ff, 0x6445, 0xe53d, 0xe538, 0xe532, 0xe518, 0xe539, 0x63d3, 0xe52a, 0xe53e, 0x6274, 0x6451, 0x6452, 0xe46c, 0xe52e, 0xe536, 0xe517, 0x649f, 0xe53a, 0xe319, 0xe2e3, 0xe541, 0xe53f, 0xe545, 0xe551, 0xdf44, 0x642e, 0xe570, 0x39c8, 0xd028, 0x3eb6, 0xc194, 0x63c1, 0xe501, 0xb7aa, 0xe549, 0xe524, 0xe548, 0x6543, 0xef12, 0xe4a8, 0xd4e5, 0x6402, 0xe54f, 0xe4e0, 0xe4e9, 0xe53c, 0xe550, 0x63ae, 0xe547, 0x63ad, 0xe547, 0xe552, 0xe54d, 0xe553, 0xe54c, 0xe228, 0xe54e, 0xe396, 0xe55e, 0xe55f, 0xe4fe, 0xe546, 0xe559, 0xe560, 0xe55d, 0xe36f, 0xe4ff, 0xe535, 0xe557, 0xe558, 0xe55b, 0x222c, 0x2257, 0x2277, 0xe4f2, 0x434d, 0xe55c, 0xe556, 0xe542, 0x63fd, 0xe508, 0xe33e, 0xe55a, 0xe4e7, 0xe564, 0xe56a, 0x63e5, 0xe508, 0x63a6, 0xe54f, 0xe4d9, 0xe4f4, 0xe563, 0xe4f9, 0xe566, 0xe561, 0xe50f, 0xe49f, 0xe56b, 0x630f, 0xe4d4, 0x6481, 0xe562, 0xe568, 0x6244, 0x6295, 0x62e8, 0x6435, 0xe4c1, 0xe50e, 0xe50f, 0xe544, 0xe54c, 0x638c, 0xe570, 0xe56f, 0xe56d, 0x6244, 0x6295, 0x62e8, 0x6421, 0xe4c1, 0xe56e, 0x622c, 0xe4ce, 0xe4db, 0xe571, 0x629a, 0xe4eb, 0x62f3, 0xe4f8, 0xe360, 0xe56c, 0xe554, 0x6274, 0x6373, 0x6452, 0xe46c, 0x6274, 0x6373, 0x6451, 0xe46c, 0xb7aa, 0xe572, 0xe527, 0x647d, 0xe4bb, 0x47ff, 0x483f, 0x4926, 0x6271, 0xe2db, 0x6909, 0xe95f, 0xe574, 0xe4c4, 0xe573, 0xa228, 0xe565, 0x4089, 0xe229, 0x6274, 0x6373, 0x6451, 0xe452, 0xe567, 0xe2df, 0xe4a5, 0xe575, 0xe576, 0x4f36, 0xcf50, 0xe54a, 0xe569, 0xe523, 0x645a, 0xe4bb, 0xe2ae, 0xa1ff, 0x641d, 0xe562, 0xe54b, 0x61d1, 0xe1d2, 0x61d3, 0x61fb, 0xe337, 0xe1d4, 0xe1dd, 0xe1d8, 0xe1d7, 0xe1d9, 0xe1d5, 0xe1f7, 0xe1fa, 0xe1e7, 0xe1e4, 0xe212, 0xe1e9, 0xe1e3, 0xe346, 0xe1f9, 0xe35a, 0xe1f5, 0xe203, 0xe223, 0xe208, 0xe226, 0xe245, 0xe20d, 0xe214, 0x6221, 0x637e, 0x6418, 0xe53a, 0xe209, 0xe2c7, 0xe2fc, 0xe211, 0xe210, 0x6205, 0xe470, 0xbb3d, 0xe21e, 0xe3a2, 0x620e, 0xe264, 0xe227, 0xe201, 0xe225, 0xe204, 0xe215, 0xe200, 0xe23a, 0x62ad, 0xe322, 0xe266, 0xe257, 0xe237, 0x46cb, 0x4f3d, 0xe262, 0xe233, 0xe255, 0xe23d, 0xe238, 0xe25e, 0x6246, 0x645a, 0xe47d, 0xe26c, 0xe26d, 0xe240, 0xe23f, 0xe23e, 0x6244, 0x6421, 0xe435, 0xe251, 0xe234, 0xe460, 0x6206, 0xe25b, 0xe25a, 0x2228, 0xe24b, 0xe230, 0xe249, 0x6247, 0xe248, 0xe24d, 0x622e, 0xe268, 0xe239, 0x622c, 0xe438, 0xe276, 0xe2ac, 0xe2a0, 0xe27a, 0xe2e9, 0x630f, 0xe41a, 0xe2aa, 0xe2ee, 0xe2cf, 0xe2e3, 0xe403, 0xe28d, 0xe43a, 0xe285, 0xe2c1, 0xe2b1, 0xe2a6, 0xe3a7, 0xe358, 0xe296, 0xe291, 0xe2cc, 0xe2a9, 0xe29b, 0xe3f5, 0xe293, 0xe3a9, 0xe27f, 0x629a, 0xe443, 0xe27b, 0xe298, 0xe31a, 0xe2ab, 0xe278, 0xe2a5, 0x222c, 0x2257, 0x2277, 0xe3df, 0xe283, 0xe40b, 0xe2a8, 0xe280, 0xe2a3, 0x62f3, 0xe444, 0xe412, 0x5216, 0x5217, 0xe2ea, 0xe2d9, 0xe338, 0xe2f1, 0xe3c8, 0x635e, 0xe3d7, 0xe2b7, 0xe396, 0xe2f0, 0xe2e5, 0x5021, 0xe2e4, 0xe34b, 0xe2ef, 0xe2e8, 0x62b9, 0x63e5, 0xe3fd, 0xe2bc, 0xe2dd, 0xe2d2, 0xe2c5, 0xe2f6, 0xe426, 0x6417, 0xe427, 0x62b3, 0xe2ed, 0xe2bb, 0xe2c3, 0xe2df, 0xe2e6, 0xe312, 0xe306, 0xe37a, 0xe369, 0xe32f, 0xe328, 0xe31b, 0xe321, 0xe340, 0xe301, 0xe315, 0xe329, 0xe32b, 0xe32e, 0xe47c, 0x6318, 0xe39a, 0xe310, 0xe326, 0xe455, 0xe341, 0xe308, 0x6343, 0xe36f, 0xe307, 0xe31f, 0xe320, 0xe375, 0xe2f8, 0xe333, 0xe319, 0xe365, 0xe348, 0xe347, 0xe3d8, 0xe376, 0xe354, 0xe364, 0xe36c, 0x637e, 0xe49f, 0xe35b, 0xe3aa, 0xe360, 0xe370, 0xe384, 0xe34d, 0xe382, 0xe3e4, 0xe3a1, 0xe428, 0xe387, 0xe3cc, 0x63ad, 0xe3ae, 0xe39b, 0xe398, 0xe477, 0xe482, 0x63b8, 0xe42b, 0xe3b3, 0xe3bf, 0x63a6, 0xe402, 0xe3ac, 0xe38a, 0xe3b0, 0xe3b5, 0xe44c, 0xe3e2, 0xe3dc, 0xe3dd, 0xe3cd, 0xe3f0, 0xe3de, 0xe3e1, 0xe3d1, 0xe3c3, 0xe3c7, 0xe3d0, 0xe414, 0x641d, 0xe481, 0xe410, 0xe3f7, 0xe465, 0xe413, 0xe46d, 0xe420, 0xe479, 0xe3f9, 0xe419, 0xe44a, 0xe433, 0xe436, 0xe432, 0x638c, 0xe42e, 0xe43f, 0xe454, 0xe463, 0xe45e, 0xe471, 0xe472, 0x1ee7, 0x214f, 0x6578, 0xe57f, 0x1ee7, 0x214f, 0x6577, 0xe57f, 0x1e45, 0x9e46, 0x1ee7, 0x214f, 0x6577, 0xe578, 0xe5e8, 0xe5e9, 0xe5ea, 0xe5eb, 0x6589, 0xe5ed, 0xe5ec, 0x6587, 0xe5ed, 0xaf00, 0xe5f6, 0xe5f3, 0x65a0, 0xe5f0, 0x6592, 0xe5f2, 0x6591, 0xe5f2, 0xe5f4, 0xe5f5, 0xe5f8, 0x65f9, 0xeb27, 0x658f, 0xe5f0, 0xe602, 0x2173, 0x65d7, 0xe5dc, 0xe601, 0xa408, 0xe600, 0xa4c4, 0xe5fa, 0xe5fd, 0xe603, 0xe606, 0xe5fe, 0x65b2, 0xe605, 0x65b1, 0xe605, 0x65c3, 0xe612, 0xe60a, 0x2266, 0xe609, 0xe60e, 0xe60f, 0xe60d, 0xe608, 0xe60c, 0x65b4, 0xe612, 0xb77f, 0xb697, 0xe5f1, 0x3ff6, 0xe614, 0xe615, 0xe611, 0xe607, 0xe617, 0xe618, 0xe5ff, 0xe616, 0xe619, 0xe5ef, 0x2173, 0x65a2, 0xe5dc, 0x3597, 0x6b25, 0x6b26, 0x6b2a, 0xeb2d, 0x242f, 0x2518, 0x2553, 0x2554, 0x255f, 0xdaec, 0x2173, 0x65a2, 0xe5d7, 0xe61a, 0xe613, 0xe610, 0xdf9f, 0xe61b, 0xe5fc, 0xe580, 0xe582, 0xe583, 0xe586, 0xe588, 0x6587, 0xe589, 0xa54f, 0xe5d6, 0x658f, 0xe5a0, 0xe5c8, 0x6591, 0xe592, 0xe58e, 0xe593, 0xe594, 0xe58c, 0xb0b6, 0xe598, 0x6599, 0xeb27, 0xe5a8, 0xd05e, 0xe5e5, 0xe5a9, 0xe5ad, 0xe5d3, 0xe5a5, 0xe5a3, 0xe5a1, 0xe5ab, 0xeb2e, 0x65b1, 0xe5b2, 0xe5ac, 0xe5cd, 0xe5be, 0x2266, 0xe5b9, 0xe5b6, 0xeb29, 0xe5bf, 0xe5bd, 0xe5bb, 0xe5bc, 0xe5e1, 0xe5cc, 0x65b4, 0xe5c3, 0xe5e0, 0x3ff6, 0xe5ca, 0xe5cb, 0xe5d4, 0xe5d0, 0xe5d2, 0xe5d5, 0x65de, 0xeb2b, 0xe5e4, 0xe61d, 0x6091, 0xe61c, 0xe68a, 0x1f8c, 0x6634, 0x6670, 0xe682, 0x6633, 0xe67d, 0xe638, 0x2347, 0xe65e, 0x2742, 0xac85, 0x274f, 0xa76f, 0xa751, 0xa740, 0xca7d, 0x6626, 0xe67d, 0x1f8c, 0x6625, 0x6670, 0xe682, 0xe663, 0x2826, 0xe68e, 0xe628, 0xbcae, 0x2768, 0xe641, 0x2768, 0xe640, 0xe69b, 0xe678, 0xe6b4, 0xe673, 0xe658, 0xa905, 0x665c, 0x665d, 0xe67f, 0xa7c8, 0xe649, 0x6655, 0xe67f, 0xe655, 0x2347, 0xe629, 0xaf8f, 0x2866, 0xe635, 0xe677, 0x2c9b, 0x2cf6, 0x2d8b, 0x2d8c, 0x2db9, 0x669d, 0xe6af, 0xe695, 0x4906, 0x667a, 0xe6aa, 0x1f8c, 0x6625, 0x6634, 0xe682, 0xe648, 0xe665, 0xe646, 0x4906, 0x6669, 0xe6aa, 0x2794, 0xa819, 0x6626, 0xe633, 0x6655, 0xe65c, 0x2830, 0xa895, 0x1f8c, 0x6625, 0x6634, 0xe670, 0x27de, 0xa824, 0xe61f, 0xb697, 0x2826, 0xe636, 0xe6a8, 0x1e5a, 0x66a0, 0xe6b1, 0x48d2, 0xe668, 0xa75e, 0xe69f, 0xe645, 0x2c9b, 0x2cf6, 0x2d8b, 0x2d8c, 0x2db9, 0x6666, 0xe6af, 0xe699, 0x1e5a, 0x6690, 0xe6b1, 0x23b8, 0x60bb, 0xe130, 0xe68f, 0x4906, 0x6669, 0xe67a, 0x275f, 0xa8b3, 0xde8b, 0x2c9b, 0x2cf6, 0x2d8b, 0x2d8c, 0x2db9, 0x6666, 0xe69d, 0x1e5a, 0x6690, 0xe6a0, 0xea98, 0xe647, 0x66b7, 0xe6b8, 0x66b6, 0xe6b8, 0x66b6, 0xe6b7, 0x2bc9, 0x674d, 0x674e, 0x674f, 0x6db4, 0x6e16, 0xee64, 0xa3ea, 0xe6cb, 0xe6e3, 0x6ceb, 0xed08, 0x20f1, 0xecf8, 0xe6bd, 0xe6dd, 0xe6db, 0x3742, 0xe6dc, 0x2f6b, 0x4431, 0xed70, 0xd67d, 0xa3cc, 0xee1b, 0x66cf, 0xedb5, 0x3742, 0xe6d1, 0xe6cd, 0x6d8f, 0x6dc4, 0xee21, 0xadb2, 0x5b8e, 0xdb90, 0xc9bb, 0xe6be, 0xbc1b, 0x9e91, 0xe742, 0xe717, 0xe741, 0x671a, 0xe727, 0xc535, 0x671a, 0xe727, 0xe73d, 0xeef4, 0x4075, 0x671b, 0xe748, 0xbcbe, 0xe6f6, 0x66fa, 0x66fe, 0xe727, 0x4075, 0x670a, 0xe748, 0xe722, 0xe721, 0x66fa, 0x66fe, 0xe71a, 0xe744, 0xd987, 0x1e30, 0x5c4a, 0x5c50, 0xe74a, 0xe701, 0xe6f7, 0xe6f3, 0xe72d, 0xa3c7, 0x4075, 0x670a, 0xe71b, 0xa3c6, 0x1e30, 0x5c4a, 0x5c50, 0xe73b, 0x2bc9, 0x66ba, 0x674e, 0x674f, 0x6db4, 0x6e16, 0xee64, 0x2bc9, 0x66ba, 0x674d, 0x674f, 0x6db4, 0x6e16, 0xee64, 0x2bc9, 0x66ba, 0x674d, 0x674e, 0x6db4, 0x6e16, 0xee64, 0x2bc8, 0xe752, 0x2bc8, 0xe751, 0xe75a, 0x2172, 0x2929, 0xe75d, 0xe75c, 0xe753, 0xe759, 0x2172, 0x2929, 0xe754, 0x4cc6, 0x6763, 0x6eaa, 0x6eab, 0x6eb5, 0xeeba, 0xe762, 0x45b1, 0xc6b0, 0xe768, 0xe82e, 0xe765, 0x676d, 0xe771, 0x676b, 0x6771, 0xe7e7, 0x676b, 0x676d, 0xe7e7, 0xe7be, 0xcd46, 0x6789, 0xef17, 0x6780, 0xef17, 0xe7b5, 0xe78d, 0xe78c, 0xade9, 0xe7c3, 0xe7bd, 0xe7b9, 0x49cb, 0xe7a7, 0x49cb, 0xe7a6, 0xc89f, 0xe7c9, 0x5f41, 0xe7dc, 0xe7dd, 0xe78b, 0xe79f, 0xe792, 0xe774, 0x4e6e, 0xcf30, 0xe791, 0xa343, 0x589c, 0xe7e4, 0xe7af, 0xe7e6, 0xe7e7, 0x2dff, 0xe7e8, 0xe7e9, 0xe7ea, 0x5f41, 0x67b1, 0xe7ec, 0xe7b2, 0xe7eb, 0x589c, 0xe7c8, 0xe7cb, 0x676d, 0x6771, 0xe7cc, 0x2dff, 0xe7cd, 0xe7d3, 0xe7d9, 0xe7de, 0x5f41, 0xe7dc, 0xe7ee, 0xe7ed, 0xe7f1, 0xe7ef, 0x6f4f, 0xef51, 0xe7fb, 0xe7f5, 0xa4cd, 0xe875, 0xe876, 0xe877, 0xe879, 0xe87a, 0xe878, 0xe87b, 0xe87c, 0xe882, 0xe880, 0xe883, 0xe884, 0xe87d, 0xe881, 0xe87f, 0xe887, 0xe886, 0x6838, 0xe888, 0xe88c, 0xe889, 0x6825, 0xe890, 0x6824, 0xe890, 0xe88f, 0x6830, 0xe88a, 0xa934, 0x6767, 0xe892, 0x682c, 0xe88a, 0xe88b, 0x4a4e, 0xe896, 0xe894, 0x681a, 0xe888, 0x4a68, 0x683a, 0x683d, 0xe893, 0x4a68, 0x6839, 0x683d, 0xe893, 0xe891, 0x5cf4, 0xdd56, 0x4a68, 0x6839, 0x683a, 0xe893, 0xeaed, 0xe897, 0xd16e, 0xe898, 0xe89d, 0xe89a, 0x6854, 0xe89c, 0xe899, 0xe89b, 0x684f, 0xe89c, 0x363e, 0xe86f, 0xa6df, 0xb13f, 0xe8a1, 0x685b, 0xe8a0, 0x685a, 0xe8a0, 0xcc7b, 0xe89f, 0xe8a2, 0xe87e, 0xe8a4, 0xe8a5, 0x363e, 0xe855, 0xe8a6, 0x6885, 0x6ad7, 0xee15, 0xe89e, 0xe8a7, 0xe801, 0xe802, 0xe803, 0xe807, 0xe805, 0xe806, 0x6808, 0xeb1a, 0xe80a, 0xe811, 0xe867, 0xe813, 0xe80e, 0xe812, 0xe80c, 0xe80f, 0xe810, 0x6871, 0xead7, 0xe818, 0xe817, 0x681a, 0xe838, 0xe821, 0x682c, 0xe830, 0xe832, 0xe81c, 0xbf41, 0xc1b2, 0xe826, 0x6824, 0xe825, 0xe83b, 0xe82e, 0x4a68, 0x6839, 0x683a, 0xe83d, 0xe837, 0x4a4e, 0xe834, 0xe846, 0xe84c, 0xe852, 0xe84e, 0xe853, 0x684f, 0xe854, 0xe84d, 0xe873, 0xe862, 0x685a, 0xe85b, 0xe859, 0xe865, 0xce87, 0xe86b, 0xe86c, 0xe870, 0xe874, 0x1e30, 0x21e8, 0x21ec, 0x21ee, 0x5af7, 0x5bbd, 0x68cc, 0xe8ce, 0xe8d0, 0x68b7, 0x68c6, 0x68c8, 0xe8d1, 0xe8d2, 0xa3f0, 0xa22e, 0xe8d3, 0x68ae, 0x68c6, 0xe8c8, 0xe8d4, 0xe8cf, 0xe8d6, 0xe8d5, 0xe8d7, 0x68c4, 0xe8d8, 0x68c3, 0xe8d8, 0x68ae, 0x68b7, 0x68c7, 0x68c8, 0xe8d9, 0xe8c6, 0x68ae, 0x68b7, 0x68c6, 0xe8da, 0x21e8, 0x21ec, 0x21ee, 0x68a8, 0xe8ce, 0x1e30, 0x21e8, 0x21ec, 0x21ee, 0x68a8, 0xe8cc, 0xe8ba, 0xe8ad, 0xe8ae, 0xe8af, 0xe8b6, 0xe8b8, 0xe8bc, 0xe8bb, 0xe8c0, 0x68c3, 0xe8c4, 0xe8c6, 0xe8c8, 0xe8de, 0xcffb, 0xe8db, 0x25b0, 0x68e0, 0xe963, 0x25b0, 0x68df, 0xe963, 0xe910, 0xe965, 0xe964, 0xe966, 0xe957, 0xe968, 0xe96a, 0x49d7, 0xe96b, 0xe90a, 0xe96c, 0x68f2, 0xe96e, 0x68f0, 0xe96d, 0xe8ef, 0x68ee, 0xe96e, 0xe974, 0xe99d, 0xe972, 0xe971, 0xe970, 0xe973, 0xe97a, 0xe978, 0x6920, 0xe97c, 0x645c, 0x695f, 0xe977, 0x217b, 0x4faa, 0xe8ec, 0xe975, 0xe95c, 0xe979, 0xe97b, 0xe8e1, 0xe97d, 0x6927, 0xe981, 0xe97f, 0xe982, 0xe97e, 0x1f59, 0xe980, 0xd0b4, 0xe984, 0xe983, 0xe96f, 0xe18a, 0x6905, 0xe97c, 0xe985, 0x2582, 0x6912, 0x6935, 0xe981, 0x5218, 0xe986, 0xccca, 0xccc7, 0xe967, 0xe959, 0x2582, 0xe927, 0xe989, 0xe987, 0xe967, 0xe98e, 0xccd5, 0xe969, 0xe988, 0xe98f, 0xe98a, 0xe98c, 0xe98d, 0xe992, 0xe990, 0xe991, 0xe993, 0xe988, 0xe994, 0xd1b3, 0xcce6, 0xe965, 0xe976, 0xe8e8, 0xe934, 0xe90d, 0xe98b, 0x645c, 0x6909, 0xe977, 0xe995, 0x25b0, 0x68df, 0xe8e0, 0xe8e3, 0x68e2, 0xe951, 0xe8e5, 0x6933, 0xe939, 0xe8e9, 0xe93c, 0xe8ea, 0xe8eb, 0xe8ed, 0xe8ef, 0x68ee, 0xe8f2, 0xe91e, 0xe8fe, 0xe8fd, 0xe8fc, 0xe8ff, 0xe8f4, 0xe90c, 0xe952, 0x6909, 0xe95f, 0xe904, 0xe90e, 0xe903, 0xe90f, 0x6905, 0xe920, 0xe911, 0xe916, 0xe913, 0x1f59, 0xe918, 0x6912, 0xe927, 0xe915, 0xe91c, 0xe91b, 0xe921, 0xe928, 0xe937, 0x693d, 0xe94b, 0xe936, 0xe93f, 0xe95e, 0xe941, 0xe943, 0xe93a, 0xe93e, 0xe948, 0xe949, 0xe945, 0xe94a, 0xe94c, 0xe962, 0xe8f6, 0xe99f, 0xe99e, 0xea6c, 0xea6d, 0xa1af, 0x69c4, 0xea6e, 0xea5d, 0xea70, 0xea6f, 0xea72, 0xce36, 0x6a62, 0xea74, 0xea73, 0x69b1, 0xea6e, 0x6a5b, 0xea7f, 0x357a, 0x69c8, 0x6a45, 0xea71, 0x357a, 0x69c6, 0x6a45, 0xea71, 0xea7b, 0xea7d, 0xea79, 0xea75, 0xea7e, 0xea80, 0xea78, 0xea76, 0x69de, 0xea7c, 0x69dd, 0xea7c, 0xea77, 0x208c, 0x4f75, 0xea82, 0xea88, 0xea87, 0xea73, 0xea83, 0xea86, 0x6a2e, 0xea51, 0xea8e, 0xea8f, 0xea8b, 0xea8d, 0xea93, 0xea92, 0xea91, 0xea90, 0x6a13, 0x6a57, 0xea8c, 0x6a37, 0xea9a, 0x6a10, 0x6a57, 0xea8c, 0xea9b, 0xea97, 0xea99, 0xea52, 0xea9e, 0xea98, 0x69f5, 0x6a51, 0xea9d, 0xd17e, 0xea7a, 0x6a12, 0xea9a, 0xea9f, 0xea47, 0xeaa1, 0xd4e6, 0xea9c, 0xea96, 0xeaa0, 0xeaa2, 0x357a, 0x69c6, 0x69c8, 0xea71, 0xea3a, 0xea85, 0xea95, 0xea81, 0xeaa3, 0x69f5, 0x6a2e, 0xea9d, 0xea28, 0xea84, 0x6a10, 0x6a13, 0xea8c, 0xb0ca, 0x69c5, 0xea7f, 0xe9b2, 0xeaa4, 0x69bf, 0xea74, 0xeaa7, 0x560e, 0xeaa5, 0xeaa6, 0xbb22, 0xea8a, 0xea89, 0xe9ac, 0xe9ad, 0x69b1, 0xe9c4, 0xe9b4, 0xe9b3, 0x357a, 0x69c6, 0x69c8, 0xea45, 0xe9b9, 0x69c1, 0xe9ee, 0x69bf, 0xea62, 0xe9d4, 0xe9db, 0xe9df, 0xe9d9, 0xe9d2, 0xea36, 0xe9d0, 0x69dd, 0xe9de, 0xe9d1, 0xe9d5, 0x69c5, 0xea5b, 0xe9d8, 0xea4d, 0x208c, 0x4f75, 0xe9e1, 0xe9f0, 0xea55, 0xea4a, 0xe9f1, 0xe9ed, 0xe9e2, 0xea6b, 0xea6a, 0xea01, 0x6a10, 0x6a13, 0xea57, 0xea02, 0xe9f8, 0xe9ff, 0xea0f, 0xea0e, 0xea0d, 0xea05, 0xea4c, 0xea42, 0xea19, 0x66b2, 0xea2d, 0xea24, 0x6a12, 0xea37, 0xea16, 0xea41, 0x6a2e, 0xea51, 0xea2b, 0xea38, 0xea43, 0xea3e, 0xea44, 0xea4f, 0xea5f, 0x560e, 0xea65, 0xea66, 0xea64, 0xd0ae, 0x1f53, 0x5eb0, 0x5ec6, 0xead4, 0xeca0, 0x51b8, 0xead3, 0xeacf, 0xd180, 0xead6, 0xead5, 0xeac5, 0xd10f, 0x51b8, 0xeac4, 0x1f53, 0x5eb0, 0x5ec6, 0xeab5, 0x51cf, 0xeacc, 0xeacb, 0x6871, 0x6885, 0xee15, 0xead9, 0xead8, 0x1eff, 0xaf77, 0xeaf9, 0xeaef, 0x6b02, 0xeb22, 0x23d1, 0xeaee, 0xe83e, 0x23d1, 0xeaea, 0xeae5, 0x1f5b, 0xaf7f, 0xeae4, 0xa243, 0x6ae9, 0x6b13, 0xeb22, 0xb77e, 0xd0e1, 0x6b02, 0xeb22, 0xe87b, 0xeb23, 0x6ae9, 0x6b02, 0xeb13, 0xeb1b, 0x3597, 0x65d8, 0x6b26, 0x6b2a, 0xeb2d, 0x3597, 0x65d8, 0x6b25, 0x6b2a, 0xeb2d, 0x6599, 0xe5f9, 0xa4c4, 0xe60b, 0x3597, 0x65d8, 0x6b25, 0x6b26, 0xeb2d, 0xe61a, 0x3597, 0x65d8, 0x6b25, 0x6b26, 0xeb2a, 0xe604, 0x3b1d, 0x60c1, 0xeb31, 0x3b1d, 0x60c1, 0xeb30, 0xeb39, 0xeb36, 0x1ffc, 0xcca5, 0xac2c, 0xeb58, 0xeb4e, 0x573d, 0xeb49, 0x21f2, 0x2c32, 0x2c34, 0x2c36, 0xac37, 0x1e11, 0xe19c, 0xeb47, 0xec7c, 0xec7d, 0xec7e, 0xec6e, 0xebbb, 0xec80, 0xeeff, 0xec81, 0x6c78, 0xec88, 0xec24, 0xec82, 0xec7f, 0xec84, 0xec85, 0xec86, 0x6bdb, 0xecb7, 0xec8c, 0xec89, 0xec8f, 0xec87, 0xebf9, 0xec90, 0xec8d, 0xec8b, 0xec8a, 0xec92, 0xec98, 0x6bd7, 0x6c76, 0xec9e, 0xec95, 0xec96, 0x6bb7, 0xebf7, 0xec94, 0xec9b, 0xec91, 0x2c1f, 0x2c20, 0x5d7b, 0x6c7b, 0xec9c, 0xec93, 0xecaa, 0x6ba7, 0xebf7, 0xec9d, 0xeb66, 0xebd8, 0xeca7, 0xeca0, 0x6c00, 0xeca9, 0xeca4, 0x6bcb, 0xeca8, 0xebca, 0xecac, 0xecbb, 0xecaf, 0xecad, 0x6b9d, 0xec76, 0xebbe, 0x6b89, 0xecb7, 0xecb4, 0xecb1, 0xecb5, 0xecb2, 0xecb3, 0xecb8, 0xecae, 0xecb0, 0xecb6, 0xecba, 0xec3a, 0x6ba7, 0x6bb7, 0xecc0, 0xeb8f, 0xecab, 0xecca, 0x6bc7, 0xeca9, 0xecc8, 0xec97, 0xecc2, 0x6c28, 0xecbd, 0xecc7, 0x6c0d, 0xecc5, 0x6c0c, 0xecc5, 0xecbe, 0x6c77, 0xecc4, 0xecc6, 0xecc3, 0x6c2e, 0xecc1, 0xecd2, 0xecd1, 0xeccb, 0xeca5, 0xeb73, 0x6c5e, 0xeccf, 0x6c08, 0xecce, 0xecd0, 0xeccd, 0xec1b, 0xeca2, 0x6ccc, 0xef07, 0xecd3, 0xecd8, 0xeca6, 0xeca3, 0x6bf5, 0xecb9, 0xecd7, 0xecdb, 0xecd4, 0xecc9, 0xecd9, 0xecd5, 0x6cd6, 0x6f08, 0xef9e, 0xecdf, 0xecdd, 0xecdd, 0xecdc, 0xecde, 0xec9f, 0xecbc, 0xec25, 0xec8e, 0xec99, 0xece3, 0xece1, 0xece2, 0xecbf, 0xec9a, 0xeb63, 0xece0, 0x6b9d, 0x6bd7, 0xec9e, 0x6c10, 0xecc4, 0x6b72, 0xec88, 0xeca1, 0x2c1f, 0x2c20, 0x5d7b, 0x6bae, 0xec9c, 0xeb5a, 0xeb5b, 0xeb62, 0xeb77, 0xeb68, 0xeb6f, 0xeb74, 0xeb7a, 0xeb81, 0xeb83, 0xeb8e, 0x6b72, 0xec78, 0xeb8b, 0xeb93, 0xeb92, 0xeb8a, 0x56ab, 0xeb91, 0xec5f, 0xeb8d, 0xeb90, 0xebad, 0xeb9a, 0xebb3, 0xebaa, 0xeb9e, 0xeba6, 0xec02, 0xeb9c, 0xec60, 0xec6d, 0xebab, 0x2c1f, 0x2c20, 0x5d7b, 0x6bae, 0xec7b, 0xebba, 0x6b9d, 0xec76, 0xec58, 0x6abe, 0xebc1, 0xec7a, 0xec31, 0xec39, 0xebc9, 0xec23, 0xec37, 0xebc0, 0xebca, 0x6bc7, 0xec00, 0xebb6, 0xebfd, 0xebd2, 0xebd6, 0xebea, 0xebd5, 0xebeb, 0xebe1, 0xebe4, 0xebe7, 0xebdd, 0xebe2, 0xebf0, 0x6b89, 0xebdb, 0xebe8, 0xec3a, 0xebf4, 0xebd4, 0xec5d, 0xec08, 0xec0f, 0xec68, 0xebf7, 0xec1b, 0xec03, 0xec13, 0x6c10, 0xec77, 0x6c0c, 0xec0d, 0xec12, 0xec09, 0xec01, 0xec42, 0xebff, 0xec20, 0x6c32, 0xef07, 0xec2d, 0xec28, 0xec25, 0xec29, 0xec1f, 0xec1c, 0xec33, 0xec3e, 0x51a4, 0xec48, 0x6c49, 0xef08, 0xec3b, 0xec35, 0xec45, 0xec3c, 0xec56, 0x6c53, 0xec54, 0xec57, 0xec52, 0xec6f, 0xec64, 0xec67, 0xec63, 0x2c4c, 0xee1f, 0x21eb, 0xecec, 0xee20, 0x66c1, 0xed08, 0xece7, 0xee24, 0xa1e4, 0xee23, 0xee22, 0xe6c7, 0xee29, 0xee28, 0x66c1, 0xeceb, 0x6d76, 0xee26, 0x6dd7, 0xee25, 0xee30, 0xee35, 0xee33, 0x6e1c, 0xee32, 0xee2e, 0x6d44, 0xee31, 0xee2a, 0xee2f, 0xee2d, 0x53ba, 0xedaf, 0xee38, 0xee39, 0xedc3, 0xee3b, 0xee3f, 0xedfa, 0xee3d, 0xee3a, 0xee3c, 0xed1f, 0xee40, 0xee43, 0xee46, 0xee41, 0xedaa, 0xee48, 0x6d5e, 0xee45, 0x6d5d, 0xee45, 0xee44, 0xee49, 0xee4c, 0xee4f, 0xee50, 0xee4e, 0xe6d5, 0xee4a, 0x6d09, 0xee26, 0xee53, 0x6da4, 0xee4d, 0x6dab, 0xee2b, 0xee51, 0xee52, 0x66de, 0x6dc4, 0xee21, 0xee4b, 0xee59, 0xee55, 0xee57, 0xee56, 0xed7e, 0xee5b, 0xee5c, 0xed59, 0x6d87, 0xee2b, 0xee27, 0x53ba, 0xed2c, 0xee5f, 0x2bc9, 0x66ba, 0x674d, 0x674e, 0x674f, 0x6e16, 0xee64, 0xe6db, 0xee60, 0xee61, 0xee58, 0xee63, 0xee5a, 0xee5a, 0xee62, 0xee5e, 0xed33, 0x66de, 0x6d8f, 0xee21, 0xedcf, 0xedc9, 0xedc8, 0xee5d, 0xedc6, 0xee67, 0xee65, 0x6d0e, 0xee25, 0xee37, 0xee68, 0xee36, 0xee6a, 0xee54, 0xee69, 0xc1d5, 0xee6b, 0x6df4, 0xee47, 0x6df3, 0xee47, 0xee6c, 0xee70, 0x6d3c, 0xee6d, 0xee34, 0xee0a, 0xee6f, 0xedff, 0xee71, 0xd3ba, 0xee72, 0x6871, 0x6ad7, 0xee2c, 0x2bc9, 0x66ba, 0x674d, 0x674e, 0x674f, 0x6db4, 0xee64, 0xee74, 0xee66, 0x66da, 0xee73, 0xed1d, 0xee42, 0xee3e, 0x2c4c, 0xece5, 0xece9, 0x66de, 0x6d8f, 0xedc4, 0xecf6, 0xecf4, 0xecf2, 0x6d0e, 0xedd7, 0x6d09, 0xed76, 0xedac, 0xed07, 0xed06, 0xed23, 0x6d87, 0xedab, 0xee15, 0xed28, 0xed1e, 0xed26, 0xed12, 0xed1f, 0xed1d, 0xed1b, 0xedfd, 0xed15, 0xede5, 0xedd9, 0xed2f, 0xed30, 0xed42, 0xed34, 0xed43, 0xed3f, 0xee1e, 0xed3b, 0xed50, 0xed53, 0xee1d, 0xed51, 0xed60, 0x6d5d, 0xed5e, 0xed52, 0x6df3, 0xedf4, 0xed5c, 0xed61, 0xed72, 0xed93, 0xed6a, 0xed7e, 0xed6f, 0xed6c, 0xed6e, 0xed89, 0xed8a, 0xed77, 0xedeb, 0xed98, 0xeda1, 0xed9a, 0xedbb, 0xed96, 0x6dbf, 0xedc0, 0xeda5, 0xeda9, 0xedca, 0xedc2, 0xedb2, 0xedb9, 0xedba, 0xedc1, 0xedbc, 0x2bc9, 0x66ba, 0x674d, 0x674e, 0x674f, 0x6db4, 0xee16, 0xedd6, 0xee1a, 0xedd3, 0xedda, 0xedef, 0xede6, 0xedf2, 0xedf8, 0xedfa, 0xee07, 0xedf9, 0xee0c, 0xee0f, 0xee1b, 0xee18, 0x2364, 0xa877, 0x4877, 0x48b1, 0xee7c, 0x24b8, 0xe18e, 0xee7e, 0xc877, 0x4877, 0x48b1, 0xee78, 0x2869, 0xc6d0, 0xee7a, 0xee85, 0xeea4, 0xee83, 0xee8f, 0xee87, 0x1e3d, 0xaa6f, 0xc350, 0x4c97, 0xee84, 0xeea6, 0xeea5, 0x6eac, 0xeeb8, 0x4cc6, 0x6762, 0x6eab, 0x6eb5, 0xeeba, 0x4cc6, 0x6762, 0x6eaa, 0x6eb5, 0xeeba, 0x6ea9, 0xeeb8, 0xa305, 0x36f2, 0x4cac, 0x6eb4, 0xeeb9, 0x36f2, 0x4cac, 0x6eaf, 0xeeb9, 0x4cc6, 0x6762, 0x6eaa, 0x6eab, 0xeeba, 0x6ea9, 0xeeac, 0x36f2, 0x4cac, 0x6eaf, 0xeeb4, 0x4cc6, 0x6762, 0x6eaa, 0x6eab, 0xeeb5, 0x45f2, 0x45f3, 0xd534, 0x1e48, 0x2c1b, 0x2e85, 0xeebd, 0x1e48, 0x2c1b, 0x2e85, 0xeebc, 0xeec4, 0x48fa, 0xeec3, 0xeecc, 0xeec9, 0xcc98, 0xeed2, 0xeed1, 0xeed9, 0xeed8, 0xeef1, 0x294c, 0xc0b9, 0xeef6, 0xeeed, 0xa15a, 0xeef7, 0xeef2, 0xeee4, 0xeedb, 0xeeea, 0xe709, 0xeee1, 0xeee9, 0xd8ae, 0xeefe, 0xeefd, 0x6b6d, 0xef0b, 0xef0c, 0xd6d9, 0x6c32, 0xeccc, 0x6c49, 0x6cd6, 0xef9e, 0xef0d, 0xeeff, 0xef02, 0xef09, 0xef11, 0xef0e, 0xe3a1, 0x46b7, 0xc6bc, 0xa1ac, 0x6780, 0xe789, 0xef21, 0xef20, 0xdc82, 0xef39, 0xef34, 0xa5c5, 0x1e9d, 0x3589, 0x358a, 0xef50, 0x358b, 0xb58e, 0x5cf7, 0xdd4d, 0x67f2, 0xef51, 0x1e9d, 0x3589, 0x358a, 0xef4a, 0x67f2, 0xef4f, 0x3b6f, 0xef7f, 0xef54, 0x6f53, 0xef80, 0xef81, 0xef82, 0xef85, 0xef70, 0xef87, 0xef83, 0xef86, 0x6f62, 0xef84, 0x6f61, 0xef84, 0xa1fa, 0xef88, 0x256e, 0x2699, 0xa6d3, 0xa4ac, 0x6f71, 0xef8a, 0xef89, 0xef5a, 0xef6a, 0xef8b, 0xd16d, 0xef8c, 0x3b6f, 0xef52, 0xef54, 0xef55, 0xef57, 0xef5f, 0x6f61, 0xef62, 0xef59, 0xef60, 0xef5c, 0xef66, 0xef6c, 0xef6a, 0xef72, 0xef77, 0x4adc, 0x6f92, 0xef99, 0xa390, 0xae9e, 0x4adc, 0x6f8d, 0xef99, 0xef9a, 0xef9b, 0x6f8d, 0xef92, 0xef94, 0xef95, 0x1e80, 0xef9f, 0x49cb, 0x49cc, 0xca50, 0x6c49, 0xef08, 0x1e80, 0xef9c, 0x248a, 0x248c, 0xb0d2, 0x2401, 0xcc72, }; static const short cjk_variants_indx[0x5200] = { /* 0x4e00 */ 4, -1, -1, -1, 5, 6, -1, 7, -1, 8, 10, 11, 12, -1, 13, -1, 14, 16, 19, 20, -1, -1, 22, 24, 26, -1, 28, 29, 33, 34, -1, 36, 38, 40, 42, 44, 45, 47, 49, 52, -1, -1, 53, 56, 59, -1, -1, -1, 60, -1, 66, 67, 68, -1, -1, -1, -1, -1, 69, -1, -1, 71, 73, -1, -1, 76, 77, 79, 81, 83, 85, -1, 87, 92, -1, -1, 93, -1, -1, -1, 94, 96, -1, -1, 100, 101, -1, 103, 105, -1, 107, -1, -1, -1, -1, -1, 110, 111, -1, -1, -1, -1, 115, -1, 116, -1, -1, -1, -1, -1, -1, -1, 118, 119, -1, -1, -1, -1, -1, -1, -1, 121, -1, -1, -1, -1, 124, -1, 128, 130, 133, -1, -1, -1, 135, -1, 137, 138, 139, 141, 143, -1, 144, 147, 151, 153, -1, -1, 155, -1, 156, 157, 161, 162, 163, -1, 165, 167, 171, 173, -1, 174, -1, -1, -1, -1, -1, 176, -1, 178, -1, 182, 183, -1, -1, 184, 185, 186, 187, -1, -1, 188, -1, -1, 189, -1, 190, 191, -1, -1, 192, 194, -1, 195, 196, -1, -1, 199, 201, 202, -1, 203, -1, -1, 204, -1, 207, 209, 210, 212, -1, 215, -1, -1, -1, -1, 217, 218, -1, -1, -1, 220, 221, -1, -1, -1, 222, -1, -1, -1, -1, 223, -1, -1, 227, -1, 228, 229, 230, -1, -1, -1, -1, -1, -1, -1, -1, 232, -1, -1, 234, -1, 236, 237, 239, 240, /* 0x4f00 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 245, -1, -1, -1, -1, -1, 247, 248, 251, 252, 253, 254, 255, 256, 259, 262, 263, 265, -1, 266, 267, 268, 269, 270, -1, -1, 271, 273, -1, -1, 275, -1, -1, 276, 279, -1, -1, 282, -1, 283, -1, -1, -1, -1, 284, -1, -1, -1, 285, -1, 286, -1, -1, -1, -1, 287, 288, -1, -1, -1, -1, -1, 289, -1, -1, -1, -1, 290, 295, -1, -1, -1, -1, 296, -1, 298, 301, -1, 302, -1, 303, -1, -1, 307, -1, 308, -1, -1, -1, -1, 309, -1, -1, -1, -1, -1, -1, 310, -1, -1, -1, 312, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, -1, -1, -1, -1, -1, 319, -1, 323, -1, 324, -1, -1, -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, -1, -1, 326, 328, 329, -1, 331, -1, 332, 333, 335, 336, 337, 338, 339, 340, 341, -1, 343, -1, -1, -1, -1, -1, -1, 344, 345, -1, -1, -1, -1, -1, 346, -1, -1, -1, 347, 348, -1, -1, -1, -1, 349, -1, -1, 350, -1, 351, -1, 352, -1, -1, -1, -1, -1, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, 355, 356, 357, 358, 359, 360, -1, 361, 362, -1, 363, 364, 365, 366, -1, 367, 369, -1, -1, 371, 372, -1, -1, -1, -1, -1, -1, -1, -1, 374, 378, 380, -1, -1, /* 0x5000 */ 382, -1, 383, 385, -1, 388, 389, -1, 390, 391, 393, 394, -1, -1, 397, 398, 399, 400, -1, -1, -1, -1, 401, -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, -1, -1, 405, 407, -1, 408, -1, -1, -1, -1, 410, -1, -1, -1, -1, -1, -1, -1, 411, -1, -1, 412, -1, -1, 413, 415, -1, 416, -1, 417, -1, 418, -1, -1, -1, -1, -1, 419, 420, -1, 421, -1, -1, -1, -1, -1, -1, 422, -1, -1, -1, -1, -1, -1, -1, 425, 426, 427, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 428, -1, -1, -1, -1, 429, -1, 430, -1, -1, -1, -1, -1, -1, -1, 432, 433, -1, 435, 436, 437, 441, 444, -1, 445, 447, 448, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 449, 452, -1, -1, -1, 453, -1, -1, -1, -1, 454, -1, 455, 458, 462, -1, 464, -1, -1, -1, 465, 467, 470, -1, 471, 472, -1, 473, 474, 475, -1, -1, -1, 476, -1, 477, -1, -1, -1, 478, 480, 481, -1, 482, -1, 483, -1, -1, -1, -1, 484, -1, 485, -1, 486, 487, 491, 492, -1, -1, -1, 493, 494, -1, -1, 495, -1, -1, -1, 498, -1, -1, -1, 499, -1, -1, 500, -1, -1, -1, 501, -1, 502, 504, -1, -1, -1, 505, -1, 506, -1, -1, 507, 508, -1, 509, -1, 512, -1, -1, -1, 513, 514, -1, 515, -1, -1, -1, -1, 516, -1, -1, -1, -1, -1, -1, /* 0x5100 */ 518, 519, 520, -1, 521, -1, -1, -1, 522, 523, -1, -1, -1, -1, 525, -1, 526, -1, -1, -1, 527, 528, -1, -1, 529, -1, -1, -1, -1, -1, 531, 534, -1, -1, -1, -1, -1, -1, -1, 535, -1, -1, 536, -1, -1, -1, -1, -1, -1, -1, 537, -1, -1, -1, -1, 538, -1, 539, 540, 541, 542, -1, -1, 543, -1, -1, 545, -1, -1, -1, -1, 546, -1, 547, 549, 551, 554, -1, 556, 557, 561, 563, 565, -1, 567, -1, 568, 569, 570, -1, 572, -1, 573, -1, -1, -1, 574, -1, -1, -1, 575, -1, 576, 578, -1, 579, 581, -1, -1, -1, -1, -1, 582, -1, 583, 586, 591, -1, 592, -1, -1, 593, -1, 595, -1, 597, 599, -1, 600, 601, 602, 603, 604, 605, 606, -1, 609, 610, 611, 613, 614, -1, 616, 618, 619, 620, 621, -1, -1, -1, -1, 622, -1, 623, -1, 625, 626, 627, -1, -1, -1, -1, 629, 630, 631, -1, 632, -1, 634, 635, 637, 639, 642, -1, -1, 644, 645, 648, 649, 651, 652, 653, -1, -1, -1, -1, 654, 655, -1, 656, -1, -1, 657, -1, 659, 660, 661, 664, 665, -1, 667, 668, -1, -1, -1, 669, -1, 670, -1, 671, 672, 673, -1, -1, 674, -1, -1, -1, -1, 676, 678, -1, 680, -1, 684, 686, 688, 690, 692, 693, 694, -1, 696, -1, -1, 701, 702, 707, 710, 715, -1, 716, 717, 722, 723, -1, 726, 727, -1, -1, 730, 732, -1, 734, 735, 736, /* 0x5200 */ 737, -1, 739, 741, 742, 743, -1, -1, 745, -1, 747, -1, -1, 748, -1, -1, -1, -1, 749, 752, 753, -1, -1, -1, 754, 755, 756, 757, -1, -1, -1, -1, 762, -1, -1, -1, -1, 763, 764, 767, 770, -1, 773, 774, 776, 780, 781, -1, -1, 782, -1, -1, 786, -1, 787, -1, -1, 788, 789, -1, 790, 793, 794, 795, 796, 797, 798, 800, 801, -1, -1, 802, -1, -1, -1, 803, 806, 807, 808, 809, 813, 815, -1, -1, -1, -1, -1, 823, -1, 827, 831, 832, -1, 833, -1, -1, -1, -1, -1, 834, 842, 844, 845, 847, -1, 848, -1, -1, -1, -1, 849, -1, 852, 853, -1, 861, 862, 863, -1, 868, -1, 872, -1, -1, -1, -1, -1, 873, -1, -1, -1, 874, 877, -1, -1, 878, -1, 879, 880, -1, 881, 882, 890, -1, 898, 901, 903, -1, 911, 919, -1, -1, -1, -1, -1, -1, -1, 921, 923, 924, -1, 926, 927, -1, -1, -1, -1, -1, 928, -1, 931, 932, -1, -1, -1, -1, -1, 935, 936, 937, 940, 943, -1, -1, -1, 945, -1, -1, -1, -1, -1, 946, -1, 947, -1, -1, 948, 949, -1, 951, 952, -1, 953, 956, 959, -1, -1, -1, -1, 961, -1, -1, -1, 965, 968, 970, -1, 972, 973, 974, -1, 977, 978, -1, 981, -1, 982, -1, 983, -1, 984, 985, -1, 987, -1, -1, -1, -1, -1, -1, -1, 988, 989, 992, -1, 995, -1, -1, 996, -1, -1, 998, -1, -1, -1, -1, /* 0x5300 */ 999, -1, -1, 1000, 1002, 1004, 1005, -1, -1, -1, 1008, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1009, -1, 1011, 1012, -1, 1014, 1016, -1, 1017, 1018, -1, -1, -1, -1, 1019, 1020, 1021, 1023, -1, -1, -1, 1024, 1025, 1026, -1, 1028, 1029, 1032, -1, -1, -1, -1, 1035, -1, 1036, 1037, -1, -1, -1, -1, 1039, -1, -1, 1040, -1, -1, 1041, 1042, -1, 1046, -1, 1047, -1, 1049, 1050, 1053, 1056, -1, 1057, 1058, 1060, 1063, 1065, -1, 1067, -1, 1069, 1070, 1071, -1, -1, -1, 1073, -1, 1074, -1, 1075, 1082, -1, 1084, -1, -1, -1, 1085, -1, -1, 1087, 1088, 1090, -1, -1, 1091, 1093, -1, -1, 1094, 1096, 1097, -1, 1099, -1, 1100, -1, -1, -1, -1, 1102, -1, 1105, 1106, 1108, 1114, 1115, 1116, -1, 1117, 1119, 1120, 1121, -1, 1122, -1, -1, 1123, -1, 1124, -1, -1, 1126, 1130, 1131, 1132, -1, -1, -1, 1133, 1134, 1136, 1137, 1138, 1139, -1, 1141, -1, 1142, 1143, -1, -1, -1, 1145, 1146, 1147, 1152, -1, 1154, 1155, 1157, 1158, 1159, 1160, 1161, -1, 1164, 1165, -1, -1, 1166, 1168, -1, 1170, 1172, 1175, 1178, 1181, 1184, 1185, 1186, 1187, 1188, -1, 1189, 1190, 1193, 1194, 1195, 1196, -1, 1200, -1, 1202, -1, -1, 1203, 1205, -1, 1207, -1, -1, 1209, -1, 1210, 1214, 1216, -1, -1, -1, -1, 1220, -1, -1, 1223, 1226, -1, -1, -1, -1, 1227, -1, -1, -1, -1, -1, 1232, 1236, -1, 1237, -1, -1, -1, 1240, -1, -1, /* 0x5400 */ 1241, 1243, -1, 1245, -1, -1, -1, -1, 1247, -1, 1248, -1, 1249, -1, 1251, -1, -1, 1252, -1, 1254, -1, 1255, -1, 1256, -1, -1, -1, -1, -1, 1257, 1258, 1259, -1, -1, -1, -1, -1, -1, -1, -1, 1262, -1, -1, -1, 1263, -1, -1, 1265, -1, -1, -1, 1271, 1273, -1, 1275, -1, -1, -1, -1, 1276, -1, 1277, -1, 1278, -1, -1, 1279, -1, -1, -1, -1, -1, 1280, 1282, 1284, -1, 1285, 1286, -1, -1, 1287, 1288, 1289, 1290, -1, 1291, 1292, 1293, 1294, 1297, 1299, 1300, 1301, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1302, 1303, 1304, 1305, -1, -1, 1307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1308, -1, -1, -1, -1, -1, -1, -1, -1, 1311, -1, -1, -1, -1, 1312, -1, 1315, -1, -1, 1318, -1, -1, 1319, -1, -1, -1, -1, -1, -1, 1321, -1, 1322, 1323, 1324, -1, -1, -1, -1, -1, -1, 1325, -1, -1, -1, -1, 1326, -1, -1, 1328, -1, -1, 1329, -1, 1331, 1334, -1, -1, -1, -1, -1, 1336, -1, -1, -1, 1338, 1340, -1, -1, -1, -1, -1, -1, 1341, -1, -1, -1, -1, -1, -1, -1, -1, 1343, -1, -1, -1, 1344, 1348, 1349, 1350, 1351, -1, 1352, -1, 1354, -1, -1, 1355, 1356, -1, 1357, -1, 1358, -1, 1361, -1, -1, -1, -1, -1, -1, -1, -1, 1362, -1, -1, -1, -1, -1, 1363, -1, -1, -1, 1368, -1, -1, -1, 1370, -1, -1, -1, -1, -1, /* 0x5500 */ 1371, -1, -1, -1, 1373, -1, -1, 1374, -1, -1, -1, -1, -1, 1375, -1, -1, 1376, -1, -1, -1, -1, 1377, 1378, -1, 1382, -1, -1, 1388, -1, 1389, -1, -1, 1390, -1, 1391, 1392, 1393, -1, -1, 1394, -1, -1, -1, 1395, -1, -1, -1, -1, -1, 1396, -1, -1, -1, -1, -1, -1, 1397, -1, -1, -1, -1, -1, -1, -1, 1398, -1, -1, -1, -1, -1, 1399, -1, -1, -1, -1, -1, -1, -1, -1, 1400, -1, -1, -1, 1401, 1407, -1, 1413, 1414, -1, -1, -1, -1, -1, -1, 1415, 1419, 1425, -1, -1, 1430, -1, -1, -1, 1433, -1, -1, -1, -1, 1434, 1435, 1436, 1440, 1441, -1, -1, -1, 1443, -1, -1, -1, 1444, -1, 1445, -1, -1, -1, -1, -1, 1446, -1, 1448, -1, 1450, -1, 1451, -1, -1, -1, -1, -1, -1, -1, 1456, -1, -1, 1458, 1460, -1, -1, -1, -1, -1, -1, -1, 1463, -1, 1464, -1, 1467, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1468, 1469, 1470, 1472, -1, 1473, 1475, 1477, -1, 1480, -1, -1, -1, 1481, 1483, -1, -1, -1, 1485, -1, 1486, 1487, -1, -1, -1, -1, -1, -1, 1488, 1489, 1490, -1, -1, 1491, -1, -1, -1, 1492, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1493, -1, 1494, -1, -1, -1, 1495, -1, -1, 1496, -1, 1497, -1, -1, -1, 1498, -1, 1499, -1, -1, -1, -1, -1, -1, -1, 1500, -1, -1, 1501, -1, -1, 1502, -1, -1, -1, -1, -1, -1, /* 0x5600 */ -1, -1, -1, -1, -1, -1, 1503, -1, -1, -1, 1505, -1, -1, 1506, -1, -1, -1, 1507, -1, 1509, 1510, -1, 1511, 1512, 1515, -1, -1, -1, 1516, -1, -1, -1, -1, -1, -1, -1, 1517, -1, -1, -1, 1518, 1519, -1, -1, -1, -1, 1521, 1522, 1524, 1525, -1, -1, -1, 1526, -1, 1527, 1528, -1, -1, -1, -1, 1529, -1, -1, -1, 1530, 1531, -1, 1532, 1534, -1, -1, -1, 1535, -1, -1, -1, -1, -1, -1, 1537, -1, -1, 1538, -1, 1539, 1540, -1, -1, -1, -1, 1542, 1544, 1545, -1, -1, 1546, 1547, -1, -1, -1, 1548, 1549, -1, 1550, -1, 1551, -1, -1, -1, -1, 1552, -1, -1, 1553, -1, 1554, 1556, -1, -1, 1559, 1560, -1, -1, -1, -1, 1561, -1, 1562, -1, -1, -1, -1, -1, -1, 1563, -1, -1, -1, -1, 1564, -1, -1, 1565, 1566, -1, -1, -1, 1569, 1570, -1, -1, -1, 1571, -1, -1, -1, -1, 1575, -1, 1580, -1, 1581, 1582, -1, 1583, 1584, -1, 1585, -1, -1, -1, -1, -1, 1586, -1, -1, -1, 1587, 1588, 1589, -1, 1591, -1, -1, -1, -1, 1592, -1, -1, -1, -1, 1593, 1594, 1595, -1, -1, 1597, -1, -1, 1598, 1599, 1601, -1, 1602, -1, -1, 1603, -1, 1604, -1, 1605, -1, -1, -1, 1608, 1611, 1617, -1, 1618, -1, -1, 1619, 1625, 1626, -1, 1627, 1630, -1, -1, 1633, 1636, -1, -1, 1637, -1, 1638, 1644, -1, 1647, 1652, 1653, 1654, 1657, 1660, 1663, 1664, -1, 1669, -1, -1, 1670, -1, 1675, 1680, -1, /* 0x5700 */ 1683, -1, -1, 1688, -1, -1, 1689, 1692, 1693, -1, -1, 1694, -1, 1699, 1702, 1705, -1, 1706, 1707, 1709, -1, -1, 1712, 1715, 1718, -1, -1, -1, -1, 1720, -1, 1722, -1, 1723, 1724, 1726, -1, -1, -1, 1727, 1729, -1, -1, -1, 1730, 1731, -1, -1, 1732, -1, -1, -1, -1, -1, -1, -1, -1, 1735, 1736, -1, -1, 1738, -1, -1, 1742, -1, 1743, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1745, 1749, 1750, -1, 1751, 1752, -1, -1, 1755, -1, 1758, 1759, 1760, 1766, 1767, 1769, 1771, 1773, -1, -1, 1775, 1776, -1, 1777, 1778, 1779, -1, -1, -1, -1, 1781, 1782, 1784, 1786, -1, -1, 1787, -1, 1788, -1, -1, 1790, -1, 1791, -1, -1, -1, -1, -1, -1, -1, 1792, -1, 1793, 1794, 1795, 1796, -1, -1, -1, 1797, -1, -1, -1, -1, -1, -1, 1798, 1800, 1801, 1802, 1803, -1, -1, -1, 1804, 1807, 1808, -1, -1, -1, -1, 1809, 1810, -1, -1, -1, 1811, 1812, 1813, 1814, -1, 1816, -1, 1817, -1, 1818, -1, 1819, 1820, -1, 1821, -1, -1, -1, -1, -1, -1, 1822, -1, -1, -1, -1, 1824, -1, -1, -1, -1, -1, 1825, -1, 1826, -1, 1827, -1, -1, -1, -1, -1, -1, 1830, 1835, 1836, -1, -1, -1, -1, 1837, 1838, 1840, -1, 1841, -1, 1843, -1, -1, 1845, -1, -1, -1, -1, 1846, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1847, -1, -1, -1, -1, 1848, 1851, -1, -1, /* 0x5800 */ -1, -1, 1852, 1853, -1, 1854, 1855, 1856, -1, -1, 1857, -1, -1, -1, -1, -1, -1, 1858, -1, -1, -1, 1859, 1861, -1, -1, 1862, -1, -1, -1, 1863, -1, -1, -1, -1, -1, -1, 1864, -1, 1866, -1, -1, -1, -1, -1, -1, -1, -1, 1868, 1871, 1873, -1, -1, 1874, -1, -1, -1, -1, -1, 1876, -1, -1, -1, -1, -1, -1, 1878, -1, -1, -1, -1, 1880, -1, -1, -1, 1881, 1884, -1, 1885, -1, 1886, 1887, 1888, 1889, -1, 1890, -1, -1, 1891, -1, 1892, 1893, -1, -1, -1, -1, 1894, -1, 1895, 1896, -1, 1897, -1, 1899, -1, -1, 1900, -1, 1902, -1, -1, -1, -1, -1, -1, 1903, -1, -1, 1905, -1, 1906, -1, 1908, -1, -1, 1910, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1913, 1914, -1, 1915, -1, -1, -1, -1, -1, -1, -1, -1, 1916, 1918, 1919, -1, 1920, -1, -1, 1922, -1, 1924, -1, -1, -1, 1925, -1, 1927, -1, -1, 1930, -1, -1, -1, -1, -1, -1, 1931, 1933, 1935, -1, -1, 1940, -1, 1942, 1947, -1, 1948, -1, -1, 1949, -1, -1, 1950, -1, -1, -1, -1, -1, 1951, -1, -1, 1953, -1, -1, 1954, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, 1962, -1, -1, -1, -1, 1964, 1966, 1967, -1, 1968, -1, 1973, 1975, 1976, 1977, 1979, -1, 1980, 1981, -1, -1, -1, 1984, 1986, -1, -1, -1, 1987, 1989, 1991, 1992, 1993, 1995, -1, 1997, 1999, 2001, 2003, 2004, 2005, 2007, 2009, 2010, -1, -1, /* 0x5900 */ 2012, -1, 2014, -1, 2015, 2017, -1, 2018, -1, 2022, 2024, -1, -1, 2025, -1, 2028, -1, -1, -1, 2029, 2030, -1, -1, -1, 2031, -1, 2033, 2034, 2035, -1, -1, 2036, 2037, -1, 2038, 2040, -1, 2042, -1, -1, -1, 2043, -1, -1, 2046, 2047, -1, -1, -1, -1, 2048, 2050, 2051, -1, 2052, -1, 2053, 2054, 2055, -1, -1, -1, 2056, -1, -1, 2057, 2060, -1, -1, -1, -1, 2061, 2062, -1, -1, 2063, 2064, -1, -1, -1, 2065, -1, -1, -1, 2066, -1, 2068, -1, 2071, 2072, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2073, -1, 2075, 2077, 2080, 2083, -1, 2084, -1, 2087, -1, -1, -1, -1, -1, -1, -1, 2088, -1, 2090, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2092, 2096, 2098, -1, 2099, -1, -1, 2100, -1, -1, -1, -1, 2102, -1, -1, -1, 2103, -1, -1, 2104, -1, 2105, -1, 2106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2110, 2111, 2112, 2114, -1, -1, -1, -1, -1, -1, 2115, -1, -1, -1, 2118, 2120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2122, -1, -1, 2123, 2124, 2125, -1, 2127, -1, -1, 2128, -1, 2129, -1, -1, -1, -1, 2130, -1, 2131, -1, -1, 2132, -1, -1, -1, -1, -1, 2133, -1, -1, -1, 2134, 2136, -1, -1, 2138, 2140, 2141, -1, 2142, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2143, -1, -1, 2145, -1, -1, -1, -1, /* 0x5a00 */ -1, -1, -1, -1, 2146, 2147, 2148, 2149, 2150, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2151, -1, -1, -1, -1, -1, 2152, -1, -1, 2154, -1, -1, -1, 2156, -1, -1, -1, -1, 2157, -1, 2161, -1, -1, -1, -1, -1, -1, 2162, -1, 2163, 2165, 2166, 2168, -1, 2169, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2171, 2173, 2176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2177, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2178, -1, -1, 2179, -1, -1, -1, -1, -1, 2181, 2182, -1, 2183, -1, -1, -1, 2185, 2186, 2189, 2190, -1, -1, -1, -1, -1, -1, -1, -1, 2191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2193, 2195, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2196, -1, -1, 2197, -1, -1, 2198, -1, 2199, -1, -1, -1, -1, -1, -1, -1, -1, 2201, -1, -1, -1, 2202, 2203, -1, 2204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2206, -1, -1, -1, -1, 2208, -1, 2209, -1, 2210, -1, -1, 2211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2212, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2213, -1, -1, -1, 2214, 2215, -1, -1, -1, 2217, 2219, -1, -1, -1, 2221, /* 0x5b00 */ 2222, -1, -1, 2224, -1, -1, -1, -1, 2225, 2226, -1, 2227, 2228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2229, -1, -1, -1, 2230, -1, -1, -1, 2232, 2233, -1, 2235, -1, -1, -1, -1, -1, 2236, -1, -1, 2238, -1, -1, 2240, -1, 2243, -1, -1, -1, -1, 2244, 2245, -1, -1, -1, -1, -1, 2246, -1, -1, -1, -1, 2247, -1, -1, 2249, -1, -1, -1, -1, -1, 2252, -1, -1, -1, -1, -1, 2253, 2254, -1, -1, -1, -1, -1, 2255, -1, -1, -1, -1, -1, -1, 2256, -1, -1, -1, -1, -1, 2257, -1, -1, -1, 2262, 2263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2264, -1, -1, -1, 2269, 2270, 2271, 2274, -1, 2275, 2281, 2282, -1, -1, 2285, -1, 2286, -1, 2287, -1, -1, 2288, -1, -1, 2289, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2291, 2293, 2297, 2299, 2301, 2302, -1, -1, -1, -1, -1, -1, -1, 2304, 2305, 2306, -1, -1, 2307, -1, -1, -1, -1, -1, 2308, -1, 2310, 2311, -1, -1, -1, 2313, 2314, 2316, 2318, -1, 2320, -1, -1, 2321, -1, -1, 2322, 2323, 2325, 2327, -1, -1, 2334, 2335, -1, -1, -1, -1, -1, 2341, -1, 2342, -1, 2348, -1, -1, 2354, 2358, 2360, 2366, -1, 2367, 2368, -1, 2370, -1, -1, -1, 2371, 2373, -1, 2379, -1, 2381, 2383, -1, -1, -1, -1, -1, -1, 2385, -1, 2389, 2390, -1, -1, 2394, -1, 2396, 2397, -1, 2398, 2400, /* 0x5c00 */ -1, -1, 2402, -1, -1, 2404, 2407, 2408, 2409, 2411, -1, 2412, -1, 2413, 2415, -1, -1, -1, 2416, 2419, 2422, -1, -1, -1, 2425, 2426, 2427, 2428, -1, 2432, 2435, 2436, 2441, -1, 2446, 2449, 2450, 2452, 2453, 2454, -1, 2457, -1, 2458, 2459, 2460, -1, -1, -1, -1, 2463, -1, 2468, -1, 2473, 2478, 2483, -1, -1, -1, -1, 2484, -1, -1, 2487, -1, 2489, 2490, -1, 2491, 2492, -1, -1, -1, 2493, -1, 2494, 2496, 2497, 2498, -1, -1, -1, 2500, -1, -1, -1, -1, -1, -1, -1, 2501, -1, -1, 2503, -1, -1, 2504, 2505, -1, 2506, -1, 2507, -1, 2508, -1, -1, -1, 2509, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2510, 2511, 2512, 2516, -1, -1, 2517, -1, -1, 2519, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2520, 2521, 2522, -1, 2523, 2524, -1, -1, -1, -1, -1, 2531, -1, -1, -1, -1, -1, -1, -1, 2532, -1, -1, -1, 2538, -1, -1, -1, -1, -1, 2539, 2540, -1, -1, -1, -1, -1, -1, -1, -1, 2541, -1, 2542, -1, -1, -1, 2543, 2544, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2545, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2546, -1, -1, -1, 2547, -1, 2548, 2549, 2550, 2551, -1, 2552, 2553, -1, -1, -1, -1, -1, 2554, 2555, -1, -1, -1, 2556, 2557, 2560, -1, -1, -1, -1, -1, -1, 2567, -1, -1, /* 0x5d00 */ -1, -1, 2568, 2569, 2570, -1, -1, 2571, 2572, -1, -1, 2573, -1, 2575, 2576, -1, -1, -1, -1, -1, -1, -1, 2579, 2580, 2581, 2583, -1, -1, -1, -1, -1, -1, -1, -1, 2585, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2586, 2587, -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, 2589, -1, -1, -1, 2590, -1, 2591, 2594, -1, -1, -1, 2597, 2601, -1, 2604, -1, 2605, 2608, -1, -1, 2609, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2611, -1, -1, -1, 2612, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2613, -1, 2614, 2615, -1, -1, 2616, -1, -1, -1, 2618, 2625, -1, -1, -1, -1, -1, -1, -1, 2632, -1, -1, 2633, -1, -1, -1, -1, -1, -1, -1, -1, 2634, -1, 2635, -1, -1, -1, -1, 2636, 2637, -1, -1, -1, -1, -1, 2638, -1, -1, -1, 2639, 2640, 2643, -1, -1, -1, 2645, 2648, 2655, -1, 2656, 2657, -1, -1, -1, -1, -1, -1, -1, 2658, 2660, -1, -1, -1, -1, 2663, 2664, -1, -1, -1, -1, -1, 2667, 2668, 2669, -1, 2670, 2673, -1, -1, -1, 2676, -1, 2677, -1, -1, 2678, -1, 2679, 2680, -1, -1, -1, -1, -1, 2681, -1, -1, -1, -1, -1, 2682, 2683, -1, -1, -1, -1, 2684, -1, 2685, -1, -1, 2686, 2687, -1, 2689, -1, 2690, /* 0x5e00 */ 2692, 2694, -1, 2697, -1, 2698, -1, -1, 2699, -1, -1, 2700, -1, -1, -1, 2701, 2702, 2703, 2704, -1, -1, 2705, -1, -1, 2706, -1, 2707, -1, 2708, -1, -1, -1, -1, -1, -1, -1, -1, 2710, 2711, 2713, -1, -1, -1, 2714, -1, 2715, 2716, 2719, 2721, 2724, -1, 2725, -1, -1, 2726, -1, -1, -1, -1, 2728, 2729, 2730, -1, -1, 2731, -1, 2732, 2734, -1, -1, -1, 2735, 2738, -1, -1, -1, 2740, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2741, 2742, -1, 2743, -1, -1, -1, -1, 2746, -1, 2748, -1, 2749, 2751, -1, -1, -1, -1, -1, -1, 2753, 2756, -1, -1, -1, -1, -1, 2757, -1, 2760, -1, 2761, 2767, 2768, 2769, 2771, -1, -1, -1, 2772, 2773, -1, 2776, -1, 2778, 2780, 2782, 2786, -1, -1, -1, 2787, -1, -1, -1, -1, -1, 2788, 2789, -1, 2790, 2791, -1, -1, -1, -1, 2793, -1, -1, -1, -1, 2794, 2795, -1, -1, -1, -1, -1, -1, -1, 2797, -1, -1, -1, 2798, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2799, 2803, -1, -1, -1, 2804, 2809, 2810, 2811, -1, 2812, -1, 2813, 2815, 2816, -1, -1, -1, -1, 2818, -1, -1, -1, -1, -1, 2819, 2820, 2822, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2824, 2825, -1, 2828, -1, 2829, 2831, 2833, 2834, 2836, -1, -1, -1, -1, -1, 2838, 2839, -1, 2840, -1, -1, -1, 2841, -1, -1, 2844, -1, -1, -1, -1, 2848, -1, -1, 2849, 2855, 2857, -1, -1, /* 0x5f00 */ 2863, 2864, 2871, 2872, 2873, -1, -1, -1, -1, 2875, -1, -1, 2876, 2877, 2878, -1, 2880, 2883, 2884, -1, 2885, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2886, -1, -1, -1, -1, 2887, 2889, -1, -1, -1, 2890, -1, -1, -1, -1, 2891, -1, -1, -1, 2892, -1, 2893, -1, 2894, -1, 2895, 2897, 2898, 2899, -1, 2900, -1, -1, -1, -1, -1, -1, -1, 2902, -1, 2903, -1, -1, -1, 2905, -1, 2906, -1, 2907, 2908, 2909, 2912, 2914, 2915, -1, 2918, -1, 2919, 2921, 2923, 2926, 2929, 2932, 2935, 2936, -1, -1, -1, -1, 2938, 2939, -1, 2940, 2941, -1, 2942, 2943, -1, -1, -1, -1, -1, 2945, -1, 2946, -1, -1, 2947, -1, -1, -1, 2950, -1, -1, -1, 2951, 2953, 2955, -1, 2958, 2959, -1, -1, 2962, 2963, -1, 2964, -1, 2965, -1, -1, 2966, -1, 2967, -1, 2970, -1, 2972, -1, -1, -1, -1, -1, -1, -1, -1, 2974, -1, 2976, 2978, -1, 2979, 2981, -1, -1, -1, -1, 2982, -1, -1, 2984, 2987, -1, -1, 2988, 2989, -1, 2990, 2993, 2995, -1, 2997, -1, 3000, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3001, 3002, -1, 3003, -1, -1, -1, -1, -1, -1, -1, 3004, 3005, -1, -1, -1, -1, -1, -1, -1, 3007, -1, 3008, -1, -1, 3009, -1, -1, -1, -1, -1, 3011, 3012, -1, -1, -1, 3013, -1, 3014, -1, -1, -1, -1, -1, -1, 3017, -1, -1, -1, -1, 3018, -1, -1, -1, -1, -1, -1, -1, -1, 3019, -1, /* 0x6000 */ 3020, 3022, 3023, 3024, 3025, 3026, 3027, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3028, -1, 3029, -1, -1, -1, -1, -1, 3030, 3031, -1, -1, -1, -1, -1, 3032, -1, 3034, -1, -1, -1, -1, 3035, -1, -1, -1, -1, -1, -1, 3036, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3039, 3044, -1, -1, 3045, -1, -1, -1, -1, -1, -1, 3046, -1, -1, -1, -1, 3047, -1, -1, -1, -1, -1, -1, 3048, 3049, -1, -1, 3051, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3052, 3053, -1, -1, 3055, 3057, -1, -1, -1, -1, 3058, -1, -1, -1, -1, -1, -1, 3059, -1, 3061, 3062, 3065, 3066, -1, 3070, 3071, 3072, 3073, 3074, 3076, 3077, 3078, 3080, -1, -1, -1, -1, 3082, -1, -1, -1, -1, 3084, 3089, -1, 3090, -1, -1, -1, 3091, -1, 3092, -1, -1, 3093, -1, -1, -1, -1, -1, -1, -1, 3095, 3096, -1, -1, 3097, -1, 3098, -1, 3101, -1, -1, 3103, 3105, 3108, 3109, 3110, -1, 3111, -1, -1, -1, 3112, 3115, 3116, 3117, -1, -1, -1, -1, -1, -1, 3118, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3120, -1, -1, -1, -1, -1, -1, -1, 3122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3125, -1, 3127, 3128, -1, 3131, -1, 3132, -1, 3134, 3135, 3136, -1, 3137, 3138, 3139, 3141, 3142, -1, 3143, 3145, -1, -1, -1, -1, 3146, -1, -1, -1, 3147, 3148, -1, -1, -1, /* 0x6100 */ -1, -1, 3149, -1, -1, -1, -1, -1, 3151, -1, -1, -1, -1, -1, -1, -1, -1, 3153, -1, -1, -1, -1, -1, -1, -1, 3155, -1, 3156, 3157, -1, -1, -1, 3158, 3159, -1, -1, 3160, -1, 3161, 3162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3164, 3165, -1, -1, 3166, -1, 3167, -1, -1, 3169, 3170, 3171, 3172, -1, -1, 3173, -1, 3175, -1, -1, 3176, -1, -1, -1, 3177, -1, 3178, 3179, -1, -1, 3182, -1, -1, -1, -1, -1, -1, 3184, 3185, 3187, -1, -1, -1, -1, 3189, -1, -1, -1, 3191, 3192, -1, -1, -1, -1, -1, 3193, 3194, -1, 3195, 3196, -1, -1, -1, -1, 3197, 3198, -1, 3199, -1, -1, -1, -1, -1, 3200, 3202, 3204, 3205, -1, 3208, 3209, -1, -1, 3210, -1, 3211, -1, -1, 3212, -1, -1, -1, -1, -1, 3213, 3214, 3217, -1, 3218, -1, 3220, 3222, 3223, 3226, 3229, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3230, 3231, -1, -1, -1, 3234, -1, 3235, -1, -1, 3236, -1, -1, -1, 3237, -1, -1, -1, 3238, -1, -1, -1, -1, 3239, -1, -1, -1, -1, -1, -1, -1, 3240, -1, -1, -1, 3241, -1, 3242, -1, -1, 3244, 3245, -1, -1, 3246, 3248, 3249, -1, 3251, -1, -1, -1, -1, -1, -1, -1, 3252, -1, 3253, 3254, -1, -1, -1, 3255, -1, -1, 3256, 3257, 3258, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3259, -1, 3260, 3262, 3263, 3264, 3266, -1, 3267, -1, 3268, 3270, 3271, 3272, /* 0x6200 */ 3273, -1, -1, -1, -1, -1, 3274, 3275, -1, -1, -1, 3276, -1, -1, -1, 3277, -1, -1, -1, -1, 3279, -1, -1, 3280, 3281, -1, 3283, 3285, -1, 3286, 3288, -1, -1, -1, -1, -1, -1, -1, 3289, 3291, -1, 3292, -1, -1, 3293, -1, 3294, 3296, 3298, -1, 3300, -1, -1, -1, 3302, 3304, 3306, 3308, -1, 3309, 3310, -1, 3312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3313, 3314, 3315, 3316, -1, -1, 3318, -1, -1, -1, 3320, -1, 3321, 3322, -1, -1, -1, -1, -1, 3324, -1, 3325, -1, -1, 3326, -1, -1, -1, 3327, 3328, 3330, 3332, 3333, 3334, -1, -1, 3335, 3336, -1, -1, -1, -1, 3337, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3338, -1, -1, -1, -1, -1, -1, 3340, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3341, 3342, 3343, 3344, 3345, 3347, 3348, 3349, 3350, -1, 3351, 3352, -1, -1, -1, -1, -1, -1, 3353, -1, -1, -1, -1, -1, -1, -1, -1, 3354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3357, -1, -1, 3358, -1, -1, 3359, -1, -1, 3360, -1, -1, -1, 3361, 3362, -1, -1, 3364, 3365, 3366, 3367, 3368, -1, -1, -1, -1, 3369, 3370, 3371, 3372, 3373, 3375, 3378, 3379, -1, 3380, 3381, 3382, 3383, 3385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3387, /* 0x6300 */ -1, -1, 3388, -1, 3389, -1, -1, -1, -1, -1, 3391, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3393, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3409, -1, 3411, -1, -1, -1, -1, -1, 3412, 3413, 3414, -1, 3415, -1, -1, -1, -1, 3418, -1, -1, -1, -1, -1, -1, 3421, -1, 3422, -1, -1, -1, -1, -1, -1, -1, 3423, -1, -1, -1, -1, 3424, -1, 3425, 3426, -1, 3427, 3428, 3429, -1, -1, -1, -1, 3431, -1, -1, 3432, -1, -1, 3433, -1, -1, -1, 3435, -1, 3437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3438, -1, -1, -1, 3440, 3442, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3443, -1, 3444, -1, 3445, -1, -1, -1, -1, -1, 3446, -1, -1, -1, 3447, -1, -1, -1, -1, -1, -1, 3448, -1, -1, -1, -1, -1, 3449, 3450, 3451, -1, -1, 3452, 3453, -1, 3454, 3455, 3456, 3457, -1, -1, 3458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3459, 3460, -1, -1, -1, -1, -1, -1, -1, 3461, 3462, -1, -1, -1, -1, 3463, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3464, 3465, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3466, 3467, -1, -1, 3469, -1, 3470, /* 0x6400 */ 3471, 3472, 3473, 3474, -1, 3475, 3478, -1, -1, -1, -1, -1, -1, 3479, -1, -1, -1, -1, 3480, -1, 3481, -1, 3482, 3484, -1, -1, -1, -1, 3485, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3487, -1, -1, -1, -1, 3488, -1, -1, -1, -1, 3489, -1, -1, -1, 3490, -1, -1, -1, 3491, -1, -1, -1, 3493, -1, -1, -1, 3494, -1, 3496, 3498, 3499, 3501, 3503, -1, 3504, -1, -1, -1, -1, -1, -1, 3505, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3506, -1, -1, 3507, 3508, -1, -1, -1, -1, -1, -1, -1, -1, 3511, -1, -1, -1, -1, -1, 3512, -1, -1, -1, 3513, -1, -1, 3514, -1, -1, -1, -1, 3515, -1, -1, -1, -1, -1, -1, -1, 3516, 3518, -1, -1, -1, 3519, -1, -1, -1, -1, -1, -1, 3520, 3521, 3522, -1, 3523, -1, -1, -1, -1, 3524, -1, 3525, -1, -1, -1, -1, 3526, -1, 3527, -1, 3528, -1, 3529, 3531, 3532, -1, -1, -1, 3535, -1, -1, -1, -1, -1, -1, 3536, 3538, -1, 3539, -1, 3540, 3541, 3542, 3545, 3546, -1, -1, 3547, 3548, -1, 3549, -1, -1, 3550, -1, -1, 3551, 3553, -1, 3555, 3557, -1, 3558, -1, -1, -1, 3559, -1, -1, 3560, 3561, -1, -1, -1, -1, 3563, -1, -1, -1, 3565, -1, 3566, 3567, -1, 3568, -1, 3569, -1, 3570, -1, -1, -1, -1, 3573, -1, -1, 3574, 3575, 3576, 3577, -1, 3578, 3581, -1, 3582, -1, -1, 3584, 3585, 3586, 3587, 3588, -1, /* 0x6500 */ 3589, -1, -1, -1, 3590, 3591, 3592, -1, 3593, -1, 3594, -1, -1, -1, -1, 3595, -1, -1, 3596, -1, 3597, -1, 3598, -1, -1, 3599, -1, 3600, 3601, 3603, -1, 3605, -1, -1, 3606, 3608, 3609, -1, -1, -1, 3610, -1, 3611, 3614, 3615, -1, -1, -1, -1, -1, -1, -1, 3617, 3618, 3619, 3620, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3621, 3625, 3628, -1, -1, 3629, 3630, 3632, 3633, -1, -1, -1, -1, -1, 3634, -1, 3636, 3638, 3640, -1, 3641, -1, -1, 3643, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3644, -1, -1, -1, -1, -1, -1, 3649, -1, -1, -1, -1, 3650, -1, 3651, 3652, -1, 3653, -1, -1, -1, -1, -1, -1, 3657, 3658, 3660, -1, 3661, 3666, -1, 3671, 3676, 3680, 3684, 3686, 3688, 3689, -1, -1, -1, -1, 3691, 3692, 3694, -1, 3695, -1, -1, -1, -1, -1, -1, 3700, 3702, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3703, -1, -1, 3704, 3705, -1, -1, -1, -1, 3706, -1, -1, 3707, -1, 3708, -1, -1, -1, -1, 3709, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3712, 3713, -1, -1, -1, -1, -1, -1, -1, -1, 3714, -1, -1, -1, -1, 3715, 3717, 3719, -1, 3721, -1, -1, -1, -1, 3722, -1, -1, -1, -1, 3723, -1, 3724, -1, -1, 3725, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3728, 3730, 3733, 3734, 3736, -1, -1, -1, 3737, 3738, /* 0x6600 */ -1, -1, 3739, -1, -1, -1, -1, 3740, -1, -1, 3742, -1, -1, -1, 3743, 3744, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3745, 3746, -1, -1, -1, -1, 3747, -1, -1, -1, -1, -1, 3748, 3749, -1, -1, -1, -1, -1, 3750, 3751, -1, 3752, 3753, -1, -1, -1, -1, -1, -1, -1, 3754, -1, -1, 3755, 3756, 3758, 3759, 3761, -1, -1, 3763, 3765, 3766, -1, -1, -1, -1, 3767, -1, 3768, -1, -1, -1, -1, -1, -1, 3769, 3770, 3772, 3773, 3774, -1, -1, -1, 3775, -1, -1, 3776, -1, 3778, 3779, -1, -1, -1, 3780, -1, -1, -1, 3781, 3782, -1, -1, -1, -1, 3783, -1, -1, -1, -1, -1, 3784, -1, -1, -1, -1, -1, -1, 3786, -1, -1, -1, -1, 3787, 3788, 3790, 3791, -1, -1, -1, -1, 3793, 3794, -1, -1, -1, -1, -1, -1, -1, -1, 3795, -1, -1, -1, 3796, 3798, 3803, -1, -1, -1, 3804, -1, -1, -1, -1, -1, 3805, -1, 3806, -1, 3809, 3812, 3813, -1, -1, 3814, -1, 3815, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3817, -1, -1, -1, -1, -1, -1, -1, -1, 3819, -1, -1, 3820, -1, 3821, 3825, -1, 3826, -1, -1, 3828, 3832, -1, 3833, -1, -1, -1, -1, -1, -1, 3834, -1, -1, -1, -1, -1, -1, -1, -1, 3835, 3836, -1, -1, -1, -1, -1, -1, -1, 3838, -1, -1, -1, 3839, -1, -1, -1, -1, -1, 3840, 3845, -1, 3846, -1, -1, 3847, 3850, 3851, 3852, -1, 3854, 3855, -1, /* 0x6700 */ 3856, -1, 3857, 3859, -1, -1, -1, 3860, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3861, 3862, -1, 3863, -1, 3864, -1, -1, 3865, 3866, -1, -1, 3867, -1, -1, -1, -1, 3868, -1, -1, -1, -1, 3869, 3871, 3872, 3873, -1, 3875, -1, -1, 3876, 3878, 3879, -1, -1, -1, 3880, -1, -1, -1, -1, -1, 3882, -1, 3883, 3886, -1, -1, 3888, 3889, -1, 3890, -1, -1, -1, -1, -1, -1, -1, 3893, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3894, 3895, -1, -1, 3896, 3897, 3898, -1, 3899, 3900, -1, -1, -1, -1, -1, 3901, 3903, 3904, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3905, 3911, 3912, 3917, -1, -1, 3918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3920, -1, -1, 3921, -1, -1, -1, -1, -1, -1, 3925, -1, -1, 3928, -1, 3929, -1, -1, 3930, 3931, 3932, -1, 3933, 3934, 3935, 3936, 3937, 3942, 3945, -1, 3946, -1, -1, -1, 3947, -1, -1, 3950, -1, -1, -1, -1, -1, -1, 3952, -1, -1, -1, -1, -1, 3953, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3954, -1, -1, -1, -1, -1, 3955, -1, 3956, -1, -1, -1, -1, 3961, -1, -1, -1, 3962, -1, -1, -1, -1, 3963, -1, -1, -1, 3964, -1, -1, -1, -1, -1, -1, 3966, -1, -1, 3967, -1, 3970, -1, -1, -1, 3971, 3972, 3974, -1, 3975, 3976, 3978, /* 0x6800 */ 3979, 3980, -1, 3983, 3985, 3987, -1, 3988, 3989, 3991, 3992, 3994, 3995, -1, 3997, 3999, -1, 4001, -1, -1, -1, -1, 4002, 4004, -1, -1, -1, -1, -1, -1, 4006, -1, -1, -1, 4007, -1, -1, -1, -1, 4008, -1, -1, -1, -1, -1, -1, -1, -1, 4009, -1, -1, -1, -1, -1, -1, 4011, 4013, -1, -1, -1, -1, -1, 4014, -1, -1, -1, 4016, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4017, -1, -1, -1, -1, 4019, 4020, -1, -1, -1, -1, -1, 4021, -1, -1, -1, 4022, 4024, -1, 4025, 4027, 4030, 4031, 4032, 4033, 4034, 4036, 4037, 4038, 4039, 4040, -1, -1, -1, 4041, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4043, 4044, -1, 4047, -1, -1, 4048, -1, 4049, -1, -1, 4051, 4052, -1, -1, -1, -1, -1, -1, -1, 4054, -1, -1, -1, -1, -1, -1, 4056, -1, -1, -1, 4057, -1, -1, -1, -1, 4058, -1, 4059, -1, -1, -1, -1, -1, 4060, 4065, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4067, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4069, -1, 4070, 4071, 4072, -1, 4074, -1, 4075, -1, -1, -1, -1, -1, 4076, 4080, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4084, 4085, 4086, -1, -1, -1, -1, -1, -1, -1, 4087, -1, -1, -1, -1, -1, 4088, -1, 4089, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4091, 4092, -1, -1, -1, 4094, -1, -1, 4095, -1, -1, -1, -1, -1, -1, /* 0x6900 */ 4096, 4097, -1, -1, -1, -1, -1, -1, -1, 4098, -1, -1, -1, -1, 4100, 4101, -1, -1, -1, -1, -1, -1, -1, 4104, 4106, 4107, -1, -1, 4108, -1, -1, 4110, 4111, -1, 4112, -1, 4113, -1, -1, -1, -1, -1, -1, 4114, -1, 4115, -1, -1, 4116, -1, -1, -1, 4117, -1, 4118, -1, -1, 4119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4120, -1, -1, 4121, -1, -1, -1, -1, -1, 4123, -1, 4124, -1, -1, -1, 4125, 4126, -1, -1, -1, -1, -1, 4127, 4128, -1, -1, -1, 4129, 4130, -1, 4131, -1, 4132, 4133, -1, 4134, -1, -1, -1, -1, -1, 4135, -1, 4137, -1, -1, -1, -1, -1, -1, 4138, 4139, -1, 4141, -1, -1, -1, -1, 4142, 4143, 4144, 4145, 4146, 4147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4149, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4150, -1, 4152, -1, 4153, -1, -1, -1, 4154, -1, -1, -1, 4156, -1, 4157, -1, -1, -1, -1, -1, -1, -1, 4158, -1, -1, 4159, -1, -1, -1, -1, -1, -1, -1, 4160, 4161, -1, -1, 4163, -1, 4164, -1, -1, -1, 4165, -1, 4167, 4168, 4170, -1, 4172, 4174, 4176, 4177, 4178, -1, -1, 4180, 4181, 4182, -1, -1, -1, 4183, -1, -1, 4184, 4185, -1, -1, -1, -1, -1, -1, -1, -1, 4186, -1, 4187, -1, -1, 4188, -1, -1, 4189, -1, -1, -1, -1, -1, -1, /* 0x6a00 */ -1, 4190, 4191, 4193, -1, 4194, -1, -1, -1, -1, 4195, -1, -1, -1, -1, -1, 4196, 4197, 4199, 4200, -1, -1, -1, -1, -1, 4201, -1, -1, -1, -1, 4202, -1, -1, -1, -1, 4203, -1, -1, -1, -1, -1, 4205, 4207, -1, -1, -1, -1, 4209, -1, 4211, -1, 4213, -1, -1, -1, 4214, 4218, 4220, 4221, -1, -1, 4222, -1, 4223, -1, -1, -1, 4224, -1, -1, -1, -1, 4226, -1, 4227, 4228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4230, -1, -1, 4231, -1, -1, -1, -1, -1, -1, -1, -1, 4233, -1, -1, 4235, -1, 4238, 4239, -1, -1, -1, -1, -1, -1, -1, 4240, -1, -1, 4243, -1, -1, -1, -1, 4244, -1, 4245, -1, -1, 4246, -1, -1, 4247, -1, -1, -1, -1, -1, 4248, 4250, -1, -1, -1, 4251, -1, -1, 4252, 4254, -1, -1, -1, 4255, 4256, -1, 4257, -1, -1, 4258, 4260, -1, -1, -1, -1, -1, 4261, 4262, -1, -1, -1, 4264, 4265, -1, 4267, -1, 4271, -1, -1, -1, -1, 4272, -1, -1, 4273, -1, -1, -1, -1, 4274, 4278, 4279, 4280, -1, -1, -1, -1, 4281, -1, -1, -1, 4282, -1, 4283, -1, -1, -1, -1, 4285, 4287, 4288, -1, -1, -1, -1, 4289, 4290, -1, 4291, 4292, 4293, -1, -1, -1, -1, -1, 4295, -1, 4296, 4297, -1, 4298, -1, 4299, -1, -1, -1, -1, -1, -1, 4300, -1, -1, -1, -1, 4301, -1, 4302, 4303, -1, 4305, -1, -1, /* 0x6b00 */ -1, -1, -1, -1, 4306, 4308, -1, -1, -1, 4309, 4313, -1, -1, -1, -1, 4315, -1, 4316, 4317, -1, -1, -1, 4319, 4320, -1, -1, -1, -1, -1, 4322, 4325, -1, 4327, -1, 4329, 4333, 4336, -1, -1, 4337, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4338, -1, -1, 4339, -1, -1, -1, -1, -1, 4340, -1, 4341, 4342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4343, -1, 4344, -1, 4346, -1, -1, 4347, -1, -1, 4349, -1, 4352, -1, -1, 4353, -1, 4355, -1, 4356, -1, 4357, -1, -1, -1, 4359, -1, -1, 4361, 4363, -1, -1, 4365, -1, 4366, 4369, -1, -1, 4371, 4375, 4379, -1, -1, 4382, 4385, 4388, 4389, -1, 4390, -1, 4392, 4396, 4400, 4401, -1, -1, -1, -1, -1, 4405, -1, -1, -1, 4406, -1, -1, -1, -1, -1, -1, 4407, 4408, -1, -1, -1, -1, 4409, -1, 4410, -1, -1, -1, 4411, -1, -1, 4412, -1, -1, 4413, -1, -1, -1, -1, -1, -1, 4414, -1, -1, 4415, 4416, -1, 4417, 4419, -1, 4421, -1, -1, 4422, -1, -1, 4423, 4424, 4426, -1, -1, -1, 4428, 4429, 4432, -1, -1, -1, 4433, -1, -1, 4434, -1, -1, -1, -1, 4436, 4437, -1, -1, -1, 4438, 4440, 4441, -1, 4442, 4443, 4444, -1, -1, -1, -1, -1, 4445, -1, 4446, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4447, -1, 4448, -1, -1, -1, -1, -1, -1, 4449, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4450, /* 0x6c00 */ -1, -1, 4451, -1, -1, -1, -1, 4453, 4454, -1, 4456, -1, 4457, -1, -1, -1, -1, -1, -1, -1, 4458, -1, -1, 4461, -1, -1, -1, 4464, -1, -1, -1, -1, -1, -1, 4465, 4466, -1, -1, -1, -1, -1, 4469, -1, 4470, 4471, -1, -1, -1, -1, -1, 4472, 4473, 4474, 4476, -1, 4478, -1, -1, 4481, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4483, -1, 4487, -1, -1, -1, -1, 4488, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4489, 4491, -1, -1, -1, -1, -1, -1, 4493, -1, -1, 4495, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4496, 4497, -1, -1, -1, -1, 4498, 4499, 4500, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4501, 4503, -1, -1, -1, -1, -1, -1, -1, -1, 4504, -1, -1, -1, 4505, 4506, -1, -1, -1, -1, -1, -1, -1, 4507, -1, 4508, 4513, 4515, 4516, 4517, 4518, 4519, 4520, 4521, 4522, -1, -1, -1, 4524, -1, -1, 4525, 4526, -1, -1, 4527, -1, -1, -1, -1, -1, -1, -1, -1, 4528, -1, -1, 4529, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4530, -1, -1, -1, -1, -1, 4532, -1, 4533, 4534, -1, -1, -1, -1, -1, -1, 4535, -1, -1, 4536, -1, 4537, -1, -1, -1, -1, 4539, 4540, -1, -1, -1, -1, -1, 4541, 4542, 4544, -1, 4545, 4546, 4547, 4550, 4552, -1, /* 0x6d00 */ -1, 4553, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4554, -1, -1, -1, -1, -1, 4555, -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, 4556, -1, -1, -1, -1, -1, -1, 4557, -1, -1, -1, -1, -1, 4558, -1, -1, -1, 4559, -1, -1, 4560, 4561, 4562, 4563, 4564, 4565, 4566, 4567, 4568, -1, 4569, 4570, 4572, 4574, 4575, 4576, 4577, 4578, 4579, -1, -1, -1, -1, -1, -1, 4580, -1, -1, -1, -1, -1, -1, 4583, -1, -1, -1, 4584, -1, 4587, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4588, -1, -1, 4589, -1, -1, -1, -1, -1, 4590, -1, -1, 4592, -1, 4593, -1, 4594, -1, -1, 4595, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4596, -1, -1, 4598, -1, 4600, 4601, 4603, 4604, 4605, 4606, 4607, 4608, 4609, 4610, -1, 4611, 4612, 4614, 4615, -1, -1, -1, -1, -1, 4619, -1, -1, -1, -1, -1, -1, -1, -1, 4620, -1, -1, -1, 4621, -1, -1, -1, 4622, -1, -1, -1, 4623, -1, -1, -1, -1, -1, -1, 4624, -1, -1, -1, -1, -1, -1, 4625, -1, -1, -1, -1, -1, -1, -1, 4626, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4628, -1, -1, 4629, -1, 4631, 4632, -1, -1, -1, -1, -1, -1, -1, 4634, -1, 4635, 4638, -1, 4639, -1, 4640, 4641, -1, -1, -1, -1, /* 0x6e00 */ -1, -1, -1, -1, -1, 4642, -1, 4643, 4644, 4646, 4647, 4650, 4654, 4655, 4656, -1, 4658, 4659, -1, 4660, 4664, 4665, 4668, 4669, -1, 4670, -1, 4671, -1, -1, -1, -1, -1, -1, 4672, -1, -1, -1, 4673, -1, -1, 4674, -1, -1, 4675, -1, -1, -1, -1, -1, -1, -1, 4676, -1, -1, -1, 4677, -1, -1, -1, -1, -1, 4679, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4680, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4681, -1, -1, -1, -1, -1, -1, -1, -1, 4682, -1, -1, -1, -1, -1, -1, -1, 4683, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4684, 4685, 4686, 4687, 4688, 4690, 4692, 4693, 4694, -1, 4695, -1, 4696, -1, 4697, -1, -1, 4698, -1, -1, -1, 4701, -1, -1, -1, -1, 4702, 4704, -1, -1, -1, -1, -1, 4706, 4707, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4708, 4712, -1, -1, 4713, 4714, -1, -1, -1, 4716, -1, -1, 4717, -1, -1, -1, -1, -1, 4719, -1, -1, -1, -1, -1, -1, -1, 4721, 4722, -1, -1, -1, -1, -1, -1, 4723, -1, 4724, -1, -1, -1, -1, -1, -1, -1, -1, 4725, -1, 4726, 4728, 4729, -1, 4730, 4732, 4733, 4736, 4737, 4739, -1, 4740, 4741, 4742, -1, 4743, 4746, 4747, -1, 4748, -1, -1, 4750, -1, -1, 4751, -1, -1, -1, -1, 4752, 4755, -1, -1, 4757, -1, -1, 4758, 4759, /* 0x6f00 */ -1, 4761, -1, -1, 4762, -1, 4763, -1, -1, -1, 4764, -1, -1, -1, -1, -1, -1, 4765, -1, 4766, -1, -1, -1, -1, -1, -1, 4767, -1, -1, -1, -1, -1, -1, -1, 4768, 4769, -1, -1, -1, 4770, -1, -1, -1, 4773, 4774, -1, -1, -1, -1, 4775, 4776, -1, -1, -1, -1, -1, 4777, -1, -1, -1, -1, -1, -1, 4778, -1, 4779, -1, -1, 4780, 4781, 4782, 4783, -1, -1, -1, 4784, -1, 4785, -1, -1, -1, 4786, -1, -1, 4789, -1, -1, -1, -1, 4791, -1, 4792, 4794, -1, -1, -1, -1, -1, -1, -1, 4796, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4797, 4798, -1, -1, -1, 4799, -1, -1, 4800, -1, -1, -1, -1, -1, -1, -1, 4801, 4802, 4806, 4810, -1, 4813, -1, 4816, 4817, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4818, -1, -1, 4819, -1, -1, 4820, -1, -1, 4821, 4822, 4825, -1, -1, 4826, 4828, -1, -1, 4829, 4830, -1, 4832, -1, -1, 4833, -1, -1, -1, -1, 4834, -1, 4835, 4836, -1, 4837, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4838, -1, 4839, -1, -1, -1, 4840, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4841, 4843, -1, 4844, 4845, -1, -1, 4847, -1, 4848, 4850, 4852, -1, -1, 4853, -1, -1, -1, -1, 4855, -1, -1, -1, -1, -1, -1, 4856, -1, -1, -1, -1, 4857, 4858, -1, 4861, -1, 4863, 4866, -1, -1, -1, 4868, -1, 4869, -1, 4870, -1, /* 0x7000 */ -1, -1, 4871, -1, -1, 4874, 4875, -1, -1, 4877, -1, 4878, -1, -1, -1, 4880, -1, -1, -1, 4881, -1, 4884, -1, -1, 4885, -1, -1, -1, -1, 4886, -1, 4887, 4888, -1, -1, -1, -1, -1, 4889, 4890, 4892, -1, -1, -1, 4894, -1, -1, 4896, 4897, -1, 4898, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4900, -1, -1, -1, -1, 4901, 4902, -1, -1, -1, -1, -1, -1, 4903, 4905, -1, 4906, 4908, -1, 4909, -1, -1, 4910, 4912, -1, -1, 4913, -1, -1, -1, -1, 4914, -1, -1, -1, -1, -1, 4915, 4916, -1, -1, 4917, -1, -1, -1, -1, -1, 4918, 4919, 4921, -1, -1, -1, -1, -1, 4922, 4925, -1, -1, -1, -1, 4927, -1, 4929, 4931, 4933, 4934, 4935, -1, -1, -1, -1, -1, -1, -1, 4938, -1, -1, -1, 4941, 4943, 4944, -1, -1, -1, -1, -1, -1, -1, 4945, -1, -1, -1, -1, 4947, 4948, -1, -1, -1, -1, -1, -1, 4949, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4954, 4957, 4958, -1, -1, -1, -1, -1, -1, -1, -1, 4959, 4960, -1, 4962, 4965, -1, -1, -1, 4966, 4967, 4970, -1, -1, -1, -1, -1, -1, 4971, -1, -1, -1, -1, 4972, -1, -1, -1, -1, -1, -1, 4973, -1, -1, -1, -1, 4975, -1, -1, -1, 4976, -1, -1, -1, -1, -1, -1, 4977, 4978, 4980, 4982, -1, 4983, 4984, 4985, -1, -1, -1, 4986, -1, -1, 4987, -1, -1, -1, -1, -1, -1, -1, -1, 4988, 4989, -1, /* 0x7100 */ -1, -1, -1, -1, -1, -1, -1, 4991, 4992, -1, 4996, -1, -1, -1, -1, 4997, -1, -1, -1, -1, 4998, 5000, 5001, -1, 5002, -1, 5003, -1, -1, -1, -1, -1, -1, 5005, -1, -1, -1, -1, 5006, -1, -1, -1, -1, -1, -1, 5007, -1, -1, 5008, -1, -1, 5010, -1, -1, -1, -1, -1, -1, -1, -1, 5011, -1, -1, -1, -1, -1, -1, -1, -1, 5013, -1, -1, -1, 5014, -1, -1, -1, -1, -1, -1, -1, 5017, 5018, -1, -1, 5019, 5023, 5024, -1, 5025, -1, -1, -1, -1, -1, -1, -1, -1, 5026, -1, -1, 5028, -1, 5029, -1, 5033, -1, -1, 5034, -1, 5036, -1, -1, -1, -1, -1, 5037, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5039, -1, -1, -1, -1, -1, -1, 5041, -1, -1, 5043, -1, -1, -1, -1, -1, -1, 5047, -1, -1, 5048, -1, 5049, -1, -1, 5051, -1, 5052, -1, -1, -1, -1, -1, -1, -1, -1, 5056, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5057, 5058, 5059, -1, -1, -1, -1, -1, 5060, 5061, -1, -1, -1, 5062, -1, -1, 5063, -1, -1, 5065, -1, -1, -1, 5067, -1, -1, -1, 5068, -1, 5070, -1, 5071, -1, 5073, 5075, -1, 5077, -1, 5078, -1, 5081, -1, -1, 5082, -1, -1, 5083, -1, -1, -1, -1, -1, -1, 5085, -1, -1, -1, -1, -1, 5086, 5087, -1, -1, -1, -1, -1, 5088, 5092, -1, -1, -1, -1, -1, -1, 5093, 5094, -1, 5095, 5096, /* 0x7200 */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5097, -1, -1, 5098, -1, -1, -1, -1, -1, -1, 5099, -1, -1, -1, 5101, -1, -1, -1, -1, -1, -1, -1, -1, 5104, -1, -1, -1, -1, -1, -1, -1, -1, 5107, -1, -1, -1, 5108, 5109, -1, 5111, -1, -1, 5112, -1, -1, 5113, -1, 5114, -1, 5115, 5118, 5119, -1, -1, 5120, -1, 5121, 5122, -1, -1, -1, -1, 5123, -1, 5124, 5125, -1, -1, -1, -1, 5129, -1, 5130, -1, -1, 5134, -1, -1, 5135, 5136, -1, -1, -1, 5137, -1, -1, -1, -1, -1, 5138, -1, -1, -1, -1, 5140, -1, -1, -1, -1, -1, -1, -1, -1, 5142, 5143, -1, -1, -1, -1, 5144, -1, -1, 5146, -1, -1, -1, 5147, 5148, -1, -1, -1, -1, 5149, -1, -1, 5150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5151, -1, -1, -1, -1, 5152, -1, -1, -1, -1, 5154, -1, 5156, -1, -1, -1, -1, 5157, -1, -1, -1, -1, 5159, 5160, 5161, -1, -1, -1, 5162, -1, 5163, -1, 5165, 5166, 5167, 5168, -1, -1, -1, -1, -1, -1, 5169, -1, 5170, -1, -1, -1, -1, -1, 5172, 5173, -1, -1, 5174, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5175, 5176, -1, -1, -1, 5177, -1, -1, 5178, -1, -1, -1, -1, -1, -1, 5179, 5180, 5181, 5182, 5183, 5184, 5185, -1, -1, -1, -1, -1, 5186, 5188, -1, -1, -1, 5189, 5190, -1, /* 0x7300 */ -1, -1, 5191, 5192, -1, -1, -1, 5193, -1, -1, 5194, -1, -1, 5195, 5197, -1, -1, -1, -1, -1, -1, 5199, -1, -1, 5200, 5201, -1, -1, -1, -1, -1, 5202, -1, 5204, -1, -1, -1, -1, -1, -1, 5205, 5206, 5207, 5208, 5209, -1, 5210, 5211, -1, -1, 5212, -1, -1, 5213, 5214, -1, -1, -1, -1, 5215, -1, -1, -1, 5216, -1, 5218, -1, -1, 5219, 5220, -1, -1, -1, -1, -1, -1, -1, 5221, 5222, 5225, 5226, -1, -1, -1, -1, -1, -1, -1, 5227, 5228, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5229, -1, -1, 5231, -1, 5232, -1, 5233, 5234, -1, 5236, 5237, -1, 5238, 5239, 5240, -1, -1, 5241, -1, 5243, 5244, -1, 5246, 5247, 5248, -1, 5249, -1, 5250, 5251, -1, 5252, -1, 5254, -1, 5255, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5256, -1, -1, -1, -1, -1, -1, -1, 5257, 5258, 5259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5260, 5262, -1, -1, -1, -1, 5263, 5264, 5265, 5266, -1, 5267, -1, -1, -1, -1, -1, -1, 5268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5269, -1, 5272, 5273, 5274, 5276, 5277, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5278, -1, -1, 5280, -1, -1, -1, -1, -1, 5284, -1, -1, -1, -1, -1, 5285, 5286, 5288, -1, -1, -1, -1, 5289, -1, -1, -1, -1, -1, -1, 5290, -1, /* 0x7400 */ -1, -1, -1, 5291, -1, 5292, -1, -1, -1, 5293, -1, -1, -1, 5296, 5298, 5299, 5300, 5302, -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, 5304, -1, -1, 5305, -1, -1, -1, -1, 5307, 5309, -1, 5310, -1, -1, 5311, -1, -1, -1, -1, -1, -1, -1, 5312, -1, -1, -1, 5313, -1, -1, -1, -1, -1, -1, 5314, -1, -1, -1, -1, -1, -1, 5315, -1, -1, -1, -1, -1, -1, 5316, -1, -1, 5319, 5321, -1, -1, -1, 5322, 5323, 5324, -1, -1, -1, -1, 5325, 5326, -1, 5327, -1, 5328, -1, 5330, 5331, 5332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5333, -1, -1, -1, 5335, -1, 5336, -1, -1, -1, -1, 5337, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5339, 5341, 5344, -1, -1, 5345, -1, -1, -1, -1, 5346, -1, -1, -1, -1, 5347, -1, -1, -1, -1, 5348, -1, -1, 5349, -1, -1, -1, -1, 5350, -1, 5352, -1, -1, -1, -1, -1, -1, -1, -1, 5353, 5355, 5356, -1, 5357, -1, -1, 5358, -1, -1, 5359, -1, 5360, -1, -1, -1, -1, -1, 5362, -1, -1, -1, -1, -1, -1, -1, -1, 5364, -1, -1, -1, -1, 5365, -1, -1, -1, -1, -1, 5366, 5367, -1, -1, -1, -1, -1, -1, 5368, 5370, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x7500 */ -1, 5371, -1, -1, -1, -1, 5373, -1, -1, -1, -1, -1, 5374, -1, 5375, -1, -1, -1, -1, -1, -1, 5378, 5379, -1, -1, -1, -1, -1, -1, -1, 5381, -1, 5384, -1, 5385, 5387, -1, -1, 5389, -1, -1, -1, -1, -1, -1, -1, -1, 5392, -1, -1, -1, -1, -1, 5398, -1, 5399, -1, -1, 5400, 5402, 5407, 5409, -1, -1, -1, -1, 5410, -1, 5411, 5413, 5414, -1, -1, -1, 5418, -1, 5419, 5421, 5423, -1, -1, 5424, 5425, -1, -1, -1, -1, -1, -1, 5429, 5431, -1, -1, 5432, 5437, -1, 5441, 5442, 5443, -1, -1, 5444, -1, 5445, 5446, -1, 5447, 5448, -1, -1, -1, -1, 5450, 5451, -1, 5453, 5457, 5458, 5460, -1, -1, -1, 5461, 5462, -1, -1, -1, -1, -1, -1, 5463, -1, -1, 5467, 5469, 5470, -1, 5471, 5475, -1, -1, -1, 5479, 5481, -1, -1, -1, -1, -1, -1, 5483, 5484, -1, -1, -1, -1, -1, -1, -1, 5485, 5486, 5487, -1, 5488, -1, -1, -1, -1, -1, -1, -1, -1, 5489, 5490, 5491, 5492, -1, 5493, -1, -1, 5495, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5496, 5497, 5498, -1, -1, -1, -1, -1, -1, -1, -1, 5499, -1, -1, -1, 5500, -1, -1, 5504, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5505, 5506, 5507, 5508, -1, -1, 5509, -1, -1, -1, 5510, 5512, 5515, -1, -1, -1, -1, 5516, 5517, -1, -1, -1, 5518, -1, /* 0x7600 */ -1, -1, 5519, -1, -1, 5523, 5524, -1, -1, 5525, -1, 5527, -1, 5528, -1, -1, -1, -1, -1, 5529, -1, -1, 5530, 5531, 5532, -1, -1, -1, -1, -1, 5533, -1, -1, 5534, -1, -1, 5535, -1, 5536, 5537, -1, -1, 5538, 5539, -1, -1, 5540, -1, -1, -1, 5541, -1, -1, -1, -1, -1, -1, -1, 5542, 5543, -1, -1, 5545, 5546, -1, -1, 5547, -1, 5548, 5550, 5551, 5552, -1, 5553, -1, -1, -1, -1, -1, -1, -1, -1, 5554, -1, -1, 5556, -1, -1, 5558, -1, -1, -1, -1, -1, 5559, 5560, -1, 5561, 5562, 5563, 5564, 5565, -1, 5566, -1, 5567, -1, 5568, 5569, 5570, 5571, 5572, 5573, 5576, 5577, -1, 5578, 5579, -1, -1, -1, -1, 5580, 5590, 5591, -1, -1, -1, -1, 5593, 5595, 5597, -1, -1, -1, -1, 5598, -1, -1, 5601, -1, 5602, 5604, -1, 5605, 5606, -1, -1, -1, -1, -1, -1, -1, -1, 5607, -1, -1, -1, 5609, -1, -1, 5610, -1, -1, -1, 5611, -1, -1, 5613, -1, -1, -1, -1, -1, -1, -1, 5614, 5616, 5617, -1, -1, -1, -1, 5619, 5620, 5622, 5624, -1, 5625, -1, -1, -1, -1, 5626, -1, 5627, -1, -1, -1, 5629, 5630, -1, -1, 5631, 5634, 5635, -1, 5636, 5637, 5639, -1, -1, -1, -1, 5641, 5643, 5644, 5645, -1, -1, 5646, -1, 5647, -1, -1, 5648, -1, 5649, 5651, -1, -1, 5652, -1, -1, 5653, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x7700 */ -1, -1, -1, -1, -1, -1, 5655, -1, -1, 5657, -1, -1, 5658, 5660, 5661, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5663, -1, -1, -1, -1, -1, 5664, 5665, -1, -1, -1, -1, -1, 5666, 5667, -1, -1, -1, -1, 5668, 5669, -1, -1, 5670, -1, -1, -1, -1, -1, -1, -1, 5672, -1, -1, -1, -1, -1, -1, 5673, -1, 5676, 5677, 5678, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5679, 5680, 5681, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5682, -1, 5683, -1, 5684, -1, -1, -1, 5685, 5686, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5687, -1, -1, -1, -1, -1, 5688, -1, -1, -1, -1, -1, 5690, 5691, 5692, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5693, -1, -1, -1, 5694, -1, 5695, -1, -1, -1, -1, -1, 5696, -1, 5697, -1, 5698, -1, -1, -1, -1, -1, -1, 5699, 5700, -1, -1, 5701, -1, -1, 5703, -1, -1, -1, -1, -1, 5704, -1, -1, -1, -1, -1, 5705, -1, 5706, -1, -1, 5710, -1, -1, -1, -1, -1, 5711, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5712, 5713, -1, -1, -1, -1, -1, 5714, 5715, -1, -1, -1, -1, -1, -1, -1, 5716, -1, 5717, -1, 5719, 5720, -1, -1, -1, 5722, -1, -1, -1, 5723, -1, -1, -1, -1, 5724, -1, 5727, -1, -1, -1, -1, -1, -1, -1, 5728, 5729, /* 0x7800 */ 5734, 5735, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5736, -1, -1, 5737, 5738, 5741, -1, -1, 5742, -1, 5743, -1, -1, -1, -1, -1, -1, -1, -1, 5744, -1, 5745, -1, -1, -1, -1, 5746, -1, -1, -1, -1, -1, 5747, -1, -1, -1, -1, -1, -1, -1, 5750, 5751, -1, -1, 5752, 5753, 5758, 5759, -1, 5760, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5761, 5762, 5763, -1, 5764, 5765, -1, 5766, -1, -1, -1, -1, -1, -1, -1, 5767, -1, -1, -1, 5768, -1, 5769, -1, -1, -1, 5770, 5773, -1, -1, -1, -1, -1, 5774, -1, 5775, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5778, -1, -1, -1, -1, -1, 5782, -1, -1, -1, -1, -1, 5784, 5785, -1, -1, -1, -1, -1, 5786, 5787, -1, 5790, -1, -1, -1, 5793, 5794, -1, 5795, 5798, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5799, 5800, -1, -1, 5801, -1, 5802, 5803, 5805, -1, -1, -1, -1, -1, -1, 5807, -1, 5808, 5810, 5812, -1, -1, -1, -1, 5813, -1, -1, -1, -1, -1, 5814, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5815, 5816, -1, 5817, -1, 5818, -1, -1, -1, 5819, -1, -1, -1, -1, -1, 5822, -1, -1, 5823, -1, -1, -1, 5824, -1, -1, -1, -1, -1, -1, -1, 5825, -1, -1, -1, -1, -1, -1, -1, 5826, 5827, -1, 5828, -1, -1, 5829, -1, -1, /* 0x7900 */ 5830, -1, -1, -1, 5831, -1, 5832, -1, 5835, -1, -1, -1, -1, -1, 5837, -1, -1, -1, 5838, -1, -1, -1, -1, -1, -1, 5839, -1, -1, -1, -1, -1, 5840, 5843, -1, -1, -1, -1, -1, 5844, -1, -1, -1, 5849, 5850, 5851, -1, 5852, -1, -1, 5855, -1, -1, -1, -1, -1, -1, -1, -1, 5856, 5857, 5858, -1, -1, 5859, 5860, -1, -1, 5861, -1, 5862, -1, -1, -1, -1, -1, -1, -1, -1, 5863, -1, -1, -1, -1, -1, -1, 5864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5865, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5866, -1, -1, -1, -1, -1, 5867, -1, 5868, 5869, -1, -1, -1, -1, -1, -1, 5870, 5871, -1, -1, -1, 5872, 5873, -1, -1, -1, -1, -1, -1, -1, 5874, 5875, -1, -1, -1, -1, -1, -1, 5876, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5877, -1, -1, -1, -1, 5878, -1, -1, 5879, 5880, -1, -1, -1, 5881, -1, 5882, 5883, -1, -1, 5884, -1, -1, -1, -1, -1, -1, 5885, -1, -1, -1, 5886, -1, 5887, -1, 5888, -1, -1, 5889, 5890, 5895, -1, 5896, 5897, 5902, 5905, -1, -1, 5906, -1, -1, -1, 5907, 5909, 5910, 5911, 5912, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5913, 5914, -1, -1, -1, -1, -1, -1, -1, 5916, -1, -1, -1, -1, 5917, 5918, -1, /* 0x7a00 */ -1, 5919, -1, -1, -1, 5923, 5924, -1, 5926, 5927, -1, -1, -1, -1, 5929, -1, -1, -1, -1, -1, -1, -1, -1, 5930, -1, -1, 5932, -1, 5934, -1, -1, 5935, -1, -1, -1, 5936, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5937, 5938, -1, -1, 5939, 5941, 5942, -1, -1, -1, -1, -1, -1, 5944, 5946, -1, -1, 5947, 5951, 5955, -1, 5957, -1, -1, 5958, -1, -1, -1, 5960, -1, -1, 5962, 5966, 5967, 5969, 5971, 5974, -1, -1, -1, -1, -1, 5975, -1, -1, -1, -1, -1, -1, 5976, -1, 5978, 5979, 5980, 5981, -1, -1, -1, -1, 5982, 5986, 5988, 5990, -1, 5991, -1, -1, 5993, -1, -1, -1, -1, -1, -1, 5994, -1, 5996, -1, -1, -1, 5997, -1, -1, -1, 5998, -1, 5999, -1, -1, -1, -1, -1, -1, 6000, -1, -1, 6001, 6002, -1, -1, 6003, -1, 6005, -1, -1, -1, 6009, -1, -1, -1, -1, 6013, 6014, -1, -1, -1, -1, -1, -1, -1, 6015, 6016, -1, -1, 6017, 6018, -1, 6019, 6020, 6022, 6024, 6026, -1, -1, 6028, -1, 6029, 6030, -1, -1, -1, 6032, 6033, -1, -1, -1, -1, -1, -1, -1, 6037, 6039, 6040, 6041, 6043, 6044, -1, 6046, -1, -1, -1, -1, -1, -1, -1, 6047, -1, -1, -1, 6048, -1, -1, -1, 6050, -1, 6051, 6053, 6056, -1, -1, -1, 6058, -1, -1, -1, -1, -1, -1, 6059, 6061, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6063, -1, 6065, -1, -1, -1, -1, -1, 6067, -1, /* 0x7b00 */ -1, -1, -1, 6068, -1, -1, -1, -1, -1, -1, -1, 6069, -1, -1, -1, -1, -1, 6071, -1, -1, 6073, 6074, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6075, -1, -1, -1, -1, -1, -1, -1, 6076, 6082, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6083, 6085, -1, -1, -1, 6086, -1, 6088, -1, 6090, -1, -1, -1, -1, -1, -1, 6091, 6092, -1, -1, -1, -1, 6093, -1, 6094, -1, 6096, 6098, 6099, -1, -1, -1, -1, 6100, -1, 6104, 6105, 6106, 6107, 6108, 6109, 6110, -1, -1, -1, -1, -1, -1, -1, -1, 6114, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6115, -1, -1, -1, -1, -1, -1, -1, 6116, 6117, -1, 6118, -1, 6119, 6122, 6123, -1, 6124, -1, -1, -1, 6125, 6126, -1, -1, -1, 6129, -1, 6130, -1, 6131, -1, -1, 6132, 6133, -1, -1, -1, -1, -1, -1, 6134, -1, -1, -1, -1, -1, -1, -1, -1, 6135, -1, -1, 6139, 6141, 6142, 6143, 6144, 6145, 6146, -1, -1, -1, 6147, -1, 6149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6150, -1, -1, -1, 6151, -1, 6153, -1, -1, 6154, -1, 6155, -1, -1, -1, 6157, -1, 6158, -1, 6159, 6160, -1, -1, 6161, -1, -1, -1, 6162, -1, -1, -1, -1, 6163, 6165, -1, -1, 6166, -1, 6167, -1, -1, 6168, 6171, -1, -1, 6172, 6174, 6175, -1, 6176, 6177, 6178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x7c00 */ 6179, 6181, -1, -1, 6183, -1, 6185, -1, -1, -1, -1, -1, -1, 6186, -1, -1, -1, 6187, 6189, -1, 6190, -1, 6192, 6193, 6195, -1, -1, -1, -1, -1, 6196, -1, 6197, 6198, -1, 6199, -1, -1, -1, -1, -1, -1, 6200, 6201, -1, -1, -1, -1, -1, 6203, -1, -1, -1, -1, -1, 6205, -1, 6206, -1, -1, -1, 6207, 6208, -1, 6209, 6211, -1, 6212, -1, -1, 6213, -1, -1, -1, -1, -1, 6214, -1, -1, 6215, 6217, -1, 6218, -1, 6219, 6221, 6222, -1, 6224, 6226, -1, 6227, 6228, -1, -1, 6229, 6230, -1, -1, -1, 6232, -1, -1, -1, -1, 6234, 6235, -1, 6236, 6237, 6239, -1, -1, -1, 6240, -1, 6242, -1, -1, -1, -1, -1, -1, 6243, 6244, -1, -1, -1, -1, -1, -1, 6245, -1, -1, -1, 6246, -1, -1, -1, 6248, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6249, 6250, -1, -1, 6251, 6253, 6254, -1, -1, -1, -1, -1, -1, 6255, 6256, 6258, 6259, -1, -1, 6263, -1, 6264, -1, 6268, -1, -1, -1, -1, 6269, -1, 6271, -1, -1, -1, 6272, 6273, -1, -1, 6274, -1, -1, -1, 6275, -1, -1, -1, -1, 6276, 6281, -1, 6282, 6283, -1, -1, -1, -1, -1, -1, -1, -1, 6284, -1, 6286, -1, -1, -1, -1, 6287, -1, -1, 6291, 6292, -1, 6293, -1, -1, -1, -1, -1, 6295, 6296, -1, -1, -1, -1, -1, -1, -1, -1, 6297, -1, 6299, -1, 6300, -1, 6301, -1, 6302, 6306, 6308, 6309, 6313, -1, 6315, 6317, /* 0x7d00 */ 6319, -1, 6320, -1, 6321, 6322, 6323, 6324, 6325, 6326, -1, 6327, -1, 6328, -1, -1, 6329, -1, -1, 6330, 6331, 6332, 6333, 6334, 6335, 6337, 6339, 6340, 6341, 6342, -1, -1, -1, 6344, -1, 6345, -1, 6346, -1, 6347, -1, -1, -1, -1, 6348, -1, 6350, 6352, 6356, 6357, 6358, 6359, -1, 6360, -1, -1, -1, 6361, 6362, -1, 6363, -1, -1, 6364, 6365, -1, 6366, 6367, 6368, 6369, 6370, -1, 6372, -1, -1, 6373, 6374, 6376, 6377, 6378, 6379, -1, -1, -1, -1, 6380, 6383, -1, -1, -1, 6384, 6385, -1, 6387, 6389, -1, -1, 6390, 6391, -1, 6392, 6396, 6397, -1, 6398, -1, -1, -1, -1, -1, -1, -1, 6399, 6400, 6402, 6404, -1, 6405, 6407, 6410, 6411, 6413, -1, -1, -1, -1, -1, -1, -1, 6414, 6415, 6417, -1, -1, 6418, -1, 6419, 6420, -1, 6421, 6422, -1, -1, 6423, -1, 6424, -1, 6426, -1, -1, -1, 6428, -1, 6429, 6431, -1, 6434, -1, 6435, -1, 6436, -1, 6438, 6440, -1, -1, -1, -1, -1, -1, -1, 6441, 6445, 6446, -1, 6447, 6448, 6449, 6450, 6451, 6453, 6455, -1, 6456, 6457, 6458, 6459, 6460, -1, 6461, 6463, 6464, -1, -1, -1, -1, 6465, -1, -1, 6466, -1, -1, 6467, 6468, -1, 6469, -1, 6470, 6474, 6475, 6477, -1, 6479, 6480, 6481, 6483, 6484, 6485, 6486, -1, 6490, 6491, 6492, -1, 6493, 6494, -1, 6496, -1, 6498, 6499, -1, 6500, 6501, 6502, 6503, 6507, -1, -1, 6508, -1, 6509, 6510, -1, 6511, -1, 6512, -1, -1, 6513, -1, 6514, 6515, -1, -1, -1, /* 0x7e00 */ -1, 6517, -1, -1, 6519, -1, -1, -1, 6521, 6522, 6523, 6524, -1, -1, -1, -1, 6525, 6526, -1, -1, -1, 6527, -1, 6529, 6530, -1, -1, 6533, -1, 6534, 6535, 6536, -1, -1, -1, 6537, -1, -1, 6539, 6541, 6543, -1, -1, 6544, -1, 6545, 6546, -1, -1, 6547, 6549, -1, 6552, 6553, 6554, 6556, -1, 6557, -1, -1, -1, 6558, 6563, -1, -1, 6564, -1, 6565, -1, 6567, 6569, -1, 6570, -1, 6571, 6574, -1, 6577, -1, -1, -1, -1, 6579, -1, 6580, 6581, 6582, -1, -1, 6584, 6585, 6586, -1, -1, 6587, -1, -1, 6588, 6590, -1, 6591, -1, 6592, -1, -1, 6593, 6595, 6597, -1, 6600, 6603, 6605, 6606, -1, -1, 6609, -1, -1, -1, -1, -1, 6610, -1, -1, 6611, 6613, 6614, 6615, -1, -1, 6616, 6617, -1, -1, -1, 6618, 6619, 6620, 6622, -1, 6624, 6627, 6628, 6631, -1, -1, 6633, 6635, 6636, -1, 6637, -1, 6640, -1, -1, -1, 6642, 6643, -1, 6646, 6648, 6649, 6650, 6651, 6652, 6656, 6657, 6658, 6659, 6660, 6662, 6663, 6664, 6665, 6666, 6667, 6668, 6669, 6670, 6671, 6672, 6673, 6675, 6676, 6677, 6678, 6679, 6680, 6681, 6682, 6683, 6684, 6688, 6689, 6691, 6692, 6693, 6694, 6695, 6696, 6697, 6698, 6699, 6700, 6701, 6702, 6703, 6704, 6706, 6707, 6708, 6709, 6710, 6711, 6713, 6714, 6715, 6717, 6718, 6719, 6720, 6721, 6724, 6725, 6727, 6728, 6729, 6730, 6733, 6734, 6735, 6737, 6739, 6740, 6741, 6743, -1, 6744, 6746, 6747, 6748, 6749, 6750, 6751, 6753, 6754, 6756, 6757, 6759, 6761, 6762, 6763, 6764, 6765, 6766, 6767, /* 0x7f00 */ 6769, 6770, 6771, 6772, 6773, 6774, 6775, 6776, 6777, 6778, 6779, 6781, 6782, 6783, 6784, 6785, 6786, 6790, 6791, 6792, 6793, 6794, 6795, 6796, 6797, 6799, 6800, 6801, 6802, 6803, 6804, 6805, 6806, 6808, 6809, 6810, 6811, 6812, 6813, 6814, 6817, 6818, 6819, 6820, 6822, 6823, 6824, 6825, 6826, 6828, 6829, 6830, 6831, 6832, 6834, 6837, 6838, 6839, 6840, 6842, 6843, 6845, 6848, -1, -1, -1, 6850, -1, -1, -1, -1, 6852, 6853, -1, -1, -1, 6858, -1, 6860, -1, 6865, 6867, 6870, 6872, -1, -1, -1, 6874, -1, -1, 6877, -1, -1, -1, -1, -1, -1, -1, 6879, -1, -1, -1, -1, -1, -1, -1, 6880, -1, -1, -1, -1, -1, 6882, -1, -1, -1, 6884, 6885, 6888, 6889, 6890, -1, -1, -1, -1, -1, -1, -1, 6892, 6893, -1, 6895, -1, 6897, 6898, 6899, 6902, -1, 6906, 6907, 6908, -1, -1, -1, 6909, 6910, -1, -1, -1, -1, -1, 6911, -1, -1, -1, -1, -1, -1, -1, 6912, -1, 6913, -1, 6914, 6915, 6916, -1, -1, 6917, 6918, 6919, -1, -1, -1, 6921, -1, -1, -1, -1, -1, 6922, -1, 6924, -1, -1, 6926, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6927, 6929, 6931, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6932, -1, -1, -1, -1, -1, 6933, 6934, 6935, -1, -1, -1, -1, -1, 6936, -1, -1, -1, 6937, -1, -1, -1, -1, -1, -1, 6939, 6940, -1, -1, -1, -1, 6941, -1, 6942, -1, -1, -1, -1, -1, 6943, 6944, 6945, -1, 6947, -1, -1, /* 0x8000 */ 6948, -1, -1, 6949, -1, -1, -1, 6950, 6951, -1, 6952, 6953, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6954, -1, -1, 6955, -1, -1, -1, 6956, -1, -1, -1, -1, 6957, 6958, -1, 6959, -1, -1, 6960, 6961, -1, -1, -1, 6963, -1, 6964, -1, 6965, -1, -1, -1, -1, -1, -1, -1, 6966, -1, -1, 6967, 6968, 6969, -1, -1, 6970, -1, 6973, 6974, -1, -1, -1, -1, -1, -1, -1, 6975, 6976, 6979, -1, -1, -1, -1, -1, -1, 6980, -1, 6982, -1, -1, -1, -1, -1, -1, -1, 6984, 6985, -1, 6987, -1, -1, -1, -1, 6990, -1, 6993, 6995, 6996, 6999, -1, 7000, 7002, 7003, 7007, -1, 7010, 7011, 7012, 7014, 7015, 7016, -1, 7019, -1, -1, -1, 7020, 7022, -1, -1, -1, -1, 7023, -1, 7025, -1, 7027, 7028, 7029, -1, -1, -1, -1, 7030, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7031, 7033, -1, -1, 7034, -1, -1, 7035, -1, -1, -1, -1, 7036, -1, 7037, 7038, -1, 7040, 7041, -1, 7043, -1, -1, -1, -1, -1, -1, 7044, -1, -1, 7045, 7046, 7047, 7048, -1, -1, 7051, -1, 7053, -1, -1, -1, -1, -1, 7055, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7056, -1, 7057, -1, -1, -1, -1, 7058, -1, -1, -1, -1, -1, 7060, 7061, -1, 7062, 7063, -1, 7065, -1, -1, -1, -1, -1, -1, -1, -1, 7066, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x8100 */ -1, -1, -1, 7067, -1, 7069, 7071, 7073, 7074, 7075, -1, 7076, -1, 7078, -1, 7079, 7082, 7083, -1, 7085, 7086, -1, -1, 7087, -1, -1, 7088, 7090, -1, -1, -1, -1, -1, -1, -1, 7092, -1, -1, -1, -1, -1, 7093, -1, 7094, -1, -1, -1, -1, -1, 7095, -1, 7096, -1, 7099, 7100, -1, 7101, 7102, 7104, -1, -1, -1, 7106, -1, -1, -1, -1, -1, -1, -1, 7107, -1, -1, -1, 7108, -1, 7110, -1, 7111, -1, -1, -1, -1, -1, -1, -1, 7112, 7113, 7114, -1, -1, -1, -1, -1, -1, 7115, -1, 7116, -1, -1, -1, -1, 7117, -1, -1, -1, -1, 7120, -1, 7121, 7122, -1, -1, -1, -1, 7123, -1, -1, -1, -1, 7125, -1, -1, 7127, -1, 7128, 7129, -1, 7130, -1, 7131, 7132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7133, 7134, -1, 7135, -1, 7137, -1, -1, -1, -1, 7138, -1, -1, -1, -1, -1, 7139, -1, -1, 7140, 7141, -1, -1, -1, -1, 7142, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7143, -1, -1, -1, -1, 7144, -1, -1, 7146, -1, 7150, 7152, 7153, 7154, -1, -1, 7155, -1, -1, -1, -1, 7157, 7159, -1, 7160, -1, 7161, -1, 7162, -1, -1, -1, 7164, -1, -1, -1, -1, 7166, 7168, 7169, -1, 7170, -1, 7171, 7172, 7174, -1, 7175, -1, -1, 7176, -1, -1, 7177, -1, -1, -1, -1, 7178, -1, -1, 7179, -1, -1, -1, 7180, -1, -1, -1, -1, -1, 7181, -1, -1, -1, -1, -1, /* 0x8200 */ -1, -1, -1, -1, -1, -1, 7183, 7184, 7185, 7186, 7189, -1, -1, 7190, 7192, -1, 7193, -1, -1, 7194, -1, -1, 7195, 7198, 7201, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7202, -1, -1, -1, -1, -1, 7203, -1, -1, -1, -1, 7204, -1, 7206, 7207, -1, -1, -1, 7208, 7209, -1, -1, 7210, -1, 7211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7213, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7214, -1, -1, -1, -1, -1, -1, -1, -1, 7215, 7216, 7218, -1, 7219, -1, -1, -1, 7220, 7222, -1, -1, -1, -1, 7224, 7225, -1, 7227, -1, -1, 7231, 7235, 7239, 7240, 7241, -1, -1, -1, -1, -1, -1, -1, 7246, -1, -1, -1, -1, -1, 7247, -1, -1, 7249, 7250, -1, -1, -1, -1, -1, -1, -1, 7251, -1, -1, 7252, -1, -1, -1, -1, 7253, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7255, 7256, -1, -1, -1, -1, -1, 7257, -1, -1, 7264, -1, -1, -1, -1, -1, 7265, -1, -1, -1, 7266, -1, 7268, 7269, -1, -1, 7270, 7271, 7272, 7273, 7274, 7279, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7280, 7281, -1, -1, -1, -1, 7282, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7283, -1, -1, -1, -1, -1, -1, -1, 7284, 7286, -1, -1, 7287, -1, -1, /* 0x8300 */ -1, -1, -1, 7288, -1, -1, -1, -1, -1, -1, 7290, -1, -1, -1, 7292, 7293, -1, 7294, -1, -1, 7295, 7296, -1, -1, 7297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7298, -1, -1, -1, -1, -1, -1, -1, 7300, 7301, -1, 7302, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7304, 7305, -1, -1, 7306, -1, -1, -1, -1, -1, 7307, 7309, -1, -1, 7310, -1, -1, -1, 7311, 7313, 7314, 7315, 7316, 7317, 7318, 7319, 7320, 7322, -1, 7325, 7327, 7328, 7329, 7330, 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, -1, -1, -1, 7341, -1, -1, -1, -1, -1, 7342, -1, 7343, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7344, -1, -1, -1, -1, 7346, -1, -1, -1, -1, -1, -1, -1, -1, 7348, -1, 7349, 7350, -1, -1, -1, -1, -1, -1, -1, 7351, -1, -1, -1, 7352, -1, -1, -1, -1, 7353, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7354, 7355, 7356, 7357, 7358, 7359, 7360, 7362, 7363, 7364, -1, 7367, 7369, 7370, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7371, -1, 7372, 7373, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7375, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7376, -1, -1, -1, 7377, 7380, 7381, -1, -1, 7382, -1, -1, -1, -1, 7385, -1, -1, -1, -1, -1, -1, /* 0x8400 */ -1, -1, -1, -1, -1, -1, -1, 7386, -1, -1, 7387, -1, 7388, 7389, -1, -1, -1, -1, -1, -1, -1, 7390, -1, -1, -1, -1, 7392, -1, -1, 7393, -1, 7394, 7399, -1, -1, -1, 7400, 7402, 7404, 7405, 7406, -1, -1, -1, 7407, -1, -1, -1, -1, 7408, -1, -1, 7411, 7412, -1, -1, 7413, -1, -1, -1, 7414, -1, -1, -1, -1, -1, -1, -1, -1, 7415, -1, -1, -1, 7416, 7417, -1, -1, -1, -1, -1, -1, -1, 7420, -1, -1, -1, -1, 7421, 7422, -1, 7423, -1, -1, -1, -1, -1, 7424, -1, 7425, -1, 7427, -1, 7428, -1, -1, -1, 7429, -1, 7430, -1, 7431, 7432, -1, 7433, -1, -1, -1, -1, -1, 7434, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7435, 7436, -1, -1, -1, 7437, -1, 7438, -1, 7439, 7440, -1, -1, -1, 7441, -1, -1, 7442, 7444, -1, -1, -1, -1, 7445, -1, -1, -1, -1, 7449, -1, -1, -1, -1, -1, -1, -1, 7451, -1, 7452, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7453, -1, -1, -1, -1, 7454, -1, -1, -1, 7455, -1, -1, -1, -1, -1, 7456, -1, -1, -1, -1, 7457, -1, -1, -1, -1, -1, 7459, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7461, -1, 7462, 7463, -1, -1, 7464, -1, 7465, 7466, -1, -1, -1, -1, -1, -1, 7467, 7470, 7471, -1, 7472, -1, -1, 7473, -1, -1, -1, -1, -1, 7475, -1, -1, 7480, -1, -1, /* 0x8500 */ -1, -1, -1, -1, -1, 7481, 7483, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7484, 7485, -1, -1, 7486, 7488, -1, -1, -1, -1, -1, -1, -1, -1, 7489, -1, -1, -1, -1, 7490, -1, 7491, 7492, -1, -1, -1, -1, -1, -1, 7493, -1, 7494, -1, -1, 7495, 7496, 7497, 7498, 7500, 7502, -1, 7503, 7504, 7505, 7506, -1, -1, -1, -1, 7508, -1, -1, -1, -1, 7509, -1, -1, -1, 7510, 7512, -1, -1, 7514, -1, 7515, -1, 7517, 7518, -1, 7519, -1, -1, 7520, -1, 7521, -1, -1, -1, -1, -1, -1, -1, 7522, -1, -1, -1, -1, -1, -1, 7523, 7524, -1, -1, 7525, -1, -1, 7526, -1, 7527, -1, 7528, -1, -1, 7530, -1, -1, -1, -1, -1, -1, -1, 7531, 7534, -1, -1, -1, -1, -1, -1, -1, 7535, -1, 7536, -1, 7538, -1, -1, -1, -1, 7539, -1, 7540, 7541, -1, -1, 7542, 7544, -1, -1, -1, -1, -1, -1, 7545, -1, -1, -1, -1, -1, -1, 7546, -1, -1, 7548, -1, 7549, 7551, 7553, 7554, 7556, 7557, -1, 7559, -1, -1, -1, -1, -1, -1, -1, 7561, -1, 7563, -1, -1, -1, -1, 7564, 7568, -1, -1, -1, -1, -1, -1, 7572, -1, -1, -1, 7575, 7576, 7577, -1, -1, -1, 7579, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7580, -1, 7585, -1, -1, -1, -1, 7587, 7588, -1, -1, -1, -1, 7590, -1, -1, -1, -1, -1, -1, -1, -1, 7592, 7596, -1, 7598, 7599, -1, 7600, 7602, -1, 7603, -1, -1, -1, /* 0x8600 */ 7606, -1, 7607, -1, 7609, -1, 7610, 7611, -1, -1, 7615, 7617, -1, 7619, 7621, -1, 7623, -1, -1, 7626, -1, -1, -1, 7628, -1, -1, 7629, -1, -1, -1, 7630, -1, -1, -1, 7631, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7632, -1, 7633, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7635, -1, -1, 7636, -1, 7638, -1, 7639, -1, -1, -1, -1, 7640, -1, -1, -1, -1, -1, -1, -1, 7642, 7644, -1, 7645, -1, 7646, -1, 7647, 7649, 7650, -1, -1, 7652, 7654, 7656, 7657, -1, 7659, -1, -1, -1, -1, -1, 7660, 7661, 7662, -1, -1, -1, 7663, 7665, -1, 7666, 7667, -1, 7668, -1, -1, -1, 7669, -1, -1, -1, -1, 7671, 7672, -1, 7673, 7674, 7675, 7676, 7677, 7678, 7679, -1, -1, -1, -1, -1, -1, 7680, 7682, 7683, -1, -1, -1, -1, -1, -1, -1, -1, 7684, 7687, -1, 7688, -1, -1, -1, -1, 7689, -1, -1, -1, -1, -1, -1, -1, -1, 7690, -1, -1, -1, -1, 7691, 7692, -1, -1, -1, -1, -1, -1, -1, 7693, -1, -1, -1, -1, -1, 7694, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7695, -1, -1, 7697, -1, -1, 7698, 7700, 7702, -1, -1, -1, -1, 7703, -1, -1, -1, -1, 7706, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7707, 7708, 7709, 7710, 7711, 7712, 7713, -1, -1, -1, -1, -1, 7714, 7715, -1, 7716, -1, -1, /* 0x8700 */ -1, -1, 7718, -1, -1, -1, 7719, -1, -1, -1, -1, 7720, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7721, 7722, 7723, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7724, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7726, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7727, -1, -1, -1, 7728, -1, -1, -1, -1, -1, -1, -1, 7729, -1, 7732, 7734, 7735, -1, 7736, -1, -1, 7738, -1, -1, -1, -1, -1, -1, 7739, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7740, -1, 7741, -1, -1, -1, -1, 7742, -1, 7743, -1, -1, -1, -1, -1, -1, 7744, -1, 7745, -1, -1, -1, -1, -1, -1, 7746, -1, -1, -1, 7747, -1, 7748, 7749, 7751, -1, 7752, -1, 7753, -1, -1, -1, 7754, -1, -1, -1, -1, 7755, 7756, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7757, 7758, -1, -1, -1, -1, 7760, -1, -1, 7761, 7762, -1, 7764, -1, -1, 7766, 7767, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7768, -1, -1, -1, 7769, -1, 7770, -1, -1, 7771, -1, 7772, 7773, 7774, -1, -1, -1, -1, -1, 7775, 7776, -1, -1, 7777, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7778, -1, -1, -1, -1, -1, -1, -1, -1, 7779, -1, -1, 7780, -1, -1, 7781, -1, -1, -1, 7782, -1, 7783, 7784, -1, 7785, -1, -1, -1, -1, /* 0x8800 */ -1, 7787, -1, -1, -1, 7788, 7790, 7791, -1, -1, -1, -1, -1, 7793, 7794, 7795, 7796, 7797, 7798, -1, 7801, 7802, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7803, -1, 7805, 7806, 7807, -1, -1, -1, 7809, 7811, -1, -1, -1, -1, 7812, -1, -1, -1, 7813, -1, -1, -1, -1, 7814, -1, -1, 7817, 7819, 7822, 7823, -1, -1, -1, -1, -1, 7825, -1, 7826, 7827, 7828, -1, -1, 7831, 7833, -1, -1, -1, -1, -1, -1, -1, -1, 7834, 7835, 7838, 7839, -1, 7840, -1, 7843, 7844, 7846, 7849, 7850, 7852, -1, -1, -1, 7855, 7856, 7857, -1, -1, 7858, -1, -1, -1, 7859, -1, 7860, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7861, -1, -1, -1, 7862, -1, -1, -1, -1, -1, -1, 7863, 7864, 7867, -1, -1, -1, -1, 7868, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7869, -1, 7872, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7873, 7875, 7876, 7877, -1, -1, -1, -1, 7878, 7880, -1, 7881, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7882, 7883, -1, 7884, -1, 7885, -1, 7886, -1, -1, 7887, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7889, -1, -1, 7890, 7891, -1, -1, 7892, 7893, 7895, 7896, 7897, 7899, 7900, -1, 7902, -1, -1, -1, -1, 7903, -1, -1, -1, -1, -1, -1, 7904, 7905, -1, -1, -1, -1, -1, -1, -1, 7906, -1, -1, /* 0x8900 */ -1, -1, -1, -1, -1, -1, -1, 7907, -1, -1, 7908, -1, 7909, -1, 7910, 7911, -1, -1, 7912, 7914, -1, -1, -1, -1, 7915, -1, -1, 7916, -1, 7917, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7918, -1, -1, -1, -1, -1, -1, 7919, 7920, 7921, -1, -1, -1, 7922, -1, -1, 7923, -1, -1, -1, -1, -1, -1, -1, 7924, -1, -1, -1, 7926, -1, -1, -1, -1, 7927, 7928, -1, 7929, -1, -1, -1, -1, -1, 7930, 7931, -1, -1, -1, -1, -1, -1, 7932, -1, -1, 7933, -1, -1, -1, 7934, -1, -1, -1, -1, -1, 7935, -1, 7936, 7937, -1, 7938, -1, -1, 7939, -1, 7940, -1, -1, -1, -1, -1, -1, -1, -1, 7942, -1, 7943, -1, -1, -1, -1, -1, -1, 7945, 7947, 7948, 7949, 7952, 7956, -1, 7957, 7958, 7959, 7960, -1, -1, 7963, 7965, -1, 7967, -1, 7969, -1, 7970, -1, -1, -1, -1, -1, -1, 7973, -1, -1, -1, 7974, 7975, 7976, -1, 7978, 7979, -1, 7980, -1, -1, 7981, 7982, -1, 7983, 7984, -1, -1, 7986, 7987, -1, -1, 7989, -1, 7993, 7994, -1, 7996, 7997, 7999, 8000, 8002, 8003, 8004, 8006, 8008, 8009, 8011, 8014, 8015, 8016, 8017, 8018, 8019, 8020, 8021, -1, -1, 8022, -1, -1, 8023, -1, -1, -1, -1, -1, 8025, 8026, -1, -1, -1, -1, 8027, -1, -1, 8028, 8029, -1, -1, -1, -1, -1, -1, -1, 8030, -1, -1, -1, -1, 8032, -1, 8033, -1, 8035, 8036, -1, -1, -1, 8038, -1, 8040, /* 0x8a00 */ 8042, 8044, 8046, 8047, -1, -1, -1, -1, 8048, -1, 8049, -1, 8050, -1, 8051, -1, 8052, -1, 8053, 8054, -1, 8055, 8056, 8057, 8059, -1, 8060, 8061, -1, 8062, -1, 8063, 8064, 8066, 8068, 8069, -1, 8070, -1, -1, -1, 8071, 8072, 8073, -1, 8074, -1, -1, -1, 8075, -1, 8076, 8078, -1, 8079, -1, -1, -1, 8081, 8082, 8083, 8085, -1, -1, -1, 8086, -1, -1, -1, -1, 8087, -1, -1, -1, -1, 8089, -1, 8091, 8092, -1, 8093, -1, 8094, -1, 8095, 8096, 8097, 8098, 8099, -1, -1, 8100, -1, -1, 8101, 8102, 8103, 8104, 8105, 8106, -1, -1, 8107, 8108, -1, 8109, -1, 8110, 8111, 8113, 8114, -1, 8115, 8116, 8118, 8119, -1, 8120, -1, -1, -1, -1, -1, -1, 8121, -1, -1, 8122, -1, -1, -1, -1, 8123, 8124, 8125, 8126, -1, 8127, 8128, -1, 8129, 8130, -1, -1, -1, 8131, 8132, -1, -1, 8133, 8134, -1, 8136, -1, 8138, -1, -1, -1, 8139, -1, 8140, 8141, -1, 8142, 8143, 8144, 8145, -1, 8146, -1, 8147, -1, 8149, 8151, -1, 8153, 8154, -1, 8155, -1, -1, -1, 8156, -1, -1, 8157, -1, -1, 8158, -1, 8160, 8161, -1, -1, 8162, -1, 8163, -1, -1, 8164, -1, 8165, -1, 8166, 8167, 8169, -1, 8170, -1, 8171, 8172, -1, -1, -1, 8173, 8174, -1, -1, -1, 8175, 8176, 8177, 8178, -1, 8179, 8181, 8183, -1, 8184, -1, 8186, 8187, -1, 8188, -1, 8189, 8191, 8197, 8198, -1, -1, 8199, -1, 8200, -1, -1, 8202, 8203, 8205, -1, 8206, -1, 8207, -1, 8209, -1, /* 0x8b00 */ 8210, 8211, 8212, -1, 8213, 8214, -1, -1, -1, -1, 8215, -1, 8216, -1, 8217, -1, 8218, -1, -1, -1, 8219, -1, 8220, 8221, -1, 8222, 8223, 8225, -1, 8226, -1, -1, 8227, 8229, -1, -1, -1, -1, -1, -1, 8231, -1, 8232, 8233, 8235, 8236, -1, -1, 8238, -1, -1, 8239, -1, -1, -1, -1, -1, 8240, -1, -1, 8241, -1, 8243, -1, -1, 8244, -1, -1, -1, -1, -1, -1, -1, 8246, -1, -1, 8248, -1, 8249, 8250, 8251, -1, -1, -1, -1, -1, 8252, -1, 8254, 8255, 8256, 8257, 8259, -1, -1, 8261, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8262, 8264, -1, 8266, 8267, 8269, 8271, 8272, 8273, -1, 8275, -1, -1, 8276, 8277, -1, -1, -1, 8278, 8280, 8281, -1, 8283, 8285, -1, 8287, -1, 8289, -1, -1, -1, -1, 8290, 8292, 8293, 8295, 8297, -1, 8300, -1, 8302, 8303, -1, 8305, 8306, -1, -1, -1, 8307, -1, 8309, -1, 8310, -1, 8311, 8313, 8314, 8315, 8316, 8317, 8318, 8319, 8320, 8321, 8323, 8324, 8325, 8327, 8328, 8329, 8330, 8331, 8332, 8333, 8334, 8335, 8336, 8337, 8338, 8339, 8341, 8342, 8343, 8344, 8346, 8347, 8348, 8349, 8351, 8352, 8353, 8354, 8355, 8356, 8357, 8358, 8359, 8360, 8361, 8362, 8363, 8364, 8365, 8366, 8368, 8369, 8370, 8371, 8372, 8373, 8374, 8375, 8376, 8377, 8378, 8379, 8381, 8382, 8383, 8384, 8385, 8386, 8387, 8388, 8389, 8390, 8391, 8392, 8393, 8394, 8395, 8396, 8397, 8398, 8400, 8401, 8403, 8404, 8405, 8407, 8408, 8409, 8410, 8411, 8412, 8413, 8415, 8416, 8417, 8418, /* 0x8c00 */ 8419, 8420, 8421, 8422, 8423, 8424, 8425, 8426, 8427, 8428, 8429, 8431, 8432, 8433, 8434, 8435, 8437, 8438, 8439, 8440, 8441, 8443, 8444, 8446, 8447, 8448, 8450, 8451, 8452, 8453, 8454, 8455, 8456, 8457, 8458, 8459, 8461, 8462, 8464, 8465, 8466, 8467, 8468, 8470, 8472, 8473, 8474, 8476, 8477, 8478, 8479, 8480, 8481, 8482, 8483, 8484, -1, -1, 8486, -1, -1, -1, -1, 8487, 8490, -1, -1, -1, -1, -1, 8493, -1, 8494, -1, 8495, -1, -1, -1, 8499, -1, 8501, -1, -1, 8505, 8509, -1, -1, -1, 8513, -1, 8514, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8515, -1, -1, -1, -1, -1, -1, 8516, 8517, -1, 8518, -1, -1, -1, -1, -1, -1, -1, 8519, -1, -1, -1, 8520, 8521, 8522, -1, 8523, -1, -1, -1, 8524, -1, -1, -1, -1, 8525, -1, 8526, -1, 8527, 8528, 8529, 8531, -1, -1, -1, 8532, 8533, 8534, -1, -1, -1, 8535, -1, -1, 8536, 8537, 8539, 8541, 8542, 8545, 8546, 8548, -1, -1, -1, -1, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 8558, 8561, 8562, -1, 8563, 8564, 8567, -1, 8568, 8569, 8570, -1, 8571, 8572, 8573, 8574, -1, 8575, 8576, 8577, 8578, 8579, 8580, 8581, -1, 8582, 8583, 8584, 8586, 8587, -1, 8588, 8590, -1, -1, 8592, 8593, 8594, 8596, 8598, 8599, -1, -1, 8600, 8601, 8602, 8604, -1, 8605, -1, 8606, 8607, 8610, 8612, 8614, -1, 8616, 8617, -1, -1, 8618, 8621, 8622, 8623, -1, -1, 8624, -1, -1, -1, 8625, 8627, -1, 8628, -1, -1, 8630, 8631, 8632, 8633, 8634, -1, /* 0x8d00 */ -1, 8635, -1, -1, 8637, 8638, -1, 8639, 8640, -1, 8641, 8643, -1, 8646, -1, 8647, 8648, -1, 8649, 8651, 8653, -1, 8654, 8655, -1, -1, -1, 8658, 8659, 8660, 8662, 8663, 8664, 8667, 8668, 8670, 8671, 8673, 8675, 8676, 8677, 8679, 8680, 8681, 8682, 8683, 8684, 8685, 8686, 8689, 8691, 8692, 8693, 8694, 8695, 8696, 8697, 8698, 8699, 8700, 8701, 8702, 8703, 8704, 8705, 8706, 8707, 8708, 8711, 8712, 8713, 8714, 8715, 8716, 8717, 8719, 8720, 8721, 8724, 8725, 8726, 8727, 8728, 8729, 8730, 8731, 8732, 8734, 8735, 8736, 8737, 8738, 8739, 8740, 8743, 8747, 8748, 8749, 8750, 8751, 8752, -1, -1, -1, -1, -1, 8754, -1, 8755, -1, -1, -1, 8756, 8757, -1, -1, -1, 8758, 8759, -1, -1, -1, -1, 8760, -1, -1, -1, 8765, -1, 8766, 8767, -1, -1, -1, -1, -1, -1, -1, -1, 8768, -1, -1, -1, -1, -1, 8769, -1, -1, -1, 8770, -1, -1, -1, 8771, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8772, -1, 8773, -1, -1, -1, 8774, -1, -1, 8775, -1, 8777, 8778, -1, -1, -1, -1, -1, 8779, -1, -1, 8780, -1, -1, -1, -1, -1, -1, -1, 8781, 8783, -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, 8784, -1, -1, 8785, -1, -1, -1, 8786, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8787, 8788, 8789, 8790, 8791, 8792, 8793, 8794, 8795, -1, -1, -1, /* 0x8e00 */ -1, 8796, -1, -1, -1, -1, -1, -1, 8798, -1, 8800, 8801, 8803, -1, -1, -1, 8804, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8805, 8806, 8807, 8808, 8809, -1, -1, 8810, 8811, -1, -1, -1, 8812, -1, -1, -1, 8813, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8814, -1, -1, -1, -1, -1, -1, 8815, 8817, -1, -1, 8818, -1, 8819, 8820, -1, -1, 8821, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8822, -1, -1, -1, 8823, 8824, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8826, -1, -1, -1, -1, -1, -1, -1, -1, 8828, 8830, -1, -1, -1, -1, 8832, -1, -1, 8833, 8834, 8835, -1, -1, 8836, -1, 8837, 8838, 8841, -1, 8843, -1, 8845, -1, 8846, 8847, 8848, -1, 8849, -1, -1, -1, 8851, 8852, -1, 8853, -1, -1, -1, -1, 8854, 8855, -1, -1, 8857, 8858, -1, -1, -1, 8859, -1, 8861, 8862, -1, 8863, 8864, 8868, 8869, 8870, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8871, -1, -1, -1, 8872, -1, 8875, -1, -1, -1, 8879, 8880, 8881, 8882, -1, -1, -1, 8883, 8884, -1, 8885, -1, -1, -1, -1, -1, -1, 8886, -1, -1, -1, 8889, -1, -1, 8890, 8892, 8894, -1, -1, -1, -1, -1, -1, 8895, -1, -1, -1, -1, 8896, -1, 8898, -1, -1, -1, 8899, -1, 8902, 8903, 8904, 8905, 8906, 8907, 8909, -1, /* 0x8f00 */ 8910, -1, -1, 8911, -1, 8912, -1, 8913, 8914, 8915, 8916, -1, 8917, -1, -1, 8919, -1, -1, 8920, 8922, 8923, 8925, -1, -1, -1, 8927, -1, 8929, 8931, 8933, 8934, 8935, -1, 8936, -1, -1, -1, 8937, 8938, -1, -1, 8939, 8941, -1, 8942, 8943, -1, 8944, -1, -1, -1, 8945, -1, -1, 8946, -1, 8947, -1, 8948, 8950, 8951, -1, 8952, 8953, -1, 8954, 8957, -1, 8958, 8960, 8961, -1, -1, 8962, -1, -1, -1, 8964, 8965, -1, -1, -1, -1, -1, 8966, -1, -1, 8967, -1, -1, -1, -1, 8968, -1, -1, 8969, -1, 8971, 8972, -1, 8973, -1, 8974, 8975, 8976, 8977, 8978, 8979, 8980, 8982, 8985, 8986, 8988, 8990, 8991, 8992, 8993, 8994, 8995, 8996, 8997, 8998, 8999, 9000, 9002, 9003, 9004, 9005, 9006, 9007, 9008, 9009, 9010, 9012, 9013, 9015, 9016, 9018, 9019, 9020, 9021, 9022, 9023, 9025, 9026, 9027, 9028, 9029, 9030, 9031, 9032, 9033, 9034, 9035, 9036, -1, -1, 9037, 9040, 9043, 9044, 9046, -1, -1, 9049, -1, 9052, 9053, 9055, 9057, -1, 9060, -1, 9061, 9064, 9065, -1, -1, 9068, -1, -1, 9069, 9070, -1, -1, 9071, 9074, -1, -1, 9077, 9078, -1, -1, 9080, 9081, 9082, -1, -1, 9083, 9084, 9085, -1, 9086, -1, -1, -1, -1, -1, 9088, -1, -1, -1, -1, -1, -1, -1, 9089, 9090, -1, 9091, 9092, 9093, 9094, 9095, -1, -1, -1, -1, 9098, 9099, -1, -1, -1, 9100, 9101, -1, 9102, -1, -1, 9103, -1, -1, -1, 9104, 9107, -1, -1, -1, -1, 9113, 9115, -1, -1, -1, -1, -1, /* 0x9000 */ -1, -1, 9117, 9118, -1, -1, -1, -1, 9119, 9120, 9121, -1, -1, -1, 9122, -1, -1, -1, 9123, 9125, -1, 9127, -1, -1, -1, 9130, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9131, -1, 9132, 9138, -1, -1, 9139, -1, -1, -1, -1, -1, -1, 9140, 9142, 9143, -1, -1, -1, -1, -1, -1, 9144, 9146, 9147, 9148, -1, -1, -1, -1, 9149, -1, -1, -1, 9150, -1, -1, -1, 9152, 9154, 9156, -1, -1, 9157, -1, -1, -1, 9158, 9159, 9162, 9164, -1, 9165, -1, 9166, -1, -1, 9167, -1, 9168, -1, 9170, 9172, -1, -1, -1, 9173, -1, -1, -1, 9174, -1, -1, -1, -1, -1, 9175, -1, -1, 9176, -1, -1, -1, 9178, 9179, 9180, -1, 9181, -1, 9182, -1, -1, -1, -1, 9183, -1, -1, 9184, -1, -1, 9185, -1, 9186, 9189, -1, -1, -1, -1, 9192, 9193, 9194, -1, 9195, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9196, -1, -1, -1, -1, -1, -1, -1, -1, 9197, -1, 9198, -1, -1, 9199, 9200, -1, 9201, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9202, 9203, 9204, -1, 9207, -1, -1, -1, 9208, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9211, -1, 9212, 9214, 9215, 9216, 9217, 9219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9220, 9222, -1, -1, -1, -1, -1, -1, 9223, 9224, 9225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9226, 9227, 9228, 9232, -1, -1, -1, -1, -1, -1, -1, /* 0x9100 */ -1, -1, -1, -1, -1, -1, 9233, -1, -1, 9234, 9238, -1, -1, -1, -1, -1, -1, -1, 9242, -1, 9243, 9244, 9248, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9249, -1, -1, -1, -1, -1, 9250, -1, -1, 9251, -1, 9254, -1, 9255, -1, 9256, 9257, -1, -1, 9258, -1, 9259, 9260, -1, -1, -1, -1, 9263, -1, -1, -1, 9264, 9265, 9267, 9268, -1, 9269, -1, -1, -1, -1, -1, -1, -1, -1, 9270, -1, -1, -1, -1, 9271, -1, -1, -1, 9272, -1, -1, -1, -1, 9274, -1, -1, -1, 9275, 9278, -1, -1, 9280, -1, 9281, -1, -1, -1, -1, 9283, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9285, 9286, 9287, -1, -1, -1, 9289, -1, -1, -1, 9290, -1, 9291, 9292, 9293, -1, -1, 9294, -1, -1, -1, -1, -1, 9296, 9297, 9298, 9300, 9303, -1, -1, -1, 9304, -1, 9306, -1, -1, -1, -1, -1, 9308, -1, -1, -1, -1, -1, -1, 9310, 9312, -1, -1, -1, -1, 9314, -1, -1, -1, -1, -1, -1, 9317, -1, -1, 9319, 9321, -1, -1, -1, 9323, 9325, -1, 9326, -1, 9327, -1, 9328, 9330, -1, 9332, 9334, 9336, -1, 9338, -1, 9340, 9341, 9343, 9345, 9348, 9349, 9350, 9352, 9353, 9354, 9355, -1, 9357, 9358, -1, -1, 9359, 9361, -1, 9362, 9364, -1, 9365, 9366, -1, 9367, -1, -1, -1, -1, -1, 9368, 9369, -1, -1, -1, -1, 9377, -1, 9378, -1, 9379, 9380, 9381, 9384, -1, -1, -1, /* 0x9200 */ 9392, 9393, -1, 9394, 9395, 9396, 9397, -1, 9399, 9400, -1, -1, -1, 9401, 9402, -1, 9404, 9405, 9406, -1, 9407, 9408, -1, -1, -1, -1, -1, -1, -1, -1, 9409, 9411, -1, 9412, -1, 9413, -1, 9414, 9415, 9416, 9417, 9418, -1, -1, 9420, -1, 9422, -1, 9424, -1, -1, 9425, 9426, -1, -1, 9427, 9428, 9429, 9430, -1, -1, 9431, 9432, 9433, 9434, -1, -1, -1, 9435, 9440, 9441, 9442, 9443, 9444, -1, 9445, -1, 9447, -1, -1, -1, 9448, -1, -1, -1, 9449, -1, 9450, -1, -1, 9451, 9452, -1, -1, 9454, -1, 9455, -1, 9456, -1, 9459, -1, 9461, -1, 9462, -1, -1, -1, 9464, 9465, -1, -1, -1, 9466, -1, -1, 9471, -1, 9475, -1, 9476, -1, 9477, 9478, -1, -1, -1, 9479, 9480, -1, -1, 9481, -1, 9482, -1, -1, -1, -1, -1, -1, -1, 9483, -1, -1, -1, 9484, -1, 9485, -1, 9486, 9490, -1, 9491, -1, 9492, 9494, 9496, -1, 9499, -1, 9500, -1, -1, 9501, -1, 9502, 9503, -1, 9504, 9505, 9506, 9507, 9508, 9509, 9511, -1, -1, 9512, 9513, 9514, -1, -1, -1, 9516, -1, 9518, -1, 9519, 9520, 9521, -1, -1, -1, 9522, -1, 9523, -1, 9524, -1, 9525, -1, -1, -1, -1, 9526, -1, -1, 9527, -1, -1, 9528, -1, -1, -1, -1, -1, -1, 9529, -1, 9530, -1, 9535, -1, 9536, -1, -1, -1, 9538, 9540, 9541, 9542, -1, 9543, 9548, 9550, -1, -1, 9553, 9555, 9556, 9557, 9558, -1, 9559, -1, -1, 9561, -1, 9562, -1, -1, -1, 9563, -1, -1, -1, /* 0x9300 */ -1, 9564, -1, -1, 9565, -1, 9567, 9568, 9569, -1, -1, -1, -1, -1, -1, 9570, 9572, -1, 9573, -1, -1, 9574, -1, -1, 9575, 9576, 9578, 9579, -1, -1, -1, 9580, 9581, 9582, 9583, -1, -1, -1, 9585, -1, 9586, 9587, -1, 9588, 9589, -1, 9592, 9593, -1, -1, 9594, 9596, -1, -1, 9597, 9598, 9599, -1, -1, -1, -1, -1, 9600, -1, 9601, 9602, -1, 9603, -1, -1, 9604, 9605, 9606, -1, 9608, 9611, -1, 9612, -1, -1, -1, -1, -1, -1, 9613, -1, -1, -1, 9614, -1, 9615, 9616, -1, -1, 9618, -1, 9619, -1, -1, -1, 9621, 9622, -1, -1, -1, 9623, -1, -1, 9624, -1, -1, 9625, 9627, -1, -1, 9628, -1, 9632, 9633, -1, -1, -1, 9634, -1, -1, -1, 9635, 9637, -1, 9638, 9639, -1, 9640, -1, -1, 9641, -1, -1, 9642, 9643, 9644, -1, -1, -1, -1, -1, 9646, -1, 9648, -1, 9650, 9652, 9653, -1, 9654, 9655, -1, -1, -1, -1, -1, 9656, 9658, 9659, -1, -1, 9660, 9662, -1, 9663, 9664, -1, 9665, 9666, 9668, -1, 9670, -1, -1, 9671, -1, 9672, -1, -1, 9673, -1, 9674, -1, -1, -1, -1, 9675, -1, 9676, -1, 9677, -1, -1, -1, 9678, 9679, -1, -1, -1, 9680, 9681, -1, -1, 9682, 9683, -1, 9684, -1, -1, -1, 9685, 9686, -1, -1, -1, 9687, 9688, 9689, 9690, -1, 9694, 9696, -1, 9697, 9698, -1, -1, 9700, -1, -1, -1, -1, -1, -1, -1, 9701, -1, -1, -1, -1, 9702, -1, 9703, -1, 9704, -1, -1, -1, 9705, -1, -1, /* 0x9400 */ -1, -1, 9707, 9709, -1, -1, -1, -1, -1, -1, -1, 9710, -1, -1, -1, -1, 9711, -1, 9712, 9713, 9714, -1, -1, 9715, 9716, 9717, 9718, -1, -1, 9720, -1, -1, 9722, 9723, -1, -1, -1, -1, 9728, 9729, 9730, -1, -1, 9731, -1, -1, 9732, -1, -1, -1, 9734, 9735, -1, 9736, 9741, -1, 9742, -1, 9744, -1, -1, -1, -1, 9745, -1, -1, -1, 9746, 9748, 9750, -1, -1, -1, -1, 9751, -1, 9752, -1, -1, -1, -1, 9753, 9757, 9761, 9762, 9763, -1, -1, -1, -1, 9764, 9766, 9771, -1, 9773, -1, 9774, -1, -1, 9775, 9776, 9777, -1, -1, -1, -1, 9778, -1, 9780, 9784, -1, 9785, 9786, 9787, 9788, -1, -1, 9789, -1, 9791, -1, 9792, -1, -1, 9793, 9794, 9796, 9797, -1, 9798, 9800, -1, -1, 9801, 9803, 9806, 9807, 9808, 9809, 9810, 9811, 9812, 9813, 9814, 9815, 9816, 9817, 9818, 9819, 9820, 9821, 9822, 9823, 9824, 9825, 9826, 9827, 9828, 9829, 9830, 9834, 9835, 9836, 9837, 9838, 9839, 9841, 9842, 9843, 9844, 9846, 9847, 9848, 9849, 9850, 9851, 9852, 9853, 9855, 9856, 9857, 9858, 9861, 9862, 9863, 9864, 9865, 9866, 9869, 9870, 9871, 9872, 9873, 9874, 9877, 9878, 9879, 9880, 9882, 9883, 9885, 9886, 9887, 9889, 9890, 9892, 9893, 9895, 9896, 9897, 9898, 9899, 9900, 9902, 9903, 9904, 9905, 9906, 9907, 9908, 9909, 9910, 9911, 9912, 9913, 9914, 9915, 9916, 9917, 9918, 9919, 9920, 9921, 9922, 9923, 9924, 9926, 9927, 9928, 9929, 9930, 9931, 9932, 9936, 9937, 9938, 9939, 9940, 9941, 9943, 9944, 9947, 9948, 9949, 9950, 9951, /* 0x9500 */ 9953, 9954, 9955, 9956, 9957, 9959, 9960, 9961, 9962, 9965, 9966, 9967, 9968, 9969, 9970, 9971, 9973, 9975, 9976, 9977, 9978, 9979, 9980, 9981, 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, 9990, 9991, 9992, 9993, 9994, 9996, 9997, 9998, 9999, 10000, 10001, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015, 10016, 10017, 10018, 10020, 10021, 10022, 10023, 10024, 10025, 10026, 10027, 10028, 10029, 10030, 10031, 10032, 10034, 10035, 10036, 10037, 10038, 10040, 10041, 10042, 10044, 10045, 10046, 10047, 10048, -1, 10049, 10050, 10051, 10052, 10053, 10054, 10055, 10056, 10057, 10058, 10059, 10060, 10061, 10063, 10064, 10065, 10066, 10067, 10068, 10069, 10070, 10071, 10072, 10073, 10074, 10075, 10076, 10078, 10079, 10080, 10081, 10082, 10083, 10084, 10088, 10092, -1, -1, -1, -1, -1, 10094, 10098, -1, 10099, 10100, -1, -1, 10101, 10102, 10104, 10105, -1, 10107, 10108, -1, 10109, 10110, -1, 10112, 10114, 10116, 10117, -1, -1, -1, 10118, 10119, -1, -1, -1, -1, -1, -1, 10121, 10123, 10124, 10127, 10128, 10129, -1, 10130, 10131, 10132, -1, 10133, 10134, 10135, -1, -1, -1, 10136, 10138, -1, 10140, -1, 10142, -1, -1, 10143, -1, 10145, 10146, 10147, 10148, 10149, -1, -1, -1, 10150, -1, -1, 10152, 10153, 10154, -1, 10155, 10157, 10158, 10159, -1, -1, 10160, -1, 10161, 10162, 10163, 10164, 10165, 10166, 10169, 10174, -1, -1, 10180, -1, 10183, -1, 10184, 10185, 10186, -1, 10187, 10188, -1, -1, 10189, 10190, 10191, 10192, 10193, 10194, 10196, 10197, 10198, 10200, 10201, 10203, 10204, 10205, 10206, 10207, 10208, 10209, 10211, 10212, 10213, 10214, 10215, 10216, /* 0x9600 */ 10217, 10218, 10219, 10220, 10221, 10222, 10224, 10225, 10226, 10227, 10229, 10230, 10231, 10232, 10233, 10234, 10235, 10236, 10237, 10239, 10240, 10242, 10243, 10244, 10245, 10246, 10247, 10249, 10250, 10251, -1, 10253, -1, -1, -1, -1, -1, 10254, 10258, -1, 10260, 10261, 10263, 10265, 10267, -1, -1, 10268, -1, 10269, -1, 10270, 10272, 10276, 10277, -1, 10279, -1, -1, 10280, -1, -1, -1, -1, 10281, 10283, -1, -1, -1, 10285, 10286, 10287, 10288, 10289, -1, -1, -1, 10290, -1, -1, -1, -1, -1, -1, -1, 10291, 10294, -1, 10295, -1, -1, -1, 10296, 10298, 10299, 10301, -1, -1, -1, 10302, -1, 10304, 10305, -1, 10312, 10313, -1, -1, -1, -1, -1, -1, 10316, -1, -1, 10320, -1, -1, -1, 10321, 10322, -1, 10323, 10326, -1, 10328, -1, 10330, -1, 10332, 10334, -1, 10338, -1, -1, -1, -1, -1, 10340, -1, 10341, -1, 10342, 10344, 10345, -1, -1, -1, -1, 10348, 10350, -1, -1, 10351, -1, 10352, -1, 10353, -1, 10360, 10361, -1, -1, 10364, -1, -1, -1, -1, 10367, -1, 10368, 10371, -1, -1, 10373, 10374, -1, 10381, 10384, -1, 10385, -1, 10386, 10388, 10390, -1, 10392, 10399, -1, 10400, 10401, -1, -1, 10402, -1, -1, -1, -1, -1, 10404, -1, -1, -1, 10406, -1, 10407, -1, 10408, -1, 10409, -1, -1, -1, 10411, 10414, -1, -1, 10415, 10416, 10417, 10419, 10421, 10422, 10425, 10426, -1, 10428, 10429, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10430, -1, 10431, 10432, -1, -1, 10433, 10434, -1, -1, 10435, 10437, -1, -1, 10438, -1, /* 0x9700 */ -1, 10440, -1, -1, -1, -1, -1, -1, -1, 10441, 10442, -1, -1, -1, -1, -1, -1, 10445, -1, -1, -1, -1, -1, 10446, -1, -1, 10447, 10450, -1, -1, -1, -1, -1, 10453, 10454, -1, -1, -1, -1, 10455, -1, -1, -1, -1, -1, 10458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10459, -1, -1, 10460, -1, 10464, -1, -1, -1, 10465, 10466, -1, 10467, -1, 10468, -1, 10469, 10472, 10473, -1, -1, 10477, 10484, 10491, -1, 10498, 10500, 10502, 10503, -1, -1, -1, -1, 10506, 10507, -1, 10508, 10509, -1, -1, -1, -1, 10512, 10518, 10519, 10521, -1, 10522, 10523, -1, -1, 10524, -1, 10526, -1, -1, -1, 10529, -1, -1, 10532, -1, -1, -1, -1, -1, -1, -1, -1, 10533, -1, -1, 10534, -1, -1, -1, -1, -1, -1, -1, -1, 10536, -1, 10538, 10539, 10540, -1, 10541, -1, 10542, 10543, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10544, -1, -1, -1, -1, -1, -1, 10545, 10547, 10549, -1, -1, -1, -1, -1, -1, 10550, -1, 10551, 10553, -1, -1, 10554, -1, -1, -1, 10555, -1, -1, -1, 10556, 10557, -1, -1, 10558, -1, 10560, -1, -1, 10561, -1, 10562, 10564, -1, 10565, 10566, 10567, -1, -1, -1, -1, -1, 10569, -1, -1, -1, -1, -1, 10570, -1, -1, 10571, 10574, 10575, -1, -1, -1, -1, -1, 10576, -1, 10578, 10579, 10582, 10584, 10585, 10586, 10587, 10589, 10590, 10591, -1, 10592, 10593, -1, -1, 10595, -1, -1, -1, -1, -1, 10596, -1, -1, -1, 10597, /* 0x9800 */ -1, 10598, 10599, 10600, -1, 10601, 10602, 10603, 10604, -1, 10605, -1, 10606, -1, 10607, 10608, 10609, 10610, 10611, 10612, -1, -1, -1, 10613, 10614, -1, 10615, -1, 10617, -1, -1, -1, -1, 10618, -1, -1, 10619, 10621, 10623, -1, -1, -1, -1, -1, 10624, 10626, 10627, -1, 10629, -1, 10631, -1, 10632, -1, -1, 10634, 10635, 10637, 10641, 10645, 10646, 10648, 10652, -1, -1, -1, -1, -1, -1, -1, 10653, -1, -1, -1, -1, 10654, 10655, 10656, 10657, 10658, -1, -1, 10660, 10661, 10662, 10664, 10666, -1, 10667, 10668, 10669, 10671, -1, -1, 10673, -1, -1, -1, 10674, -1, -1, 10675, -1, 10676, -1, -1, -1, 10677, 10678, -1, -1, 10679, 10681, 10682, -1, 10685, 10686, 10687, 10688, 10689, 10690, 10691, 10692, 10693, 10695, 10696, 10697, 10698, 10699, 10700, 10701, 10702, 10703, 10704, 10706, 10707, 10708, 10710, 10711, 10713, 10714, 10715, 10716, 10717, 10718, 10720, 10721, 10722, 10726, -1, 10727, 10729, 10730, 10731, 10732, 10733, 10734, 10736, 10737, 10738, 10739, 10741, 10742, 10743, 10744, 10745, 10746, 10747, 10748, -1, -1, -1, -1, 10756, 10757, 10761, -1, 10762, -1, 10763, -1, -1, 10764, 10765, 10768, -1, 10769, 10770, 10771, -1, -1, -1, 10772, -1, -1, 10773, 10775, -1, 10777, 10782, 10783, -1, -1, -1, 10787, -1, 10792, 10798, 10799, 10800, 10801, 10802, 10803, 10804, 10805, 10806, 10807, 10809, 10810, 10811, 10812, -1, 10813, 10814, 10817, 10820, 10821, 10822, -1, 10823, -1, -1, 10824, 10825, 10826, 10827, 10829, 10830, 10831, 10833, 10835, -1, 10836, -1, 10838, -1, 10839, -1, -1, -1, -1, -1, 10840, 10841, 10842, 10843, /* 0x9900 */ -1, -1, -1, 10844, 10845, 10846, -1, -1, -1, 10848, 10851, -1, 10854, 10855, 10856, 10857, 10858, 10859, 10860, 10862, -1, 10863, 10864, -1, 10865, -1, 10867, 10868, 10869, -1, 10870, 10871, 10872, 10874, -1, -1, -1, -1, -1, 10875, 10879, -1, -1, -1, 10881, -1, -1, -1, -1, 10882, -1, 10883, 10884, 10885, 10887, 10888, -1, 10889, 10890, 10891, 10892, 10893, 10894, 10895, -1, 10896, -1, 10897, -1, 10898, -1, -1, 10899, 10900, 10901, 10902, 10903, 10904, 10905, -1, -1, 10906, 10907, -1, -1, -1, -1, 10908, -1, 10909, -1, -1, 10910, -1, 10911, 10912, -1, -1, 10915, 10916, 10919, 10920, 10922, 10923, 10925, 10926, 10927, 10928, 10929, 10930, 10931, 10933, 10934, 10935, 10936, 10937, 10938, 10939, 10940, 10941, 10943, 10944, 10945, 10946, 10947, 10949, 10950, 10951, 10952, 10954, 10956, 10957, 10958, 10959, 10960, 10961, 10962, 10964, 10965, 10966, 10967, 10968, 10969, 10970, 10971, 10972, 10973, 10974, 10975, 10976, -1, -1, -1, -1, -1, -1, -1, 10977, 10978, 10979, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10980, 10981, 10982, -1, -1, 10983, 10985, 10986, 10987, -1, -1, -1, -1, 10988, -1, -1, -1, 10989, -1, 10990, -1, 10992, -1, -1, 10993, 10995, 10997, -1, 11001, -1, -1, -1, -1, -1, -1, -1, 11005, 11006, 11007, -1, 11008, 11009, -1, -1, 11010, 11011, -1, 11012, -1, 11013, 11015, 11017, -1, 11018, 11021, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11022, 11023, -1, 11024, 11025, -1, -1, -1, 11026, -1, -1, 11028, -1, -1, -1, -1, -1, -1, 11029, /* 0x9a00 */ -1, 11030, 11031, -1, -1, 11032, -1, -1, -1, -1, -1, -1, -1, 11033, 11034, 11035, 11036, -1, 11039, 11041, -1, -1, 11044, -1, -1, 11045, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11046, -1, -1, -1, 11047, -1, -1, 11048, -1, 11049, 11050, -1, 11053, -1, -1, -1, -1, -1, 11054, 11055, 11057, -1, 11058, -1, -1, -1, 11059, -1, 11060, 11061, 11062, 11063, 11064, 11065, -1, 11069, -1, -1, 11070, -1, 11071, 11072, -1, 11073, -1, 11074, 11077, -1, -1, 11078, -1, 11079, -1, -1, 11082, 11083, -1, 11085, -1, 11086, -1, -1, 11087, -1, 11089, 11090, 11092, -1, -1, 11093, 11094, 11095, 11096, 11097, 11098, 11100, 11101, 11102, 11106, 11107, 11109, 11111, 11112, 11113, 11114, 11115, 11116, 11117, 11118, 11120, 11121, 11122, 11124, 11125, 11126, 11129, 11130, 11131, 11132, 11133, 11134, 11135, 11136, 11137, 11138, 11141, 11142, 11143, 11144, 11145, 11146, 11147, -1, 11148, 11149, 11150, 11151, 11153, 11154, 11156, 11157, 11158, 11160, 11161, 11162, 11163, 11164, 11165, 11166, 11167, 11169, 11170, -1, -1, -1, -1, -1, -1, -1, 11171, -1, -1, -1, -1, -1, 11172, -1, -1, -1, -1, -1, -1, -1, -1, 11176, -1, -1, -1, -1, -1, 11177, 11179, -1, -1, 11180, -1, -1, 11181, 11182, -1, -1, 11183, -1, -1, 11184, 11185, 11187, 11191, 11193, 11194, 11197, 11198, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11199, 11201, 11202, -1, -1, -1, 11203, 11205, -1, -1, 11207, 11208, 11210, -1, -1, -1, -1, 11211, -1, -1, -1, -1, 11213, -1, -1, -1, -1, -1, -1, /* 0x9b00 */ 11214, -1, 11215, -1, -1, -1, 11218, -1, -1, -1, -1, -1, -1, 11219, -1, -1, -1, -1, -1, 11220, -1, -1, -1, -1, -1, -1, 11222, 11223, -1, -1, -1, -1, -1, -1, 11224, 11227, -1, 11228, 11233, 11238, 11240, 11241, 11242, 11247, -1, 11248, 11253, -1, 11254, 11257, -1, -1, -1, -1, 11260, -1, -1, 11261, -1, 11262, -1, -1, -1, -1, 11264, -1, -1, -1, -1, -1, -1, 11265, -1, 11266, -1, -1, -1, -1, 11267, -1, 11269, -1, -1, -1, -1, -1, -1, 11274, 11276, -1, 11277, 11278, -1, -1, -1, -1, -1, -1, 11279, 11280, -1, -1, 11281, -1, 11282, -1, -1, -1, -1, 11283, -1, 11284, -1, -1, 11285, 11287, 11288, -1, -1, 11289, -1, -1, 11290, -1, -1, -1, -1, -1, -1, 11291, -1, 11292, -1, -1, -1, -1, -1, 11293, 11295, 11296, -1, 11297, 11298, 11299, 11300, 11301, 11302, 11303, -1, -1, -1, -1, -1, -1, 11304, -1, 11305, 11306, 11309, -1, -1, -1, -1, -1, -1, -1, 11310, 11311, -1, -1, 11313, 11314, -1, 11315, 11316, -1, -1, -1, -1, 11321, -1, -1, 11322, 11323, -1, -1, 11325, 11326, -1, -1, 11327, -1, 11328, 11329, -1, -1, -1, -1, -1, 11330, -1, 11332, 11333, 11335, -1, -1, -1, -1, -1, -1, 11336, -1, 11337, 11338, 11339, 11340, 11342, -1, -1, 11343, -1, 11345, -1, -1, -1, 11346, 11347, -1, 11348, -1, -1, 11349, 11350, -1, 11351, 11352, -1, -1, -1, -1, 11353, -1, -1, -1, 11354, 11355, -1, 11356, -1, 11359, -1, -1, -1, 11360, -1, 11361, /* 0x9c00 */ 11362, 11364, 11365, 11366, -1, -1, -1, -1, 11367, 11369, -1, -1, 11370, 11372, -1, 11374, 11375, -1, 11377, 11378, -1, -1, -1, -1, -1, -1, -1, 11379, 11381, -1, -1, 11382, 11383, -1, -1, 11384, 11385, 11386, -1, -1, 11388, 11390, -1, -1, -1, 11391, 11392, -1, -1, 11393, 11394, 11396, -1, 11397, -1, 11398, -1, 11399, 11400, 11402, 11403, -1, 11404, -1, -1, -1, 11405, -1, -1, 11406, -1, -1, 11407, 11408, -1, -1, -1, -1, -1, -1, -1, -1, 11411, 11412, 11413, -1, 11414, 11415, 11416, -1, -1, -1, -1, 11417, 11418, 11419, 11420, -1, -1, 11421, 11422, -1, -1, 11423, 11424, -1, -1, -1, -1, 11425, 11426, 11427, -1, -1, -1, -1, -1, -1, 11428, 11431, 11433, -1, 11435, 11436, 11441, 11442, 11443, 11444, 11445, 11446, 11447, -1, 11448, 11449, 11450, 11451, 11452, 11454, 11455, 11456, 11457, 11458, 11460, 11461, 11462, 11463, 11464, 11465, 11466, 11467, 11468, 11469, 11470, 11471, 11472, 11473, 11474, 11479, 11480, 11482, 11483, 11485, 11486, 11487, 11488, 11489, 11490, 11491, 11492, 11493, 11495, 11496, 11497, 11498, 11499, 11500, 11501, 11502, 11503, 11504, 11505, 11506, 11507, 11508, 11510, 11511, 11512, 11513, 11514, 11515, 11516, 11517, 11518, 11519, 11520, 11521, 11522, 11524, 11526, 11527, 11528, 11529, 11530, 11531, 11532, 11534, 11535, 11536, 11537, 11538, 11539, 11540, 11541, 11542, 11544, 11546, 11547, 11548, -1, 11549, 11550, 11551, 11553, 11554, 11555, 11556, 11557, 11558, -1, 11559, -1, 11561, -1, 11563, -1, 11564, 11566, -1, -1, -1, -1, -1, 11567, 11568, 11569, -1, 11570, -1, 11571, -1, -1, -1, -1, -1, -1, -1, /* 0x9d00 */ -1, -1, -1, -1, -1, -1, 11572, 11573, 11574, 11576, -1, -1, -1, -1, 11578, -1, -1, -1, 11580, -1, -1, 11581, -1, -1, -1, -1, -1, 11582, -1, 11583, 11585, 11586, -1, -1, -1, 11588, -1, -1, 11589, -1, 11590, -1, -1, -1, 11591, -1, -1, 11593, 11594, -1, -1, 11595, 11596, -1, -1, -1, -1, -1, -1, 11597, 11598, -1, -1, 11599, -1, -1, 11600, 11601, 11602, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11603, 11604, 11605, 11606, -1, -1, -1, -1, -1, 11607, -1, -1, 11608, 11609, 11611, -1, 11613, 11614, -1, -1, -1, -1, -1, -1, -1, -1, 11615, -1, 11616, -1, 11617, 11618, 11619, -1, 11620, -1, -1, -1, 11621, 11623, -1, -1, -1, -1, -1, -1, 11624, -1, -1, -1, -1, -1, -1, -1, -1, 11626, -1, 11628, 11629, -1, -1, -1, -1, 11630, -1, -1, -1, 11633, -1, -1, 11634, -1, 11635, -1, 11636, -1, -1, -1, -1, -1, -1, 11637, -1, -1, 11638, 11639, -1, -1, -1, 11640, 11641, 11642, 11644, -1, -1, 11645, -1, -1, 11647, -1, 11648, 11655, -1, -1, -1, 11656, 11657, 11658, 11659, -1, -1, 11660, 11661, 11662, 11663, 11664, 11665, -1, 11668, -1, 11669, 11670, 11671, -1, -1, -1, -1, 11672, -1, -1, -1, 11673, -1, -1, 11674, 11675, -1, 11677, 11678, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11679, 11680, -1, -1, -1, -1, 11681, -1, -1, -1, 11682, 11683, -1, 11684, 11685, 11687, -1, -1, -1, 11689, 11690, 11691, -1, -1, 11693, -1, 11694, /* 0x9e00 */ -1, -1, -1, -1, -1, -1, -1, 11695, -1, -1, 11696, -1, 11697, -1, 11698, 11699, -1, -1, -1, -1, -1, 11700, 11703, -1, 11710, -1, 11711, 11712, 11714, 11715, 11716, 11717, 11719, 11720, 11723, 11724, 11725, 11726, 11728, 11730, 11731, 11732, 11733, 11734, 11736, 11737, 11738, 11739, 11740, 11741, 11742, 11743, 11744, 11745, 11746, 11747, 11748, 11749, 11750, 11751, 11752, 11753, 11754, 11755, 11756, 11757, 11758, 11759, 11760, 11761, 11763, 11764, 11766, 11767, 11768, 11769, 11770, 11771, 11772, 11773, 11774, 11775, 11776, 11777, 11778, 11779, 11780, 11781, 11782, 11783, 11784, 11786, 11787, 11788, 11789, 11790, 11791, 11792, 11793, 11794, 11795, 11802, 11803, 11804, 11805, 11806, 11807, 11808, 11809, 11810, -1, 11811, 11812, 11813, 11814, 11815, 11816, 11817, -1, -1, 11819, 11822, 11824, 11825, 11826, 11829, 11831, -1, -1, -1, -1, 11832, 11833, 11834, -1, 11835, -1, -1, -1, -1, -1, -1, -1, 11836, -1, -1, -1, -1, -1, -1, -1, 11837, -1, -1, -1, -1, -1, -1, 11839, -1, -1, -1, -1, -1, 11840, 11842, 11843, -1, -1, 11844, 11846, 11851, 11856, 11858, -1, 11859, -1, -1, -1, -1, 11863, 11867, -1, -1, 11872, 11874, 11878, 11883, 11886, 11890, -1, -1, -1, -1, -1, 11894, 11895, -1, -1, -1, -1, 11897, -1, -1, 11898, -1, -1, 11899, -1, 11900, 11901, -1, -1, -1, -1, -1, 11902, 11903, -1, 11904, -1, -1, 11905, -1, -1, 11907, -1, -1, 11908, -1, -1, -1, 11909, 11910, 11911, -1, -1, 11912, -1, -1, -1, 11913, 11914, -1, 11915, -1, 11916, 11917, -1, 11918, -1, -1, -1, 11919, 11920, 11921, /* 0x9f00 */ -1, -1, 11923, 11924, -1, -1, -1, 11925, 11927, 11930, -1, 11931, 11932, 11933, 11934, -1, -1, 11935, 11936, 11937, -1, 11939, -1, 11940, -1, -1, -1, -1, -1, -1, -1, -1, 11942, 11943, -1, -1, -1, -1, 11944, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11945, -1, -1, -1, -1, 11946, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11947, -1, -1, -1, -1, 11948, 11952, -1, -1, 11954, 11956, 11958, 11962, 11964, 11966, 11967, 11969, -1, 11970, -1, 11971, 11972, -1, 11973, -1, -1, 11974, 11975, 11976, 11978, 11980, -1, -1, 11981, 11982, -1, 11985, 11986, -1, 11988, -1, -1, -1, 11989, 11990, 11991, -1, -1, -1, 11992, 11993, -1, -1, -1, -1, -1, -1, -1, 11994, 11996, 11997, 11998, 11999, 12000, 12002, 12003, 12004, 12005, 12006, 12007, 12008, 12009, 12010, 12013, -1, 12014, -1, 12015, -1, 12018, 12019, -1, -1, -1, 12020, 12022, 12023, 12024, 12026, 12029, 12031, -1, -1, 12033, -1, -1, 12036, -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, -1, -1, -1, }; recode-3.6/libiconv/cns11643.h0100644000000000000000000000142207206266436014474 0ustar rootroot/* * CNS 11643-1992 */ /* ISO-2022-CN and EUC-TW use CNS 11643-1992 planes 1 to 7. But all tables we * have are for CNS 11643-1992 planes 1,2,3. We use a trick to keep the * Unicode -> CNS 11643 table as small as possible (see cns11643_inv.h). */ #include "cns11643_1.h" #include "cns11643_2.h" #include "cns11643_3.h" #include "cns11643_inv.h" /* Returns the plane number (0,1,2) in r[0], the two bytes in r[1],r[2]. */ static int cns11643_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 3) { int ret = cns11643_inv_wctomb(conv,r+1,wc,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); r[0] = ((r[1] & 0x80) >> 6) | ((r[2] & 0x80) >> 7); r[1] &= 0x7f; r[2] &= 0x7f; return 3; } return RET_TOOSMALL; } recode-3.6/libiconv/cns11643_1.h0100644000000000000000000014333707206266436014730 0ustar rootroot /* * CNS 11643-1986 plane 1 */ static const unsigned short cns11643_1_2uni_page21[500] = { /* 0x21 */ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x30fb, 0xff1b, 0xff1a, 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52, 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xfe31, 0x2014, 0xfe32, 0x2013, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff08, 0xff09, 0xfe35, 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39, 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d, 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41, 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d, 0x301e, 0x2032, 0x2035, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7, 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, /* 0x22 */ 0x32a3, 0x2105, 0x203e, 0xfffd, 0xff3f, 0xfffd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe66, 0xfe65, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642, 0x2641, 0x2609, 0x2191, 0x2193, 0x2192, 0x2190, 0x2196, 0x2197, 0x2199, 0x2198, 0x2016, 0xff5c, 0xff0f, 0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5, 0x3012, 0xffe0, 0xffe1, 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5, 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4, 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, /* 0x23 */ 0x55e7, 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a, 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500, 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x24 */ 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0xfffd, 0x5344, 0xfffd, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, /* 0x25 */ 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x26 */ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, }; static const unsigned short cns11643_1_2uni_page42[33] = { /* 0x42 */ 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407, 0x2408, 0x2409, 0x240a, 0x240b, 0x240c, 0x240d, 0x240e, 0x240f, 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417, 0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d, 0x241e, 0x241f, 0x2421, }; static const unsigned short cns11643_1_2uni_page44[5401] = { /* 0x44 */ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c, 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b, 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a, 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e, 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f, 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8, 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2, 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11, 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88, 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3, 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141, 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, /* 0x45 */ 0x5206, 0x5207, 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929, 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f, 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236, 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247, 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19, 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e, 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4, 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9, 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, /* 0x46 */ 0x5317, 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e, 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8, 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1, 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e, 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7, 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17, 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6, 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11, 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, /* 0x47 */ 0x7acb, 0x4e1e, 0x4e1f, 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff, 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f, 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216, 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f, 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d, 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd, 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919, 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979, 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89, 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, /* 0x48 */ 0x5e74, 0x5f0f, 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263, 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2, 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64, 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50, 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d, 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001, 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c, 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e, 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621, 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34, 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38, 0x4f43, 0x4f54, 0x4f3c, 0x4f46, /* 0x49 */ 0x4f63, 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48, 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225, 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac, 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426, 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b, 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436, 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea, 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747, 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d, 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4, 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c, 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, /* 0x4a */ 0x5c3f, 0x5c3e, 0x5c90, 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a, 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8, 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d, 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298, 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538, 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c, 0x6756, 0x675e, 0x6749, 0x6746, 0x6760, 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81, 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70, 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e, 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, /* 0x4b */ 0x6c82, 0x7076, 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2, 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3, 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093, 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b, 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d, 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2, 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6, 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a, 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab, 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b, 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b, 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, /* 0x4c */ 0x4f7a, 0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238, 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379, 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475, 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492, 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462, 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a, 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947, 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae, 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af, 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a, 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, /* 0x4d */ 0x5c48, 0x5c45, 0x5c46, 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18, 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97, 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80, 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff, 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021, 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e, 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9, 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8, 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da, 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e, 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602, 0x660e, 0x6600, 0x660f, /* 0x4e */ 0x6615, 0x660a, 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c, 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f, 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a, 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3, 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe, 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9, 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1, 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095, 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248, 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9, 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a, 0x7684, 0x76c2, 0x76f2, 0x76f4, /* 0x4f */ 0x77e5, 0x77fd, 0x793e, 0x7940, 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54, 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1, 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d, 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1, 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7, 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1, 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580, 0x961c, 0x9640, 0x963f, 0x963b, 0x9644, 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae, 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd, 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0, 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, /* 0x50 */ 0x4fb7, 0x5157, 0x5192, 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b, 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b, 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8, 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4, 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf, 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae, 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8, 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6, 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5, 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7, 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08, 0x5f2d, 0x5f65, 0x5f88, /* 0x51 */ 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c, 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a, 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301, 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7, 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545, 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f, 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1, 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef, 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de, 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83, 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32, 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, /* 0x52 */ 0x6d31, 0x6d1e, 0x6d17, 0x6d3b, 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38, 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3, 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272, 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb, 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c, 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701, 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc, 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947, 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff, 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04, 0x7d06, 0x7f38, /* 0x53 */ 0x7f8e, 0x7fbf, 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3, 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd, 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6, 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301, 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306, 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4, 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4, 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed, 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b, 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df, 0x9996, 0x9999, 0x4e58, 0x4eb3, /* 0x54 */ 0x500c, 0x500d, 0x5023, 0x4fef, 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f, 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1, 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a, 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd, 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d, 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501, 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9, 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea, 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2, 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a, 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20, 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, /* 0x55 */ 0x5b6b, 0x5c58, 0x5bb0, 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04, 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8, 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab, 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063, 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f, 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3, 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346, 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328, 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642, 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, /* 0x56 */ 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851, 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845, 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27, 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87, 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93, 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a, 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9, 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8, 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de, 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7, 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b, 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728, 0x77e9, 0x7830, 0x7827, 0x7838, /* 0x57 */ 0x781d, 0x7834, 0x7837, 0x7825, 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f, 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7, 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06, 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22, 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b, 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8004, 0x8018, 0x8015, 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105, 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a, 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b, 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336, 0x8317, /* 0x58 */ 0x8340, 0x8331, 0x8328, 0x8343, 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3, 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18, 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16, 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77, 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7, 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095, 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd, 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b, 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8, 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c, 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e, 0x5055, 0x5075, /* 0x59 */ 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d, 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8, 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3, 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543, 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538, 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708, 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4, 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36, 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40, 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5, 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60, 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22, 0x5d11, 0x5d29, 0x5d14, /* 0x5a */ 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2, 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5, 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97, 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3, 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5, 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df, 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7, 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa, 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384, 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b, 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557, 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac, 0x65cf, /* 0x5b */ 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668, 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2, 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0, 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8, 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba, 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2, 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb, 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5, 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea, 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf, 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d, 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740a, 0x7403, /* 0x5c */ 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7, 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4, 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db, 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843, 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20, 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92, 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c, 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31, 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a, 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398, 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393, /* 0x5d */ 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c, 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4, 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e, 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f, 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b, 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa, 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019, 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015, 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8, 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7, 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0, 0x7adf, /* 0x5e */ 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5, 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096, 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269, 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7, 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594, 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2, 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599, 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960, 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71, 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c, 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43, 0x5e7e, 0x5eca, /* 0x5f */ 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9, 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c, 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1, 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3, 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2, 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4, 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676, 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f, 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df, 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb, 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb, /* 0x60 */ 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e, 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67, 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24, 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a, 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb, 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f, 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c, 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a, 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f, 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2, 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c, 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c, 0x786f, /* 0x61 */ 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97, 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52, 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e, 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66, 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052, 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146, 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403, 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1, 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2, 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df, 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0, 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, /* 0x62 */ 0x8a3b, 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41, 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56, 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb, 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85, 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb, 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031, 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163, 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d, 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593, 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686, 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7, 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea, /* 0x63 */ 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd, 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be, 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d, 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8, 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4, 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712, 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b, 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1, 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc, 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9, 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148, 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c, 0x6144, /* 0x64 */ 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137, 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d, 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417, 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968, 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b, 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf, 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5, 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4, 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164, 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, /* 0x65 */ 0x715e, 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f, 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f, 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601, 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df, 0x775b, 0x776b, 0x7766, 0x775e, 0x7763, 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee, 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891, 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c, 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77, 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93, 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a, 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084, /* 0x66 */ 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179, 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431, 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435, 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f, 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702, 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc, 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3, 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c, 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c, 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca, 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1, 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, /* 0x67 */ 0x8de4, 0x8de6, 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a, 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c, 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e, 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237, 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264, 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a, 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca, 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810, 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd, 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e, 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da, 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, /* 0x68 */ 0x51f3, 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617, 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616, 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e, 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925, 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7, 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5, 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84, 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6, 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147, 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158, 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f, 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1, /* 0x69 */ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995, 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab, 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3, 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4, 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff, 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b, 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7, 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d, 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1, 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7, 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, /* 0x6a */ 0x7a2e, 0x7a31, 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75, 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9, 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0, 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5, 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac, 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150, 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa, 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4, 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3, 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722, 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902, 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, /* 0x6b */ 0x8aa6, 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa, 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d, 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc, 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c, 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118, 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x92ac, 0x9280, 0x9285, 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291, 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c, 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817, 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1, 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3, 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, /* 0x6c */ 0x5100, 0x50fb, 0x50f5, 0x50f9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc, 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e, 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e, 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e, 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb, 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb, 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2, 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7, 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c, 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac, 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479, 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, /* 0x6d */ 0x64a5, 0x6493, 0x6495, 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499, 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4, 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd, 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11, 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84, 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e, 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f, 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b, 0x734e, 0x7357, 0x7469, 0x748b, 0x7483, 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626, 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c, 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, /* 0x6e */ 0x78be, 0x78d5, 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b, 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7, 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb, 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9, 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9, 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517, 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523, 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c, 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915, 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8, 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, /* 0x6f */ 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6, 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6, 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1, 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f, 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f, 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e, 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d, 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb, 0x92b7, 0x92ea, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2, 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707, 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c, 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df, 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, /* 0x70 */ 0x9aee, 0x9aef, 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03, 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3, 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668, 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be, 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e, 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be, 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc, 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4, 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8, 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44, 0x6a62, 0x6a61, 0x6a4b, 0x6a47, /* 0x71 */ 0x6a35, 0x6a5f, 0x6a48, 0x6b59, 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1, 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6, 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8, 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368, 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d, 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f, 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e, 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4, 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11, 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79, 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8, 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, /* 0x72 */ 0x8559, 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f, 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b, 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00, 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed, 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44, 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38, 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c, 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f, 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a, 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7, 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713, 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, /* 0x73 */ 0x9838, 0x983b, 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b, 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb, 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12, 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121, 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f, 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a, 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c, 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234, 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1, 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94, 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90, 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, /* 0x74 */ 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf, 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1, 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6, 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370, 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c, 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac, 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901, 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7, 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9, 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b, 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35, 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070, 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, /* 0x75 */ 0x81c2, 0x81c0, 0x81bf, 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584, 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8, 0x858a, 0x85a6, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab, 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938, 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20, 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd, 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a, 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d, 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e, 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc, 0x95c8, 0x95c6, /* 0x76 */ 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0, 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01, 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b, 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2, 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5e, 0x61e3, 0x6233, 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7, 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2, 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe, 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8, 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652, 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62, 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23, 0x7c21, 0x7ce7, 0x7e54, /* 0x77 */ 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52, 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf, 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba, 0x85b9, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2, 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59, 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d, 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a, 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a, 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9, 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6, 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba, 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03, 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, /* 0x78 */ 0x9bc9, 0x9bfd, 0x9bc8, 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133, 0x56a5, 0x56a8, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2, 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5, 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d, 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a, 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7, 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d, 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7e73, 0x7f85, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea, 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9, 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58, 0x8b49, 0x8b5a, /* 0x79 */ 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a, 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54, 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1, 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd, 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a, 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e, 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d, 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a, 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56b7, 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6, 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727, 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662, 0x7665, 0x7926, 0x792a, 0x792c, /* 0x7a */ 0x792b, 0x7ac7, 0x7af6, 0x7c4c, 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82, 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa, 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba, 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f, 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418, 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8, 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5, 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1, 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d, 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c, 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f, 0x7e8c, 0x7fbc, /* 0x7b */ 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821, 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74, 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf, 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b, 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957, 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d, 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19, 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9, 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61, 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3, 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc, 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973d, /* 0x7c */ 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955, 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b, 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6, 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca, 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638, 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464, 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4, 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1, 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88, 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92, 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744, 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa, 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, /* 0x7d */ 0x9f72, 0x5ef3, 0x6b16, 0x7063, 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470, 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a, 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5, 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f, 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, }; static int cns11643_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x21 && c1 <= 0x26) || (c1 == 0x42) || (c1 >= 0x44 && c1 <= 0x7d)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; if (i < 3102) { if (i < 500) wc = cns11643_1_2uni_page21[i]; } else if (i < 3290) { if (i < 3135) wc = cns11643_1_2uni_page42[i-3102]; } else { if (i < 8691) wc = cns11643_1_2uni_page44[i-3290]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } recode-3.6/libiconv/cns11643_2.h0100644000000000000000000017662607206266436014740 0ustar rootroot /* * CNS 11643-1986 plane 2 */ static const unsigned short cns11643_2_2uni_page21[7650] = { /* 0x21 */ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47, 0x4e8d, 0x56d7, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e, 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c, 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3, 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9, 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x5209, 0x531c, 0x534c, 0x5722, 0x5723, 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73, 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36, 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a, 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00, 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04, 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5210, 0x52a6, /* 0x22 */ 0x5322, 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a, 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977, 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e, 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4, 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259, 0x6260, 0x625a, 0x6265, 0x6537, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738, 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52, 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b, 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f, 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d, 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, /* 0x23 */ 0x4f64, 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33, 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad, 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437, 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d, 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5, 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940, 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f, 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f, 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95, 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d, 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed, 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, /* 0x24 */ 0x5fe3, 0x5ffa, 0x5fef, 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e, 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281, 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x65f0, 0x65f4, 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747, 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b, 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b, 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95, 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a, 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594, 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092, 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, /* 0x25 */ 0x828a, 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5, 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33, 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74, 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79, 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82, 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392, 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b, 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9, 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780, 0x5775, 0x577b, 0x5773, 0x5774, 0x5762, /* 0x26 */ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce, 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1, 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93, 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf, 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7, 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19, 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d, 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034, 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d, 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214, 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca, 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, /* 0x27 */ 0x62b8, 0x653d, 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb, 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6, 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798, 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791, 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25, 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee, 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2, 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2, 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0, 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1, 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, /* 0x28 */ 0x72c9, 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1, 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8, 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1, 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7, 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd, 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220, 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7, 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9, 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d, 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5, 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d, 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, /* 0x29 */ 0x4fd3, 0x4fb2, 0x4fc9, 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb, 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249, 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398, 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf, 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6, 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0, 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b, 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4, 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd, 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db, 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8, 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, /* 0x2a */ 0x5cdb, 0x5cde, 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf, 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22, 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3, 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054, 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c, 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e, 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303, 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313, 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa, 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622, 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f, 0x6710, 0x67c1, 0x67f2, 0x67c8, /* 0x2b */ 0x67ba, 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb, 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee, 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc, 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9, 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6, 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d, 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04, 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01, 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c, 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1, 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a, 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, /* 0x2c */ 0x72e4, 0x72e8, 0x72eb, 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8, 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7, 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e, 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703, 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809, 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5, 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80, 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f, 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d, 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7, 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, /* 0x2d */ 0x80e3, 0x80d9, 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd, 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8, 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1, 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4, 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673, 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07, 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf, 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3, 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033, 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027, 0x5035, 0x502f, 0x5031, 0x500e, /* 0x2e */ 0x515a, 0x5194, 0x5193, 0x51ca, 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e, 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2, 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504, 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1, 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b, 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6, 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9, 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15, 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad, 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1, 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa, 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, /* 0x2f */ 0x605a, 0x6067, 0x6041, 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095, 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2, 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4, 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358, 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4, 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f, 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816, 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844, 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d, 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34, 0x6b6d, 0x8082, 0x6b88, /* 0x30 */ 0x6be6, 0x6be4, 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64, 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f, 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60, 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68, 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d, 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39, 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5, 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277, 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb, 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3, 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7, 0x73d8, 0x73e8, 0x74de, 0x74df, /* 0x31 */ 0x74f4, 0x74f5, 0x7521, 0x755b, 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6, 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823, 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821, 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c, 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed, 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b, 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10, 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09, 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85, 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f, 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, /* 0x32 */ 0x7f5e, 0x7f60, 0x7f5d, 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e, 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100, 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351, 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342, 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324, 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353, 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2, 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686, 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695, 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883, 0x887e, 0x8874, 0x887c, /* 0x33 */ 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4, 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3, 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6, 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8, 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150, 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc, 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e, 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041, 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b, 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051, 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d, 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a, 0x5551, 0x5562, 0x5536, 0x5535, /* 0x34 */ 0x5530, 0x5552, 0x5545, 0x550c, 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540, 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc, 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3, 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1, 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9, 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67, 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c, 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b, 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69, 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1, 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c, 0x5d28, 0x5d0d, /* 0x35 */ 0x5d26, 0x5d25, 0x5d0f, 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1, 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96, 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3, 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db, 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365, 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397, 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375, 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378, 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665, 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887, 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f, 0x68a3, 0x68ac, 0x68a9, /* 0x36 */ 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877, 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e, 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b, 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38, 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab, 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6, 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5, 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0, 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9, 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb, 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104, 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8, 0x70f6, 0x710b, 0x7102, 0x710e, /* 0x37 */ 0x727e, 0x727b, 0x727c, 0x727f, 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff, 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401, 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b, 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb, 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f, 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b, 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b, 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94, 0x7a90, 0x7b35, 0x7b3b, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24, 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f, 0x7b32, 0x7b38, /* 0x38 */ 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3, 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29, 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63, 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0, 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f, 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127, 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232, 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4, 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9, 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e, 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387, 0x83ae, 0x8376, 0x8659, /* 0x39 */ 0x8656, 0x86bf, 0x86b7, 0x86c2, 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8, 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852, 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1, 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac, 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30, 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d, 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf, 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1, 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea, 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9, 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1, 0x91f3, 0x91f8, /* 0x3a */ 0x91e4, 0x91f9, 0x91ea, 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c, 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5, 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083, 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087, 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8, 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f, 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6, 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819, 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c, 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d, 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2, 0x5a9e, 0x5a78, 0x5aa6, /* 0x3b */ 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae, 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b, 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd, 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37, 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e, 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42, 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45, 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9, 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114, 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc, 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104, 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8, 0x63ef, 0x63c3, 0x649d, 0x63f3, /* 0x3c */ 0x63ca, 0x63e0, 0x63f6, 0x63d5, 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4, 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0, 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568, 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c, 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701, 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1, 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910, 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911, 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8, 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6, 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7, 0x6b39, 0x6b3b, /* 0x3d */ 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95, 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47, 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b, 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40, 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e, 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b, 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64, 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a, 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a, 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330, 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323, 0x7335, 0x730c, 0x742e, /* 0x3e */ 0x742c, 0x7430, 0x742b, 0x7416, 0x741a, 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420, 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1, 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da, 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b, 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d, 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c, 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b47, 0x7b44, 0x7b48, 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8, 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a, 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51, 0x7d5f, /* 0x3f */ 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65, 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050, 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d, 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204, 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423, 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410, 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5, 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9, 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5, 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x839a, 0x83c3, 0x83ec, 0x83ee, 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8, 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb, 0x86dc, /* 0x40 */ 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856, 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6, 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998, 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59, 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51, 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe, 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3, 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8, 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa, 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6, 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f, 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb, 0x9101, 0x9100, /* 0x41 */ 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f, 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226, 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204, 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689, 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c, 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83, 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca, 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb, 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c, 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0, 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5, /* 0x42 */ 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855, 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871, 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5, 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6, 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90, 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a, 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0, 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6, 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a, 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f, 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5, 0x63f1, /* 0x43 */ 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433, 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423, 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a, 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e, 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695, 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966, 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a, 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935, 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969, 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c, 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952, 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, /* 0x44 */ 0x6b48, 0x6b41, 0x6b9b, 0x6bfb, 0x6bfc, 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0, 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2, 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6, 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92, 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca, 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142, 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144, 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e, 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444, 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450, 0x744e, /* 0x45 */ 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe, 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603, 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6, 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f, 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759, 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895, 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896, 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19, 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13, 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64, 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70, 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88, 0x7d86, 0x7d80, /* 0x46 */ 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b, 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d, 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb, 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b, 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144, 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1, 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459, 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434, 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b, 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c, 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433, /* 0x47 */ 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450, 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d, 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6, 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0, 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4, 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f, 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81, 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66, 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c, 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0, 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2, 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00, 0x8f05, /* 0x48 */ 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044, 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114, 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a, 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246, 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253, 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692, 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac, 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab, 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4, 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, /* 0x49 */ 0x50d3, 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0, 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627, 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613, 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c, 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a, 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894, 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea, 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec, 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3, 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77, 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f, 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc, /* 0x4a */ 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6, 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153, 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165, 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b, 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d, 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b, 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459, 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705, 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9, 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999, 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4, 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3, 0x6993, /* 0x4b */ 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2, 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f, 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03, 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19, 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36, 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35, 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39, 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, /* 0x4c */ 0x7590, 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8, 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e, 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab, 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a, 0x798b, 0x7996, 0x7995, 0x7994, 0x7993, 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f, 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c, 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e, 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf, 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1, 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc, 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9, /* 0x4d */ 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024, 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c, 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce, 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd, 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2, 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6, 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db, 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740, 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741, 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712, 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724, 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, /* 0x4e */ 0x88f2, 0x88fa, 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb, 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9, 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96, 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09, 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06, 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d, 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124, 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4, 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6, 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e, 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286, 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, /* 0x4f */ 0x928b, 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e, 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce, 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d, 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7, 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f, 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8, 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a, 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635, 0x5641, 0x564a, 0x5649, 0x5646, 0x5658, 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a, 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af, 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7, /* 0x50 */ 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05, 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93, 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d, 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2, 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b, 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d, 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485, 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f, 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2, 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af, 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4, 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, /* 0x51 */ 0x69fe, 0x6a27, 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6, 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25, 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5, 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41, 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92, 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96, 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57, 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67, 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77, 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a, 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa, 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, /* 0x52 */ 0x735e, 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362, 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488, 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619, 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d, 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb, 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4, 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76, 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac, 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc, 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03, 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76, 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, /* 0x53 */ 0x7fea, 0x7fec, 0x7fe6, 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f, 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253, 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500, 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c, 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2, 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9, 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e, 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9, 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756, 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b, 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750, 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, /* 0x54 */ 0x876e, 0x875c, 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a, 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed, 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4, 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3, 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf, 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1, 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b, 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27, 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c, 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073, 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, /* 0x55 */ 0x912a, 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182, 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6, 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc, 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd, 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5, 0x92e1, 0x9325, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0, 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a, 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829, 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3, 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc, 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, /* 0x56 */ 0x9af2, 0x9af1, 0x9b46, 0x9b43, 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68, 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07, 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3, 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de, 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e, 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c, 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc, 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10, 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1, 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2, 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9, 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, /* 0x57 */ 0x5fbc, 0x5fbb, 0x619d, 0x61a8, 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf, 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd, 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c, 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd, 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67, 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51, 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50, 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56, 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7, 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad, 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4, 0x6fbd, 0x6f9e, /* 0x58 */ 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba, 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8, 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5, 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4, 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da, 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365, 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495, 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633, 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d, 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797, 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1, 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47, 0x7ab6, 0x7ab8, 0x7ab5, /* 0x59 */ 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7, 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea, 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7, 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20, 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f, 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c, 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6, 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2, 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856b, 0x854d, 0x8553, 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547, 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555, 0x8567, 0x8560, 0x858c, 0x8566, /* 0x5a */ 0x855d, 0x8554, 0x8565, 0x856c, 0x8663, 0x8665, 0x8664, 0x87a4, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785, 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789, 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2, 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0, 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91, 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c, 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45, 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36, 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079, 0x907b, /* 0x5b */ 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190, 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306, 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301, 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329, 0x9339, 0x9335, 0x932a, 0x9314, 0x930c, 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd, 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9, 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0, 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929, 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea, 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa, 0x9af9, 0x9af7, 0x9b33, /* 0x5c */ 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e, 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d, 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d, 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87, 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c, 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681, 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23, 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2, 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x61c3, 0x61b5, 0x61bc, 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9, 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da, 0x66d2, 0x6a8d, /* 0x5d */ 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b, 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e, 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a, 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9, 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde, 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2, 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2, 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510, 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4, 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc, 0x78ff, 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c, 0x7a5b, 0x7a56, /* 0x5e */ 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1, 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4, 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd, 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c, 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47, 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45, 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4, 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a, 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b, 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e, 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e, 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582, 0x8588, 0x8585, 0x8579, /* 0x5f */ 0x8576, 0x8598, 0x8590, 0x859f, 0x8668, 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5, 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af, 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de, 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937, 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18, 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15, 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f, 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f, 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40, 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f, 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356, 0x9347, /* 0x60 */ 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351, 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355, 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363, 0x9367, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3, 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718, 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c, 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a, 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933, 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1, 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb, 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01, 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1, 0x9ba5, 0x9ba4, 0x9b86, /* 0x61 */ 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41, 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45, 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d, 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff, 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e, 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c, 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed, 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff, 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db, 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6, 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9, 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e, 0x6fff, /* 0x62 */ 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201, 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376, 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2, 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657, 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x790c, 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac, 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d, 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56, 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53, 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0, 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3, 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8, 0x85c5, 0x85b1, 0x85b6, /* 0x63 */ 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be, 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5, 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8, 0x87e3, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd, 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949, 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f, 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e, 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98, 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60, 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67, 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47, 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5, 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, /* 0x64 */ 0x9392, 0x93b7, 0x939b, 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395, 0x9388, 0x9399, 0x939f, 0x9380, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4, 0x93a8, 0x93b4, 0x93a3, 0x95d2, 0x95d3, 0x95d1, 0x96b3, 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722, 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2, 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851, 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09, 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0, 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c, 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8, 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f, 0x9d4a, 0x9d5b, 0x9d4b, /* 0x65 */ 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52, 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01, 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c, 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad, 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912, 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70, 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e, 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1, 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd, 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016, 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6, 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, /* 0x66 */ 0x74b7, 0x74c3, 0x7516, 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921, 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c, 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78, 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b, 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7, 0x81d5, 0x820b, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9, 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8, 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de, 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c, 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962, 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959, 0x8988, 0x89b7, /* 0x67 */ 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40, 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55, 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a, 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d, 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51, 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad, 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec, 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3, 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93a5, 0x93e7, 0x957d, 0x95da, 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3, 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d, 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943, 0x99a6, 0x99a7, /* 0x68 */ 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b, 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2, 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0, 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec, 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81, 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b, 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85, 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68, 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d, 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2, 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef, 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df, 0x66e8, 0x66e3, 0x66e4, /* 0x69 */ 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9, 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034, 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x702a, 0x7040, 0x703b, 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba, 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd, 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2, 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47, 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff, 0x8079, 0x81db, 0x81d9, 0x8268, 0x8269, 0x8622, 0x85ff, 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605, 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68, 0x8b63, /* 0x6a */ 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84, 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143, 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb, 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419, 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412, 0x93fa, 0x9409, 0x93f8, 0x943c, 0x940a, 0x93ff, 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df, 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862, 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c, 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36, 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10, 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8, 0x9c40, /* 0x6b */ 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f, 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0, 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8, 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99, 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e, 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139, 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb, 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8, 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046, 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d, 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88, 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, /* 0x6c */ 0x8618, 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e, 0x8621, 0x8620, 0x8629, 0x861e, 0x8625, 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a, 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45, 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e, 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b, 0x9436, 0x9429, 0x943d, 0x9430, 0x9439, 0x942a, 0x9437, 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a, 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956, 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f, 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b, 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21, 0x9db7, /* 0x6d */ 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe, 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac, 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a, 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31, 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb, 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520, 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056, 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5, 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71, 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a, 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634, 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826, 0x882a, 0x8825, /* 0x6e */ 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84, 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a, 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c, 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b, 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49, 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55, 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c, 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde, 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9, 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35, 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299, /* 0x6f */ 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12, 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640, 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e, 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe, 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64, 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4, 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52, 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c, 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4, 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec, 0x9df4, /* 0x70 */ 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3, 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71, 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d, 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223, 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97, 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94, 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2, 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7, 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62, 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05, 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e, 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, /* 0x71 */ 0x6b18, 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9, 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a, 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648, 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5, 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749, 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10, 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78, 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2, 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9b2e, 0x9c74, 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4, 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e, 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, /* 0x72 */ 0x9961, 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48, 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481, 0x9a69, 0x9a68, 0x9e19, 0x864b, 0x8b9f, 0x9483, 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a, 0x7229, 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, }; static int cns11643_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x21 && c1 <= 0x72)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; { if (i < 7650) wc = cns11643_2_2uni_page21[i]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } recode-3.6/libiconv/cns11643_3.h0100644000000000000000000014612607206266436014731 0ustar rootroot /* * CNS 11643-1986 plane 14 part 1 */ static const unsigned short cns11643_3_2uni_page21[6147] = { /* 0x21 */ 0x4e28, 0x4e36, 0x4e3f, 0x4e85, 0x4e05, 0x4e04, 0x5182, 0x5196, 0x5338, 0x5369, 0x53b6, 0x4e2a, 0x4e87, 0x4e49, 0x51e2, 0x4e46, 0x4e8f, 0x4ebc, 0x4ebe, 0x5166, 0x51e3, 0x5204, 0x529c, 0xfffd, 0x5902, 0x590a, 0x5b80, 0x5ddb, 0x5e7a, 0x5e7f, 0x5ef4, 0x5f50, 0x5f51, 0x5f61, 0x961d, 0xfffd, 0x4e63, 0x4e62, 0x4ea3, 0x5185, 0x4ec5, 0x4ecf, 0x4ece, 0x4ecc, 0x5184, 0x5186, 0xfffd, 0xfffd, 0x51e4, 0x5205, 0x529e, 0x529d, 0x52fd, 0x5300, 0x533a, 0xfffd, 0x5346, 0x535d, 0x5386, 0x53b7, 0xfffd, 0x53cc, 0xfffd, 0x53ce, 0x5721, 0xfffd, 0x5e00, 0x5f0c, 0x6237, 0x6238, 0x6534, 0x6535, 0x65e0, 0xfffd, 0x738d, 0x4e97, 0x4ee0, 0xfffd, 0xfffd, 0x4ee7, 0xfffd, 0x4ee6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x56d8, 0x518b, 0x518c, 0x5199, 0x51e5, 0xfffd, 0x520b, 0xfffd, /* 0x22 */ 0xfffd, 0x5304, 0x5303, 0x5307, 0xfffd, 0x531e, 0x535f, 0x536d, 0x5389, 0x53ba, 0x53d0, 0xfffd, 0x53f6, 0x53f7, 0x53f9, 0xfffd, 0x53f4, 0xfffd, 0xfffd, 0x5724, 0x5904, 0x5918, 0x5932, 0x5930, 0x5934, 0xfffd, 0x5975, 0xfffd, 0x5b82, 0x5bf9, 0x5c14, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5e81, 0x5e83, 0x5f0d, 0x5f52, 0xfffd, 0x5fca, 0x5fc7, 0x6239, 0xfffd, 0x624f, 0x65e7, 0x672f, 0x6b7a, 0x6c39, 0xfffd, 0xfffd, 0x6c37, 0x6c44, 0x6c45, 0x738c, 0x7592, 0x7676, 0x9093, 0x9092, 0xfffd, 0xfffd, 0x4e21, 0x4e20, 0x4e22, 0x4e68, 0x4e89, 0x4e98, 0x4ef9, 0x4eef, 0xfffd, 0xfffd, 0x4ef8, 0x4f06, 0x4f03, 0x4efc, 0x4eee, 0x4f16, 0xfffd, 0x4f28, 0x4f1c, 0x4f07, 0x4f1a, 0x4efa, 0x4f17, 0x514a, 0xfffd, 0x5172, 0xfffd, 0x51b4, 0x51b3, 0x51b2, /* 0x23 */ 0xfffd, 0x51e8, 0xfffd, 0x5214, 0x520f, 0x5215, 0x5218, 0x52a8, 0xfffd, 0x534b, 0x534f, 0xfffd, 0x5350, 0xfffd, 0x538b, 0xfffd, 0x53be, 0xfffd, 0x53d2, 0x5416, 0x53ff, 0xfffd, 0x5400, 0xfffd, 0x5405, 0x5413, 0x5415, 0xfffd, 0xfffd, 0x56e3, 0x5735, 0x5736, 0x5731, 0x5732, 0x58ee, 0x5905, 0x4e54, 0xfffd, 0x5936, 0xfffd, 0xfffd, 0xfffd, 0x597a, 0xfffd, 0x5986, 0xfffd, 0xfffd, 0x5b86, 0x5f53, 0x5c18, 0xfffd, 0x5c3d, 0x5c78, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5c80, 0xfffd, 0x5e08, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5ef5, 0x5f0e, 0xfffd, 0xfffd, 0xfffd, 0x5fd3, 0x5fda, 0xfffd, 0x5fdb, 0xfffd, 0x620f, 0x625d, 0x625f, 0x6267, 0x6257, 0x9f50, 0xfffd, 0x65eb, 0x65ea, 0xfffd, 0x6737, 0xfffd, 0x6732, 0x6736, 0x6b22, 0x6bce, 0xfffd, 0x6c58, 0x6c51, 0x6c77, /* 0x24 */ 0x6c3c, 0xfffd, 0x6c5a, 0xfffd, 0x6c53, 0x706f, 0x7072, 0x706e, 0xfffd, 0xfffd, 0x7073, 0x72b1, 0x72b2, 0xfffd, 0x738f, 0xfffd, 0xfffd, 0xfffd, 0x793c, 0xfffd, 0x808d, 0x808e, 0xfffd, 0x827b, 0xfffd, 0x8d71, 0x8fb9, 0x9096, 0x909a, 0xfffd, 0x4e24, 0x4e71, 0xfffd, 0x4e9c, 0x4f45, 0x4f4a, 0x4f39, 0x4f37, 0xfffd, 0x4f32, 0x4f42, 0xfffd, 0x4f44, 0x4f4b, 0xfffd, 0x4f40, 0x4f35, 0x4f31, 0x5151, 0xfffd, 0x5150, 0x514e, 0xfffd, 0xfffd, 0x519d, 0xfffd, 0x51b5, 0x51b8, 0x51ec, 0x5223, 0x5227, 0x5226, 0x521f, 0x522b, 0x5220, 0x52b4, 0x52b3, 0xfffd, 0x5325, 0x533b, 0x5374, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x544d, 0xfffd, 0xfffd, 0x543a, 0xfffd, 0xfffd, 0x5444, 0x544c, 0x5423, 0x541a, 0x5432, 0x544b, 0x5421, 0xfffd, 0x5434, 0x5449, 0x5450, 0x5422, /* 0x25 */ 0x543f, 0x5451, 0x545a, 0x542f, 0xfffd, 0x56e9, 0x56f2, 0x56f3, 0x56ef, 0x56ed, 0x56ec, 0x56e6, 0x5748, 0xfffd, 0x5744, 0x573f, 0x573c, 0x5753, 0x5756, 0xfffd, 0x575f, 0x5743, 0x5758, 0x5757, 0xfffd, 0xfffd, 0xfffd, 0x5746, 0xfffd, 0x573d, 0xfffd, 0x5742, 0x5754, 0x5755, 0x58f1, 0x58f2, 0x58f0, 0x590b, 0x9ea6, 0x56f1, 0x593d, 0xfffd, 0x5994, 0x598c, 0xfffd, 0x599c, 0xfffd, 0xfffd, 0x599f, 0xfffd, 0x599b, 0xfffd, 0x5989, 0x599a, 0xfffd, 0x6588, 0xfffd, 0x5b8d, 0xfffd, 0x5bfe, 0x5bff, 0x5bfd, 0x5c2b, 0xfffd, 0x5c84, 0x5c8e, 0x5c9c, 0xfffd, 0xfffd, 0x5c85, 0x5df5, 0x5e09, 0xfffd, 0xfffd, 0x5e0b, 0xfffd, 0x5e92, 0x5e90, 0x5f03, 0xfffd, 0x5f1e, 0x5f63, 0xfffd, 0x5fe7, 0x5ffe, 0x5fe6, 0x5fdc, 0x5fce, 0xfffd, 0x5ffc, 0x5fdf, 0x5fec, 0x5ff6, 0xfffd, /* 0x26 */ 0x5ff2, 0x5ff0, 0x5ff9, 0xfffd, 0x6213, 0xfffd, 0xfffd, 0x623b, 0x623c, 0x6282, 0xfffd, 0xfffd, 0xfffd, 0x6278, 0x628b, 0xfffd, 0x629e, 0x62a5, 0x629b, 0x629c, 0x6299, 0x628d, 0x6285, 0x629d, 0x6275, 0xfffd, 0xfffd, 0xfffd, 0x65f6, 0xfffd, 0xfffd, 0xfffd, 0x66f5, 0x675b, 0xfffd, 0x6754, 0x6752, 0xfffd, 0x6758, 0x6744, 0x674a, 0x6761, 0xfffd, 0x6c7f, 0x6c91, 0x6c9e, 0xfffd, 0x6c6e, 0x6c7c, 0x6c9f, 0x6c75, 0xfffd, 0x6c56, 0x6ca2, 0x6c79, 0xfffd, 0x6ca1, 0xfffd, 0x6caa, 0x6ca0, 0xfffd, 0x7079, 0x7077, 0x707e, 0xfffd, 0x7075, 0x707b, 0x7264, 0xfffd, 0x72bb, 0x72bc, 0x72c7, 0x72b9, 0x72be, 0x72b6, 0xfffd, 0xfffd, 0x7398, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7593, 0x7680, 0xfffd, 0x7683, 0x76c0, 0x76c1, 0xfffd, 0xfffd, 0x77f4, 0x77f5, 0xfffd, 0x7acc, /* 0x27 */ 0x7acd, 0x7cfa, 0x809f, 0x8091, 0x8097, 0x8094, 0xfffd, 0x8286, 0x828c, 0xfffd, 0x8295, 0xfffd, 0x866c, 0xfffd, 0x8fb5, 0x8fbe, 0x8fc7, 0xfffd, 0x8fc1, 0x90a9, 0x90a4, 0xfffd, 0xfffd, 0xfffd, 0x90a8, 0x9627, 0x9626, 0x962b, 0x9633, 0x9634, 0x9629, 0x4e3d, 0xfffd, 0x4e9d, 0x4f93, 0x4f8a, 0xfffd, 0xfffd, 0x4f6d, 0x4f8e, 0x4fa0, 0x4fa2, 0x4fa1, 0x4f9f, 0x4fa3, 0xfffd, 0x4f72, 0xfffd, 0x4f8c, 0x5156, 0xfffd, 0xfffd, 0x5190, 0xfffd, 0xfffd, 0xfffd, 0x51ed, 0x51fe, 0x522f, 0xfffd, 0x523c, 0x5234, 0x5239, 0x52b9, 0x52b5, 0x52bf, 0x5355, 0xfffd, 0x5376, 0x537a, 0x5393, 0xfffd, 0x53c1, 0x53c2, 0x53d5, 0x5485, 0xfffd, 0x545f, 0x5493, 0x5489, 0x5479, 0x9efe, 0x548f, 0x5469, 0x546d, 0xfffd, 0x5494, 0x546a, 0x548a, 0xfffd, 0x56fd, 0x56fb, 0x56f8, 0xfffd, /* 0x28 */ 0x56fc, 0x56f6, 0x5765, 0x5781, 0x5763, 0x5767, 0xfffd, 0x576e, 0x5778, 0x577f, 0xfffd, 0xfffd, 0x58f3, 0x594b, 0x594c, 0xfffd, 0xfffd, 0xfffd, 0x59ad, 0xfffd, 0x59c4, 0xfffd, 0x59c2, 0x59b0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x59bf, 0xfffd, 0x59c9, 0x59b8, 0x59ac, 0xfffd, 0xfffd, 0xfffd, 0x59b7, 0x59d7, 0xfffd, 0x5b60, 0xfffd, 0x5b96, 0x5b9e, 0x5b94, 0x5b9f, 0x5b9d, 0xfffd, 0x5c00, 0x5c19, 0xfffd, 0xfffd, 0x5c49, 0x5c4a, 0xfffd, 0x5cbb, 0x5cc1, 0xfffd, 0xfffd, 0xfffd, 0x5cb9, 0x5c9e, 0x5cb4, 0x5cba, 0x5df6, 0x5e13, 0x5e12, 0x5e77, 0xfffd, 0x5e98, 0xfffd, 0x5e99, 0x5e9d, 0x5ef8, 0xfffd, 0x5ef9, 0xfffd, 0x5f06, 0x5f21, 0xfffd, 0x5f25, 0x5f55, 0xfffd, 0xfffd, 0xfffd, 0x5f84, 0x5f83, 0x6030, 0x6007, 0xfffd, 0x6036, 0xfffd, 0xfffd, 0xfffd, 0x5fe9, /* 0x29 */ 0x603d, 0x6008, 0xfffd, 0xfffd, 0x62ba, 0x62b2, 0xfffd, 0x62b7, 0x62e4, 0x62a7, 0xfffd, 0xfffd, 0xfffd, 0x62d5, 0x62e1, 0x62dd, 0x62a6, 0x62c1, 0x62c5, 0x62c0, 0x62df, 0x62e0, 0x62de, 0xfffd, 0x6589, 0xfffd, 0x65a6, 0x65ba, 0xfffd, 0x65ff, 0xfffd, 0x6617, 0x6618, 0x6601, 0x65fe, 0xfffd, 0x670c, 0xfffd, 0x676b, 0x6796, 0x6782, 0x678a, 0xfffd, 0x67a3, 0xfffd, 0x67a2, 0x678f, 0xfffd, 0x67f9, 0x6780, 0x6b26, 0x6b27, 0x6b68, 0x6b69, 0xfffd, 0x6b81, 0x6bb4, 0x6bd1, 0xfffd, 0xfffd, 0x6c1c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6c97, 0x6c6c, 0x6cdf, 0xfffd, 0x6cea, 0xfffd, 0x6ce4, 0x6cd8, 0x6cb2, 0x6cce, 0x6cc8, 0xfffd, 0x708b, 0x7088, 0x7090, 0x708f, 0xfffd, 0x7087, 0x7089, 0x708d, 0x7081, 0xfffd, 0x708c, 0xfffd, 0xfffd, 0x7240, 0xfffd, 0xfffd, /* 0x2a */ 0x7265, 0x7266, 0x7268, 0xfffd, 0xfffd, 0x72cd, 0x72d3, 0x72db, 0xfffd, 0x72cf, 0x73a7, 0x73a3, 0x739e, 0xfffd, 0x73af, 0xfffd, 0xfffd, 0x73aa, 0x739c, 0xfffd, 0x7542, 0x7544, 0x753b, 0x7541, 0xfffd, 0x759b, 0x759e, 0xfffd, 0x79c4, 0x79c3, 0x79c6, 0xfffd, 0xfffd, 0x79c7, 0xfffd, 0x79ca, 0xfffd, 0xfffd, 0x7acf, 0x7c76, 0x7c74, 0x7cff, 0x7cfc, 0xfffd, 0xfffd, 0x7f59, 0x80a8, 0xfffd, 0xfffd, 0x80b0, 0xfffd, 0x80b3, 0xfffd, 0x80a4, 0x80b6, 0x80a7, 0x80ac, 0xfffd, 0x80a6, 0x5367, 0x820e, 0x82c4, 0x833e, 0x829c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x82aa, 0xfffd, 0x82c9, 0xfffd, 0xfffd, 0x82a6, 0x82b2, 0xfffd, 0xfffd, 0xfffd, 0x8fcc, 0x8fd9, 0x8fca, 0x8fd8, 0x8fcf, 0x90b7, 0xfffd, 0x90ad, 0x90b9, 0x9637, 0xfffd, 0x9641, 0x963e, 0x96b6, 0x9751, /* 0x2b */ 0x9763, 0x4e57, 0x4e79, 0x4eb2, 0x4eb0, 0x4eaf, 0x4eb1, 0x4fd2, 0x4fd5, 0xfffd, 0x4fbe, 0x4fb8, 0x4fb0, 0x4fb1, 0x4fc8, 0xfffd, 0xfffd, 0x4fc6, 0x4fcc, 0x4fe5, 0x4fe3, 0x4fb4, 0x516a, 0xfffd, 0x519f, 0xfffd, 0x51c1, 0xfffd, 0x51c2, 0x51c3, 0x5245, 0x5248, 0xfffd, 0xfffd, 0x524f, 0xfffd, 0xfffd, 0x52c5, 0x52ca, 0x52c4, 0x5327, 0x5358, 0x537d, 0xfffd, 0x53dd, 0x53dc, 0x53da, 0x53d9, 0x54b9, 0xfffd, 0x54d0, 0x54b4, 0x54ca, 0xfffd, 0x54a3, 0x54da, 0x54a4, 0xfffd, 0x54b2, 0x549e, 0x549f, 0x54b5, 0xfffd, 0xfffd, 0x54cd, 0xfffd, 0x54cc, 0xfffd, 0x5700, 0x57ac, 0x5791, 0x578e, 0x578d, 0x5792, 0x57a1, 0x5790, 0x57a6, 0x57a8, 0xfffd, 0x579c, 0x5796, 0x57a7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x58f5, 0xfffd, 0x5909, 0x5908, 0xfffd, 0x5952, 0xfffd, 0xfffd, /* 0x2c */ 0x59df, 0xfffd, 0x59eb, 0x59ef, 0x59f0, 0x59d5, 0x5a0d, 0x5a04, 0x59f9, 0x5a02, 0x59f8, 0x59e2, 0x59d9, 0x59e7, 0x5b6a, 0xfffd, 0xfffd, 0x5bab, 0xfffd, 0x5c1b, 0x5c2f, 0xfffd, 0x663c, 0xfffd, 0xfffd, 0xfffd, 0x5cd1, 0x5cdc, 0x5ce6, 0x5ce1, 0x5ccd, 0xfffd, 0x5ce2, 0x5cdd, 0x5ce5, 0x5dfb, 0x5dfa, 0x5e1e, 0xfffd, 0x5ea1, 0xfffd, 0xfffd, 0x5efc, 0x5efb, 0x5f2f, 0xfffd, 0xfffd, 0x5f66, 0xfffd, 0xfffd, 0xfffd, 0x605c, 0xfffd, 0x604e, 0x6051, 0xfffd, 0xfffd, 0x6023, 0x6031, 0x607c, 0x6052, 0xfffd, 0x6060, 0x604a, 0x6061, 0xfffd, 0x6218, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x631f, 0x6317, 0x62ea, 0x6321, 0x6304, 0x6305, 0xfffd, 0x6531, 0x6544, 0x6540, 0xfffd, 0x6542, 0x65be, 0xfffd, 0x6629, 0x661b, 0xfffd, 0x6623, 0x662c, 0x661a, /* 0x2d */ 0x6630, 0x663b, 0x661e, 0x6637, 0x6638, 0xfffd, 0x670e, 0xfffd, 0xfffd, 0x67e8, 0x67d6, 0xfffd, 0x67c7, 0x67bc, 0x6852, 0x67bf, 0x67d5, 0x67fe, 0x8363, 0x67fb, 0xfffd, 0x67b1, 0x6801, 0x6805, 0x6800, 0x67d7, 0xfffd, 0x6b2a, 0x6b6b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6be1, 0xfffd, 0xfffd, 0x6d23, 0x6cff, 0x6d14, 0x6d05, 0x6d13, 0x6d06, 0x6d21, 0xfffd, 0x6d15, 0x6caf, 0x6cf4, 0x6d02, 0x6d45, 0xfffd, 0x6d26, 0xfffd, 0x6d44, 0xfffd, 0x6d24, 0x70a5, 0xfffd, 0x70a3, 0xfffd, 0x70a2, 0x70bb, 0x70a0, 0x70aa, 0xfffd, 0xfffd, 0x70a8, 0x70b6, 0x70b2, 0x70a7, 0xfffd, 0xfffd, 0x70b9, 0x722e, 0xfffd, 0x723c, 0xfffd, 0x726d, 0xfffd, 0xfffd, 0x72e7, 0x72ed, 0xfffd, 0x72ec, 0x72e5, 0x72e2, 0xfffd, 0x73c4, 0x73bd, 0x73cf, 0x73c9, 0x73c1, 0x73d0, 0xfffd, 0x73ce, /* 0x2e */ 0x74ed, 0x74eb, 0xfffd, 0x74ef, 0x7549, 0x7550, 0x7546, 0x754a, 0xfffd, 0x754d, 0x75a6, 0xfffd, 0xfffd, 0xfffd, 0x75a8, 0xfffd, 0xfffd, 0x76c7, 0x76ff, 0xfffd, 0x76fd, 0x77e6, 0x780a, 0xfffd, 0x7804, 0x780b, 0x7807, 0xfffd, 0x7815, 0x7808, 0xfffd, 0x79d3, 0x79d4, 0x79d0, 0x79d7, 0x7a7c, 0xfffd, 0xfffd, 0x7a7d, 0x7a83, 0x7a82, 0xfffd, 0x7ad4, 0x7ad5, 0x7ad3, 0x7ad0, 0x7ad2, 0x7afe, 0x7afc, 0x7c77, 0x7c7c, 0x7c7b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7f8f, 0x80d3, 0xfffd, 0x80cb, 0x80d2, 0xfffd, 0x8109, 0x80e2, 0x80df, 0x80c6, 0xfffd, 0x8224, 0x82f7, 0x82d8, 0x82dd, 0xfffd, 0xfffd, 0x82f8, 0x82fc, 0xfffd, 0xfffd, 0x82e9, 0xfffd, 0x82ee, 0xfffd, 0x82d0, 0x830e, 0x82e2, 0x830b, 0x82fd, 0x5179, 0x8676, 0xfffd, 0x8678, /* 0x2f */ 0xfffd, 0xfffd, 0x8675, 0x867d, 0xfffd, 0x8842, 0x8866, 0xfffd, 0x898c, 0x8a05, 0xfffd, 0x8a06, 0xfffd, 0x8c9f, 0xfffd, 0x8ff1, 0x8fe7, 0x8fe9, 0x8fef, 0x90c2, 0x90bc, 0xfffd, 0x90c6, 0x90c0, 0xfffd, 0xfffd, 0x90cd, 0x90c9, 0xfffd, 0x90c4, 0xfffd, 0x9581, 0xfffd, 0x9cec, 0x5032, 0x4ff9, 0x501d, 0x4fff, 0x5004, 0x4ff0, 0x5003, 0xfffd, 0x5002, 0x4ffc, 0x4ff2, 0x5024, 0x5008, 0x5036, 0x502e, 0xfffd, 0x5010, 0x5038, 0x5039, 0x4ffd, 0x5056, 0x4ffb, 0x51a3, 0x51a6, 0x51a1, 0xfffd, 0xfffd, 0x51c7, 0x51c9, 0x5260, 0x5264, 0x5259, 0x5265, 0x5267, 0x5257, 0x5263, 0xfffd, 0x5253, 0xfffd, 0x52cf, 0xfffd, 0x52ce, 0x52d0, 0x52d1, 0x52cc, 0xfffd, 0xfffd, 0xfffd, 0x550d, 0x54f4, 0xfffd, 0x5513, 0x54ef, 0x54f5, 0x54f9, 0x5502, 0x5500, 0xfffd, 0xfffd, 0x5518, /* 0x30 */ 0x54f0, 0x54f6, 0xfffd, 0xfffd, 0x5519, 0xfffd, 0x5705, 0x57c9, 0xfffd, 0x57b7, 0x57cd, 0xfffd, 0xfffd, 0xfffd, 0x57be, 0x57bb, 0xfffd, 0x57db, 0x57c8, 0x57c4, 0x57c5, 0x57d1, 0x57ca, 0x57c0, 0xfffd, 0xfffd, 0x5a21, 0x5a2a, 0xfffd, 0x5a1d, 0xfffd, 0x5a0b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5a22, 0xfffd, 0xfffd, 0x5a24, 0xfffd, 0x5a14, 0x5a31, 0xfffd, 0x5a2f, 0x5a1a, 0x5a12, 0xfffd, 0xfffd, 0x5a26, 0xfffd, 0xfffd, 0x5bbc, 0x5bbb, 0x5bb7, 0x5c05, 0x5c06, 0x5c52, 0x5c53, 0xfffd, 0xfffd, 0x5cfa, 0x5ceb, 0xfffd, 0x5cf3, 0x5cf5, 0x5ce9, 0x5cef, 0xfffd, 0x5e2a, 0x5e30, 0x5e2e, 0x5e2c, 0x5e2f, 0x5eaf, 0x5ea9, 0xfffd, 0x5efd, 0x5f32, 0x5f8e, 0x5f93, 0x5f8f, 0x604f, 0x6099, 0xfffd, 0x607e, 0xfffd, 0x6074, 0x604b, 0x6073, 0x6075, 0xfffd, 0xfffd, 0x6056, /* 0x31 */ 0x60a9, 0x608b, 0x60a6, 0xfffd, 0x6093, 0x60ae, 0x609e, 0x60a7, 0x6245, 0xfffd, 0xfffd, 0x632e, 0xfffd, 0x6352, 0x6330, 0x635b, 0xfffd, 0x6319, 0x631b, 0xfffd, 0x6331, 0x635d, 0x6337, 0x6335, 0x6353, 0xfffd, 0x635c, 0x633f, 0x654b, 0xfffd, 0xfffd, 0x658b, 0xfffd, 0x659a, 0x6650, 0x6646, 0x664e, 0x6640, 0xfffd, 0x664b, 0x6648, 0xfffd, 0x6660, 0x6644, 0x664d, 0xfffd, 0x6837, 0x6824, 0xfffd, 0xfffd, 0x681b, 0x6836, 0xfffd, 0x682c, 0x6819, 0x6856, 0x6847, 0x683e, 0x681e, 0xfffd, 0x6815, 0x6822, 0x6827, 0x6859, 0x6858, 0x6855, 0x6830, 0x6823, 0x6b2e, 0x6b2b, 0x6b30, 0x6b6c, 0xfffd, 0x6b8b, 0xfffd, 0x6be9, 0x6bea, 0x6be5, 0x6d6b, 0xfffd, 0xfffd, 0x6d73, 0x6d57, 0xfffd, 0xfffd, 0x6d5d, 0x6d56, 0x6d8f, 0x6d5b, 0x6d1c, 0x6d9a, 0x6d9b, 0x6d99, 0xfffd, /* 0x32 */ 0x6d81, 0x6d71, 0xfffd, 0xfffd, 0x6d72, 0x6d5c, 0x6d96, 0x70c4, 0x70db, 0x70cc, 0x70d0, 0x70e3, 0x70df, 0xfffd, 0x70d6, 0x70ee, 0x70d5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x727a, 0xfffd, 0x72f5, 0x7302, 0xfffd, 0xfffd, 0x73e2, 0x73ec, 0x73d5, 0x73f9, 0x73df, 0x73e6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x73e4, 0x73e1, 0x74f3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7556, 0x7555, 0x7558, 0x7557, 0x755e, 0x75c3, 0xfffd, 0xfffd, 0x75b4, 0xfffd, 0x75b1, 0xfffd, 0xfffd, 0x76cb, 0x76cc, 0x772a, 0xfffd, 0x7716, 0x770f, 0xfffd, 0xfffd, 0x773f, 0x772b, 0x770e, 0x7724, 0xfffd, 0x7721, 0x7718, 0x77dd, 0xfffd, 0xfffd, 0x7824, 0x7836, 0xfffd, 0x7958, 0x7959, 0xfffd, 0x7962, 0x79da, 0x79d9, 0xfffd, 0x79e1, 0x79e5, 0x79e8, 0x79db, 0xfffd, 0x79e2, 0x79f0, 0xfffd, 0xfffd, /* 0x33 */ 0xfffd, 0xfffd, 0x7ada, 0x7add, 0xfffd, 0x7adb, 0x7adc, 0xfffd, 0xfffd, 0x7b0d, 0x7b0b, 0x7b14, 0x7c8e, 0x7c86, 0xfffd, 0x7c87, 0x7c83, 0x7c8b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d24, 0xfffd, 0xfffd, 0xfffd, 0x7d25, 0x7f62, 0x7f93, 0x7f99, 0x7f97, 0xfffd, 0xfffd, 0x7fc4, 0x7fc6, 0x800a, 0xfffd, 0xfffd, 0x8040, 0x803c, 0x803b, 0x80f6, 0x80ff, 0x80ee, 0x8104, 0x8103, 0x8107, 0xfffd, 0xfffd, 0x80f7, 0xfffd, 0xfffd, 0x822d, 0xfffd, 0x8227, 0x8229, 0x831f, 0x8357, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8321, 0xfffd, 0xfffd, 0x8318, 0x8358, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8684, 0x869f, 0x869b, 0x8689, 0x86a6, 0x8692, 0x868f, 0x86a0, 0x884f, 0x8878, 0x887a, 0x886e, 0x887b, 0x8884, 0x8873, 0xfffd, 0xfffd, 0x8a0d, 0x8a0b, 0x8a19, 0xfffd, 0xfffd, /* 0x34 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ff9, 0x9009, 0x9008, 0xfffd, 0x90de, 0x9151, 0xfffd, 0xfffd, 0x91db, 0x91df, 0x91de, 0x91d6, 0x91e0, 0x9585, 0x9660, 0x9659, 0xfffd, 0x9656, 0xfffd, 0xfffd, 0x96bd, 0xfffd, 0xfffd, 0x5042, 0x5059, 0xfffd, 0x5044, 0x5066, 0x5052, 0x5054, 0x5071, 0x5050, 0x507b, 0x507c, 0x5058, 0xfffd, 0xfffd, 0x5079, 0x506c, 0x5078, 0x51a8, 0x51d1, 0x51cf, 0x5268, 0x5276, 0x52d4, 0xfffd, 0x53a0, 0x53c4, 0xfffd, 0x5558, 0x554c, 0x5568, 0xfffd, 0x5549, 0xfffd, 0xfffd, 0x555d, 0x5529, 0xfffd, 0x5554, 0x5553, 0xfffd, 0x555a, 0xfffd, 0x553a, 0x553f, 0x552b, 0x57ea, 0xfffd, 0x57ef, 0xfffd, 0xfffd, 0x57dd, 0x57fe, 0xfffd, 0x57de, 0x57e6, 0xfffd, 0x57e8, 0x57ff, 0x5803, 0x58f7, 0x68a6, 0x591f, 0xfffd, 0x595b, 0x595d, 0x595e, 0xfffd, /* 0x35 */ 0xfffd, 0x5a2b, 0xfffd, 0x5a3b, 0xfffd, 0xfffd, 0x5a61, 0x5a3a, 0x5a6e, 0x5a4b, 0x5a6b, 0xfffd, 0xfffd, 0x5a45, 0x5a4e, 0x5a68, 0x5a3d, 0x5a71, 0x5a3f, 0x5a6f, 0x5a75, 0xfffd, 0x5a73, 0x5a2c, 0x5a59, 0x5a54, 0x5a4f, 0x5a63, 0xfffd, 0xfffd, 0x5bc8, 0xfffd, 0x5bc3, 0xfffd, 0x5c5b, 0x5c61, 0xfffd, 0x5d21, 0x5d0a, 0x5d09, 0xfffd, 0x5d2c, 0x5d08, 0xfffd, 0xfffd, 0x5d2a, 0x5d15, 0xfffd, 0x5d10, 0x5d13, 0xfffd, 0x5d2f, 0x5d18, 0xfffd, 0x5de3, 0x5e39, 0x5e35, 0x5e3a, 0x5e32, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5ebb, 0x5eba, 0x5f34, 0x5f39, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6098, 0xfffd, 0x60d0, 0xfffd, 0xfffd, 0xfffd, 0x60d7, 0x60aa, 0xfffd, 0x60a1, 0x60a4, 0xfffd, 0x60ee, 0xfffd, 0x60e7, 0xfffd, 0xfffd, 0x60de, 0xfffd, 0xfffd, 0x637e, 0x638b, 0xfffd, /* 0x36 */ 0xfffd, 0x6379, 0x6386, 0x6393, 0xfffd, 0x6373, 0x636a, 0xfffd, 0x636c, 0xfffd, 0x637f, 0xfffd, 0x63b2, 0x63ba, 0xfffd, 0xfffd, 0x6366, 0x6374, 0xfffd, 0x655a, 0xfffd, 0x654e, 0x654d, 0x658d, 0x658e, 0x65ad, 0xfffd, 0x65c7, 0x65ca, 0xfffd, 0x65c9, 0xfffd, 0x65e3, 0x6657, 0xfffd, 0x6663, 0x6667, 0x671a, 0x6719, 0x6716, 0xfffd, 0xfffd, 0x689e, 0x68b6, 0x6898, 0x6873, 0xfffd, 0x689a, 0x688e, 0x68b7, 0x68db, 0x68a5, 0x686c, 0x68c1, 0x6884, 0xfffd, 0xfffd, 0x6895, 0x687a, 0x6899, 0xfffd, 0x68b8, 0x68b9, 0x6870, 0xfffd, 0x6b35, 0xfffd, 0x6b90, 0x6bbb, 0x6bed, 0xfffd, 0xfffd, 0xfffd, 0x6dc1, 0x6dc3, 0x6dce, 0xfffd, 0xfffd, 0x6dad, 0x6e04, 0xfffd, 0x6db9, 0xfffd, 0x6de7, 0xfffd, 0x6e08, 0x6e06, 0xfffd, 0x6e0a, 0x6db0, 0xfffd, 0x6df8, 0x6e0c, 0xfffd, /* 0x37 */ 0x6db1, 0xfffd, 0x6e02, 0x6e07, 0x6e09, 0x6e01, 0x6e17, 0x6dff, 0x6e12, 0xfffd, 0xfffd, 0x7103, 0x7107, 0x7101, 0x70f5, 0x70f1, 0x7108, 0x70f2, 0x710f, 0xfffd, 0x70fe, 0xfffd, 0xfffd, 0xfffd, 0x731a, 0x7310, 0x730e, 0x7402, 0x73f3, 0xfffd, 0xfffd, 0x73fb, 0xfffd, 0xfffd, 0xfffd, 0x751b, 0x7523, 0x7561, 0x7568, 0xfffd, 0x7567, 0x75d3, 0xfffd, 0xfffd, 0x7690, 0xfffd, 0xfffd, 0x76d5, 0x76d7, 0x76d6, 0x7730, 0xfffd, 0x7726, 0xfffd, 0x7740, 0xfffd, 0x771e, 0xfffd, 0xfffd, 0xfffd, 0x7847, 0xfffd, 0x784b, 0x7851, 0x784f, 0x7842, 0x7846, 0xfffd, 0x796e, 0x796c, 0x79f2, 0xfffd, 0x79f1, 0x79f5, 0x79f3, 0x79f9, 0xfffd, 0xfffd, 0xfffd, 0x7a9a, 0x7a93, 0x7a91, 0x7ae1, 0xfffd, 0xfffd, 0x7b21, 0x7b1c, 0x7b16, 0x7b17, 0x7b36, 0x7b1f, 0xfffd, 0x7c93, 0x7c99, /* 0x38 */ 0x7c9a, 0x7c9c, 0xfffd, 0x7d49, 0xfffd, 0x7d34, 0x7d37, 0xfffd, 0x7d2d, 0xfffd, 0x7d4c, 0xfffd, 0xfffd, 0x7d48, 0xfffd, 0xfffd, 0x7f3b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8008, 0x801a, 0xfffd, 0x801d, 0xfffd, 0x8049, 0x8045, 0x8044, 0x7c9b, 0xfffd, 0xfffd, 0x812a, 0x812e, 0xfffd, 0xfffd, 0x8131, 0xfffd, 0x811a, 0x8134, 0x8117, 0xfffd, 0xfffd, 0xfffd, 0x831d, 0x8371, 0x8384, 0x8380, 0x8372, 0x83a1, 0xfffd, 0x8379, 0x8391, 0xfffd, 0x839f, 0x83ad, 0xfffd, 0xfffd, 0x8323, 0xfffd, 0x8385, 0x839c, 0x83b7, 0x8658, 0x865a, 0xfffd, 0x8657, 0x86b2, 0xfffd, 0x86ae, 0xfffd, 0xfffd, 0xfffd, 0x8845, 0x889c, 0x8894, 0x88a3, 0x888f, 0x88a5, 0x88a9, 0x88a6, 0x888a, 0x88a0, 0x8890, 0x8992, 0x8991, 0x8994, 0xfffd, 0x8a26, 0x8a32, 0x8a28, 0xfffd, 0xfffd, 0x8a1c, /* 0x39 */ 0xfffd, 0x8a2b, 0x8a20, 0xfffd, 0x8a29, 0xfffd, 0xfffd, 0xfffd, 0x8a21, 0x8c3a, 0xfffd, 0x8c5b, 0x8c58, 0x8c7c, 0xfffd, 0x8ca6, 0x8cae, 0x8cad, 0x8d65, 0xfffd, 0x8d7e, 0xfffd, 0x8d7c, 0x8d7f, 0x8d7a, 0x8dbd, 0xfffd, 0xfffd, 0x8dc0, 0x8dbb, 0x8ead, 0x8eaf, 0x8ed6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ed9, 0xfffd, 0xfffd, 0x9012, 0x900e, 0x9025, 0xfffd, 0x9013, 0x90ee, 0xfffd, 0x90ab, 0x90f7, 0xfffd, 0x9159, 0x9154, 0x91f2, 0x91f0, 0x91e5, 0x91f6, 0xfffd, 0xfffd, 0x9587, 0xfffd, 0x965a, 0xfffd, 0xfffd, 0x966e, 0xfffd, 0xfffd, 0xfffd, 0x9679, 0xfffd, 0x98e1, 0x98e6, 0xfffd, 0x9ec4, 0x9ed2, 0x4e80, 0xfffd, 0x4e81, 0x508f, 0x5097, 0x5088, 0x5089, 0xfffd, 0xfffd, 0x5081, 0x5160, 0xfffd, 0xfffd, 0x5e42, 0x51d3, 0xfffd, 0xfffd, 0x51d2, 0x51d6, /* 0x3a */ 0x5273, 0xfffd, 0x5270, 0xfffd, 0xfffd, 0xfffd, 0x53a8, 0x53a6, 0x53c5, 0x5597, 0x55de, 0xfffd, 0xfffd, 0x5596, 0x55b4, 0xfffd, 0x5585, 0xfffd, 0x559b, 0x55a0, 0xfffd, 0x5559, 0xfffd, 0x5586, 0xfffd, 0xfffd, 0x55af, 0x557a, 0xfffd, 0xfffd, 0xfffd, 0x559e, 0xfffd, 0x55a9, 0x570f, 0x570e, 0x581a, 0xfffd, 0x581f, 0xfffd, 0x583c, 0x5818, 0x583e, 0x5826, 0xfffd, 0x583a, 0xfffd, 0x5822, 0xfffd, 0x58fb, 0x5963, 0x5964, 0xfffd, 0x5aa8, 0x5aa3, 0x5a82, 0x5a88, 0x5aa1, 0x5a85, 0x5a98, 0xfffd, 0x5a99, 0xfffd, 0x5a89, 0x5a81, 0x5a96, 0x5a80, 0xfffd, 0xfffd, 0x5a91, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5acf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5a87, 0x5aa0, 0xfffd, 0x5a79, 0xfffd, 0x5a86, 0x5aab, 0x5aaa, 0x5aa4, 0x5a8d, 0x5a7e, 0xfffd, 0x5bd5, /* 0x3b */ 0xfffd, 0xfffd, 0xfffd, 0x5c1e, 0x5c5f, 0x5c5e, 0x5d44, 0x5d3e, 0xfffd, 0x5d48, 0x5d1c, 0xfffd, 0x5d5b, 0x5d4d, 0xfffd, 0xfffd, 0x5d57, 0xfffd, 0x5d53, 0x5d4f, 0xfffd, 0x5d3b, 0x5d46, 0xfffd, 0xfffd, 0x5e46, 0x5e47, 0xfffd, 0x5e48, 0x5ec0, 0x5ebd, 0x5ebf, 0xfffd, 0x5f11, 0xfffd, 0x5f3e, 0x5f3b, 0xfffd, 0x5f3a, 0xfffd, 0xfffd, 0xfffd, 0x5fa7, 0xfffd, 0x60ea, 0xfffd, 0x6107, 0x6122, 0x610c, 0xfffd, 0xfffd, 0x60b3, 0x60d6, 0x60d2, 0xfffd, 0x60e3, 0x60e5, 0x60e9, 0xfffd, 0xfffd, 0x6111, 0x60fd, 0xfffd, 0xfffd, 0x611e, 0x6120, 0x6121, 0x621e, 0xfffd, 0x63e2, 0x63de, 0x63e6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x63f8, 0xfffd, 0x63fe, 0x63c1, 0x63bf, 0x63f7, 0x63d1, 0x655f, 0x6560, 0x6561, 0xfffd, 0xfffd, 0x65d1, 0xfffd, 0xfffd, 0x667d, 0x666b, 0x667f, /* 0x3c */ 0xfffd, 0xfffd, 0x6673, 0x6681, 0x666d, 0x6669, 0xfffd, 0xfffd, 0x671e, 0x68ed, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6903, 0xfffd, 0x68fe, 0x68e5, 0x691e, 0x6902, 0xfffd, 0xfffd, 0x6909, 0x68ca, 0x6900, 0xfffd, 0x6901, 0x6918, 0x68e2, 0x68cf, 0xfffd, 0x692e, 0x68c5, 0x68ff, 0xfffd, 0x691c, 0x68c3, 0xfffd, 0x6b6f, 0xfffd, 0x6b6e, 0xfffd, 0x6bbe, 0xfffd, 0x6bf4, 0x6c2d, 0xfffd, 0x6db6, 0x6e75, 0x6e1e, 0xfffd, 0x6e18, 0xfffd, 0x6e48, 0xfffd, 0x6e4f, 0xfffd, 0x6e42, 0x6e6a, 0x6e70, 0x6dfe, 0xfffd, 0xfffd, 0x6e6d, 0xfffd, 0x6e7b, 0x6e7e, 0x6e59, 0xfffd, 0x6e57, 0xfffd, 0x6e80, 0x6e50, 0xfffd, 0x6e29, 0x6e76, 0x6e2a, 0x6e4c, 0x712a, 0xfffd, 0x7135, 0x712c, 0x7137, 0x711d, 0xfffd, 0xfffd, 0x7138, 0xfffd, 0x7134, 0x712b, 0x7133, 0x7127, 0x7124, 0xfffd, /* 0x3d */ 0x712d, 0x7232, 0x7283, 0x7282, 0x7287, 0x7306, 0x7324, 0x7338, 0x732a, 0x732c, 0x732b, 0xfffd, 0x732f, 0x7328, 0x7417, 0xfffd, 0xfffd, 0x7419, 0x7438, 0xfffd, 0x741f, 0x7414, 0x743c, 0x73f7, 0x741c, 0x7415, 0x7418, 0x7439, 0x74f9, 0x7524, 0xfffd, 0xfffd, 0xfffd, 0x756e, 0x756d, 0x7571, 0x758e, 0xfffd, 0x75e5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7694, 0x76b3, 0xfffd, 0x76d9, 0xfffd, 0x7748, 0x7749, 0x7743, 0xfffd, 0xfffd, 0x7742, 0x77df, 0xfffd, 0x7863, 0x7876, 0xfffd, 0x785f, 0x7866, 0x7966, 0x7971, 0xfffd, 0xfffd, 0x7976, 0x7984, 0x7975, 0x79ff, 0x7a07, 0xfffd, 0x7a0e, 0x7a09, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7ae7, 0x7ae2, 0x7b55, 0xfffd, 0xfffd, 0x7b43, 0x7b57, 0x7b6c, 0x7b42, 0x7b53, 0xfffd, 0x7b41, 0xfffd, 0xfffd, 0x7ca7, /* 0x3e */ 0x7ca0, 0x7ca6, 0x7ca4, 0x7d74, 0xfffd, 0x7d59, 0xfffd, 0x7d60, 0x7d57, 0x7d6c, 0x7d7e, 0x7d64, 0xfffd, 0x7d5a, 0x7d5d, 0xfffd, 0xfffd, 0xfffd, 0x7d76, 0x7d4d, 0x7d75, 0xfffd, 0x7fd3, 0x7fd6, 0xfffd, 0xfffd, 0x8060, 0x804e, 0x8145, 0x813b, 0xfffd, 0x8148, 0x8142, 0x8149, 0x8140, 0x8114, 0x8141, 0xfffd, 0x81ef, 0x81f6, 0x8203, 0xfffd, 0x83ed, 0xfffd, 0x83da, 0x8418, 0x83d2, 0x8408, 0xfffd, 0x8400, 0xfffd, 0xfffd, 0xfffd, 0x8417, 0x8346, 0x8414, 0x83d3, 0x8405, 0x841f, 0x8402, 0x8416, 0x83cd, 0x83e6, 0xfffd, 0x865d, 0x86d5, 0x86e1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x86ee, 0x8847, 0x8846, 0xfffd, 0xfffd, 0x88bb, 0xfffd, 0x88bf, 0x88b4, 0xfffd, 0x88b5, 0xfffd, 0x899a, 0x8a43, 0xfffd, 0xfffd, 0x8a5a, 0xfffd, 0xfffd, 0xfffd, 0x8a35, 0x8a38, 0x8a42, /* 0x3f */ 0x8a49, 0x8a5d, 0x8a4b, 0x8a3d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8c60, 0x8c5e, 0x8c7f, 0x8c7e, 0x8c83, 0xfffd, 0x8cb1, 0x8d87, 0xfffd, 0xfffd, 0x8d88, 0x8d83, 0xfffd, 0xfffd, 0x8d86, 0x8d8b, 0x8d82, 0x8dca, 0x8dd2, 0xfffd, 0xfffd, 0x8dd4, 0x8dc9, 0x8eb0, 0xfffd, 0xfffd, 0xfffd, 0x8ef2, 0x8ee4, 0x8ef3, 0x8eea, 0xfffd, 0x8efd, 0xfffd, 0x8f9d, 0x902b, 0x902a, 0xfffd, 0x9028, 0x9029, 0x902c, 0xfffd, 0xfffd, 0x903a, 0x9030, 0x9037, 0x903b, 0xfffd, 0x910a, 0xfffd, 0xfffd, 0xfffd, 0x91fe, 0x9220, 0xfffd, 0x920b, 0xfffd, 0x9218, 0x9222, 0xfffd, 0x921b, 0x9208, 0xfffd, 0x920e, 0x9213, 0xfffd, 0xfffd, 0x9595, 0xfffd, 0xfffd, 0xfffd, 0x968c, 0x967b, 0x967f, 0x9681, 0xfffd, 0x9682, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x96ee, 0x96ed, 0xfffd, 0x96ec, /* 0x40 */ 0x975f, 0x976f, 0xfffd, 0x976d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x98f0, 0xfffd, 0xfffd, 0xfffd, 0x9aa9, 0xfffd, 0xfffd, 0x9ae0, 0x4eb7, 0xfffd, 0xfffd, 0x50cc, 0x50bc, 0xfffd, 0x50aa, 0x50b9, 0xfffd, 0x50ab, 0x50c3, 0x50cd, 0x517e, 0x527e, 0x5279, 0xfffd, 0xfffd, 0x52e1, 0x52e0, 0x52e7, 0x5380, 0x53ab, 0x53aa, 0x53a9, 0x53e0, 0x55ea, 0xfffd, 0x55d7, 0xfffd, 0xfffd, 0x55c1, 0x5715, 0xfffd, 0x586c, 0xfffd, 0x585c, 0x5850, 0x5861, 0x586a, 0x5869, 0x5856, 0x5860, 0x5866, 0x585f, 0x5923, 0x5966, 0x5968, 0xfffd, 0xfffd, 0x5ace, 0xfffd, 0x5ac5, 0x5ac3, 0xfffd, 0xfffd, 0x5ad0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5b74, 0x5b76, 0x5bdc, 0x5bd7, 0x5bda, 0x5bdb, 0xfffd, 0x5c20, 0x5d6d, 0x5d66, 0xfffd, 0x5d64, 0x5d6e, 0xfffd, /* 0x41 */ 0x5d60, 0x5f42, 0x5f5a, 0x5f6e, 0xfffd, 0xfffd, 0x6130, 0x613a, 0x612a, 0x6143, 0x6119, 0x6131, 0xfffd, 0x613d, 0xfffd, 0xfffd, 0xfffd, 0x6408, 0x6432, 0x6438, 0xfffd, 0x6431, 0xfffd, 0x6419, 0xfffd, 0x6411, 0xfffd, 0xfffd, 0x6429, 0x641d, 0xfffd, 0xfffd, 0xfffd, 0x643c, 0xfffd, 0x6446, 0x6447, 0xfffd, 0xfffd, 0x643a, 0x6407, 0xfffd, 0x656b, 0xfffd, 0x6570, 0x656d, 0xfffd, 0x65e4, 0x6693, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x668f, 0xfffd, 0xfffd, 0x6692, 0xfffd, 0x668e, 0xfffd, 0x6946, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6931, 0xfffd, 0xfffd, 0x693e, 0xfffd, 0x697c, 0x6943, 0xfffd, 0x6973, 0xfffd, 0x6955, 0xfffd, 0xfffd, 0x6985, 0x694d, 0x6950, 0x6947, 0x6967, 0x6936, 0x6964, 0x6961, 0xfffd, 0x697d, 0x6b44, 0x6b40, 0x6b71, /* 0x42 */ 0x6b73, 0x6b9c, 0xfffd, 0xfffd, 0xfffd, 0x6bc1, 0xfffd, 0x6bfa, 0x6c31, 0x6c32, 0xfffd, 0xfffd, 0x6eb8, 0x6ea8, 0xfffd, 0x6e91, 0x6ebb, 0xfffd, 0x6e9a, 0xfffd, 0xfffd, 0x6ea9, 0xfffd, 0xfffd, 0x6eb5, 0x6e6c, 0x6ee8, 0xfffd, 0x6edd, 0x6eda, 0x6ee6, 0x6eac, 0xfffd, 0xfffd, 0xfffd, 0x6ed9, 0x6ee3, 0x6ee9, 0x6edb, 0xfffd, 0x716f, 0xfffd, 0xfffd, 0x7148, 0xfffd, 0x714a, 0x716b, 0xfffd, 0x714f, 0x7157, 0x7174, 0xfffd, 0xfffd, 0xfffd, 0x7145, 0x7151, 0x716d, 0xfffd, 0x7251, 0x7250, 0x724e, 0xfffd, 0x7341, 0xfffd, 0x732e, 0x7346, 0xfffd, 0x7427, 0xfffd, 0x7448, 0x7453, 0x743d, 0xfffd, 0x745d, 0x7456, 0xfffd, 0x741e, 0x7447, 0x7443, 0x7458, 0x7449, 0xfffd, 0x744c, 0x7445, 0x743e, 0xfffd, 0x7501, 0x751e, 0xfffd, 0xfffd, 0x757a, 0x75ee, 0x7602, 0x7697, /* 0x43 */ 0x7698, 0xfffd, 0xfffd, 0xfffd, 0x775d, 0x7764, 0x7753, 0x7758, 0x7882, 0x7890, 0x788a, 0xfffd, 0x787a, 0x787d, 0xfffd, 0x788b, 0x7878, 0xfffd, 0xfffd, 0x788d, 0x7888, 0x7892, 0x7881, 0x797e, 0x7983, 0xfffd, 0xfffd, 0xfffd, 0x7980, 0xfffd, 0xfffd, 0xfffd, 0x7a0f, 0xfffd, 0xfffd, 0x7a1d, 0xfffd, 0x7aa1, 0x7aa4, 0xfffd, 0x7ae9, 0x7aea, 0xfffd, 0x7b62, 0x7b6b, 0xfffd, 0x7b5e, 0xfffd, 0x7b79, 0xfffd, 0xfffd, 0x7b6f, 0x7b68, 0xfffd, 0xfffd, 0x7cae, 0xfffd, 0xfffd, 0xfffd, 0x7cb0, 0xfffd, 0x7d90, 0xfffd, 0x7d8a, 0xfffd, 0x7d8b, 0x7d99, 0x7d95, 0xfffd, 0x7d87, 0x7d78, 0x7d97, 0x7d89, 0x7d98, 0xfffd, 0xfffd, 0xfffd, 0x7fa3, 0xfffd, 0xfffd, 0xfffd, 0x7fdd, 0x8057, 0xfffd, 0x8163, 0x816a, 0x816c, 0xfffd, 0xfffd, 0xfffd, 0x815d, 0x8175, 0xfffd, 0x815f, /* 0x44 */ 0xfffd, 0x817d, 0x816d, 0xfffd, 0xfffd, 0x8241, 0x844f, 0x8484, 0xfffd, 0x847f, 0xfffd, 0x8448, 0x842a, 0x847b, 0x8472, 0x8464, 0x842e, 0x845c, 0x8453, 0xfffd, 0x8441, 0x84c8, 0xfffd, 0x8462, 0x8480, 0x843e, 0x8483, 0x8471, 0xfffd, 0x844a, 0x8455, 0x8458, 0xfffd, 0xfffd, 0xfffd, 0x86fc, 0x86fd, 0x8715, 0xfffd, 0x8716, 0x86ff, 0xfffd, 0xfffd, 0xfffd, 0x8858, 0x88cf, 0x88e0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x89e7, 0x8a6a, 0x8a80, 0xfffd, 0x8a6f, 0x8a65, 0xfffd, 0x8a78, 0x8a7d, 0x8a88, 0xfffd, 0xfffd, 0x8a64, 0x8a7e, 0xfffd, 0x8a67, 0x8c63, 0x8c88, 0xfffd, 0x8ccd, 0xfffd, 0x8cc9, 0xfffd, 0x8ded, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8eb1, 0xfffd, 0xfffd, 0x8f04, 0x8f9e, 0x8fa0, 0x9043, 0x9046, 0x9048, 0x9045, 0x9040, 0x904c, /* 0x45 */ 0xfffd, 0xfffd, 0x910c, 0x9113, 0x9115, 0xfffd, 0x916b, 0x9167, 0x925d, 0x9255, 0x9235, 0xfffd, 0x9259, 0x922f, 0x923c, 0x928f, 0x925c, 0x926a, 0x9262, 0x925f, 0x926b, 0x926e, 0x923b, 0x9244, 0x9241, 0x959a, 0xfffd, 0x9599, 0xfffd, 0xfffd, 0xfffd, 0x968f, 0xfffd, 0x9696, 0xfffd, 0xfffd, 0xfffd, 0x96f4, 0x96fc, 0xfffd, 0x9755, 0xfffd, 0x9779, 0xfffd, 0xfffd, 0xfffd, 0x97ee, 0x97f5, 0xfffd, 0x980b, 0xfffd, 0x98f3, 0xfffd, 0xfffd, 0x98f7, 0x98ff, 0x98f5, 0xfffd, 0x98ec, 0x98f1, 0xfffd, 0xfffd, 0x999a, 0xfffd, 0x9ae2, 0x9b3d, 0x9b5d, 0x9ce8, 0xfffd, 0x9ceb, 0x9cef, 0x9cee, 0x9e81, 0x9f14, 0x50d0, 0x50d9, 0x50dc, 0x50d8, 0xfffd, 0x50e1, 0x50eb, 0xfffd, 0xfffd, 0x50f4, 0x50e2, 0x50de, 0xfffd, 0xfffd, 0xfffd, 0x51f4, 0xfffd, 0xfffd, 0xfffd, 0x52ed, /* 0x46 */ 0x52ea, 0xfffd, 0x5332, 0xfffd, 0x53ae, 0x53b0, 0xfffd, 0x55fb, 0x5603, 0x560b, 0xfffd, 0x5607, 0xfffd, 0x55f8, 0xfffd, 0x5628, 0x561e, 0xfffd, 0x5618, 0x5611, 0x5651, 0x5605, 0x5717, 0x5892, 0xfffd, 0x588c, 0xfffd, 0x5878, 0x5884, 0x5873, 0x58ad, 0x5897, 0x5895, 0x5877, 0x5872, 0x5896, 0x588d, 0x5910, 0xfffd, 0x596c, 0xfffd, 0x5ae7, 0xfffd, 0x5ae4, 0xfffd, 0xfffd, 0x5aef, 0x5626, 0xfffd, 0xfffd, 0x5af0, 0x5d7b, 0xfffd, 0x5d83, 0xfffd, 0xfffd, 0x5d8b, 0x5d8c, 0xfffd, 0x5d78, 0x5e52, 0xfffd, 0xfffd, 0x5ed0, 0x5ecf, 0xfffd, 0x5fb3, 0x5fb4, 0xfffd, 0xfffd, 0xfffd, 0x617b, 0xfffd, 0x616f, 0x6181, 0x613c, 0x6142, 0x6138, 0x6133, 0xfffd, 0x6160, 0x6169, 0x617d, 0x6186, 0x622c, 0x6228, 0xfffd, 0x644c, 0xfffd, 0x6457, 0x647c, 0xfffd, 0xfffd, 0x6455, /* 0x47 */ 0x6462, 0x6471, 0x646a, 0x6456, 0x643b, 0x6481, 0xfffd, 0x644f, 0x647e, 0x6464, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6571, 0xfffd, 0xfffd, 0x66a5, 0x669a, 0x669c, 0xfffd, 0x66a6, 0xfffd, 0x66a4, 0x698f, 0x69c5, 0x69c8, 0x6992, 0x69b2, 0xfffd, 0xfffd, 0xfffd, 0x69e3, 0x69c0, 0x69d6, 0x69d1, 0x699f, 0x69a2, 0x69d2, 0xfffd, 0xfffd, 0xfffd, 0x69e1, 0x69d5, 0x699d, 0xfffd, 0xfffd, 0x6998, 0xfffd, 0x6b74, 0x6ba1, 0xfffd, 0x6ef0, 0x6ef3, 0xfffd, 0xfffd, 0x6f1b, 0x6f0c, 0x6f1d, 0x6f34, 0x6f28, 0x6f17, 0xfffd, 0x6f44, 0x6f42, 0x6f04, 0x6f11, 0x6efa, 0x6f4a, 0x7191, 0x718e, 0xfffd, 0x718b, 0x718d, 0x717f, 0x718c, 0x717e, 0x717c, 0x7183, 0xfffd, 0x7188, 0xfffd, 0xfffd, 0x7294, 0xfffd, 0x7355, 0x7353, 0x734f, 0x7354, 0x746c, 0x7465, 0x7466, 0x7461, /* 0x48 */ 0x746b, 0x7468, 0x7476, 0xfffd, 0x7460, 0xfffd, 0x7474, 0x7506, 0x760e, 0xfffd, 0x7607, 0xfffd, 0xfffd, 0x76b9, 0xfffd, 0x76b7, 0x76e2, 0xfffd, 0x7774, 0x7777, 0x7776, 0x7775, 0xfffd, 0x7778, 0x7771, 0xfffd, 0x777a, 0x715b, 0x777b, 0x78a6, 0x78ae, 0x78b8, 0xfffd, 0xfffd, 0xfffd, 0x78b1, 0x78af, 0xfffd, 0x7989, 0x7987, 0xfffd, 0xfffd, 0x7a29, 0xfffd, 0x7a2a, 0xfffd, 0x7a2d, 0x7a2c, 0xfffd, 0x7a32, 0xfffd, 0x7aec, 0x7af0, 0x7b81, 0x7b9e, 0x7b83, 0xfffd, 0x7b92, 0xfffd, 0x7ba3, 0x7b9f, 0x7b93, 0xfffd, 0x7b86, 0x7cb8, 0x7cb7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7dc8, 0x7db6, 0xfffd, 0x7dd1, 0xfffd, 0x7da8, 0x7dab, 0xfffd, 0x7db3, 0x7dcd, 0xfffd, 0x7dcf, 0x7da4, 0xfffd, 0xfffd, 0x7f41, 0x7f6f, 0x7f71, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x49 */ 0xfffd, 0x8023, 0x805b, 0xfffd, 0x8061, 0x805f, 0x8181, 0xfffd, 0xfffd, 0x8184, 0x8213, 0xfffd, 0x824a, 0x824c, 0xfffd, 0xfffd, 0xfffd, 0x84bd, 0x8495, 0xfffd, 0x8492, 0x84c3, 0xfffd, 0x8496, 0x84a5, 0x84b5, 0x84b3, 0x84a3, 0x84e4, 0x84d8, 0x84d5, 0xfffd, 0x84b7, 0x84ad, 0x84da, 0x8493, 0x8736, 0xfffd, 0xfffd, 0xfffd, 0x873d, 0x872b, 0x8747, 0x8739, 0xfffd, 0x8745, 0x871d, 0xfffd, 0x88ff, 0x88ea, 0xfffd, 0x88f5, 0xfffd, 0x8900, 0x88ed, 0x8903, 0x88e9, 0xfffd, 0xfffd, 0x89ea, 0xfffd, 0x8a9b, 0x8a8e, 0x8aa2, 0xfffd, 0x8a9c, 0x8a94, 0x8a90, 0x8aa9, 0x8aac, 0xfffd, 0x8a9f, 0xfffd, 0xfffd, 0x8a9d, 0xfffd, 0x8c67, 0xfffd, 0xfffd, 0x8cd0, 0x8cd6, 0x8cd4, 0x8d98, 0x8d9a, 0x8d97, 0xfffd, 0xfffd, 0xfffd, 0x8e0b, 0x8e08, 0x8e01, 0x8eb4, 0x8eb3, 0xfffd, /* 0x4a */ 0x8fa1, 0x8fa2, 0xfffd, 0x905a, 0xfffd, 0x9061, 0x905f, 0xfffd, 0xfffd, 0x9125, 0x917b, 0x9176, 0x917c, 0xfffd, 0x9289, 0x92f6, 0x92b1, 0x92ad, 0x9292, 0x9281, 0x9284, 0xfffd, 0x92ae, 0x9290, 0x929e, 0xfffd, 0xfffd, 0xfffd, 0x95a2, 0x95a7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x96a0, 0x969d, 0x969f, 0x96d0, 0xfffd, 0x96d1, 0xfffd, 0xfffd, 0x9759, 0xfffd, 0x9764, 0xfffd, 0xfffd, 0xfffd, 0x9819, 0xfffd, 0x9814, 0x9815, 0x981a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9906, 0xfffd, 0x98f8, 0x9901, 0xfffd, 0x99be, 0x99bc, 0x99b7, 0x99b6, 0x99c0, 0xfffd, 0x99b8, 0xfffd, 0xfffd, 0xfffd, 0x99c4, 0xfffd, 0x99bf, 0xfffd, 0x9ada, 0x9ae4, 0x9ae9, 0x9ae8, 0x9aea, 0x9ae5, 0xfffd, 0x9b26, 0xfffd, 0xfffd, 0x9b40, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x4b */ 0xfffd, 0x9ebd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x510e, 0xfffd, 0x50f7, 0xfffd, 0x50fc, 0x510d, 0x5101, 0x51da, 0x51d9, 0x51db, 0x5286, 0x528e, 0x52ee, 0x5333, 0x53b1, 0xfffd, 0x5647, 0x562d, 0x5654, 0xfffd, 0x564b, 0x5652, 0x5631, 0x5644, 0x5656, 0x5650, 0x562b, 0xfffd, 0x564d, 0x5637, 0x564f, 0x58a2, 0x58b7, 0xfffd, 0x58b2, 0xfffd, 0x58aa, 0x58b5, 0x58b0, 0xfffd, 0x58b4, 0x58a4, 0x58a7, 0xfffd, 0x5926, 0x5afe, 0xfffd, 0x5b04, 0xfffd, 0x5afc, 0xfffd, 0x5b06, 0x5b0a, 0x5afa, 0x5b0d, 0x5b00, 0x5b0e, 0xfffd, 0xfffd, 0xfffd, 0x5d91, 0xfffd, 0x5d8f, 0x5d90, 0x5d98, 0x5da4, 0x5d9b, 0x5da3, 0x5d96, 0x5de4, 0x5e5a, 0xfffd, 0xfffd, 0x5e5e, 0xfffd, 0x5fb8, 0x6157, 0x615c, 0x61a6, 0x6195, 0x6188, 0xfffd, 0x61a3, 0x618f, 0xfffd, 0x6164, 0xfffd, 0x6159, /* 0x4c */ 0x6178, 0xfffd, 0x6185, 0x6187, 0x619e, 0xfffd, 0xfffd, 0x6198, 0x619c, 0xfffd, 0xfffd, 0x622f, 0x6480, 0x649b, 0x648e, 0x648d, 0x6494, 0x64c6, 0xfffd, 0x64a8, 0x6483, 0xfffd, 0x64b9, 0x6486, 0x64b4, 0x64af, 0x6491, 0xfffd, 0x64aa, 0x64a1, 0x64a7, 0x66b6, 0x66b3, 0xfffd, 0x66bc, 0x66ac, 0xfffd, 0x66ad, 0x6a0e, 0xfffd, 0x6a1c, 0x6a1a, 0xfffd, 0xfffd, 0x6a0b, 0xfffd, 0x69ef, 0x6a0c, 0x69f0, 0x6a22, 0xfffd, 0x69d8, 0xfffd, 0x6a12, 0x69fa, 0xfffd, 0x6a2a, 0xfffd, 0x6a10, 0xfffd, 0xfffd, 0x6a29, 0x69f9, 0x69ea, 0x6a2c, 0x6a24, 0xfffd, 0x69e9, 0x6b52, 0x6b4f, 0x6b53, 0xfffd, 0xfffd, 0x6f10, 0x6f65, 0x6f75, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6fd0, 0xfffd, 0x6f5c, 0x6f3d, 0x6f71, 0xfffd, 0x6f91, 0x6f0b, 0x6f79, 0x6f81, 0x6f8f, 0xfffd, 0x6f59, 0x6f74, /* 0x4d */ 0xfffd, 0x71ae, 0xfffd, 0x71a3, 0x71ad, 0xfffd, 0xfffd, 0x71ab, 0x71a6, 0x71a2, 0xfffd, 0x52f2, 0x7257, 0x7255, 0x7299, 0x734b, 0x747a, 0xfffd, 0xfffd, 0xfffd, 0x748c, 0x7484, 0xfffd, 0xfffd, 0x7482, 0x7493, 0x747b, 0xfffd, 0x7509, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x778a, 0xfffd, 0x7790, 0xfffd, 0x78c6, 0x78d3, 0x78c0, 0x78d2, 0x78c7, 0x78c2, 0xfffd, 0x799f, 0x799d, 0x799e, 0xfffd, 0x7a41, 0xfffd, 0x7a38, 0x7a3a, 0x7a42, 0xfffd, 0xfffd, 0x7a3e, 0x7ab0, 0x7bae, 0x7bb3, 0xfffd, 0xfffd, 0x7bbf, 0xfffd, 0xfffd, 0x7bcd, 0xfffd, 0x7bb2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7cc4, 0x7ccd, 0x7cc2, 0x7cc6, 0x7cc3, 0x7cc9, 0x7cc7, 0xfffd, 0x7df8, 0xfffd, 0x7ded, 0x7de2, 0xfffd, 0xfffd, 0xfffd, 0x7ddc, 0x7e02, 0x7e01, /* 0x4e */ 0xfffd, 0x7dd6, 0xfffd, 0x7de4, 0x7dfe, 0xfffd, 0x7e00, 0x7dfc, 0x7dfd, 0xfffd, 0x7df5, 0x7dff, 0xfffd, 0x7deb, 0x7de5, 0x7f78, 0x7fae, 0x7fe7, 0xfffd, 0x8065, 0x806a, 0x8066, 0x8068, 0x806b, 0x8194, 0x81a1, 0x8192, 0x8196, 0x8193, 0xfffd, 0xfffd, 0x8501, 0xfffd, 0x84f8, 0xfffd, 0x84f5, 0xfffd, 0x8504, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x851b, 0x8503, 0x8533, 0x8534, 0x84ed, 0xfffd, 0xfffd, 0x8535, 0xfffd, 0x8505, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x877d, 0xfffd, 0xfffd, 0xfffd, 0x8771, 0xfffd, 0x885c, 0x88e6, 0x890f, 0x891b, 0xfffd, 0x89a9, 0x89a5, 0x89ee, 0x8ab1, 0xfffd, 0x8acc, 0x8ace, 0xfffd, 0x8ab7, 0xfffd, 0x8ab5, 0x8ae9, 0x8ab4, 0xfffd, 0x8ab3, 0x8ac1, 0x8aaf, 0x8aca, 0x8ad0, 0xfffd, 0xfffd, 0xfffd, 0x8c8e, 0xfffd, 0xfffd, 0x8ce9, 0x8cdb, /* 0x4f */ 0xfffd, 0x8ceb, 0x8da4, 0xfffd, 0x8da2, 0x8d9d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8e2a, 0x8e28, 0xfffd, 0xfffd, 0x8eb8, 0x8eb6, 0x8eb9, 0x8eb7, 0x8f22, 0x8f2b, 0x8f27, 0x8f19, 0x8fa4, 0xfffd, 0x8fb3, 0xfffd, 0x9071, 0x906a, 0xfffd, 0xfffd, 0x9188, 0x918c, 0x92bf, 0x92b8, 0x92be, 0x92dc, 0x92e5, 0xfffd, 0xfffd, 0x92d4, 0x92d6, 0xfffd, 0x92da, 0x92ed, 0x92f3, 0x92db, 0xfffd, 0x92b9, 0x92e2, 0x92eb, 0x95af, 0xfffd, 0x95b2, 0x95b3, 0xfffd, 0xfffd, 0xfffd, 0x96a3, 0x96a5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x970a, 0xfffd, 0x9787, 0x9789, 0x978c, 0x97ef, 0x982a, 0x9822, 0xfffd, 0x981f, 0xfffd, 0x9919, 0xfffd, 0x99ca, 0x99da, 0xfffd, 0xfffd, 0xfffd, 0x99de, 0x99c8, 0x99e0, 0xfffd, 0x9ab6, 0x9ab5, 0xfffd, 0x9af4, 0xfffd, 0x9b6b, 0x9b69, 0x9b72, 0x9b63, /* 0x50 */ 0xfffd, 0x9d0d, 0xfffd, 0x9d01, 0x9d0c, 0xfffd, 0x9cf8, 0xfffd, 0xfffd, 0x9cfe, 0x9d02, 0x9e84, 0xfffd, 0x9eab, 0x9eaa, 0x511d, 0x5116, 0xfffd, 0x512b, 0x511e, 0x511b, 0x5290, 0x5294, 0x5314, 0xfffd, 0xfffd, 0x5667, 0xfffd, 0x567b, 0xfffd, 0x565f, 0x5661, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x58c3, 0x58ca, 0x58bb, 0x58c0, 0x58c4, 0x5901, 0x5b1f, 0x5b18, 0x5b11, 0x5b15, 0xfffd, 0x5b12, 0x5b1c, 0xfffd, 0x5b22, 0x5b79, 0x5da6, 0xfffd, 0x5db3, 0x5dab, 0x5eea, 0xfffd, 0x5f5b, 0xfffd, 0xfffd, 0x61b7, 0x61ce, 0x61b9, 0x61bd, 0x61cf, 0x61c0, 0x6199, 0x6197, 0xfffd, 0x61bb, 0x61d0, 0x61c4, 0x6231, 0xfffd, 0x64d3, 0x64c0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64dc, 0x64d1, 0x64c8, 0xfffd, 0x64d5, 0x66c3, 0xfffd, 0xfffd, 0x66bf, 0x66c5, /* 0x51 */ 0xfffd, 0x66cd, 0x66c1, 0x6706, 0xfffd, 0x6724, 0x6a63, 0x6a42, 0x6a52, 0xfffd, 0x6a43, 0x6a33, 0xfffd, 0x6a6c, 0x6a57, 0xfffd, 0x6a4c, 0x6a6e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6a37, 0xfffd, 0x6a71, 0x6a4a, 0x6a36, 0xfffd, 0x6a53, 0xfffd, 0x6a45, 0x6a70, 0xfffd, 0xfffd, 0x6a5c, 0x6b58, 0x6b57, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6fbb, 0xfffd, 0xfffd, 0x6fbe, 0xfffd, 0xfffd, 0xfffd, 0x6fb5, 0x6fd3, 0x6f9f, 0xfffd, 0x6fb7, 0x6ff5, 0x71b7, 0xfffd, 0x71bb, 0xfffd, 0x71d1, 0xfffd, 0x71ba, 0xfffd, 0x71b6, 0x71cc, 0xfffd, 0xfffd, 0x71d3, 0x749b, 0xfffd, 0xfffd, 0x7496, 0x74a2, 0x749d, 0x750a, 0x750e, 0xfffd, 0x7581, 0x762c, 0x7637, 0x7636, 0x763b, 0xfffd, 0x76a1, 0xfffd, 0xfffd, 0x7798, 0xfffd, 0x7796, 0xfffd, 0xfffd, 0xfffd, /* 0x52 */ 0x78d6, 0x78eb, 0xfffd, 0x78dc, 0xfffd, 0x79a5, 0x79a9, 0x9834, 0x7a53, 0x7a45, 0xfffd, 0x7a4f, 0xfffd, 0x7abd, 0x7abb, 0x7af1, 0xfffd, 0xfffd, 0x7bec, 0x7bed, 0xfffd, 0xfffd, 0x7cd3, 0xfffd, 0x7ce1, 0xfffd, 0x7e19, 0xfffd, 0xfffd, 0xfffd, 0x7e27, 0x7e26, 0xfffd, 0xfffd, 0x806e, 0x81af, 0xfffd, 0xfffd, 0x81ad, 0xfffd, 0x81aa, 0x8218, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x856f, 0x854c, 0xfffd, 0x8542, 0xfffd, 0x855c, 0x8570, 0x855f, 0xfffd, 0x855a, 0x854b, 0x853f, 0x878a, 0xfffd, 0x878b, 0x87a1, 0x878e, 0xfffd, 0xfffd, 0x8799, 0x885e, 0x885f, 0x8924, 0x89a7, 0x8aea, 0x8afd, 0x8af9, 0x8ae3, 0x8ae5, 0xfffd, 0xfffd, 0x8aec, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8cf2, 0xfffd, 0x8cef, 0xfffd, 0x8da6, 0xfffd, 0xfffd, 0xfffd, 0x8e3b, 0x8e43, 0xfffd, 0x8e32, /* 0x53 */ 0x8f31, 0x8f30, 0xfffd, 0x8f2d, 0x8f3c, 0x8fa7, 0x8fa5, 0xfffd, 0xfffd, 0xfffd, 0x9137, 0x9195, 0x918e, 0xfffd, 0x9196, 0xfffd, 0x9345, 0x930a, 0xfffd, 0xfffd, 0x92fd, 0x9317, 0x931c, 0x9307, 0x9331, 0x9332, 0x932c, 0x9330, 0x9303, 0x9305, 0xfffd, 0x95c2, 0xfffd, 0x95b8, 0xfffd, 0x95c1, 0xfffd, 0xfffd, 0xfffd, 0x96ab, 0x96b7, 0xfffd, 0xfffd, 0x9715, 0x9714, 0xfffd, 0xfffd, 0x970c, 0x9717, 0xfffd, 0x9793, 0xfffd, 0x97d2, 0xfffd, 0xfffd, 0x9836, 0x9831, 0x9833, 0x983c, 0x982e, 0x983a, 0xfffd, 0x983d, 0xfffd, 0x98b5, 0x9922, 0x9923, 0x9920, 0x991c, 0x991d, 0xfffd, 0x99a0, 0xfffd, 0x99ef, 0x99e8, 0x99eb, 0xfffd, 0xfffd, 0xfffd, 0x99e1, 0x99e6, 0xfffd, 0xfffd, 0x9af8, 0x9af5, 0xfffd, 0xfffd, 0x9b83, 0x9b94, 0x9b84, 0xfffd, 0x9b8b, 0x9b8f, 0xfffd, /* 0x54 */ 0x9b8c, 0xfffd, 0x9b89, 0xfffd, 0x9b8e, 0xfffd, 0xfffd, 0xfffd, 0x9d24, 0x9d0f, 0xfffd, 0x9d13, 0x9d0a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9d2a, 0x9d1a, 0xfffd, 0x9d27, 0x9d16, 0x9d21, 0xfffd, 0x9e85, 0x9eac, 0x9ec6, 0x9ec5, 0x9ed7, 0x9f53, 0xfffd, 0x5128, 0x5127, 0x51df, 0xfffd, 0x5335, 0x53b3, 0xfffd, 0x568a, 0x567d, 0x5689, 0xfffd, 0x58cd, 0x58d0, 0xfffd, 0x5b2b, 0x5b33, 0x5b29, 0x5b35, 0x5b31, 0x5b37, 0x5c36, 0x5dbe, 0xfffd, 0x5db9, 0xfffd, 0x5dbb, 0xfffd, 0x61e2, 0x61db, 0x61dd, 0x61dc, 0x61da, 0xfffd, 0x61d9, 0xfffd, 0xfffd, 0x64df, 0xfffd, 0xfffd, 0x64e1, 0xfffd, 0x64ee, 0xfffd, 0x65b5, 0x66d4, 0x66d5, 0xfffd, 0x66d0, 0x66d1, 0x66ce, 0x66d7, 0xfffd, 0xfffd, 0x6a7d, 0x6a8a, 0xfffd, 0x6aa7, 0xfffd, 0x6a99, 0x6a82, 0x6a88, 0xfffd, 0xfffd, /* 0x55 */ 0x6a86, 0xfffd, 0x6a98, 0x6a9d, 0xfffd, 0xfffd, 0x6a8f, 0xfffd, 0x6aaa, 0xfffd, 0x6b5d, 0xfffd, 0x6c0a, 0xfffd, 0x6fd7, 0x6fd6, 0x6fe5, 0xfffd, 0xfffd, 0xfffd, 0x6fd9, 0x6fda, 0x6fea, 0xfffd, 0x6ff6, 0xfffd, 0xfffd, 0x71e3, 0xfffd, 0x71e9, 0xfffd, 0x71eb, 0x71ef, 0x71f3, 0x71ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7371, 0xfffd, 0x74ae, 0xfffd, 0x74b3, 0xfffd, 0x74ac, 0xfffd, 0xfffd, 0x7583, 0x7645, 0x764e, 0x7644, 0x76a3, 0x76a5, 0x77a6, 0x77a4, 0xfffd, 0x77a9, 0x77af, 0xfffd, 0xfffd, 0xfffd, 0x78f0, 0x78f8, 0x78f1, 0xfffd, 0x7a49, 0xfffd, 0xfffd, 0xfffd, 0x7ac2, 0x7af2, 0x7af3, 0x7bfa, 0xfffd, 0x7bf6, 0x7bfc, 0x7c18, 0x7c08, 0x7c12, 0xfffd, 0xfffd, 0x7cdb, 0x7cda, 0xfffd, 0xfffd, 0xfffd, 0x7e2c, 0x7e4d, 0xfffd, 0xfffd, 0x7f46, 0x7ff6, /* 0x56 */ 0x802b, 0x8074, 0x81b8, 0x81c8, 0xfffd, 0xfffd, 0xfffd, 0x8592, 0x8593, 0xfffd, 0x857f, 0x85ab, 0x8597, 0xfffd, 0xfffd, 0x85ac, 0xfffd, 0xfffd, 0xfffd, 0x87ce, 0xfffd, 0x87cd, 0xfffd, 0xfffd, 0x87c1, 0x87b1, 0x87c7, 0xfffd, 0x8940, 0xfffd, 0x893f, 0x8939, 0xfffd, 0x8943, 0xfffd, 0xfffd, 0xfffd, 0x89ab, 0xfffd, 0x8b1f, 0x8b09, 0x8b0c, 0xfffd, 0xfffd, 0x8c40, 0xfffd, 0x8c96, 0xfffd, 0x8cf6, 0x8cf7, 0xfffd, 0x8e46, 0x8e4f, 0xfffd, 0xfffd, 0xfffd, 0x8f3d, 0x8f41, 0x9366, 0x9378, 0x935d, 0x9369, 0x9374, 0x937d, 0x936e, 0x9372, 0x9373, 0x9362, 0x9348, 0x9353, 0x935f, 0x9368, 0xfffd, 0x937f, 0x936b, 0xfffd, 0x95c4, 0xfffd, 0x96af, 0x96ad, 0x96b2, 0xfffd, 0xfffd, 0x971a, 0x971b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x979b, 0x979f, 0xfffd, 0xfffd, 0xfffd, /* 0x57 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9840, 0xfffd, 0x9847, 0xfffd, 0x98b7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x99a2, 0xfffd, 0xfffd, 0x9a00, 0x99f3, 0xfffd, 0xfffd, 0x99f5, 0xfffd, 0xfffd, 0x9abd, 0x9b00, 0x9b02, 0xfffd, 0x9b34, 0x9b49, 0x9b9f, 0xfffd, 0x9ba3, 0x9bcd, 0x9b99, 0x9b9d, 0xfffd, 0xfffd, 0x9d39, 0xfffd, 0x9d44, 0xfffd, 0xfffd, 0x9d35, 0xfffd, 0xfffd, 0x9eaf, 0xfffd, 0x512f, 0xfffd, 0xfffd, 0x9f8e, 0xfffd, 0x569f, 0x569b, 0x569e, 0x5696, 0x5694, 0x56a0, 0xfffd, 0x5b3b, 0xfffd, 0xfffd, 0x5b3a, 0x5dc1, 0x5f4d, 0x5f5d, 0x61f3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64f6, 0x64e5, 0x64ea, 0x64e7, 0x6505, 0xfffd, 0x64f9, 0xfffd, 0xfffd, 0xfffd, 0x6aab, 0x6aed, 0x6ab2, 0x6ab0, 0x6ab5, 0x6abe, 0x6ac1, 0x6ac8, 0xfffd, 0x6ac0, 0x6abc, /* 0x58 */ 0x6ab1, 0x6ac4, 0x6abf, 0xfffd, 0xfffd, 0x7008, 0x7003, 0x6ffd, 0x7010, 0x7002, 0x7013, 0xfffd, 0x71fa, 0x7200, 0x74b9, 0x74bc, 0xfffd, 0x765b, 0x7651, 0x764f, 0x76eb, 0x77b8, 0xfffd, 0x77b9, 0x77c1, 0x77c0, 0x77be, 0x790b, 0xfffd, 0x7907, 0x790a, 0x7908, 0xfffd, 0x790d, 0x7906, 0x7915, 0x79af, 0xfffd, 0xfffd, 0xfffd, 0x7af5, 0xfffd, 0xfffd, 0x7c2e, 0xfffd, 0x7c1b, 0xfffd, 0x7c1a, 0x7c24, 0xfffd, 0xfffd, 0x7ce6, 0x7ce3, 0xfffd, 0xfffd, 0x7e5d, 0x7e4f, 0x7e66, 0x7e5b, 0x7f47, 0x7fb4, 0xfffd, 0xfffd, 0xfffd, 0x7ffa, 0x802e, 0xfffd, 0xfffd, 0x81ce, 0xfffd, 0xfffd, 0x8219, 0xfffd, 0xfffd, 0x85cc, 0x85b2, 0xfffd, 0x85bb, 0x85c1, 0xfffd, 0xfffd, 0xfffd, 0x87e9, 0x87ee, 0x87f0, 0x87d6, 0x880e, 0x87da, 0x8948, 0x894a, 0x894e, 0x894d, 0x89b1, 0x89b0, /* 0x59 */ 0x89b3, 0xfffd, 0x8b38, 0x8b32, 0xfffd, 0x8b2d, 0xfffd, 0x8b34, 0xfffd, 0x8b29, 0x8c74, 0xfffd, 0xfffd, 0x8d03, 0xfffd, 0xfffd, 0x8da9, 0x8e58, 0xfffd, 0xfffd, 0x8ebf, 0x8ec1, 0x8f4a, 0x8fac, 0xfffd, 0x9089, 0x913d, 0x913c, 0x91a9, 0x93a0, 0xfffd, 0x9390, 0xfffd, 0x9393, 0x938b, 0x93ad, 0x93bb, 0x93b8, 0xfffd, 0xfffd, 0x939c, 0x95d8, 0x95d7, 0xfffd, 0xfffd, 0xfffd, 0x975d, 0x97a9, 0x97da, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9854, 0xfffd, 0x9855, 0x984b, 0xfffd, 0x983f, 0x98b9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9938, 0x9936, 0x9940, 0xfffd, 0x993b, 0x9939, 0x99a4, 0xfffd, 0xfffd, 0x9a08, 0x9a0c, 0xfffd, 0x9a10, 0xfffd, 0x9b07, 0xfffd, 0x9bd2, 0xfffd, 0x9bc2, 0x9bbb, 0x9bcc, 0x9bcb, 0xfffd, 0xfffd, 0x9d4d, 0x9d63, 0x9d4e, 0xfffd, 0x9d50, 0x9d55, /* 0x5a */ 0xfffd, 0x9d5e, 0xfffd, 0x9e90, 0x9eb2, 0x9eb1, 0xfffd, 0x9eca, 0x9f02, 0x9f27, 0x9f26, 0xfffd, 0x56af, 0x58e0, 0x58dc, 0xfffd, 0x5b39, 0xfffd, 0xfffd, 0x5b7c, 0x5bf3, 0xfffd, 0xfffd, 0x5c6b, 0x5dc4, 0x650b, 0x6508, 0x650a, 0xfffd, 0xfffd, 0x65dc, 0xfffd, 0xfffd, 0x66e1, 0x66df, 0x6ace, 0x6ad4, 0x6ae3, 0x6ad7, 0x6ae2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6ad8, 0x6ad5, 0x6ad2, 0xfffd, 0xfffd, 0x701e, 0x702c, 0x7025, 0x6ff3, 0x7204, 0x7208, 0x7215, 0xfffd, 0x74c4, 0x74c9, 0x74c7, 0x74c8, 0x76a9, 0x77c6, 0x77c5, 0x7918, 0x791a, 0x7920, 0xfffd, 0x7a66, 0x7a64, 0x7a6a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7c35, 0x7c34, 0xfffd, 0xfffd, 0x7e6c, 0xfffd, 0x7e6e, 0x7e71, 0xfffd, 0x81d4, 0x81d6, 0x821a, 0x8262, 0x8265, 0x8276, 0x85db, 0x85d6, /* 0x5b */ 0xfffd, 0x85e7, 0xfffd, 0xfffd, 0x85f4, 0xfffd, 0x87fd, 0x87d5, 0x8807, 0xfffd, 0x880f, 0x87f8, 0xfffd, 0xfffd, 0x8987, 0xfffd, 0x89b5, 0x89f5, 0xfffd, 0x8b3f, 0x8b43, 0x8b4c, 0xfffd, 0x8d0b, 0x8e6b, 0x8e68, 0x8e70, 0x8e75, 0x8e77, 0xfffd, 0x8ec3, 0xfffd, 0x93e9, 0x93ea, 0x93cb, 0x93c5, 0x93c6, 0xfffd, 0x93ed, 0x93d3, 0xfffd, 0x93e5, 0xfffd, 0xfffd, 0x93db, 0x93eb, 0x93e0, 0x93c1, 0xfffd, 0xfffd, 0x95dd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x97b2, 0x97b4, 0x97b1, 0x97b5, 0x97f2, 0xfffd, 0xfffd, 0xfffd, 0x9856, 0xfffd, 0xfffd, 0xfffd, 0x9944, 0xfffd, 0x9a26, 0x9a1f, 0x9a18, 0x9a21, 0x9a17, 0xfffd, 0x9b09, 0xfffd, 0xfffd, 0x9bc5, 0x9bdf, 0xfffd, 0x9be3, 0xfffd, 0x9be9, 0x9bee, 0xfffd, 0xfffd, 0x9d66, 0x9d7a, /* 0x5c */ 0xfffd, 0x9d6e, 0x9d91, 0x9d83, 0x9d76, 0x9d7e, 0x9d6d, 0xfffd, 0x9e95, 0x9ee3, 0xfffd, 0xfffd, 0x9f03, 0x9f04, 0xfffd, 0x9f17, 0xfffd, 0x5136, 0xfffd, 0x5336, 0xfffd, 0x5b42, 0xfffd, 0xfffd, 0x5b44, 0x5b46, 0x5b7e, 0x5dca, 0x5dc8, 0x5dcc, 0x5ef0, 0xfffd, 0x6585, 0x66e5, 0x66e7, 0xfffd, 0xfffd, 0xfffd, 0x6af4, 0xfffd, 0x6ae9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x703d, 0xfffd, 0x7036, 0xfffd, 0x7216, 0xfffd, 0x7212, 0x720f, 0x7217, 0x7211, 0x720b, 0xfffd, 0xfffd, 0x74cd, 0x74d0, 0x74cc, 0x74ce, 0x74d1, 0xfffd, 0x7589, 0xfffd, 0x7a6f, 0x7c4b, 0x7c44, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7e7f, 0x8b71, 0xfffd, 0x802f, 0x807a, 0x807b, 0x807c, 0xfffd, 0xfffd, 0xfffd, 0x85fc, 0x8610, 0x8602, 0xfffd, 0xfffd, 0x85ee, 0x8603, 0xfffd, 0x860d, /* 0x5d */ 0x8613, 0x8608, 0x860f, 0x8818, 0x8812, 0xfffd, 0xfffd, 0x8967, 0x8965, 0x89bb, 0x8b69, 0x8b62, 0xfffd, 0x8b6e, 0xfffd, 0x8b61, 0xfffd, 0x8b64, 0x8b4d, 0x8c51, 0xfffd, 0xfffd, 0x8e83, 0x8ec6, 0xfffd, 0x941f, 0xfffd, 0x9404, 0x9417, 0x9408, 0x9405, 0xfffd, 0x93f3, 0x941e, 0x9402, 0x941a, 0x941b, 0x9427, 0x941c, 0xfffd, 0x96b5, 0xfffd, 0xfffd, 0x9733, 0xfffd, 0x9734, 0x9731, 0x97b8, 0x97ba, 0xfffd, 0x97fc, 0xfffd, 0xfffd, 0x98c3, 0xfffd, 0x994d, 0xfffd, 0x9a2f, 0xfffd, 0xfffd, 0xfffd, 0x9ac9, 0xfffd, 0x9ac8, 0x9ac4, 0x9b2a, 0x9b38, 0x9b50, 0xfffd, 0x9c0a, 0x9bfb, 0x9c04, 0x9bfc, 0x9bfe, 0xfffd, 0xfffd, 0xfffd, 0x9c02, 0x9bf6, 0x9c1b, 0x9bf9, 0x9c15, 0x9c10, 0x9bff, 0x9c00, 0x9c0c, 0xfffd, 0xfffd, 0x9d95, 0x9da5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x5e */ 0x9e98, 0x9ec1, 0xfffd, 0x9f5a, 0x5164, 0x56bb, 0xfffd, 0x58e6, 0x5b49, 0x5bf7, 0xfffd, 0xfffd, 0x5dd0, 0xfffd, 0x5fc2, 0xfffd, 0x6511, 0xfffd, 0x6aff, 0x6afe, 0x6afd, 0xfffd, 0x6b01, 0xfffd, 0xfffd, 0x704b, 0x704d, 0x7047, 0x74d3, 0x7668, 0x7667, 0xfffd, 0xfffd, 0x77d1, 0x7930, 0x7932, 0x792e, 0xfffd, 0x9f9d, 0x7ac9, 0x7ac8, 0xfffd, 0x7c56, 0x7c51, 0xfffd, 0xfffd, 0xfffd, 0x7e85, 0x7e89, 0x7e8e, 0x7e84, 0xfffd, 0x826a, 0x862b, 0x862f, 0x8628, 0xfffd, 0x8616, 0x8615, 0x861d, 0x881a, 0xfffd, 0xfffd, 0xfffd, 0x89bc, 0x8b75, 0x8b7c, 0xfffd, 0x8d11, 0x8d12, 0x8f5c, 0x91bb, 0xfffd, 0x93f4, 0xfffd, 0xfffd, 0x942d, 0xfffd, 0xfffd, 0x96e4, 0x9737, 0x9736, 0x9767, 0x97be, 0x97bd, 0x97e2, 0x9868, 0x9866, 0x98c8, 0x98ca, 0x98c7, 0x98dc, 0xfffd, 0x994f, /* 0x5f */ 0x99a9, 0x9a3c, 0xfffd, 0x9a3b, 0x9ace, 0xfffd, 0x9b14, 0x9b53, 0xfffd, 0x9c2e, 0xfffd, 0x9c1f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9db0, 0x9dbd, 0xfffd, 0xfffd, 0x9dae, 0x9dc4, 0x9e7b, 0xfffd, 0xfffd, 0x9e9e, 0xfffd, 0x9f05, 0xfffd, 0x9f69, 0x9fa1, 0x56c7, 0x571d, 0x5b4a, 0x5dd3, 0xfffd, 0x5f72, 0x6202, 0xfffd, 0x6235, 0x6527, 0x651e, 0x651f, 0xfffd, 0xfffd, 0x6b07, 0x6b06, 0xfffd, 0xfffd, 0x7054, 0x721c, 0x7220, 0x7af8, 0xfffd, 0x7c5d, 0x7c58, 0xfffd, 0x7e92, 0x7f4e, 0xfffd, 0xfffd, 0xfffd, 0x8827, 0xfffd, 0x8b81, 0x8b83, 0xfffd, 0x8c44, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9442, 0x944d, 0x9454, 0x944e, 0xfffd, 0x9443, 0xfffd, 0xfffd, 0x973c, 0x9740, 0x97c0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x995a, 0x9a51, 0xfffd, 0x9add, 0xfffd, 0xfffd, 0x9c38, /* 0x60 */ 0xfffd, 0x9c45, 0x9c3a, 0xfffd, 0x9c35, 0xfffd, 0xfffd, 0xfffd, 0x9ef1, 0xfffd, 0x9f93, 0x529a, 0xfffd, 0xfffd, 0x8641, 0x5dd7, 0xfffd, 0x6528, 0xfffd, 0xfffd, 0xfffd, 0x7053, 0x7059, 0xfffd, 0x7221, 0xfffd, 0x766f, 0x7937, 0x79b5, 0x7c62, 0x7c5e, 0x7cf5, 0xfffd, 0xfffd, 0x863d, 0xfffd, 0x882d, 0x8989, 0x8b8d, 0x8b87, 0x8b90, 0x8d1a, 0x8e99, 0xfffd, 0xfffd, 0xfffd, 0x945f, 0xfffd, 0xfffd, 0x9456, 0x9461, 0x945b, 0x945a, 0x945c, 0x9465, 0xfffd, 0x9741, 0xfffd, 0xfffd, 0x986e, 0x986c, 0x986d, 0xfffd, 0x99aa, 0x9a5c, 0x9a58, 0x9ade, 0xfffd, 0x9c4f, 0x9c51, 0xfffd, 0x9c53, 0xfffd, 0xfffd, 0xfffd, 0x9dfc, 0x9f39, 0xfffd, 0x513e, 0xfffd, 0x56d2, 0xfffd, 0x5b4f, 0x6b14, 0xfffd, 0x7a72, 0x7a73, 0xfffd, 0xfffd, 0xfffd, 0x8b91, 0xfffd, 0xfffd, 0x91bf, /* 0x61 */ 0xfffd, 0x946c, 0xfffd, 0xfffd, 0x96e6, 0x9745, 0xfffd, 0x97c8, 0x97e4, 0x995d, 0xfffd, 0x9b21, 0xfffd, 0x9b2c, 0x9b57, 0xfffd, 0xfffd, 0x9c5d, 0x9c61, 0x9c65, 0x9e08, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9f45, 0xfffd, 0xfffd, 0x6205, 0x66ef, 0x6b1b, 0x6b1d, 0x7225, 0x7224, 0x7c6d, 0xfffd, 0x8642, 0x8649, 0xfffd, 0x8978, 0x898a, 0x8b97, 0xfffd, 0x8c9b, 0x8d1c, 0xfffd, 0x8ea2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9c6c, 0xfffd, 0x9c6f, 0xfffd, 0x9e0e, 0xfffd, 0x9f08, 0x9f1d, 0x9fa3, 0xfffd, 0xfffd, 0x5f60, 0x6b1c, 0xfffd, 0xfffd, 0xfffd, 0x7cf3, 0xfffd, 0x8b9b, 0x8ea7, 0x91c4, 0xfffd, 0x947a, 0xfffd, 0xfffd, 0x9a61, 0x9a63, 0x9ad7, 0x9c76, 0xfffd, 0x9fa5, 0xfffd, 0x7067, 0xfffd, 0x72ab, 0x864a, 0x897d, 0x8b9d, /* 0x62 */ 0x8c53, 0x8f65, 0x947b, 0xfffd, 0x98cd, 0x98dd, 0xfffd, 0x9b30, 0x9e16, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x96e7, 0x9e18, 0x9ea2, 0xfffd, 0x9f7c, 0xfffd, 0x7e9e, 0x9484, 0xfffd, 0x9e1c, 0xfffd, 0x7c71, 0x97ca, 0xfffd, 0xfffd, 0xfffd, 0x9ea3, 0xfffd, 0x9c7b, 0x9f97, 0xfffd, 0xfffd, 0x9750, }; static int cns11643_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x21 && c1 <= 0x62)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; { if (i < 6147) wc = cns11643_3_2uni_page21[i]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } recode-3.6/libiconv/cns11643_inv.h0100644000000000000000000052770707206266436015373 0ustar rootroot /* * CNS 11643-1992 planes 1-3 */ static const unsigned short cns11643_inv_2charset[17408] = { 0x2170, 0x2278, 0x2234, 0x2131, 0x2232, 0x2233, 0x256f, 0x256d, 0x256e, 0x2570, 0x256c, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2139, 0x2137, 0x225d, 0x2164, 0x2165, 0x2166, 0x2167, 0x212d, 0x212c, 0x216a, 0x216b, 0x216f, 0x2223, 0x226a, 0x2222, 0x226b, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2635, 0x2636, 0x2637, 0x2638, 0x2639, 0x263a, 0x263b, 0x263c, 0x263d, 0x263e, 0x2258, 0x2255, 0x2257, 0x2256, 0x2259, 0x225a, 0x225c, 0x225b, 0x2261, 0x2235, 0x223c, 0x2249, 0x2248, 0x2245, 0x2246, 0x224d, 0x224e, 0x2250, 0x224f, 0x2244, 0x223d, 0x223b, 0x223e, 0x2239, 0x223a, 0x2247, 0x224a, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a, 0x422b, 0x422c, 0x422d, 0x422e, 0x422f, 0x4230, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238, 0x4239, 0x423a, 0x423b, 0x423c, 0x423d, 0x423e, 0x423f, 0x4240, 0x4241, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2339, 0x233a, 0x233c, 0x233d, 0x233e, 0x233f, 0x2337, 0x2336, 0x2335, 0x2334, 0x2333, 0x2344, 0x2345, 0x2347, 0x2346, 0x2340, 0x2341, 0x2343, 0x2342, 0x234c, 0x234d, 0x234e, 0x2324, 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x2332, 0x2331, 0x2330, 0x232f, 0x232e, 0x232d, 0x232c, 0x2338, 0x233b, 0x217c, 0x217b, 0x2175, 0x2174, 0x217e, 0x217d, 0x217a, 0x2179, 0x2172, 0x2176, 0x2173, 0x2348, 0x2349, 0x234b, 0x234a, 0x2178, 0x2177, 0x2254, 0x2251, 0x2253, 0x2252, 0x2121, 0x2123, 0x2124, 0x2171, 0x2152, 0x2153, 0x214e, 0x214f, 0x2156, 0x2157, 0x215a, 0x215b, 0x214a, 0x214b, 0x2265, 0x2146, 0x2147, 0x2168, 0x2169, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a, 0x243b, 0x243c, 0x243d, 0x2126, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x2221, 0x2275, 0x2276, 0x2270, 0x2271, 0x2272, 0x2274, 0x2277, 0x2273, 0x224c, 0x224b, 0x226f, 0x4421, 0x4423, 0x4424, 0xa126, 0xa125, 0x21a6, 0x4437, 0x4435, 0x4438, 0x4436, 0x21a7, 0x4462, 0x21af, 0x21ad, 0x4461, 0x4460, 0x4562, 0x4561, 0x4560, 0x4563, 0x455f, 0x4722, 0x4723, 0xa262, 0xa261, 0xa263, 0xa43f, 0x4b64, 0xa121, 0xa12c, 0x4439, 0x4463, 0x21b0, 0x4464, 0x21c3, 0x486b, 0x25b1, 0xa122, 0x443a, 0x4465, 0x4564, 0x21c4, 0xa740, 0xa123, 0x21a1, 0x4425, 0x443c, 0xa130, 0x21a8, 0x443d, 0xa12e, 0x4466, 0x4565, 0x4567, 0x4566, 0x4724, 0x4725, 0xa345, 0x4b65, 0xab22, 0x537d, 0x4422, 0x21a2, 0x4426, 0x443f, 0x443e, 0xa146, 0xa145, 0xa264, 0x4726, 0xa440, 0x4b66, 0xab23, 0x5871, 0x33ce, 0xb96c, 0xb96e, 0x632a, 0x41d6, 0x41d7, 0xa124, 0x4427, 0xa12d, 0x4468, 0xa265, 0x4b67, 0x4428, 0x21a9, 0x4440, 0xa131, 0x4469, 0x446b, 0x21b1, 0x446c, 0x446a, 0xa16c, 0xa266, 0x4727, 0x4b68, 0xa442, 0xa742, 0x4b69, 0x4f67, 0x4441, 0x446d, 0xa147, 0x4728, 0x472a, 0x4729, 0x486c, 0x4b6a, 0x4b6b, 0x4f68, 0x4f69, 0xab26, 0xab25, 0xab27, 0xab24, 0x537e, 0x41d8, 0xc033, 0x6dc4, 0x4429, 0xa132, 0xa133, 0x446f, 0x446e, 0x21b2, 0x4470, 0x4476, 0xa149, 0x4471, 0x4472, 0x21b4, 0x21b3, 0x4474, 0x4475, 0xa14c, 0x4473, 0xa14b, 0xa14a, 0x456a, 0x456b, 0x456c, 0x456d, 0x4569, 0x4570, 0x21ca, 0x21c6, 0x21c9, 0x4571, 0x4623, 0xa16d, 0x21c8, 0x456e, 0x456f, 0x4568, 0xa172, 0xa170, 0x21c5, 0x21c7, 0xa26f, 0xa268, 0x4737, 0x21ef, 0x4734, 0x4738, 0x21f9, 0x21ed, 0x4735, 0x21f1, 0xa26b, 0xa267, 0xa276, 0x4736, 0xa26e, 0x4739, 0x472b, 0x21f0, 0x473a, 0x21f4, 0xa26d, 0x21f8, 0x21f5, 0xa26c, 0xa274, 0x21f2, 0x472c, 0x472e, 0x473b, 0x4730, 0x21ea, 0x4733, 0x4731, 0x4732, 0x21fa, 0x21f7, 0x21ee, 0x472f, 0xa270, 0xa277, 0x21eb, 0x472d, 0xa275, 0xa273, 0x21f3, 0x21f6, 0xa272, 0x21ec, 0x23a8, 0x4924, 0x4875, 0xa450, 0xa448, 0x23a9, 0x4872, 0xa44f, 0x4926, 0xa446, 0x487a, 0xa445, 0x4879, 0x22fb, 0x487d, 0x4878, 0x23a2, 0x23aa, 0xa44e, 0x23a6, 0xa449, 0x487b, 0xa44b, 0xa443, 0x487e, 0x486f, 0x4929, 0x22fd, 0xa444, 0xa44c, 0x25bd, 0x486d, 0x4925, 0x486e, 0x4876, 0x4877, 0x23a4, 0x22fe, 0x487c, 0x4874, 0x22fa, 0x4870, 0x23a7, 0x4927, 0x492a, 0x4873, 0x4922, 0x4928, 0x4871, 0x23a5, 0x4923, 0x23ab, 0x22fc, 0x4921, 0x23a1, 0x23a3, 0x4b79, 0x25bf, 0x25cb, 0x4b71, 0xa747, 0x25cc, 0x4b6c, 0x4b76, 0xa74f, 0x4b6f, 0x25b9, 0x4b77, 0x25b8, 0x25bc, 0x25c3, 0x25c1, 0x4c21, 0x4b7a, 0x25b3, 0x25b5, 0x4b7c, 0x4b70, 0x25b6, 0x25c2, 0x25c9, 0x4b75, 0x25bb, 0x25b4, 0x4b74, 0x25b7, 0x4b78, 0x25ba, 0xa744, 0x4b73, 0xa751, 0x4b6e, 0xa748, 0x4b7d, 0x25c4, 0x4b7e, 0x25c8, 0xa743, 0x25c6, 0x25ca, 0x4b7b, 0x25be, 0x25b2, 0x25c0, 0x4b72, 0x25c5, 0x4b6d, 0x25c7, 0xa74c, 0xa749, 0xa74b, 0xa74a, 0xa74d, 0x4f78, 0x4f6c, 0xab2d, 0xab2e, 0x29a2, 0x29aa, 0xab36, 0x4f6b, 0x4f73, 0x5021, 0xab2c, 0x29b0, 0x29ae, 0x29a9, 0xab2b, 0x4f6d, 0x29af, 0x29a5, 0x4f7b, 0x4f72, 0x4f7a, 0x28fe, 0xab32, 0x29ac, 0xab2f, 0x29a3, 0x4f76, 0x29a4, 0xab33, 0x28fd, 0x4f7d, 0x4f70, 0x4f79, 0x4f6f, 0xab28, 0x29a1, 0x29a6, 0xab29, 0x29ad, 0x4f77, 0x4f74, 0x29a8, 0x4f7c, 0x29ab, 0x29a7, 0x4f71, 0x4f7e, 0x4f75, 0x4f6e, 0x4f6a, 0xab35, 0xab34, 0x29b1, 0x543a, 0x5424, 0xaf48, 0x5434, 0xaf4d, 0x5439, 0x2df1, 0x2df0, 0x2df5, 0x2df6, 0x5427, 0xaf44, 0x5430, 0xaf58, 0xaf4c, 0xaf56, 0x543d, 0xaf46, 0x5431, 0xaf4b, 0xaf49, 0xaf47, 0x2dea, 0x542a, 0x2deb, 0xaf4f, 0x543f, 0x5436, 0x5421, 0x5422, 0x2dfe, 0x5924, 0xaf53, 0x542f, 0x542e, 0x2dec, 0x5432, 0x33de, 0x5429, 0x2df7, 0x5438, 0x5437, 0x542d, 0x2def, 0x2df8, 0xaf45, 0x2de9, 0x542c, 0x2df9, 0x5435, 0x2ded, 0x5423, 0xaf4e, 0x5426, 0x5425, 0x2dfa, 0x5433, 0x5428, 0x543c, 0x543e, 0x2df4, 0x543b, 0xaf51, 0x2dfc, 0x2dee, 0x2dfd, 0xaf43, 0x2df2, 0x2dfb, 0xaf50, 0x2df3, 0xaf54, 0xaf55, 0x542b, 0x33e6, 0x33da, 0xb43c, 0x5876, 0xb43f, 0x33df, 0x33e5, 0x5875, 0x33d8, 0x5879, 0x33dc, 0x33d5, 0x5877, 0x33d9, 0x587c, 0x5923, 0xb444, 0x33ea, 0xb441, 0x33d4, 0xb442, 0x587d, 0xaf57, 0x33e9, 0xb447, 0xb43d, 0x5878, 0x33db, 0x5874, 0x33d6, 0x33d2, 0x33e0, 0x33d3, 0x33d1, 0x33dd, 0x33e3, 0x33e4, 0x587a, 0xb440, 0x3abf, 0x33e1, 0x33d0, 0x33e2, 0xb44b, 0x5926, 0x33e7, 0x5925, 0x33cf, 0xb443, 0x33d7, 0x33e8, 0x5921, 0x587e, 0x587b, 0x5922, 0xb44c, 0xb44a, 0x5872, 0xb445, 0xb446, 0x5873, 0x5e2e, 0xb975, 0x3ac2, 0x3abb, 0x5e2b, 0x3ac3, 0xb971, 0xb972, 0x3ab9, 0x3abc, 0x5e2a, 0x3abd, 0xb96f, 0x5e2d, 0x3ac1, 0x3ab7, 0x3ab6, 0x5e2f, 0xb970, 0x5e30, 0x5e2c, 0x5e31, 0x3ab5, 0x3ac0, 0x3abe, 0x3ab8, 0x5e29, 0x3aba, 0xc039, 0xc03c, 0x6331, 0x632b, 0x41dc, 0x6334, 0x41e2, 0x41e5, 0x632d, 0x632e, 0x41df, 0x632c, 0x41e8, 0x6332, 0x41e9, 0xc03a, 0x41e4, 0x6333, 0xc037, 0x41d9, 0x6330, 0x41da, 0x41e3, 0x41e1, 0xc03d, 0x41dd, 0x632f, 0x41db, 0x6335, 0x41e0, 0x41e7, 0x41de, 0x41e6, 0xc036, 0xc03e, 0x677c, 0x6779, 0xc56b, 0x677a, 0x49a1, 0x48f7, 0x6778, 0x6775, 0x48f8, 0xc56e, 0xc56c, 0x6777, 0x48fb, 0xc56d, 0x48fd, 0xc576, 0x49a6, 0xc570, 0xc575, 0x49a5, 0x48fe, 0x6774, 0x48f6, 0x6772, 0x48f9, 0x677d, 0x48fc, 0xc571, 0x49a2, 0x6776, 0x6773, 0x49a4, 0x49a3, 0x677b, 0x48fa, 0xc574, 0x6c23, 0x4fd4, 0xcb29, 0x4fd1, 0x6c24, 0x6c22, 0xcb2b, 0x4fd8, 0x4fd5, 0x4fce, 0x6c21, 0xcb2d, 0x6c25, 0x4fcf, 0x6b7e, 0x6c28, 0x4fd2, 0x4fd3, 0x6c26, 0x6c27, 0x4fd9, 0x4fd6, 0x4fd7, 0xcb2c, 0xcb27, 0x7033, 0x56c3, 0x7030, 0x56c0, 0x7032, 0x7034, 0xd031, 0x56c1, 0x7031, 0x56c2, 0xd035, 0x56bf, 0xd030, 0xd034, 0x7341, 0x5cc9, 0x7342, 0x5cc7, 0x5cc8, 0x5cc6, 0x5cc5, 0xd441, 0xd440, 0x5cca, 0x7340, 0xd033, 0x61c4, 0x61c5, 0xd752, 0x4fd0, 0x61c3, 0x7343, 0x782b, 0x65b7, 0x65b8, 0xdc32, 0x7a62, 0x7a63, 0x6bcf, 0x6bce, 0x7b58, 0x7b57, 0x6efd, 0xe06f, 0x442a, 0x4442, 0x4478, 0x4477, 0x4573, 0x4572, 0x473e, 0x473d, 0x473f, 0x473c, 0xa278, 0x492c, 0x492b, 0x492d, 0xa454, 0xa453, 0xa451, 0x4c23, 0x4c22, 0x4c24, 0xa752, 0x5022, 0x2279, 0x2ea1, 0x227a, 0x5927, 0x227c, 0x227b, 0x3ac4, 0xb976, 0x227d, 0x677e, 0x227e, 0xde25, 0x442b, 0xa134, 0x4479, 0x4740, 0x4c25, 0xab37, 0x442c, 0x447c, 0x447a, 0x447b, 0x4741, 0xa27a, 0x492e, 0x4c27, 0x4c26, 0x4c28, 0xae7b, 0x5440, 0xc03f, 0x7035, 0xa127, 0xa14d, 0xa148, 0xa14e, 0x21ae, 0x4574, 0x4575, 0xa178, 0xa179, 0x4742, 0x23ac, 0xa755, 0x5024, 0x5023, 0x2ea3, 0x2ea2, 0x5928, 0xa128, 0x447d, 0x21b5, 0xa17a, 0xa457, 0x25cd, 0xab39, 0x5025, 0xaf5b, 0x5443, 0xaf59, 0x5441, 0x5442, 0xaf5a, 0xb44d, 0x7036, 0x4576, 0x4743, 0x21fb, 0xa27e, 0xa27d, 0xa27c, 0xa459, 0x492f, 0x4930, 0xa45a, 0x23ad, 0x25ce, 0x4c29, 0x25cf, 0xab3b, 0xab3d, 0xab3e, 0x2ea5, 0x2ea6, 0x5446, 0xaf5e, 0x2ea7, 0xaf5f, 0x2ea4, 0x5447, 0x5445, 0x5444, 0x2ea8, 0xb44f, 0x33eb, 0xb44e, 0xb97d, 0xb97a, 0x3ac5, 0xb97e, 0x41ea, 0x49a7, 0xcb2f, 0xcb2e, 0xcb30, 0x6c29, 0x7037, 0x56c4, 0xd442, 0x442d, 0x443b, 0xa12f, 0xa135, 0xa151, 0xa17b, 0xa322, 0xa45b, 0xa759, 0x5929, 0x5e33, 0x6821, 0xc57a, 0x21a3, 0x447e, 0x4579, 0x4577, 0x4578, 0x4c2a, 0xa75a, 0x442e, 0x442f, 0x4443, 0xa136, 0xa152, 0x4521, 0x4522, 0x4523, 0x21cc, 0x457a, 0xa17d, 0x21cb, 0x4747, 0xa325, 0x21fd, 0x4745, 0x4746, 0x21fc, 0xa324, 0xa326, 0x4748, 0x4744, 0xa327, 0x23ae, 0x4f4f, 0x23af, 0xa45f, 0xa461, 0x23b0, 0xa45c, 0x4932, 0x4931, 0xa45e, 0xa45d, 0x4935, 0x4933, 0x4934, 0xa460, 0x4c30, 0xa75b, 0x4c2f, 0x25d4, 0x25d1, 0x25d2, 0xa75e, 0x25d0, 0x4c31, 0x4c2d, 0x4c2c, 0xa75f, 0x4c2e, 0x4c2b, 0xa75d, 0x4c32, 0x5027, 0x29b2, 0xab3f, 0x25d3, 0x502c, 0xab40, 0x29b3, 0x5028, 0x502b, 0x502a, 0x5029, 0x5026, 0xab43, 0x2eab, 0xaf68, 0x544a, 0x2eae, 0x5448, 0xaf65, 0xaf62, 0x2eaa, 0x544b, 0x5449, 0x544c, 0x2eac, 0x2ead, 0xaf60, 0x2ea9, 0x2eaf, 0xaf66, 0xaf61, 0xaf63, 0xaf64, 0xb450, 0x5e37, 0x592a, 0x33ec, 0x33ee, 0x33ed, 0x33ef, 0x592b, 0xba23, 0x5e34, 0xba21, 0x5e35, 0x5e36, 0xb451, 0x6337, 0x41ec, 0xc041, 0x41eb, 0x41ed, 0x41ee, 0x6338, 0xc040, 0x6336, 0x49a8, 0x49a9, 0x6823, 0x6822, 0x4ce1, 0xcb31, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2e, 0x4fda, 0x4fdb, 0x6c2d, 0xcb32, 0xd036, 0x7038, 0x7039, 0xd037, 0x65b9, 0x6bd1, 0x6bd0, 0x6efe, 0xe02c, 0x4430, 0xa137, 0xa154, 0xa153, 0x457c, 0x457b, 0x4749, 0x21fe, 0xa328, 0x4937, 0x4938, 0x4936, 0x4939, 0x23b1, 0x23b2, 0xa463, 0xa462, 0xa761, 0xa760, 0x4c34, 0x25d5, 0x4c33, 0xa762, 0x29b4, 0x5030, 0x29b5, 0x502f, 0xab48, 0xab46, 0x502d, 0x502e, 0xab47, 0xaf6f, 0x2eb0, 0xaf6c, 0xaf6a, 0xaf6d, 0xaf6e, 0x592c, 0x33f1, 0xb452, 0x592f, 0x33f0, 0x5b2b, 0x592e, 0x592d, 0x5e3a, 0x5e39, 0x5e38, 0x6339, 0xc045, 0xc044, 0x633c, 0x633d, 0x633b, 0x633a, 0xc046, 0x49aa, 0xc621, 0x49ab, 0xc57e, 0xcb33, 0x4fdd, 0x6c2f, 0x4fdc, 0xcd2c, 0x703a, 0x5ccb, 0x7344, 0x65ba, 0x7961, 0x4444, 0x4524, 0x21b6, 0xa155, 0x4525, 0x4526, 0xa156, 0xa223, 0xa222, 0x457d, 0x457e, 0xa224, 0x474a, 0x23b3, 0x25d6, 0x25d7, 0x5031, 0x2eb1, 0x5931, 0x5930, 0x3ac7, 0x3ac6, 0xd038, 0x4431, 0x4527, 0x4621, 0x5932, 0x21a4, 0x21cd, 0x4622, 0xa226, 0x22a2, 0x474c, 0x474b, 0x22a1, 0x493a, 0xa465, 0xab49, 0x544d, 0x33f2, 0x633e, 0x49ac, 0x6824, 0xc623, 0xcb34, 0x56c5, 0xd444, 0xdc34, 0x68ea, 0xa129, 0x4528, 0xa157, 0xa466, 0x25d8, 0x29b6, 0x5935, 0x5933, 0x5934, 0x4432, 0x4445, 0x243f, 0x452b, 0xa159, 0x452a, 0x4529, 0x4625, 0x4624, 0xa32a, 0x21ce, 0x22a3, 0xa32b, 0xa32d, 0x4c38, 0x4c35, 0x4c37, 0x4c36, 0xa763, 0x5032, 0xab4a, 0x5e3b, 0x4433, 0xa15a, 0x452c, 0xa227, 0x4627, 0x4626, 0x23b4, 0x4c39, 0xaa5c, 0xa12a, 0x21b7, 0xa228, 0x4629, 0x4628, 0x474d, 0x474e, 0x23b5, 0x493b, 0xa467, 0x493c, 0xa765, 0x4c3a, 0x4c3b, 0x4c3c, 0xa766, 0x5033, 0x29b7, 0xab4b, 0x544e, 0xc047, 0x21a5, 0x452d, 0xa15b, 0xa229, 0x22a4, 0xa32f, 0x23b6, 0x23b7, 0x25d9, 0xa767, 0x25da, 0x29b9, 0x29b8, 0x29bb, 0x29ba, 0x5034, 0x33f3, 0x5450, 0x2eb2, 0x544f, 0xb454, 0x3ac8, 0x5e3c, 0xba28, 0x3ac9, 0xba27, 0xc04a, 0xc049, 0xc048, 0x49ad, 0x6825, 0xc625, 0xc626, 0xcb35, 0x6c30, 0xd445, 0x65bb, 0xa12b, 0xa15c, 0x21b8, 0xa22a, 0x462a, 0xa331, 0xa769, 0xa76a, 0x5936, 0xb455, 0xba29, 0x4434, 0x4446, 0x452f, 0x452e, 0xa15e, 0x4530, 0xa160, 0xa22b, 0xa333, 0x4c3e, 0xa76b, 0x4c3d, 0x4c3f, 0xab50, 0xab4f, 0x5035, 0xab4e, 0xab4d, 0x5451, 0xc04b, 0x56c6, 0x763b, 0x4447, 0x462c, 0x463b, 0x4636, 0x4631, 0x4630, 0x4637, 0x4635, 0x462e, 0x463c, 0x462f, 0x462b, 0x463a, 0x4639, 0x4638, 0x462d, 0xa231, 0x4634, 0xa22d, 0xa22e, 0x4633, 0xa22f, 0x463d, 0x4632, 0xa335, 0xa337, 0x4754, 0x475a, 0x4756, 0xa339, 0x475c, 0x22a5, 0x4759, 0x474f, 0x4752, 0x4755, 0x4751, 0x4758, 0x475b, 0x4750, 0x4753, 0x4757, 0x475d, 0xa33a, 0xa33b, 0xa334, 0x23c0, 0x23bd, 0xa476, 0x4949, 0x23be, 0x493d, 0x493f, 0x4957, 0x4952, 0xa479, 0xa47e, 0xa475, 0x23c5, 0x23bf, 0x4941, 0x4943, 0x23c4, 0x494a, 0x23ba, 0x4956, 0x4958, 0x493e, 0x494f, 0xa524, 0x23b8, 0x4955, 0xa477, 0x4946, 0xa47b, 0x4950, 0x4951, 0x23b9, 0x494e, 0x494c, 0xa470, 0x494d, 0x4953, 0x23c1, 0x4940, 0xa521, 0x4954, 0x23c3, 0x4948, 0x4945, 0xa473, 0x23bc, 0x4944, 0x23c6, 0x4947, 0xa47c, 0x494b, 0xa478, 0xa474, 0xa46d, 0x4942, 0x23c2, 0xa47d, 0xa522, 0x23bb, 0xa523, 0xa76e, 0x25eb, 0x25ea, 0x4c51, 0x25ed, 0x25ef, 0x25e4, 0x25e7, 0x25ee, 0x4c52, 0xa774, 0xa778, 0x25e1, 0x25e5, 0xa775, 0x25e9, 0x29ca, 0x4c4d, 0x29ce, 0x4c40, 0x25e6, 0x4c41, 0x4c4e, 0x4c47, 0x4c43, 0xa771, 0x25e2, 0x4c46, 0x4c4b, 0x4c54, 0x25e3, 0x25dc, 0x4c45, 0x25dd, 0x25df, 0x4c48, 0xa76c, 0x4c4a, 0x25db, 0x25e0, 0xa770, 0xa779, 0x4c53, 0x4c4f, 0x25e8, 0x4c55, 0xa773, 0x4c4c, 0x25de, 0x4c49, 0xa76f, 0xa777, 0x4c44, 0x4c42, 0x25ec, 0x4c50, 0xab5c, 0xab5d, 0x29c9, 0x29bd, 0x29cc, 0xab57, 0xab59, 0x29bf, 0x503c, 0x504a, 0x5038, 0x5049, 0x5041, 0x5046, 0x5036, 0x29be, 0x29c4, 0x5045, 0x29d0, 0x5047, 0xab5b, 0x503d, 0xab54, 0xab5e, 0x29c6, 0x29c3, 0x503b, 0xab51, 0x29bc, 0x5048, 0x29cb, 0x5040, 0x29cd, 0x504b, 0x5037, 0x5042, 0x503f, 0x29c1, 0x5043, 0x29c7, 0x29c8, 0x503e, 0x5044, 0x503a, 0xab55, 0xab63, 0xab61, 0x5039, 0x29c0, 0xab53, 0x29c5, 0xab58, 0x29cf, 0x2ec6, 0x545e, 0x2eb4, 0x2eb9, 0x5457, 0x5462, 0x2eb7, 0x5452, 0x545c, 0x5461, 0x2ebe, 0x545d, 0x5460, 0xaf77, 0xb021, 0x2ec1, 0x5458, 0x2eb8, 0xaf74, 0xaf78, 0xb022, 0x2ec4, 0x2ec5, 0xaf79, 0x545a, 0x2ec3, 0x5456, 0x5465, 0x2ebb, 0xaf7b, 0x5454, 0xaf7a, 0x2ec8, 0x2ebc, 0x2ec0, 0x5459, 0x5464, 0x2ebd, 0x545f, 0x2ec2, 0x2ec9, 0x34a4, 0xaf73, 0x2ec7, 0x5466, 0x5453, 0x2ebf, 0x2eb6, 0xaf76, 0x545b, 0x2eb5, 0xaf7e, 0xb025, 0x2eba, 0x2eb3, 0x5463, 0xb45f, 0x33fa, 0xb468, 0x5949, 0x34aa, 0x5947, 0x5944, 0x34a1, 0x5940, 0x34a5, 0x594b, 0x33f9, 0x33fe, 0x33fd, 0x5455, 0x5946, 0x34a8, 0xb466, 0x34ab, 0x33f6, 0x5e4e, 0xb467, 0x34ac, 0x594c, 0x593e, 0x593b, 0x34a3, 0x5938, 0x34a9, 0xb45b, 0x593f, 0x34ad, 0xb458, 0x33f7, 0x34a7, 0x5942, 0x33f8, 0x33fb, 0x34a2, 0xb462, 0xb461, 0x5943, 0x5941, 0x594d, 0xb457, 0xba36, 0xb464, 0x5948, 0xb45e, 0x593c, 0x5a76, 0x593d, 0x33fc, 0x594a, 0x5945, 0x34a6, 0x593a, 0xb459, 0x5939, 0x33f4, 0x33f5, 0x3ace, 0xba3c, 0x5e3d, 0x5e40, 0x3ad9, 0x5e54, 0x3adc, 0x5e3e, 0x3ad5, 0x5e44, 0x5e4a, 0x6143, 0xba31, 0xba38, 0x5e48, 0x3ad2, 0x5e55, 0x5e41, 0x5e49, 0x3ada, 0x41fc, 0x3adf, 0x3ad3, 0x3aca, 0x3ad7, 0x3ad1, 0x5e47, 0x3add, 0xba2e, 0xba2a, 0x5e43, 0x5e57, 0x5e50, 0xba33, 0x5e45, 0x5e42, 0xba40, 0x5e4d, 0xba34, 0x3ade, 0x3ad0, 0x3ad6, 0x3ad8, 0x3acc, 0x3adb, 0x5e3f, 0x3acb, 0xba42, 0x5e46, 0x5e56, 0x5e52, 0x3acd, 0x5e4c, 0xba3b, 0x5e53, 0x5e4f, 0x5e4b, 0xba2f, 0x3ad4, 0x5e51, 0x41fa, 0x41f6, 0xc051, 0x42a7, 0x41ef, 0x41f8, 0x634c, 0x634d, 0x6345, 0x42a3, 0x634f, 0x41f4, 0x41f3, 0x41f1, 0x42a5, 0x6343, 0x41fd, 0x41f2, 0x6346, 0x41fb, 0x6341, 0x41f7, 0x41fe, 0x42a2, 0xc04e, 0x42a6, 0x634a, 0x41f0, 0x6344, 0x41f5, 0xba2b, 0x633f, 0x634b, 0x42a1, 0x6347, 0x6348, 0x634e, 0x6342, 0x2321, 0x6340, 0x41f9, 0xc04c, 0x6349, 0x42a4, 0x6835, 0x6830, 0xc62e, 0x49bc, 0x49b8, 0xc628, 0x49b2, 0x682a, 0x6826, 0x49bb, 0x6827, 0x49b5, 0x49b7, 0xc629, 0x49ba, 0xc636, 0x682c, 0xc62c, 0x6833, 0x682d, 0xc62a, 0x49b0, 0x682e, 0x682f, 0x49b3, 0x6834, 0xc634, 0x49b1, 0x49b6, 0x682b, 0x49af, 0x6831, 0x6829, 0xc633, 0x6828, 0x49b4, 0x49b9, 0xc631, 0x6832, 0xc650, 0x49ae, 0xc630, 0x6c37, 0x4fee, 0xcb41, 0x4feb, 0xcb38, 0x6c31, 0x6c3d, 0x6c3e, 0xcb3d, 0x6c34, 0x4fe9, 0x6c36, 0x4fe1, 0x6c3c, 0xcb44, 0x4fed, 0x6c33, 0x4fef, 0x6c32, 0x4fea, 0x4fec, 0x6c35, 0x4fe8, 0x4fe2, 0x4fdf, 0xcb3e, 0x3acf, 0x4fe5, 0xcb37, 0x4fde, 0x4fe4, 0x4fe3, 0xcb3b, 0x4fe0, 0xcb43, 0x6c39, 0xcb45, 0xcb40, 0xc635, 0xcb3c, 0x6c38, 0xcb39, 0xcb3f, 0x6c3a, 0x4fe6, 0x703b, 0x4fe7, 0x56cf, 0xd03f, 0x56c8, 0xd040, 0x7047, 0x56cc, 0x703f, 0x7043, 0x56cb, 0xd03b, 0x7042, 0x703e, 0x7041, 0x703c, 0x7046, 0x56cd, 0x56c9, 0x7045, 0x56c7, 0x7044, 0x56ce, 0x56ca, 0x6c3b, 0x7048, 0x56d0, 0x7040, 0x703d, 0xd03d, 0xd448, 0x5cd2, 0x5cd4, 0x7346, 0x5cd5, 0x5cd3, 0x5cd1, 0x5cd0, 0x7348, 0x5ccf, 0x7349, 0xd449, 0xd447, 0x5ccd, 0x5cce, 0x7345, 0x734a, 0x7347, 0x5ccc, 0xd75b, 0x763c, 0xd75a, 0x61c8, 0x61c6, 0x61cb, 0x61c9, 0xd758, 0x61c7, 0x61ca, 0xd759, 0xd757, 0xd75c, 0x782c, 0x65be, 0x65bf, 0x782d, 0x65c0, 0x65bc, 0x65c1, 0x65bd, 0x763d, 0xda2d, 0x68eb, 0x68ed, 0x7964, 0x68ec, 0x7963, 0x7962, 0xde26, 0x7965, 0x6bd3, 0x6bd4, 0x7a65, 0x7a64, 0x7a66, 0x6bd2, 0x6dc6, 0x6dc5, 0xdf40, 0x7b59, 0x7b5b, 0x7b5a, 0x6dc7, 0x7c34, 0x70b4, 0x7c5d, 0xe071, 0x70b3, 0x70fc, 0x21aa, 0xa177, 0x463f, 0x463e, 0x4760, 0x475f, 0x22a7, 0x475e, 0x22a6, 0xa33e, 0x495b, 0x23c9, 0xa52c, 0x23c8, 0xa526, 0x4959, 0x495c, 0xa52b, 0xa52a, 0x23c7, 0xa529, 0x495a, 0xa548, 0xa527, 0xa528, 0xa822, 0x25f0, 0xa77d, 0x25f1, 0x4c56, 0xa77c, 0xa821, 0xa77b, 0x504c, 0xab65, 0x2eca, 0x2ecb, 0x5467, 0x5468, 0xb027, 0x34af, 0x594e, 0x5950, 0x34ae, 0x594f, 0x3ae0, 0x5e58, 0xba44, 0xba43, 0x6350, 0x6351, 0x42a8, 0xc052, 0x6837, 0xc637, 0x6836, 0x4ff0, 0x56d2, 0x56d1, 0xdf41, 0x71da, 0x4448, 0x21b9, 0xa161, 0x21cf, 0x21d0, 0xa234, 0x4763, 0x4767, 0x22a9, 0x4765, 0x4764, 0x22a8, 0x4766, 0x4762, 0xa341, 0xa342, 0x4761, 0x22aa, 0xa33f, 0xa340, 0x4966, 0xa531, 0xa53e, 0x4963, 0xa530, 0x495f, 0x23ca, 0xa540, 0xa536, 0xa52f, 0x23cb, 0xa53c, 0x4961, 0xa52d, 0x23cd, 0x495d, 0x23ce, 0x23cc, 0x4960, 0x4962, 0x4965, 0x4964, 0x495e, 0x23cf, 0xa532, 0xa541, 0xa542, 0xa533, 0xa538, 0xa537, 0xa535, 0x4c5b, 0x25fe, 0xa825, 0x4c5d, 0xa823, 0x4c5c, 0xa826, 0x26a1, 0x4c5a, 0x4c59, 0x25f5, 0x25f4, 0xa828, 0x25f2, 0x25f7, 0x25f6, 0x25f3, 0x25fc, 0x25fd, 0x25fa, 0x25f8, 0x4c58, 0xa829, 0x25fb, 0x4c5e, 0x26a2, 0xa82a, 0x25f9, 0xa824, 0x504d, 0x4c57, 0x504e, 0x29d5, 0xab69, 0xab68, 0x29db, 0xab6c, 0xab67, 0xab6a, 0x5054, 0x29d9, 0x29df, 0xab71, 0x29d6, 0x29da, 0x29dc, 0x29de, 0x29d8, 0xab70, 0x29d7, 0x29d2, 0x29d3, 0x504f, 0xab6b, 0x5051, 0x5050, 0x29d4, 0x29dd, 0xab6d, 0xab72, 0xab6e, 0xab66, 0x5053, 0x29d1, 0x2ed5, 0xb02a, 0x2ed4, 0x2ed9, 0x2ed0, 0xb030, 0x2ed3, 0x2ed2, 0xb02f, 0x2ed6, 0xb038, 0x2eda, 0x5469, 0x546c, 0xb034, 0xb035, 0x2ed1, 0x2ed7, 0xb033, 0xb028, 0xb037, 0x546b, 0x2ecc, 0xb02b, 0x5052, 0x34bd, 0x2ed8, 0xb036, 0x2ecf, 0x546a, 0x2ece, 0xb032, 0x34b4, 0xb46e, 0xb471, 0x5951, 0x5955, 0x34c4, 0x34b2, 0x34c0, 0x5956, 0x34c2, 0xb472, 0x34c8, 0xb474, 0x34cc, 0xb469, 0x34c3, 0x34b7, 0x34bf, 0xb46b, 0x34cd, 0x34cb, 0x34c1, 0x34bc, 0x34b5, 0x3ae8, 0x34b3, 0x595a, 0x34ba, 0x595b, 0x5957, 0x34b0, 0x34c6, 0x34b8, 0xb46f, 0xb475, 0x34b6, 0x34c9, 0x5958, 0xb476, 0x34cf, 0x5952, 0x5954, 0x34be, 0x34b9, 0x546d, 0x5953, 0x34bb, 0x34ca, 0x34ce, 0x34c5, 0x34c7, 0x34b1, 0xba4a, 0x3ae3, 0xba45, 0x3aec, 0x3aeb, 0x5e60, 0x3ae4, 0xba47, 0x5e61, 0x5e5f, 0xba50, 0x3ae6, 0x5e5c, 0x3aea, 0xba4c, 0x3ae5, 0x3ae7, 0x3ae1, 0x5e5a, 0x3af4, 0x3af3, 0x3af0, 0x5e59, 0x5e5d, 0x5e5e, 0x2ecd, 0x3aed, 0x5e5b, 0x5959, 0x3aef, 0x3ae2, 0x3af2, 0x3af1, 0xba4e, 0x3af5, 0xba49, 0x42b6, 0xba4b, 0x3aee, 0x3ae9, 0x42ae, 0x635b, 0x635e, 0x6359, 0x42ad, 0x42b1, 0x42ac, 0xc057, 0x6353, 0x635d, 0x42a9, 0x6357, 0x42b0, 0xc05b, 0x6355, 0x6354, 0x42b3, 0x6356, 0x42b5, 0xc056, 0x42b2, 0x6352, 0xc05e, 0xc05c, 0xc058, 0x635c, 0x42b7, 0x42ab, 0x42b4, 0xc05d, 0x42aa, 0xc05a, 0xc059, 0x6358, 0xc054, 0x635a, 0x42af, 0x42b8, 0xc643, 0xc63e, 0x49c4, 0x6838, 0x49ca, 0xc642, 0xc63c, 0x683d, 0x49c6, 0x49cd, 0x49be, 0x683f, 0x6839, 0x49c3, 0x6c3f, 0x49c2, 0x49cb, 0x683a, 0xc63d, 0x683e, 0x49c1, 0x49c7, 0x49cc, 0x49bd, 0x683c, 0x49c5, 0xc63a, 0xc645, 0x49c9, 0x49cf, 0x49bf, 0x49c8, 0xc638, 0x683b, 0x49ce, 0xc641, 0xc644, 0xc640, 0x49c0, 0x6c43, 0x4ff2, 0x6c41, 0x6c40, 0x4ff4, 0x4ff9, 0xcb46, 0x4ff5, 0xcb50, 0x4ff8, 0x6c46, 0xcb51, 0x702e, 0x6c45, 0xcb4b, 0x4ff1, 0x4ff7, 0xc63f, 0x6c44, 0x4ff6, 0xcb4d, 0x4ff3, 0xcb49, 0x6c42, 0xcb4f, 0xcb4c, 0xcb47, 0x56d7, 0xd04a, 0x56d9, 0x56d4, 0x704a, 0x56d6, 0xd04b, 0x7049, 0x56d8, 0xd048, 0xd04c, 0x704c, 0x56da, 0x704b, 0x56d3, 0x56d5, 0xd049, 0xd44b, 0x734e, 0x5cd8, 0xd44c, 0x734d, 0x5cd9, 0x734c, 0x5cd7, 0x734b, 0x5cd6, 0x763f, 0x763e, 0x65c2, 0x65c4, 0xda2f, 0x65c3, 0x782e, 0x782f, 0xda2e, 0x7830, 0x68ee, 0x7966, 0xde28, 0x6fa2, 0x6fa1, 0x7c5e, 0x4449, 0x4531, 0xa343, 0x4967, 0xa545, 0xa543, 0xa544, 0xa82d, 0x29e0, 0xab77, 0xb477, 0x5e62, 0x5e63, 0xba52, 0x42b9, 0x6840, 0x49d0, 0x4ffa, 0xd04d, 0xa139, 0x21ba, 0xa235, 0xa344, 0x23d0, 0xab7a, 0xab79, 0xa13a, 0xa546, 0x26a3, 0x29e1, 0x2edb, 0x546e, 0xc646, 0x65c5, 0x7a67, 0x444a, 0x4640, 0x21d1, 0xa236, 0x4768, 0x4769, 0x4c5f, 0xb479, 0x595c, 0x6842, 0xc05f, 0x6843, 0x6841, 0xcb53, 0x444b, 0x4532, 0x4534, 0x4533, 0x21bb, 0x4535, 0x4641, 0x21d2, 0xa238, 0x4642, 0xa237, 0xa239, 0xa347, 0x476a, 0x476b, 0x22ab, 0xa549, 0x4968, 0x23d1, 0x4c63, 0x26a4, 0x4c61, 0x4c62, 0x4c60, 0x2edc, 0xa82e, 0xa82f, 0x5058, 0x5057, 0x5059, 0x5056, 0xab7c, 0x29e2, 0x4c64, 0x5055, 0x546f, 0x5470, 0x5471, 0xb47b, 0x34d0, 0xb47c, 0xb47d, 0x5e64, 0x3af6, 0x595d, 0xba53, 0xba54, 0xc060, 0x635f, 0xc061, 0x6845, 0x6844, 0x49d1, 0xc648, 0x6c47, 0x704d, 0x61cc, 0x6dc8, 0x6fa3, 0x444c, 0x4643, 0xa23b, 0x4644, 0x22b1, 0x476d, 0x4770, 0xa34b, 0x22af, 0x22ad, 0x476f, 0x22b0, 0x22b2, 0x22ac, 0x4772, 0x4771, 0x476e, 0x476c, 0x22ae, 0xa34d, 0xa555, 0x4973, 0xa54c, 0x4970, 0x23d6, 0x23d9, 0x23d8, 0x496a, 0x4972, 0xa54b, 0x496f, 0x23d5, 0x23d3, 0x496e, 0xa556, 0xa553, 0xa54e, 0x4969, 0x496c, 0xa551, 0x23d4, 0x23db, 0x23d7, 0x496d, 0x4971, 0x4974, 0x23d2, 0x23da, 0x496b, 0xa841, 0xa833, 0x4c69, 0x4c71, 0xa838, 0x26b0, 0x26a9, 0x4c72, 0x26b4, 0x26a5, 0x26ac, 0xa845, 0xa840, 0x4c68, 0x26a6, 0x4c66, 0x26ad, 0x26b1, 0x4c65, 0xa83d, 0x26b2, 0x26ab, 0xa837, 0x26ae, 0xa835, 0x4c74, 0x4c6b, 0x26b5, 0x26b3, 0xa83f, 0x4c70, 0x4c6e, 0x26aa, 0x4c6d, 0x26a8, 0x26a7, 0x4c6c, 0x4c6a, 0x4c73, 0x4c6f, 0x4c67, 0xac26, 0x26af, 0xa846, 0x505b, 0xac2d, 0x5062, 0x29f0, 0x505a, 0x29e8, 0x29e4, 0xac21, 0x29f4, 0x29e3, 0xac2c, 0x505d, 0x29ed, 0x5060, 0x5063, 0xac2e, 0x505e, 0x29f1, 0x5061, 0xac23, 0x5478, 0x29f7, 0x29e5, 0xac24, 0xac25, 0x29e7, 0x29ee, 0x29f2, 0x29f6, 0x29f3, 0x29ec, 0x29ef, 0xac2b, 0xac29, 0x29e9, 0x5065, 0x29eb, 0x29ea, 0x29f5, 0x505c, 0x29e6, 0x5064, 0xac2a, 0x505f, 0xac28, 0x547e, 0x2ee4, 0xb040, 0x547d, 0xac27, 0x2ee2, 0x5472, 0xb04f, 0x5477, 0xb04a, 0x2ee1, 0x2ede, 0x2ee3, 0x5473, 0x2edd, 0xb04e, 0x5476, 0x5474, 0xb03e, 0x2ee5, 0x5475, 0x5479, 0xb03b, 0xb045, 0x547a, 0xb048, 0x547c, 0xb052, 0x547b, 0xb03c, 0xb522, 0xb538, 0x2edf, 0x2ee0, 0xb04d, 0xb04b, 0x2ee6, 0x34d7, 0x595e, 0x3ba6, 0x34d6, 0x34e9, 0xb528, 0xb524, 0x5964, 0xb531, 0x34e7, 0xb533, 0x5963, 0x595f, 0x34f0, 0x34e0, 0x34e3, 0xb52e, 0x5967, 0x34ed, 0x34e5, 0x5960, 0x5968, 0xb52a, 0x34ea, 0x34e8, 0xb52f, 0xb53b, 0x34d9, 0x34ee, 0x34e2, 0x34dd, 0xb53a, 0x34d3, 0x34ef, 0x34df, 0x34d2, 0xb539, 0x5966, 0x34e4, 0x34f1, 0x34e1, 0x34d5, 0x34da, 0x34d1, 0xb527, 0x5965, 0xb53c, 0x34de, 0x34db, 0x5961, 0x34d4, 0xb530, 0x34ec, 0x5962, 0xb52b, 0x34dc, 0x34d8, 0xb529, 0xb534, 0x34eb, 0xb532, 0xb537, 0xb535, 0x5e65, 0x3afd, 0xba75, 0x3afa, 0x3bad, 0x3ba1, 0x3bae, 0xba7c, 0x5e67, 0xba63, 0xba61, 0xba58, 0x3baa, 0x3ba7, 0xba5b, 0xba77, 0xba72, 0xba59, 0xba60, 0x3ba8, 0x3bab, 0x3baf, 0xba7b, 0x34e6, 0x3bb1, 0x42cd, 0xba66, 0x5e68, 0x3bb2, 0x3af8, 0x3ba4, 0xba62, 0x3ba9, 0xba5c, 0xba5e, 0x5e66, 0x5e69, 0x3bb0, 0x3bb3, 0x3afc, 0x3af9, 0xba73, 0xba5a, 0x3afb, 0xba57, 0xba7a, 0x3ba2, 0x3afe, 0x5e6a, 0xba56, 0x3bac, 0xba79, 0xba78, 0x3ba3, 0x3ba5, 0x3af7, 0x42c1, 0x42bf, 0x6368, 0x6366, 0x42c9, 0x42c0, 0x42ca, 0x42c6, 0x42be, 0x42cc, 0x42bd, 0x42c4, 0x6365, 0x6364, 0x6363, 0x42c2, 0x42c7, 0x6360, 0x6367, 0xc067, 0x42bb, 0xc066, 0x42c5, 0x42ba, 0x42c3, 0x6361, 0x42c8, 0x42bc, 0x6362, 0x42cb, 0xc064, 0xba6b, 0xc06a, 0x49d5, 0x684a, 0x6849, 0x684b, 0x49e1, 0x49d7, 0x49dd, 0x49d2, 0x49e0, 0x49df, 0x49e3, 0x49dc, 0x6846, 0x49db, 0x684c, 0xc64c, 0x49d4, 0x6847, 0xc64a, 0x49e2, 0x6848, 0x49d6, 0x49d9, 0x49de, 0x49d8, 0x49d3, 0xc64f, 0xc653, 0x49da, 0x4ffc, 0x6c4b, 0x50a1, 0x4ffe, 0x50a3, 0x50a5, 0xcb5c, 0x6c49, 0xcb58, 0x4ffd, 0xcb54, 0x4ffb, 0xcb5e, 0x50a6, 0x50a4, 0x50a2, 0xcb56, 0x50a8, 0xcb5a, 0x50a7, 0x6c4d, 0x6c48, 0xcb5b, 0x6c4a, 0x6c4c, 0xcb5d, 0xcb5f, 0x50a9, 0x56e1, 0xd050, 0xd053, 0x56e0, 0x56df, 0xd051, 0x56e2, 0x56db, 0xd04f, 0x56dc, 0x56e4, 0x56dd, 0xd054, 0x704e, 0x56e6, 0xd04e, 0x56e5, 0x56de, 0xd056, 0x5cdd, 0x7351, 0x5cdb, 0x5ce0, 0x5cdf, 0x56e3, 0xd450, 0x7350, 0xd44e, 0x5cde, 0x5cda, 0x5ce2, 0x5ce1, 0x734f, 0xd452, 0x5cdc, 0xd44f, 0x704f, 0xd451, 0xd453, 0x7640, 0xda31, 0xd761, 0xd75e, 0x61cd, 0x65c6, 0x65c7, 0x65c8, 0x7967, 0xdc36, 0x7968, 0xdc39, 0x68ef, 0xdc3a, 0x6bd6, 0x6bd5, 0xde29, 0xdf42, 0x6dc9, 0x6dca, 0x6fa4, 0x70b5, 0xe073, 0x444d, 0x444e, 0x444f, 0x4536, 0x4645, 0x22b3, 0x4773, 0x4774, 0x4977, 0x4978, 0x4976, 0x4975, 0x4c75, 0xa848, 0x26b6, 0x4c77, 0x4c76, 0x26b7, 0x5066, 0xac2f, 0x5521, 0x2ee7, 0x34f3, 0x5969, 0x5e6c, 0x34f2, 0x5e6b, 0xc071, 0x684d, 0xc072, 0x49e4, 0x7050, 0xd057, 0x7352, 0x5ce3, 0xda34, 0x7969, 0xdc3b, 0x7b5c, 0xa13b, 0x21d3, 0xa23d, 0x4646, 0x21d4, 0x4777, 0xa350, 0x4775, 0x4776, 0x4778, 0x497a, 0x4979, 0xa55a, 0x23dc, 0x497b, 0x23dd, 0x26b8, 0xa84c, 0x26b9, 0xa84a, 0x4c78, 0x4c7a, 0x4c7c, 0x4c79, 0x4c7d, 0x4c7b, 0xa84e, 0xa84b, 0xa84d, 0x506a, 0x5067, 0x5069, 0x506b, 0x5068, 0x2ee8, 0x29f8, 0xac32, 0x2eea, 0x2ee9, 0x5527, 0x5523, 0x5524, 0x5526, 0x5528, 0x5525, 0xb057, 0x552a, 0x5529, 0xb056, 0xb055, 0x596e, 0x34f5, 0x34f4, 0x596d, 0xb541, 0x596c, 0x596b, 0x596f, 0x596a, 0xb53f, 0x3bb9, 0x3bb6, 0x5e6e, 0x3bb5, 0x3bba, 0x5e70, 0x3bb8, 0x5e6d, 0x5e6f, 0x3bb7, 0xba7e, 0x42ce, 0xc074, 0x42cf, 0x42d0, 0xc075, 0xc076, 0xc073, 0x684e, 0x6856, 0x49e5, 0x6850, 0x6854, 0x49e6, 0x6855, 0x6851, 0x6852, 0x684f, 0x6853, 0x6c50, 0x3bb4, 0x6c51, 0x6c4f, 0x6c4e, 0x56e7, 0x7051, 0x5ce4, 0x5ce5, 0xda35, 0x7831, 0x796a, 0xde2a, 0x4450, 0xa23e, 0x4779, 0xa55e, 0xa55c, 0xa55d, 0xa850, 0x506c, 0x2eeb, 0x552b, 0xb058, 0xb059, 0x5972, 0x5971, 0x5970, 0x5e71, 0x5e72, 0x3bbb, 0x6857, 0x7052, 0x4451, 0x21bc, 0x4537, 0x21d5, 0xa23f, 0x22b4, 0x477a, 0xa352, 0xa851, 0x4c7e, 0xac34, 0xbb24, 0x42d1, 0xc078, 0x4452, 0x4538, 0x22b5, 0x23de, 0x23df, 0xa55f, 0x497c, 0xac35, 0x3bbc, 0x5e73, 0x42d2, 0xd454, 0x7353, 0x4453, 0x4467, 0x4539, 0x21d6, 0x4647, 0xa354, 0x4a22, 0x4a21, 0x497d, 0x497e, 0x26ba, 0x4d22, 0x4d23, 0x26bb, 0x4d21, 0xa854, 0xa855, 0x5070, 0x29f9, 0x506f, 0x506d, 0x506e, 0x552e, 0x552c, 0xb05a, 0xb05b, 0x2eed, 0x552d, 0x2eec, 0x5522, 0x34f6, 0xb543, 0x5974, 0x5975, 0xbb26, 0xbb25, 0x5973, 0xb544, 0x6858, 0x49e7, 0x6c52, 0x6c53, 0x50aa, 0x7354, 0x61ce, 0x61cf, 0xda38, 0x7a68, 0x70b6, 0x21ab, 0x453a, 0x4454, 0x21d8, 0x21d7, 0xa355, 0x477b, 0x22b7, 0x22b8, 0x22b6, 0x22b9, 0xa35a, 0xa561, 0xa566, 0x23e7, 0x23e2, 0x23e4, 0x23e6, 0x23e3, 0x4a26, 0x23e0, 0xa562, 0x23e1, 0x4a23, 0x4a24, 0x23e5, 0x23e8, 0x4a25, 0x23e9, 0xa563, 0x26c9, 0xa85d, 0x26c3, 0x26be, 0x4d25, 0x26c6, 0x26c4, 0x26bd, 0x26ca, 0x26cd, 0x26c8, 0x26c1, 0x4d27, 0x26c7, 0x4d28, 0x26c2, 0x26c5, 0x26bc, 0x26c0, 0x26cc, 0x4d29, 0x4d2a, 0xa85e, 0x26bf, 0x26cb, 0x4d24, 0x4d26, 0xa85c, 0xa85f, 0xa857, 0xa858, 0x2aac, 0x2aa5, 0x2aab, 0x2aa4, 0x2aa6, 0x29fe, 0x29fc, 0xac3f, 0x2aad, 0x2aaa, 0x29fa, 0xac3b, 0x5072, 0x2aa8, 0x2aa9, 0x2aa7, 0x29fd, 0x29fb, 0x5071, 0x2aa3, 0x2aa1, 0xac3c, 0xac42, 0x2aa2, 0x2aae, 0xac3e, 0xac41, 0xac43, 0xac3d, 0x5533, 0xb063, 0x5532, 0xb05f, 0x2eee, 0x552f, 0x2ef0, 0xb064, 0x5534, 0x2ef1, 0xb061, 0x5537, 0xb062, 0x5535, 0x2ef2, 0x2aaf, 0x2ef4, 0xb05e, 0x5531, 0x5530, 0x2eef, 0x2ef3, 0x5536, 0x5977, 0x5976, 0xb54b, 0xb548, 0xb547, 0x34f8, 0x34fc, 0x34fe, 0x5978, 0x35a3, 0xb551, 0x597c, 0x35a5, 0xb552, 0x597e, 0xb54f, 0x597a, 0x5a24, 0xb555, 0x5a21, 0x34fa, 0x5979, 0xbb2b, 0x34f9, 0x34f7, 0x35a7, 0x34fb, 0xb546, 0x597b, 0x35a6, 0x5a22, 0x35a2, 0x35a1, 0x5a23, 0x34fd, 0x597d, 0xb54e, 0xb54a, 0x35a8, 0xb554, 0x35a4, 0x3bcb, 0x3bd2, 0x3bc7, 0x5e76, 0x3bc3, 0x3bd3, 0x3bbd, 0x3bd0, 0x3bce, 0x3bc8, 0xbb36, 0x3bd1, 0x3bca, 0xbb28, 0x3bc2, 0x3bd4, 0x3bc0, 0x3bcd, 0x3bbe, 0xbb27, 0x3bd5, 0xbb37, 0x5e77, 0xbb2a, 0x3bcf, 0x42d5, 0x3bc1, 0x5e74, 0xbb2e, 0x3bc5, 0xbb34, 0x5e75, 0x3bc4, 0x3bc9, 0xbb33, 0x3bc6, 0xbb31, 0x3bcc, 0xbb2d, 0x42d9, 0xc121, 0x42dc, 0x42d4, 0xc07c, 0x42d6, 0xc07a, 0x42db, 0x42da, 0x6369, 0x3bbf, 0x42d8, 0xc079, 0xc07d, 0x636a, 0x42d3, 0x42d7, 0x49ee, 0xc65c, 0x49f5, 0x49ec, 0xc654, 0x49f3, 0x49ea, 0x49f2, 0x49f6, 0x49e9, 0x49ed, 0x49e8, 0xc656, 0x6859, 0x49eb, 0x685a, 0x49f1, 0x49f0, 0x49ef, 0xc659, 0xc65a, 0x49f4, 0xcb65, 0xcb66, 0xcb63, 0x50ae, 0x50b0, 0x6c55, 0x50b1, 0xcb6b, 0x50ac, 0xcb67, 0x50ab, 0x50b5, 0xcb69, 0x50b3, 0x6c54, 0x50b6, 0x50ad, 0x50b2, 0x50b4, 0x50af, 0xcb6a, 0xcb68, 0xd058, 0x56eb, 0x56f0, 0x56ea, 0x56ef, 0xd05b, 0x56e8, 0x56f2, 0x56ee, 0x56f3, 0x56ed, 0x56e9, 0x56f1, 0xd05a, 0x56f4, 0x56ec, 0x5ce6, 0x7358, 0xd457, 0x7356, 0xd459, 0x7355, 0x7357, 0xd455, 0x61d0, 0xd762, 0x64be, 0x65c9, 0xda39, 0x68f0, 0x68f1, 0xdc3d, 0x796b, 0xdc3c, 0x6bd7, 0xdc3e, 0x7a69, 0x6bd8, 0xde2d, 0x6dcc, 0x7b5e, 0xdf43, 0x7b5d, 0x6dcb, 0x7c35, 0xe030, 0x6fa5, 0xa13c, 0x4455, 0x477c, 0x22ba, 0x23ea, 0x4b56, 0x5a25, 0xb557, 0xcb6c, 0x4456, 0x464a, 0x4649, 0x4648, 0x4a27, 0x5538, 0x42dd, 0x4457, 0x4458, 0x4459, 0x453b, 0xa567, 0xa860, 0x5073, 0x2ab0, 0xac45, 0xac44, 0x5e78, 0x445a, 0x21bd, 0xa163, 0x464b, 0x464c, 0x21d9, 0x477d, 0xa35c, 0xa568, 0x23eb, 0xa56b, 0x4a28, 0x23ec, 0x4d30, 0xa862, 0xa861, 0x26cf, 0x4d2e, 0x4d2d, 0x26ce, 0x4d2b, 0x26d0, 0x4d2c, 0x4d2f, 0x5074, 0xac46, 0x5076, 0x2ab4, 0x2ab1, 0x2ab2, 0x2ab3, 0x2ab5, 0x5075, 0x2ef6, 0x2ef5, 0xb066, 0x553a, 0xb069, 0x5539, 0xb068, 0xb06a, 0xb067, 0xb55b, 0x5a28, 0x35aa, 0xb559, 0x5a27, 0x5a29, 0x5a26, 0xb558, 0xb55a, 0x5e7a, 0x35a9, 0x5e7b, 0x3bd7, 0xb979, 0x5e7c, 0x3bd6, 0x5e79, 0xbb3a, 0xbb3b, 0xbb3d, 0x42e0, 0x42e2, 0x636b, 0x42e1, 0x42df, 0x42de, 0xc65d, 0x49f9, 0x685f, 0x685d, 0x685e, 0x49f7, 0x49f8, 0xcb6d, 0x685b, 0x50ba, 0x50b8, 0xcb70, 0x6c57, 0x50b9, 0x6c58, 0x6c56, 0x685c, 0x56f7, 0x56f5, 0x56f6, 0x50b7, 0x5ce8, 0x7359, 0x5ce7, 0x61d1, 0x61d2, 0x56f8, 0x65ca, 0x445b, 0x464d, 0x4821, 0x22bb, 0x477e, 0xa863, 0x4d31, 0x636c, 0xa13d, 0x453c, 0x464e, 0x5077, 0x5e7d, 0xa13e, 0x21da, 0xa247, 0x21db, 0xa248, 0x22bc, 0x4a2a, 0x23f0, 0x23ee, 0x4a2b, 0x23ed, 0x23ef, 0x23f1, 0x4a29, 0xa56e, 0xa56d, 0x4d35, 0x4d36, 0x4d33, 0xa865, 0xa867, 0x4d32, 0x2ab9, 0x4d34, 0xa868, 0x5078, 0xac48, 0x2ab8, 0x2aba, 0x2ab7, 0x2abb, 0x5079, 0x553d, 0x2ef7, 0xb06c, 0x2ef9, 0x553b, 0x2efa, 0x553c, 0x2ef8, 0xb06b, 0x2ab6, 0x35ab, 0x35ae, 0x35af, 0x35ac, 0x5a2d, 0x5a2c, 0x5a2a, 0x5a2b, 0x35ad, 0xb561, 0xb560, 0xbb3f, 0x5a2e, 0xbb40, 0xbb3e, 0x5f21, 0x5f22, 0x5f23, 0x42e3, 0x42e5, 0x42e7, 0x636e, 0x636d, 0x5e7e, 0x42e6, 0x42e4, 0x49fd, 0xc661, 0xc660, 0x49fb, 0x4aa3, 0x6860, 0x4aa4, 0x4aa1, 0x6861, 0x49fc, 0x49fa, 0x4aa2, 0x6c5a, 0x50bc, 0x49fe, 0x6c5c, 0x50bd, 0x6c5b, 0x6c5e, 0x50be, 0x6c59, 0x6c5d, 0x56fd, 0x56fb, 0x56fa, 0x56fc, 0x56f9, 0xd05c, 0x7833, 0x68f2, 0x68f3, 0xdc3f, 0x6bd9, 0x6dcd, 0x7d22, 0xa13f, 0xa361, 0x4d37, 0x4a2c, 0xa869, 0xa86b, 0x507a, 0xac4c, 0xac4b, 0xb06e, 0x445c, 0x453d, 0x464f, 0x22bd, 0xa56f, 0x4a2d, 0x23f2, 0xa86d, 0x2abc, 0x507b, 0x6862, 0x445d, 0xa164, 0xa249, 0xa362, 0x4822, 0xbb42, 0x636f, 0x445e, 0x453e, 0x453f, 0x4651, 0x4650, 0x22be, 0x4823, 0x23f3, 0xa571, 0x4a2e, 0xa86e, 0x26d2, 0x26d3, 0x26d4, 0xa870, 0x4d38, 0x4d39, 0x26d1, 0x4d3a, 0x507c, 0x2abd, 0xac4d, 0x2efc, 0x553e, 0xb06f, 0x2efb, 0xb562, 0x5a2f, 0x35b0, 0x5a30, 0x35b1, 0xb563, 0xbb47, 0xbb45, 0x5f24, 0xbb44, 0x42e8, 0xc122, 0x4aa6, 0x4aa5, 0x6863, 0x6c5f, 0x50bf, 0x7053, 0x56fe, 0x735a, 0xd763, 0x7b5f, 0x6fa7, 0xa140, 0xa141, 0xa24a, 0xa351, 0x26d5, 0xa871, 0x2abe, 0x5a31, 0x3bd8, 0x6370, 0xc123, 0xd05e, 0xd764, 0x7641, 0xe164, 0xa142, 0x4a30, 0xa572, 0x4a2f, 0x507d, 0xac50, 0x2efd, 0x5a33, 0x5d29, 0x5a34, 0x5a32, 0x5f25, 0xc124, 0x4aa7, 0x6864, 0x6c60, 0xdf45, 0x21ac, 0x22bf, 0x23f5, 0x4a31, 0x23f4, 0x4a32, 0x4d3e, 0x26d8, 0x26d7, 0x4d3d, 0x4d3b, 0x4d3c, 0x26d6, 0xa876, 0xa875, 0x5121, 0x2abf, 0x5124, 0x507e, 0x5126, 0x5122, 0x5123, 0x5125, 0xb070, 0xb072, 0x5541, 0x5540, 0x553f, 0xb071, 0x35b3, 0x5a35, 0x5a38, 0x5a36, 0x35b2, 0x5a3b, 0x5a37, 0x35b4, 0x5a3a, 0x5a39, 0x3bda, 0x3bd9, 0xbb4b, 0x5f28, 0x5f26, 0x5f27, 0x3bdb, 0x6371, 0x42ea, 0x6372, 0x42e9, 0x50c0, 0xc663, 0xc664, 0x6c62, 0x4aa8, 0x6c61, 0xcb72, 0x6865, 0x57a2, 0x57a1, 0x735b, 0x5ce9, 0x65cb, 0x68f4, 0x68f5, 0xde2f, 0x4540, 0x4652, 0xa24d, 0x21dc, 0xa24c, 0x4a34, 0x4a36, 0xa578, 0x22c2, 0x23f8, 0x23f7, 0x23f6, 0xa366, 0x22c1, 0x22c0, 0x4825, 0x4a35, 0x4a33, 0x4824, 0xa367, 0xa369, 0xa577, 0x4d3f, 0x26d9, 0xa57b, 0x4d40, 0x23fd, 0x24a1, 0x23fe, 0x26da, 0xa576, 0xa574, 0x23fa, 0xa87e, 0x4a3a, 0x4a38, 0xa57c, 0x23f9, 0x23fb, 0x24a3, 0xa622, 0x4a37, 0xa621, 0x23fc, 0x24a7, 0x4d42, 0xa57d, 0x24a4, 0x4a39, 0xa623, 0x24a2, 0x24a5, 0xa57a, 0x4d41, 0xa575, 0x4d43, 0x24a6, 0xa878, 0xa922, 0x26ee, 0x26e1, 0x26df, 0x26ed, 0x26e8, 0x512b, 0x4d44, 0x26e9, 0x26ec, 0x5127, 0x26eb, 0x4d45, 0x4d4a, 0x4d48, 0x26e2, 0x26dd, 0x26e4, 0x4d4f, 0x26ef, 0x5128, 0x26e5, 0x5129, 0x4d4b, 0x26e7, 0xac5a, 0x2ace, 0x512a, 0x26dc, 0x4d4c, 0x512c, 0x4d4d, 0x4d49, 0x4d4e, 0x26e6, 0x26db, 0x26ea, 0x4d46, 0xa877, 0xac5b, 0x26de, 0x26e3, 0x26e0, 0x4d47, 0xa87a, 0x2ac0, 0x2ac1, 0xa921, 0x2acb, 0x2fa3, 0x2acc, 0x5132, 0x2acf, 0x2ac5, 0x5131, 0x2ac7, 0x2ac8, 0xac60, 0xb079, 0x2aca, 0x512d, 0xac56, 0xb073, 0x5545, 0xac57, 0xac5d, 0x2ac6, 0x2ac2, 0x5546, 0xb07e, 0x2ad0, 0x5542, 0x2fa1, 0x2ac9, 0xac54, 0x2efe, 0x2ac4, 0x2acd, 0xac5f, 0xac61, 0x5130, 0x5543, 0x5136, 0x5544, 0x2ad1, 0x2fa2, 0x512f, 0x5548, 0x5135, 0x5134, 0x5133, 0x5547, 0x2ad2, 0x5549, 0x512e, 0x2ac3, 0xb07a, 0xb078, 0xb07b, 0xac5c, 0xb076, 0x5a3c, 0x2fa6, 0x2fa8, 0x2faa, 0x554a, 0x5550, 0x35b7, 0x2fae, 0x2fa5, 0x5a3e, 0x35b5, 0xb122, 0x554f, 0x554d, 0x2fb0, 0x35b6, 0x2fa7, 0xb125, 0x554e, 0x2fab, 0x5551, 0x2fad, 0xb568, 0xb074, 0x554c, 0x2fac, 0x2faf, 0x2fa9, 0xb127, 0x554b, 0x5a3f, 0xb571, 0x2fa4, 0x5a3d, 0xb572, 0xb123, 0xb128, 0x5a40, 0xb121, 0xb56f, 0xb126, 0x35b9, 0x35c2, 0x5f2b, 0xbb54, 0x5a42, 0x5a47, 0x5f2c, 0x35c4, 0x5a4e, 0x3bdd, 0x35ba, 0x5a46, 0x5a49, 0x5a44, 0x35b8, 0x35c6, 0x35c9, 0x3bec, 0x35c7, 0x3be1, 0x5a45, 0x5a4c, 0x5a50, 0x35c1, 0x3bdc, 0x35c5, 0x5a41, 0x3bde, 0x35c8, 0x3be0, 0x35bd, 0xb56a, 0x5f29, 0xbb56, 0x35bb, 0x35bc, 0x5a4b, 0xbb55, 0xb56e, 0x5a4a, 0x35bf, 0x5a4f, 0x35c3, 0x5a48, 0x35c0, 0xb579, 0x5a4d, 0x5f2d, 0x5f2a, 0x3bdf, 0xbb58, 0x35be, 0xbb59, 0x5a43, 0xb576, 0xbb5a, 0xbb4d, 0xb574, 0x5f32, 0x5f36, 0x3be3, 0x6377, 0x5f34, 0x3be7, 0x5f38, 0x42eb, 0x3be9, 0x6379, 0x5f30, 0x5f33, 0x3bea, 0xbb5e, 0x3beb, 0x3bf1, 0x5f3a, 0x637a, 0x3bed, 0x3bf2, 0x3be6, 0x6426, 0xbb4f, 0x637b, 0x5f39, 0x3be4, 0x3bf3, 0xbb51, 0x6425, 0x5f37, 0x6374, 0x3bf0, 0xbb5d, 0x5f3b, 0x3be8, 0x3be2, 0x5f31, 0x3be5, 0x3bee, 0xc12b, 0x6373, 0x6378, 0x5f2e, 0x3bef, 0xbb61, 0x6376, 0xbb62, 0xbb63, 0xbb50, 0x5f2f, 0x6424, 0x4aaa, 0x42f6, 0xc129, 0x42ee, 0x4aa9, 0x42f2, 0x42f4, 0xc127, 0xc12c, 0x42f1, 0xc66f, 0x6423, 0x42f0, 0x6427, 0xc66e, 0xc128, 0x4ab9, 0xc66c, 0xc12e, 0x6422, 0x6867, 0x42f7, 0x4aab, 0xc66d, 0xc12a, 0x637e, 0x42ef, 0x42f3, 0x6866, 0x6375, 0x42ec, 0x42ed, 0x6868, 0x637d, 0x6421, 0x637c, 0x42f5, 0x4aaf, 0x4ab0, 0x4ab5, 0x6c67, 0x4abc, 0xcb73, 0x686e, 0xcb7e, 0x686d, 0x4ab7, 0xcb74, 0x6c66, 0x4aac, 0x686c, 0xc671, 0x4abb, 0x686a, 0x686b, 0xcb7c, 0x4ab8, 0x50d1, 0x6c64, 0x5f35, 0xc672, 0x4aba, 0x6c6b, 0x4ab2, 0x6c65, 0xc66a, 0x6c6a, 0x4aad, 0x4ab1, 0x4aae, 0x4ab4, 0x686f, 0x6c63, 0x6869, 0xcc21, 0x50c3, 0x4ab6, 0xc668, 0x6c69, 0xc673, 0x6c6c, 0x4ab3, 0xc66b, 0x6c68, 0x50c2, 0xcc23, 0xc674, 0xcc24, 0xcb77, 0x50c7, 0x7057, 0x50c1, 0x57ae, 0x50d0, 0x6c70, 0xcb7a, 0x6c6e, 0x7055, 0x50cd, 0x50c9, 0x6c74, 0xcb76, 0x57a5, 0xd068, 0xcc28, 0xd067, 0x6c72, 0x50c8, 0xcc29, 0x57a3, 0xcc25, 0x50cc, 0x50cf, 0x50c6, 0xcb79, 0x6c73, 0xcb75, 0x6c6d, 0x57a4, 0x7056, 0x50ce, 0x6c6f, 0x6c71, 0x50cb, 0x6c75, 0x50ca, 0x50c5, 0x50c4, 0x7054, 0x50d2, 0x57a7, 0x5ceb, 0x7059, 0xd061, 0x57ad, 0xd063, 0x57ab, 0xd06a, 0x5cec, 0xd064, 0x705a, 0x57ac, 0xd066, 0x57a9, 0x735d, 0x5cea, 0xd06c, 0x57a6, 0x57a8, 0x735e, 0x705c, 0x735c, 0x705b, 0x7360, 0x57aa, 0x7058, 0xd062, 0xd065, 0xd06b, 0x61db, 0x61d3, 0xd461, 0xd45f, 0xd45c, 0xd45e, 0xd45d, 0x5cf2, 0x61d4, 0x5cee, 0xd45b, 0x7642, 0x5cf0, 0x5cef, 0x735f, 0x5ced, 0x5cf1, 0x61dc, 0x61d8, 0x61da, 0x61d5, 0x61d6, 0x61d9, 0x61d7, 0x7834, 0xd765, 0x7837, 0x7836, 0x7835, 0x796c, 0x68f6, 0x796d, 0x65cc, 0x7a6a, 0x6bda, 0x7a6b, 0x7b60, 0x7c36, 0x6fa8, 0xdf46, 0x6fa9, 0x6faa, 0xe13e, 0x72aa, 0x4541, 0x21dd, 0x4653, 0x4827, 0x4828, 0x4826, 0xa36b, 0x4829, 0x4a3c, 0x4a3b, 0xa625, 0x26f0, 0x4d51, 0x4d50, 0xac63, 0x2fb1, 0x5a51, 0x5a52, 0xbb64, 0x5f3c, 0x42f8, 0x6428, 0x6429, 0x42fa, 0x42fc, 0x42fb, 0x4abe, 0xc676, 0x4abd, 0x6870, 0x4abf, 0xc675, 0x50d3, 0x6c76, 0xcc2c, 0x705d, 0xd06d, 0x7361, 0x7643, 0x7362, 0xdf48, 0x4542, 0xa165, 0xa166, 0xa24e, 0x24a8, 0xa628, 0xa629, 0x26f1, 0x4d53, 0x4d52, 0x4d54, 0x5137, 0x2ad3, 0x2ad4, 0xb129, 0x2fb2, 0x5552, 0x5a53, 0x5f3d, 0x3bf4, 0x4543, 0x445f, 0x4544, 0xa250, 0x21de, 0x4657, 0x4656, 0x4654, 0x4655, 0xa36f, 0x482c, 0x22c9, 0x22cb, 0x482b, 0x22c3, 0xa36c, 0x22c4, 0xa36d, 0x22ca, 0x22c6, 0x22c8, 0x482a, 0x22c5, 0x22cc, 0x22c7, 0xa36e, 0x4a43, 0x4a4c, 0x4a4a, 0x24b2, 0x24af, 0x24b7, 0x4a48, 0x24b8, 0xa639, 0x4a41, 0x24b5, 0xa62e, 0x4a47, 0x24b1, 0x24b0, 0x4a45, 0x24b6, 0x4a46, 0x4d55, 0x4a40, 0x24b3, 0xa62a, 0x24a9, 0x4a3d, 0xa637, 0x4a50, 0x24ae, 0x24b4, 0x4a42, 0x4a44, 0xa62f, 0x24aa, 0xa636, 0x24ab, 0x24ac, 0x4a4f, 0x4a49, 0x4a4e, 0x24ad, 0x4a4d, 0x4a3f, 0x4a3e, 0x4a4b, 0xa635, 0xa633, 0xa634, 0xa638, 0xa631, 0xa632, 0xa931, 0xa92a, 0x4d63, 0x26fd, 0x26f6, 0x4d5e, 0x4d71, 0x26f2, 0x26f9, 0x26fb, 0x26fe, 0x4d6c, 0xa926, 0x26fa, 0x26f3, 0x4d6a, 0x26f7, 0xa928, 0x27a1, 0x4d5b, 0xa925, 0x26fc, 0x4d65, 0x4d64, 0x26f5, 0x4d59, 0xa934, 0xa932, 0x4d5a, 0x4d58, 0xa933, 0x4d70, 0x4d68, 0x4d62, 0x4d56, 0x26f8, 0x4d61, 0x4d57, 0x4d69, 0x4d72, 0x2ad5, 0x4d66, 0x26f4, 0x4d5c, 0x4d5f, 0x4d60, 0xa92e, 0x4d6e, 0x4d6f, 0x4d6d, 0x4d67, 0x4d6b, 0x4d5d, 0x5138, 0xa930, 0xa937, 0xa935, 0xa936, 0xa92f, 0xa929, 0xac6d, 0x2adb, 0x5144, 0x513c, 0x513e, 0x5143, 0x2ae7, 0x5141, 0x2fb3, 0x5553, 0x5146, 0x2ad8, 0x2ae0, 0x5142, 0x2adf, 0x2adc, 0x2ae4, 0x2ae6, 0x513b, 0x513f, 0x5145, 0x5555, 0x2ae1, 0x513d, 0x5148, 0x2ada, 0xac6f, 0xac70, 0x5140, 0x5554, 0x513a, 0x2ad7, 0x2ade, 0x2ad6, 0x2ad9, 0x2add, 0x2fb4, 0x5147, 0x2ae2, 0x2ae3, 0x2ae5, 0x5139, 0xac6c, 0xb132, 0xb133, 0xac6b, 0xac6e, 0x5563, 0x2fc0, 0x5561, 0x5562, 0x2fb6, 0x2fc6, 0xb12c, 0x5558, 0xb12f, 0xb135, 0x35ca, 0x2fc8, 0x2fc2, 0xb138, 0x2fb9, 0xb137, 0x2fcb, 0x2fbc, 0x555e, 0x35e1, 0x2fbf, 0x5560, 0x5557, 0xb13c, 0x2fcd, 0x2fc1, 0x555a, 0x2fba, 0x2fb7, 0x2fb8, 0x555b, 0x2fc7, 0x2fce, 0x555d, 0x2fbe, 0x2fbd, 0x5565, 0x5564, 0x5556, 0x555c, 0x555f, 0x2fca, 0xb12e, 0xb139, 0x2fc4, 0x5559, 0x2fb5, 0x2fcc, 0x2fc3, 0x2fc5, 0x2fc9, 0xb130, 0xb13b, 0xb136, 0x35cb, 0xb631, 0x5a5b, 0x5a6f, 0x5a6e, 0xb627, 0x5a63, 0xb629, 0x35dd, 0x35d9, 0x35d6, 0x35e8, 0x5a5e, 0x5a56, 0xb626, 0xb632, 0x35db, 0x5f4d, 0x5a5a, 0x35e3, 0xb622, 0x5a70, 0x5a6d, 0x35df, 0x35ce, 0xb57c, 0xb62b, 0x5a6c, 0x35e5, 0x35cd, 0x5a61, 0x5a65, 0x35e4, 0xb623, 0x35d7, 0x5a66, 0x5a60, 0x35cc, 0xb57d, 0x5f3f, 0x35e7, 0x35d5, 0x5a6b, 0x35d8, 0x35e6, 0x5a6a, 0xb624, 0x3bf5, 0x5a57, 0x35d3, 0x5a5c, 0x5a67, 0x5a62, 0x35dc, 0x35d2, 0x35d0, 0x35e2, 0x5a54, 0x5a68, 0x5a58, 0x5f3e, 0x35e0, 0x5a59, 0x5a55, 0x5a64, 0x5a5f, 0x5a5d, 0x35d4, 0x5a69, 0x35d1, 0x35de, 0x35da, 0x3bf7, 0x3bf6, 0xb62d, 0xb62e, 0x35cf, 0x3ca9, 0xbb71, 0x5f41, 0xbb70, 0x3caf, 0x3bfc, 0x3cac, 0x42fd, 0x5f44, 0x3cb0, 0x3cb3, 0x5f43, 0x3ca1, 0x3cb2, 0x3cb1, 0x5f45, 0x3bf8, 0x5f40, 0x5f48, 0xbb73, 0x5f46, 0x3cae, 0x3ca4, 0x5f4a, 0x3cb5, 0x3cad, 0x3cb6, 0x5f52, 0x5f50, 0x3cab, 0x3caa, 0xbb67, 0x3ca8, 0x3ca2, 0x5f49, 0xbb66, 0x5f47, 0x2fbb, 0x3bf9, 0xbb68, 0x43bd, 0x3bfa, 0x5f42, 0x5f4f, 0x43a1, 0x5f4b, 0x5f4c, 0x3bfb, 0x3cb4, 0x42fe, 0x3ca5, 0x3bfe, 0x5f4e, 0x3ca6, 0x3ca3, 0xbb72, 0xbb6d, 0x5f53, 0xbb6f, 0x6438, 0xc149, 0xc132, 0x43a4, 0x43b7, 0x43bc, 0x43b0, 0x6434, 0x43c1, 0x6431, 0x43a2, 0xc13a, 0x43a3, 0x642a, 0x6433, 0x43aa, 0x6436, 0x6437, 0x43ab, 0xc138, 0x43b8, 0x43be, 0x6432, 0xc13e, 0x642c, 0x43a9, 0x43a5, 0x43c0, 0x43ae, 0x43af, 0x43a6, 0x43ba, 0x43b1, 0x43bb, 0x43b3, 0xc13d, 0x642d, 0x4ac0, 0x6430, 0x642e, 0x43bf, 0x43b6, 0x43b2, 0xc136, 0xc133, 0x43a7, 0x687a, 0x43b5, 0x6435, 0x43ad, 0xc134, 0x43ac, 0xc148, 0xc725, 0xc142, 0x642f, 0x642b, 0x4ad5, 0x43b9, 0x43b4, 0x43a8, 0xc144, 0xc145, 0x4ad0, 0xc678, 0x4ac1, 0x4acc, 0xc728, 0x4ad3, 0x6878, 0x5f51, 0x4ad1, 0x6873, 0xc67e, 0xc724, 0xc67a, 0x6872, 0x4ad8, 0x4ac2, 0x4acf, 0x4ac3, 0x4ace, 0x6876, 0x4ad2, 0x3ca7, 0xc721, 0xc72a, 0x4ad9, 0x4aca, 0x6879, 0x50e1, 0x6c77, 0xc723, 0x4ad7, 0x4ad6, 0x687b, 0x50d4, 0x6c78, 0x50d5, 0xc722, 0x4ac6, 0x4ac7, 0x4ac4, 0x4ac9, 0x4ac5, 0x4ada, 0x6875, 0x6c79, 0x6877, 0x687c, 0xc67b, 0x4ac8, 0xc729, 0x4ad4, 0xcc2d, 0xc726, 0x4acd, 0xcc35, 0x50d8, 0xcc38, 0x6871, 0x6c7c, 0x57b5, 0x50dd, 0x50dc, 0x50de, 0xcc30, 0xcc2f, 0x50db, 0x6c7d, 0xcc3b, 0x6d25, 0x6d22, 0xcc31, 0x6d23, 0x50d6, 0x50d9, 0x50e3, 0x6d2b, 0x6d29, 0xcc2e, 0x50da, 0x3bfd, 0x6c7a, 0x50e0, 0x50d7, 0xcc3e, 0x6d2c, 0x50df, 0x6874, 0x6d21, 0x4acb, 0xcc3f, 0xcc34, 0x6d24, 0xcc3d, 0x6d28, 0x6d2a, 0x6d27, 0x6d26, 0xcc3a, 0x6c7e, 0x50e2, 0x6c7b, 0x6d2d, 0xcc39, 0xcc37, 0x7061, 0x7062, 0x57b4, 0x706b, 0x7068, 0xd070, 0x705f, 0x7066, 0x57b6, 0x7064, 0x705e, 0xcc32, 0x7065, 0xd077, 0x57b3, 0x7364, 0x7060, 0x7067, 0x7363, 0x57b2, 0x57b1, 0xd076, 0x7069, 0xd06f, 0x706a, 0xd079, 0x57b0, 0x57af, 0x7365, 0x57b9, 0x7063, 0x57b7, 0xd075, 0xd464, 0x7366, 0xd467, 0x736b, 0x5cf5, 0x5cf7, 0xd76b, 0x7368, 0xd76d, 0x5cf8, 0x5cf4, 0xd76c, 0x5cf6, 0x7369, 0x736c, 0xd469, 0x5cf3, 0x7367, 0x736a, 0x7645, 0x57b8, 0x7644, 0xd76a, 0x764a, 0x61e0, 0xd770, 0x7648, 0x7649, 0x61e3, 0x61df, 0x7646, 0x61dd, 0x7838, 0x61e1, 0x61e2, 0x61de, 0xd76e, 0x7647, 0x65cd, 0xda3b, 0x65d0, 0xda3c, 0xda3a, 0x65d1, 0x65cf, 0x65d2, 0x7839, 0x65ce, 0xde31, 0x68fa, 0x796f, 0x68f9, 0x68f8, 0x68f7, 0x796e, 0x7970, 0x6bdb, 0x7a6d, 0x7a6c, 0xdf4a, 0xdf4b, 0x6dcf, 0x6dce, 0x6dd1, 0x7c37, 0x7b61, 0x6fac, 0x6dd0, 0xdf49, 0xe032, 0x6fab, 0x7c39, 0x7c38, 0x7c5f, 0x70b7, 0x70fd, 0x4545, 0xac72, 0x3cb7, 0x57ba, 0xa167, 0xa168, 0x482d, 0x22cd, 0x4a53, 0x4a51, 0x4a52, 0x27a2, 0x4d73, 0x5149, 0xac74, 0x2ae8, 0xac76, 0x2ae9, 0xac73, 0x514a, 0x2fd0, 0x5566, 0x5567, 0x2fcf, 0xb13d, 0xb637, 0xb636, 0x5a77, 0x5a73, 0x35e9, 0x5a7a, 0x5a79, 0x5a72, 0x5a75, 0x5a78, 0x5a74, 0xb634, 0x3cbb, 0x5a71, 0x5f54, 0xbb74, 0xbb75, 0xbb76, 0x5f56, 0x5f57, 0x3cba, 0x3cbd, 0x5f55, 0x3cb8, 0x3cbc, 0x3cb9, 0xc14b, 0x6439, 0xc14e, 0x43c2, 0xc14d, 0xc730, 0x687d, 0x4adb, 0x706c, 0x6d2e, 0x50e4, 0x6d2f, 0x6d30, 0x50e6, 0x50e5, 0x50e7, 0x57bc, 0x57bb, 0x5cfa, 0x5cf9, 0x736d, 0x736e, 0x65d3, 0xdc41, 0x4546, 0xa558, 0xa939, 0xb140, 0x3cbe, 0xb638, 0xb639, 0x5f59, 0x5f58, 0x43c3, 0x61e4, 0x7a6e, 0x6fad, 0x4547, 0x5568, 0xb142, 0x5a7c, 0x5a7b, 0x3cbf, 0x3cc0, 0x643a, 0x4adc, 0x687e, 0x57bd, 0x4548, 0x4658, 0xa93b, 0x4d74, 0x27a3, 0x2aea, 0x514b, 0x5a7d, 0xb63a, 0x3cc1, 0x5f5a, 0x643b, 0x50e8, 0x50e9, 0xd46b, 0x5cfb, 0x764b, 0x70fe, 0x4549, 0xa93c, 0x27a4, 0x4d75, 0x514c, 0xac77, 0x2aeb, 0x5569, 0x2fd4, 0x2fd2, 0x2fd3, 0x556a, 0x2fd1, 0xb63c, 0xb63f, 0xb63d, 0x5b21, 0x5b22, 0x35ea, 0x5b23, 0x5a7e, 0x3cc2, 0xbb79, 0x3cc3, 0x43c4, 0x6922, 0x6921, 0x5cfc, 0x61e5, 0xda3f, 0x65d5, 0x65d4, 0x68fb, 0xa169, 0x21be, 0x514d, 0xb641, 0xc150, 0x454a, 0x4659, 0xa251, 0x482f, 0x482e, 0xa373, 0xa372, 0x4830, 0x4831, 0x22cf, 0x22ce, 0x24b9, 0x4a54, 0x24bc, 0x24bb, 0x24ba, 0x24bd, 0xa63d, 0x4d76, 0x27aa, 0x27a6, 0x27af, 0xa943, 0xa93e, 0x4d7d, 0xa942, 0x4d7b, 0x27ab, 0x27a7, 0x27ae, 0x4d7a, 0x4e23, 0x27a9, 0x27a5, 0x4e22, 0x27ac, 0x4d79, 0x27ad, 0x4d7c, 0x4d7e, 0x27b1, 0x27b0, 0x27a8, 0x4d78, 0x4d77, 0x4e21, 0xa940, 0xa941, 0xac7e, 0xac7a, 0x2af0, 0x2af6, 0xad23, 0x5153, 0x5150, 0x2aed, 0x2af2, 0xac7c, 0x5156, 0x514e, 0x2af1, 0x5151, 0x5154, 0xac79, 0x2af4, 0xac7d, 0x514f, 0x2af9, 0x5152, 0xad21, 0x5155, 0x2aee, 0x2af3, 0x2af7, 0x2aef, 0x2aec, 0xad24, 0xad25, 0x2af8, 0x2af5, 0xad22, 0xac37, 0xb146, 0x5572, 0x556b, 0x556e, 0xb14c, 0x5571, 0xb144, 0x2fd7, 0xb149, 0x556c, 0x2fd5, 0xb148, 0x5570, 0xb14d, 0xb145, 0x556d, 0xb143, 0x2fd8, 0x556f, 0xb642, 0x35ee, 0x5b25, 0x35ed, 0x35ef, 0x5b24, 0x5b29, 0x2fd6, 0xb14b, 0x35ec, 0x35f0, 0xb644, 0x5b26, 0x35eb, 0x5b28, 0xb645, 0x5b27, 0xbc26, 0x3cca, 0xbb7d, 0x3cc5, 0xbc25, 0x5f5b, 0x5f5f, 0x5f5c, 0x3cc8, 0x3ccb, 0xbc23, 0x5f5d, 0x5f5e, 0x5f63, 0x43cd, 0x3cc9, 0x5f61, 0x3cc6, 0x3cc4, 0xbb7c, 0x5f62, 0xbb7e, 0x3cc7, 0xbc24, 0x6441, 0x43c5, 0x643e, 0x643f, 0x643d, 0x43ca, 0x43c9, 0x43c6, 0x6443, 0xc15b, 0xc156, 0x43c8, 0x5f60, 0xc159, 0xc151, 0x43cc, 0x43c7, 0x6440, 0x643c, 0x6442, 0x43cb, 0xc734, 0xc735, 0x6925, 0x4adf, 0x4ade, 0x4add, 0x6923, 0xc739, 0xc733, 0xc737, 0x6924, 0x50ec, 0x50ef, 0x6d32, 0xcc44, 0xcc46, 0x6d31, 0x50f0, 0x50eb, 0x6d34, 0x50ed, 0xcc41, 0x6d33, 0x50ea, 0xcc40, 0x50ee, 0x7072, 0x706f, 0x57c6, 0x57c5, 0xcc43, 0x57c4, 0x57bf, 0xd07d, 0x57c0, 0xd123, 0xd07a, 0x7070, 0xd07e, 0x706d, 0x7071, 0x57be, 0x706e, 0x57c1, 0x57c2, 0x57c7, 0xd122, 0xd471, 0x57c3, 0xd46f, 0xd470, 0x5cfd, 0xd46c, 0xd46d, 0x7370, 0xd472, 0x61e8, 0x736f, 0x61e6, 0x61e7, 0x764c, 0x783b, 0x65d6, 0xda43, 0x783a, 0xda42, 0x68fd, 0x68fe, 0xdc42, 0x7971, 0xdc43, 0x68fc, 0x7a6f, 0x6fae, 0x7c3a, 0x70b8, 0x70b9, 0xe13f, 0x454b, 0x4832, 0x4833, 0x4a55, 0xa641, 0x27b2, 0x5157, 0x5573, 0x5b2a, 0x5937, 0x5f64, 0x5f65, 0x5e32, 0x3ccc, 0x6444, 0x4ae1, 0x4ae0, 0xd124, 0x454c, 0x4834, 0x27b3, 0x4e25, 0xa945, 0x4e24, 0xad27, 0x2afa, 0x2afb, 0x2fd9, 0x2fda, 0x5574, 0x5575, 0xb648, 0x5576, 0x35f1, 0xb647, 0xb646, 0x5b2c, 0x5f67, 0xbc29, 0x5f66, 0x43ce, 0x46c1, 0x4ae2, 0x57c8, 0xd126, 0x764d, 0x7972, 0x454d, 0x465c, 0x465d, 0x465b, 0x465e, 0x465a, 0xa252, 0x4837, 0xa377, 0x22d7, 0x4836, 0x4838, 0xa378, 0xa375, 0x22d2, 0x22d1, 0x22d4, 0x22d3, 0x22d6, 0x4835, 0x22d0, 0x22d5, 0xa648, 0x24be, 0x4a5f, 0x24bf, 0x24c3, 0x4a5e, 0xa649, 0x24c7, 0x24c2, 0x24c5, 0x4a57, 0x4a58, 0x4a59, 0x4a5a, 0xa645, 0x4a61, 0xa644, 0x24c1, 0x4a5c, 0x4a62, 0xa647, 0x24c0, 0x24c6, 0xa642, 0x4a5b, 0x24c4, 0x4a5d, 0x4a56, 0x4a60, 0xa64a, 0x4e3a, 0xa947, 0x27b5, 0x4e26, 0x4e30, 0x4e31, 0x4e29, 0x4e3b, 0x4e2b, 0x27bd, 0x4e36, 0x27b8, 0x4e2c, 0x27c7, 0x27c8, 0x27c0, 0x27b9, 0x4e39, 0x27c5, 0x4e34, 0x4e32, 0xa952, 0x27c6, 0xa949, 0x27c4, 0x27bc, 0x27b4, 0x27bb, 0x4e2d, 0x4e33, 0xa94a, 0x4e27, 0x27bf, 0x27be, 0x27b6, 0xa94f, 0x4e35, 0x27c2, 0x27b7, 0x4e38, 0x27c9, 0x4e28, 0xa948, 0x4e2f, 0x27ba, 0x27c3, 0x4e37, 0x4e2a, 0x4e2e, 0x27c1, 0xa94e, 0xa94c, 0x2bbd, 0x515f, 0x516c, 0xad36, 0x2bb8, 0x2bae, 0x5165, 0x2bac, 0x515e, 0x2ba7, 0x5168, 0x2bb4, 0x2ba1, 0x2ba3, 0xad2e, 0xad30, 0x2ba6, 0x2afc, 0x2bb3, 0x2bc3, 0x5163, 0x2ba8, 0x2bba, 0xad2d, 0x2afe, 0x2bc1, 0x2bc2, 0x2bc5, 0x2bbc, 0x2bad, 0x2bb5, 0x5169, 0x515c, 0x5164, 0x5170, 0x5159, 0x515b, 0xad31, 0xad2b, 0xad3a, 0x2ba5, 0x516d, 0x5166, 0x2bbf, 0x2ba2, 0x516f, 0x516a, 0x2bab, 0x516e, 0x2bb2, 0x2baa, 0x5167, 0x2bbe, 0x2bb6, 0xad2a, 0x5161, 0x2bc4, 0x2ba9, 0x515d, 0x2bbb, 0x2bb1, 0x5162, 0x2bb7, 0x515a, 0x2afd, 0x516b, 0x5627, 0x5160, 0x2bb0, 0x2baf, 0x2ba4, 0xa951, 0x2bc0, 0xad34, 0x2bb9, 0xad32, 0x5158, 0xad39, 0xad37, 0xad38, 0x2fee, 0x562e, 0x2fef, 0xb15d, 0x2fe3, 0x5623, 0x562f, 0xb157, 0x2fdc, 0xb153, 0x2fe5, 0x2fed, 0xb15b, 0x2fdb, 0x2ff6, 0x5577, 0xb15e, 0xb164, 0xb150, 0x2ff5, 0x2ff0, 0xb15f, 0x2ff1, 0x5621, 0x562c, 0x2fe7, 0xb156, 0x2fe8, 0x2ff2, 0x2fe9, 0xb163, 0x2fe4, 0x2fde, 0x2fdf, 0x2fec, 0x2fe6, 0xb154, 0xb14f, 0x5578, 0x557c, 0x2ff4, 0x2fe0, 0x562a, 0x5626, 0xb15a, 0x5629, 0x5630, 0x557d, 0x562b, 0x2feb, 0x562d, 0x557a, 0xb159, 0x5579, 0x2fdd, 0x2fe1, 0x5624, 0x2ff3, 0x2fea, 0x2fe2, 0x5628, 0x5625, 0xad2f, 0x557b, 0x557e, 0xb162, 0xb158, 0xb161, 0xb160, 0x36a8, 0xb655, 0x35f6, 0x35f7, 0x35fb, 0xb660, 0x36ac, 0x36a9, 0xb64e, 0x36a2, 0x36a1, 0x5b33, 0x36a5, 0x36b4, 0x35f2, 0xb65b, 0x36b5, 0x36a7, 0x36b9, 0x36ad, 0x5b32, 0x36ab, 0x5b2d, 0x5b42, 0x5b38, 0xb657, 0x5b3c, 0x5b3b, 0x35f3, 0x36b2, 0x36b8, 0x36b0, 0x36b7, 0xb651, 0x36a4, 0x35f4, 0x36b6, 0x36a6, 0x5b30, 0x5b3d, 0xb65a, 0x36af, 0x5b36, 0xb64d, 0xb65c, 0xb650, 0x36ae, 0x35f5, 0x5b3e, 0xb64b, 0x5b40, 0x36b1, 0x5b41, 0x5b2f, 0x35fc, 0x36b3, 0xb654, 0xb478, 0x5b35, 0x5b3f, 0x35fe, 0x36aa, 0x35f9, 0x35fd, 0x5b3a, 0x35f8, 0x5b2e, 0x5b37, 0x5b34, 0x36a3, 0x5622, 0x3ce3, 0x5b31, 0xb64c, 0xb652, 0xb65e, 0xb65f, 0xb656, 0xbc45, 0x5b39, 0xbc41, 0x3ce6, 0x3cfc, 0x3cf1, 0x5f7b, 0xbc38, 0x5f76, 0x3ce0, 0x5f77, 0x3cf0, 0xbc3e, 0x3ce9, 0x3cf6, 0x5f73, 0x3cce, 0x3cf8, 0x5f69, 0x3cd6, 0x5f6c, 0x5f6b, 0x5f7c, 0xb653, 0x3cd0, 0x3cf2, 0x3cf3, 0x5f6e, 0x5f6a, 0x3cde, 0xbc3d, 0x5f75, 0x3cd9, 0xbc32, 0x3cf4, 0x5f71, 0x3cec, 0x3cf9, 0x3cd3, 0x3cd8, 0x3cd2, 0xbc2a, 0x5f70, 0x3ce5, 0x43e4, 0x3cd4, 0x5f74, 0x3cdd, 0x3cf5, 0x5f6f, 0x3cda, 0x3cd7, 0x3ce8, 0x5f72, 0x5f68, 0x5f7e, 0x3ceb, 0x3cea, 0xbc31, 0xbc42, 0xbc39, 0xbc3b, 0xbc34, 0xbc2f, 0x3ccf, 0x5f6d, 0x3cf7, 0x3cdf, 0x3ce1, 0xbc37, 0x3cee, 0x3ced, 0x3ccd, 0x5f78, 0x5f7a, 0x3cd5, 0x3cdc, 0x3ce4, 0x5f79, 0x3cdb, 0x3ce7, 0x3cfa, 0x3cef, 0xbc3c, 0xbc44, 0xbc33, 0x3cfb, 0x3cd1, 0xbc40, 0x43f8, 0x644c, 0xc165, 0x43f6, 0x43e1, 0x43e6, 0x43df, 0xc177, 0x43f2, 0x43d1, 0x43d8, 0x43f0, 0x43fa, 0x43e2, 0xc168, 0x43d5, 0x43e8, 0x43ed, 0x43d9, 0xc16b, 0x43ea, 0x43d6, 0xc15d, 0xc175, 0x43dd, 0x43de, 0x644e, 0x43f1, 0x43ef, 0xc173, 0x43d2, 0x43f4, 0xc174, 0x43f5, 0x43f7, 0x6452, 0x644a, 0xc16f, 0x35fa, 0x43da, 0x43ec, 0x43db, 0x6447, 0x6457, 0x43f3, 0x6455, 0x6451, 0x43d0, 0x6449, 0xc179, 0x43d3, 0x6456, 0xc178, 0x43e3, 0x43cf, 0xc176, 0x644f, 0x43e7, 0x43d7, 0x6450, 0x43e0, 0x6446, 0x5f7d, 0x43e9, 0x3ce2, 0x43d4, 0xc16d, 0x43ee, 0x644b, 0x43eb, 0x6448, 0x43e5, 0x6453, 0x43dc, 0x43f9, 0xc16a, 0xc17b, 0x644d, 0x45ac, 0xc172, 0x6454, 0x4af0, 0x4aee, 0xc73a, 0x4ba6, 0x4aec, 0xc73d, 0x4afe, 0x6445, 0x6928, 0x4ae8, 0x4ba5, 0xc751, 0x4aed, 0x4afb, 0x692d, 0x6926, 0xc74e, 0x4ba3, 0xc746, 0x4ae6, 0x4ba2, 0xc747, 0x6938, 0x4af7, 0x4ba9, 0x6936, 0x4aef, 0x6927, 0x4af1, 0x4ba1, 0x6930, 0x4aea, 0x6934, 0x692a, 0x4af3, 0x4ae9, 0x4ae3, 0xc73e, 0x4afd, 0x6931, 0x4ba8, 0x4ae4, 0x692e, 0x4af9, 0x692f, 0x4aeb, 0x4af6, 0x4af2, 0x4af4, 0xc743, 0x6929, 0x4ba7, 0x6937, 0x4af5, 0xc73b, 0x4baa, 0xc73c, 0x4ae5, 0x4afa, 0x692c, 0x6935, 0x6933, 0x4ae7, 0x4afc, 0x6932, 0xc745, 0xc748, 0x692b, 0x4af8, 0xc74d, 0xc744, 0xcc54, 0x4ba4, 0xc74c, 0x50fc, 0xc742, 0x50f8, 0x50f4, 0x51aa, 0x51a7, 0x6d37, 0xcc64, 0xcc60, 0x51ae, 0x50fb, 0x6d42, 0x51a4, 0xcc4f, 0xcc51, 0x50f7, 0x51a3, 0x6d3f, 0x51b7, 0x51b4, 0x51a6, 0x50f5, 0xcc5f, 0xcc57, 0x51ab, 0x51ad, 0x6d3b, 0x51a1, 0x50fa, 0x50f1, 0x6d38, 0x6d40, 0x51b0, 0x6d41, 0x50f2, 0x51b6, 0x51a9, 0x51af, 0x6d3e, 0xcc4d, 0xcc50, 0x51ac, 0xcc47, 0x51b3, 0xcc5b, 0x6d43, 0xcc56, 0x6d3d, 0x51a5, 0x50f6, 0x51b8, 0x50f3, 0x51b1, 0x6d3a, 0xcc4a, 0x50fd, 0xcc49, 0x50fe, 0x6d39, 0x6d36, 0x50f9, 0x6d3c, 0xcc52, 0x6d35, 0xcc62, 0x51b2, 0x51b5, 0x51a2, 0x57d5, 0xcc5e, 0xcc59, 0xcc61, 0x57cd, 0xd12c, 0x57c9, 0x7121, 0xd13c, 0xd138, 0x7074, 0x7079, 0x7075, 0x57d7, 0x57e2, 0x7073, 0x57cf, 0x57d8, 0x51a8, 0x57d9, 0xd128, 0xd12b, 0x707a, 0xd140, 0x57e8, 0x707e, 0x7123, 0x57cb, 0xd13b, 0x707d, 0xd131, 0x57e6, 0x57e7, 0x57dd, 0x57dc, 0x57d4, 0xd129, 0xd13e, 0x57de, 0x57e5, 0x57e4, 0xd12f, 0x7078, 0x7076, 0x57d6, 0x57d3, 0xd144, 0x57d0, 0x57e3, 0x7122, 0x57e1, 0x707c, 0x707b, 0xd127, 0x57db, 0x57ca, 0x57cc, 0x57ce, 0x57e0, 0x57da, 0x7077, 0xd12e, 0x57d1, 0xd132, 0x57df, 0xd141, 0xd13a, 0x57d2, 0xd475, 0x7378, 0x5db1, 0x7371, 0x5da2, 0xd47b, 0x5dad, 0x7373, 0x5db4, 0xd521, 0x5da9, 0xd47c, 0x5da4, 0xd476, 0x5db5, 0x5cfe, 0x5dab, 0xd527, 0x737a, 0x5db0, 0x5db6, 0x5daa, 0x7372, 0x5dac, 0x5da1, 0x7379, 0xd523, 0xd47a, 0x5db3, 0x5da6, 0x7375, 0xd524, 0x5da8, 0x5da5, 0x737b, 0x5da7, 0x7374, 0x7377, 0x5daf, 0x5da3, 0x5db2, 0xd478, 0x5dae, 0xd529, 0xd774, 0x764f, 0x61f3, 0x7654, 0x7655, 0xd777, 0xd821, 0xd776, 0x764e, 0x61f2, 0xd778, 0x61ef, 0x61f0, 0x7652, 0x61ea, 0x61ee, 0x7651, 0xd77e, 0x61eb, 0xd779, 0xd823, 0xd77d, 0xd77a, 0x7653, 0x7650, 0xd822, 0x61e9, 0x61ed, 0x61f1, 0xd77b, 0x65dc, 0x65d9, 0x65e2, 0xda44, 0x65e1, 0x65df, 0x65da, 0xda4f, 0x783f, 0xda45, 0xda4e, 0xda47, 0xda4d, 0x65db, 0x783e, 0x7376, 0x65de, 0x783d, 0x65e3, 0x65dd, 0x65d8, 0x61ec, 0xda48, 0xda46, 0x783c, 0x65d7, 0x69a4, 0xdc49, 0x69a3, 0x65e0, 0x7973, 0xd775, 0x69a7, 0x69a8, 0x69a2, 0x69a6, 0x69a1, 0xdc47, 0x6bdf, 0x69a5, 0x7a72, 0x7a70, 0x6bdd, 0xde35, 0xde34, 0xde33, 0x6be0, 0xde37, 0x6bdc, 0x6bde, 0x7a71, 0xdf4f, 0xdf4e, 0x6dd3, 0x6dd4, 0x7b62, 0x6dd2, 0x6fb1, 0x7c3b, 0x6faf, 0x6fb0, 0x70ba, 0xe074, 0x7d23, 0x71a3, 0x71a1, 0x71a2, 0x71a4, 0xe140, 0xe165, 0xe141, 0x72ab, 0x454e, 0x4839, 0xa379, 0x4e3c, 0x27ca, 0xa953, 0xa954, 0x2bc6, 0xad3c, 0xb166, 0x2ff7, 0x2ff9, 0xb165, 0x2ff8, 0xb167, 0x2ffa, 0x5b43, 0x36bb, 0x2ffb, 0xb662, 0x36ba, 0x36bc, 0x36bd, 0x3cfd, 0x6022, 0x3cfe, 0x3da2, 0x6023, 0x6021, 0x3da1, 0xc17d, 0x44a2, 0x43fe, 0x43fd, 0xc17c, 0x43fc, 0x43fb, 0x6458, 0x44a1, 0x6939, 0x4bab, 0x4bad, 0x693a, 0x4bac, 0x6d45, 0xcc66, 0x6d44, 0x51b9, 0xcc65, 0xcc67, 0x57ea, 0x57e9, 0x57eb, 0xd146, 0xd145, 0x7124, 0x5db7, 0x737c, 0xd52b, 0x61f4, 0x7656, 0x65e4, 0x7b63, 0x454f, 0x465f, 0x483a, 0x4a63, 0x4e3d, 0x4e3e, 0xa955, 0xa956, 0x5171, 0xad3d, 0xb168, 0x2ffc, 0xbc49, 0xbc47, 0xc17e, 0x6459, 0xc221, 0xc753, 0x52d9, 0x7125, 0x7657, 0x4550, 0xa253, 0x483b, 0x27cc, 0x4e3f, 0x27cb, 0xa958, 0x2bc7, 0x5172, 0x2bc8, 0x5173, 0x2ffe, 0x5632, 0x5631, 0xb16a, 0x36c2, 0x36c0, 0x36c1, 0x36bf, 0xb664, 0x36be, 0x3da3, 0x3da6, 0x6025, 0x3da4, 0x6024, 0x3da5, 0x44a3, 0xc222, 0x4bae, 0x4baf, 0x4bb0, 0xc754, 0x51bc, 0x51bb, 0x6d46, 0x51ba, 0x51bd, 0x57ec, 0x57ed, 0x57ee, 0x5db8, 0x737d, 0x7658, 0x65e5, 0x7a73, 0x21bf, 0xa959, 0x5174, 0x2bc9, 0x5633, 0x5b44, 0xb665, 0x6026, 0x3da7, 0xbc4b, 0x645b, 0x645a, 0xc226, 0x4bb1, 0x4bb2, 0x6d47, 0x6d48, 0x57f0, 0x57ef, 0x61f5, 0x6fb2, 0x4551, 0x21c0, 0x4660, 0xa37a, 0x4a64, 0x24c8, 0xa95a, 0x5175, 0x645c, 0x4552, 0x2bca, 0x5176, 0x2bcb, 0x737e, 0x4553, 0x27cd, 0x2bcc, 0xad42, 0x30a5, 0x30a4, 0x30a2, 0xb16e, 0x30a1, 0x30a6, 0x30a3, 0xb16c, 0xb16d, 0x5b45, 0x5b46, 0xb666, 0x6027, 0x3da8, 0x3da9, 0x3daa, 0xbc4d, 0x44a7, 0x44a8, 0x44a6, 0xc228, 0x44a4, 0x44a5, 0x645d, 0x4bb3, 0x51c0, 0x51bf, 0x51be, 0x51c1, 0x57f2, 0x57f1, 0x7126, 0x57f3, 0x7421, 0x5db9, 0xd52d, 0x61f6, 0x65e6, 0x6dd5, 0x4554, 0x4662, 0x4661, 0x4e40, 0x21c1, 0x21df, 0x483c, 0x22d8, 0x24c9, 0x24ca, 0x4e41, 0xa95d, 0x27ce, 0x5177, 0x2bcd, 0x2bce, 0x5634, 0x5638, 0x30a7, 0x5637, 0x5635, 0x5636, 0x36c3, 0x5b47, 0x602a, 0xbc4e, 0x6028, 0x6029, 0x3dab, 0xc229, 0xc22a, 0x693b, 0x4555, 0x21e0, 0xa257, 0x4663, 0xa254, 0x21e3, 0xa421, 0x4666, 0x21e2, 0x4665, 0x4664, 0x4a65, 0x21e1, 0xa258, 0xa259, 0x22d9, 0x22dd, 0x22df, 0x22e0, 0x4846, 0x4847, 0x22dc, 0x4842, 0xa37d, 0x22da, 0xa425, 0x22de, 0x4843, 0xa655, 0x483e, 0xa37c, 0x483f, 0xa423, 0x4845, 0x22db, 0x483d, 0x4a66, 0x4840, 0x4841, 0x4844, 0x24db, 0x24d9, 0x24cc, 0x4a72, 0x24d3, 0x4a6d, 0x24cd, 0xa964, 0x24d5, 0xa650, 0x24d2, 0x4a70, 0x24d1, 0x4a77, 0x24da, 0x4a79, 0xa653, 0x4a7b, 0xa37e, 0x24cb, 0xa657, 0x4a6e, 0x24dc, 0xa651, 0x4a75, 0x4a78, 0xa64c, 0x27e5, 0x4a68, 0x4b21, 0x4a76, 0x24ce, 0x4a6b, 0x4a7a, 0x24d6, 0x4a69, 0x4a6a, 0x27e3, 0x24cf, 0x4a71, 0x4a7c, 0x24dd, 0x24d0, 0x4a6f, 0xa64d, 0x4a74, 0x27cf, 0x4a7d, 0x24d7, 0x4a73, 0xa963, 0x4a7e, 0x4a67, 0x24d4, 0x4a6c, 0x24d8, 0x27e4, 0xa64e, 0xa652, 0xa65c, 0xa659, 0xa656, 0xa65b, 0x4e4d, 0x4e5d, 0x27d6, 0x4e54, 0xad4e, 0x27eb, 0x4e45, 0xa96b, 0x4e48, 0x27e2, 0x27d4, 0x27d8, 0x4e50, 0x4e52, 0x27db, 0x4e59, 0x4e4b, 0x4e49, 0x4e4a, 0x4e58, 0x27e7, 0x4e53, 0x27da, 0x27dc, 0x4e51, 0x4e56, 0x27dd, 0x27ea, 0xa96d, 0x5178, 0x4e5c, 0x4e46, 0x27e9, 0xa96c, 0x27ed, 0x27d9, 0x27ef, 0x27e0, 0x4e4f, 0x27d5, 0x4e4e, 0x4e60, 0x4e55, 0xa96a, 0x27d3, 0x2bd7, 0x4e5b, 0x4e5f, 0x27e1, 0x27e6, 0xa965, 0x4e61, 0x4e5a, 0x4e4c, 0x4e42, 0xa969, 0x4e47, 0x27d7, 0x4e43, 0x27ee, 0xa967, 0x27d1, 0x27d0, 0x27de, 0x27d2, 0x4e5e, 0x5639, 0x4e57, 0x27df, 0x4e44, 0xad4f, 0x5229, 0x27ec, 0xad46, 0x2bde, 0x2be1, 0xad50, 0x2be4, 0x2bd9, 0xad48, 0xad4a, 0x2be7, 0x2bea, 0x2bec, 0x2bd6, 0x5179, 0x517e, 0x30ac, 0x5230, 0x2be5, 0x2bed, 0x2bdd, 0x2bd5, 0xad49, 0xad47, 0xad4d, 0x30c7, 0x5223, 0x2be2, 0x2bda, 0x2bdc, 0x5228, 0xb17a, 0x2bdf, 0x5222, 0x2bd2, 0x2be8, 0xad4b, 0x2beb, 0xad45, 0xad57, 0x517d, 0xad53, 0x522b, 0x2bcf, 0x522d, 0x517b, 0x5231, 0x2be9, 0x2bd1, 0x522e, 0x30c1, 0x27e8, 0x5221, 0x517a, 0x2bd8, 0x2bd0, 0x522f, 0x5227, 0x2be3, 0x522c, 0x522a, 0x2bdb, 0x5224, 0x2bd3, 0x5225, 0x5226, 0x2bd4, 0x2be6, 0x517c, 0x2be0, 0xad55, 0xad51, 0xb177, 0xb173, 0x30af, 0x5641, 0x5646, 0xb179, 0xb226, 0xb176, 0x30b8, 0x30be, 0x30ba, 0x30ad, 0x30b0, 0x30a9, 0x30aa, 0x564d, 0x563e, 0x30b9, 0x30c2, 0x5648, 0x563a, 0xb16f, 0x5643, 0x30b1, 0x5645, 0x30b2, 0x30bc, 0xb222, 0xb225, 0xb172, 0x5647, 0x30cb, 0x30ab, 0x5640, 0x563f, 0x564b, 0x30a8, 0x30c9, 0x30bd, 0x30ca, 0x30c4, 0x30b6, 0x30c5, 0xb221, 0x30bf, 0x30c8, 0x30c6, 0x564c, 0x30b7, 0x563d, 0x563c, 0x5644, 0x564a, 0x30c3, 0x5649, 0x30b4, 0x5b48, 0xb178, 0x30cc, 0x30b3, 0x30ae, 0x5642, 0x564e, 0x563b, 0xb227, 0x30bb, 0x30c0, 0xb17d, 0xb17b, 0xb17c, 0x5b6a, 0x36c5, 0x36c9, 0xb66f, 0x5b57, 0x5b55, 0xb67a, 0xb721, 0x5b4c, 0x36c7, 0x36c6, 0x5b60, 0xbc50, 0x36cc, 0x5b5a, 0xb672, 0x36de, 0x36ea, 0x5b49, 0x36db, 0x36d4, 0x5b6c, 0x36c4, 0xb66a, 0x36e0, 0xb66b, 0x5b69, 0x5b5d, 0x5b68, 0x5b53, 0x36d0, 0x36e2, 0x36da, 0x5b54, 0x5b4e, 0x36e8, 0xb66c, 0x36e1, 0x36e3, 0x5b56, 0x5b5e, 0x36e5, 0x36ce, 0x36df, 0x36d3, 0x36e7, 0x5b63, 0x5b4b, 0x5b61, 0x36d8, 0x36d6, 0x36d7, 0x5b58, 0x36d2, 0x36d1, 0x5b4d, 0x36cb, 0x36e9, 0x5b4f, 0x36d5, 0x5b6d, 0xb674, 0x5b67, 0x36ca, 0x5b64, 0x5b62, 0x5b6b, 0x36dc, 0x5b66, 0x30b5, 0x36dd, 0x5b65, 0x36e4, 0x5b4a, 0x36d9, 0x5b5c, 0x36cd, 0x5b5b, 0xb67c, 0x5b59, 0x5b51, 0x5b50, 0x3dac, 0x36e6, 0xbc5d, 0xb728, 0x36cf, 0xb726, 0xb723, 0x3dc1, 0xb670, 0x5b52, 0xb677, 0xb724, 0xb676, 0xb725, 0xb679, 0xb67d, 0xb729, 0xb727, 0xbc54, 0x6047, 0x5b5f, 0x6035, 0x3dbb, 0x6043, 0xbc52, 0x3daf, 0x6032, 0x602e, 0x3dcd, 0x6034, 0x6038, 0x6033, 0x603c, 0x3dd1, 0x3dc8, 0xbc6b, 0xbc6d, 0x3db6, 0x6041, 0x603b, 0x3dc2, 0x602b, 0x3dce, 0x3dc7, 0x602f, 0x3dbc, 0x603e, 0x3dd9, 0x3dda, 0x602c, 0x3dcc, 0x6040, 0x3dc0, 0x3db2, 0x3db3, 0x6044, 0x3db7, 0x3dbe, 0x3db8, 0xbc5a, 0x6042, 0x604a, 0x3db4, 0x3dad, 0x3dae, 0xbc56, 0x3db0, 0x6031, 0x3dbd, 0xbc6e, 0x603f, 0x6048, 0xbc58, 0xbc69, 0x3dbf, 0x3dd7, 0x3dcf, 0x602d, 0x3dd5, 0x6039, 0xbc66, 0x6037, 0xbc64, 0x3ddb, 0x6036, 0x3dc5, 0x3db9, 0x3dc3, 0x604d, 0x3dc9, 0x3dc6, 0x3db5, 0x6049, 0x3dd3, 0x3dd0, 0x3dd8, 0x6030, 0x3dc4, 0x604c, 0xbc5b, 0x3dcb, 0xc23a, 0xbc60, 0x603a, 0x603d, 0xbc5c, 0x3dca, 0x604b, 0x3dba, 0x36c8, 0xbc51, 0xbc6c, 0x3dd4, 0x3dd2, 0x3dd6, 0xbc62, 0xbc63, 0xbc68, 0x3db1, 0x6046, 0x44c7, 0x44c6, 0x44ac, 0x6463, 0xc230, 0x44c5, 0x44af, 0x44b0, 0x646d, 0x44ce, 0x6468, 0x44c4, 0xc233, 0x44a9, 0x646e, 0x6464, 0x44b8, 0x44ae, 0x44b1, 0x44c9, 0x645e, 0x44d0, 0x44c8, 0x6467, 0x44bd, 0x6472, 0xc22e, 0xc236, 0x6471, 0x646b, 0xc240, 0x44cf, 0x645f, 0x44bb, 0x44b2, 0x44bf, 0x44cb, 0x6473, 0xc239, 0x6461, 0x44ba, 0xc22d, 0x44b3, 0x646a, 0xc231, 0x6469, 0x44b6, 0x44c0, 0x44ca, 0x44ad, 0x44b7, 0x6462, 0x44c1, 0x646f, 0x6466, 0x44b4, 0x6465, 0x44ab, 0x44b9, 0x44cd, 0x6045, 0x6957, 0x44bc, 0x4bb4, 0x44be, 0x44cc, 0x646c, 0x44b5, 0x6460, 0x6470, 0x6d5a, 0x44aa, 0x44c3, 0xc244, 0xc23e, 0xc247, 0x44c2, 0xc23d, 0xc245, 0xc23f, 0xc23b, 0xc246, 0x4bd0, 0x6954, 0x4bc5, 0x4bca, 0x6949, 0xc756, 0x4bb6, 0x6956, 0xc757, 0x6940, 0x4bb5, 0x4bd6, 0x6958, 0x4bb9, 0x4bc9, 0xc765, 0x4bbb, 0x4bd9, 0x4bd5, 0x693e, 0x6948, 0x51db, 0x6955, 0x6946, 0x4bb7, 0xc763, 0x4bd4, 0x694a, 0x4bd1, 0x4bde, 0x4bbd, 0x4bc6, 0xcc78, 0xc75b, 0x4bdc, 0x4bd2, 0x6945, 0xcc6a, 0xc764, 0x4bc4, 0x693f, 0x693d, 0x694f, 0xc75f, 0x4bc2, 0x4bbf, 0x4bc0, 0xc75a, 0x4bd8, 0xc75c, 0x4bdd, 0x4bdb, 0x6943, 0x4bdf, 0x6947, 0x694e, 0x4bb8, 0x51c3, 0x4bc1, 0xc75e, 0x6941, 0x6953, 0x6950, 0x6944, 0x4bcb, 0x4bbc, 0x6951, 0x4bcd, 0x694b, 0x694d, 0x693c, 0xc75d, 0x4bcf, 0x4bc7, 0x4bba, 0x694c, 0x4bd7, 0x4bda, 0x4bc3, 0x4bce, 0xcc74, 0x6942, 0x6d49, 0x4bcc, 0x51c2, 0xc762, 0x4bd3, 0xc761, 0xc766, 0x4bbe, 0x51cc, 0x51d6, 0x6d4c, 0x51d5, 0x51e1, 0x6d4e, 0x51d3, 0x51d7, 0x6d59, 0xcc7d, 0x51ce, 0x6d51, 0xcc73, 0x51da, 0x57fb, 0x6d5d, 0x6d5c, 0x51dc, 0x51cb, 0x51e6, 0x6d57, 0xcc6b, 0x6d4d, 0x51df, 0x51e3, 0x51e8, 0x51dd, 0x51d1, 0x6d50, 0x6d53, 0x6d5b, 0x6d56, 0xcc75, 0x51d4, 0x4bc8, 0xcc7e, 0xcc6c, 0x51d0, 0x51e7, 0x6d52, 0xcc79, 0x6d55, 0x51e9, 0x6d4a, 0x51de, 0x51c4, 0x51e4, 0x742a, 0xcc7a, 0x51d2, 0x6d4b, 0x51cd, 0x6d4f, 0x51c5, 0x6952, 0x51c9, 0x51e2, 0x51ca, 0x51c8, 0x6d54, 0xcc7b, 0x51e0, 0xcc77, 0x51c7, 0x51d9, 0x51d8, 0x51e5, 0x51cf, 0x6d58, 0x57fe, 0xd156, 0x7133, 0x7129, 0x58ac, 0x57f6, 0x712b, 0x58a4, 0x7132, 0x712d, 0x58a2, 0x5dbb, 0x58a8, 0x58ae, 0x58a7, 0x57f4, 0x58a5, 0x58b0, 0x58b2, 0x7128, 0x58b1, 0x712e, 0x7134, 0xd154, 0x7131, 0xd158, 0x58ab, 0x7130, 0x58a6, 0xd14d, 0x57f8, 0x57fd, 0xd150, 0x58aa, 0x712f, 0x712c, 0x7127, 0x712a, 0x57fc, 0x51c6, 0x57f7, 0x57fa, 0x58ad, 0x58a1, 0x57f5, 0x5dba, 0x58af, 0x57f9, 0x58a9, 0xcc71, 0xd155, 0x5dbd, 0x742e, 0xd530, 0xd52f, 0x7422, 0xd535, 0xd536, 0x7426, 0x5dbf, 0x5dc5, 0x5dc3, 0x7424, 0x7425, 0x742c, 0x5dc6, 0x5dbe, 0x7427, 0xd531, 0x5dc2, 0x5dc1, 0x5dc7, 0x742d, 0xd537, 0x7428, 0x742b, 0x5dc0, 0x742f, 0x7429, 0x7430, 0x7423, 0x5dc4, 0xda55, 0x5dbc, 0xd159, 0xd539, 0x62a5, 0x765d, 0x62a2, 0x62a4, 0xd828, 0x765b, 0x61fe, 0x62a1, 0x61fa, 0xd82a, 0xd827, 0x58a3, 0x61fb, 0x765c, 0x61f7, 0xd826, 0x7659, 0x62a6, 0x765a, 0x61f8, 0x61f9, 0x61fd, 0x765f, 0xd829, 0x765e, 0xd82b, 0x61fc, 0x7845, 0x65ea, 0x65f0, 0x7846, 0x65e7, 0x7843, 0x7840, 0x65f2, 0x7844, 0xda52, 0x7841, 0x65e9, 0x65ec, 0x65ed, 0x65ee, 0x65f1, 0xda54, 0x62a3, 0x65e8, 0x7842, 0x65ef, 0x69b4, 0x65eb, 0xda53, 0x69ab, 0x7975, 0x69ae, 0x7976, 0x69b7, 0x69ad, 0x69aa, 0xdc51, 0x69ac, 0x69b0, 0x69b3, 0x69b2, 0x69b6, 0x69a9, 0xdc4f, 0x7974, 0x69b1, 0x69b5, 0x69b8, 0x69af, 0x6be1, 0x6be2, 0x6be6, 0x6be7, 0xde3c, 0x6be4, 0x6be5, 0x6be3, 0xde3a, 0x7a74, 0xde3b, 0x7b64, 0x6dd9, 0xe036, 0xdf52, 0x6dd6, 0x6dd7, 0x6dd8, 0x7b65, 0xe037, 0x6fb4, 0x6fb3, 0x70bd, 0x7c60, 0x70bb, 0x70be, 0x70bc, 0x71a5, 0x7d24, 0x7d32, 0x71f1, 0x71db, 0xe179, 0x71f0, 0x72be, 0x72bf, 0x4556, 0xa428, 0xa426, 0x4848, 0x22e1, 0xa427, 0xa42b, 0x24de, 0xa662, 0x4b22, 0xa65f, 0x4b25, 0xa65e, 0x24df, 0xa663, 0x4b23, 0x4b24, 0xa660, 0xa977, 0x27f8, 0x27fa, 0x27f5, 0x27f2, 0x27f4, 0xa974, 0xa970, 0xa975, 0x4e65, 0xa96f, 0xa979, 0xa976, 0x4e63, 0xa972, 0xa971, 0x27f6, 0x4e64, 0x27f3, 0x27f0, 0x4e62, 0x27f7, 0x27f1, 0x4e66, 0x27f9, 0x2bef, 0xad5e, 0x2bf3, 0xad5c, 0xad5a, 0x523a, 0xad58, 0xad65, 0xad62, 0x2bf6, 0xad5f, 0x5232, 0x5235, 0x5237, 0x5239, 0x5236, 0x2bf2, 0x2bf1, 0xad64, 0x5234, 0x2bf4, 0x2bf5, 0xad63, 0x2bee, 0x5238, 0xad68, 0x5233, 0xad5d, 0x2bf0, 0xb228, 0x30da, 0x30db, 0x30dc, 0x5653, 0x564f, 0x30d1, 0xb22a, 0x30d9, 0x30de, 0x5654, 0xb22b, 0x30cf, 0x30d5, 0x30ce, 0x30d8, 0xb231, 0xb22f, 0x30d4, 0x5650, 0x5652, 0x30dd, 0xb229, 0x30cd, 0x30d0, 0x30d6, 0xb22d, 0x30d7, 0x30df, 0x30d3, 0xb22c, 0x5651, 0xb230, 0x5b72, 0x36f1, 0xb730, 0xb732, 0x36f3, 0x36ef, 0xb72f, 0x36fb, 0x36ed, 0x36fa, 0x5b6e, 0x36eb, 0x3ddf, 0x36f5, 0x5b71, 0xb735, 0x36f6, 0x36f9, 0xb72e, 0x36fd, 0xb72c, 0x36f2, 0x36f7, 0xb72d, 0xb731, 0x5b6f, 0x5b70, 0x36fc, 0x36f0, 0x36ec, 0x36fe, 0xb733, 0x36f4, 0x36f8, 0x36ee, 0x604e, 0x604f, 0x3de9, 0x6055, 0xbc74, 0x3ddd, 0x3de6, 0x3ddc, 0x6052, 0x3de4, 0x3de2, 0xbc7d, 0x3de3, 0x6050, 0xbc7c, 0x3de7, 0xbc6f, 0xbc7a, 0xbc72, 0xbd21, 0x3de0, 0x3dde, 0x6051, 0x3de1, 0x3de5, 0xbc7b, 0xbc79, 0xbc71, 0x6053, 0xbc73, 0xbc77, 0x3de8, 0x44d6, 0x44dd, 0x44df, 0x44e5, 0xc257, 0x6522, 0x44d1, 0xc24c, 0x6478, 0xc24e, 0x44e0, 0x647d, 0x44e6, 0x6474, 0xc251, 0x44e3, 0xc258, 0x44d3, 0x44e4, 0x44d2, 0x6524, 0xc252, 0x44de, 0x6475, 0x44e7, 0xc83c, 0x647a, 0x44d7, 0x6521, 0x44e2, 0x44d5, 0x44dc, 0x44d8, 0x44d4, 0x6477, 0x647e, 0x647c, 0x6479, 0x6523, 0x6476, 0x44db, 0xc24f, 0x647b, 0xc259, 0x6054, 0xc249, 0x44e1, 0x44d9, 0xc253, 0x44da, 0x4be7, 0xc76f, 0x695b, 0xc76e, 0xc76c, 0x4be3, 0x4be9, 0x4be5, 0xc770, 0x695d, 0x4be4, 0x4be8, 0x4be0, 0xc772, 0x4be2, 0x695c, 0xc76a, 0xc76d, 0xc76b, 0xc768, 0x4be6, 0x4be1, 0xc767, 0x695e, 0x6959, 0x4bea, 0x695a, 0x51ef, 0x51ec, 0x51f8, 0x51f2, 0x51f4, 0x6d5e, 0x51ee, 0x51f6, 0xcd2a, 0xcd24, 0x51f5, 0x51f3, 0xcd29, 0x51f9, 0x6d61, 0x51f0, 0x51f7, 0xcd28, 0x6d5f, 0xcd25, 0xcd22, 0x51eb, 0x51ed, 0x6d60, 0x51ea, 0x51fa, 0x51f1, 0xd162, 0xd15a, 0x58b6, 0x713b, 0xd160, 0xd15c, 0x58c1, 0x58bf, 0x7135, 0x58b5, 0x58b8, 0x58b9, 0x58b4, 0x713f, 0x7140, 0x58b3, 0x58c2, 0x58bd, 0x7139, 0x7136, 0x58bc, 0x58ba, 0xd163, 0x713c, 0x58be, 0x7137, 0xd15e, 0x7138, 0xd166, 0x58bb, 0x713a, 0x58b7, 0x58c0, 0x713d, 0x58c3, 0x58c4, 0x713e, 0x7432, 0x7439, 0x5dc8, 0x5dce, 0xd53c, 0x5dcc, 0x7435, 0x7434, 0x7431, 0x5dca, 0xd53e, 0xd543, 0xd540, 0x7437, 0x7436, 0x7433, 0xd541, 0x5dcd, 0x5dc9, 0x5dcb, 0xd542, 0x7438, 0x7663, 0x62a9, 0xd82d, 0x7660, 0x7661, 0x62ab, 0x7662, 0x62a8, 0xd82e, 0x62a7, 0x65f6, 0x62aa, 0xda56, 0x65f7, 0x7847, 0x65f5, 0xda57, 0x65f4, 0xdc59, 0x65f3, 0x7848, 0xdc56, 0x7977, 0xdc58, 0xdc55, 0x69b9, 0x69ba, 0xda58, 0xdc53, 0xdc57, 0x6bea, 0x6be9, 0x7a75, 0xdf53, 0x6be8, 0x6dda, 0x6ddb, 0xdf54, 0xe039, 0x6fb5, 0x70bf, 0xe143, 0xe142, 0x71a6, 0x72ac, 0x7d46, 0x72c0, 0x4557, 0x4e67, 0x4e68, 0xad69, 0x523b, 0xbd22, 0x743a, 0x4558, 0x4e69, 0x5655, 0x6525, 0x4559, 0xad6b, 0x5b73, 0x695f, 0x21c2, 0xa97c, 0x2bf7, 0x30e0, 0x4beb, 0x743b, 0x455a, 0x4e6a, 0x2bf8, 0x2bf9, 0x3dea, 0x6056, 0xc25d, 0x44e8, 0xc25c, 0xc25b, 0x6526, 0x4bec, 0xcd2e, 0x6d62, 0xcd2d, 0x7849, 0x455b, 0x3deb, 0x455c, 0x484a, 0x22e2, 0x4849, 0x4b28, 0x4b27, 0x4b26, 0x24e0, 0xa664, 0xaa21, 0xaa22, 0x4e6b, 0xaa23, 0x4e6c, 0x27fb, 0x2bfa, 0xad6d, 0x2bfd, 0x523d, 0x2bfb, 0x523c, 0x2bfc, 0x523e, 0x30e3, 0x30e2, 0x30e1, 0x5656, 0xb236, 0x37a2, 0x37a3, 0x5b74, 0x37a1, 0x37a4, 0x6058, 0x5b75, 0xbd24, 0xbd23, 0x6057, 0x3def, 0x3dee, 0xbd25, 0x3dec, 0x3ded, 0x3df0, 0x44ea, 0x44e9, 0x44ed, 0x44ec, 0x44eb, 0x6960, 0x4bef, 0xc775, 0x4bee, 0x6961, 0x4bed, 0x51fb, 0xcd2f, 0x51fc, 0x6d63, 0x58c5, 0x58c6, 0x65fc, 0x784a, 0x65fb, 0x65fa, 0x65f8, 0x65f9, 0x7a76, 0x69bb, 0x6ddc, 0x71a7, 0xe17b, 0x455d, 0x21e4, 0x4667, 0x21e5, 0xa42c, 0xa42d, 0x22e3, 0x22e4, 0xa66b, 0xa669, 0x24e6, 0xa666, 0xa667, 0x24e2, 0xa66a, 0x24e1, 0x4e6d, 0x24e5, 0x4b2a, 0x24e3, 0x4b29, 0x24e7, 0x24e4, 0xa668, 0x28a1, 0x2bfe, 0x27fd, 0x28a6, 0xaa26, 0x4e6e, 0xaa2a, 0x4e71, 0x28a7, 0x28a3, 0xaa27, 0x28a4, 0x27fc, 0x4e70, 0x27fe, 0x4e6f, 0x28a5, 0xaa28, 0x28a2, 0x2ca4, 0x5240, 0x5241, 0xad75, 0x2ca7, 0x2ca1, 0xad74, 0x2ca6, 0xad70, 0x2ca2, 0x523f, 0x2ca5, 0x2ca3, 0xad73, 0xad71, 0x30e9, 0x30e6, 0xb238, 0x30e8, 0x565b, 0x565a, 0x5658, 0x30e5, 0x30ea, 0x5657, 0x5659, 0x30e7, 0x37ac, 0x30e4, 0x30eb, 0xb239, 0xbd26, 0x37a7, 0x37ab, 0x37aa, 0x3df2, 0x3dfd, 0xb73b, 0x37ad, 0xb73a, 0x37a8, 0x3df1, 0x5b79, 0x5b78, 0x37a6, 0x37a9, 0x5b7a, 0xb739, 0x5b77, 0x5b76, 0x37a5, 0x37ae, 0x3df4, 0x3dfb, 0xbd27, 0x605a, 0x3dfa, 0x3df7, 0xbd2e, 0x605c, 0xbd29, 0xbd2b, 0xbd2a, 0x3df9, 0xc261, 0xbd2d, 0x3df3, 0x3df5, 0x3df8, 0x3df6, 0x605b, 0x3dfc, 0x6059, 0x6527, 0xbd28, 0x44f1, 0x44f0, 0x44ee, 0x652a, 0x6529, 0x44f2, 0xc25f, 0x44ef, 0x4bf0, 0x6962, 0x6528, 0xc262, 0x44f4, 0x44f3, 0xcd30, 0x4bf3, 0x4bf1, 0x6d64, 0xc779, 0x6963, 0x4bf2, 0x51fe, 0xc778, 0xc77a, 0xc777, 0x6d65, 0x51fd, 0x52a8, 0x52a7, 0x52a5, 0x52a4, 0x52a1, 0x52a2, 0x52a3, 0x52a6, 0x52a9, 0x58cb, 0x58c8, 0x58c9, 0x7141, 0x58c7, 0x58cd, 0x58cc, 0x58ca, 0x5dd0, 0x5dd1, 0x743c, 0xd549, 0x743d, 0x5dcf, 0x7665, 0x62ac, 0x7664, 0x784b, 0x784c, 0x7978, 0x69bd, 0x69bc, 0x6beb, 0x6ddd, 0x7b66, 0x6fb7, 0x6fb6, 0x6fb8, 0x4668, 0x2ca8, 0x565c, 0x5b7b, 0x37af, 0x4669, 0x21e6, 0x455e, 0xa25a, 0xa16b, 0x22e5, 0xa42f, 0x24ec, 0x24ea, 0x24eb, 0x24e8, 0x4b2b, 0x24e9, 0xa66e, 0xaa33, 0x28af, 0xaa2d, 0x4e74, 0x28ad, 0x28a9, 0x28ac, 0xaa2c, 0x28a8, 0x4e76, 0x28ab, 0xaa2b, 0x4e73, 0x4e72, 0xaa32, 0x4e75, 0x28ae, 0x28aa, 0xaa2f, 0x5245, 0x5248, 0x2cb0, 0x2caf, 0x2cae, 0x5242, 0x2cb7, 0x2cad, 0x5244, 0x30f0, 0xad78, 0x2cb4, 0x2cb2, 0x5247, 0xad7b, 0x2caa, 0x2cb5, 0xad77, 0x2cac, 0x2cb6, 0x2cb3, 0x2cab, 0xad7a, 0x5243, 0x2cb8, 0x2ca9, 0x5246, 0xad7e, 0xad79, 0xad7c, 0x30f5, 0x30ec, 0x30f7, 0xb23e, 0x30ef, 0x30fa, 0x30fb, 0x30ed, 0x30f9, 0x30f6, 0x30f4, 0x30f8, 0x5662, 0xb240, 0x5660, 0xb247, 0xb23c, 0x30f2, 0xb246, 0x30ee, 0xb241, 0x30f1, 0x30fc, 0x30f3, 0x5661, 0x2cb1, 0xb23d, 0x565d, 0x565f, 0xb73d, 0x37bd, 0x37b2, 0x37b0, 0xbd38, 0x37b1, 0xb23f, 0x37b8, 0xb740, 0x37b9, 0x37b5, 0x5c22, 0x37ba, 0x37b7, 0x37b4, 0xb73c, 0x5b7e, 0x37b3, 0x5b7c, 0x5c21, 0x37b6, 0x37be, 0x565e, 0x5b7d, 0x37bc, 0x37bb, 0x5c23, 0xbd36, 0xbd3a, 0x3ea4, 0xbd2f, 0xbd3b, 0xbd32, 0x3ea5, 0x6066, 0xbd39, 0x3eab, 0xc26d, 0xbd35, 0x3ead, 0x3ea6, 0x6060, 0x3eaa, 0x3ea9, 0x6061, 0x6067, 0xc264, 0x6068, 0x3eac, 0x605e, 0x3ea3, 0x3ea1, 0x3ea7, 0x3dfe, 0x6065, 0x3ea2, 0x3ea8, 0x3eae, 0x605f, 0x6064, 0x6062, 0x6063, 0xbd33, 0xbd3c, 0x605d, 0xbd37, 0xc268, 0xc275, 0x6531, 0x44fb, 0x6530, 0x45a1, 0xc26f, 0x44f5, 0xc274, 0x45a2, 0xc26e, 0xc266, 0xc271, 0x44f6, 0x44f7, 0xc273, 0x45a3, 0x44fe, 0x44fc, 0x44fd, 0x44f9, 0x44f8, 0xc267, 0x45a4, 0x652d, 0xc26b, 0x44fa, 0xc270, 0x6532, 0x652c, 0x6533, 0x6534, 0xc26a, 0x652f, 0x652e, 0xc825, 0xc77e, 0x4bf4, 0x6965, 0x6964, 0xc77c, 0xc77d, 0x4bf9, 0xc822, 0x6d66, 0x6966, 0xc821, 0xc77b, 0x6968, 0x4bfa, 0x652b, 0x6967, 0x4bf6, 0x4bf8, 0x4bf5, 0xc827, 0x4bf7, 0xc823, 0x52b3, 0xcd31, 0xcd3b, 0x52b2, 0x52af, 0x6d69, 0x58ce, 0x6d6a, 0x52ae, 0xcd39, 0x6d68, 0xcd36, 0x52b0, 0x52ad, 0x52aa, 0x52b1, 0x52ab, 0x52ac, 0x6d67, 0xcd35, 0x5dd5, 0x58d2, 0xcd3a, 0x58d1, 0x58d3, 0xd16a, 0x5dd2, 0x7144, 0x58cf, 0xd167, 0x7142, 0xd16c, 0x7146, 0x7145, 0x58d0, 0x58d4, 0xd16b, 0x7143, 0x5dd9, 0x7440, 0x7666, 0x7441, 0x743e, 0x5dd6, 0x5dd4, 0xd54f, 0x5dd7, 0xd54b, 0x5dda, 0x743f, 0x5dd8, 0x5dd3, 0xd54d, 0x62af, 0x62b2, 0x66a1, 0x62ad, 0xd82f, 0x69be, 0x62b3, 0xd830, 0x784d, 0x62b1, 0x7667, 0x62ae, 0x62b0, 0x62b4, 0x66a2, 0xda5a, 0x65fe, 0xda5c, 0xda5d, 0xda5b, 0x784e, 0x65fd, 0xdc5e, 0xdc5c, 0xdc5f, 0x7979, 0xdc5d, 0xdc60, 0xde3d, 0x7a78, 0x6ddf, 0x7a77, 0x6de1, 0x6dde, 0x6de0, 0x7c3c, 0x70c0, 0x466a, 0x28b0, 0x30fd, 0x30fe, 0x5c24, 0x45a5, 0x7147, 0x784f, 0x7b67, 0x70c1, 0x466b, 0x28b1, 0x2322, 0xae22, 0x2cb9, 0xae21, 0x2cba, 0xae24, 0xb248, 0x31a1, 0x31a2, 0x5c25, 0x5c26, 0xbd3d, 0x3eaf, 0x45a8, 0x45a7, 0x45a6, 0x4bfb, 0xc277, 0x4bfc, 0x4bfd, 0x6969, 0xc828, 0x52b5, 0x52b4, 0xcd3d, 0xd16d, 0x58d5, 0x7148, 0x7149, 0xd16e, 0x5dde, 0x5ddb, 0x5ddc, 0x5ddd, 0x62b6, 0x62b5, 0x7668, 0x66a3, 0x6bec, 0x466c, 0x5249, 0xb744, 0x5c27, 0x45a9, 0xc278, 0x466d, 0x31a3, 0x5c28, 0xb745, 0xbd3e, 0x6069, 0x606a, 0x466e, 0x466f, 0x22e6, 0x4b2d, 0x4b2c, 0x524a, 0x2cbb, 0x3eb0, 0x4670, 0x4671, 0x4672, 0x4673, 0x4b2e, 0x4b2f, 0x24ee, 0x24ed, 0xaa37, 0x4e77, 0x28b4, 0x28b2, 0x28b3, 0xaa38, 0xaa35, 0xaa36, 0xae27, 0x2cbc, 0x2cbd, 0xae25, 0xae28, 0x524e, 0x524c, 0xae2a, 0x524d, 0x524b, 0xae26, 0x5663, 0xb24e, 0xb24d, 0xb250, 0xb24f, 0x5667, 0x5666, 0x31a4, 0x5665, 0x5664, 0xb251, 0x31a5, 0xb746, 0x5c2b, 0x37c0, 0x37bf, 0x5c29, 0x5c2a, 0xb749, 0xb747, 0x606c, 0x606b, 0x3eb2, 0xbd43, 0xbd42, 0x3eb1, 0x5c2c, 0xbd44, 0x6535, 0x45ab, 0x6536, 0x45aa, 0xc27b, 0x4bfe, 0x52b6, 0x6d6b, 0x58d6, 0xd170, 0xd552, 0x5ddf, 0x7851, 0x7850, 0xdc62, 0x7b68, 0x4674, 0x28b5, 0xbd45, 0x5c2d, 0x4ca1, 0x696a, 0xa25b, 0xa673, 0x24ef, 0x24f0, 0x28b6, 0x4e79, 0x4e7a, 0xaa3a, 0x4e78, 0xaa3b, 0x5252, 0x5253, 0x5250, 0x5251, 0xae2b, 0x2cbe, 0xae2f, 0x2cbf, 0x524f, 0x31a6, 0xb257, 0x566b, 0x566c, 0xb255, 0x5c30, 0x31ac, 0x5671, 0x566f, 0x31ad, 0x31a8, 0x566e, 0x566d, 0x5668, 0x31ab, 0x31aa, 0x31a7, 0x5670, 0xb252, 0x31a9, 0x5669, 0x566a, 0x5c31, 0x37c4, 0x37c5, 0x5c32, 0x37c1, 0x37c3, 0x37c7, 0x37c6, 0x37c2, 0xb74a, 0x5c2e, 0x5c2f, 0x3eba, 0x6071, 0x6070, 0x3eb4, 0x606e, 0x3eb7, 0x6072, 0x3eb8, 0x6073, 0x3eb5, 0x606d, 0x606f, 0x3eb9, 0xbd47, 0x3eb6, 0x3eb3, 0x45b8, 0xc27c, 0x45ad, 0x6538, 0x653b, 0x653a, 0x653f, 0x653e, 0x45b9, 0x45b7, 0x45b0, 0x45b4, 0x45b3, 0x653c, 0x45b6, 0x45b2, 0x45ba, 0x45b1, 0x653d, 0x6537, 0x6539, 0xc27d, 0x45af, 0xc82b, 0x4ca3, 0x696e, 0x4ca7, 0x696d, 0x4ca4, 0x696c, 0xc829, 0x45ae, 0x45b5, 0x4ca6, 0x696f, 0x4ca8, 0x4ca5, 0x4ca2, 0x52b9, 0x52bd, 0x52bf, 0x52bb, 0x52ba, 0x52b8, 0x6d6e, 0x6d6c, 0x6d71, 0x6d72, 0x52bc, 0x6d6f, 0x52b7, 0x6d70, 0x696b, 0x52be, 0x6d6d, 0xd171, 0x58d8, 0x58d7, 0x58df, 0x58d9, 0x58de, 0x58db, 0x714a, 0x58dd, 0xd173, 0xd172, 0x714b, 0x714c, 0xd174, 0x58dc, 0x58da, 0x7443, 0x5de0, 0xd555, 0xd553, 0x7442, 0x5de3, 0x5de1, 0x5de2, 0x7444, 0xd554, 0xd834, 0x62ba, 0xd833, 0x766b, 0x62bb, 0x7669, 0x62bc, 0x766a, 0x62b9, 0x62bd, 0xd832, 0x62b7, 0x7852, 0x66a4, 0x7853, 0x797a, 0x62b8, 0x797b, 0xde3f, 0xde3e, 0x7a79, 0x6bed, 0x7b6a, 0x6de2, 0x7b69, 0xe03b, 0x6fb9, 0x7c61, 0x7c62, 0x72ba, 0xa25c, 0x5254, 0x2cc0, 0x6074, 0x6075, 0x4675, 0x484b, 0x22e7, 0xa674, 0x24f1, 0x4b30, 0xa676, 0x4e7b, 0x5255, 0x5256, 0x5257, 0x37c9, 0x31ae, 0x5672, 0x5c33, 0x37c8, 0xb74d, 0x3ebc, 0x6077, 0xbd4c, 0x3ebb, 0x6076, 0xc27e, 0xc321, 0x45bb, 0x6d73, 0x52c3, 0x52c0, 0x52c1, 0x52c2, 0xd176, 0xd556, 0x5de4, 0xd557, 0x62be, 0xda5e, 0x69c0, 0x69bf, 0x6de3, 0x4676, 0x28b7, 0x5673, 0xbd4d, 0x6078, 0x45bc, 0xc830, 0x4ca9, 0xc82e, 0x6d74, 0x58e0, 0x62bf, 0x69c1, 0x4677, 0xa677, 0xa678, 0x4e7c, 0x525a, 0x2cc1, 0x525b, 0x5259, 0xae32, 0x5258, 0x31af, 0x5674, 0xb25a, 0xb25b, 0x5675, 0x5676, 0x5c35, 0x37ca, 0x5c34, 0xb750, 0xb752, 0xb751, 0xbd4f, 0x3ebd, 0x5c36, 0x6079, 0x45bd, 0x6540, 0x6541, 0x6970, 0xc831, 0x6971, 0x6d75, 0x714e, 0x58e1, 0x714d, 0x5de5, 0x7445, 0xd835, 0x62c0, 0x69c2, 0x4678, 0x4b31, 0x28ba, 0x28b9, 0x4e7d, 0x28b8, 0x4e7e, 0x28bb, 0x2cc7, 0x525e, 0x525d, 0x2cc9, 0x2cc8, 0x5262, 0xae35, 0x5261, 0xae33, 0x525c, 0x2cc3, 0x2cc4, 0x2cc5, 0x5263, 0x2cc2, 0x525f, 0x2cc6, 0x5260, 0xb264, 0xb25f, 0x31b2, 0x31b6, 0x31b4, 0x31b3, 0x31b7, 0xb25e, 0xb268, 0x31b8, 0x31b9, 0x31b1, 0x31b0, 0xb759, 0x5678, 0x5679, 0xb267, 0x31ba, 0x31b5, 0xb265, 0x37d3, 0xb755, 0x31bb, 0x567a, 0x5677, 0xb25c, 0xb263, 0x37cd, 0x37cc, 0xb753, 0x37ce, 0x37cf, 0x37d1, 0x37d0, 0x37d5, 0x5c3a, 0x5c37, 0x5c3b, 0x37cb, 0x5c3c, 0x37d4, 0x5c39, 0x37d2, 0x5c38, 0xb262, 0xb757, 0xbd56, 0xbd53, 0x3ec0, 0x3ec2, 0x3ebe, 0x3ebf, 0xbd51, 0xbd52, 0x3ec3, 0x3ec5, 0x3ec6, 0x3ec1, 0x3ec4, 0x607a, 0x45c1, 0xc327, 0x45c6, 0x45be, 0x45c2, 0xc328, 0x45c7, 0x45c3, 0x6542, 0x654a, 0xc325, 0x6545, 0x45bf, 0x45c0, 0x6975, 0x654d, 0x6546, 0xc326, 0x654b, 0x6544, 0x45c5, 0x654c, 0x45c4, 0x6548, 0x6543, 0x6549, 0x45c8, 0x4cae, 0x4cb0, 0xc839, 0xc833, 0xc836, 0xc835, 0xc834, 0xc838, 0x6547, 0xc83b, 0xc83d, 0x4cab, 0x6973, 0x4cb1, 0x6974, 0x4caf, 0x4caa, 0x4cad, 0x4cb2, 0x6972, 0x4cac, 0x6d77, 0x52c7, 0x52c6, 0xcd44, 0x6d7a, 0x6d78, 0x52c4, 0x6d76, 0x52c5, 0xcd46, 0x6d79, 0x58e9, 0xd17b, 0x58eb, 0xd179, 0x58ea, 0x58e2, 0x58e6, 0x58e5, 0x58e3, 0x7150, 0x7151, 0x714f, 0x58e4, 0x58e7, 0x58e8, 0xd559, 0x7152, 0xd558, 0x744a, 0x5ded, 0xd55b, 0x7447, 0x5de7, 0x7449, 0x744b, 0xd55c, 0x7448, 0x5dec, 0x5de8, 0x7446, 0x5deb, 0x5de6, 0x5dea, 0x5de9, 0xd836, 0xd838, 0x62c2, 0x766e, 0x766f, 0x766c, 0xd83b, 0x766d, 0xd83a, 0xd839, 0x62c1, 0x66a7, 0xda60, 0xda5f, 0x7854, 0x66a5, 0x66a6, 0x69c3, 0x69c6, 0x69c4, 0x69c5, 0x6bee, 0xde42, 0x7a7a, 0x6fba, 0x70c2, 0x7c63, 0x71a8, 0x71a9, 0x7d33, 0x4679, 0x5264, 0xb269, 0x3ec7, 0xbd57, 0x45c9, 0x467a, 0x4b32, 0x4f21, 0xae36, 0x2cca, 0x2ccb, 0x567b, 0x3ec8, 0x607b, 0x654e, 0x744c, 0x5dee, 0x66a8, 0x69c7, 0x467b, 0xa67b, 0xa67c, 0x28c1, 0x28bc, 0x28be, 0x28c0, 0x28bf, 0x28bd, 0x4f22, 0x5265, 0x2cd4, 0xae39, 0x2ccf, 0x2ccc, 0xae3b, 0xae3e, 0x2cd3, 0xae37, 0xae3a, 0x5267, 0x5268, 0x2cd2, 0x2cd1, 0x2cd0, 0x2ccd, 0x2cce, 0x2cd5, 0x5266, 0xae3d, 0x5721, 0x5727, 0x5726, 0x31c4, 0x31be, 0x31bc, 0xb26c, 0x5724, 0x37dc, 0x567d, 0x31c1, 0x31c5, 0x31c7, 0x31c3, 0x31bd, 0x5725, 0x31c2, 0x31c0, 0x567c, 0x31c8, 0x5728, 0x31c6, 0x5722, 0x31bf, 0xb26d, 0x5723, 0x567e, 0xb762, 0x5c3e, 0x37dd, 0xb763, 0xb75d, 0x37d6, 0x37d8, 0x37da, 0xb75f, 0x37db, 0x37d9, 0x5c3f, 0xb761, 0x37de, 0xb760, 0x37d7, 0x3ecc, 0x607c, 0x3ed4, 0xbd5c, 0x3ec9, 0x3ed5, 0xbd59, 0x3eca, 0x3ecb, 0xbd5d, 0x3ed3, 0x3ed2, 0x3ecf, 0x5c3d, 0x607d, 0x3ecd, 0x3ed0, 0x607e, 0x3ed1, 0x3ece, 0xbd5a, 0xc331, 0x45d4, 0xc32d, 0x45d8, 0x6555, 0xc32e, 0x4cb8, 0x6558, 0x45d6, 0xc337, 0xc329, 0x45d3, 0x45ce, 0x45d0, 0x45d1, 0x45ca, 0xc335, 0x6554, 0xc32b, 0xc330, 0x6553, 0xc334, 0x654f, 0x45cd, 0xc32a, 0x6556, 0xc336, 0x6557, 0x45cc, 0x45cf, 0x45d7, 0x6551, 0x6552, 0x45d5, 0x45cb, 0x4cba, 0x6977, 0x4cbc, 0x45d2, 0x4cbe, 0x697b, 0x4cbf, 0x4cbb, 0xc83e, 0x6978, 0x4cb7, 0x697a, 0x4cb4, 0x4cb9, 0x4cbd, 0x4cb6, 0xc83f, 0xc845, 0x6550, 0xc844, 0x4cb3, 0x6979, 0x4cb5, 0xc840, 0x6d7d, 0x52c9, 0x6e23, 0x6e21, 0xcd4a, 0x6976, 0xcd4d, 0x52d0, 0x52d1, 0x6d7c, 0xcd48, 0xcd4c, 0x52cf, 0x52d2, 0x6d7e, 0x6d7b, 0x52cb, 0x52c8, 0x52cd, 0x52ca, 0x6e24, 0x52cc, 0xcd4b, 0xcd49, 0x52ce, 0x6e22, 0xd221, 0x7154, 0x58f2, 0xd224, 0x58ec, 0x58f0, 0x58f6, 0x58f7, 0x58f3, 0x58f4, 0x58f1, 0x58ee, 0x7156, 0x7153, 0x58ed, 0x58ef, 0xd222, 0x7155, 0x58f5, 0x7450, 0xd560, 0xd562, 0x5df5, 0x5def, 0x744f, 0x744d, 0xd561, 0x5df7, 0x744e, 0x5df2, 0x5df3, 0x5df0, 0x5df8, 0x5df4, 0x7451, 0x5df1, 0x5df9, 0x5df6, 0xd843, 0xd83e, 0xd840, 0x62c6, 0xd83f, 0xd83c, 0x62c3, 0xd842, 0x7670, 0x62c7, 0x62c9, 0x62c8, 0x62c4, 0x62c5, 0xd844, 0x66ad, 0xda61, 0x7855, 0xda62, 0x66aa, 0x66ac, 0x66a9, 0x66ae, 0xda63, 0x66ab, 0x69c9, 0x69cc, 0x69c8, 0x797c, 0x69ca, 0x69cb, 0x69cd, 0x797d, 0x7a21, 0x797e, 0x6bef, 0xde45, 0x6bf1, 0xde43, 0x6bf0, 0xde44, 0x6de4, 0xe03c, 0x70c3, 0x71aa, 0x467c, 0xa433, 0x24f2, 0x4f23, 0x28c3, 0x4f24, 0x4f25, 0x28c2, 0x2cda, 0x2cd9, 0x5269, 0x526c, 0x526b, 0x526a, 0x2cd6, 0x2cd8, 0x2cd7, 0x31cb, 0x572a, 0x31cf, 0x31ce, 0x31cd, 0x31c9, 0x5729, 0x572d, 0x5730, 0xb26f, 0xb270, 0x5731, 0x31ca, 0x31cc, 0x572f, 0x572e, 0x572c, 0x572b, 0x37e5, 0xb272, 0x37e3, 0x37df, 0x5c40, 0xbd5e, 0x37e0, 0x5c41, 0x37e1, 0x37e2, 0x37e4, 0xb766, 0x5c42, 0xb765, 0x3ed9, 0xbd5f, 0x3ed8, 0x3ed7, 0x3ed6, 0xbd64, 0xbd62, 0x45dc, 0x6559, 0x45d9, 0x45db, 0xc338, 0x655a, 0xc33d, 0x655b, 0x45da, 0xc339, 0xbd63, 0xc848, 0x4cc8, 0xc847, 0x4cc1, 0x4cc2, 0x697e, 0x697c, 0x697d, 0x4cca, 0x4cc9, 0x4cc6, 0x4cc5, 0x4cc4, 0x4cc3, 0x4cc7, 0x4cc0, 0x52d3, 0x52d8, 0x52d6, 0xcd50, 0xcd51, 0xcd4f, 0x52d5, 0x52d4, 0x52d7, 0x58f8, 0xd226, 0x7157, 0x7452, 0x5dfb, 0xd227, 0x7453, 0x5dfa, 0x62cb, 0x62ca, 0x7671, 0xd845, 0x66af, 0x7856, 0x69ce, 0x7b6b, 0x6de5, 0xe03d, 0x70c5, 0x70c4, 0x21e7, 0x526d, 0x526e, 0x37e6, 0x655d, 0x467d, 0x4b35, 0x4b34, 0x4b33, 0xaa3e, 0xaa3d, 0x28c4, 0xaa3f, 0xaa42, 0x4f27, 0x4f26, 0xaa44, 0x5271, 0x2cdc, 0x2cdf, 0x2cdd, 0xae42, 0x526f, 0x5270, 0xae40, 0xae41, 0x2cdb, 0x2cde, 0xae43, 0x5738, 0xb274, 0xb273, 0xb279, 0x31d6, 0x31d8, 0x31d7, 0x5735, 0x31d2, 0xb276, 0xb27b, 0x5733, 0x5732, 0xb277, 0x5736, 0x5734, 0xb278, 0x5737, 0x31d5, 0x31d0, 0x31d1, 0x31d4, 0x31d3, 0xb27c, 0xb769, 0xb767, 0xb76b, 0xb76a, 0x37e9, 0x37ea, 0x37e8, 0xb76c, 0x37e7, 0x5c43, 0xbd65, 0x6125, 0x3eda, 0x3edc, 0x3ede, 0x6124, 0xbd66, 0x6122, 0xbd69, 0x3edb, 0x6123, 0x3edd, 0x6121, 0xbd68, 0xc341, 0x45e6, 0x45dd, 0x45e0, 0x45e4, 0x6561, 0x45e2, 0x45e1, 0x45de, 0x45df, 0x655f, 0x45e5, 0x655e, 0xc344, 0x6563, 0x6562, 0x6560, 0x45e3, 0x4cd0, 0x4ccf, 0xc84b, 0xc84d, 0x4ccb, 0xc850, 0xc84f, 0x6a21, 0x4cce, 0x4ccd, 0x6a22, 0xc852, 0x6e29, 0xcd55, 0x52da, 0xcd56, 0x6e2a, 0x6e26, 0x6e28, 0xcd5a, 0x6e25, 0x6e27, 0xcd53, 0xcd57, 0x58f9, 0xd22a, 0x715a, 0x58fb, 0x58fa, 0xd564, 0x4ccc, 0x715c, 0x715b, 0x7158, 0x7159, 0xd22c, 0xd229, 0x5ea2, 0x5dfe, 0x7454, 0x5ea1, 0x5ea3, 0x5dfd, 0x5dfc, 0x62cc, 0x7674, 0x7672, 0x7673, 0xda66, 0xda65, 0x66b0, 0x66b1, 0x7858, 0xda67, 0x7857, 0x69d0, 0x69d1, 0x69cf, 0xdc64, 0x6de6, 0x6de7, 0xe076, 0xe077, 0x467e, 0x22e8, 0x4b36, 0x28c5, 0x4f29, 0x4f28, 0x28c6, 0xae44, 0xae47, 0x2ce1, 0x5272, 0x2ce0, 0x5273, 0xae49, 0xae48, 0x5739, 0x31db, 0x31d9, 0x31df, 0x573a, 0x31da, 0x31de, 0x31dc, 0x31dd, 0x37eb, 0x37ed, 0xb772, 0x5c44, 0xb771, 0x37ec, 0x5c45, 0x6128, 0x6127, 0x6126, 0x3edf, 0xb770, 0x45e9, 0x6564, 0x6565, 0xc346, 0x45e8, 0x45e7, 0xc347, 0x4cd1, 0x6a24, 0x6a23, 0x4cd2, 0x4cd3, 0x6e2c, 0x6e2b, 0xcd5b, 0x59a1, 0x52db, 0x52dd, 0x52dc, 0x58fe, 0x58fc, 0x59a2, 0x58fd, 0x715d, 0xd22f, 0xd22e, 0x5ea4, 0x7455, 0x5ea5, 0x5ea6, 0xd568, 0x7675, 0x7676, 0x7a22, 0xde49, 0xde48, 0x7c3d, 0x4721, 0xa67e, 0xa721, 0xaa47, 0xae4e, 0x2ce2, 0xae4f, 0xae4d, 0xae4b, 0xae4c, 0x31e0, 0x573b, 0xb323, 0xb326, 0xb327, 0xb324, 0x5d7e, 0x5d7d, 0xb773, 0xbd71, 0x612a, 0x3ee1, 0x6129, 0x3ee0, 0xbd70, 0xc349, 0xc34a, 0x45ea, 0xc854, 0x6a25, 0x4cd4, 0x6a26, 0xc855, 0xd230, 0xd569, 0xd56a, 0xd849, 0x7a23, 0x69d2, 0xdf55, 0x484c, 0x4f2a, 0x28c7, 0xae51, 0x5275, 0xae50, 0x5274, 0x2ce3, 0x2ce4, 0x31e2, 0x31e4, 0x573c, 0x31e6, 0x31e9, 0x31e7, 0xb32b, 0xb32a, 0x31e8, 0x31e5, 0x31e1, 0x573d, 0x31ea, 0x31e3, 0xb32c, 0xb778, 0xb779, 0x37f6, 0x5c4b, 0x38a1, 0x5c48, 0xb777, 0x37f8, 0x5c4c, 0xb77b, 0x5c46, 0xb776, 0x37f3, 0x38a2, 0x37f4, 0x37f1, 0x5c4a, 0x5c47, 0x37f7, 0x37fa, 0x5c49, 0x37fb, 0x5c4d, 0x37fc, 0x37f2, 0x37f9, 0x37fd, 0x37f5, 0x37f0, 0x37ee, 0xb77a, 0x37fe, 0x37ef, 0x3ee8, 0xbd7b, 0xbd78, 0xbd75, 0x3ee4, 0x3eea, 0x612d, 0x3ee3, 0x3ee5, 0x612b, 0x3ee2, 0x6132, 0x3ee6, 0x6131, 0x3ee7, 0x6133, 0x612e, 0x6134, 0x612f, 0xbd79, 0x6130, 0xbd72, 0x612c, 0xbd76, 0x3ee9, 0xc34f, 0x6568, 0x45f5, 0xc34c, 0x45f8, 0x45ec, 0x45f1, 0x45eb, 0x656a, 0xc355, 0x45ef, 0xc34d, 0xbd77, 0x45ed, 0x6569, 0xc354, 0x45f4, 0x45f3, 0x45f0, 0x45f2, 0x45ee, 0x6a2a, 0x45f7, 0x6566, 0x45f6, 0xc351, 0xc856, 0x4ce4, 0xc858, 0x6a31, 0x4cdf, 0xc860, 0x6a30, 0x4cd5, 0x4cd7, 0x6a29, 0x4cdc, 0x4cdb, 0x4cde, 0x6a2e, 0x4cd9, 0x4cd8, 0xc85a, 0xc85e, 0x6a2d, 0x6a28, 0x4cda, 0x6a2b, 0x4ce0, 0x4ce2, 0x4cdd, 0x4cd6, 0x6a2c, 0xc857, 0xc85d, 0x6e34, 0x6a27, 0xc85c, 0x4ce3, 0x52e1, 0x6e2d, 0xcd5c, 0x52e3, 0x6e2e, 0xcd65, 0xcd5d, 0x6e30, 0x52e6, 0x52de, 0x6a2f, 0x52e4, 0x52e0, 0xcd60, 0x6567, 0x6e33, 0x6e2f, 0x6e31, 0x6e32, 0x7160, 0x52e5, 0x52df, 0x6e35, 0xcd63, 0x52e2, 0x59ac, 0x59a7, 0x59b1, 0x715e, 0x59a9, 0x7162, 0x59af, 0x59a6, 0x59a3, 0x59b2, 0x745b, 0x7163, 0x59ae, 0x59a4, 0x7161, 0x59a8, 0x7165, 0x59a5, 0x59aa, 0x7164, 0x59ad, 0x59b0, 0xd233, 0xd234, 0x5eb8, 0x5eb9, 0x5ea9, 0x5eb0, 0x5eae, 0xd56d, 0x7459, 0x5eb5, 0x59ab, 0xd56b, 0x5eac, 0xd56e, 0x5eb6, 0x7458, 0x5eab, 0x5eaa, 0x5eb4, 0x5eb1, 0x5eb3, 0x5ea7, 0x5eb7, 0x7456, 0xd570, 0x5eb2, 0x5ebb, 0x5eaf, 0x745a, 0x7457, 0x5ead, 0x5ea8, 0x5eba, 0x715f, 0xd571, 0xd56f, 0x62cf, 0xd850, 0xd84e, 0x62cd, 0x62d3, 0x767a, 0x62d1, 0x62d0, 0x767c, 0x62d6, 0x767b, 0xd851, 0x62d7, 0x62d4, 0x7678, 0x62d5, 0x62ce, 0x7679, 0x7677, 0x66b5, 0x62d2, 0xd84c, 0x62d8, 0x66b2, 0xda6f, 0xda6e, 0x785d, 0x785b, 0x66b4, 0x66b6, 0x66b3, 0x785c, 0x7859, 0x785a, 0x785e, 0x7a25, 0xdc66, 0x69d7, 0x69d6, 0x69d4, 0x69d3, 0x69d5, 0xdc65, 0x7a24, 0x7a26, 0x7a7b, 0xde4c, 0x6bf3, 0x6bf2, 0xde4b, 0x6de8, 0xdf58, 0x6dea, 0x6dec, 0x6deb, 0x6de9, 0xdf57, 0xe03f, 0x7b6d, 0x7b6c, 0xe03e, 0x7c3f, 0x7c3e, 0x7c40, 0x6fbc, 0x6fbb, 0x71ab, 0x70c6, 0x71ac, 0x7d25, 0xe144, 0x7d26, 0x71dc, 0xe23a, 0x7d4b, 0x484d, 0xaa49, 0x28c8, 0xaa48, 0xae52, 0x2ce6, 0x2ce7, 0x2ce5, 0xae54, 0xae53, 0x5276, 0x2ce8, 0x2ce9, 0x2cea, 0xb331, 0x31eb, 0x31f1, 0xb32e, 0xb330, 0x31ef, 0x573e, 0x31ed, 0xb332, 0x31ee, 0x31f0, 0xb32d, 0x31ec, 0x5c4e, 0xb77d, 0x38a3, 0x5c50, 0x38a5, 0x5c4f, 0x38a4, 0xb77e, 0xb821, 0xb83e, 0xb822, 0x3eec, 0x6135, 0xbe21, 0x3eee, 0x3eeb, 0x38a6, 0xbe23, 0x6136, 0xbe22, 0xbd7e, 0x3eed, 0xc358, 0x45fb, 0xc35c, 0x656b, 0x45f9, 0x656c, 0x45fa, 0x656d, 0xc862, 0xc861, 0x6a32, 0x4ce8, 0x4ce5, 0x4ce7, 0x6a33, 0x6a34, 0x4ce6, 0xcd6f, 0xcd71, 0xcd6d, 0x52e7, 0xcd70, 0xcd73, 0x52e8, 0xcd72, 0x6e36, 0x52ea, 0x52e9, 0xcd6e, 0x2323, 0x59b6, 0x59b7, 0x59b3, 0xd237, 0x59b4, 0x7166, 0x7167, 0x59b5, 0x7461, 0xd575, 0xd574, 0x745d, 0x7462, 0x745e, 0x7460, 0x745c, 0xd239, 0x745f, 0xd855, 0xd854, 0x767d, 0x5ebc, 0x66b8, 0x66b7, 0x69d8, 0x7a27, 0x7a28, 0x6dee, 0x6bf4, 0xe169, 0x6ded, 0xe040, 0x71ad, 0x71f2, 0x484e, 0xa722, 0x4b37, 0xaa4b, 0x28c9, 0x4f2b, 0xaa4a, 0x5279, 0x2ced, 0x5277, 0x2ceb, 0x527c, 0x5278, 0x527d, 0x527b, 0x2cec, 0x527a, 0x5742, 0x5741, 0x31fc, 0x574a, 0x31f5, 0x31fb, 0x5746, 0x31f4, 0x31fa, 0x31f8, 0x5745, 0x5747, 0x31f7, 0x5740, 0x31f6, 0x574b, 0x5748, 0x574c, 0x5749, 0x31f3, 0x31f2, 0x31f9, 0x5743, 0x573f, 0x5744, 0xb337, 0xb33b, 0x38b5, 0x38ae, 0x613b, 0x38ad, 0xb829, 0x5c54, 0x5c5b, 0x5c58, 0x5c5e, 0x5c5d, 0x5c59, 0xb826, 0x38a7, 0x38aa, 0xb827, 0x38a9, 0x5c55, 0x38ab, 0x38b4, 0x5c56, 0x38a8, 0x38b1, 0x38b2, 0x5c57, 0x38af, 0x5c5c, 0x5c52, 0x5c5a, 0x38ac, 0x5c51, 0x38b0, 0xb82e, 0xb824, 0x38b3, 0xb82b, 0xbe34, 0x3fa1, 0x3ef6, 0x6138, 0x3efd, 0x3efa, 0x3ef2, 0x3efb, 0x613a, 0x3ef3, 0xbe29, 0x3eef, 0xbe26, 0xbe2e, 0x6573, 0x3ef8, 0xbe2f, 0x6137, 0x3efe, 0xbe28, 0x613e, 0x6140, 0x3ef1, 0xbe2c, 0x613f, 0x3ef4, 0x6139, 0x3efc, 0x3ef5, 0x3ef9, 0xbe2a, 0x3ef7, 0x613c, 0x3ef0, 0x6141, 0x5c53, 0x613d, 0x6142, 0xbe24, 0xbe35, 0xbe33, 0xc367, 0x656f, 0x46a4, 0x46a6, 0x46a8, 0x46ac, 0xbe2b, 0x46a2, 0x45fe, 0x6571, 0x46a7, 0x46ab, 0x46a3, 0x45fd, 0xc366, 0x45fc, 0xc369, 0xc360, 0xc362, 0x46a9, 0x46a1, 0x46a5, 0x6572, 0xc35e, 0x6570, 0x46ad, 0x656e, 0x46aa, 0xc364, 0x4cf9, 0xc368, 0xc36a, 0xc363, 0x6a37, 0x4cf1, 0x6e43, 0x4cfb, 0x6a3a, 0x4da1, 0x6a40, 0x4cec, 0xc874, 0x4cfc, 0x4ce9, 0xc86d, 0x4cfe, 0x4ced, 0xc86e, 0x6a47, 0x6a44, 0x4cfd, 0x4cf7, 0x6a36, 0x6a3e, 0x6a3d, 0xc870, 0x6a3c, 0x6a42, 0xc869, 0x4cea, 0x6a43, 0x4cf8, 0x6a3f, 0x6a35, 0x4cfa, 0x6a38, 0x6a39, 0x6a41, 0x4cef, 0x4cee, 0x4ceb, 0x4cf3, 0x4cf0, 0x4cf4, 0x6a46, 0xc868, 0x4da2, 0x6a3b, 0x4cf5, 0x4cf6, 0xc871, 0x4cf2, 0xc873, 0xc86b, 0x6a45, 0xce22, 0x52ef, 0x6e3b, 0x6e44, 0x6e40, 0x52ec, 0xcd7c, 0x6e3d, 0x6e41, 0x52f8, 0x6e37, 0x52f0, 0xcd78, 0x6e3f, 0xce24, 0xce2f, 0x52f3, 0x52ee, 0x6e3e, 0x6e42, 0x52ed, 0xce2e, 0x6e3c, 0xcd77, 0x52f7, 0x6e39, 0x52f6, 0x52f5, 0x6e45, 0x50bb, 0x6e38, 0xce2b, 0x52f4, 0x52eb, 0xcd75, 0x6e46, 0x52f2, 0x6e3a, 0xce28, 0xce29, 0xce25, 0xce2c, 0xce27, 0xcd7e, 0xcd7d, 0x52f1, 0x716a, 0x716f, 0x7168, 0x59c4, 0x59bb, 0x59c7, 0x59bf, 0x59c5, 0x7170, 0x7169, 0x59b8, 0x59be, 0x59c8, 0x59c1, 0x59c6, 0x59ba, 0xd23b, 0x59c2, 0x716b, 0x59c0, 0x716e, 0x716d, 0x59bc, 0x59bd, 0x59b9, 0x59c3, 0x716c, 0x59ca, 0x59c9, 0xd240, 0xd23f, 0x5ec7, 0x5ec3, 0x7469, 0xd579, 0x5ebd, 0x7463, 0x7473, 0x5ec9, 0x746b, 0x7467, 0x5ec0, 0x746e, 0x7471, 0x5ecb, 0x7466, 0x5ec2, 0x746f, 0x5ecd, 0x5eca, 0x5ebe, 0x746a, 0x7464, 0x7472, 0x5ec5, 0x746d, 0x5ebf, 0x7468, 0x5ecc, 0x746c, 0x7465, 0x5ec6, 0x7470, 0x5ec4, 0x5ec8, 0xd57a, 0xd859, 0x62da, 0x62e0, 0x7725, 0x62e3, 0x767e, 0x7721, 0x62db, 0x62e2, 0x62dd, 0x7726, 0x7723, 0xd85b, 0x62d9, 0xd858, 0x7722, 0x62df, 0x62e1, 0x7724, 0x62de, 0x62dc, 0xd85a, 0x66c2, 0x7862, 0x7863, 0x785f, 0xda72, 0x7860, 0xda74, 0x66be, 0x66bc, 0xda75, 0x66c0, 0x7864, 0x66c1, 0x66ba, 0x66b9, 0x66bd, 0x66bb, 0x7861, 0x66bf, 0x69d9, 0x7a2b, 0x7a2a, 0x69da, 0xdc6c, 0x69dc, 0x69db, 0x7a2c, 0xde53, 0xde50, 0x6bf9, 0x6bf6, 0x6bf7, 0xde51, 0x6bf5, 0x6bf8, 0x7a7d, 0x6bfa, 0xde52, 0x7a7c, 0x6def, 0xdf5a, 0x7c41, 0x7c43, 0x6fbd, 0x7c42, 0x70c7, 0x71af, 0x71b1, 0x71ae, 0x71b0, 0x7d39, 0xe235, 0x484f, 0x527e, 0x30d2, 0x574d, 0xb831, 0x5c5f, 0x3fa2, 0x3fa3, 0xc877, 0x59cb, 0x7474, 0x5ece, 0xd57d, 0xd85c, 0x7727, 0x66c4, 0x66c3, 0x7a2d, 0x6bfb, 0xdf5b, 0x6df0, 0x7c64, 0x22e9, 0x4f2c, 0x4b38, 0x2cee, 0xaa4e, 0x32a4, 0x31fd, 0x32a3, 0x32a1, 0x574e, 0x32a2, 0x31fe, 0xb33c, 0x38b6, 0x3fa4, 0x3fa5, 0x46b0, 0x46b1, 0x6575, 0x6576, 0x46af, 0x46b2, 0x46ae, 0x6574, 0xc878, 0x6a48, 0xc879, 0x6577, 0x4da3, 0x6e47, 0x52f9, 0x6e48, 0xce30, 0x7171, 0x59ce, 0x59cc, 0x59cd, 0x5ed1, 0x5ed0, 0x5ecf, 0x66c5, 0x7865, 0x66c6, 0x6df1, 0x7c65, 0x70c8, 0x4850, 0x4f2e, 0x4f2d, 0x2cf0, 0x5321, 0xae5d, 0x2cef, 0x32a6, 0xb33d, 0x574f, 0x38b7, 0x32a5, 0xb33f, 0xb33e, 0x5c61, 0x38ba, 0x38b8, 0x38b9, 0x5c60, 0x3fa7, 0x3fa8, 0x3fa6, 0xc36e, 0x657a, 0x46b4, 0x46b3, 0x46b5, 0x6579, 0x6578, 0x52fa, 0x52fc, 0xce31, 0x6e49, 0x52fb, 0x59cf, 0x7172, 0x62e5, 0xd85d, 0x62e4, 0x7866, 0x66c7, 0x7868, 0x7867, 0x69dd, 0x6bfc, 0x7a7e, 0x4851, 0x2cf1, 0x5322, 0x32a9, 0x5751, 0x32a8, 0x32a7, 0xb342, 0x5750, 0xb343, 0x38c0, 0x38c2, 0x38bb, 0x38bc, 0x5c62, 0x38bd, 0x5c63, 0x38c1, 0x38be, 0x38bf, 0x5c64, 0xbe37, 0x6144, 0x6145, 0xbe38, 0x3fa9, 0x46b6, 0x46b7, 0xc372, 0x4da7, 0x6a4b, 0x6a49, 0x6a4a, 0x4da4, 0x4da5, 0x4da6, 0x53a3, 0xce32, 0x53a4, 0x6e4a, 0x53a1, 0x52fe, 0x53a2, 0x52fd, 0x7175, 0x59d0, 0x7173, 0x7174, 0x5ed3, 0x7475, 0x5ed2, 0x61b4, 0xd57e, 0x62e6, 0x62e7, 0x7728, 0xd861, 0x7729, 0x7476, 0x66c8, 0x66c9, 0x69de, 0x7a2e, 0x4852, 0x4853, 0x5753, 0x4f2f, 0x5752, 0x2cf2, 0xb836, 0xb344, 0x6146, 0x4854, 0x5324, 0x2cf3, 0x2cf4, 0x5323, 0x5325, 0x4855, 0x2cf5, 0x5755, 0x32aa, 0x5757, 0x5754, 0x5756, 0xb837, 0x38c5, 0x5c65, 0xb839, 0x38c4, 0x38c3, 0x46b8, 0xc922, 0x4da8, 0x6e4b, 0x7176, 0x59d2, 0x59d1, 0xd621, 0x5ed4, 0xd862, 0xdc6f, 0x6bfd, 0x4856, 0x24f3, 0x28ca, 0x5326, 0x2cf6, 0x32ac, 0xb349, 0xb348, 0x5758, 0x32ab, 0x5759, 0xb347, 0x38c7, 0xb83d, 0xb83c, 0x5c67, 0x38c6, 0x38c8, 0xb83b, 0x5c66, 0xbe3c, 0x3fab, 0x3fac, 0x3faa, 0x6147, 0x657b, 0xc373, 0x657c, 0x6a4d, 0xc923, 0x4daa, 0x4da9, 0x6a4c, 0xc926, 0xbe3b, 0xc925, 0x53a5, 0xce34, 0xce36, 0x53a6, 0xce37, 0xce35, 0xce38, 0x59d3, 0xd243, 0x747a, 0x7479, 0x7477, 0x7478, 0x747b, 0xd622, 0x62e8, 0x772b, 0x772a, 0x66ca, 0x69df, 0xdc70, 0xdc71, 0xdc72, 0x7b6f, 0x7b6e, 0x4857, 0x2ffd, 0x657e, 0x6148, 0x657d, 0x6a4e, 0x4858, 0x21e8, 0x4859, 0x485a, 0xa435, 0xa436, 0x28cb, 0x24f6, 0xa724, 0x24f7, 0x4b3a, 0xa726, 0x24f4, 0x4b39, 0xa725, 0x4b3c, 0x24f5, 0x4b3e, 0x4b3d, 0x24f8, 0x4b3b, 0xa723, 0x4f34, 0x4f32, 0x28cd, 0xaa56, 0x4f31, 0xaa5b, 0xaa58, 0xaa4f, 0x4f36, 0x4f38, 0x4f35, 0xaa59, 0x28d0, 0x28cc, 0x4f39, 0xaa52, 0x4f33, 0x4b3f, 0xaa54, 0x4f37, 0x28cf, 0xaa57, 0x28ce, 0x4f30, 0x2cfc, 0x532a, 0x532b, 0x2cfe, 0xae66, 0x2cf8, 0x2cfb, 0x2da6, 0x2da4, 0xae60, 0x532c, 0x2daa, 0x532f, 0x2da7, 0x2cfd, 0x2cfa, 0xae61, 0xae5e, 0x3fae, 0x2da5, 0x5327, 0x2da8, 0x2cf7, 0x2da2, 0x5329, 0x532e, 0x2da3, 0x5332, 0x5330, 0xae65, 0x2cf9, 0x532d, 0xae64, 0x2da1, 0x5331, 0x5328, 0x2da9, 0x575e, 0xb34c, 0x5767, 0x575c, 0x575a, 0x32ae, 0x5762, 0x575f, 0x32b0, 0xb34a, 0xb352, 0x5761, 0x32af, 0x32ad, 0x32b2, 0x5766, 0x5764, 0x3fad, 0xb34b, 0x32b3, 0x32b1, 0x575b, 0xb34e, 0xb34d, 0x575d, 0x5760, 0xb34f, 0x5763, 0xae63, 0x5765, 0xbe44, 0x38d2, 0x5c69, 0xb849, 0x38c9, 0x38cb, 0xb847, 0x38cc, 0x38d4, 0x38d0, 0x38ce, 0x38d1, 0x38d5, 0x5c6a, 0x5c6e, 0x38ca, 0x38d3, 0x5c6c, 0xb841, 0x5c6b, 0x38cf, 0x38cd, 0xb842, 0x5c68, 0x5c6d, 0xb845, 0xb848, 0x614e, 0x3fb6, 0xbe3e, 0x3fb4, 0x6150, 0xbe43, 0xbe45, 0xbe41, 0x3faf, 0x46c6, 0xbe3d, 0x614f, 0x3fb3, 0xbe40, 0xbe42, 0x3fb0, 0x614b, 0x6151, 0x3fb5, 0x614d, 0x3fb2, 0x6a4f, 0x614c, 0x3fb1, 0x6152, 0x614a, 0x6149, 0x46be, 0x46bc, 0xc37b, 0x46c2, 0xc37e, 0x46ba, 0x46c7, 0x46bf, 0xc375, 0x46b9, 0x6624, 0x662a, 0x46c4, 0x46bd, 0xc376, 0x6627, 0xc377, 0xc423, 0x6625, 0x46c5, 0x6622, 0x6621, 0x46c0, 0x6626, 0x6153, 0xc37c, 0x46c3, 0x46bb, 0x6623, 0x6628, 0x6629, 0xc422, 0x6a54, 0x6a50, 0xc927, 0x6a55, 0x4dad, 0xc92a, 0x4dac, 0x4dae, 0x6a52, 0x4dab, 0x6a53, 0x4db1, 0x4db0, 0x4daf, 0x6a51, 0xce3b, 0xce3d, 0xce39, 0x53aa, 0xce3c, 0x53ad, 0x6e51, 0x53ac, 0x6e50, 0x6e4c, 0x6e4d, 0x6e4e, 0x53a9, 0x53a8, 0x6e4f, 0xce3a, 0x53ab, 0x53a7, 0x59d5, 0x59df, 0x7179, 0x7178, 0xd249, 0x59d9, 0x59db, 0xd247, 0x59d6, 0xd244, 0x59da, 0x59d4, 0x59dd, 0x7177, 0x59dc, 0x59d8, 0x59de, 0xd623, 0x59d7, 0x747e, 0x5ed5, 0x5edb, 0x7524, 0x7526, 0x7523, 0x7522, 0x7521, 0x747d, 0x5ed6, 0x5ed9, 0x747c, 0x5eda, 0xd624, 0x7525, 0x5ed8, 0x5ed7, 0x772c, 0xd865, 0x772d, 0x62eb, 0x62e9, 0x62ea, 0xda77, 0x66cc, 0xda78, 0x66cb, 0x7869, 0x69e1, 0x7a2f, 0x69e0, 0x6bfe, 0x6df2, 0x7b70, 0x71b2, 0x71b3, 0x7c44, 0x485b, 0x4f3a, 0x3fb7, 0x6a56, 0x7527, 0x5edc, 0x485c, 0x5769, 0x5768, 0x3fb8, 0xbe47, 0x59e0, 0x485d, 0x5333, 0xbe48, 0x3fb9, 0x3fba, 0x3fbb, 0x6a57, 0x717a, 0x485e, 0x4f3b, 0x2dab, 0x576a, 0x32b4, 0x5c6f, 0xbe49, 0x3fbc, 0x662b, 0x6a58, 0x717b, 0x7528, 0x772e, 0x66cd, 0x485f, 0x4f3c, 0xaa5d, 0x576b, 0x38d6, 0x6154, 0xc92b, 0x6a59, 0x4db2, 0x53ae, 0xd24a, 0xd868, 0xda79, 0x4860, 0x6155, 0x46c8, 0x6a5a, 0x4861, 0x28d1, 0x2dac, 0x5334, 0xae68, 0x32b6, 0xb357, 0x576e, 0xb358, 0x576c, 0x576d, 0x576f, 0xb355, 0x32b5, 0x38db, 0x38d8, 0x38da, 0x5c70, 0x5c72, 0x5c71, 0x38d7, 0x5c73, 0x38d9, 0x3fbd, 0x3fbe, 0x3fbf, 0x46cb, 0xc426, 0x46cc, 0x46ca, 0x46cd, 0x662c, 0x46c9, 0xc92d, 0x6a5b, 0xc92e, 0x53b3, 0x53af, 0x53b2, 0x53b4, 0x53b1, 0x53b0, 0x59e1, 0x59e2, 0x59e3, 0x717c, 0x717d, 0x5ede, 0x5edd, 0x5edf, 0x62ed, 0x62ec, 0x66cf, 0xda7a, 0x66d0, 0x66ce, 0xda7b, 0x7a30, 0x69e2, 0x69e3, 0xde55, 0x6df3, 0x6fbe, 0x70c9, 0x4862, 0x4b40, 0x7529, 0x4863, 0x38dc, 0x3fc0, 0xda7c, 0x7c6c, 0x22ea, 0xa438, 0x22eb, 0x22ed, 0x4864, 0x22ee, 0x22ec, 0x25a2, 0x25a3, 0x24fb, 0xa728, 0x25a1, 0x4b42, 0xa729, 0x4b43, 0x24fc, 0x24fa, 0x24f9, 0x24fd, 0x4b41, 0x24fe, 0x2dad, 0xa72b, 0x28d6, 0x4f3f, 0x28d5, 0x28d7, 0xaa60, 0x4f3e, 0x28dc, 0x4f42, 0x28d2, 0x28e0, 0x28e6, 0x4f49, 0x28e3, 0x4f46, 0xaa6b, 0x28d9, 0x28df, 0x28e1, 0xaa66, 0x28d4, 0x4f45, 0x4f40, 0x28da, 0x4f47, 0x4f4a, 0x4f44, 0xaa6c, 0x4f3d, 0x28de, 0x28d8, 0x28e5, 0x4f4c, 0x4f48, 0x4f43, 0x28dd, 0x5770, 0x28db, 0x4f41, 0x4f4b, 0x28d3, 0x28e2, 0x28e4, 0xaa5e, 0xaa68, 0xae76, 0x5345, 0x533f, 0x5347, 0x5344, 0x2db4, 0x2db7, 0x5340, 0xae6a, 0x2dae, 0x5339, 0x5343, 0xae6b, 0x5346, 0x5348, 0x2dc3, 0x2dba, 0xae78, 0x5338, 0x2dc2, 0x533c, 0x533a, 0x5335, 0x2db2, 0xae72, 0x2dc1, 0x2db6, 0x2db9, 0x2dc6, 0xae74, 0x5349, 0x2dc0, 0x5341, 0x2dbb, 0x2dc5, 0x2db8, 0x2dbc, 0x2dbf, 0xae69, 0xae6e, 0x2db0, 0x2dc4, 0x2dbe, 0xae6f, 0xae7a, 0x2daf, 0x2db3, 0x5342, 0x533d, 0x5336, 0x533b, 0x5337, 0x534a, 0x2db1, 0x32c7, 0x533e, 0xae79, 0x2dbd, 0x29c2, 0xae77, 0x32ca, 0x577e, 0xb362, 0x32ba, 0x32c5, 0x32c1, 0xb84d, 0x32d4, 0xb359, 0x32cc, 0xb35f, 0x32c2, 0xb85b, 0x32cb, 0x32bc, 0x32c0, 0x32d7, 0x5823, 0x32cf, 0x32c6, 0x5771, 0x32d5, 0x32b8, 0x32ce, 0x5822, 0x577b, 0x32b7, 0x5779, 0x5778, 0x577d, 0x32cd, 0x5775, 0x577c, 0x2db5, 0x3fc1, 0x32c8, 0xaa5f, 0x32be, 0x5821, 0x32bf, 0x32c3, 0x5824, 0x32b9, 0x32d1, 0xbe57, 0x32d0, 0x32d8, 0x5777, 0x5774, 0x32d6, 0x32d2, 0x32c9, 0x32c4, 0x577a, 0x5776, 0x32bb, 0x5772, 0x32d3, 0x5773, 0x32bd, 0xb35a, 0xb363, 0xad33, 0xb84e, 0xb851, 0x38e2, 0x38e4, 0x38e9, 0x38fd, 0x5d23, 0x5c77, 0xb854, 0x38e1, 0x5d24, 0x5d25, 0x38ec, 0x38f3, 0x38f9, 0xb850, 0x38e6, 0x38ed, 0xb84f, 0xb85d, 0x5d26, 0x38fb, 0x38f6, 0x5d21, 0x5c7d, 0x38f2, 0x38ee, 0x38e0, 0x5c74, 0x38e5, 0x38dd, 0xb855, 0x5c7c, 0x5c7e, 0x38ea, 0x38e7, 0x5c79, 0x38f7, 0x5c76, 0x38e8, 0x3fea, 0x38f0, 0xb85e, 0x38ef, 0x5c75, 0xb857, 0x5d22, 0xb852, 0x5c78, 0x38de, 0x38e3, 0x38f4, 0x38fa, 0x5d27, 0x38df, 0x38eb, 0x38f1, 0x5c7b, 0xb858, 0x38fc, 0x38f5, 0x38f8, 0xb85f, 0x5c7a, 0x3fd1, 0x3fc5, 0x615d, 0x3fe2, 0x3feb, 0x3fee, 0x615b, 0x3fcd, 0x3fe6, 0x3fce, 0x3fdc, 0x6168, 0x3fd8, 0x6165, 0xbe5e, 0x3fd9, 0x3fc2, 0x3fe7, 0xbe4f, 0xbe59, 0x616e, 0x3fe4, 0x3fda, 0x3ff0, 0x3fd5, 0x46ed, 0xbe4d, 0x3ff3, 0x616c, 0x3fd3, 0x3fdf, 0x616f, 0x615a, 0x3fd7, 0x3ff1, 0x3fd0, 0x3fc9, 0x3fd4, 0xbe5f, 0x3fc8, 0x3fc6, 0x6156, 0x3fe8, 0x3fcf, 0x3fec, 0xbe4b, 0x3fed, 0x615e, 0x6163, 0x615f, 0x6167, 0x3fe3, 0x6160, 0x3fdb, 0x3fcb, 0x6158, 0x3fc3, 0x3fe5, 0x3fef, 0x3fca, 0x6166, 0x3ff4, 0x3fd6, 0xbe52, 0x3fd2, 0xbe5c, 0x6157, 0x616b, 0xbe5a, 0x3fe1, 0x616d, 0xbe50, 0x3fdd, 0x6162, 0x615c, 0x6164, 0x6159, 0x616a, 0x3fde, 0x3fcc, 0x3fe0, 0x3fc7, 0x3fe9, 0xbe58, 0xbe5d, 0xbe56, 0xbe4e, 0x3ff2, 0xbe5b, 0x3fc4, 0x46ec, 0xc42d, 0x47a4, 0x655c, 0x46f1, 0xc431, 0x46ef, 0x46da, 0x6630, 0x46ea, 0x46fe, 0x46e6, 0x6638, 0x46fd, 0x46e4, 0x6169, 0x46f4, 0x46e5, 0x46fb, 0x6637, 0x662f, 0xc43a, 0x46cf, 0x46d7, 0xc435, 0x46f0, 0x46e8, 0x47a3, 0x46eb, 0x663d, 0x46fc, 0xc42c, 0x6634, 0xc43e, 0x46ee, 0x46f6, 0x46db, 0x46f5, 0xc427, 0x47a8, 0x46d6, 0x46f7, 0xc433, 0x47a6, 0xc43f, 0x46d0, 0x6161, 0xc440, 0x46de, 0x46dd, 0x6636, 0xc432, 0x46e1, 0x46e3, 0x46f2, 0x47a5, 0x6639, 0xc438, 0x663a, 0xc430, 0x46d5, 0x6632, 0x46d9, 0x47a1, 0x663b, 0x6633, 0x6635, 0x663c, 0x47a7, 0x46f8, 0x46f3, 0xc43c, 0xc42f, 0x46e0, 0x46df, 0x6631, 0x46d1, 0x662e, 0x46e9, 0x46d2, 0x46e7, 0xc42e, 0x46dc, 0x47a2, 0xc42a, 0xc439, 0x662d, 0xc43b, 0xc428, 0x46d8, 0x46d4, 0x46fa, 0x46d3, 0x6a68, 0x4dda, 0xc935, 0xc944, 0x4dc9, 0xc933, 0xc938, 0x4db3, 0x4dd1, 0x6a60, 0x4dc2, 0x4dcc, 0x6a63, 0x4dc5, 0x6a61, 0x4db6, 0x4dd4, 0x4db5, 0x4dc8, 0xc93c, 0x4db4, 0xc939, 0x4dc6, 0x4dcf, 0x4dcd, 0x4dc1, 0x4dbc, 0x4dba, 0xc942, 0x4dbb, 0x4dce, 0x4dd9, 0x4dc3, 0x6a62, 0xc93b, 0x4dbe, 0xc93a, 0x4dd2, 0xc941, 0x6a65, 0x4dbd, 0x4db7, 0x4dc7, 0x6a69, 0xc932, 0x6a5d, 0x6a66, 0x4dbf, 0x4db9, 0xc936, 0x6a5f, 0x46f9, 0x6a5e, 0x4dca, 0xc436, 0x6a5c, 0x6a6b, 0x6a64, 0x4dcb, 0x4dc0, 0x4db8, 0x4dd3, 0x4dc4, 0x6a6a, 0x4dd7, 0x6a67, 0x4dd6, 0xc93f, 0x4dd0, 0x4dd5, 0xc93e, 0xc943, 0x4dd8, 0xc93d, 0x53dc, 0x53dd, 0x53d0, 0x53cf, 0x53cb, 0x6e5d, 0xce4f, 0x6e55, 0x53df, 0x53de, 0x46ce, 0x53c8, 0x53cc, 0x53c6, 0xce44, 0x53d9, 0x53ca, 0xce42, 0x53e0, 0x53c3, 0x53c1, 0x53cd, 0x53d7, 0x53d2, 0x6e5f, 0x53b8, 0xce40, 0x53d6, 0xce4c, 0xce46, 0xce54, 0x6e60, 0x46e2, 0x53c4, 0x53bb, 0x53be, 0x53e4, 0x53c5, 0x53bc, 0x53ba, 0x53b7, 0x6e59, 0x53ce, 0x6e58, 0x6e5c, 0x53c9, 0x53d1, 0x6e52, 0x53e1, 0x53e5, 0x6e54, 0xce4b, 0x53c0, 0x53d4, 0x53d8, 0x53bd, 0x53e2, 0x6e5b, 0x6e5a, 0x53b5, 0x6e5e, 0x53db, 0x53bf, 0x53d3, 0x53b9, 0x53c7, 0x53c2, 0x6e56, 0x6e57, 0x53d5, 0x53e6, 0x53e3, 0x53da, 0xce4d, 0xce4e, 0xce52, 0x53b6, 0x6e53, 0x59f4, 0xd25a, 0x59eb, 0x59ee, 0xd252, 0x7225, 0x59f0, 0x59e5, 0x59ec, 0x59f2, 0x7222, 0x7226, 0x717e, 0xd259, 0xd250, 0x59e7, 0x59f7, 0x59f1, 0x59e8, 0x5aa2, 0x59fa, 0x59e4, 0x5ef2, 0x59ea, 0x7221, 0xd258, 0x59f5, 0xd254, 0x5aa1, 0x7229, 0xd256, 0x59fc, 0x59e9, 0x59ef, 0x59f3, 0x59ed, 0x5aa3, 0x59fe, 0x59fb, 0x7223, 0x7224, 0x7228, 0x59e6, 0x5aa4, 0x7227, 0x59f8, 0xd24f, 0xd255, 0x59f6, 0x59f9, 0x5fa1, 0x5eec, 0x5ef1, 0x5efe, 0x5ef0, 0x5ee8, 0x5eed, 0x752c, 0xd62b, 0x5ee1, 0x5ef9, 0x5efb, 0x5ee0, 0x752b, 0x5efd, 0x5ef5, 0x7532, 0x5efc, 0x5eee, 0x7534, 0x5ee6, 0x59fd, 0x5ef6, 0x5ef3, 0x5ee2, 0x5fa3, 0x752e, 0xd628, 0xd629, 0x752f, 0x5ee4, 0x5ef4, 0xd62d, 0x5fa2, 0x5ef7, 0x5eea, 0x7531, 0x752d, 0x5ef8, 0x5eeb, 0x5fa4, 0x5ee5, 0x5eef, 0x5efa, 0x5ee7, 0x5ee9, 0x7535, 0x5ee3, 0x7533, 0x7730, 0x752a, 0xd62c, 0xd630, 0x7530, 0x7734, 0x62fd, 0xd86c, 0x62f3, 0x62ee, 0x62f4, 0x62fe, 0x63a4, 0x63a3, 0x7736, 0x7735, 0xd86e, 0x62f5, 0x63a5, 0x62f8, 0x62f0, 0xd86f, 0x62f2, 0x62f1, 0x62f7, 0x62fc, 0x62ef, 0x62f6, 0x62fb, 0x7733, 0x62f9, 0xd86b, 0x7731, 0x62fa, 0x772f, 0x7732, 0x66e0, 0x63a1, 0x786d, 0xda7e, 0x66d8, 0x66dc, 0x66d4, 0x66d7, 0xda7d, 0x66df, 0x786b, 0x66e4, 0x66dd, 0x66d5, 0x66e5, 0x66de, 0x786e, 0x786f, 0x66e2, 0xdb22, 0x66d6, 0x786a, 0x786c, 0x66d1, 0x66d9, 0x66d3, 0xdc7b, 0x66e3, 0x66e1, 0x66d2, 0x66da, 0xdb25, 0x69ea, 0x7870, 0x66db, 0x7a32, 0x7a34, 0x7a31, 0xdc76, 0x69ef, 0x69e7, 0x69e5, 0x69e9, 0x69e6, 0xdc78, 0xdc7c, 0x69eb, 0x69ed, 0x7a35, 0x7a37, 0xdd22, 0x69ec, 0x7a38, 0x7a36, 0x69ee, 0xdc7e, 0xdd23, 0xdc77, 0x7a33, 0xdd21, 0xde5b, 0xde5a, 0x7b21, 0x6ca1, 0x6ca7, 0x7b23, 0x69e8, 0x6ca6, 0xde5c, 0x6cad, 0x6ca4, 0x6cab, 0x6caa, 0x69e4, 0x6ca5, 0x63a2, 0x6cae, 0x6ca3, 0x6ca8, 0xde58, 0x6cac, 0x6ca2, 0xde56, 0x6df7, 0x7b22, 0x6ca9, 0xde57, 0x6fc3, 0x6df8, 0x6df6, 0x6df4, 0x6df5, 0x6df9, 0x7c45, 0x6fc1, 0x6fbf, 0x6fc4, 0x6fc2, 0xe043, 0x6fc5, 0x7c46, 0x6fc0, 0xe02f, 0xe146, 0x70ca, 0x71b4, 0x71b5, 0x71b6, 0xe147, 0xe17c, 0x72b5, 0x72ad, 0x22ef, 0x4f4d, 0x534b, 0x32da, 0x32d9, 0x5825, 0x5d28, 0x39a1, 0xb863, 0xb860, 0x38fe, 0xb861, 0x6170, 0x663f, 0xbe61, 0x663e, 0x6640, 0x4ddb, 0x53e7, 0x5aa5, 0x5aa7, 0x5aa6, 0x7536, 0x5fa5, 0x63a6, 0x71f3, 0x4865, 0xa72d, 0x28e9, 0x28ea, 0x28e8, 0x28e7, 0x4f4e, 0x2dca, 0x2dc8, 0xaf23, 0xae7c, 0x2dc7, 0xae7e, 0x534c, 0x534e, 0x534d, 0x2dc9, 0xaf24, 0xb369, 0x32e6, 0x32e3, 0x32e1, 0xb36c, 0x5826, 0x32e4, 0x582b, 0x32de, 0x32ed, 0xb36f, 0x32ef, 0x32df, 0xb36e, 0x5828, 0x32f0, 0x32eb, 0x32dd, 0x32e2, 0x32ec, 0x32e8, 0x32e5, 0xb36b, 0x582d, 0x32ee, 0x32e0, 0xb36a, 0xb370, 0x32e9, 0x32db, 0x582c, 0x5829, 0x32e7, 0xb36d, 0x32ea, 0x32dc, 0x582a, 0x5827, 0xb866, 0x5d32, 0x39a8, 0x5d31, 0xb864, 0x39ab, 0x39ae, 0x5d2e, 0x5d2c, 0x39a3, 0x39ac, 0x39aa, 0x39a7, 0x39af, 0x39b0, 0x39b2, 0x39b3, 0x39a2, 0x5d2b, 0x39a5, 0x39a4, 0x39b1, 0x5d2d, 0x39a6, 0x5d2f, 0x5d2a, 0x39a9, 0x5d33, 0x5d30, 0x39ad, 0x6177, 0x40a5, 0x3ff8, 0x6174, 0xbe62, 0x47ae, 0x40a3, 0x3ff5, 0x6172, 0x3ffa, 0x6175, 0x3ffe, 0x3ffc, 0x6178, 0x6171, 0xbe63, 0x3ff6, 0x3ff9, 0x6176, 0x3ff7, 0x40a4, 0x40a2, 0x3ffb, 0x3ffd, 0x40a1, 0x6173, 0xbe68, 0x47af, 0x47b5, 0x47ab, 0x47b1, 0x6641, 0x47ad, 0x6647, 0xc444, 0xc445, 0x6646, 0xc449, 0x6645, 0x47b4, 0x6648, 0x6649, 0x47aa, 0x47b7, 0x664a, 0x6644, 0x6643, 0x47b3, 0x664b, 0x47a9, 0x47ac, 0x47b6, 0x47b2, 0x4dfb, 0x4df0, 0x6642, 0xc446, 0xc448, 0x6a72, 0x4de4, 0x4df9, 0x4de5, 0x6a6d, 0xc94f, 0x4de2, 0x4deb, 0x4de3, 0x6a6f, 0x4ddd, 0x4df8, 0x6a70, 0x4df5, 0x4df6, 0x4dde, 0x6a75, 0x4ded, 0xc94a, 0x4de7, 0x4dee, 0x4de1, 0x4dfa, 0x4df2, 0x4dec, 0x4ddc, 0x6a71, 0x4df3, 0xc945, 0x6a74, 0x4df7, 0xc94c, 0x4df1, 0x6a6e, 0x4def, 0xc949, 0x4de9, 0x6a6c, 0x4de0, 0x4de8, 0x4df4, 0x4de6, 0xc94e, 0x4dea, 0xc94b, 0x6e6a, 0x47b0, 0x53f9, 0x54a4, 0x53f8, 0x53f4, 0x53f1, 0x6e6b, 0x53ef, 0x6a73, 0x53e8, 0x6e69, 0x53ee, 0x6e68, 0x53f3, 0x53f0, 0x54a2, 0x53fb, 0x53f5, 0x53fa, 0x6e64, 0x53f2, 0x54a7, 0x53e9, 0x53ea, 0x54a3, 0x6e65, 0x54a8, 0x6e67, 0x54a9, 0x53f7, 0x4ddf, 0x53fd, 0x53f6, 0x54a1, 0x53fc, 0xce5d, 0x53ed, 0x6e62, 0x54a6, 0x6e63, 0x53eb, 0x6e66, 0x5ab2, 0x53fe, 0x54a5, 0xce59, 0x5aaf, 0x6e61, 0x722a, 0x5ab9, 0x5ab5, 0x5ab3, 0x5aae, 0x5abd, 0xd25b, 0xd25d, 0x722e, 0xd25f, 0x5aaa, 0x5ab6, 0x5ab7, 0x5aad, 0x5aac, 0x5aba, 0x5ab0, 0x5aab, 0x5ab1, 0xd262, 0x5abc, 0x5aa9, 0x5abb, 0x5ab8, 0x722c, 0x722b, 0xd25e, 0x722d, 0x5ab4, 0x5aa8, 0x5fa7, 0x753c, 0x5fab, 0x5fa8, 0x5faf, 0x5fb5, 0x5faa, 0xd63a, 0x5fbe, 0x7539, 0x5fb8, 0x5fad, 0x5fb9, 0x5fb4, 0x5fbb, 0x5fac, 0x753e, 0x753d, 0x5fae, 0x5fbc, 0x5fa6, 0x5fba, 0x7537, 0xd639, 0x5fb2, 0x5fb1, 0x5fb6, 0x5fa9, 0x753b, 0xd63b, 0x753f, 0x5fb0, 0x5fb7, 0x7540, 0x5fb3, 0xd636, 0xd634, 0x7538, 0x753a, 0x63b3, 0x63b1, 0xdb28, 0xd876, 0x63b7, 0x63b5, 0x63b8, 0xd878, 0x63aa, 0x63b2, 0x63bc, 0x5fbd, 0x63ae, 0x773a, 0x53ec, 0x63a9, 0x63b6, 0x63b0, 0x63ad, 0x63a8, 0x63a7, 0x63bb, 0xd873, 0x63ac, 0x63ab, 0x7738, 0x63b4, 0xd874, 0x7737, 0xd875, 0x7739, 0x63af, 0x63ba, 0x66e9, 0x66ea, 0xdb2c, 0x7874, 0x66e7, 0x7871, 0x66ef, 0xdb27, 0x7875, 0x66f1, 0x66e6, 0x63b9, 0x66f3, 0x66e8, 0x7872, 0x66ee, 0xdb29, 0x66f0, 0x66eb, 0x66f2, 0x66ed, 0x66ec, 0x7873, 0xd877, 0xdb2b, 0x69f1, 0x69f2, 0xdd25, 0x69f4, 0x7a39, 0x7a3a, 0x69f5, 0x69f3, 0xdd24, 0x69f0, 0xde5d, 0x6cb1, 0x6cb4, 0x6cb0, 0x7b27, 0x6cb2, 0x7b26, 0x7b25, 0x7b24, 0x6cb3, 0x6dfe, 0x6dfc, 0xdf5f, 0x6dfb, 0x6caf, 0x6dfd, 0x6cb5, 0x6dfa, 0xe045, 0x6fc8, 0x6fa6, 0x6fc6, 0x7c47, 0x6fc7, 0x6fc9, 0x70cd, 0x7c66, 0x70cc, 0x70cb, 0x7c67, 0x7d27, 0x71dd, 0x71f5, 0x71f4, 0x71f6, 0x4866, 0x2dcb, 0xaf26, 0x32f1, 0x32f2, 0xb86a, 0xbe6a, 0xbe69, 0x40a6, 0x6cb6, 0x70ce, 0x4867, 0x534f, 0x2dcc, 0xb371, 0x39b4, 0x5d34, 0x40a8, 0x40a7, 0x6179, 0xc44d, 0x664c, 0x54aa, 0x6e6c, 0xce5f, 0x6e6d, 0xd263, 0xd264, 0x722f, 0x7c68, 0x4868, 0xaf27, 0x2dcd, 0x4f50, 0x2dcf, 0x2dce, 0x5350, 0x32f3, 0xb374, 0x32fa, 0x582e, 0x32f8, 0x32f6, 0xb377, 0x32fd, 0x32f4, 0x32f5, 0x582f, 0xb372, 0x5833, 0xb373, 0xb375, 0x32fe, 0x5832, 0x32fc, 0x32f9, 0x32f7, 0x5830, 0x5831, 0x32fb, 0xb376, 0x5d36, 0x39b5, 0xb872, 0x5d3b, 0x39c5, 0x5d3a, 0x39c7, 0xb86e, 0xb874, 0x39bb, 0x5d38, 0x39c6, 0xb86c, 0x39b6, 0x5d39, 0x39c2, 0x39be, 0x39c0, 0x39ba, 0x39c1, 0xb86b, 0x5d35, 0x39bd, 0xb873, 0x39bc, 0x39b8, 0xb86d, 0x39c3, 0xb86f, 0xb871, 0x39bf, 0x39b7, 0xb870, 0x39b9, 0x5d37, 0x39c4, 0x617c, 0x40b3, 0xbe70, 0xbe72, 0x40af, 0x40b1, 0x40ac, 0x40ab, 0x40a9, 0xbe6d, 0x40b0, 0x40b2, 0x40ae, 0xbe6f, 0x40ad, 0x617a, 0x617b, 0x40b5, 0x6654, 0x47b9, 0x47bf, 0x47ba, 0x47bb, 0xc44e, 0x47c0, 0x6656, 0x664e, 0x6655, 0x47b8, 0x40aa, 0x6651, 0x664f, 0x47be, 0x47bd, 0x6650, 0x6652, 0x47bc, 0x664d, 0xc44f, 0x6653, 0xce60, 0x4dfd, 0x6a7c, 0xc959, 0xc952, 0x4eaa, 0x4ea9, 0xc957, 0x4ea4, 0x6a7e, 0x4ea8, 0x4dfe, 0x4ea1, 0x6a76, 0x6a78, 0xc954, 0x4ea6, 0x4dfc, 0x6a7a, 0x6a79, 0x4ea2, 0x4ea7, 0x4ea5, 0x6a7b, 0x4ea3, 0xc951, 0xc956, 0x40b4, 0x6a77, 0xc958, 0x54ab, 0x54b2, 0x6e6f, 0x54b6, 0x6e73, 0x54ae, 0x54ac, 0x54b5, 0xce61, 0x6e6e, 0x54b4, 0x6e70, 0x6e71, 0x54ad, 0x6e72, 0x54b3, 0x54af, 0x54b0, 0x54b1, 0x6a7d, 0xce62, 0x5abe, 0x5aca, 0x7234, 0x5ac5, 0x5ac7, 0xd265, 0x7232, 0x5abf, 0x5ac3, 0x5ac6, 0x7230, 0x7233, 0x5ac9, 0x5ac1, 0x5ac2, 0x5ac8, 0x5ac0, 0x5ac4, 0x7231, 0x5fc0, 0x5fbf, 0x7542, 0x5fc5, 0x7544, 0xd640, 0x7541, 0x5fc1, 0x7545, 0x5fc2, 0xd63f, 0xd63d, 0x5fc3, 0x5fc6, 0xd642, 0x7543, 0x63c1, 0xd879, 0x63c4, 0xd87a, 0x63be, 0x63c0, 0xd87c, 0xd87b, 0x63bf, 0x63c2, 0x63c3, 0x5fc4, 0x63bd, 0x7878, 0x66f7, 0x66fa, 0x66fc, 0x66f5, 0x66f6, 0x66f9, 0x66fb, 0x7879, 0x7877, 0x7876, 0x66f8, 0x66f4, 0x69f6, 0x7a3b, 0xdd29, 0x69f7, 0xdd28, 0x6cb8, 0x7b28, 0x6cba, 0x7b29, 0x6cb7, 0x6cb9, 0x7b72, 0x6ea1, 0x7b71, 0x6fcc, 0x6fcb, 0x6fca, 0xe149, 0x71b7, 0x71b8, 0x71ba, 0x71b9, 0xe17d, 0x22f0, 0x4869, 0x5351, 0x39c8, 0x617d, 0x47c1, 0x773b, 0xdb2f, 0x66fd, 0xe046, 0xe14a, 0x4b44, 0xaf29, 0x5d3d, 0xb876, 0xb875, 0x5d3c, 0xb877, 0x40b6, 0x617e, 0x40b8, 0x40b7, 0xbe74, 0x47c2, 0x6657, 0x4eab, 0x4eae, 0x4ead, 0x4eac, 0x54b7, 0x54b9, 0x54b8, 0xce65, 0x7236, 0xd266, 0xce64, 0x7235, 0xd646, 0x7546, 0x5fc7, 0x5fc9, 0x5fc8, 0xd87e, 0xd87d, 0x773c, 0xd921, 0xdb31, 0x67a1, 0x66fe, 0x69f8, 0x7a3c, 0xdd2a, 0xde61, 0x7b2a, 0x6ea3, 0x6ea2, 0x7d28, 0x4b45, 0x2dd0, 0x5352, 0x39cb, 0x39c9, 0x39ca, 0x40ba, 0x40bb, 0x47c9, 0x40b9, 0x47c3, 0x47c7, 0x47c6, 0x47c8, 0x6658, 0x47c5, 0x47c4, 0x47ca, 0xc454, 0x4eb1, 0x4eaf, 0xc95c, 0x4eb0, 0x54bc, 0x54ba, 0xce66, 0x54bb, 0x5acb, 0x5fca, 0x5fcb, 0x773d, 0xdb32, 0x67a2, 0x69f9, 0x7a3d, 0x6cbb, 0x6ea4, 0x7b73, 0x6fcd, 0x71bb, 0x4b46, 0x5354, 0x5355, 0x2dd1, 0xaf2a, 0xaf2c, 0x2dd2, 0x5353, 0x5839, 0xb37b, 0x5837, 0xb37a, 0x5836, 0x583d, 0x5835, 0x583e, 0x33a1, 0x583b, 0x5838, 0x583c, 0x583a, 0x5834, 0xb37c, 0x5d45, 0xb87e, 0x5d3f, 0x39cf, 0x5d44, 0xb923, 0xb929, 0x5d46, 0x5d40, 0x5d41, 0xb879, 0x39cd, 0xb87b, 0xb925, 0x5d3e, 0xb922, 0x39ce, 0x5d43, 0x39cc, 0x5d42, 0xb87a, 0x622b, 0xbe7c, 0x622d, 0xbe7d, 0x40be, 0x622c, 0x6221, 0x6225, 0xbf24, 0x666b, 0x47cf, 0x40c0, 0x6226, 0xbe7e, 0xbe75, 0x40c3, 0x40c4, 0x622a, 0x40c6, 0xbf21, 0x40c8, 0xbf23, 0x40c9, 0x40bd, 0x40bc, 0x40ca, 0x6229, 0x40c7, 0x40c5, 0x6227, 0x6223, 0x622e, 0x40c1, 0x40c2, 0x40bf, 0xbe78, 0x6228, 0xbf22, 0x6224, 0x6222, 0x47ce, 0x6666, 0x6661, 0xc460, 0xc459, 0x665c, 0xc463, 0x666c, 0x665d, 0xc455, 0x6659, 0x6668, 0x6665, 0x6667, 0xc458, 0x665e, 0x6663, 0x665a, 0x665b, 0x47d6, 0x47d3, 0x47cb, 0x47d0, 0xc45b, 0x6669, 0x47d7, 0x666a, 0x6660, 0xc45c, 0xc461, 0x47cd, 0xc456, 0x47d5, 0x47d1, 0x47d4, 0x47d2, 0x6664, 0x47cc, 0x665f, 0xc45d, 0x4eb4, 0x6b22, 0x6b25, 0xc95f, 0x4eb6, 0xc964, 0x6b2d, 0x4eb5, 0x6b27, 0xc963, 0x6e78, 0x4eb7, 0x6b2c, 0x4eb3, 0x6b2e, 0xc95e, 0xc962, 0xc96b, 0x6b23, 0xc968, 0x6662, 0x6b26, 0xc960, 0x6b24, 0x6b28, 0x6b2a, 0x6b21, 0x6b2f, 0x6b2b, 0xc965, 0x6b29, 0x4eb2, 0xc966, 0xce74, 0x6f21, 0xce67, 0x6e7b, 0xce72, 0xce70, 0xce6e, 0x6f24, 0xce6c, 0x54bf, 0x6f25, 0x54cb, 0x54c4, 0x6e74, 0x54cc, 0x54c6, 0x6e7e, 0x54c7, 0xce73, 0x6e7d, 0x54ca, 0x6e77, 0x54c8, 0x54be, 0x6e76, 0x5ad6, 0x6e7c, 0xce75, 0x6e79, 0xce69, 0x6f23, 0xce6a, 0x54bd, 0xce76, 0x54c1, 0x6e75, 0x54c0, 0x54c2, 0x54c3, 0x6f22, 0x54c5, 0x54c9, 0x54cd, 0x6f26, 0x723c, 0x5ad1, 0x5ad7, 0x5ad4, 0x5acc, 0x5ad8, 0x5acd, 0xd26a, 0x5ad3, 0xd26b, 0x7237, 0x723d, 0x5ad9, 0xce6f, 0xd267, 0x7239, 0xd26e, 0x7243, 0x723e, 0x5adb, 0x5ad5, 0x723a, 0x5ace, 0x7244, 0x5acf, 0x5ad0, 0x7245, 0x7242, 0x6e7a, 0xd269, 0x7238, 0x5adc, 0x7246, 0xd268, 0x723f, 0x5ada, 0x723b, 0x7240, 0x7241, 0x754e, 0x5fd0, 0x5fd9, 0x5fd6, 0x5fd8, 0xd649, 0x754b, 0x5fd1, 0xd64a, 0x5fd7, 0x7547, 0x5fd3, 0x754f, 0x5fcf, 0x5fd4, 0x5fdb, 0x5ad2, 0x5fd5, 0x5fce, 0x7548, 0x5fcd, 0x7549, 0x5fdc, 0x754a, 0x5fda, 0x754d, 0x5fcc, 0xd648, 0x754c, 0x5fd2, 0x63c7, 0x63d5, 0x63d0, 0x63d2, 0x63c6, 0x773e, 0xd92a, 0x63c5, 0x7741, 0x7740, 0xd926, 0x63d4, 0x63cc, 0x63c9, 0x63cf, 0xd924, 0x63c8, 0xd928, 0x63ca, 0x63d3, 0x63d1, 0xd923, 0x773f, 0x63d8, 0x63d6, 0x63cd, 0x63d7, 0x63ce, 0xdb34, 0x67a6, 0x787a, 0x67ad, 0xdb35, 0x6cbe, 0x7923, 0x63cb, 0x67a4, 0x787d, 0x67a5, 0x67aa, 0xdb36, 0xdd33, 0x7921, 0x7922, 0x67a3, 0x67ac, 0x67ae, 0x67a7, 0x67a9, 0x67ab, 0x67a8, 0x67af, 0x787c, 0x7924, 0x787e, 0x787b, 0x69fc, 0x7a42, 0x69fa, 0xdd30, 0xdd2c, 0x69fe, 0xdd32, 0x6aa1, 0x7a40, 0x6aa2, 0x69fd, 0xdd2b, 0x69fb, 0x7a43, 0x7a3f, 0x6aa3, 0xdd2e, 0x7a41, 0x7a3e, 0xdc6d, 0x7b2b, 0xde62, 0x7b2c, 0x6cbd, 0x6cbc, 0x6cbf, 0x6cc0, 0xde63, 0x7b2d, 0x6ea5, 0x6eaa, 0x7b74, 0xdf61, 0x6ea7, 0xdf62, 0x6ea6, 0x6ea9, 0x6ea8, 0xe048, 0x6fd1, 0x7c48, 0x6fd0, 0x6fce, 0xe047, 0x6fcf, 0xe049, 0xe07b, 0x7c6a, 0x7c69, 0x70cf, 0x70d0, 0x7c6b, 0xe14b, 0x71bc, 0x71bd, 0x7d34, 0xe16b, 0x7d3a, 0xe17e, 0x71f7, 0x72b6, 0x4b47, 0x39d0, 0xb92a, 0x39d1, 0x47d8, 0x4eb8, 0x54ce, 0x7551, 0xd64d, 0x7550, 0x63d9, 0x67b0, 0xdf64, 0x6fd2, 0x4b48, 0x33a2, 0x583f, 0x5d47, 0x47da, 0x47d9, 0x6f27, 0x54cf, 0x6f28, 0x5fdd, 0x7742, 0xdd34, 0xe221, 0x7d43, 0x4b49, 0x28eb, 0x33a3, 0xb92d, 0x5d48, 0xb92c, 0x39d2, 0x39d3, 0xbf2a, 0x40cb, 0xbf29, 0x622f, 0x666d, 0xc464, 0x47dc, 0x47db, 0x47dd, 0xc96d, 0x4eb9, 0x4eba, 0x6b30, 0x7247, 0x6f29, 0x7248, 0x5fe1, 0x5fde, 0x5fe0, 0x5fdf, 0x7552, 0xd92b, 0x63da, 0x67b2, 0x67b1, 0x25a4, 0x5841, 0x5840, 0x33a4, 0xb92e, 0x39d4, 0xbf2c, 0xbf2b, 0x40cd, 0x40cc, 0x6230, 0xbf2d, 0x47df, 0x47e0, 0x47de, 0xc465, 0x666f, 0x666e, 0x6b32, 0x6b31, 0xce7a, 0x54d0, 0x5adf, 0x5add, 0x5ade, 0x7249, 0x5fe3, 0x5fe2, 0xd64f, 0x63dd, 0x63dc, 0x63db, 0x67b3, 0xe14d, 0x71f8, 0x4b4a, 0x5356, 0xaf2e, 0x5357, 0x5842, 0x5843, 0x33a6, 0x33a5, 0x39d5, 0xb930, 0x5d4e, 0x5d4c, 0x5d49, 0x5d4d, 0x5d4b, 0x5d4a, 0xb932, 0xb931, 0x6231, 0x40d0, 0xbf2f, 0x6674, 0x6233, 0x6238, 0x40d2, 0x623a, 0x6239, 0x623c, 0x40d1, 0x40ce, 0x6236, 0x6232, 0x6234, 0x40cf, 0x623b, 0x6237, 0x6235, 0x6676, 0x6675, 0x6673, 0x6677, 0x6671, 0x6672, 0xc469, 0x6670, 0x47e1, 0xc467, 0x4ebc, 0xc970, 0x6b34, 0x6b35, 0x6b33, 0xc972, 0x4ebb, 0xc971, 0x4ebd, 0x54d3, 0x54d5, 0xce7e, 0x6f32, 0x54d6, 0x6f2b, 0x54d2, 0x6f2a, 0x6f34, 0x6f30, 0x6f31, 0x6f2d, 0x54d1, 0x6f2c, 0x54d7, 0x54d4, 0xce7d, 0x6f33, 0xcf22, 0x6f2e, 0x6f2f, 0x5ae1, 0xd275, 0x5ae3, 0x5ae2, 0xd273, 0x5ae4, 0x724a, 0x5ae0, 0xd651, 0xd652, 0x7556, 0x5fe4, 0x7553, 0x7557, 0x7555, 0x7554, 0x63de, 0x63e1, 0x63e0, 0xd92e, 0x63df, 0x7743, 0x67b4, 0x67b5, 0x7925, 0x67b6, 0x7926, 0xdb38, 0x7a45, 0x7a44, 0x6cc1, 0xde65, 0xde66, 0x7b2e, 0x6cc2, 0x6eab, 0x7b75, 0x7b76, 0x6fd3, 0xe04a, 0x7c6d, 0xe14e, 0x4b4b, 0xb933, 0x5d50, 0x5d4f, 0x47e2, 0x47e3, 0x6b36, 0x5ae5, 0x6f35, 0x5ae6, 0x5fe5, 0x4b4c, 0xa43a, 0x2dd3, 0x5359, 0x5358, 0x33a7, 0x5844, 0x33a8, 0x39d8, 0xb939, 0x39d7, 0xb937, 0x39d6, 0xb935, 0xb938, 0x40d4, 0x623f, 0xbf39, 0xbf34, 0x40d3, 0x623e, 0xbf37, 0xbf30, 0xbf33, 0x40d5, 0x623d, 0xbf38, 0x47e5, 0x47e8, 0x47e6, 0x47e7, 0x47eb, 0x47e4, 0x47ec, 0x47e9, 0x47ea, 0x6b38, 0x4ebe, 0xc975, 0xc973, 0x6b37, 0xc974, 0x54db, 0x54d9, 0xcf26, 0x6f36, 0x54d8, 0x54da, 0xcf25, 0x6f37, 0xcf23, 0x5ae7, 0xd277, 0x5ae8, 0x7558, 0xd931, 0x67b8, 0x67ba, 0x67b7, 0x67b9, 0x6aa4, 0x6cc3, 0x71de, 0x4b4d, 0x535a, 0x33a9, 0x33ab, 0x33aa, 0x39db, 0x5d52, 0xb93e, 0x39d9, 0xb93a, 0x5d51, 0x39dc, 0xb93d, 0x39dd, 0x39da, 0x40e1, 0x6247, 0x40d9, 0x40df, 0xbf3f, 0xbf3a, 0x6242, 0x6245, 0x40d8, 0x6240, 0x40dc, 0x47f2, 0x6244, 0xbf3b, 0x40d7, 0xbf3e, 0x40dd, 0x40da, 0x40e0, 0x40d6, 0x40de, 0x6243, 0x6246, 0x40db, 0x6241, 0x6679, 0x47ee, 0x6678, 0x47f5, 0x47f4, 0x6721, 0x6722, 0x47f6, 0x667a, 0x47f3, 0x667e, 0x47f8, 0x47ef, 0xc46b, 0x47f1, 0x667b, 0x47ed, 0x47f0, 0x47f7, 0x667c, 0x47f9, 0x667d, 0x6b39, 0x4ec3, 0x4ec9, 0x4ec1, 0x4eca, 0xc97b, 0x4ec0, 0x4ec5, 0x4ecb, 0x4ec8, 0x4ec7, 0x4ec6, 0xc97a, 0x4ebf, 0x4ec4, 0xc979, 0x4ec2, 0x6f3c, 0x6f39, 0x54e4, 0x54e9, 0x54eb, 0x54e8, 0x54e1, 0x54e3, 0x54ed, 0x54ea, 0x54e5, 0x54ee, 0x54e2, 0x54ec, 0x6f3a, 0x6f40, 0x6f3e, 0x54dc, 0x6f3f, 0x6f3b, 0x54dd, 0x54df, 0x54de, 0x54e6, 0x54e7, 0xcf2c, 0x6f3d, 0xcf2b, 0x6f38, 0x54e0, 0x5af2, 0x724c, 0xd27e, 0x5ae9, 0x724d, 0x7250, 0x5aee, 0x5aeb, 0x724f, 0xd27b, 0x5aef, 0x5af0, 0x5aea, 0x5af3, 0x5aec, 0x5af1, 0x724e, 0xd27c, 0x724b, 0x5aed, 0xd654, 0x5feb, 0x755b, 0x7559, 0x755c, 0x755a, 0x5fea, 0x5fe7, 0x5fe6, 0xd655, 0x5fe9, 0x5fe8, 0x63ef, 0x7749, 0x63e6, 0x63e5, 0xd932, 0x7744, 0x63eb, 0x63ea, 0x63e2, 0x63ed, 0x63e7, 0x7748, 0x63e4, 0x63ec, 0x63e3, 0x7745, 0x7747, 0x63e8, 0x7746, 0x63e9, 0xdb3a, 0x63ee, 0x67be, 0xdb39, 0x792b, 0x67bb, 0x67bf, 0xdb3b, 0x7928, 0x67bd, 0x792d, 0xdb3c, 0x792a, 0xdb3d, 0x67bc, 0x792c, 0x67c0, 0x7927, 0x7a47, 0x7a49, 0xdd37, 0x6aa7, 0x7a48, 0x6aa5, 0x7929, 0x6aa6, 0x7a46, 0x7b2f, 0x7b31, 0x6cc5, 0x7b30, 0x6cc4, 0x6eb0, 0x7b77, 0x6eaf, 0x7b78, 0x6ead, 0x6eac, 0x6eb1, 0x6eb2, 0x6fd4, 0xe04b, 0x6eae, 0x70d4, 0x70d1, 0x70d2, 0x70d3, 0x7d29, 0xe150, 0x71c0, 0x71bf, 0x71be, 0x71df, 0xe16c, 0x72ae, 0x71f9, 0x7d3b, 0x4b4e, 0x5845, 0xb93f, 0xb940, 0xbf40, 0xc473, 0x6723, 0xc97d, 0xc97c, 0xcf30, 0xcf32, 0xcf2f, 0xcf31, 0x6f41, 0x5af4, 0xd935, 0x774a, 0xd936, 0x67c1, 0xdb3f, 0xdd38, 0x71fa, 0x4b4f, 0x4f51, 0x535c, 0x535b, 0x5848, 0x33ac, 0x5846, 0x33ad, 0x5847, 0xb941, 0x39e2, 0x39de, 0xb947, 0x5d53, 0x39e1, 0x39e0, 0x39df, 0x5d54, 0x39e3, 0x39e4, 0xbf45, 0x40e8, 0x40e6, 0x40ea, 0x40eb, 0x40f1, 0xbf47, 0x40ed, 0x40ef, 0x40e7, 0x40e2, 0x40ee, 0xbf44, 0xbf46, 0x40f0, 0x40e9, 0x40ec, 0x40e3, 0x6249, 0x40e5, 0x40e4, 0x6248, 0x624a, 0xbf49, 0x6726, 0x47fb, 0x47fd, 0x47fc, 0x48a3, 0x6724, 0xc476, 0x47fe, 0x47fa, 0x48a1, 0x48a2, 0x6725, 0x6727, 0x48a4, 0x4ecf, 0x4ece, 0x4ecc, 0x4ecd, 0x6b3b, 0x6b3d, 0x6b3a, 0x6b3c, 0x54f5, 0x54f6, 0x54f1, 0xcf36, 0x54f2, 0x6f43, 0x6f48, 0x6f42, 0x6f49, 0x6f44, 0x54f3, 0xcf33, 0x54f4, 0x54f0, 0x6f4a, 0x6f46, 0xcf35, 0x6f45, 0x6f47, 0xcf34, 0x54ef, 0xd324, 0x5af6, 0x7252, 0xd322, 0xd321, 0x5af8, 0x7254, 0x5afb, 0x5af7, 0x5af5, 0x5afa, 0x7253, 0x5af9, 0x7251, 0xd325, 0xd659, 0x755e, 0x7561, 0x5fed, 0xd65a, 0x755f, 0x5fec, 0x755d, 0x7560, 0x63f0, 0x63f1, 0x63f2, 0x774b, 0xd937, 0x63f3, 0x774c, 0x792f, 0x67c4, 0x67c5, 0x67c3, 0x67c2, 0x67c6, 0x792e, 0x6aab, 0x6aa9, 0x6aaa, 0x6aac, 0x6aa8, 0x6aad, 0x6cc7, 0xde67, 0x6cc8, 0x6cc6, 0x7b32, 0x6eb3, 0x7b79, 0x6eb4, 0x6fd6, 0x6fd5, 0xe222, 0x4b50, 0x624b, 0xbf4b, 0xc477, 0x6728, 0xc478, 0xca21, 0xca22, 0x6b3e, 0xcf37, 0xd327, 0x7256, 0xd326, 0x7255, 0xd938, 0x7930, 0x7a29, 0x7b33, 0x4b51, 0x5849, 0x6729, 0xcf39, 0x67c7, 0xa72f, 0xa43b, 0xa730, 0x25a6, 0xa733, 0x4b52, 0x4b55, 0x4b54, 0x4b53, 0xa731, 0x25a5, 0xaa72, 0x28ed, 0xaa70, 0x28ef, 0x4f52, 0xaa74, 0x4f54, 0x28ec, 0x28ee, 0x4f53, 0x28f1, 0x28f0, 0x28f2, 0xaa73, 0xaa71, 0x2dd7, 0x2dd5, 0x535f, 0x2dd4, 0x5364, 0x5361, 0x535e, 0xaf31, 0x5365, 0xaf32, 0x5360, 0x5363, 0x5362, 0x2dd6, 0xaf33, 0x535d, 0xaf30, 0x584f, 0x33af, 0x33b5, 0x584c, 0x5853, 0xb425, 0x584e, 0x33b2, 0x33b4, 0x5851, 0x33ae, 0x33b1, 0x584d, 0x584a, 0x33b0, 0x5850, 0x33b3, 0x5852, 0x584b, 0xb427, 0xb426, 0x39e6, 0x39e9, 0x5d56, 0xb94b, 0x5d60, 0x5d5c, 0x39e7, 0xb94a, 0xb94e, 0x5d64, 0x5d5d, 0x5d62, 0x5d58, 0x5d55, 0x5d57, 0x5d63, 0x39e8, 0x5d5b, 0x5d5e, 0x5d5a, 0x5d5f, 0x39ea, 0x5d61, 0x5d59, 0x39e5, 0xb94c, 0xbf4f, 0xbf50, 0xbf4d, 0xbf4c, 0xbf51, 0x40f2, 0x624c, 0x40f4, 0xbf55, 0x624e, 0x6250, 0x40f3, 0x624d, 0x6251, 0xbf56, 0x624f, 0xbf54, 0xbf57, 0x672f, 0x48a9, 0x6737, 0x48a6, 0xc47d, 0x6738, 0x672d, 0xc479, 0x48a7, 0xc47c, 0xc47a, 0x6732, 0xc47b, 0x48a8, 0x672b, 0x672a, 0xc47e, 0x6735, 0x6734, 0x6733, 0x6731, 0x6736, 0x48a5, 0x672c, 0x672e, 0x6730, 0x6b40, 0x6b43, 0xca24, 0x6b47, 0x6b41, 0x6b46, 0x6b44, 0xca27, 0x6b3f, 0xca26, 0x6b45, 0x6b42, 0x54fa, 0x6f4d, 0x6f4b, 0xcf3c, 0x54fb, 0x6f4e, 0x6f4c, 0x54f9, 0x54f8, 0xcf3b, 0x725a, 0x54f7, 0x7258, 0x7257, 0x5afc, 0x6f4f, 0x7259, 0x5afd, 0x725c, 0x5afe, 0x725b, 0x7563, 0x5fef, 0x7562, 0x7567, 0x7565, 0x7566, 0x774e, 0x7564, 0x5fee, 0x5ba1, 0x774d, 0x774f, 0xd93a, 0x7931, 0x7932, 0x6aae, 0x7c4a, 0x7c49, 0x4b57, 0xa25e, 0xa25d, 0x22f5, 0x5854, 0xa43c, 0x22f2, 0x22f3, 0x22f1, 0xa43d, 0x22f4, 0x25aa, 0x25a7, 0x25ac, 0x25a8, 0x4b58, 0x4b5b, 0xa735, 0x25a9, 0x4b5a, 0x25ab, 0xa739, 0xa734, 0x4b59, 0xb951, 0xaa77, 0x28f5, 0x28f7, 0x4f57, 0x28f3, 0x28f6, 0x28f4, 0x4f55, 0x4f58, 0xaa75, 0x4f56, 0xaa78, 0xaf35, 0x2dd9, 0x2ddd, 0x2dda, 0xaf38, 0x5368, 0xaf34, 0x5369, 0xaf3e, 0x2ddc, 0xaf37, 0x2dde, 0x2de0, 0xaf3c, 0x5366, 0x2ddf, 0xaf3b, 0x5367, 0x39f1, 0x2ddb, 0x33b6, 0x33bf, 0x33bd, 0x33b8, 0x33b9, 0x33be, 0x33c0, 0x5856, 0xb429, 0x33bb, 0x33b7, 0x5855, 0x5857, 0x33ba, 0x33c1, 0x33bc, 0x5d65, 0x39f4, 0x39ec, 0x39f2, 0x39f3, 0x5d66, 0xb94f, 0x39eb, 0x39ed, 0x2dd8, 0x39ef, 0x39f0, 0x39ee, 0x6253, 0xb952, 0x40fb, 0x5ba2, 0x40fc, 0x40f9, 0x5d67, 0x6255, 0x40f8, 0x40fe, 0x40fd, 0x6252, 0x41a3, 0x40f7, 0x41a2, 0x40f5, 0x41a1, 0x40fa, 0x6254, 0xbf59, 0x48b0, 0xc523, 0x48ab, 0x48b1, 0x48ac, 0x48aa, 0x48ad, 0x6739, 0xc524, 0x48af, 0xc525, 0x48ae, 0x673a, 0x6b49, 0x6b48, 0x4ed6, 0x4ed9, 0x4ed1, 0x4ed5, 0x6b4a, 0x4ed4, 0x4ed2, 0x4ed8, 0x4ed3, 0x4ed0, 0x4ed7, 0xca2a, 0x55a3, 0x6f52, 0x63f4, 0x54fe, 0x55a1, 0x54fd, 0x40f6, 0x6f51, 0x55a4, 0x54fc, 0x6f50, 0x6f53, 0x55a2, 0x5ba3, 0x725d, 0x5ba4, 0x5ba5, 0xd32b, 0x5ff0, 0x7568, 0x63f5, 0x63f6, 0xd93c, 0xd93b, 0x63f7, 0x67c9, 0x67c8, 0x6ab0, 0x6aaf, 0x6cca, 0x6ccb, 0x6cc9, 0x6eb5, 0x7b7a, 0x4b5c, 0x536b, 0x536a, 0x585a, 0x5859, 0x33c3, 0x33c4, 0x33c2, 0xb42a, 0x5858, 0x39f8, 0xb955, 0x39f9, 0x39f5, 0x5d68, 0x39f6, 0xb954, 0x39f7, 0x41a6, 0x41a8, 0x41a4, 0x41a7, 0x6256, 0x41a5, 0x6257, 0xc528, 0x42f9, 0x673d, 0x673c, 0xc527, 0x673b, 0x48b2, 0x48b3, 0x4edb, 0x4edd, 0x6b4e, 0x6b4b, 0xca2c, 0x6b4d, 0x6b4c, 0x4edc, 0x4eda, 0xca2b, 0xca2d, 0x55ab, 0x55a8, 0x55a9, 0x6f57, 0x55aa, 0x55a5, 0x55a6, 0x6f54, 0xcf3f, 0x6f55, 0x55a7, 0x6f56, 0xcf40, 0x5ba9, 0xd32d, 0x5baa, 0x5ba7, 0x5ba8, 0x725e, 0x5ba6, 0xd32c, 0xd32f, 0x5ff4, 0x5ff1, 0x5ff3, 0x756b, 0x5ff7, 0x756a, 0x5ff5, 0x5ff8, 0x5ff6, 0x5ff2, 0x7569, 0x63f9, 0x63fa, 0x63f8, 0xd93d, 0x63fc, 0x7750, 0x7751, 0x67cb, 0x7934, 0x63fb, 0x67ca, 0x7933, 0x6ab3, 0x6ab4, 0x7a4a, 0x6ab2, 0x6ab1, 0x6ccc, 0x7b34, 0xde68, 0x6fd7, 0x70d6, 0x70d5, 0xe07e, 0x7c6e, 0x7d2a, 0x70d7, 0x71e0, 0xe16d, 0x7d3c, 0x4b5d, 0x4f59, 0x673e, 0x7a4b, 0x4b5e, 0x536c, 0x5d69, 0x6258, 0x7752, 0x4f5a, 0x2de2, 0x2de1, 0x33c5, 0xb430, 0x585d, 0x585b, 0x585f, 0x33c7, 0xb42d, 0x585e, 0x585c, 0xb42f, 0xb42e, 0xb431, 0x33c6, 0x5d6c, 0x3aa1, 0xb958, 0x5d6b, 0x5d6d, 0x3aa6, 0x5d6f, 0x3aa3, 0x3aa4, 0x39fa, 0x5d6e, 0x3aa7, 0xb957, 0x39fc, 0xb956, 0x39fd, 0x39fb, 0x5d6a, 0xb959, 0x3aa5, 0x39fe, 0x3aa2, 0x41b4, 0xbf5d, 0x41b3, 0x41b1, 0x41a9, 0x41b8, 0x41ac, 0x41b6, 0x41bd, 0x41b5, 0x6260, 0xbf66, 0x625c, 0x41aa, 0xbf60, 0x41b0, 0x625e, 0xbf68, 0x41af, 0x625f, 0x6261, 0x41b2, 0xbf69, 0x6259, 0x625a, 0x41be, 0x41bc, 0xbf62, 0x41bb, 0x41ad, 0xbf65, 0x41b9, 0x625d, 0xbf5e, 0xbf63, 0x625b, 0x41ba, 0x41ab, 0x41ae, 0x41b7, 0x4fa2, 0x48bd, 0xc52e, 0x48b6, 0x48c9, 0x48d2, 0x48b9, 0x6749, 0xc52b, 0x48c6, 0x673f, 0x6741, 0x674d, 0x48b7, 0xc537, 0xc52f, 0x6742, 0x6744, 0x674e, 0x6743, 0xc539, 0xc538, 0x674c, 0x48bf, 0x48b4, 0x674a, 0x48be, 0x6746, 0x48d0, 0x674b, 0x48ce, 0x48c2, 0x48cc, 0x6748, 0x48b5, 0x48cf, 0x48ca, 0xc52a, 0x48d1, 0x6740, 0xc52d, 0x674f, 0x6745, 0xc531, 0xc529, 0x48bb, 0xc534, 0x48c3, 0x48c7, 0xc533, 0x48cb, 0x6747, 0x48ba, 0x48b8, 0x48c4, 0xc532, 0xc535, 0x48c1, 0x48c0, 0xc536, 0x48c5, 0x48c8, 0x48cd, 0x4ee0, 0x6b4f, 0x4eea, 0x4ee2, 0x6b55, 0x6b59, 0x4ef3, 0x4efb, 0x4eec, 0x6b51, 0xca34, 0x4ef0, 0x48bc, 0xca35, 0x6b52, 0x4ef7, 0x4efc, 0x4ef4, 0xca2f, 0x4ef6, 0x4fa1, 0x4ef8, 0x4ee6, 0x4eef, 0xc530, 0xca38, 0x6b5a, 0xca33, 0x6b56, 0x4ee4, 0x4ef1, 0x6b54, 0x4eeb, 0x6b53, 0x4ef9, 0x4ee8, 0x4ee1, 0x6b57, 0x4efe, 0xca39, 0x4ee3, 0x4ef5, 0x4ef2, 0x4eed, 0x4edf, 0x4ede, 0x4ee7, 0x4efa, 0x6b58, 0x4efd, 0x4ee5, 0x4ee9, 0x6b50, 0xca32, 0xca37, 0xca31, 0x6f63, 0x6f5e, 0x55cd, 0x55c9, 0x55b1, 0x6f5a, 0xcf42, 0xcf50, 0x6f59, 0x6f5f, 0xcf43, 0xcf41, 0x55af, 0x6f5d, 0x55bb, 0x55ad, 0x55ae, 0x6f58, 0x55cc, 0x6f61, 0x55be, 0x55c3, 0x55bd, 0x5bbc, 0x55b9, 0x55c1, 0x55bf, 0x55b2, 0x55ac, 0x55c7, 0x6f60, 0x55c8, 0xcf48, 0x55c2, 0xcf49, 0x55b7, 0x55b5, 0x55b0, 0xcf4b, 0xcf4e, 0xcf44, 0x55b8, 0x55c5, 0x55b4, 0x55c4, 0x55ca, 0xcf51, 0x6f5c, 0xcf45, 0x55c0, 0x55c6, 0x55bc, 0x55b6, 0x6f5b, 0xcf52, 0xcf4c, 0x4eee, 0x55ba, 0x6f62, 0x55b3, 0xcf4d, 0xca30, 0x5bc1, 0x7261, 0x5bc0, 0x5bbe, 0x5bd0, 0x7265, 0xd335, 0x5bcd, 0x5bc5, 0x5bcf, 0x5bb7, 0x5bc3, 0xd33d, 0x7267, 0xd33e, 0x5baf, 0xd338, 0x5bad, 0x5bce, 0xd332, 0x5bcc, 0x5bcb, 0x5bbb, 0x5bba, 0x5bb0, 0x7269, 0x5bb6, 0x5bbf, 0x5bca, 0x726c, 0x5bd1, 0xd336, 0x7573, 0x726e, 0x7268, 0x5bb4, 0xd337, 0x5bbd, 0x5bac, 0x5bae, 0x725f, 0x726b, 0x7264, 0x5bb5, 0x5bc4, 0x55cb, 0x726a, 0x5bab, 0x756e, 0x5bc6, 0x5bc9, 0x7266, 0xd33b, 0x5bb9, 0x726d, 0x7263, 0xd33c, 0xd339, 0xd33a, 0x7262, 0x5bc2, 0x5bc8, 0x7260, 0x5bb2, 0x5bc7, 0x5bb3, 0xd331, 0x5bb8, 0x5ffe, 0xd665, 0x60a5, 0x7570, 0x7572, 0x60ab, 0x756c, 0x60b9, 0x60b1, 0x60a6, 0x60a7, 0x60b0, 0xd666, 0x7579, 0x60af, 0x5ffd, 0x60ae, 0x60a2, 0x60ba, 0x7578, 0x7576, 0x60a3, 0xd65d, 0x60b6, 0xd667, 0x60a8, 0x60b5, 0xd664, 0x60b7, 0x5ffc, 0x7571, 0xd65b, 0x60b8, 0xd668, 0xd65e, 0x60ac, 0xd66b, 0x7575, 0x60a9, 0xd661, 0x7577, 0x60b2, 0xd662, 0xd663, 0xd65f, 0x756f, 0x60a4, 0x60b3, 0xd65c, 0x60ad, 0x5bb1, 0x60b4, 0x60a1, 0xd660, 0x7574, 0xd66a, 0x64af, 0x756d, 0x5ffa, 0x64ac, 0x64a5, 0x7754, 0xd943, 0x63fe, 0x64b0, 0x64a7, 0x60aa, 0xd940, 0x64b2, 0x64a1, 0xd942, 0x7753, 0x64ab, 0x7755, 0x775d, 0x775b, 0x64ad, 0x775c, 0x64a3, 0xd949, 0x64a4, 0x64a9, 0x64ae, 0xd93e, 0x5ff9, 0x7756, 0x64b7, 0x64b4, 0x67e1, 0x64aa, 0x64a6, 0x64b5, 0x67d6, 0x64a8, 0x7759, 0xd944, 0x7758, 0x5ffb, 0x775a, 0x64b1, 0x64b3, 0x7757, 0x64b6, 0x63fd, 0x64a2, 0xd946, 0xd945, 0x67df, 0xdb50, 0x67cf, 0x7938, 0x67dd, 0xdb44, 0xdb45, 0x67cd, 0x7939, 0x67d8, 0xdb43, 0x67d4, 0x793e, 0x67de, 0x67ce, 0x67d1, 0x7936, 0x67e0, 0xdb48, 0x67d9, 0x67dc, 0x793c, 0x7941, 0x793f, 0x67d5, 0x67d0, 0xdb4d, 0x793a, 0x793b, 0x67cc, 0x7937, 0xdb4f, 0x7935, 0x793d, 0x67db, 0x7940, 0xdb4a, 0x67d7, 0x67e2, 0x7942, 0xdb41, 0xdb42, 0xdb4e, 0x67d3, 0xdb47, 0x67da, 0xdd41, 0xde6a, 0x6ac1, 0x6ad0, 0x6ac3, 0x6aca, 0x67d2, 0x6ac8, 0x6ab7, 0x6ace, 0x7a4e, 0x6abb, 0x6acd, 0x6ac2, 0xdd43, 0x7a4d, 0xdd3c, 0xdd3f, 0x6ad2, 0x6ac4, 0xdd3e, 0x6ac9, 0x6acc, 0x6ab5, 0x6acf, 0x6ac0, 0x6ac5, 0x6ab9, 0x6abd, 0x6ad1, 0x6ac7, 0x6ab6, 0x6aba, 0x6abc, 0x6ac6, 0xdd3d, 0x7a4c, 0x6abf, 0xdd44, 0xdd45, 0xdd47, 0xdd42, 0xdd3a, 0x6ab8, 0xdd46, 0x6abe, 0x6cd0, 0x6cd4, 0x7b3b, 0x6cd6, 0xde6d, 0x7b35, 0x6cd2, 0x6cd8, 0x7b3a, 0x7b36, 0x7b37, 0x6ccf, 0x6cd5, 0x7b39, 0x6cd3, 0x7b38, 0x6cce, 0x6acb, 0x6cd1, 0x6ccd, 0x6cd7, 0xdf69, 0xdf6e, 0x7b7b, 0x6ebc, 0x6ebf, 0x6ebb, 0x6ebd, 0x6ebe, 0x6eb8, 0x6eb9, 0x6eb6, 0xdf6a, 0xdf6c, 0x6eba, 0x6eb7, 0x7b7c, 0x7b7d, 0xdf6b, 0x6fd9, 0xe052, 0x6fdb, 0xe055, 0xe054, 0xe056, 0x6fda, 0x6fdc, 0xe04f, 0x7c4c, 0xe053, 0x6fd8, 0x7c4b, 0x7c4d, 0xe057, 0x70d9, 0x70da, 0x7c6f, 0x70d8, 0xe122, 0x71c2, 0x71c1, 0x71c3, 0x7d2c, 0x71c4, 0x7d2b, 0x71c5, 0x71e1, 0x71e4, 0x71e3, 0x7d35, 0x71e2, 0xe16f, 0xe223, 0x7d3f, 0x7d3d, 0x7d3e, 0x7d44, 0x72b0, 0x72b1, 0x72af, 0x72b7, 0xe236, 0x4f5b, 0x3aa8, 0x41bf, 0x55ce, 0x67e3, 0x4f5c, 0xaf40, 0x536d, 0x5860, 0xb432, 0x3aa9, 0xb95c, 0x3aaa, 0x5d70, 0x6264, 0x41c1, 0x41c0, 0x6268, 0x6263, 0x41c2, 0x6265, 0x6267, 0x6266, 0x6262, 0xbf6c, 0x6750, 0xc53c, 0xc53a, 0x48d6, 0x48d4, 0x48d5, 0x48d3, 0x6b5b, 0xca3d, 0x6b5e, 0x6b60, 0x6b5f, 0xca3e, 0x6b5c, 0x6b5d, 0x55d0, 0x55cf, 0x6f64, 0x55d1, 0xcf53, 0x55d2, 0x6f65, 0xcf55, 0xcf56, 0x5bd9, 0x5bd7, 0x60c0, 0xd342, 0x5bd5, 0x5bd6, 0x726f, 0x5bd2, 0x5bda, 0x5bd4, 0x5bd8, 0x60bc, 0xd344, 0xd340, 0x60be, 0xd66d, 0x60bf, 0x757e, 0x60bb, 0x757d, 0x60bd, 0x757a, 0x757b, 0x757c, 0x5bd3, 0x7760, 0x64ba, 0x64b8, 0x64b9, 0x775e, 0x7761, 0x775f, 0xd94b, 0xd94a, 0x67e4, 0x67e5, 0x7943, 0xdb53, 0x6ad3, 0x6ad5, 0x6ad4, 0x7a4f, 0x7b3c, 0x6cdb, 0x6cda, 0x6cd9, 0x4f5d, 0xa143, 0x21e9, 0x22f8, 0x486a, 0x22f6, 0x22f9, 0x22f7, 0xa73b, 0xa73a, 0x25ae, 0xa73f, 0x4b62, 0xa73c, 0x4b63, 0x25b0, 0x4b60, 0x25af, 0x25ad, 0x4b61, 0x4b5f, 0xa73d, 0xa73e, 0xaa79, 0x28f8, 0x28fb, 0x4f60, 0x28fa, 0x28f9, 0xaa7c, 0x4f5f, 0x4f5e, 0xaa7b, 0x4f62, 0x28fc, 0x4f61, 0x2de7, 0x536f, 0x5370, 0x5371, 0x2de8, 0x2de4, 0x536e, 0x2de5, 0x2de6, 0x2de3, 0xb436, 0x5867, 0xb434, 0xb95e, 0x5864, 0x33c8, 0x5865, 0x5868, 0x33c9, 0xb433, 0x5863, 0x5861, 0x5862, 0x5866, 0x5d71, 0x3aad, 0x5d79, 0x3aac, 0xb961, 0x3aaf, 0x5d75, 0x3aae, 0x6270, 0x5d73, 0x5d76, 0x5d72, 0x5d77, 0x5d78, 0x5d74, 0xb965, 0xbf71, 0x3aab, 0x626c, 0x41c4, 0xbf72, 0x41c8, 0xbf73, 0xbf75, 0x41c7, 0x6271, 0x626d, 0x626e, 0x41c3, 0x41c5, 0x41c6, 0x6269, 0x626b, 0xbf70, 0x626f, 0x626a, 0xc540, 0x48d9, 0x48d7, 0x48d8, 0x6752, 0x6753, 0xc542, 0x48da, 0x6751, 0x6b61, 0x6b63, 0x6b62, 0xca45, 0x4fa3, 0xca46, 0xca44, 0x4fa4, 0x55d4, 0xcf5a, 0x55d3, 0xcf5b, 0x7270, 0x7271, 0x5bdb, 0x7272, 0xd348, 0x60c3, 0xd670, 0x60c1, 0xd66f, 0x60c2, 0x7621, 0xd671, 0x64bb, 0x7944, 0xdd49, 0xaa7d, 0xd349, 0x7622, 0x4f63, 0x5869, 0x33ca, 0xb439, 0x3ab0, 0x5d7a, 0x6272, 0x41c9, 0x41cb, 0x6274, 0x6273, 0x6275, 0x6276, 0x41ca, 0x6756, 0x6757, 0x6755, 0x6b64, 0x6754, 0x48db, 0xca47, 0xca49, 0x6b65, 0x55d5, 0x5bdc, 0x7273, 0x7623, 0x64bc, 0x64c0, 0x7764, 0x64bd, 0x7765, 0x7763, 0x64c1, 0x7766, 0x64bf, 0x67e6, 0x7762, 0x7945, 0xde70, 0x70db, 0xe125, 0xe22f, 0x4f64, 0x5d7c, 0x5d7b, 0xbf7e, 0xbf7c, 0xbf7b, 0x6277, 0x41cd, 0x41cc, 0x6278, 0xc546, 0x48df, 0x675b, 0x6758, 0x48de, 0x675a, 0x48dc, 0x6759, 0xc547, 0x48dd, 0x4fa5, 0x6b66, 0x55d8, 0x6f66, 0x55d6, 0x6f67, 0x6f68, 0x55d7, 0x6f69, 0xcf60, 0x5bdd, 0xd350, 0x7277, 0x7274, 0x7279, 0x5bdf, 0x7275, 0x5bde, 0x7278, 0xd34d, 0xd34c, 0x7276, 0xd351, 0x60c6, 0x60c8, 0xd674, 0xd675, 0x7624, 0x60c7, 0x7625, 0x60c5, 0x60c4, 0x64c3, 0x64c2, 0x7767, 0x64c4, 0x67eb, 0x7947, 0x67ea, 0x67e7, 0x7946, 0x67e8, 0x67e9, 0x6ad6, 0x6ad7, 0x7a50, 0xdd4f, 0x7b3f, 0xdd4c, 0xdd4e, 0x6cdc, 0xde72, 0xde71, 0x7b3d, 0x7b3e, 0x6cdd, 0xdf71, 0x7b7e, 0x7c21, 0x6ec0, 0xdf72, 0xe059, 0x7c70, 0x70dd, 0x7c72, 0xe126, 0x70dc, 0x70de, 0x7c71, 0x71c6, 0x71fb, 0xe245, 0xaa7e, 0x4f65, 0xc549, 0x675c, 0x4fa6, 0xca4c, 0x55d9, 0x727a, 0x727b, 0xd94f, 0x4f66, 0xc021, 0x6f6a, 0x7948, 0x5372, 0xab21, 0xca4e, 0x727c, 0xde73, 0x7c4e, 0x5373, 0x3ab1, 0x41ce, 0xc024, 0x41d0, 0xc022, 0x41cf, 0x48e3, 0x48e0, 0x675d, 0x675e, 0x48e1, 0x48e2, 0xc54b, 0x4fa8, 0x4fad, 0x6b67, 0x4fa7, 0x4fa9, 0x4fb0, 0x4fab, 0x4faf, 0x4fac, 0x4faa, 0x4fae, 0x6b68, 0xcf62, 0x55dc, 0xcf63, 0x55da, 0x6f6c, 0xcf64, 0x6f6b, 0x55db, 0x6f6d, 0xd353, 0x5be2, 0x5be1, 0x727d, 0x5be0, 0x60c9, 0xd67a, 0x60cb, 0x60cd, 0x60cc, 0xd67b, 0x7626, 0x60ca, 0x64cb, 0x7768, 0x64c9, 0x64cc, 0x7769, 0x64c7, 0xd950, 0x64ca, 0x64c8, 0x64c5, 0x776a, 0x64c6, 0xdb5f, 0xdb5d, 0x67ec, 0xdb5e, 0xdb60, 0x67ee, 0x67ed, 0xdd50, 0x6ad8, 0xdd51, 0x6ad9, 0xde75, 0xde74, 0x6cde, 0xdf73, 0x7c23, 0x7c22, 0x6fdd, 0x6fde, 0x7c73, 0x70df, 0xe128, 0x7d36, 0xe23b, 0x5374, 0x6279, 0x4fb2, 0x4fb1, 0x55de, 0x55dd, 0xd355, 0x7627, 0x60cf, 0x60ce, 0x64cf, 0x64cd, 0x64d0, 0x64ce, 0xd951, 0x7949, 0x67ef, 0x67f0, 0x67f1, 0x6cdf, 0xde76, 0x6ec1, 0xe129, 0x70e0, 0x5375, 0xc54f, 0xcf65, 0x5be3, 0x60d0, 0xdb61, 0x5376, 0xc550, 0x6b69, 0x5be4, 0x776b, 0x64d1, 0x794a, 0xdd53, 0x6ada, 0x6adb, 0x7b40, 0x6fdf, 0x5377, 0x5e21, 0x5e22, 0x3ab2, 0x627a, 0x627b, 0x41d1, 0x627c, 0x6762, 0xc552, 0x6764, 0x48e5, 0x48e6, 0x48e4, 0x675f, 0x6760, 0x6763, 0x6761, 0xca54, 0xca55, 0x4fb3, 0x6b6a, 0x6b6b, 0xca52, 0xca56, 0x55e5, 0x6f70, 0x55e0, 0x55df, 0xcf69, 0x55e4, 0x6f6e, 0xcf67, 0x7326, 0x55e1, 0x55e6, 0x55e3, 0x55e2, 0xcf66, 0x6f6f, 0x7324, 0xd35c, 0x5be6, 0x727e, 0xd359, 0x5be7, 0xd35a, 0xd228, 0x5be5, 0xd358, 0x7323, 0x7321, 0x7325, 0xd35d, 0x7322, 0xd35b, 0xd35f, 0xd95b, 0xd726, 0x60d1, 0x60d6, 0x60d2, 0x60d5, 0x7628, 0xd728, 0x5ec1, 0x60d4, 0x60d3, 0xd959, 0x776e, 0x776c, 0x776f, 0x776d, 0x64d2, 0x64d3, 0x64d4, 0x7770, 0xd956, 0xd958, 0xdb65, 0x67f5, 0x794c, 0x67f3, 0x794d, 0x67f2, 0x67f4, 0x794b, 0x6adf, 0x6adc, 0x6add, 0x6ade, 0x6ce0, 0x7b42, 0xde78, 0x7b41, 0xde77, 0x6ec3, 0x6ec2, 0x7c24, 0xe05d, 0xe05e, 0xe05c, 0x7c4f, 0x7c74, 0x7d2d, 0x71c7, 0x71fc, 0x71fd, 0x5378, 0x41d2, 0x48e7, 0x4fb4, 0x4fb5, 0x6b6c, 0x6b6d, 0x55e7, 0x6f71, 0xd361, 0x7629, 0xd72a, 0x64d5, 0xd95c, 0x7771, 0x67f8, 0x794e, 0x67f7, 0x67f9, 0x67f6, 0x6ce3, 0x6ae0, 0x6ae1, 0xdd56, 0x7a51, 0x6ce2, 0xde7b, 0xde79, 0x6ce1, 0xde7a, 0x6ec4, 0x71fe, 0xe225, 0x5379, 0xde7c, 0xe226, 0x537a, 0xb967, 0x586a, 0x33cb, 0x3ab3, 0xb968, 0x627d, 0x6322, 0x627e, 0x41d3, 0xc55b, 0x6324, 0x6321, 0xc02b, 0xc55c, 0x6323, 0xc554, 0x6766, 0xc559, 0x48e8, 0xc557, 0xca5d, 0x48e9, 0x55e9, 0x6765, 0x6767, 0x6768, 0xc558, 0x4fb7, 0xca5e, 0x4fb6, 0x6b6e, 0x6b6f, 0xca5b, 0x4fb8, 0x55e8, 0x6b71, 0x6f72, 0x6b70, 0x7327, 0x55ea, 0x6f74, 0x6f73, 0x55eb, 0x55ee, 0x55ec, 0x55ed, 0x6f75, 0xcf6b, 0x732c, 0x732a, 0xd365, 0xd366, 0x7329, 0x5be9, 0xd364, 0x732b, 0xd362, 0xd363, 0x5be8, 0x60d7, 0x5bea, 0x7328, 0x5beb, 0x60da, 0x60d8, 0x60d9, 0x60de, 0x7775, 0x60dd, 0x60e0, 0x60df, 0x60dc, 0x60db, 0x762a, 0xd962, 0xd961, 0xd966, 0x64d8, 0xd965, 0x64d7, 0x7774, 0x7772, 0x7773, 0xd963, 0x64d6, 0x67fc, 0xdb69, 0x794f, 0x67fb, 0x67fa, 0x7950, 0x6ae6, 0x6ae5, 0xdd58, 0x6ae3, 0xde7e, 0x6ae2, 0x7a53, 0x7a52, 0x6ae7, 0x6ec5, 0x7c25, 0x6ce5, 0x7b43, 0x6ce4, 0x6ae4, 0xdf78, 0x6ec6, 0x7c50, 0xe12a, 0x7d2e, 0x71c8, 0x72a1, 0x537b, 0x3ab4, 0x60e1, 0x537c, 0xc55f, 0x4fba, 0x4fb9, 0x5bec, 0xd368, 0x60e3, 0xd730, 0x60e2, 0xd967, 0x7776, 0x67fd, 0x67fe, 0x7a54, 0xdf21, 0xe060, 0x72a2, 0x586b, 0x6326, 0x6325, 0x48ea, 0x48ec, 0x676a, 0x48eb, 0x6769, 0x676b, 0x48ed, 0xca63, 0xca62, 0xca66, 0x4fbc, 0x4fbe, 0x4fbd, 0xca61, 0x4fc0, 0xca60, 0xca6c, 0xca64, 0x6b72, 0x4fbf, 0x4fbb, 0xca6a, 0x4fc1, 0xcf73, 0x55f5, 0xcf6d, 0x55f8, 0x55fa, 0x55f0, 0x55f4, 0x55f1, 0x6f77, 0x6f7a, 0x6f7c, 0x55f2, 0x55f3, 0x6f7b, 0x55f6, 0x55f9, 0x55f7, 0x6f7d, 0xcf6e, 0x6f79, 0x55ef, 0x6f76, 0xcf72, 0x6f78, 0xcf74, 0xd370, 0x732e, 0x5bf2, 0x5bf0, 0x5bef, 0xd371, 0x5bf5, 0xd36b, 0x5bf4, 0x5bf3, 0xd36c, 0x5bee, 0x732d, 0x5bed, 0xd36a, 0x5bf1, 0x732f, 0xd734, 0x60e6, 0xd737, 0x60ea, 0x60e7, 0x60e9, 0x60e8, 0x60e5, 0x60eb, 0x60ee, 0x60ec, 0x60ed, 0x762c, 0xd733, 0x762b, 0x60e4, 0x60ef, 0x64dd, 0x64e0, 0x64e2, 0x64e1, 0xd96a, 0x64db, 0x64df, 0x64da, 0xd96b, 0x64dc, 0x7777, 0x64d9, 0xd96d, 0x64de, 0x68ad, 0x68a2, 0x7951, 0xdb6f, 0xdb6d, 0x7952, 0x68a1, 0x68a6, 0x68ac, 0x68a4, 0x68ab, 0xdb6c, 0x68a8, 0xdb6e, 0x68a7, 0x68aa, 0x68a5, 0x68a3, 0xdb6b, 0x68a9, 0x6aee, 0x6aec, 0x7a55, 0x6aeb, 0x6af1, 0x6aef, 0xdd5a, 0x7a56, 0x6aea, 0x6ae8, 0x6ae9, 0x7a58, 0x6aed, 0x7a57, 0x6af0, 0x6ce6, 0x6cec, 0xdf24, 0xdf22, 0x6ce7, 0x7b47, 0x6ced, 0x7b46, 0x6ceb, 0x6cea, 0x7b45, 0x6ce9, 0x7b44, 0x6ce8, 0x6ecc, 0x6ece, 0x6ecd, 0x6eca, 0x7c27, 0x6ec7, 0x6ecb, 0x6ed0, 0xdf79, 0x6ecf, 0x6ec8, 0x6ec9, 0x7c26, 0x6fe0, 0x7c53, 0xe062, 0x6fe1, 0x7c51, 0x7c52, 0xe061, 0x70e1, 0x7c75, 0x71e5, 0xe172, 0x7d37, 0xe173, 0x72a3, 0x7d38, 0x72a4, 0x72a5, 0x72b3, 0x72b2, 0x7d47, 0x72bb, 0x586c, 0xc02f, 0x48ef, 0x48ee, 0x6b73, 0x6b74, 0x4fc2, 0x55fb, 0x5bf8, 0xcf77, 0xcf76, 0x6f7e, 0x7330, 0x5bf6, 0x5bf9, 0x7331, 0xd73a, 0x60f0, 0x5bf7, 0x64e3, 0x7778, 0x68ae, 0xdd61, 0x6af4, 0x6af2, 0xdd60, 0xdd5e, 0x6af3, 0x6cee, 0xdf25, 0x7b48, 0x6ed1, 0x7c56, 0x7c28, 0x7c54, 0x7c55, 0x70e2, 0x7d2f, 0xe174, 0x586d, 0xca6e, 0x64e4, 0xdf7b, 0xe063, 0x33cc, 0xc032, 0x676c, 0xc561, 0x4fc3, 0xca6f, 0xca73, 0x6b75, 0x4fc4, 0xca71, 0xca70, 0xca72, 0x55fd, 0x55fc, 0x7333, 0x7021, 0x7022, 0x56a2, 0x56a1, 0x55fe, 0xcf79, 0xd375, 0x5bfa, 0x5bfd, 0xd374, 0x5bfc, 0x5bfb, 0x7332, 0x60f4, 0x60f2, 0x60f1, 0xd73b, 0x60f3, 0xd73c, 0x7779, 0x64e6, 0x64e7, 0x777a, 0xd96f, 0x64e5, 0xdb71, 0x68b0, 0x68af, 0x68b2, 0x7953, 0x68b1, 0x6af5, 0x6af7, 0x6af6, 0xdf27, 0x6cef, 0x6cf2, 0x6cf0, 0x6cf1, 0x6ed2, 0x7c29, 0x6fe2, 0x6fe3, 0x6fe4, 0xe12c, 0x7c76, 0x7d30, 0x72a6, 0x586e, 0xca75, 0x7023, 0x7334, 0x64e8, 0xdd62, 0x6ed3, 0xe12e, 0x71e6, 0x33cd, 0xe228, 0x7d48, 0x586f, 0x5bfe, 0xd73e, 0x64e9, 0x68b3, 0xdd63, 0x6cf3, 0x6ed4, 0x5870, 0xc562, 0x4fc5, 0x4fc6, 0xca78, 0x6b76, 0x6b77, 0x56a4, 0x7025, 0x7024, 0x56a3, 0x60f5, 0xd73f, 0x64ea, 0x64ec, 0x64eb, 0x777d, 0x777c, 0x777b, 0xdd64, 0x7b4a, 0x6cf4, 0xdf28, 0x7b49, 0x6ed6, 0x6ed5, 0xe12f, 0x7c77, 0x70e3, 0x5e23, 0x48f0, 0xc563, 0x4fc9, 0x4fc7, 0x4fc8, 0xcf7e, 0x56ad, 0x56a8, 0x56a5, 0x56ac, 0xcf7c, 0xcf7b, 0x56ae, 0x7027, 0x56ab, 0x56a7, 0xcf7d, 0x56a6, 0x56aa, 0x56a9, 0x7026, 0x5cab, 0x5ca6, 0x5ca4, 0x5cad, 0x5ca5, 0x5ca1, 0x5ca7, 0xd378, 0xd37a, 0x5ca2, 0x60fe, 0x5ca3, 0x5cae, 0xd423, 0xd37c, 0xd421, 0xd425, 0xd37d, 0x5caa, 0x7335, 0x5ca9, 0x5ca8, 0xd379, 0x5cac, 0xd744, 0x60f6, 0x60f9, 0xd745, 0x60f8, 0xd740, 0x61a2, 0x60fb, 0x61a1, 0xd742, 0x60fd, 0x60fc, 0x60fa, 0x60f7, 0x762f, 0x762e, 0x7630, 0x762d, 0x61a3, 0x64f2, 0x64f5, 0x64f3, 0x64f7, 0xd974, 0x64f8, 0x64f0, 0x7824, 0x64f1, 0xd973, 0x64ef, 0x64f6, 0xdb74, 0x64ee, 0x64ed, 0x7823, 0x7821, 0x777e, 0xd976, 0xd975, 0xd743, 0xd971, 0x64f4, 0x68bc, 0x68c2, 0x7956, 0x68bd, 0x68c0, 0x68c4, 0x7957, 0x68bf, 0x68b7, 0xdb75, 0x68b6, 0x68c3, 0x68ba, 0xdb77, 0x68b8, 0x68c1, 0x68b9, 0x7955, 0x7954, 0xdb79, 0x68b4, 0x68b5, 0x68be, 0xdb7a, 0x68bb, 0xdd6f, 0x6afa, 0x6afd, 0xdd71, 0xdd67, 0xdd69, 0x7822, 0xdd6a, 0xdd74, 0xdd75, 0xdd6e, 0xdd68, 0x6afb, 0x6ba3, 0x6ba1, 0x6af9, 0x6ba6, 0xdd66, 0x6af8, 0xdd76, 0x7a5a, 0x6ba2, 0xdd73, 0x6afc, 0x7a59, 0x6ba5, 0xdd72, 0x6ba4, 0xdd70, 0x6cf7, 0x6cf6, 0xdf2c, 0x6cfd, 0x6cf9, 0x6cfc, 0x7b4c, 0x6cfa, 0x6cfb, 0x6cf5, 0x6cf8, 0x7b4b, 0xdf2a, 0x7c2b, 0x6ee1, 0x6edc, 0x6ee0, 0xe025, 0x6ee3, 0x6edf, 0xdf7e, 0x6edb, 0xe023, 0x7c2d, 0x6ede, 0x6ee2, 0x7c2c, 0x6ed9, 0x6afe, 0x6edd, 0x6eda, 0xe022, 0x6ed7, 0x6ed8, 0x7c2a, 0x6fe8, 0x6fea, 0x6fed, 0x6fe9, 0x6fee, 0xe065, 0x6fe7, 0xe066, 0x6fe5, 0xe068, 0x7c57, 0x6feb, 0x7c59, 0x7c58, 0x6fe6, 0x6fec, 0xe132, 0x70e8, 0x7c78, 0x70e9, 0xe133, 0x70e7, 0x70e4, 0xe134, 0x70e6, 0x70e5, 0x71c9, 0xe159, 0x71cb, 0x71ca, 0xe15b, 0x71e9, 0x71e8, 0x71e7, 0x71ea, 0xe175, 0x7d40, 0x7d41, 0x72b8, 0x72bc, 0xe241, 0x5e24, 0x41d4, 0x48f3, 0xc564, 0x676d, 0x48f1, 0xc566, 0xaf42, 0x48f2, 0xc568, 0xc567, 0x4fca, 0x4fcb, 0x6b7a, 0x6b78, 0x4fcc, 0x6b79, 0x56b3, 0xd027, 0x56b6, 0x56b0, 0x56b7, 0x56af, 0x56b1, 0xd02a, 0x56b2, 0x56b5, 0xd024, 0xd02b, 0x702a, 0x56ba, 0x56b9, 0x7028, 0x56b4, 0x56b8, 0x7029, 0xd42d, 0xd025, 0xd022, 0xd42a, 0x5cb8, 0x733a, 0xd42c, 0x5cb3, 0x7336, 0xd436, 0x5cb0, 0x5cb6, 0x5cb9, 0xd433, 0x733b, 0x5cb5, 0x5cb2, 0x5cba, 0x5cb1, 0xd437, 0x5cb7, 0x7337, 0xd429, 0x5caf, 0x7338, 0xd435, 0x7339, 0x5cb4, 0xd432, 0x61b5, 0x61a8, 0x61a9, 0x61ac, 0x61aa, 0x61a4, 0xd74d, 0x61a7, 0x61b1, 0x61ab, 0xd748, 0x7631, 0x61b3, 0x61b0, 0x7632, 0x61b2, 0x61a5, 0x61ae, 0x61af, 0xd74a, 0x61ad, 0x64fc, 0x64fe, 0x65a3, 0xd979, 0xd97b, 0x64fb, 0xd97d, 0x7825, 0x65a5, 0x64fa, 0x65a6, 0xd97e, 0x65a2, 0x65a4, 0x65a8, 0x65a1, 0x65a9, 0x64fd, 0x64f9, 0x7826, 0xda22, 0x65a7, 0x7827, 0x7959, 0xd97a, 0xdb7d, 0x61a6, 0x68de, 0x68d5, 0x795b, 0x68d1, 0x795c, 0xdc27, 0xdc22, 0x68da, 0x68d4, 0x68ca, 0x795a, 0x68d7, 0x68d2, 0x68d3, 0xdc25, 0x68c5, 0x68cc, 0x68db, 0xdb7e, 0x68d8, 0x68d0, 0xdc26, 0x68dc, 0x68cb, 0x68c6, 0x68d9, 0xdc24, 0x68c8, 0x68d6, 0x68cd, 0x68dd, 0x68c9, 0x7958, 0x68c7, 0x68ce, 0x68cf, 0x6bad, 0xdc23, 0x6bab, 0x6bb0, 0xdd79, 0x6bbc, 0x6bb3, 0x6bac, 0x6ba8, 0x6bb5, 0x6bae, 0x6bb1, 0x6baa, 0x6bb8, 0x6ba7, 0x6baf, 0x6bb4, 0x6bb6, 0x6bb9, 0x6ba9, 0xdd7a, 0x6bbd, 0x6bbe, 0x6bb7, 0x6bbb, 0x6bb2, 0x6daf, 0x6db2, 0xdf35, 0x7b4d, 0xdf31, 0x6db1, 0x6db6, 0x6db4, 0x7b4e, 0x6dab, 0x6da1, 0x6cfe, 0x7b50, 0x6dad, 0x6dae, 0x6daa, 0x6da2, 0xdf32, 0x6da7, 0x6bba, 0x6da3, 0x7b4f, 0x6da9, 0xdf36, 0x6da8, 0x6da4, 0x6db0, 0x6da5, 0x6ee8, 0x6db3, 0x6db5, 0x6dac, 0x6da6, 0x6ee9, 0x6eeb, 0x6ee5, 0x7c2e, 0x6ef2, 0x6ef0, 0x7c2f, 0x6eef, 0x6eee, 0x6ee7, 0x6ee4, 0x6eea, 0x6ef3, 0x6ee6, 0x6eec, 0x6ff7, 0x6ffc, 0x6ff2, 0x6ff5, 0x7c5a, 0x6ff9, 0x70a2, 0x6eed, 0x6ff3, 0x6ffd, 0x70a3, 0x6ff8, 0x6ff1, 0x6ffb, 0x6ffa, 0x70a1, 0x6ffe, 0x6ef1, 0x6ff6, 0x6ff0, 0x6ff4, 0x7c79, 0x7c7a, 0x6fef, 0xe06c, 0x70f4, 0x70eb, 0x70f3, 0x70f0, 0x70f1, 0x70ea, 0x70ed, 0x70f5, 0x70ef, 0x70ee, 0x70ec, 0xe135, 0x70f2, 0x71cc, 0x71cd, 0xe15d, 0x71cf, 0x71ce, 0x71d1, 0x71d0, 0x71ec, 0x71eb, 0x72a7, 0xe229, 0x72a8, 0xe230, 0x72b4, 0x7d45, 0x7d49, 0xe238, 0x72bd, 0x7d4a, 0x5e25, 0x7a5b, 0x6db7, 0xdf37, 0x7c7b, 0x7c7c, 0x5e26, 0x48f4, 0xc569, 0x676e, 0x56bb, 0xd02c, 0xd439, 0x5cbc, 0x5cbd, 0x5cbb, 0x61b7, 0x61b6, 0x7633, 0x65ab, 0x61b8, 0x65aa, 0xda24, 0x68e0, 0x795d, 0x795f, 0x68df, 0xdc29, 0x795e, 0xde21, 0x6bbf, 0x6bc1, 0x6bc0, 0x6db8, 0x7b51, 0xdf3a, 0x7c5b, 0x70f6, 0x71d2, 0xe231, 0xe23f, 0x72c1, 0x5e27, 0xa547, 0x4fcd, 0x702b, 0xd02f, 0xd02e, 0xd43a, 0x5cbf, 0x5cbe, 0xd750, 0x61b9, 0xda26, 0xda25, 0x7960, 0x7a5c, 0x6ef4, 0x72b9, 0x5e28, 0x6b7b, 0xcb22, 0x702c, 0x68e1, 0xde22, 0x70a4, 0x6327, 0xb96a, 0xd43c, 0xd43b, 0x61ba, 0xda28, 0x7d31, 0x6328, 0x702d, 0x7634, 0x70a5, 0x6329, 0xb96b, 0x56bc, 0x733d, 0x5cc0, 0x5cc1, 0xd43d, 0x733c, 0x61bb, 0x7638, 0x7636, 0x7637, 0x7635, 0x65ac, 0x7828, 0xdc2a, 0x6bc3, 0x6bc2, 0x6bc5, 0x6bc4, 0x7a5d, 0x6db9, 0x6dbb, 0x6dba, 0x7b52, 0x6ef5, 0xe029, 0x70a6, 0x70a7, 0x7c5c, 0x71d3, 0x71ed, 0x7d42, 0x41d5, 0x5cc2, 0x61bc, 0x68e2, 0x48f5, 0xa772, 0x61bd, 0x65ae, 0x65ad, 0xda29, 0xdc2d, 0xdc2e, 0xdf3c, 0x70a8, 0x7c7d, 0xe15f, 0x71d4, 0x71ee, 0x676f, 0x56bd, 0x56be, 0x5cc3, 0x6770, 0xc56a, 0x7829, 0x65af, 0xdc30, 0x6dbd, 0x7b53, 0x6dbe, 0x6dbc, 0x70a9, 0xe160, 0x70f7, 0x6771, 0x61c0, 0x61bf, 0x61be, 0x65b0, 0xda2b, 0xda2a, 0x65b4, 0x65b3, 0x65b2, 0x65b1, 0x782a, 0x68e3, 0x6bc7, 0x7a5e, 0x6bc6, 0x6dbf, 0x6ef8, 0x6ef7, 0x7c30, 0x6ef6, 0x70ac, 0x70ab, 0x70aa, 0xe06d, 0x6b7c, 0x5cc4, 0x7639, 0x68e4, 0x68e5, 0x6ef9, 0x70ad, 0xe13b, 0x70f8, 0x71d5, 0x72a9, 0x72c3, 0x6b7d, 0x763a, 0x65b5, 0x68e6, 0x6dc0, 0x70ae, 0xa370, 0x702f, 0xd43e, 0x61c1, 0x65b6, 0x68e7, 0x68e8, 0x68e9, 0x6bcc, 0xde24, 0x6bc8, 0x7b54, 0x6bcb, 0x6bca, 0x7a5f, 0x6bc9, 0x7a61, 0x7a60, 0x6dc2, 0x6dc1, 0x7b55, 0x7b56, 0xdf3e, 0x7c32, 0x6efa, 0x7c31, 0x70b1, 0x70b2, 0x70b0, 0x70af, 0x7d21, 0x70f9, 0x70fa, 0x70fb, 0x7c7e, 0x71d6, 0x71d9, 0x71d8, 0x71d7, 0xe233, 0x72c2, 0x733e, 0xd755, 0x7832, 0x6bcd, 0x6dc3, 0xe02b, 0x7c33, 0x6efb, 0xe242, 0x72c4, 0x733f, 0xde47, 0x61c2, 0xdf3f, 0x6efc, 0xe161, 0x71ef, 0xe177, 0x212b, 0x2136, 0x2138, 0x2140, 0x2141, 0x2144, 0x2145, 0x2148, 0x2149, 0x214c, 0x214d, 0x2150, 0x2151, 0x2154, 0x2155, 0x2158, 0x2159, 0x215c, 0x215d, 0x2227, 0x2228, 0x222b, 0x222c, 0x2229, 0x222a, 0x212e, 0x212f, 0x2130, 0x2132, 0x2133, 0x2134, 0x2135, 0x215e, 0x215f, 0x2160, 0x2161, 0x2162, 0x2163, 0x222d, 0x222e, 0x222f, 0x223f, 0x2240, 0x2241, 0x2243, 0x2242, 0x2262, 0x226c, 0x226d, 0x226e, 0x212a, 0x216c, 0x2263, 0x2268, 0x216d, 0x213e, 0x213f, 0x216e, 0x2230, 0x2122, 0x2231, 0x2125, 0x225f, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a, 0x2128, 0x2127, 0x2236, 0x2238, 0x2237, 0x2129, 0x2269, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a, 0x2260, 0x2225, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2142, 0x225e, 0x2143, 0x2266, 0x2267, 0x2264, }; static const Summary16 cns11643_inv_uni2indx_page00[16] = { /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0080 }, { 1, 0x0083 }, { 4, 0x0000 }, { 4, 0x0080 }, { 5, 0x0000 }, { 5, 0x0080 }, }; static const Summary16 cns11643_inv_uni2indx_page02[29] = { /* 0x0200 */ { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0e80 }, { 10, 0x0200 }, { 11, 0x0000 }, { 11, 0x0000 }, /* 0x0300 */ { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0xfffe }, { 26, 0x03fb }, { 35, 0xfffe }, { 50, 0x03fb }, }; static const Summary16 cns11643_inv_uni2indx_page20[44] = { /* 0x2000 */ { 59, 0x0000 }, { 59, 0x3358 }, { 66, 0x0060 }, { 68, 0x4824 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, { 72, 0x0000 }, /* 0x2100 */ { 72, 0x0228 }, { 75, 0x0000 }, { 75, 0x0000 }, { 75, 0x0000 }, { 75, 0x0000 }, { 75, 0x0000 }, { 75, 0x03ff }, { 85, 0x03ff }, { 95, 0x0000 }, { 95, 0x03cf }, { 103, 0x0000 }, { 103, 0x0000 }, { 103, 0x0000 }, { 103, 0x0000 }, { 103, 0x0000 }, { 103, 0x0000 }, /* 0x2200 */ { 103, 0x0000 }, { 103, 0xc420 }, { 107, 0x4e01 }, { 112, 0x1030 }, { 115, 0x0000 }, { 115, 0x0004 }, { 116, 0x00c3 }, { 120, 0x0000 }, { 120, 0x0000 }, { 120, 0x0000 }, { 120, 0x0020 }, { 121, 0x8000 }, }; static const Summary16 cns11643_inv_uni2indx_page24[37] = { /* 0x2400 */ { 122, 0xffff }, { 138, 0xffff }, { 154, 0x0002 }, { 155, 0x0000 }, { 155, 0x0000 }, { 155, 0x0000 }, { 155, 0x03ff }, { 165, 0x3ff0 }, { 175, 0x0000 }, { 175, 0x0000 }, { 175, 0x0000 }, { 175, 0x0000 }, { 175, 0x0000 }, { 175, 0x0000 }, { 175, 0x0000 }, { 175, 0x0000 }, /* 0x2500 */ { 175, 0x1005 }, { 178, 0x1111 }, { 182, 0x1010 }, { 184, 0x1010 }, { 186, 0x0000 }, { 186, 0x4001 }, { 188, 0xe402 }, { 193, 0x000f }, { 197, 0xfffe }, { 212, 0x0030 }, { 214, 0x0003 }, { 216, 0x300c }, { 220, 0xc8c0 }, { 225, 0x0000 }, { 225, 0x003c }, { 229, 0x0000 }, /* 0x2600 */ { 229, 0x0260 }, { 232, 0x0000 }, { 232, 0x0000 }, { 232, 0x0000 }, { 232, 0x0007 }, }; static const Summary16 cns11643_inv_uni2indx_page30[62] = { /* 0x3000 */ { 235, 0xff0f }, { 247, 0x6037 }, { 254, 0x03fe }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0800 }, /* 0x3100 */ { 264, 0xffe0 }, { 275, 0xffff }, { 291, 0x03ff }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, /* 0x3200 */ { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0000 }, { 301, 0x0008 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, /* 0x3300 */ { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0xc000 }, { 304, 0x7000 }, { 307, 0x0002 }, { 308, 0x0000 }, { 308, 0x4010 }, { 310, 0x0026 }, }; static const Summary16 cns11643_inv_uni2indx_page4e[1307] = { /* 0x4e00 */ { 313, 0xffbb }, { 327, 0xc373 }, { 336, 0x6d57 }, { 346, 0xbb4f }, { 357, 0xebec }, { 368, 0xf3dc }, { 379, 0x030c }, { 383, 0xc20a }, { 388, 0xfbff }, { 403, 0xfbbe }, { 416, 0xf97e }, { 428, 0x56cf }, { 438, 0xffff }, { 454, 0xf7f0 }, { 465, 0xc3fb }, { 476, 0xbfff }, /* 0x4f00 */ { 491, 0xefff }, { 506, 0x37ff }, { 519, 0xb104 }, { 524, 0xffff }, { 540, 0xffff }, { 556, 0xffff }, { 572, 0xfe9f }, { 585, 0xfffd }, { 600, 0xffff }, { 616, 0xfdff }, { 631, 0xc00f }, { 637, 0xcfff }, { 651, 0xffff }, { 667, 0xffff }, { 683, 0xd02b }, { 690, 0xffff }, /* 0x5000 */ { 706, 0xfbfd }, { 720, 0xffff }, { 736, 0xffff }, { 752, 0x13ef }, { 762, 0xffff }, { 778, 0xffff }, { 794, 0xff7f }, { 809, 0x3fff }, { 823, 0xfbaf }, { 836, 0x7ff6 }, { 849, 0xfc0c }, { 857, 0xffff }, { 873, 0xfffe }, { 888, 0x7ffb }, { 902, 0xffff }, { 918, 0xfbfb }, /* 0x5100 */ { 932, 0x7fff }, { 947, 0xfdff }, { 962, 0xeff7 }, { 976, 0xffff }, { 992, 0x7ffb }, { 1006, 0xfef7 }, { 1020, 0x7fff }, { 1035, 0x53e6 }, { 1044, 0xbef5 }, { 1056, 0xe3ff }, { 1069, 0x157f }, { 1079, 0x73ff }, { 1092, 0xfffe }, { 1107, 0xffdf }, { 1122, 0x313f }, { 1131, 0x677b }, /* 0x5200 */ { 1142, 0xdffb }, { 1156, 0xf1ff }, { 1169, 0xcffb }, { 1182, 0x1fff }, { 1195, 0xfffa }, { 1209, 0xfefc }, { 1222, 0xffbf }, { 1237, 0xfffd }, { 1252, 0x7fdf }, { 1266, 0xffdb }, { 1280, 0x7f49 }, { 1290, 0xda38 }, { 1298, 0xf6bf }, { 1311, 0xebff }, { 1325, 0xeedf }, { 1338, 0xfdbf }, /* 0x5300 */ { 1352, 0xeff9 }, { 1365, 0xf6f7 }, { 1378, 0xa4af }, { 1387, 0xffff }, { 1403, 0xbffb }, { 1417, 0xf5bf }, { 1430, 0xf2cb }, { 1440, 0xbfff }, { 1455, 0xce55 }, { 1464, 0xf7dc }, { 1476, 0x7ff1 }, { 1488, 0x4edf }, { 1499, 0x7f3e }, { 1511, 0xbef5 }, { 1523, 0xff7f }, { 1538, 0x9bff }, /* 0x5400 */ { 1551, 0xfffb }, { 1566, 0xff6f }, { 1580, 0xffff }, { 1596, 0xffff }, { 1612, 0xffff }, { 1628, 0x8413 }, { 1633, 0xbfff }, { 1648, 0xffff }, { 1664, 0xfff7 }, { 1679, 0xc57f }, { 1690, 0xffff }, { 1706, 0xffff }, { 1722, 0xf7ff }, { 1737, 0x4441 }, { 1741, 0xeff7 }, { 1755, 0xbfff }, /* 0x5500 */ { 1770, 0xffff }, { 1786, 0x079f }, { 1795, 0xfec0 }, { 1804, 0xdfff }, { 1819, 0xff7b }, { 1833, 0xf7ff }, { 1848, 0x057e }, { 1856, 0xfce0 }, { 1865, 0xffff }, { 1881, 0xfffe }, { 1896, 0xffff }, { 1912, 0x883e }, { 1919, 0xffff }, { 1935, 0xfeff }, { 1950, 0x87fe }, { 1961, 0xffc4 }, /* 0x5600 */ { 1972, 0xfbff }, { 1987, 0xf9ff }, { 2001, 0xffc0 }, { 2011, 0xefff }, { 2026, 0xfff7 }, { 2041, 0xc7df }, { 2053, 0xffff }, { 2069, 0xebdf }, { 2082, 0xf6ff }, { 2096, 0xfff9 }, { 2110, 0xfde1 }, { 2121, 0x78fc }, { 2131, 0x3fef }, { 2144, 0xed9e }, { 2155, 0xfefb }, { 2169, 0xbfcf }, /* 0x5700 */ { 2182, 0xffbf }, { 2197, 0xfdfc }, { 2210, 0xf71f }, { 2222, 0xf87f }, { 2234, 0xffff }, { 2250, 0x81ff }, { 2260, 0xeffe }, { 2274, 0xb9ff }, { 2287, 0xf80f }, { 2296, 0xffff }, { 2312, 0x51ff }, { 2323, 0xffe0 }, { 2334, 0xffff }, { 2350, 0xf837 }, { 2360, 0xf7ff }, { 2375, 0xffff }, /* 0x5800 */ { 2391, 0x7fff }, { 2406, 0xff11 }, { 2416, 0xf7ff }, { 2431, 0xffff }, { 2447, 0xff00 }, { 2455, 0xffff }, { 2471, 0xbf7f }, { 2485, 0xfffe }, { 2500, 0xffff }, { 2516, 0xf1ff }, { 2529, 0xffff }, { 2545, 0xfcbf }, { 2558, 0xe7ff }, { 2572, 0xff7f }, { 2587, 0xdbdd }, { 2599, 0xfebf }, /* 0x5900 */ { 2613, 0xff7e }, { 2627, 0x97f5 }, { 2638, 0xfefd }, { 2652, 0x71d7 }, { 2662, 0xdfb1 }, { 2673, 0x7dbf }, { 2686, 0x7fdf }, { 2700, 0xffff }, { 2716, 0xf67f }, { 2729, 0xffdd }, { 2743, 0xf1ff }, { 2756, 0xffff }, { 2772, 0xffff }, { 2788, 0xffff }, { 2804, 0xffff }, { 2820, 0xffff }, /* 0x5a00 */ { 2836, 0xbe1f }, { 2847, 0xfffe }, { 2862, 0xfe7f }, { 2876, 0xffea }, { 2889, 0xffff }, { 2905, 0xffff }, { 2921, 0xffff }, { 2937, 0xffab }, { 2950, 0xffff }, { 2966, 0xffff }, { 2982, 0xdfff }, { 2997, 0xffff }, { 3013, 0xffff }, { 3029, 0xffe1 }, { 3041, 0xffff }, { 3057, 0xfff9 }, /* 0x5b00 */ { 3071, 0xffff }, { 3087, 0xffff }, { 3103, 0xffff }, { 3119, 0xffbf }, { 3134, 0xfffd }, { 3149, 0xbdfb }, { 3162, 0x5e3d }, { 3172, 0xffff }, { 3188, 0xfbff }, { 3203, 0xfffc }, { 3217, 0x79fc }, { 3228, 0x9bf9 }, { 3239, 0x7dff }, { 3253, 0xdfff }, { 3268, 0xdfff }, { 3283, 0xe7ef }, /* 0x5c00 */ { 3296, 0xfffb }, { 3311, 0xcf77 }, { 3323, 0x9d35 }, { 3332, 0xffcb }, { 3345, 0xfff3 }, { 3359, 0xfb7f }, { 3373, 0xffbf }, { 3388, 0x5f1a }, { 3397, 0xff71 }, { 3409, 0xf03f }, { 3419, 0xffff }, { 3435, 0x0ffb }, { 3446, 0xffc2 }, { 3457, 0xffdf }, { 3472, 0xff66 }, { 3484, 0xaffb }, /* 0x5d00 */ { 3497, 0xffc3 }, { 3509, 0xffff }, { 3525, 0xd7ff }, { 3539, 0xffff }, { 3555, 0xffff }, { 3571, 0x4aaf }, { 3580, 0xfbfd }, { 3594, 0xff86 }, { 3605, 0xbfdf }, { 3619, 0xffff }, { 3635, 0xffdf }, { 3650, 0x7fbf }, { 3664, 0xbfdf }, { 3678, 0xe9ff }, { 3691, 0x49ff }, { 3702, 0xeeff }, /* 0x5e00 */ { 3716, 0x5f5d }, { 3727, 0xeffe }, { 3741, 0xff3f }, { 3755, 0x67fd }, { 3767, 0xfdff }, { 3782, 0xffbc }, { 3795, 0xffcf }, { 3809, 0xfffd }, { 3824, 0xbf9f }, { 3837, 0x3fe5 }, { 3848, 0xffff }, { 3864, 0xefff }, { 3879, 0xdff7 }, { 3893, 0xffff }, { 3909, 0xd7ef }, { 3922, 0xffff }, /* 0x5f00 */ { 3938, 0xfdfe }, { 3952, 0xedbe }, { 3964, 0xe3fe }, { 3976, 0x5fff }, { 3990, 0xff5d }, { 4003, 0x6fff }, { 4017, 0xfeff }, { 4032, 0xf3df }, { 4045, 0xdfff }, { 4060, 0xdbcf }, { 4072, 0xffe3 }, { 4085, 0xfbfc }, { 4098, 0xf6af }, { 4110, 0xffff }, { 4126, 0xfffb }, { 4141, 0xffff }, /* 0x6000 */ { 4157, 0xff81 }, { 4167, 0x7eff }, { 4181, 0xffff }, { 4197, 0x22ff }, { 4207, 0xfeff }, { 4222, 0xff7f }, { 4237, 0xffff }, { 4253, 0xd03d }, { 4261, 0x7ffb }, { 4275, 0xfffd }, { 4290, 0x47df }, { 4301, 0xffff }, { 4317, 0xfffb }, { 4332, 0xffff }, { 4348, 0x46ff }, { 4359, 0xffff }, /* 0x6100 */ { 4375, 0xfffb }, { 4390, 0xff7f }, { 4405, 0xdf8f }, { 4417, 0xfddf }, { 4431, 0xffff }, { 4447, 0xfffc }, { 4461, 0xdfff }, { 4476, 0x7fff }, { 4491, 0xffef }, { 4506, 0xffff }, { 4522, 0xffde }, { 4536, 0xffff }, { 4552, 0xffff }, { 4568, 0xff41 }, { 4578, 0x6ffd }, { 4591, 0xffef }, /* 0x6200 */ { 4606, 0xf7bf }, { 4620, 0xcf7f }, { 4633, 0xffbf }, { 4648, 0xffff }, { 4664, 0xefef }, { 4678, 0xff9f }, { 4692, 0xe0ff }, { 4703, 0xffff }, { 4719, 0xffff }, { 4735, 0x7bfe }, { 4748, 0xffe0 }, { 4759, 0xffff }, { 4775, 0xfff7 }, { 4790, 0xffff }, { 4806, 0xfc13 }, { 4815, 0xffff }, /* 0x6300 */ { 4831, 0xfbbf }, { 4845, 0x8afb }, { 4855, 0xff02 }, { 4864, 0xffff }, { 4880, 0xffff }, { 4896, 0x3fff }, { 4910, 0xffe0 }, { 4921, 0xffff }, { 4937, 0xffff }, { 4953, 0xfbdf }, { 4967, 0xffbf }, { 4982, 0xe407 }, { 4989, 0xffff }, { 5005, 0xffef }, { 5020, 0xefff }, { 5035, 0x43ff }, /* 0x6400 */ { 5046, 0xffc0 }, { 5056, 0xffff }, { 5072, 0xffff }, { 5088, 0xffff }, { 5104, 0xf8cb }, { 5114, 0xfbff }, { 5129, 0xfff7 }, { 5144, 0xffff }, { 5160, 0xffef }, { 5175, 0xffff }, { 5191, 0xffff }, { 5207, 0xfa1f }, { 5218, 0xefff }, { 5233, 0x9fff }, { 5247, 0xffff }, { 5263, 0xffdf }, /* 0x6500 */ { 5278, 0xfffb }, { 5293, 0xfbfb }, { 5307, 0xffff }, { 5323, 0xebfe }, { 5336, 0xef7f }, { 5350, 0xf7fa }, { 5363, 0xbdff }, { 5377, 0x9fff }, { 5391, 0x7bbf }, { 5404, 0xfef7 }, { 5418, 0xfdf7 }, { 5432, 0xffed }, { 5446, 0xfefe }, { 5460, 0xfccf }, { 5472, 0xffff }, { 5488, 0xfc7f }, /* 0x6600 */ { 5501, 0xffff }, { 5517, 0xfdbf }, { 5531, 0xfbff }, { 5546, 0x1fff }, { 5559, 0xffff }, { 5575, 0xfe87 }, { 5586, 0xffff }, { 5602, 0xffdf }, { 5617, 0xffd3 }, { 5630, 0xb7ff }, { 5644, 0xff77 }, { 5658, 0xffff }, { 5674, 0xfffb }, { 5689, 0xfff7 }, { 5704, 0xfbfb }, { 5718, 0xd3fd }, /* 0x6700 */ { 5730, 0xff7b }, { 5744, 0xeffd }, { 5758, 0xfddf }, { 5772, 0xfffe }, { 5787, 0xfff0 }, { 5799, 0xffff }, { 5815, 0xbc03 }, { 5822, 0xffff }, { 5838, 0xfeff }, { 5853, 0xb7ff }, { 5867, 0xc00c }, { 5871, 0x9fff }, { 5885, 0xffff }, { 5901, 0xffff }, { 5917, 0xfffc }, { 5931, 0xdfff }, /* 0x6800 */ { 5946, 0x0023 }, { 5949, 0xfffc }, { 5963, 0xffff }, { 5979, 0x7fff }, { 5994, 0xfbff }, { 6009, 0x037f }, { 6018, 0xf800 }, { 6023, 0xffff }, { 6039, 0xdeff }, { 6053, 0xffff }, { 6069, 0xffff }, { 6085, 0x03ff }, { 6095, 0xfffa }, { 6109, 0xfdff }, { 6124, 0xffff }, { 6140, 0xffff }, /* 0x6900 */ { 6156, 0xffff }, { 6172, 0x51bf }, { 6182, 0xc420 }, { 6186, 0xfbff }, { 6201, 0xffff }, { 6217, 0xffff }, { 6233, 0xffff }, { 6249, 0x3ffb }, { 6262, 0xe06c }, { 6269, 0xffff }, { 6285, 0xffff }, { 6301, 0xfaff }, { 6315, 0xff7f }, { 6330, 0x037f }, { 6339, 0xfffe }, { 6354, 0xffdf }, /* 0x6a00 */ { 6369, 0xfff7 }, { 6384, 0xffff }, { 6400, 0x17ff }, { 6412, 0xfffc }, { 6426, 0xffff }, { 6442, 0xffff }, { 6458, 0xffdf }, { 6473, 0xe043 }, { 6479, 0xf7ff }, { 6494, 0xffff }, { 6510, 0xfdff }, { 6525, 0xffff }, { 6541, 0xf9ff }, { 6555, 0xffbf }, { 6570, 0xffaf }, { 6584, 0xff1b }, /* 0x6b00 */ { 6596, 0x8fdf }, { 6608, 0x7fdf }, { 6622, 0xfdef }, { 6636, 0xffff }, { 6652, 0xffff }, { 6668, 0xfbff }, { 6683, 0xffff }, { 6699, 0xcfde }, { 6711, 0xff5f }, { 6725, 0xdbf3 }, { 6737, 0xecff }, { 6750, 0xfcfd }, { 6763, 0xfffb }, { 6778, 0x4ddf }, { 6789, 0xbfff }, { 6804, 0xff9d }, /* 0x6c00 */ { 6817, 0xbf7f }, { 6831, 0xbf7b }, { 6844, 0xfdfb }, { 6858, 0xdbdf }, { 6871, 0xfc7f }, { 6884, 0xffff }, { 6900, 0xffe3 }, { 6913, 0xffff }, { 6929, 0xffff }, { 6945, 0xffff }, { 6961, 0xfc07 }, { 6970, 0xffdf }, { 6985, 0xf7ff }, { 7000, 0xffff }, { 7016, 0xffbf }, { 7031, 0x823f }, /* 0x6d00 */ { 7039, 0xffff }, { 7055, 0xffff }, { 7071, 0xffff }, { 7087, 0xffff }, { 7103, 0x0037 }, { 7108, 0xffc0 }, { 7118, 0xffff }, { 7134, 0xffff }, { 7150, 0xffff }, { 7166, 0x0fff }, { 7178, 0xfc00 }, { 7184, 0xffff }, { 7200, 0xffff }, { 7216, 0xffff }, { 7232, 0xffff }, { 7248, 0xffff }, /* 0x6e00 */ { 7264, 0x17ff }, { 7276, 0xff84 }, { 7286, 0xffff }, { 7302, 0xff7f }, { 7317, 0xffff }, { 7333, 0xffff }, { 7349, 0xffff }, { 7365, 0x4bff }, { 7377, 0xe301 }, { 7383, 0xffdf }, { 7398, 0xdfff }, { 7413, 0xffff }, { 7429, 0xffff }, { 7445, 0x3f7f }, { 7458, 0xfb48 }, { 7467, 0xffff }, /* 0x6f00 */ { 7483, 0xffff }, { 7499, 0xffbf }, { 7514, 0xffef }, { 7529, 0xffff }, { 7545, 0xc41f }, { 7553, 0xffbf }, { 7568, 0xfeff }, { 7583, 0xffff }, { 7599, 0xfbf7 }, { 7613, 0xc0ff }, { 7623, 0xffff }, { 7639, 0xffff }, { 7655, 0xffdf }, { 7670, 0xfff9 }, { 7684, 0xffff }, { 7700, 0xfcff }, /* 0x7000 */ { 7714, 0xffff }, { 7730, 0xfffb }, { 7745, 0x9fff }, { 7759, 0xffff }, { 7775, 0x3fff }, { 7789, 0xeffe }, { 7803, 0xcfff }, { 7817, 0x7fff }, { 7832, 0xfffe }, { 7847, 0x877f }, { 7858, 0xffbf }, { 7873, 0x4fff }, { 7886, 0xfdf0 }, { 7897, 0xffff }, { 7913, 0xc01f }, { 7920, 0xffff }, /* 0x7100 */ { 7936, 0xffdf }, { 7951, 0xfe89 }, { 7961, 0xfdff }, { 7976, 0x05ff }, { 7986, 0xfffe }, { 8001, 0xffdf }, { 8016, 0xffff }, { 8032, 0xf915 }, { 8041, 0xffff }, { 8057, 0xfe97 }, { 8069, 0xffff }, { 8085, 0xffef }, { 8100, 0xdfff }, { 8115, 0x9f7f }, { 8128, 0xffff }, { 8144, 0xff1f }, /* 0x7200 */ { 8157, 0xbdff }, { 8171, 0xfeff }, { 8186, 0x77ff }, { 8200, 0xff65 }, { 8212, 0xdfd7 }, { 8225, 0xefef }, { 8239, 0xf7ff }, { 8254, 0xffdd }, { 8268, 0x7bff }, { 8282, 0x6fff }, { 8296, 0xdffe }, { 8310, 0xfe77 }, { 8323, 0xfeff }, { 8338, 0x9fdf }, { 8351, 0x3fff }, { 8365, 0xfff8 }, /* 0x7300 */ { 8378, 0xddc7 }, { 8389, 0x7fcf }, { 8402, 0xfffc }, { 8416, 0xddff }, { 8430, 0xfe7f }, { 8444, 0xefbf }, { 8458, 0xdfe7 }, { 8471, 0xfdef }, { 8485, 0xffff }, { 8501, 0xf1fc }, { 8512, 0xbfff }, { 8527, 0xfbfc }, { 8540, 0xffff }, { 8556, 0xfffd }, { 8571, 0x7fff }, { 8586, 0xfff8 }, /* 0x7400 */ { 8599, 0x3fff }, { 8613, 0xfff0 }, { 8625, 0xffff }, { 8641, 0xf77f }, { 8655, 0xffff }, { 8671, 0xffff }, { 8687, 0xffff }, { 8703, 0xfe7f }, { 8717, 0x1fff }, { 8730, 0xfdfd }, { 8744, 0xffef }, { 8759, 0xffef }, { 8774, 0xffbf }, { 8789, 0xfffb }, { 8804, 0xfb7f }, { 8818, 0xeaf8 }, /* 0x7500 */ { 8828, 0xffdf }, { 8843, 0xfdff }, { 8858, 0xff7e }, { 8872, 0xef8f }, { 8884, 0xffd7 }, { 8898, 0xfff1 }, { 8911, 0xfdfe }, { 8925, 0xe7c3 }, { 8935, 0xdedb }, { 8947, 0x6f3f }, { 8959, 0x0dfc }, { 8968, 0xff7f }, { 8983, 0xfcbf }, { 8996, 0xefbf }, { 9010, 0xe0ff }, { 9021, 0xffff }, /* 0x7600 */ { 9037, 0xff8f }, { 9050, 0xfe7b }, { 9063, 0xb3ff }, { 9076, 0x3dff }, { 9089, 0xd3fc }, { 9100, 0x9fcf }, { 9112, 0xf7b7 }, { 9125, 0xfb67 }, { 9137, 0xcfdf }, { 9150, 0x7ffd }, { 9164, 0xee7a }, { 9175, 0xefb9 }, { 9187, 0x7fff }, { 9202, 0xfefc }, { 9215, 0xfefe }, { 9229, 0xffbf }, /* 0x7700 */ { 9244, 0xcfba }, { 9255, 0xef6f }, { 9268, 0xafff }, { 9282, 0xffff }, { 9298, 0xfffd }, { 9313, 0xff7c }, { 9326, 0xffff }, { 9342, 0xfff2 }, { 9355, 0xffbf }, { 9370, 0xffe3 }, { 9383, 0xbfff }, { 9398, 0xffff }, { 9414, 0xf6f7 }, { 9427, 0xffbb }, { 9441, 0xf3ed }, { 9453, 0x3fbf }, /* 0x7800 */ { 9466, 0xfffc }, { 9480, 0xa03f }, { 9488, 0xffff }, { 9504, 0x01ff }, { 9513, 0xffec }, { 9526, 0xf007 }, { 9533, 0xff7d }, { 9547, 0xff43 }, { 9558, 0xffff }, { 9574, 0xc7ff }, { 9587, 0xffff }, { 9603, 0x5d1f }, { 9613, 0xffff }, { 9629, 0xfc7f }, { 9642, 0xbfaf }, { 9655, 0xff9f }, /* 0x7900 */ { 9669, 0x7ff6 }, { 9682, 0x7fbf }, { 9696, 0xfffb }, { 9711, 0xf7a7 }, { 9723, 0x9ff7 }, { 9736, 0xffff }, { 9752, 0x7fff }, { 9767, 0xf67f }, { 9780, 0xef9f }, { 9793, 0xfdfd }, { 9807, 0xfff7 }, { 9822, 0xefff }, { 9837, 0xeffb }, { 9851, 0xffff }, { 9867, 0x7fff }, { 9882, 0x8fef }, /* 0x7a00 */ { 9894, 0xffbd }, { 9908, 0xffbf }, { 9923, 0xff45 }, { 9934, 0xff87 }, { 9946, 0xfff7 }, { 9961, 0x9dd8 }, { 9970, 0xffd7 }, { 9984, 0xff7f }, { 9999, 0x9fff }, { 10013, 0xc7ff }, { 10026, 0xdf1f }, { 10038, 0xedff }, { 10052, 0xbfb7 }, { 10065, 0xbf3f }, { 10078, 0xfeff }, { 10093, 0xffef }, /* 0x7b00 */ { 10108, 0xef73 }, { 10120, 0xffdf }, { 10135, 0xfd7f }, { 10149, 0x097f }, { 10158, 0xffff }, { 10174, 0x41ff }, { 10184, 0xfbff }, { 10199, 0x03ff }, { 10209, 0xfdfe }, { 10223, 0xfbff }, { 10238, 0xf01b }, { 10246, 0xc3be }, { 10256, 0x7ed3 }, { 10267, 0xff30 }, { 10277, 0x3fff }, { 10291, 0xffdf }, /* 0x7c00 */ { 10306, 0xffef }, { 10321, 0xff07 }, { 10332, 0x7fff }, { 10347, 0xfbb9 }, { 10359, 0x3fb9 }, { 10370, 0xffdb }, { 10384, 0xfefd }, { 10398, 0xbffe }, { 10412, 0x7ffb }, { 10426, 0xdffe }, { 10440, 0xc1ff }, { 10451, 0xffbf }, { 10466, 0x7ffc }, { 10479, 0xfeff }, { 10494, 0xd5cf }, { 10505, 0xfdff }, /* 0x7d00 */ { 10520, 0xffff }, { 10536, 0xffff }, { 10552, 0xfb37 }, { 10564, 0xffff }, { 10580, 0xf7ff }, { 10595, 0xffff }, { 10611, 0xffdf }, { 10626, 0xff7f }, { 10641, 0xfffb }, { 10656, 0xf3ff }, { 10670, 0xffdf }, { 10685, 0xffff }, { 10701, 0xfff7 }, { 10716, 0xffc6 }, { 10728, 0xffff }, { 10744, 0xffff }, /* 0x7e00 */ { 10760, 0xff0f }, { 10772, 0xfeff }, { 10787, 0xfeff }, { 10802, 0xffff }, { 10818, 0xb3ff }, { 10831, 0xffff }, { 10847, 0xff4f }, { 10860, 0xffff }, { 10876, 0xfff7 }, { 10891, 0x5ffe }, { 10904, 0x0000 }, { 10904, 0x0000 }, { 10904, 0x0000 }, { 10904, 0x0000 }, { 10904, 0x0000 }, { 10904, 0x0000 }, /* 0x7f00 */ { 10904, 0x0000 }, { 10904, 0x0000 }, { 10904, 0x0000 }, { 10904, 0xef40 }, { 10912, 0xfdfa }, { 10925, 0xfb33 }, { 10936, 0xffef }, { 10951, 0xffef }, { 10966, 0xffe8 }, { 10978, 0x7efe }, { 10991, 0xf3ff }, { 11005, 0xffff }, { 11021, 0xfeff }, { 11036, 0xf8ff }, { 11049, 0xffef }, { 11064, 0xffff }, /* 0x8000 */ { 11080, 0xfdfb }, { 11094, 0xfff7 }, { 11109, 0xdf5a }, { 11120, 0xfaf9 }, { 11132, 0xc7f9 }, { 11143, 0xfdc7 }, { 11155, 0xddf3 }, { 11167, 0xffff }, { 11183, 0xfef4 }, { 11195, 0xbfff }, { 11210, 0xfffe }, { 11225, 0x057f }, { 11234, 0xfffc }, { 11248, 0xffff }, { 11264, 0xe07f }, { 11274, 0xffff }, /* 0x8100 */ { 11290, 0x07ff }, { 11301, 0xeff0 }, { 11312, 0xfebe }, { 11325, 0x6e13 }, { 11333, 0xffff }, { 11349, 0xf83f }, { 11360, 0xfeff }, { 11375, 0xa7ff }, { 11388, 0xbfdf }, { 11402, 0xfffc }, { 11416, 0xffcf }, { 11430, 0xffbf }, { 11445, 0xf7fd }, { 11459, 0xeff7 }, { 11473, 0xf7ef }, { 11487, 0xdfdc }, /* 0x8200 */ { 11499, 0x7fbf }, { 11513, 0xff7f }, { 11528, 0xbfb7 }, { 11541, 0xb7fc }, { 11553, 0xdeb7 }, { 11565, 0xdfef }, { 11579, 0xff7e }, { 11593, 0xf9f6 }, { 11605, 0xfc79 }, { 11616, 0xff3f }, { 11630, 0xffff }, { 11646, 0x7fff }, { 11661, 0x021d }, { 11666, 0xfbff }, { 11681, 0xffff }, { 11697, 0x7fff }, /* 0x8300 */ { 11712, 0x7bff }, { 11726, 0xfbc0 }, { 11735, 0xbfff }, { 11750, 0xdffe }, { 11764, 0xffff }, { 11780, 0x01df }, { 11788, 0x0008 }, { 11789, 0xfffe }, { 11804, 0xfffb }, { 11819, 0xffff }, { 11835, 0xefff }, { 11850, 0xa081 }, { 11854, 0xffff }, { 11870, 0xfffe }, { 11885, 0xffff }, { 11901, 0xff7f }, /* 0x8400 */ { 11916, 0xffff }, { 11932, 0x89df }, { 11942, 0xfe08 }, { 11950, 0xffff }, { 11966, 0xffff }, { 11982, 0xffff }, { 11998, 0xfbff }, { 12013, 0xefff }, { 12028, 0xe05d }, { 12036, 0xffff }, { 12052, 0xffbf }, { 12067, 0xbfff }, { 12082, 0xffff }, { 12098, 0x0dff }, { 12109, 0xff90 }, { 12119, 0xffff }, /* 0x8500 */ { 12135, 0xffff }, { 12151, 0xfffe }, { 12166, 0xfffb }, { 12181, 0xe83b }, { 12190, 0x7fff }, { 12205, 0xfffa }, { 12219, 0xffff }, { 12235, 0xdfe3 }, { 12247, 0xffff }, { 12263, 0xffff }, { 12279, 0x9fdf }, { 12292, 0xefff }, { 12307, 0xfbff }, { 12322, 0xffe7 }, { 12336, 0xfffe }, { 12351, 0xffd7 }, /* 0x8600 */ { 12365, 0xbfff }, { 12380, 0xffeb }, { 12394, 0xffff }, { 12410, 0xff7e }, { 12424, 0x7fcf }, { 12437, 0xfffd }, { 12452, 0xffbe }, { 12466, 0x3ffb }, { 12479, 0xfef0 }, { 12490, 0xffff }, { 12506, 0xc7ff }, { 12519, 0xffff }, { 12535, 0x1bff }, { 12547, 0xfffb }, { 12562, 0x7f5e }, { 12574, 0xffe0 }, /* 0x8700 */ { 12585, 0x7fff }, { 12600, 0x7f6e }, { 12612, 0x7fff }, { 12627, 0xffff }, { 12643, 0xf0ef }, { 12654, 0xffff }, { 12670, 0xffff }, { 12686, 0x2ffa }, { 12697, 0xefbe }, { 12710, 0xffdf }, { 12725, 0xfc1e }, { 12735, 0xffff }, { 12751, 0x7fff }, { 12766, 0xfffe }, { 12781, 0xffff }, { 12797, 0xffdd }, /* 0x8800 */ { 12811, 0xffef }, { 12826, 0xbfff }, { 12841, 0xffff }, { 12857, 0xfbef }, { 12871, 0xfdff }, { 12886, 0xffec }, { 12899, 0xefce }, { 12911, 0xffff }, { 12927, 0xff1f }, { 12940, 0xdfff }, { 12955, 0x1fff }, { 12968, 0xfff6 }, { 12982, 0xfe07 }, { 12992, 0xfff5 }, { 13006, 0xffc3 }, { 13018, 0xffff }, /* 0x8900 */ { 13034, 0xdeef }, { 13047, 0xcfff }, { 13061, 0xfefe }, { 13075, 0xfbef }, { 13089, 0xff5f }, { 13103, 0xffcf }, { 13117, 0xfeff }, { 13132, 0xff5e }, { 13145, 0x9fee }, { 13157, 0xfdfe }, { 13171, 0xfefe }, { 13185, 0xfeef }, { 13199, 0x0001 }, { 13200, 0xbe7c }, { 13211, 0x7fff }, { 13226, 0xddff }, /* 0x8a00 */ { 13240, 0xfdfd }, { 13254, 0xfbef }, { 13268, 0x3fef }, { 13281, 0xff77 }, { 13295, 0xff7f }, { 13310, 0x6ff7 }, { 13323, 0xffff }, { 13339, 0xffff }, { 13355, 0xf9ff }, { 13369, 0xff7f }, { 13384, 0x9fff }, { 13398, 0xffff }, { 13414, 0xffff }, { 13430, 0xfbff }, { 13445, 0xffff }, { 13461, 0xffff }, /* 0x8b00 */ { 13477, 0xfff7 }, { 13492, 0xffff }, { 13508, 0xfffd }, { 13523, 0xffff }, { 13539, 0xffef }, { 13554, 0xb7ff }, { 13568, 0xffff }, { 13584, 0xffb3 }, { 13597, 0x7dff }, { 13611, 0xffff }, { 13627, 0x0000 }, { 13627, 0x0000 }, { 13627, 0x0000 }, { 13627, 0x0000 }, { 13627, 0x0000 }, { 13627, 0x0000 }, /* 0x8c00 */ { 13627, 0x0000 }, { 13627, 0x0000 }, { 13627, 0x0000 }, { 13627, 0xfe80 }, { 13635, 0xffff }, { 13651, 0xfdfb }, { 13665, 0xbfff }, { 13680, 0xffff }, { 13696, 0xf77f }, { 13710, 0xffff }, { 13726, 0xffff }, { 13742, 0xffff }, { 13758, 0xb7bf }, { 13771, 0xfeff }, { 13786, 0xffff }, { 13802, 0x7fff }, /* 0x8d00 */ { 13817, 0xaffd }, { 13830, 0x1eff }, { 13842, 0x0000 }, { 13842, 0x0000 }, { 13842, 0x0000 }, { 13842, 0x0000 }, { 13842, 0xfbf0 }, { 13853, 0xffdf }, { 13868, 0xffff }, { 13884, 0xbfff }, { 13899, 0xffff }, { 13915, 0xfefc }, { 13928, 0xffe7 }, { 13942, 0xbfff }, { 13957, 0xffdf }, { 13972, 0xf41f }, /* 0x8e00 */ { 13982, 0xafff }, { 13996, 0xffff }, { 14012, 0x4fff }, { 14025, 0xfb7f }, { 14039, 0xffff }, { 14055, 0xfff9 }, { 14069, 0xbfff }, { 14084, 0x1dfd }, { 14095, 0x7ffe }, { 14109, 0xe7ff }, { 14123, 0xbfff }, { 14138, 0xa7df }, { 14150, 0xbe4f }, { 14161, 0xfbde }, { 14174, 0xdff3 }, { 14187, 0xfffe }, /* 0x8f00 */ { 14202, 0x6fff }, { 14216, 0xffff }, { 14232, 0xfefd }, { 14246, 0xfbff }, { 14261, 0xefff }, { 14276, 0xffff }, { 14292, 0x003f }, { 14298, 0x0000 }, { 14298, 0x0000 }, { 14298, 0xf800 }, { 14303, 0xf1ff }, { 14316, 0xc23f }, { 14325, 0xfef6 }, { 14338, 0x03fe }, { 14347, 0xefff }, { 14362, 0xfff3 }, /* 0x9000 */ { 14376, 0xfb7f }, { 14390, 0xfeff }, { 14405, 0xff3f }, { 14419, 0xfdf7 }, { 14433, 0xffff }, { 14449, 0xff3f }, { 14463, 0xef8f }, { 14475, 0xffff }, { 14491, 0xafff }, { 14505, 0xcfff }, { 14519, 0xafff }, { 14533, 0xf3ff }, { 14547, 0x6fff }, { 14561, 0xfff0 }, { 14573, 0xff3f }, { 14587, 0xfebf }, /* 0x9100 */ { 14601, 0xffff }, { 14617, 0xffff }, { 14633, 0xffff }, { 14649, 0xffff }, { 14665, 0xfffb }, { 14680, 0x87ff }, { 14692, 0xdfbf }, { 14706, 0x1ffc }, { 14717, 0xffff }, { 14733, 0xfe6f }, { 14746, 0xffaf }, { 14760, 0xfebf }, { 14774, 0xfaff }, { 14788, 0xfffb }, { 14803, 0x7ffd }, { 14817, 0xe3ff }, /* 0x9200 */ { 14830, 0xffff }, { 14846, 0x5fff }, { 14860, 0xe0fd }, { 14870, 0xffff }, { 14886, 0xff73 }, { 14899, 0xfeff }, { 14914, 0xfcff }, { 14928, 0xff45 }, { 14939, 0xffff }, { 14955, 0x7fff }, { 14970, 0x7fff }, { 14985, 0xdbfe }, { 14998, 0xffff }, { 15014, 0xffff }, { 15030, 0xeff7 }, { 15044, 0xffcb }, /* 0x9300 */ { 15057, 0xffff }, { 15073, 0xfffd }, { 15088, 0xffff }, { 15104, 0x137f }, { 15114, 0xffe0 }, { 15125, 0xffff }, { 15141, 0x7fff }, { 15156, 0xffff }, { 15172, 0xff0d }, { 15183, 0xffff }, { 15199, 0xf7ff }, { 15214, 0x09bf }, { 15223, 0xfdff }, { 15238, 0xffff }, { 15254, 0x7fff }, { 15269, 0xfff8 }, /* 0x9400 */ { 15282, 0xfffd }, { 15297, 0xdfff }, { 15312, 0x7f81 }, { 15321, 0xbfef }, { 15335, 0xfffd }, { 15350, 0xfcf7 }, { 15363, 0xff3f }, { 15377, 0xfdff }, { 15392, 0x001f }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, /* 0x9500 */ { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x0000 }, { 15397, 0x3c80 }, { 15402, 0xfbef }, { 15416, 0xdf3f }, { 15429, 0xfbbe }, { 15442, 0xffef }, { 15457, 0x3fff }, { 15471, 0xfdff }, { 15486, 0x003f }, { 15492, 0x0000 }, /* 0x9600 */ { 15492, 0x0000 }, { 15492, 0x7000 }, { 15495, 0xffdf }, { 15510, 0xfe9f }, { 15523, 0xfc1f }, { 15534, 0xff5b }, { 15547, 0xfc1f }, { 15558, 0xfbff }, { 15573, 0xffff }, { 15589, 0xfbfe }, { 15603, 0xffbf }, { 15618, 0xbbff }, { 15632, 0x7fff }, { 15647, 0xffff }, { 15663, 0xf7fe }, { 15677, 0xbff7 }, /* 0x9700 */ { 15691, 0xfff5 }, { 15705, 0xffff }, { 15721, 0xdffd }, { 15735, 0xf7ff }, { 15750, 0x0bff }, { 15761, 0xff67 }, { 15774, 0xf7df }, { 15788, 0xffdd }, { 15802, 0xffbf }, { 15817, 0xff98 }, { 15828, 0x7f7f }, { 15842, 0xeffe }, { 15856, 0xfffb }, { 15871, 0xf7fd }, { 15885, 0xe03e }, { 15893, 0xff6f }, /* 0x9800 */ { 15907, 0xfdff }, { 15922, 0xffff }, { 15938, 0xefd7 }, { 15951, 0xbfff }, { 15966, 0xfffb }, { 15981, 0xfbff }, { 15996, 0xfffd }, { 16011, 0x001f }, { 16016, 0x0000 }, { 16016, 0x0000 }, { 16016, 0xf300 }, { 16022, 0xffee }, { 16036, 0x3fdf }, { 16049, 0xb800 }, { 16053, 0xbeee }, { 16065, 0xf7ff }, /* 0x9900 */ { 16080, 0x17ef }, { 16091, 0xffff }, { 16107, 0xffbf }, { 16122, 0xff6f }, { 16136, 0xfbbb }, { 16149, 0xffff }, { 16165, 0x0002 }, { 16166, 0x0000 }, { 16166, 0x0000 }, { 16166, 0x77c0 }, { 16174, 0xffff }, { 16190, 0xffff }, { 16206, 0xff9f }, { 16220, 0xffff }, { 16236, 0xffff }, { 16252, 0xfffb }, /* 0x9a00 */ { 16267, 0xffff }, { 16283, 0xfff3 }, { 16297, 0xfeff }, { 16312, 0xfff7 }, { 16327, 0xf77f }, { 16341, 0xdfff }, { 16356, 0x0fff }, { 16368, 0x0000 }, { 16368, 0x0000 }, { 16368, 0x0000 }, { 16368, 0xab00 }, { 16373, 0xfbfb }, { 16387, 0xe7d7 }, { 16399, 0xf5ff }, { 16413, 0xffff }, { 16429, 0x7ffe }, /* 0x9b00 */ { 16443, 0x7fff }, { 16458, 0xc7f7 }, { 16470, 0xdfff }, { 16485, 0xfdbf }, { 16499, 0xff7f }, { 16514, 0xafff }, { 16528, 0x9bdb }, { 16539, 0x7cf7 }, { 16551, 0xdbfd }, { 16564, 0xee3f }, { 16576, 0xed7f }, { 16589, 0xab60 }, { 16596, 0x3fff }, { 16610, 0xdefc }, { 16622, 0x5fff }, { 16636, 0xfbc1 }, /* 0x9c00 */ { 16646, 0x7ff5 }, { 16659, 0xb8bd }, { 16669, 0x7b3a }, { 16679, 0xfffe }, { 16694, 0xff73 }, { 16707, 0xe3ff }, { 16720, 0xf1ef }, { 16732, 0x0ffa }, { 16742, 0x0000 }, { 16742, 0x0000 }, { 16742, 0x0000 }, { 16742, 0x0000 }, { 16742, 0x0000 }, { 16742, 0x0000 }, { 16742, 0xffe0 }, { 16753, 0xfffe }, /* 0x9d00 */ { 16768, 0xb7ff }, { 16782, 0xeffd }, { 16796, 0xe7ff }, { 16810, 0xebeb }, { 16822, 0xfc3f }, { 16834, 0xffff }, { 16850, 0xffcb }, { 16863, 0xefff }, { 16878, 0x1fff }, { 16891, 0xfff7 }, { 16906, 0xf7ff }, { 16921, 0xffff }, { 16937, 0xfdbe }, { 16950, 0xffef }, { 16965, 0xfb7e }, { 16978, 0xfffd }, /* 0x9e00 */ { 16993, 0xebff }, { 17007, 0x7fff }, { 17022, 0x0000 }, { 17022, 0x0000 }, { 17022, 0x0000 }, { 17022, 0x0000 }, { 17022, 0x0000 }, { 17022, 0xbe20 }, { 17029, 0x7fff }, { 17044, 0xffbf }, { 17059, 0xfeff }, { 17074, 0x78f7 }, { 17085, 0xf57f }, { 17098, 0xfdff }, { 17113, 0xe9f9 }, { 17124, 0xfeff }, /* 0x9f00 */ { 17139, 0xc7ff }, { 17152, 0x7ffd }, { 17166, 0xfffd }, { 17181, 0x6bff }, { 17194, 0xffef }, { 17209, 0xfffd }, { 17224, 0xdefb }, { 17237, 0x5ff7 }, { 17250, 0x6000 }, { 17252, 0x31bf }, { 17262, 0x003f }, }; static const Summary16 cns11643_inv_uni2indx_pagefe[31] = { /* 0xfe00 */ { 17268, 0x0000 }, { 17268, 0x0000 }, { 17268, 0x0000 }, { 17268, 0xffe7 }, { 17282, 0x7e1f }, { 17293, 0xfef7 }, { 17307, 0x0f7f }, { 17318, 0x0000 }, { 17318, 0x0000 }, { 17318, 0x0000 }, { 17318, 0x0000 }, { 17318, 0x0000 }, { 17318, 0x0000 }, { 17318, 0x0000 }, { 17318, 0x0000 }, { 17318, 0x0000 }, /* 0xff00 */ { 17318, 0xff7a }, { 17331, 0xffff }, { 17347, 0xffff }, { 17363, 0x97ff }, { 17376, 0xfffe }, { 17391, 0x3fff }, { 17405, 0x0000 }, { 17405, 0x0000 }, { 17405, 0x0000 }, { 17405, 0x0000 }, { 17405, 0x0000 }, { 17405, 0x0000 }, { 17405, 0x0000 }, { 17405, 0x0000 }, { 17405, 0x0023 }, }; static int cns11643_inv_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0100) summary = &cns11643_inv_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0200 && wc < 0x03d0) summary = &cns11643_inv_uni2indx_page02[(wc>>4)-0x020]; else if (wc >= 0x2000 && wc < 0x22c0) summary = &cns11643_inv_uni2indx_page20[(wc>>4)-0x200]; else if (wc >= 0x2400 && wc < 0x2650) summary = &cns11643_inv_uni2indx_page24[(wc>>4)-0x240]; else if (wc >= 0x3000 && wc < 0x33e0) summary = &cns11643_inv_uni2indx_page30[(wc>>4)-0x300]; else if (wc >= 0x4e00 && wc < 0x9fb0) summary = &cns11643_inv_uni2indx_page4e[(wc>>4)-0x4e0]; else if (wc >= 0xfe00 && wc < 0xfff0) summary = &cns11643_inv_uni2indx_pagefe[(wc>>4)-0xfe0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = cns11643_inv_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/converters.h0100644000000000000000000001363507206266736015520 0ustar rootroot/* Copyright (C) 1999-2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU ICONV Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This file defines all the converters. */ /* Our own notion of wide character, as UCS-4, according to ISO-10646-1. */ typedef unsigned int ucs4_t; /* State used by a conversion. 0 denotes the initial state. */ typedef unsigned int state_t; /* iconv_t is an opaque type. This is the real iconv_t type. */ typedef struct conv_struct * conv_t; /* * Data type for conversion multibyte -> unicode */ struct mbtowc_funcs { int (*xxx_mbtowc) (conv_t conv, ucs4_t *pwc, unsigned char const *s, int n); /* * int xxx_mbtowc (conv_t conv, ucs4_t *pwc, unsigned char const *s, int n) * converts the byte sequence starting at s to a wide character. Up to n bytes * are available at s. n is >= 1. * Result is number of bytes consumed (if a wide character was read), * or 0 if invalid, or -1 if n too small, or -1-(number of bytes consumed) * if only a shift sequence was read. */ }; /* * Data type for conversion unicode -> multibyte */ struct wctomb_funcs { int (*xxx_wctomb) (conv_t conv, unsigned char *r, ucs4_t wc, int n); /* * int xxx_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) * converts the wide character wc to the character set xxx, and stores the * result beginning at r. Up to n bytes may be written at r. n is >= 1. * Result is number of bytes written, or 0 if invalid, or -1 if n too small. */ int (*xxx_reset) (conv_t conv, unsigned char *r, int n); /* * int xxx_reset (conv_t conv, unsigned char *r, int n) * stores a shift sequences returning to the initial state beginning at r. * Up to n bytes may be written at r. n is >= 0. * Result is number of bytes written, or -1 if n too small. */ }; /* Return code if invalid. (xxx_mbtowc, xxx_wctomb) */ #define RET_ILSEQ 0 /* Return code if only a shift sequence of n bytes was read. (xxx_mbtowc) */ #define RET_TOOFEW(n) (-1-(n)) /* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */ #define RET_TOOSMALL -1 /* * Contents of a conversion descriptor. */ struct conv_struct { struct loop_funcs lfuncs; /* Input (conversion multibyte -> unicode) */ int iindex; struct mbtowc_funcs ifuncs; state_t istate; /* Output (conversion unicode -> multibyte) */ int oindex; struct wctomb_funcs ofuncs; int oflags; state_t ostate; /* Operation flags */ int transliterate; }; /* * Include all the converters. */ #include "ascii.h" /* General multi-byte encodings */ #include "utf8.h" #include "ucs2.h" #include "ucs2be.h" #include "ucs2le.h" #include "ucs4.h" #include "ucs4be.h" #include "ucs4le.h" #include "utf16.h" #include "utf16be.h" #include "utf16le.h" #include "utf7.h" #include "ucs2internal.h" #include "ucs2swapped.h" #include "ucs4internal.h" #include "ucs4swapped.h" #include "java.h" /* 8-bit encodings */ #include "iso8859_1.h" #include "iso8859_2.h" #include "iso8859_3.h" #include "iso8859_4.h" #include "iso8859_5.h" #include "iso8859_6.h" #include "iso8859_7.h" #include "iso8859_8.h" #include "iso8859_9.h" #include "iso8859_10.h" #include "iso8859_13.h" #include "iso8859_14.h" #include "iso8859_15.h" #include "iso8859_16.h" #include "koi8_r.h" #include "koi8_u.h" #include "koi8_ru.h" #include "cp1250.h" #include "cp1251.h" #include "cp1252.h" #include "cp1253.h" #include "cp1254.h" #include "cp1255.h" #include "cp1256.h" #include "cp1257.h" #include "cp1258.h" #include "cp850.h" #include "cp866.h" #include "mac_roman.h" #include "mac_centraleurope.h" #include "mac_iceland.h" #include "mac_croatian.h" #include "mac_romania.h" #include "mac_cyrillic.h" #include "mac_ukraine.h" #include "mac_greek.h" #include "mac_turkish.h" #include "mac_hebrew.h" #include "mac_arabic.h" #include "mac_thai.h" #include "hp_roman8.h" #include "nextstep.h" #include "armscii_8.h" #include "georgian_academy.h" #include "georgian_ps.h" #include "mulelao.h" #include "cp1133.h" #include "tis620.h" #include "cp874.h" #include "viscii.h" #include "tcvn.h" /* CJK character sets [CCS = coded character set] [CJKV.INF chapter 3] */ typedef struct { unsigned short indx; /* index into big table */ unsigned short used; /* bitmask of used entries */ } Summary16; #include "iso646_jp.h" #include "jisx0201.h" #include "jisx0208.h" #include "jisx0212.h" #include "iso646_cn.h" #include "gb2312.h" #include "isoir165.h" /*#include "gb12345.h"*/ #include "gbk.h" #include "cns11643.h" #include "big5.h" #include "ksc5601.h" #include "johab_hangul.h" /* CJK encodings [CES = character encoding scheme] [CJKV.INF chapter 4] */ #include "euc_jp.h" #include "sjis.h" #include "cp932.h" #include "iso2022_jp.h" #include "iso2022_jp1.h" #include "iso2022_jp2.h" #include "euc_cn.h" #include "ces_gbk.h" #include "gb18030.h" #include "iso2022_cn.h" #include "iso2022_cnext.h" #include "hz.h" #include "euc_tw.h" #include "ces_big5.h" #include "cp950.h" #include "big5hkscs.h" #include "euc_kr.h" #include "cp949.h" #include "johab.h" #include "iso2022_kr.h" /* Encodings used by system dependent locales. */ #ifdef USE_AIX #include "cp856.h" #include "cp922.h" #include "cp943.h" #include "cp1046.h" #include "cp1124.h" #include "cp1129.h" #endif recode-3.6/libiconv/cp1133.h0100644000000000000000000000534307206266436014232 0ustar rootroot /* * IBM-CP1133 */ static const unsigned short cp1133_2uni_1[64] = { /* 0xa0 */ 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a, 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b, /* 0xb0 */ 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1, 0x0ea2, 0x0ea3, 0x0ea5, 0x0ea7, 0x0eab, 0x0ead, 0x0eae, 0xfffd, 0xfffd, 0xfffd, 0x0eaf, /* 0xc0 */ 0x0eb0, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8, 0x0eb9, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd, 0xfffd, /* 0xd0 */ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad, }; static const unsigned short cp1133_2uni_2[16] = { /* 0xf0 */ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7, 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd, }; static int cp1133_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) { *pwc = (ucs4_t) c; return 1; } else if (c < 0xe0) { unsigned short wc = cp1133_2uni_1[c-0xa0]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } else if (c < 0xf0) { } else { unsigned short wc = cp1133_2uni_2[c-0xf0]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char cp1133_page00[16] = { 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ }; static const unsigned char cp1133_page0e[96] = { 0x00, 0xa1, 0xa2, 0x00, 0xa3, 0x00, 0x00, 0xa4, /* 0x80-0x87 */ 0xa5, 0x00, 0xa7, 0x00, 0x00, 0xa8, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x00, 0x00, 0xa9, 0xaa, 0xab, 0xac, /* 0x90-0x97 */ 0x00, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, /* 0x98-0x9f */ 0x00, 0xb4, 0xb5, 0xb6, 0x00, 0xb7, 0x00, 0xb8, /* 0xa0-0xa7 */ 0x00, 0x00, 0xa6, 0xb9, 0x00, 0xba, 0xbb, 0xbf, /* 0xa8-0xaf */ 0xc0, 0xca, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, /* 0xb0-0xb7 */ 0xc7, 0xc8, 0x00, 0xcb, 0xc9, 0xcc, 0x00, 0x00, /* 0xb8-0xbf */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xdb, 0x00, /* 0xc0-0xc7 */ 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, /* 0xc8-0xcf */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */ 0xf8, 0xf9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */ }; static int cp1133_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00b0) c = cp1133_page00[wc-0x00a0]; else if (wc >= 0x0e80 && wc < 0x0ee0) c = cp1133_page0e[wc-0x0e80]; else if (wc == 0x20ad) c = 0xdf; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp1250.h0100644000000000000000000001122207206266436014223 0ustar rootroot /* * CP1250 */ static const unsigned short cp1250_2uni[128] = { /* 0x80 */ 0x20ac, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, 0xfffd, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179, /* 0x90 */ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a, /* 0xa0 */ 0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b, /* 0xb0 */ 0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c, /* 0xc0 */ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, /* 0xd0 */ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, /* 0xe0 */ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, /* 0xf0 */ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, }; static int cp1250_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = cp1250_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char cp1250_page00[224] = { 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */ 0xb0, 0xb1, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0xb8, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */ 0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */ 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */ 0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0x00, 0x00, 0xc3, 0xe3, 0xa5, 0xb9, 0xc6, 0xe6, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, /* 0x08-0x0f */ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0xc5, 0xe5, 0x00, 0x00, 0xbc, 0xbe, 0x00, /* 0x38-0x3f */ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, /* 0x40-0x47 */ 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, /* 0x50-0x57 */ 0xd8, 0xf8, 0x8c, 0x9c, 0x00, 0x00, 0xaa, 0xba, /* 0x58-0x5f */ 0x8a, 0x9a, 0xde, 0xfe, 0x8d, 0x9d, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, /* 0x68-0x6f */ 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x8f, 0x9f, 0xaf, 0xbf, 0x8e, 0x9e, 0x00, /* 0x78-0x7f */ }; static const unsigned char cp1250_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char cp1250_page20[48] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int cp1250_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0180) c = cp1250_page00[wc-0x00a0]; else if (wc >= 0x02c0 && wc < 0x02e0) c = cp1250_page02[wc-0x02c0]; else if (wc >= 0x2010 && wc < 0x2040) c = cp1250_page20[wc-0x2010]; else if (wc == 0x20ac) c = 0x80; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp1251.h0100644000000000000000000001013007206266436014221 0ustar rootroot /* * CP1251 */ static const unsigned short cp1251_2uni[128] = { /* 0x80 */ 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f, /* 0x90 */ 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f, /* 0xa0 */ 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7, 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407, /* 0xb0 */ 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7, 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457, /* 0xc0 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, /* 0xd0 */ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, /* 0xe0 */ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, /* 0xf0 */ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, }; static int cp1251_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = cp1251_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char cp1251_page00[32] = { 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ }; static const unsigned char cp1251_page04[152] = { 0x00, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */ 0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0x00, 0xa1, 0x8f, /* 0x08-0x0f */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */ 0x00, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */ 0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0x00, 0xa2, 0x9f, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char cp1251_page20[48] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int cp1251_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00c0) c = cp1251_page00[wc-0x00a0]; else if (wc >= 0x0400 && wc < 0x0498) c = cp1251_page04[wc-0x0400]; else if (wc >= 0x2010 && wc < 0x2040) c = cp1251_page20[wc-0x2010]; else if (wc == 0x20ac) c = 0x88; else if (wc == 0x2116) c = 0xb9; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp1252.h0100644000000000000000000000516607206266436014237 0ustar rootroot /* * CP1252 */ static const unsigned short cp1252_2uni[32] = { /* 0x80 */ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xfffd, 0x017d, 0xfffd, /* 0x90 */ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0x017e, 0x0178, }; static int cp1252_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80 || c >= 0xa0) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = cp1252_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char cp1252_page01[72] = { 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x9e, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char cp1252_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char cp1252_page20[48] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int cp1252_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = wc; else if (wc >= 0x0150 && wc < 0x0198) c = cp1252_page01[wc-0x0150]; else if (wc >= 0x02c0 && wc < 0x02e0) c = cp1252_page02[wc-0x02c0]; else if (wc >= 0x2010 && wc < 0x2040) c = cp1252_page20[wc-0x2010]; else if (wc == 0x20ac) c = 0x80; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp1253.h0100644000000000000000000000700507206266436014232 0ustar rootroot /* * CP1253 */ static const unsigned short cp1253_2uni[128] = { /* 0x80 */ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0xfffd, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x90 */ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xa0 */ 0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7, 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, /* 0xc0 */ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, /* 0xd0 */ 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, /* 0xe0 */ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, /* 0xf0 */ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd, }; static int cp1253_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = cp1253_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char cp1253_page00[32] = { 0xa0, 0x00, 0x00, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */ }; static const unsigned char cp1253_page03[80] = { 0x00, 0x00, 0x00, 0x00, 0xb4, 0xa1, 0xa2, 0x00, /* 0x80-0x87 */ 0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf, /* 0x88-0x8f */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x90-0x97 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x98-0x9f */ 0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xa0-0xa7 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xa8-0xaf */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xb0-0xb7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xb8-0xbf */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xc0-0xc7 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xc8-0xcf */ }; static const unsigned char cp1253_page20[48] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0xaf, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int cp1253_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00c0) c = cp1253_page00[wc-0x00a0]; else if (wc == 0x0192) c = 0x83; else if (wc >= 0x0380 && wc < 0x03d0) c = cp1253_page03[wc-0x0380]; else if (wc >= 0x2010 && wc < 0x2040) c = cp1253_page20[wc-0x2010]; else if (wc == 0x20ac) c = 0x80; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp1254.h0100644000000000000000000001037207206266436014234 0ustar rootroot /* * CP1254 */ static const unsigned short cp1254_2uni_1[32] = { /* 0x80 */ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, /* 0x90 */ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, }; static const unsigned short cp1254_2uni_2[16] = { /* 0xd0 */ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, }; static const unsigned short cp1254_2uni_3[16] = { /* 0xf0 */ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, }; static int cp1254_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else if (c < 0xa0) { unsigned short wc = cp1254_2uni_1[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } else if (c < 0xd0) { *pwc = (ucs4_t) c; return 1; } else if (c < 0xe0) { *pwc = (ucs4_t) cp1254_2uni_2[c-0xd0]; return 1; } else if (c < 0xf0) { *pwc = (ucs4_t) c; return 1; } else { *pwc = (ucs4_t) cp1254_2uni_3[c-0xf0]; return 1; } return RET_ILSEQ; } static const unsigned char cp1254_page00[48] = { 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */ }; static const unsigned char cp1254_page01[128] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char cp1254_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char cp1254_page20[48] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int cp1254_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00d0) c = wc; else if (wc >= 0x00d0 && wc < 0x0100) c = cp1254_page00[wc-0x00d0]; else if (wc >= 0x0118 && wc < 0x0198) c = cp1254_page01[wc-0x0118]; else if (wc >= 0x02c0 && wc < 0x02e0) c = cp1254_page02[wc-0x02c0]; else if (wc >= 0x2010 && wc < 0x2040) c = cp1254_page20[wc-0x2010]; else if (wc == 0x20ac) c = 0x80; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp1255.h0100644000000000000000000001060007206266436014227 0ustar rootroot /* * CP1255 */ static const unsigned short cp1255_2uni[128] = { /* 0x80 */ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x90 */ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xa0 */ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, /* 0xc0 */ 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7, 0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf, /* 0xd0 */ 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3, 0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xe0 */ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, /* 0xf0 */ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd, }; static int cp1255_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = cp1255_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char cp1255_page00[88] = { 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */ }; static const unsigned char cp1255_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char cp1255_page05[72] = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xb0-0xb7 */ 0xc8, 0xc9, 0x00, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xb8-0xbf */ 0xd0, 0xd1, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */ }; static const unsigned char cp1255_page20[56] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int cp1255_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00f8) c = cp1255_page00[wc-0x00a0]; else if (wc == 0x0192) c = 0x83; else if (wc >= 0x02c0 && wc < 0x02e0) c = cp1255_page02[wc-0x02c0]; else if (wc >= 0x05b0 && wc < 0x05f8) c = cp1255_page05[wc-0x05b0]; else if (wc >= 0x2008 && wc < 0x2040) c = cp1255_page20[wc-0x2008]; else if (wc == 0x20aa) c = 0xa4; else if (wc == 0x20ac) c = 0x80; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp1256.h0100644000000000000000000001333207206266436014235 0ustar rootroot /* * CP1256 */ static const unsigned short cp1256_2uni[128] = { /* 0x80 */ 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, /* 0x90 */ 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba, /* 0xa0 */ 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f, /* 0xc0 */ 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, /* 0xd0 */ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7, 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643, /* 0xe0 */ 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef, /* 0xf0 */ 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7, 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2, }; static int cp1256_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) cp1256_2uni[c-0x80]; return 1; } static const unsigned char cp1256_page00[96] = { 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 0xe0, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */ 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x00, 0xee, 0xef, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xf7, /* 0xf0-0xf7 */ 0x00, 0xf9, 0x00, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; static const unsigned char cp1256_page01[72] = { 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char cp1256_page06[208] = { 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, /* 0x30-0x37 */ 0xd9, 0xda, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0xdc, 0xdd, 0xde, 0xdf, 0xe1, 0xe3, 0xe4, 0xe5, /* 0x40-0x47 */ 0xe6, 0xec, 0xed, 0xf0, 0xf1, 0xf2, 0xf3, 0xf5, /* 0x48-0x4f */ 0xf6, 0xf8, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, /* 0x80-0x87 */ 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xaa, 0x00, /* 0xb8-0xbf */ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ }; static const unsigned char cp1256_page20[56] = { 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0xfd, 0xfe, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int cp1256_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = cp1256_page00[wc-0x00a0]; else if (wc >= 0x0150 && wc < 0x0198) c = cp1256_page01[wc-0x0150]; else if (wc == 0x02c6) c = 0x88; else if (wc >= 0x0608 && wc < 0x06d8) c = cp1256_page06[wc-0x0608]; else if (wc >= 0x2008 && wc < 0x2040) c = cp1256_page20[wc-0x2008]; else if (wc == 0x20ac) c = 0x80; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp1257.h0100644000000000000000000001122207206266436014232 0ustar rootroot /* * CP1257 */ static const unsigned short cp1257_2uni[128] = { /* 0x80 */ 0x20ac, 0xfffd, 0x201a, 0xfffd, 0x201e, 0x2026, 0x2020, 0x2021, 0xfffd, 0x2030, 0xfffd, 0x2039, 0xfffd, 0x00a8, 0x02c7, 0x00b8, /* 0x90 */ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0x2122, 0xfffd, 0x203a, 0xfffd, 0x00af, 0x02db, 0xfffd, /* 0xa0 */ 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0xfffd, 0x00a6, 0x00a7, 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, /* 0xc0 */ 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, /* 0xd0 */ 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, /* 0xe0 */ 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, /* 0xf0 */ 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x02d9, }; static int cp1257_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = cp1257_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char cp1257_page00[224] = { 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */ 0x8d, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x9d, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0x8f, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, /* 0xc0-0xc7 */ 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 0xa8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */ 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, /* 0xe0-0xe7 */ 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 0xb8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, /* 0x10-0x17 */ 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xc1, 0xe1, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0x50-0x57 */ 0x00, 0x00, 0xda, 0xfa, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00, /* 0x78-0x7f */ }; static const unsigned char cp1257_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0xff, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char cp1257_page20[48] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int cp1257_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0180) c = cp1257_page00[wc-0x00a0]; else if (wc >= 0x02c0 && wc < 0x02e0) c = cp1257_page02[wc-0x02c0]; else if (wc >= 0x2010 && wc < 0x2040) c = cp1257_page20[wc-0x2010]; else if (wc == 0x20ac) c = 0x80; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp1258.h0100644000000000000000000001205307206266436014236 0ustar rootroot /* * CP1258 */ static const unsigned short cp1258_2uni[128] = { /* 0x80 */ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0xfffd, 0x2039, 0x0152, 0xfffd, 0xfffd, 0xfffd, /* 0x90 */ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0xfffd, 0x203a, 0x0153, 0xfffd, 0xfffd, 0x0178, /* 0xa0 */ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, /* 0xc0 */ 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x0300, 0x00cd, 0x00ce, 0x00cf, /* 0xd0 */ 0x0110, 0x00d1, 0x0309, 0x00d3, 0x00d4, 0x01a0, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x01af, 0x0303, 0x00df, /* 0xe0 */ 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0301, 0x00ed, 0x00ee, 0x00ef, /* 0xf0 */ 0x0111, 0x00f1, 0x0323, 0x00f3, 0x00f4, 0x01a1, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x01b0, 0x20ab, 0x00ff, }; static int cp1258_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = cp1258_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char cp1258_page00[88] = { 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 0xc8, 0xc9, 0xca, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 0x00, 0xd1, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */ 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 0x00, 0xf1, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */ /* 0x0100 */ 0x00, 0x00, 0xc3, 0xe3, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ }; static const unsigned char cp1258_page01[104] = { 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0xd5, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, /* 0xa8-0xaf */ 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ }; static const unsigned char cp1258_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char cp1258_page03[40] = { 0xcc, 0xec, 0x00, 0xde, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; static const unsigned char cp1258_page20[48] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int cp1258_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00c0) c = wc; else if (wc >= 0x00c0 && wc < 0x0118) c = cp1258_page00[wc-0x00c0]; else if (wc >= 0x0150 && wc < 0x01b8) c = cp1258_page01[wc-0x0150]; else if (wc >= 0x02c0 && wc < 0x02e0) c = cp1258_page02[wc-0x02c0]; else if (wc >= 0x0300 && wc < 0x0328) c = cp1258_page03[wc-0x0300]; else if (wc >= 0x2010 && wc < 0x2040) c = cp1258_page20[wc-0x2010]; else if (wc == 0x20ab) c = 0xfe; else if (wc == 0x20ac) c = 0x80; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp850.h0100644000000000000000000001015307206266436014152 0ustar rootroot /* * CP850 */ static const unsigned short cp850_2uni[128] = { /* 0x80 */ 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, /* 0x90 */ 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192, /* 0xa0 */ 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, /* 0xb0 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, 0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, /* 0xc0 */ 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, /* 0xd0 */ 0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce, 0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, /* 0xe0 */ 0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe, 0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4, /* 0xf0 */ 0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, }; static int cp850_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) cp850_2uni[c-0x80]; return 1; } static const unsigned char cp850_page00[96] = { 0xff, 0xad, 0xbd, 0x9c, 0xcf, 0xbe, 0xdd, 0xf5, /* 0xa0-0xa7 */ 0xf9, 0xb8, 0xa6, 0xae, 0xaa, 0xf0, 0xa9, 0xee, /* 0xa8-0xaf */ 0xf8, 0xf1, 0xfd, 0xfc, 0xef, 0xe6, 0xf4, 0xfa, /* 0xb0-0xb7 */ 0xf7, 0xfb, 0xa7, 0xaf, 0xac, 0xab, 0xf3, 0xa8, /* 0xb8-0xbf */ 0xb7, 0xb5, 0xb6, 0xc7, 0x8e, 0x8f, 0x92, 0x80, /* 0xc0-0xc7 */ 0xd4, 0x90, 0xd2, 0xd3, 0xde, 0xd6, 0xd7, 0xd8, /* 0xc8-0xcf */ 0xd1, 0xa5, 0xe3, 0xe0, 0xe2, 0xe5, 0x99, 0x9e, /* 0xd0-0xd7 */ 0x9d, 0xeb, 0xe9, 0xea, 0x9a, 0xed, 0xe8, 0xe1, /* 0xd8-0xdf */ 0x85, 0xa0, 0x83, 0xc6, 0x84, 0x86, 0x91, 0x87, /* 0xe0-0xe7 */ 0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c, 0x8b, /* 0xe8-0xef */ 0xd0, 0xa4, 0x95, 0xa2, 0x93, 0xe4, 0x94, 0xf6, /* 0xf0-0xf7 */ 0x9b, 0x97, 0xa3, 0x96, 0x81, 0xec, 0xe7, 0x98, /* 0xf8-0xff */ }; static const unsigned char cp850_page25[168] = { 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0xcd, 0xba, 0x00, 0x00, 0xc9, 0x00, 0x00, 0xbb, /* 0x50-0x57 */ 0x00, 0x00, 0xc8, 0x00, 0x00, 0xbc, 0x00, 0x00, /* 0x58-0x5f */ 0xcc, 0x00, 0x00, 0xb9, 0x00, 0x00, 0xcb, 0x00, /* 0x60-0x67 */ 0x00, 0xca, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; static int cp850_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = cp850_page00[wc-0x00a0]; else if (wc == 0x0131) c = 0xd5; else if (wc == 0x0192) c = 0x9f; else if (wc == 0x2017) c = 0xf2; else if (wc >= 0x2500 && wc < 0x25a8) c = cp850_page25[wc-0x2500]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp866.h0100644000000000000000000001023507206266436014162 0ustar rootroot /* * CP866 */ static const unsigned short cp866_2uni[80] = { /* 0xb0 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, /* 0xc0 */ 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, /* 0xd0 */ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, /* 0xe0 */ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, /* 0xf0 */ 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0, }; static int cp866_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) *pwc = (ucs4_t) c; else if (c < 0xb0) *pwc = (ucs4_t) c + 0x0390; else *pwc = (ucs4_t) cp866_2uni[c-0xb0]; return 1; } static const unsigned char cp866_page00[24] = { 0xff, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, /* 0xb0-0xb7 */ }; static const unsigned char cp866_page04[96] = { 0x00, 0xf0, 0x00, 0x00, 0xf2, 0x00, 0x00, 0xf4, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, /* 0x08-0x0f */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x10-0x17 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x18-0x1f */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x20-0x27 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x28-0x2f */ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x30-0x37 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x38-0x3f */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */ 0x00, 0xf1, 0x00, 0x00, 0xf3, 0x00, 0x00, 0xf5, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, /* 0x58-0x5f */ }; static const unsigned char cp866_page22[8] = { 0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ }; static const unsigned char cp866_page25[168] = { 0xc4, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd9, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0xcd, 0xba, 0xd5, 0xd6, 0xc9, 0xb8, 0xb7, 0xbb, /* 0x50-0x57 */ 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6, 0xc7, /* 0x58-0x5f */ 0xcc, 0xb5, 0xb6, 0xb9, 0xd1, 0xd2, 0xcb, 0xcf, /* 0x60-0x67 */ 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0xde, 0xb0, 0xb1, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; static int cp866_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00b8) c = cp866_page00[wc-0x00a0]; else if (wc >= 0x0400 && wc < 0x0460) c = cp866_page04[wc-0x0400]; else if (wc == 0x2116) c = 0xfc; else if (wc >= 0x2218 && wc < 0x2220) c = cp866_page22[wc-0x2218]; else if (wc >= 0x2500 && wc < 0x25a8) c = cp866_page25[wc-0x2500]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp874.h0100644000000000000000000000601507206266436014162 0ustar rootroot /* * CP874 */ static const unsigned short cp874_2uni[128] = { /* 0x80 */ 0x20ac, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x90 */ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xa0 */ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, /* 0xb0 */ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, /* 0xc0 */ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, /* 0xd0 */ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f, /* 0xe0 */ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, /* 0xf0 */ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; static int cp874_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = cp874_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char cp874_page0e[96] = { 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */ 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ }; static const unsigned char cp874_page20[24] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x00, 0x00, 0x93, 0x94, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ }; static int cp874_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc == 0x00a0) c = 0xa0; else if (wc >= 0x0e00 && wc < 0x0e60) c = cp874_page0e[wc-0x0e00]; else if (wc >= 0x2010 && wc < 0x2028) c = cp874_page20[wc-0x2010]; else if (wc == 0x20ac) c = 0x80; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/cp932.h0100644000000000000000000001155507206266436014162 0ustar rootroot /* * CP932 */ /* * Microsoft CP932 is a slightly extended version of SHIFT-JIS. * The differences between the EASTASIA/JIS/SHIFTJIS.TXT and the * VENDORS/MICSFT/WINDOWS/CP932.TXT tables found on ftp.unicode.org are * as follows: * * 1. CP932 uses ASCII, not JISX0201 Roman. * * 2. Some characters in the JISX0208 range are defined differently: * * code SHIFTJIS.TXT CP932.TXT * 0x815F 0x005C # REVERSE SOLIDUS 0xFF3C # FULLWIDTH REVERSE SOLIDUS * 0x8160 0x301C # WAVE DASH 0xFF5E # FULLWIDTH TILDE * 0x8161 0x2016 # DOUBLE VERTICAL LINE 0x2225 # PARALLEL TO * 0x817C 0x2212 # MINUS SIGN 0xFF0D # FULLWIDTH HYPHEN-MINUS * 0x8191 0x00A2 # CENT SIGN 0xFFE0 # FULLWIDTH CENT SIGN * 0x8192 0x00A3 # POUND SIGN 0xFFE1 # FULLWIDTH POUND SIGN * 0x81CA 0x00AC # NOT SIGN 0xFFE2 # FULLWIDTH NOT SIGN * * We don't implement these changes. SHIFTJIS.TXT makes more sense. * * 3. A few new rows. See cp932ext.h. */ #include "cp932ext.h" /* Conversion between SJIS codes (s1,s2) and JISX0208 codes (c1,c2): Example. (s1,s2) = 0x8140, (c1,c2) = 0x2121. 0x81 <= s1 <= 0x9F || 0xE0 <= s1 <= 0xEA, 0x40 <= s2 <= 0x7E || 0x80 <= s2 <= 0xFC, 0x21 <= c1 <= 0x74, 0x21 <= c2 <= 0x7E. Invariant: 94*2*(s1 < 0xE0 ? s1-0x81 : s1-0xC1) + (s2 < 0x80 ? s2-0x40 : s2-0x41) = 94*(c1-0x21)+(c2-0x21) Conversion (s1,s2) -> (c1,c2): t1 := (s1 < 0xE0 ? s1-0x81 : s1-0xC1) t2 := (s2 < 0x80 ? s2-0x40 : s2-0x41) c1 := 2*t1 + (t2 < 0x5E ? 0 : 1) + 0x21 c2 := (t2 < 0x5E ? t2 : t2-0x5E) + 0x21 Conversion (c1,c2) -> (s1,s2): t1 := (c1 - 0x21) >> 1 t2 := ((c1 - 0x21) & 1) * 0x5E + (c2 - 0x21) s1 := (t1 < 0x1F ? t1+0x81 : t1+0xC1) s2 := (t2 < 0x3F ? t2+0x40 : t2+0x41) */ static int cp932_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); else if (c >= 0xa1 && c <= 0xdf) return jisx0201_mbtowc(conv,pwc,s,n); else { unsigned char s1, s2; s1 = c; if ((s1 >= 0x81 && s1 <= 0x9f && s1 != 0x87) || (s1 >= 0xe0 && s1 <= 0xea)) { if (n < 2) return RET_TOOFEW(0); s2 = s[1]; if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) { unsigned char t1 = (s1 < 0xe0 ? s1-0x81 : s1-0xc1); unsigned char t2 = (s2 < 0x80 ? s2-0x40 : s2-0x41); unsigned char buf[2]; buf[0] = 2*t1 + (t2 < 0x5e ? 0 : 1) + 0x21; buf[1] = (t2 < 0x5e ? t2 : t2-0x5e) + 0x21; return jisx0208_mbtowc(conv,pwc,buf,2); } } else if ((s1 == 0x87) || (s1 >= 0xed && s1 <= 0xee) || (s1 >= 0xfa)) { if (n < 2) return RET_TOOFEW(0); return cp932ext_mbtowc(conv,pwc,s,2); } else if (s1 >= 0xf0 && s1 <= 0xf9) { /* User-defined range. See * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ if (n < 2) return RET_TOOFEW(0); s2 = s[1]; if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) { *pwc = 0xe000 + 188*(s1 - 0xf0) + (s2 < 0x80 ? s2-0x40 : s2-0x41); return 2; } } return RET_ILSEQ; } } static int cp932_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Try ASCII. */ ret = ascii_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { unsigned char c; if (ret != 1) abort(); c = buf[0]; if (c < 0x80) { r[0] = c; return 1; } } /* Try JIS X 0201-1976 Katakana. */ ret = jisx0201_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { unsigned char c; if (ret != 1) abort(); c = buf[0]; if (c >= 0xa1 && c <= 0xdf) { r[0] = c; return 1; } } /* Try JIS X 0208-1990. */ ret = jisx0208_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { unsigned char c1, c2; if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; c1 = buf[0]; c2 = buf[1]; if ((c1 >= 0x21 && c1 <= 0x74) && (c2 >= 0x21 && c2 <= 0x7e)) { unsigned char t1 = (c1 - 0x21) >> 1; unsigned char t2 = (((c1 - 0x21) & 1) ? 0x5e : 0) + (c2 - 0x21); r[0] = (t1 < 0x1f ? t1+0x81 : t1+0xc1); r[1] = (t2 < 0x3f ? t2+0x40 : t2+0x41); return 2; } } /* Try CP932 extensions. */ ret = cp932ext_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]; r[1] = buf[1]; return 2; } /* User-defined range. See * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ if (wc >= 0xe000 && wc < 0xe758) { unsigned char c1, c2; if (n < 2) return RET_TOOSMALL; c1 = (unsigned int) (wc - 0xe000) / 188; c2 = (unsigned int) (wc - 0xe000) % 188; r[0] = c1+0xf0; r[1] = (c2 < 0x3f ? c2+0x40 : c2+0x41); return 2; } return RET_ILSEQ; } recode-3.6/libiconv/cp932ext.h0100644000000000000000000011344407206266436014703 0ustar rootroot /* * CP932 extensions */ static const unsigned short cp932ext_2uni_page87[92] = { /* 0x87 */ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0xfffd, 0x3349, 0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351, 0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b, 0x339c, 0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x337b, 0x301d, 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6, 0x32a7, 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c, 0x2252, 0x2261, 0x222b, 0x222e, 0x2211, 0x221a, 0x22a5, 0x2220, 0x221f, 0x22bf, 0x2235, 0x2229, 0x222a, }; static const unsigned short cp932ext_2uni_pageed[376] = { /* 0xed */ 0x7e8a, 0x891c, 0x9348, 0x9288, 0x84dc, 0x4fc9, 0x70bb, 0x6631, 0x68c8, 0x92f9, 0x66fb, 0x5f45, 0x4e28, 0x4ee1, 0x4efc, 0x4f00, 0x4f03, 0x4f39, 0x4f56, 0x4f92, 0x4f8a, 0x4f9a, 0x4f94, 0x4fcd, 0x5040, 0x5022, 0x4fff, 0x501e, 0x5046, 0x5070, 0x5042, 0x5094, 0x50f4, 0x50d8, 0x514a, 0x5164, 0x519d, 0x51be, 0x51ec, 0x5215, 0x529c, 0x52a6, 0x52c0, 0x52db, 0x5300, 0x5307, 0x5324, 0x5372, 0x5393, 0x53b2, 0x53dd, 0xfa0e, 0x549c, 0x548a, 0x54a9, 0x54ff, 0x5586, 0x5759, 0x5765, 0x57ac, 0x57c8, 0x57c7, 0xfa0f, 0xfa10, 0x589e, 0x58b2, 0x590b, 0x5953, 0x595b, 0x595d, 0x5963, 0x59a4, 0x59ba, 0x5b56, 0x5bc0, 0x752f, 0x5bd8, 0x5bec, 0x5c1e, 0x5ca6, 0x5cba, 0x5cf5, 0x5d27, 0x5d53, 0xfa11, 0x5d42, 0x5d6d, 0x5db8, 0x5db9, 0x5dd0, 0x5f21, 0x5f34, 0x5f67, 0x5fb7, 0x5fde, 0x605d, 0x6085, 0x608a, 0x60de, 0x60d5, 0x6120, 0x60f2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62a6, 0x63f5, 0x6460, 0x649d, 0x64ce, 0x654e, 0x6600, 0x6615, 0x663b, 0x6609, 0x662e, 0x661e, 0x6624, 0x6665, 0x6657, 0x6659, 0xfa12, 0x6673, 0x6699, 0x66a0, 0x66b2, 0x66bf, 0x66fa, 0x670e, 0xf929, 0x6766, 0x67bb, 0x6852, 0x67c0, 0x6801, 0x6844, 0x68cf, 0xfa13, 0x6968, 0xfa14, 0x6998, 0x69e2, 0x6a30, 0x6a6b, 0x6a46, 0x6a73, 0x6a7e, 0x6ae2, 0x6ae4, 0x6bd6, 0x6c3f, 0x6c5c, 0x6c86, 0x6c6f, 0x6cda, 0x6d04, 0x6d87, 0x6d6f, 0x6d96, 0x6dac, 0x6dcf, 0x6df8, 0x6df2, 0x6dfc, 0x6e39, 0x6e5c, 0x6e27, 0x6e3c, 0x6ebf, 0x6f88, 0x6fb5, 0x6ff5, 0x7005, 0x7007, 0x7028, 0x7085, 0x70ab, 0x710f, 0x7104, 0x715c, 0x7146, 0x7147, 0xfa15, 0x71c1, 0x71fe, 0x72b1, /* 0xee */ 0x72be, 0x7324, 0xfa16, 0x7377, 0x73bd, 0x73c9, 0x73d6, 0x73e3, 0x73d2, 0x7407, 0x73f5, 0x7426, 0x742a, 0x7429, 0x742e, 0x7462, 0x7489, 0x749f, 0x7501, 0x756f, 0x7682, 0x769c, 0x769e, 0x769b, 0x76a6, 0xfa17, 0x7746, 0x52af, 0x7821, 0x784e, 0x7864, 0x787a, 0x7930, 0xfa18, 0xfa19, 0xfa1a, 0x7994, 0xfa1b, 0x799b, 0x7ad1, 0x7ae7, 0xfa1c, 0x7aeb, 0x7b9e, 0xfa1d, 0x7d48, 0x7d5c, 0x7db7, 0x7da0, 0x7dd6, 0x7e52, 0x7f47, 0x7fa1, 0xfa1e, 0x8301, 0x8362, 0x837f, 0x83c7, 0x83f6, 0x8448, 0x84b4, 0x8553, 0x8559, 0x856b, 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807, 0x88f5, 0x8a12, 0x8a37, 0x8a79, 0x8aa7, 0x8abe, 0x8adf, 0xfa22, 0x8af6, 0x8b53, 0x8b7f, 0x8cf0, 0x8cf4, 0x8d12, 0x8d76, 0xfa23, 0x8ecf, 0xfa24, 0xfa25, 0x9067, 0x90de, 0xfa26, 0x9115, 0x9127, 0x91da, 0x91d7, 0x91de, 0x91ed, 0x91ee, 0x91e4, 0x91e5, 0x9206, 0x9210, 0x920a, 0x923a, 0x9240, 0x923c, 0x924e, 0x9259, 0x9251, 0x9239, 0x9267, 0x92a7, 0x9277, 0x9278, 0x92e7, 0x92d7, 0x92d9, 0x92d0, 0xfa27, 0x92d5, 0x92e0, 0x92d3, 0x9325, 0x9321, 0x92fb, 0xfa28, 0x931e, 0x92ff, 0x931d, 0x9302, 0x9370, 0x9357, 0x93a4, 0x93c6, 0x93de, 0x93f8, 0x9431, 0x9445, 0x9448, 0x9592, 0xf9dc, 0xfa29, 0x969d, 0x96af, 0x9733, 0x973b, 0x9743, 0x974d, 0x974f, 0x9751, 0x9755, 0x9857, 0x9865, 0xfa2a, 0xfa2b, 0x9927, 0xfa2c, 0x999e, 0x9a4e, 0x9ad9, 0x9adc, 0x9b75, 0x9b72, 0x9b8f, 0x9bb1, 0x9bbb, 0x9c00, 0x9d70, 0x9d6b, 0xfa2d, 0x9e19, 0x9ed1, 0xfffd, 0xfffd, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0xffe2, 0xffe4, 0xff07, 0xff02, }; static const unsigned short cp932ext_2uni_pagefa[388] = { /* 0xfa */ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0xffe2, 0xffe4, 0xff07, 0xff02, 0x3231, 0x2116, 0x2121, 0x2235, 0x7e8a, 0x891c, 0x9348, 0x9288, 0x84dc, 0x4fc9, 0x70bb, 0x6631, 0x68c8, 0x92f9, 0x66fb, 0x5f45, 0x4e28, 0x4ee1, 0x4efc, 0x4f00, 0x4f03, 0x4f39, 0x4f56, 0x4f92, 0x4f8a, 0x4f9a, 0x4f94, 0x4fcd, 0x5040, 0x5022, 0x4fff, 0x501e, 0x5046, 0x5070, 0x5042, 0x5094, 0x50f4, 0x50d8, 0x514a, 0x5164, 0x519d, 0x51be, 0x51ec, 0x5215, 0x529c, 0x52a6, 0x52c0, 0x52db, 0x5300, 0x5307, 0x5324, 0x5372, 0x5393, 0x53b2, 0x53dd, 0xfa0e, 0x549c, 0x548a, 0x54a9, 0x54ff, 0x5586, 0x5759, 0x5765, 0x57ac, 0x57c8, 0x57c7, 0xfa0f, 0xfa10, 0x589e, 0x58b2, 0x590b, 0x5953, 0x595b, 0x595d, 0x5963, 0x59a4, 0x59ba, 0x5b56, 0x5bc0, 0x752f, 0x5bd8, 0x5bec, 0x5c1e, 0x5ca6, 0x5cba, 0x5cf5, 0x5d27, 0x5d53, 0xfa11, 0x5d42, 0x5d6d, 0x5db8, 0x5db9, 0x5dd0, 0x5f21, 0x5f34, 0x5f67, 0x5fb7, 0x5fde, 0x605d, 0x6085, 0x608a, 0x60de, 0x60d5, 0x6120, 0x60f2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62a6, 0x63f5, 0x6460, 0x649d, 0x64ce, 0x654e, 0x6600, 0x6615, 0x663b, 0x6609, 0x662e, 0x661e, 0x6624, 0x6665, 0x6657, 0x6659, 0xfa12, 0x6673, 0x6699, 0x66a0, 0x66b2, 0x66bf, 0x66fa, 0x670e, 0xf929, 0x6766, 0x67bb, 0x6852, 0x67c0, 0x6801, 0x6844, 0x68cf, 0xfa13, 0x6968, 0xfa14, 0x6998, 0x69e2, 0x6a30, 0x6a6b, 0x6a46, 0x6a73, 0x6a7e, 0x6ae2, 0x6ae4, 0x6bd6, 0x6c3f, 0x6c5c, 0x6c86, 0x6c6f, 0x6cda, 0x6d04, 0x6d87, 0x6d6f, /* 0xfb */ 0x6d96, 0x6dac, 0x6dcf, 0x6df8, 0x6df2, 0x6dfc, 0x6e39, 0x6e5c, 0x6e27, 0x6e3c, 0x6ebf, 0x6f88, 0x6fb5, 0x6ff5, 0x7005, 0x7007, 0x7028, 0x7085, 0x70ab, 0x710f, 0x7104, 0x715c, 0x7146, 0x7147, 0xfa15, 0x71c1, 0x71fe, 0x72b1, 0x72be, 0x7324, 0xfa16, 0x7377, 0x73bd, 0x73c9, 0x73d6, 0x73e3, 0x73d2, 0x7407, 0x73f5, 0x7426, 0x742a, 0x7429, 0x742e, 0x7462, 0x7489, 0x749f, 0x7501, 0x756f, 0x7682, 0x769c, 0x769e, 0x769b, 0x76a6, 0xfa17, 0x7746, 0x52af, 0x7821, 0x784e, 0x7864, 0x787a, 0x7930, 0xfa18, 0xfa19, 0xfa1a, 0x7994, 0xfa1b, 0x799b, 0x7ad1, 0x7ae7, 0xfa1c, 0x7aeb, 0x7b9e, 0xfa1d, 0x7d48, 0x7d5c, 0x7db7, 0x7da0, 0x7dd6, 0x7e52, 0x7f47, 0x7fa1, 0xfa1e, 0x8301, 0x8362, 0x837f, 0x83c7, 0x83f6, 0x8448, 0x84b4, 0x8553, 0x8559, 0x856b, 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807, 0x88f5, 0x8a12, 0x8a37, 0x8a79, 0x8aa7, 0x8abe, 0x8adf, 0xfa22, 0x8af6, 0x8b53, 0x8b7f, 0x8cf0, 0x8cf4, 0x8d12, 0x8d76, 0xfa23, 0x8ecf, 0xfa24, 0xfa25, 0x9067, 0x90de, 0xfa26, 0x9115, 0x9127, 0x91da, 0x91d7, 0x91de, 0x91ed, 0x91ee, 0x91e4, 0x91e5, 0x9206, 0x9210, 0x920a, 0x923a, 0x9240, 0x923c, 0x924e, 0x9259, 0x9251, 0x9239, 0x9267, 0x92a7, 0x9277, 0x9278, 0x92e7, 0x92d7, 0x92d9, 0x92d0, 0xfa27, 0x92d5, 0x92e0, 0x92d3, 0x9325, 0x9321, 0x92fb, 0xfa28, 0x931e, 0x92ff, 0x931d, 0x9302, 0x9370, 0x9357, 0x93a4, 0x93c6, 0x93de, 0x93f8, 0x9431, 0x9445, 0x9448, 0x9592, 0xf9dc, 0xfa29, 0x969d, 0x96af, 0x9733, 0x973b, 0x9743, 0x974d, 0x974f, 0x9751, 0x9755, 0x9857, 0x9865, 0xfa2a, 0xfa2b, 0x9927, 0xfa2c, 0x999e, 0x9a4e, 0x9ad9, /* 0xfc */ 0x9adc, 0x9b75, 0x9b72, 0x9b8f, 0x9bb1, 0x9bbb, 0x9c00, 0x9d70, 0x9d6b, 0xfa2d, 0x9e19, 0x9ed1, }; static int cp932ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 == 0x87) || (c1 >= 0xed && c1 <= 0xee) || (c1 >= 0xfa && c1 <= 0xfc)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xfd)) { unsigned int i = 188 * (c1 - (c1 >= 0xe0 ? 0xc1 : 0x81)) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); unsigned short wc = 0xfffd; if (i < 8272) { if (i < 1220) wc = cp932ext_2uni_page87[i-1128]; } else if (i < 10716) { if (i < 8648) wc = cp932ext_2uni_pageed[i-8272]; } else { if (i < 11104) wc = cp932ext_2uni_pagefa[i-10716]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short cp932ext_2charset[457] = { 0xfa59, 0xfa5a, 0xfa4a, 0xfa4b, 0xfa4c, 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44, 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0x8794, 0x8795, 0x8798, 0x8797, 0x879b, 0x879c, 0x8792, 0x8793, 0xfa5b, 0x8790, 0x8791, 0x8796, 0x8799, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d, 0x874e, 0x874f, 0x8750, 0x8751, 0x8752, 0x8753, 0x8780, 0x8781, 0xfa58, 0x878b, 0x878c, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x8765, 0x8769, 0x8760, 0x8763, 0x8761, 0x876b, 0x876a, 0x8764, 0x876c, 0x8766, 0x876e, 0x875f, 0x876d, 0x8762, 0x8767, 0x8768, 0x877e, 0x878f, 0x878e, 0x878d, 0x8772, 0x8773, 0x876f, 0x8770, 0x8771, 0x8775, 0x8774, 0x8783, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b, 0xfa6c, 0xfa6d, 0xfa6e, 0xfa70, 0xfa6f, 0xfa72, 0xfa71, 0xfa61, 0xfa73, 0xfa76, 0xfa77, 0xfa75, 0xfa74, 0xfa7a, 0xfa78, 0xfa79, 0xfa7b, 0xfa7d, 0xfa7c, 0xfa7e, 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85, 0xfa86, 0xfb77, 0xfa87, 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d, 0xfa8e, 0xfa8f, 0xfa92, 0xfa91, 0xfa93, 0xfa94, 0xfa95, 0xfa96, 0xfa97, 0xfa98, 0xfa9a, 0xfa99, 0xfa9d, 0xfa9e, 0xfa9f, 0xfaa0, 0xfaa1, 0xfaa2, 0xfaa3, 0xfaa4, 0xfaa5, 0xfaa6, 0xfaa7, 0xfaa9, 0xfaaa, 0xfaab, 0xfaac, 0xfaad, 0xfaae, 0xfaaf, 0xfab2, 0xfab0, 0xfab3, 0xfab4, 0xfab5, 0xfab6, 0xfab7, 0xfab8, 0xfa67, 0xfab9, 0xfaba, 0xfabb, 0xfabc, 0xfabd, 0xfabe, 0xfac0, 0xfabf, 0xfac2, 0xfac3, 0xfac1, 0xfac5, 0xfac4, 0xfac6, 0xfac7, 0xfac8, 0xfac9, 0xfaca, 0xfacb, 0xfacc, 0xfacd, 0xface, 0xfad1, 0xfacf, 0xfad3, 0xfad4, 0xfad2, 0xfa63, 0xfad0, 0xfad6, 0xfad7, 0xfad5, 0xfad9, 0xfada, 0xfadb, 0xfadc, 0xfadd, 0xfade, 0xfa66, 0xfadf, 0xfae1, 0xfae2, 0xfae4, 0xfae5, 0xfae6, 0xfae3, 0xfa64, 0xfae7, 0xfae9, 0xfaeb, 0xfaec, 0xfaed, 0xfaef, 0xfaee, 0xfaf0, 0xfaf1, 0xfaf2, 0xfaf3, 0xfaf4, 0xfaf5, 0xfaf6, 0xfaf8, 0xfaf7, 0xfaf9, 0xfafa, 0xfafc, 0xfafb, 0xfb40, 0xfb41, 0xfb42, 0xfb44, 0xfb43, 0xfb45, 0xfb48, 0xfb46, 0xfb49, 0xfb47, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfa62, 0xfb54, 0xfb53, 0xfb56, 0xfb57, 0xfb55, 0xfb59, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d, 0xfb5f, 0xfb60, 0xfb61, 0xfb64, 0xfb62, 0xfb63, 0xfb66, 0xfb65, 0xfb67, 0xfb69, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfaa8, 0xfb6f, 0xfb70, 0xfb73, 0xfb71, 0xfb72, 0xfb74, 0xfb76, 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb81, 0xfb83, 0xfb84, 0xfb85, 0xfb87, 0xfb88, 0xfb8a, 0xfb8b, 0xfb8d, 0xfb8c, 0xfb8e, 0xfb8f, 0xfa5c, 0xfb90, 0xfb91, 0xfb93, 0xfb94, 0xfb95, 0xfb96, 0xfb97, 0xfb98, 0xfb99, 0xfa60, 0xfb9a, 0xfb9b, 0xfb9c, 0xfb9e, 0xfba1, 0xfba2, 0xfa5d, 0xfba3, 0xfba4, 0xfba5, 0xfba6, 0xfba7, 0xfba8, 0xfbaa, 0xfbab, 0xfbac, 0xfbad, 0xfbae, 0xfbaf, 0xfbb0, 0xfbb2, 0xfbb5, 0xfbb6, 0xfbb8, 0xfbb9, 0xfbbb, 0xfbba, 0xfbbc, 0xfbbf, 0xfbc0, 0xfbbd, 0xfbbe, 0xfbc1, 0xfbc3, 0xfbc2, 0xfbca, 0xfbc4, 0xfbc6, 0xfbc5, 0xfbc7, 0xfbc9, 0xfbc8, 0xfbcb, 0xfbcd, 0xfbce, 0xfa5f, 0xfbcc, 0xfbd2, 0xfbd6, 0xfbd4, 0xfbd0, 0xfbd1, 0xfbd5, 0xfbcf, 0xfa65, 0xfbd9, 0xfbdc, 0xfbde, 0xfbdd, 0xfbdb, 0xfbd8, 0xfbd7, 0xfa5e, 0xfbe0, 0xfbdf, 0xfbe1, 0xfbe2, 0xfbe3, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7, 0xfbe8, 0xfbeb, 0xfbec, 0xfbed, 0xfbee, 0xfbef, 0xfbf0, 0xfbf1, 0xfbf2, 0xfbf3, 0xfbf4, 0xfbf5, 0xfbf8, 0xfbfa, 0xfbfb, 0xfbfc, 0xfc40, 0xfc42, 0xfc41, 0xfc43, 0xfc44, 0xfc45, 0xfc46, 0xfc48, 0xfc47, 0xfc4a, 0xfc4b, 0xfae0, 0xfbe9, 0xfa90, 0xfa9b, 0xfa9c, 0xfab1, 0xfad8, 0xfae8, 0xfaea, 0xfb58, 0xfb5e, 0xfb75, 0xfb7d, 0xfb7e, 0xfb80, 0xfb82, 0xfb86, 0xfb89, 0xfb92, 0xfb9d, 0xfb9f, 0xfba0, 0xfba9, 0xfbb1, 0xfbb3, 0xfbb4, 0xfbb7, 0xfbd3, 0xfbda, 0xfbea, 0xfbf6, 0xfbf7, 0xfbf9, 0xfc49, 0xfa57, 0xfa56, 0xfa54, 0xfa55, }; static const Summary16 cp932ext_uni2indx_page21[28] = { /* 0x2100 */ { 0, 0x0000 }, { 0, 0x0040 }, { 1, 0x0002 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x03ff }, { 12, 0x03ff }, { 22, 0x0000 }, { 22, 0x0000 }, { 22, 0x0000 }, { 22, 0x0000 }, { 22, 0x0000 }, { 22, 0x0000 }, { 22, 0x0000 }, { 22, 0x0000 }, /* 0x2200 */ { 22, 0x0000 }, { 22, 0x8402 }, { 25, 0x4e01 }, { 30, 0x0020 }, { 31, 0x0000 }, { 31, 0x0004 }, { 32, 0x0002 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0020 }, { 34, 0x8000 }, }; static const Summary16 cp932ext_uni2indx_page24[8] = { /* 0x2400 */ { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0xffff }, { 51, 0x000f }, }; static const Summary16 cp932ext_uni2indx_page30[2] = { /* 0x3000 */ { 55, 0x0000 }, { 55, 0xa000 }, }; static const Summary16 cp932ext_uni2indx_page32[29] = { /* 0x3200 */ { 57, 0x0000 }, { 57, 0x0000 }, { 57, 0x0000 }, { 57, 0x0206 }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x01f0 }, { 65, 0x0000 }, { 65, 0x0000 }, { 65, 0x0000 }, { 65, 0x0000 }, { 65, 0x0000 }, /* 0x3300 */ { 65, 0x2008 }, { 67, 0x0110 }, { 69, 0x08cc }, { 74, 0x0840 }, { 76, 0x2600 }, { 79, 0x0082 }, { 81, 0x0000 }, { 81, 0x7800 }, { 85, 0xc000 }, { 87, 0x7000 }, { 90, 0x0002 }, { 91, 0x0000 }, { 91, 0x2010 }, }; static const Summary16 cp932ext_uni2indx_page4e[121] = { /* 0x4e00 */ { 93, 0x0000 }, { 93, 0x0000 }, { 93, 0x0100 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0000 }, { 94, 0x0002 }, { 95, 0x1000 }, /* 0x4f00 */ { 96, 0x0009 }, { 98, 0x0000 }, { 98, 0x0000 }, { 98, 0x0200 }, { 99, 0x0000 }, { 99, 0x0040 }, { 100, 0x0000 }, { 100, 0x0000 }, { 100, 0x0400 }, { 101, 0x0414 }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x2200 }, { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x8000 }, /* 0x5000 */ { 107, 0x0000 }, { 107, 0x4000 }, { 108, 0x0004 }, { 109, 0x0000 }, { 109, 0x0045 }, { 112, 0x0000 }, { 112, 0x0000 }, { 112, 0x0001 }, { 113, 0x0000 }, { 113, 0x0010 }, { 114, 0x0000 }, { 114, 0x0000 }, { 114, 0x0000 }, { 114, 0x0100 }, { 115, 0x0000 }, { 115, 0x0010 }, /* 0x5100 */ { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0400 }, { 117, 0x0000 }, { 117, 0x0010 }, { 118, 0x0000 }, { 118, 0x0000 }, { 118, 0x2000 }, { 119, 0x0000 }, { 119, 0x4000 }, { 120, 0x0000 }, { 120, 0x0000 }, { 120, 0x1000 }, { 121, 0x0000 }, /* 0x5200 */ { 121, 0x0000 }, { 121, 0x0020 }, { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x1000 }, { 123, 0x8040 }, { 125, 0x0000 }, { 125, 0x0001 }, { 126, 0x0800 }, { 127, 0x0000 }, { 127, 0x0000 }, /* 0x5300 */ { 127, 0x0081 }, { 129, 0x0000 }, { 129, 0x0010 }, { 130, 0x0000 }, { 130, 0x0000 }, { 130, 0x0000 }, { 130, 0x0000 }, { 130, 0x0004 }, { 131, 0x0000 }, { 131, 0x0008 }, { 132, 0x0000 }, { 132, 0x0004 }, { 133, 0x0000 }, { 133, 0x2000 }, { 134, 0x0000 }, { 134, 0x0000 }, /* 0x5400 */ { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0400 }, { 135, 0x1000 }, { 136, 0x0200 }, { 137, 0x0000 }, { 137, 0x0000 }, { 137, 0x0000 }, { 137, 0x0000 }, { 137, 0x8000 }, /* 0x5500 */ { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0040 }, }; static const Summary16 cp932ext_uni2indx_page57[44] = { /* 0x5700 */ { 139, 0x0000 }, { 139, 0x0000 }, { 139, 0x0000 }, { 139, 0x0000 }, { 139, 0x0000 }, { 139, 0x0200 }, { 140, 0x0020 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x1000 }, { 142, 0x0000 }, { 142, 0x0180 }, { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x0000 }, /* 0x5800 */ { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x0000 }, { 144, 0x4000 }, { 145, 0x0000 }, { 145, 0x0004 }, { 146, 0x0000 }, { 146, 0x0000 }, { 146, 0x0000 }, { 146, 0x0000 }, /* 0x5900 */ { 146, 0x0800 }, { 147, 0x0000 }, { 147, 0x0000 }, { 147, 0x0000 }, { 147, 0x0000 }, { 147, 0x2808 }, { 150, 0x0008 }, { 151, 0x0000 }, { 151, 0x0000 }, { 151, 0x0000 }, { 151, 0x0010 }, { 152, 0x0400 }, }; static const Summary16 cp932ext_uni2indx_page5b[46] = { /* 0x5b00 */ { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0040 }, { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0001 }, { 155, 0x0100 }, { 156, 0x1000 }, { 157, 0x0000 }, /* 0x5c00 */ { 157, 0x0000 }, { 157, 0x4000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0040 }, { 159, 0x0400 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0020 }, /* 0x5d00 */ { 161, 0x0000 }, { 161, 0x0000 }, { 161, 0x0080 }, { 162, 0x0000 }, { 162, 0x0004 }, { 163, 0x0008 }, { 164, 0x2000 }, { 165, 0x0000 }, { 165, 0x0000 }, { 165, 0x0000 }, { 165, 0x0000 }, { 165, 0x0300 }, { 167, 0x0000 }, { 167, 0x0001 }, }; static const Summary16 cp932ext_uni2indx_page5f[458] = { /* 0x5f00 */ { 168, 0x0000 }, { 168, 0x0000 }, { 168, 0x0002 }, { 169, 0x0010 }, { 170, 0x0020 }, { 171, 0x0000 }, { 171, 0x0080 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0080 }, { 173, 0x0000 }, { 173, 0x4000 }, { 174, 0x0000 }, { 174, 0x0000 }, /* 0x6000 */ { 174, 0x0000 }, { 174, 0x0000 }, { 174, 0x0000 }, { 174, 0x0000 }, { 174, 0x0000 }, { 174, 0x2000 }, { 175, 0x0000 }, { 175, 0x0000 }, { 175, 0x0420 }, { 177, 0x0000 }, { 177, 0x0000 }, { 177, 0x0000 }, { 177, 0x0000 }, { 177, 0x4020 }, { 179, 0x0000 }, { 179, 0x0004 }, /* 0x6100 */ { 180, 0x0000 }, { 180, 0x0002 }, { 181, 0x0001 }, { 182, 0x0081 }, { 184, 0x0000 }, { 184, 0x0000 }, { 184, 0x0000 }, { 184, 0x0000 }, { 184, 0x0000 }, { 184, 0x0100 }, { 185, 0x0000 }, { 185, 0x0000 }, { 185, 0x0000 }, { 185, 0x0000 }, { 185, 0x0000 }, { 185, 0x0000 }, /* 0x6200 */ { 185, 0x0000 }, { 185, 0x0008 }, { 186, 0x0000 }, { 186, 0x0000 }, { 186, 0x0000 }, { 186, 0x0000 }, { 186, 0x0000 }, { 186, 0x0000 }, { 186, 0x0000 }, { 186, 0x0000 }, { 186, 0x0040 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, /* 0x6300 */ { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0000 }, { 187, 0x0020 }, /* 0x6400 */ { 188, 0x0000 }, { 188, 0x0000 }, { 188, 0x0000 }, { 188, 0x0000 }, { 188, 0x0000 }, { 188, 0x0000 }, { 188, 0x0001 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x2000 }, { 190, 0x0000 }, { 190, 0x0000 }, { 190, 0x4000 }, { 191, 0x0000 }, { 191, 0x0000 }, { 191, 0x0000 }, /* 0x6500 */ { 191, 0x0000 }, { 191, 0x0000 }, { 191, 0x0000 }, { 191, 0x0000 }, { 191, 0x4000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, /* 0x6600 */ { 192, 0x0201 }, { 194, 0x4020 }, { 196, 0x4010 }, { 198, 0x0802 }, { 200, 0x0000 }, { 200, 0x0280 }, { 202, 0x0020 }, { 203, 0x0008 }, { 204, 0x0000 }, { 204, 0x0200 }, { 205, 0x0001 }, { 206, 0x8004 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0c00 }, /* 0x6700 */ { 210, 0x4000 }, { 211, 0x0000 }, { 211, 0x0000 }, { 211, 0x0000 }, { 211, 0x0000 }, { 211, 0x0000 }, { 211, 0x0040 }, { 212, 0x0000 }, { 212, 0x0000 }, { 212, 0x0000 }, { 212, 0x0000 }, { 212, 0x0800 }, { 213, 0x0001 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 }, /* 0x6800 */ { 214, 0x0002 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0010 }, { 216, 0x0004 }, { 217, 0x0000 }, { 217, 0x0000 }, { 217, 0x0000 }, { 217, 0x0000 }, { 217, 0x0000 }, { 217, 0x0000 }, { 217, 0x8100 }, { 219, 0x0000 }, { 219, 0x0000 }, { 219, 0x0000 }, /* 0x6900 */ { 219, 0x0000 }, { 219, 0x0000 }, { 219, 0x0000 }, { 219, 0x0000 }, { 219, 0x0000 }, { 219, 0x0000 }, { 219, 0x0100 }, { 220, 0x0000 }, { 220, 0x0000 }, { 220, 0x0100 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0004 }, { 222, 0x0000 }, /* 0x6a00 */ { 222, 0x0000 }, { 222, 0x0000 }, { 222, 0x0000 }, { 222, 0x0001 }, { 223, 0x0040 }, { 224, 0x0000 }, { 224, 0x0800 }, { 225, 0x4008 }, { 227, 0x0000 }, { 227, 0x0000 }, { 227, 0x0000 }, { 227, 0x0000 }, { 227, 0x0000 }, { 227, 0x0000 }, { 227, 0x0014 }, { 229, 0x0000 }, /* 0x6b00 */ { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0040 }, { 230, 0x0000 }, { 230, 0x0000 }, /* 0x6c00 */ { 230, 0x0000 }, { 230, 0x0000 }, { 230, 0x0000 }, { 230, 0x8000 }, { 231, 0x0000 }, { 231, 0x1000 }, { 232, 0x8000 }, { 233, 0x0000 }, { 233, 0x0040 }, { 234, 0x0000 }, { 234, 0x0000 }, { 234, 0x0000 }, { 234, 0x0000 }, { 234, 0x0400 }, { 235, 0x0000 }, { 235, 0x0000 }, /* 0x6d00 */ { 235, 0x0010 }, { 236, 0x0000 }, { 236, 0x0000 }, { 236, 0x0000 }, { 236, 0x0000 }, { 236, 0x0000 }, { 236, 0x8000 }, { 237, 0x0000 }, { 237, 0x0080 }, { 238, 0x0040 }, { 239, 0x1000 }, { 240, 0x0000 }, { 240, 0x8000 }, { 241, 0x0000 }, { 241, 0x0000 }, { 241, 0x1104 }, /* 0x6e00 */ { 244, 0x0000 }, { 244, 0x0000 }, { 244, 0x0080 }, { 245, 0x1200 }, { 247, 0x0000 }, { 247, 0x1000 }, { 248, 0x0000 }, { 248, 0x0000 }, { 248, 0x0000 }, { 248, 0x0000 }, { 248, 0x0000 }, { 248, 0x8000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, /* 0x6f00 */ { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0100 }, { 250, 0x0000 }, { 250, 0x0000 }, { 250, 0x0020 }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0x0020 }, /* 0x7000 */ { 252, 0x00a0 }, { 254, 0x0000 }, { 254, 0x0100 }, { 255, 0x0000 }, { 255, 0x0000 }, { 255, 0x0000 }, { 255, 0x0000 }, { 255, 0x0000 }, { 255, 0x0020 }, { 256, 0x0000 }, { 256, 0x0800 }, { 257, 0x0800 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, /* 0x7100 */ { 258, 0x8010 }, { 260, 0x0000 }, { 260, 0x0000 }, { 260, 0x0000 }, { 260, 0x00c0 }, { 262, 0x1000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0002 }, { 264, 0x0000 }, { 264, 0x0000 }, { 264, 0x4000 }, /* 0x7200 */ { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x4002 }, { 267, 0x0000 }, { 267, 0x0000 }, { 267, 0x0000 }, { 267, 0x0000 }, /* 0x7300 */ { 267, 0x0000 }, { 267, 0x0000 }, { 267, 0x0010 }, { 268, 0x0000 }, { 268, 0x0000 }, { 268, 0x0000 }, { 268, 0x0000 }, { 268, 0x0080 }, { 269, 0x0000 }, { 269, 0x0000 }, { 269, 0x0000 }, { 269, 0x2000 }, { 270, 0x0200 }, { 271, 0x0044 }, { 273, 0x0008 }, { 274, 0x0020 }, /* 0x7400 */ { 275, 0x0080 }, { 276, 0x0000 }, { 276, 0x4640 }, { 280, 0x0000 }, { 280, 0x0000 }, { 280, 0x0000 }, { 280, 0x0004 }, { 281, 0x0000 }, { 281, 0x0200 }, { 282, 0x8000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, /* 0x7500 */ { 283, 0x0002 }, { 284, 0x0000 }, { 284, 0x8000 }, { 285, 0x0000 }, { 285, 0x0000 }, { 285, 0x0000 }, { 285, 0x8000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, /* 0x7600 */ { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0000 }, { 286, 0x0004 }, { 287, 0x5800 }, { 290, 0x0040 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, /* 0x7700 */ { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0040 }, { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0000 }, /* 0x7800 */ { 292, 0x0000 }, { 292, 0x0000 }, { 292, 0x0002 }, { 293, 0x0000 }, { 293, 0x4000 }, { 294, 0x0000 }, { 294, 0x0010 }, { 295, 0x0400 }, { 296, 0x0000 }, { 296, 0x0000 }, { 296, 0x0000 }, { 296, 0x0000 }, { 296, 0x0000 }, { 296, 0x0000 }, { 296, 0x0000 }, { 296, 0x0000 }, /* 0x7900 */ { 296, 0x0000 }, { 296, 0x0000 }, { 296, 0x0000 }, { 296, 0x0001 }, { 297, 0x0000 }, { 297, 0x0000 }, { 297, 0x0000 }, { 297, 0x0000 }, { 297, 0x0000 }, { 297, 0x0810 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, /* 0x7a00 */ { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0000 }, { 299, 0x0002 }, { 300, 0x0880 }, { 302, 0x0000 }, /* 0x7b00 */ { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x4000 }, }; static const Summary16 cp932ext_uni2indx_page7d[43] = { /* 0x7d00 */ { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x0100 }, { 304, 0x1000 }, { 305, 0x0000 }, { 305, 0x0000 }, { 305, 0x0000 }, { 305, 0x0000 }, { 305, 0x0001 }, { 306, 0x0080 }, { 307, 0x0000 }, { 307, 0x0040 }, { 308, 0x0000 }, { 308, 0x0000 }, /* 0x7e00 */ { 308, 0x0000 }, { 308, 0x0000 }, { 308, 0x0000 }, { 308, 0x0000 }, { 308, 0x0000 }, { 308, 0x0004 }, { 309, 0x0000 }, { 309, 0x0000 }, { 309, 0x0400 }, { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0000 }, /* 0x7f00 */ { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0080 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0002 }, }; static const Summary16 cp932ext_uni2indx_page83[44] = { /* 0x8300 */ { 312, 0x0002 }, { 313, 0x0000 }, { 313, 0x0000 }, { 313, 0x0000 }, { 313, 0x0000 }, { 313, 0x0000 }, { 313, 0x0004 }, { 314, 0x8000 }, { 315, 0x0000 }, { 315, 0x0000 }, { 315, 0x0000 }, { 315, 0x0000 }, { 315, 0x0080 }, { 316, 0x0000 }, { 316, 0x0000 }, { 316, 0x0040 }, /* 0x8400 */ { 317, 0x0000 }, { 317, 0x0000 }, { 317, 0x0000 }, { 317, 0x0000 }, { 317, 0x0100 }, { 318, 0x0000 }, { 318, 0x0000 }, { 318, 0x0000 }, { 318, 0x0000 }, { 318, 0x0000 }, { 318, 0x0000 }, { 318, 0x0010 }, { 319, 0x0000 }, { 319, 0x1000 }, { 320, 0x0000 }, { 320, 0x0000 }, /* 0x8500 */ { 320, 0x0000 }, { 320, 0x0000 }, { 320, 0x0000 }, { 320, 0x0000 }, { 320, 0x0000 }, { 320, 0x0208 }, { 322, 0x0800 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0001 }, }; static const Summary16 cp932ext_uni2indx_page88[109] = { /* 0x8800 */ { 324, 0x0080 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0020 }, /* 0x8900 */ { 326, 0x0000 }, { 326, 0x1000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, { 327, 0x0000 }, /* 0x8a00 */ { 327, 0x0000 }, { 327, 0x0004 }, { 328, 0x0000 }, { 328, 0x0080 }, { 329, 0x0000 }, { 329, 0x0000 }, { 329, 0x0000 }, { 329, 0x0200 }, { 330, 0x0000 }, { 330, 0x0000 }, { 330, 0x0080 }, { 331, 0x4000 }, { 332, 0x0000 }, { 332, 0x8000 }, { 333, 0x0000 }, { 333, 0x0040 }, /* 0x8b00 */ { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0008 }, { 335, 0x0000 }, { 335, 0x8000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, /* 0x8c00 */ { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0000 }, { 336, 0x0011 }, /* 0x8d00 */ { 338, 0x0000 }, { 338, 0x0004 }, { 339, 0x0000 }, { 339, 0x0000 }, { 339, 0x0000 }, { 339, 0x0000 }, { 339, 0x0000 }, { 339, 0x0040 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, /* 0x8e00 */ { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x8000 }, }; static const Summary16 cp932ext_uni2indx_page90[238] = { /* 0x9000 */ { 341, 0x0000 }, { 341, 0x0000 }, { 341, 0x0000 }, { 341, 0x0000 }, { 341, 0x0000 }, { 341, 0x0000 }, { 341, 0x0080 }, { 342, 0x0000 }, { 342, 0x0000 }, { 342, 0x0000 }, { 342, 0x0000 }, { 342, 0x0000 }, { 342, 0x0000 }, { 342, 0x4000 }, { 343, 0x0000 }, { 343, 0x0000 }, /* 0x9100 */ { 343, 0x0000 }, { 343, 0x0020 }, { 344, 0x0080 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x4480 }, { 348, 0x6030 }, { 352, 0x0000 }, /* 0x9200 */ { 352, 0x0440 }, { 354, 0x0001 }, { 355, 0x0000 }, { 355, 0x1600 }, { 358, 0x4001 }, { 360, 0x0202 }, { 362, 0x0080 }, { 363, 0x0180 }, { 365, 0x0100 }, { 366, 0x0000 }, { 366, 0x0080 }, { 367, 0x0000 }, { 367, 0x0000 }, { 367, 0x02a9 }, { 372, 0x0081 }, { 374, 0x8a00 }, /* 0x9300 */ { 377, 0x0004 }, { 378, 0x6000 }, { 380, 0x0022 }, { 382, 0x0000 }, { 382, 0x0100 }, { 383, 0x0080 }, { 384, 0x0000 }, { 384, 0x0001 }, { 385, 0x0000 }, { 385, 0x0000 }, { 385, 0x0010 }, { 386, 0x0000 }, { 386, 0x0040 }, { 387, 0x4000 }, { 388, 0x0000 }, { 388, 0x0100 }, /* 0x9400 */ { 389, 0x0000 }, { 389, 0x0000 }, { 389, 0x0000 }, { 389, 0x0002 }, { 390, 0x0120 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, /* 0x9500 */ { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0000 }, { 392, 0x0004 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, /* 0x9600 */ { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x0000 }, { 393, 0x2000 }, { 394, 0x8000 }, { 395, 0x0000 }, { 395, 0x0000 }, { 395, 0x0000 }, { 395, 0x0000 }, { 395, 0x0000 }, /* 0x9700 */ { 395, 0x0000 }, { 395, 0x0000 }, { 395, 0x0000 }, { 395, 0x0808 }, { 397, 0xa008 }, { 400, 0x0022 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, /* 0x9800 */ { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0000 }, { 402, 0x0080 }, { 403, 0x0020 }, { 404, 0x0000 }, { 404, 0x0000 }, { 404, 0x0000 }, { 404, 0x0000 }, { 404, 0x0000 }, { 404, 0x0000 }, { 404, 0x0000 }, { 404, 0x0000 }, { 404, 0x0000 }, /* 0x9900 */ { 404, 0x0000 }, { 404, 0x0000 }, { 404, 0x0080 }, { 405, 0x0000 }, { 405, 0x0000 }, { 405, 0x0000 }, { 405, 0x0000 }, { 405, 0x0000 }, { 405, 0x0000 }, { 405, 0x4000 }, { 406, 0x0000 }, { 406, 0x0000 }, { 406, 0x0000 }, { 406, 0x0000 }, { 406, 0x0000 }, { 406, 0x0000 }, /* 0x9a00 */ { 406, 0x0000 }, { 406, 0x0000 }, { 406, 0x0000 }, { 406, 0x0000 }, { 406, 0x4000 }, { 407, 0x0000 }, { 407, 0x0000 }, { 407, 0x0000 }, { 407, 0x0000 }, { 407, 0x0000 }, { 407, 0x0000 }, { 407, 0x0000 }, { 407, 0x0000 }, { 407, 0x1200 }, { 409, 0x0000 }, { 409, 0x0000 }, /* 0x9b00 */ { 409, 0x0000 }, { 409, 0x0000 }, { 409, 0x0000 }, { 409, 0x0000 }, { 409, 0x0000 }, { 409, 0x0000 }, { 409, 0x0000 }, { 409, 0x0024 }, { 411, 0x8000 }, { 412, 0x0000 }, { 412, 0x0000 }, { 412, 0x0802 }, { 414, 0x0000 }, { 414, 0x0000 }, { 414, 0x0000 }, { 414, 0x0000 }, /* 0x9c00 */ { 414, 0x0001 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, /* 0x9d00 */ { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0000 }, { 415, 0x0800 }, { 416, 0x0001 }, { 417, 0x0000 }, { 417, 0x0000 }, { 417, 0x0000 }, { 417, 0x0000 }, { 417, 0x0000 }, { 417, 0x0000 }, { 417, 0x0000 }, { 417, 0x0000 }, /* 0x9e00 */ { 417, 0x0000 }, { 417, 0x0200 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0000 }, { 418, 0x0002 }, }; static const Summary16 cp932ext_uni2indx_pagef9[19] = { /* 0xf900 */ { 419, 0x0000 }, { 419, 0x0000 }, { 419, 0x0200 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x1000 }, { 421, 0x0000 }, { 421, 0x0000 }, /* 0xfa00 */ { 421, 0xc000 }, { 423, 0xffff }, { 439, 0x3fff }, }; static const Summary16 cp932ext_uni2indx_pageff[15] = { /* 0xff00 */ { 453, 0x0084 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0014 }, }; static int cp932ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x2100 && wc < 0x22c0) summary = &cp932ext_uni2indx_page21[(wc>>4)-0x210]; else if (wc >= 0x2400 && wc < 0x2480) summary = &cp932ext_uni2indx_page24[(wc>>4)-0x240]; else if (wc >= 0x3000 && wc < 0x3020) summary = &cp932ext_uni2indx_page30[(wc>>4)-0x300]; else if (wc >= 0x3200 && wc < 0x33d0) summary = &cp932ext_uni2indx_page32[(wc>>4)-0x320]; else if (wc >= 0x4e00 && wc < 0x5590) summary = &cp932ext_uni2indx_page4e[(wc>>4)-0x4e0]; else if (wc >= 0x5700 && wc < 0x59c0) summary = &cp932ext_uni2indx_page57[(wc>>4)-0x570]; else if (wc >= 0x5b00 && wc < 0x5de0) summary = &cp932ext_uni2indx_page5b[(wc>>4)-0x5b0]; else if (wc >= 0x5f00 && wc < 0x7ba0) summary = &cp932ext_uni2indx_page5f[(wc>>4)-0x5f0]; else if (wc >= 0x7d00 && wc < 0x7fb0) summary = &cp932ext_uni2indx_page7d[(wc>>4)-0x7d0]; else if (wc >= 0x8300 && wc < 0x85c0) summary = &cp932ext_uni2indx_page83[(wc>>4)-0x830]; else if (wc >= 0x8800 && wc < 0x8ed0) summary = &cp932ext_uni2indx_page88[(wc>>4)-0x880]; else if (wc >= 0x9000 && wc < 0x9ee0) summary = &cp932ext_uni2indx_page90[(wc>>4)-0x900]; else if (wc >= 0xf900 && wc < 0xfa30) summary = &cp932ext_uni2indx_pagef9[(wc>>4)-0xf90]; else if (wc >= 0xff00 && wc < 0xfff0) summary = &cp932ext_uni2indx_pageff[(wc>>4)-0xff0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = cp932ext_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/cp936ext.h0100644000000000000000000000501207206266436014676 0ustar rootroot /* * CP936 extensions */ static const unsigned short cp936ext_2uni_pagea6[181-159] = { /* 0xa6 */ 0xfe35, 0xfe36, 0xfe39, 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfffd, 0xfffd, 0xfe3b, 0xfe3c, 0xfe37, 0xfe38, 0xfe31, 0xfffd, 0xfe33, 0xfe34, }; static const unsigned short cp936ext_2uni_pagea8[128-122] = { /* 0xa8 */ 0x0251, 0xfffd, 0x0144, 0x0148, 0xfffd, 0x0261, }; static int cp936ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 == 0xa6) || (c1 == 0xa8)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) { unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); unsigned short wc = 0xfffd; if (i < 7410) { if (i >= 7189 && i < 7211) wc = cp936ext_2uni_pagea6[i-7189]; } else { if (i >= 7532 && i < 7538) wc = cp936ext_2uni_pagea8[i-7532]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short cp936ext_page01[16] = { 0x0000, 0x0000, 0x0000, 0x0000, 0xa8bd, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/ 0xa8be, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/ }; static const unsigned short cp936ext_page02[24] = { 0x0000, 0xa8bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/ 0x0000, 0xa8c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/ }; static const unsigned short cp936ext_pagefe[24] = { 0x0000, 0xa6f2, 0x0000, 0xa6f4, 0xa6f5, 0xa6e0, 0xa6e1, 0xa6f0, /*0x30-0x37*/ 0xa6f1, 0xa6e2, 0xa6e3, 0xa6ee, 0xa6ef, 0xa6e6, 0xa6e7, 0xa6e4, /*0x38-0x3f*/ 0xa6e5, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/ }; static int cp936ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { unsigned short c = 0; if (wc >= 0x0140 && wc < 0x0150) c = cp936ext_page01[wc-0x0140]; else if (wc >= 0x0250 && wc < 0x0268) c = cp936ext_page02[wc-0x0250]; else if (wc >= 0xfe30 && wc < 0xfe48) c = cp936ext_pagefe[wc-0xfe30]; if (c != 0) { r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/cp949.h0100644000000000000000000000266007206266436014167 0ustar rootroot /* * CP949 is EUC-KR, extended with UHC (Unified Hangul Code). */ #include "uhc_1.h" #include "uhc_2.h" static int cp949_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; /* Code set 0 (ASCII) */ if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* UHC part 1 */ if (c >= 0x81 && c <= 0xa0) return uhc_1_mbtowc(conv,pwc,s,n); if (c >= 0xa1 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if (c2 < 0xa1) /* UHC part 2 */ return uhc_2_mbtowc(conv,pwc,s,n); else if (c2 < 0xff) { /* Code set 1 (KS C 5601-1992) */ unsigned char buf[2]; buf[0] = c-0x80; buf[1] = c2-0x80; return ksc5601_mbtowc(conv,pwc,buf,2); } } } return RET_ILSEQ; } static int cp949_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Code set 0 (ASCII) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 1 (KS C 5601-1992) */ ret = ksc5601_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]+0x80; r[1] = buf[1]+0x80; return 2; } /* UHC */ if (wc >= 0xac00 && wc < 0xd7a4) { if (wc < 0xc8a5) return uhc_1_wctomb(conv,r,wc,n); else return uhc_2_wctomb(conv,r,wc,n); } return RET_ILSEQ; } recode-3.6/libiconv/cp950.h0100644000000000000000000002007207206267262014152 0ustar rootroot /* * CP950 */ /* * Microsoft CP950 is a slightly extended and slightly modified version of * BIG5. The differences between the EASTASIA/OTHER/BIG5.TXT and * VENDORS/MICSFT/WINDOWS/CP950.TXT tables found on ftp.unicode.org are * as follows: * * 1. Some characters in the BIG5 range are defined differently: * * code BIG5.TXT CP950.TXT * 0xA145 0x2022 # BULLET 0x2027 # HYPHENATION POINT * 0xA14E 0xFF64 # HALFWIDTH IDEOGRAPHIC COMMA * 0xFE51 # SMALL IDEOGRAPHIC COMMA * 0xA15A --- 0x2574 # BOX DRAWINGS LIGHT LEFT * 0xA1C2 0x203E # OVERLINE 0x00AF # MACRON * 0xA1C3 --- 0xFFE3 # FULLWIDTH MACRON * 0xA1C5 --- 0x02CD # MODIFIER LETTER LOW MACRON * 0xA1E3 0x223C # TILDE OPERATOR 0xFF5E # FULLWIDTH TILDE * 0xA1F2 0x2641 # EARTH 0x2295 # CIRCLED PLUS * 0xA1F3 0x2609 # SUN 0x2299 # CIRCLED DOT OPERATOR * 0xA1FE --- 0xFF0F # FULLWIDTH SOLIDUS * 0xA240 --- 0xFF3C # FULLWIDTH REVERSE SOLIDUS * 0xA241 0xFF0F # FULLWIDTH SOLIDUS 0x2215 # DIVISION SLASH * 0xA242 0xFF3C # FULLWIDTH REVERSE SOLIDUS * 0xFE68 # SMALL REVERSE SOLIDUS * 0xA244 0x00A5 # YEN SIGN 0xFFE5 # FULLWIDTH YEN SIGN * 0xA246 0x00A2 # CENT SIGN 0xFFE0 # FULLWIDTH CENT SIGN * 0xA247 0x00A3 # POUND SIGN 0xFFE1 # FULLWIDTH POUND SIGN * 0xA2CC --- 0x5341 * 0xA2CE --- 0x5345 * * 2. A small new row. See cp950ext.h. * * 3. CP950.TXT is lacking the range 0xC6A1..0xC7FC (Hiragana, Katakana, * Cyrillic, circled digits, parenthesized digits). * * We implement this omission, because said range is marked "uncertain" * in the unicode.org BIG5 table. */ static const unsigned short cp950_2uni_pagea1[314] = { /* 0xa1 */ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a, 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52, 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31, 0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35, 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39, 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d, 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41, 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d, 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7, 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105, 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xff5e, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f, /* 0xa2 */ 0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5, 0x3012, 0xffe0, 0xffe1, 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5, 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4, 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7, 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a, 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500, 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, }; #include "cp950ext.h" static int cp950_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; /* Code set 0 (ASCII) */ if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* Code set 1 (BIG5 extended) */ if (c >= 0xa1 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { if (c < 0xa3) { unsigned int i = 157 * (c - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); unsigned short wc = cp950_2uni_pagea1[i]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } if (!((c == 0xc6 && c2 >= 0xa1) || c == 0xc7)) { int ret = big5_mbtowc(conv,pwc,s,2); if (ret != RET_ILSEQ) return ret; } } } if (c == 0xf9) { int ret = cp950ext_mbtowc(conv,pwc,s,2); if (ret != RET_ILSEQ) return ret; } } return RET_ILSEQ; } static int cp950_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Code set 0 (ASCII) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 1 (BIG5 extended) */ switch (wc >> 8) { case 0x00: if (wc == 0x00af) { buf[0] = 0xa1; buf[1] = 0xc2; ret = 2; break; } if (wc == 0x00a2 || wc == 0x00a3 || wc == 0x00a4) return RET_ILSEQ; break; case 0x02: if (wc == 0x02cd) { buf[0] = 0xa1; buf[1] = 0xc5; ret = 2; break; } break; case 0x20: if (wc == 0x2027) { buf[0] = 0xa1; buf[1] = 0x45; ret = 2; break; } if (wc == 0x2022 || wc == 0x203e) return RET_ILSEQ; break; case 0x22: if (wc == 0x2215) { buf[0] = 0xa2; buf[1] = 0x41; ret = 2; break; } if (wc == 0x2295) { buf[0] = 0xa1; buf[1] = 0xf2; ret = 2; break; } if (wc == 0x2299) { buf[0] = 0xa1; buf[1] = 0xf3; ret = 2; break; } if (wc == 0x223c) return RET_ILSEQ; break; case 0x25: if (wc == 0x2574) { buf[0] = 0xa1; buf[1] = 0x5a; ret = 2; break; } break; case 0x26: if (wc == 0x2609 || wc == 0x2641) return RET_ILSEQ; break; case 0xfe: if (wc == 0xfe51) { buf[0] = 0xa1; buf[1] = 0x4e; ret = 2; break; } if (wc == 0xfe68) { buf[0] = 0xa2; buf[1] = 0x42; ret = 2; break; } break; case 0xff: if (wc == 0xff0f) { buf[0] = 0xa1; buf[1] = 0xfe; ret = 2; break; } if (wc == 0xff3c) { buf[0] = 0xa2; buf[1] = 0x40; ret = 2; break; } if (wc == 0xff5e) { buf[0] = 0xa1; buf[1] = 0xe3; ret = 2; break; } if (wc == 0xffe0) { buf[0] = 0xa2; buf[1] = 0x46; ret = 2; break; } if (wc == 0xffe1) { buf[0] = 0xa2; buf[1] = 0x47; ret = 2; break; } if (wc == 0xffe3) { buf[0] = 0xa1; buf[1] = 0xc3; ret = 2; break; } if (wc == 0xffe5) { buf[0] = 0xa2; buf[1] = 0x44; ret = 2; break; } if (wc == 0xff64) return RET_ILSEQ; break; } if (ret == RET_ILSEQ) ret = big5_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (!((buf[0] == 0xc6 && buf[1] >= 0xa1) || buf[0] == 0xc7)) { if (n < 2) return RET_TOOSMALL; r[0] = buf[0]; r[1] = buf[1]; return 2; } } ret = cp950ext_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]; r[1] = buf[1]; return 2; } return RET_ILSEQ; } recode-3.6/libiconv/cp950ext.h0100644000000000000000000001247607206266436014706 0ustar rootroot /* * CP950 extensions */ static const unsigned short cp950ext_2uni_pagef9[157-116] = { /* 0xf9 */ 0x7881, 0x92b9, 0x88cf, 0x58bb, 0x6052, 0x7ca7, 0x5afa, 0x2554, 0x2566, 0x2557, 0x2560, 0x256c, 0x2563, 0x255a, 0x2569, 0x255d, 0x2552, 0x2564, 0x2555, 0x255e, 0x256a, 0x2561, 0x2558, 0x2567, 0x255b, 0x2553, 0x2565, 0x2556, 0x255f, 0x256b, 0x2562, 0x2559, 0x2568, 0x255c, 0x2551, 0x2550, 0x256d, 0x256e, 0x2570, 0x256f, 0x2593, }; static int cp950ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 == 0xf9)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); unsigned short wc = 0xfffd; { if (i >= 13932 && i < 13973) wc = cp950ext_2uni_pagef9[i-13932]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short cp950ext_2charset[41] = { 0xf9f9, 0xf9f8, 0xf9e6, 0xf9ef, 0xf9dd, 0xf9e8, 0xf9f1, 0xf9df, 0xf9ec, 0xf9f5, 0xf9e3, 0xf9ee, 0xf9f7, 0xf9e5, 0xf9e9, 0xf9f2, 0xf9e0, 0xf9eb, 0xf9f4, 0xf9e2, 0xf9e7, 0xf9f0, 0xf9de, 0xf9ed, 0xf9f6, 0xf9e4, 0xf9ea, 0xf9f3, 0xf9e1, 0xf9fa, 0xf9fb, 0xf9fd, 0xf9fc, 0xf9fe, 0xf9d9, 0xf9dc, 0xf9da, 0xf9d6, 0xf9db, 0xf9d8, 0xf9d7, }; static const Summary16 cp950ext_uni2indx_page25[10] = { /* 0x2500 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0xffff }, { 16, 0xffff }, { 32, 0x0001 }, { 33, 0x0000 }, { 33, 0x0008 }, }; static const Summary16 cp950ext_uni2indx_page58[12] = { /* 0x5800 */ { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0000 }, { 34, 0x0800 }, }; static const Summary16 cp950ext_uni2indx_page5a[16] = { /* 0x5a00 */ { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0400 }, }; static const Summary16 cp950ext_uni2indx_page60[6] = { /* 0x6000 */ { 36, 0x0000 }, { 36, 0x0000 }, { 36, 0x0000 }, { 36, 0x0000 }, { 36, 0x0000 }, { 36, 0x0004 }, }; static const Summary16 cp950ext_uni2indx_page78[9] = { /* 0x7800 */ { 37, 0x0000 }, { 37, 0x0000 }, { 37, 0x0000 }, { 37, 0x0000 }, { 37, 0x0000 }, { 37, 0x0000 }, { 37, 0x0000 }, { 37, 0x0000 }, { 37, 0x0002 }, }; static const Summary16 cp950ext_uni2indx_page7c[11] = { /* 0x7c00 */ { 38, 0x0000 }, { 38, 0x0000 }, { 38, 0x0000 }, { 38, 0x0000 }, { 38, 0x0000 }, { 38, 0x0000 }, { 38, 0x0000 }, { 38, 0x0000 }, { 38, 0x0000 }, { 38, 0x0000 }, { 38, 0x0080 }, }; static const Summary16 cp950ext_uni2indx_page88[13] = { /* 0x8800 */ { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x0000 }, { 39, 0x8000 }, }; static const Summary16 cp950ext_uni2indx_page92[12] = { /* 0x9200 */ { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0000 }, { 40, 0x0200 }, }; static int cp950ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x2500 && wc < 0x25a0) summary = &cp950ext_uni2indx_page25[(wc>>4)-0x250]; else if (wc >= 0x5800 && wc < 0x58c0) summary = &cp950ext_uni2indx_page58[(wc>>4)-0x580]; else if (wc >= 0x5a00 && wc < 0x5b00) summary = &cp950ext_uni2indx_page5a[(wc>>4)-0x5a0]; else if (wc >= 0x6000 && wc < 0x6060) summary = &cp950ext_uni2indx_page60[(wc>>4)-0x600]; else if (wc >= 0x7800 && wc < 0x7890) summary = &cp950ext_uni2indx_page78[(wc>>4)-0x780]; else if (wc >= 0x7c00 && wc < 0x7cb0) summary = &cp950ext_uni2indx_page7c[(wc>>4)-0x7c0]; else if (wc >= 0x8800 && wc < 0x88d0) summary = &cp950ext_uni2indx_page88[(wc>>4)-0x880]; else if (wc >= 0x9200 && wc < 0x92c0) summary = &cp950ext_uni2indx_page92[(wc>>4)-0x920]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = cp950ext_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/euc_cn.h0100644000000000000000000000207307206266436014551 0ustar rootroot /* * EUC-CN */ static int euc_cn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; /* Code set 0 (ASCII or GB 1988-89) */ if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* Code set 1 (GB 2312-1980) */ if (c >= 0xa1 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if (c2 >= 0xa1 && c2 < 0xff) { unsigned char buf[2]; buf[0] = c-0x80; buf[1] = c2-0x80; return gb2312_mbtowc(conv,pwc,buf,2); } else return RET_ILSEQ; } } return RET_ILSEQ; } static int euc_cn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Code set 0 (ASCII or GB 1988-89) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 1 (GB 2312-1980) */ ret = gb2312_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]+0x80; r[1] = buf[1]+0x80; return 2; } return RET_ILSEQ; } recode-3.6/libiconv/euc_jp.h0100644000000000000000000000764007206266436014567 0ustar rootroot /* * EUC-JP */ static int euc_jp_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* Code set 1 (JIS X 0208) */ if (c >= 0xa1 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); if (c < 0xf5) { unsigned char c2 = s[1]; if (c2 >= 0xa1 && c2 < 0xff) { unsigned char buf[2]; buf[0] = c-0x80; buf[1] = c2-0x80; return jisx0208_mbtowc(conv,pwc,buf,2); } else return RET_ILSEQ; } else { /* User-defined range. See * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ unsigned char c2 = s[1]; if (c2 >= 0xa1 && c2 < 0xff) { *pwc = 0xe000 + 94*(c-0xf5) + (c2-0xa1); return 2; } else return RET_ILSEQ; } } /* Code set 2 (half-width katakana) */ if (c == 0x8e) { if (n < 2) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if (c2 >= 0xa1 && c2 < 0xe0) { int ret = jisx0201_mbtowc(conv,pwc,s+1,n-1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); return 2; } else return RET_ILSEQ; } } /* Code set 3 (JIS X 0212-1990) */ if (c == 0x8f) { if (n < 2) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if (c2 >= 0xa1 && c2 < 0xff) { if (n < 3) return RET_TOOFEW(0); if (c2 < 0xf5) { unsigned char c3 = s[2]; if (c3 >= 0xa1 && c3 < 0xff) { unsigned char buf[2]; int ret; buf[0] = c2-0x80; buf[1] = c3-0x80; ret = jisx0212_mbtowc(conv,pwc,buf,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); return 3; } else return RET_ILSEQ; } else { /* User-defined range. See * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ unsigned char c3 = s[2]; if (c3 >= 0xa1 && c3 < 0xff) { *pwc = 0xe3ac + 94*(c2-0xf5) + (c3-0xa1); return 3; } else return RET_ILSEQ; } } else return RET_ILSEQ; } } return RET_ILSEQ; } static int euc_jp_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Code set 0 (ASCII or JIS X 0201-1976 Roman) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 1 (JIS X 0208) */ ret = jisx0208_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]+0x80; r[1] = buf[1]+0x80; return 2; } /* Code set 2 (half-width katakana) */ ret = jisx0201_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ && buf[0] >= 0x80) { if (ret != 1) abort(); if (n < 2) return RET_TOOSMALL; r[0] = 0x8e; r[1] = buf[0]; return 2; } /* Code set 3 (JIS X 0212-1990) */ ret = jisx0212_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 3) return RET_TOOSMALL; r[0] = 0x8f; r[1] = buf[0]+0x80; r[2] = buf[1]+0x80; return 3; } /* User-defined range. See * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ if (wc >= 0xe000 && wc < 0xe758) { if (wc < 0xe3ac) { unsigned char c1, c2; if (n < 2) return RET_TOOSMALL; c1 = (unsigned int) (wc - 0xe000) / 94; c2 = (unsigned int) (wc - 0xe000) % 94; r[0] = c1+0xf5; r[1] = c2+0xa1; return 2; } else { unsigned char c1, c2; if (n < 2) return RET_TOOSMALL; c1 = (unsigned int) (wc - 0xe3ac) / 94; c2 = (unsigned int) (wc - 0xe3ac) % 94; r[0] = 0x8f; r[1] = c1+0xf5; r[2] = c2+0xa1; return 3; } } return RET_ILSEQ; } recode-3.6/libiconv/euc_kr.h0100644000000000000000000000215007206266436014561 0ustar rootroot /* * EUC-KR */ /* Specification: RFC 1557 */ static int euc_kr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; /* Code set 0 (ASCII or KS C 5636-1993) */ if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* Code set 1 (KS C 5601-1992) */ if (c >= 0xa1 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if (c2 >= 0xa1 && c2 < 0xff) { unsigned char buf[2]; buf[0] = c-0x80; buf[1] = c2-0x80; return ksc5601_mbtowc(conv,pwc,buf,2); } else return RET_ILSEQ; } } return RET_ILSEQ; } static int euc_kr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Code set 0 (ASCII or KS C 5636-1993) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 1 (KS C 5601-1992) */ ret = ksc5601_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]+0x80; r[1] = buf[1]+0x80; return 2; } return RET_ILSEQ; } recode-3.6/libiconv/euc_tw.h0100644000000000000000000000416007206266436014602 0ustar rootroot /* * EUC-TW */ static int euc_tw_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; /* Code set 0 (ASCII) */ if (c < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* Code set 1 (CNS 11643-1992 Plane 1) */ if (c >= 0xa1 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if (c2 >= 0xa1 && c2 < 0xff) { unsigned char buf[2]; buf[0] = c-0x80; buf[1] = c2-0x80; return cns11643_1_mbtowc(conv,pwc,buf,2); } else return RET_ILSEQ; } } /* Code set 2 (CNS 11643-1992 Planes 1-16) */ if (c == 0x8e) { if (n < 4) return RET_TOOFEW(0); { unsigned char c2 = s[1]; if (c2 >= 0xa1 && c2 <= 0xb0) { unsigned char c3 = s[2]; unsigned char c4 = s[3]; if (c3 >= 0xa1 && c3 < 0xff && c4 >= 0xa1 && c4 < 0xff) { unsigned char buf[2]; int ret; buf[0] = c3-0x80; buf[1] = c4-0x80; switch (c2-0xa0) { case 1: ret = cns11643_1_mbtowc(conv,pwc,buf,2); break; case 2: ret = cns11643_2_mbtowc(conv,pwc,buf,2); break; case 3: ret = cns11643_3_mbtowc(conv,pwc,buf,2); break; default: return RET_ILSEQ; } if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); return 4; } } } } return RET_ILSEQ; } static int euc_tw_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[3]; int ret; /* Code set 0 (ASCII) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; ret = cns11643_wctomb(conv,buf,wc,3); if (ret != RET_ILSEQ) { if (ret != 3) abort(); /* Code set 1 (CNS 11643-1992 Plane 1) */ if (buf[0] == 0) { if (n < 2) return RET_TOOSMALL; r[0] = buf[1]+0x80; r[1] = buf[2]+0x80; return 2; } /* Code set 2 (CNS 11643-1992 Planes 1-16) */ if (n < 4) return RET_TOOSMALL; r[0] = 0x8e; r[1] = buf[0]+0xa1; r[2] = buf[1]+0x80; r[3] = buf[2]+0x80; return 4; } return RET_ILSEQ; } recode-3.6/libiconv/flags.h0100644000000000000000000001350407175011353014401 0ustar rootroot/* Generated automatically by genflags. */ /* Set if the encoding can encode the acute and grave accents U+00B4 and U+0060. */ #define HAVE_ACCENTS 1 /* Set if the encoding can encode the single quotation marks U+2018 and U+2019. */ #define HAVE_QUOTATION_MARKS 2 /* Set if the encoding can encode the double-width Hangul letters (Jamo) U+3131 to U+3163. */ #define HAVE_HANGUL_JAMO 4 #define ei_ascii_oflags (0) #define ei_utf8_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs2be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs2le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs4_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs4be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs4le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_utf16_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_utf16be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_utf16le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_utf7_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs2internal_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs2swapped_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs4internal_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_ucs4swapped_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_java_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_iso8859_1_oflags (HAVE_ACCENTS) #define ei_iso8859_2_oflags (HAVE_ACCENTS) #define ei_iso8859_3_oflags (HAVE_ACCENTS) #define ei_iso8859_4_oflags (HAVE_ACCENTS) #define ei_iso8859_5_oflags (0) #define ei_iso8859_6_oflags (0) #define ei_iso8859_7_oflags (HAVE_QUOTATION_MARKS) #define ei_iso8859_8_oflags (HAVE_ACCENTS) #define ei_iso8859_9_oflags (HAVE_ACCENTS) #define ei_iso8859_10_oflags (0) #define ei_iso8859_13_oflags (0) #define ei_iso8859_14_oflags (0) #define ei_iso8859_15_oflags (0) #define ei_iso8859_16_oflags (0) #define ei_koi8_r_oflags (0) #define ei_koi8_u_oflags (0) #define ei_koi8_ru_oflags (0) #define ei_cp1250_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_cp1251_oflags (HAVE_QUOTATION_MARKS) #define ei_cp1252_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_cp1253_oflags (HAVE_QUOTATION_MARKS) #define ei_cp1254_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_cp1255_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_cp1256_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_cp1257_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_cp1258_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_cp850_oflags (HAVE_ACCENTS) #define ei_cp866_oflags (0) #define ei_mac_roman_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_mac_centraleurope_oflags (HAVE_QUOTATION_MARKS) #define ei_mac_iceland_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_mac_croatian_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_mac_romania_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_mac_cyrillic_oflags (HAVE_QUOTATION_MARKS) #define ei_mac_ukraine_oflags (HAVE_QUOTATION_MARKS) #define ei_mac_greek_oflags (HAVE_QUOTATION_MARKS) #define ei_mac_turkish_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_mac_hebrew_oflags (HAVE_QUOTATION_MARKS) #define ei_mac_arabic_oflags (0) #define ei_mac_thai_oflags (HAVE_QUOTATION_MARKS) #define ei_hp_roman8_oflags (HAVE_ACCENTS) #define ei_nextstep_oflags (HAVE_ACCENTS) #define ei_armscii_8_oflags (0) #define ei_georgian_academy_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_georgian_ps_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_mulelao_oflags (0) #define ei_cp1133_oflags (0) #define ei_tis620_oflags (0) #define ei_cp874_oflags (HAVE_QUOTATION_MARKS) #define ei_viscii_oflags (0) #define ei_tcvn_oflags (0) #define ei_iso646_jp_oflags (0) #define ei_jisx0201_oflags (0) #define ei_jisx0208_oflags (HAVE_QUOTATION_MARKS) #define ei_jisx0212_oflags (0) #define ei_iso646_cn_oflags (0) #define ei_gb2312_oflags (HAVE_QUOTATION_MARKS) #define ei_isoir165_oflags (HAVE_QUOTATION_MARKS) #define ei_ksc5601_oflags (HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_euc_jp_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_sjis_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_cp932_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_iso2022_jp_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_iso2022_jp1_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_iso2022_jp2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_euc_cn_oflags (HAVE_QUOTATION_MARKS) #define ei_ces_gbk_oflags (HAVE_QUOTATION_MARKS) #define ei_gb18030_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_iso2022_cn_oflags (HAVE_QUOTATION_MARKS) #define ei_iso2022_cn_ext_oflags (HAVE_QUOTATION_MARKS) #define ei_hz_oflags (HAVE_QUOTATION_MARKS) #define ei_euc_tw_oflags (HAVE_QUOTATION_MARKS) #define ei_ces_big5_oflags (HAVE_QUOTATION_MARKS) #define ei_cp950_oflags (HAVE_QUOTATION_MARKS) #define ei_big5hkscs_oflags (HAVE_QUOTATION_MARKS) #define ei_euc_kr_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_cp949_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_johab_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_iso2022_kr_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO) #define ei_cp856_oflags (HAVE_ACCENTS) #define ei_cp922_oflags (HAVE_ACCENTS) #define ei_cp943_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS) #define ei_cp1046_oflags (0) #define ei_cp1124_oflags (0) #define ei_cp1129_oflags (0) recode-3.6/libiconv/gb12345.h0100644000000000000000000000252707206266436014310 0ustar rootroot/* * GB/T 12345-1990 */ /* * GB/T 12345-1990 is a traditional chinese counterpart of GB 2312-1986. * According to the unicode.org tables: * 2146 characters have been changed to their traditional counterpart, * 103 characters have been added, no characters have been removed. * Therefore we use an auxiliary table, which contains only the changes. */ #include "gb12345ext.h" static int gb12345_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { int ret; /* The gb12345ext table overrides some entries in the gb2312 table. */ /* Try the GB12345 extensions -> Unicode table. */ ret = gb12345ext_mbtowc(conv,pwc,s,n); if (ret != RET_ILSEQ) return ret; /* Try the GB2312 -> Unicode table. */ ret = gb2312_mbtowc(conv,pwc,s,n); return ret; } static int gb12345_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { int ret; /* The gb12345ext table overrides some entries in the gb2312 table. */ /* Try the Unicode -> GB12345 extensions table. */ ret = gb12345ext_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Try the Unicode -> GB2312 table, and check that the resulting GB2312 byte sequence is not overridden by the GB12345 extensions table. */ ret = gb2312_wctomb(conv,r,wc,n); if (ret == 2 && gb12345ext_mbtowc(conv,&wc,r,2) == 2) return RET_ILSEQ; else return ret; } recode-3.6/libiconv/gb12345ext.h0100644000000000000000000031775107206266436015041 0ustar rootroot /* * GB/T 12345.1990-0 extensions */ static const unsigned short gb12345ext_2uni_page21[12] = { /* 0x21 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2225, }; static const unsigned short gb12345ext_2uni_page26[85] = { /* 0x26 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfe35, 0xfe36, 0xfe39, 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfffd, 0xfffd, 0xfe3b, 0xfe3c, 0xfe37, 0xfe38, 0xfe31, 0xfffd, 0xfe33, 0xfe34, }; static const unsigned short gb12345ext_2uni_page28[32] = { /* 0x28 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0251, 0x1e3f, 0x0144, 0x0148, 0x01f9, 0x0261, }; static const unsigned short gb12345ext_2uni_page30[6871] = { /* 0x30 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x769a, 0xfffd, 0x85f9, 0xfffd, 0xfffd, 0x7919, 0x611b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9aaf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8956, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x58e9, 0xfffd, 0x7f77, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64fa, 0xfffd, 0x6557, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9812, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8fa6, 0x7d46, 0xfffd, 0x5e6b, 0xfffd, 0xfffd, 0xfffd, 0x7d81, 0xfffd, 0xfffd, 0xfffd, 0x938a, 0xfffd, 0x8b17, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x31 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x98fd, 0x5bf6, 0xfffd, 0x5831, 0xfffd, 0xfffd, 0x9b91, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8f29, 0xfffd, 0x8c9d, 0x92c7, 0xfffd, 0x72fd, 0x5099, 0x618a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7db3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7b46, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7562, 0x6583, 0xfffd, 0x5e63, 0xfffd, 0xfffd, 0x9589, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x908a, 0x7de8, 0x8cb6, 0xfffd, 0xfffd, 0x8b8a, 0xfffd, 0xfffd, 0x8faf, 0x8fae, 0xfffd, 0x6a19, 0xfffd, 0xfffd, 0xfffd, 0x9c49, 0xfffd, 0xfffd, 0x765f, 0xfffd, 0xfffd, 0x7015, 0x6ff1, 0x8cd3, 0x64ef, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9905, 0xfffd, /* 0x32 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64a5, 0x9262, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9251, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x99c1, 0xfffd, 0xfffd, 0xfffd, 0x88dc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ca1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x53c3, 0x8836, 0x6b98, 0x615a, 0x6158, 0x71e6, 0x84bc, 0x8259, 0x5009, 0x6ec4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x53a0, 0xfffd, 0x5074, 0xfffd, 0x6e2c, 0x5c64, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a6b, 0xfffd, 0xfffd, 0xfffd, 0x6519, 0x647b, 0x87ec, 0x995e, 0x8b92, 0x7e8f, 0x93df, 0x7523, 0x95e1, 0x986b, 0xfffd, 0xfffd, /* 0x33 */ 0x5834, 0x5617, 0xfffd, 0x9577, 0x511f, 0x8178, 0x5ee0, 0xfffd, 0x66a2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9214, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8eca, 0xfffd, 0xfffd, 0xfffd, 0x5fb9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5875, 0xfffd, 0xfffd, 0xfffd, 0x9673, 0xfffd, 0x896f, 0xfffd, 0x7a31, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x61f2, 0xfffd, 0x8aa0, 0xfffd, 0xfffd, 0x9a01, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9072, 0xfffd, 0x99b3, 0xfffd, 0x9f52, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x71be, 0xfffd, 0x885d, 0x87f2, 0xfffd, 0x5bf5, 0xfffd, 0xfffd, 0x7587, 0x8e8a, 0xfffd, 0xfffd, 0x7c4c, 0xfffd, 0x7da2, 0xfffd, 0x919c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x92e4, 0x96db, 0xfffd, 0xfffd, 0xfffd, /* 0x34 */ 0x790e, 0x5132, 0xfffd, 0xfffd, 0x89f8, 0x8655, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x50b3, 0xfffd, 0xfffd, 0xfffd, 0x7621, 0xfffd, 0xfffd, 0xfffd, 0x95d6, 0x5275, 0xfffd, 0xfffd, 0xfffd, 0x9318, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d14, 0xfffd, 0xfffd, 0x7dbd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8fad, 0xfffd, 0xfffd, 0x8a5e, 0xfffd, 0xfffd, 0x8cdc, 0xfffd, 0x8070, 0xfffd, 0xfffd, 0xfffd, 0x5f9e, 0x53e2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ea5, 0xfffd, 0x7ac4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x932f, 0xfffd, 0x9054, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5e36, 0xfffd, 0xfffd, 0x8cb8, 0xfffd, 0xfffd, 0xfffd, /* 0x35 */ 0xfffd, 0xfffd, 0x64d4, 0xfffd, 0x55ae, 0x9132, 0x64a3, 0x81bd, 0xfffd, 0xfffd, 0xfffd, 0x619a, 0xfffd, 0x8a95, 0x5f48, 0xfffd, 0x7576, 0x64cb, 0x9ee8, 0x8569, 0x6a94, 0xfffd, 0x6417, 0xfffd, 0xfffd, 0x5cf6, 0x79b1, 0x5c0e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x71c8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9127, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6575, 0xfffd, 0xfffd, 0x6ecc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x905e, 0x7de0, 0x985b, 0xfffd, 0xfffd, 0xfffd, 0x9ede, 0xfffd, 0xfffd, 0x588a, 0x96fb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6fb1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x91e3, 0x8abf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8adc, 0xfffd, /* 0x36 */ 0xfffd, 0xfffd, 0xfffd, 0x91d8, 0x9802, 0xfffd, 0x9320, 0xfffd, 0x8a02, 0xfffd, 0x6771, 0xfffd, 0xfffd, 0xfffd, 0x52d5, 0x68df, 0xfffd, 0xfffd, 0x51cd, 0xfffd, 0xfffd, 0xfffd, 0x9b25, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x72a2, 0x7368, 0x8b80, 0xfffd, 0xfffd, 0x8ced, 0xfffd, 0x934d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x935b, 0xfffd, 0x65b7, 0x7dde, 0xfffd, 0xfffd, 0x968a, 0x5c0d, 0xfffd, 0x5678, 0xfffd, 0xfffd, 0x9813, 0xfffd, 0x920d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x596a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x58ae, 0xfffd, 0xfffd, 0x9d5d, 0xfffd, 0x984d, 0x8a1b, 0xfffd, 0x60e1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9913, 0xfffd, 0xfffd, 0x5152, 0xfffd, 0x723e, 0x990c, 0xfffd, 0xfffd, /* 0x37 */ 0x8cb3, 0x767c, 0x7f70, 0xfffd, 0xfffd, 0xfffd, 0x95a5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x792c, 0x91e9, 0xfffd, 0xfffd, 0x7169, 0xfffd, 0xfffd, 0x7bc4, 0x8ca9, 0xfffd, 0x98ef, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a2a, 0x7d21, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x98db, 0xfffd, 0xfffd, 0x8ab9, 0xfffd, 0xfffd, 0x5ee2, 0xfffd, 0x8cbb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d1b, 0x58b3, 0xfffd, 0xfffd, 0xfffd, 0x596e, 0xfffd, 0xfffd, 0x61a4, 0x7cde, 0x8c50, 0xfffd, 0x6953, 0xfffd, 0xfffd, 0x92d2, 0x98a8, 0x760b, 0xfffd, 0xfffd, 0x99ae, 0x7e2b, 0x8af7, 0xfffd, 0x9cf3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x819a, 0xfffd, 0xfffd, 0xfffd, 0x8f3b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x38 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64ab, 0x8f14, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ce6, 0x5fa9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ca0, 0xfffd, 0x8a03, 0xfffd, 0x5a66, 0x7e1b, 0xfffd, 0xfffd, 0xfffd, 0x8a72, 0xfffd, 0xfffd, 0x9223, 0x84cb, 0xfffd, 0x5e79, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8d95, 0xfffd, 0xfffd, 0xfffd, 0x8d1b, 0x5ca1, 0x525b, 0x92fc, 0xfffd, 0xfffd, 0x7db1, 0x5d17, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x93ac, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64f1, 0xfffd, 0x9d3f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x95a3, 0xfffd, 0x927b, 0x500b, 0xfffd, 0x7d66, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x39 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9f94, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x978f, 0xfffd, 0xfffd, 0x8ca2, 0xfffd, 0x920e, 0xfffd, 0x6e9d, 0xfffd, 0xfffd, 0xfffd, 0x69cb, 0x8cfc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8831, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9867, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x526e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x95dc, 0xfffd, 0xfffd, 0x89c0, 0xfffd, 0x9928, 0xfffd, 0x6163, 0xfffd, 0x8cab, 0xfffd, 0x5ee3, 0xfffd, 0xfffd, 0x898f, 0xfffd, 0xfffd, 0x6b78, 0x9f9c, 0x95a8, 0x8ecc, 0xfffd, 0x8a6d, 0xfffd, 0xfffd, 0x6ac3, 0xfffd, 0x8cb4, 0x528a, 0x8f25, 0xfffd, 0xfffd, 0x934b, 0xfffd, 0x570b, 0xfffd, 0xfffd, 0x904e, 0xfffd, /* 0x3a */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x99ed, 0xfffd, 0xfffd, 0xfffd, 0x97d3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6f22, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x865f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x95a1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9db4, 0x8cc0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8f5f, 0xfffd, 0xfffd, 0xfffd, 0x9d3b, 0xfffd, 0xfffd, 0xfffd, 0x7d05, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5f8c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x58fa, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x3b */ 0xfffd, 0xfffd, 0xfffd, 0x8b77, 0xfffd, 0x6eec, 0xfffd, 0xfffd, 0x5629, 0x83ef, 0xfffd, 0xfffd, 0x756b, 0x5283, 0xfffd, 0x8a71, 0xfffd, 0xfffd, 0x61f7, 0xfffd, 0x58de, 0x6b61, 0x74b0, 0xfffd, 0x9084, 0x7de9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8b0a, 0xfffd, 0x63ee, 0x8f1d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8cc4, 0x7a62, 0x6703, 0x71f4, 0x532f, 0x8af1, 0x8aa8, 0x7e6a, 0x8477, 0xfffd, 0xfffd, 0xfffd, 0x6e3e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7372, 0xfffd, 0xfffd, 0xfffd, 0x8ca8, 0x798d, 0x64ca, 0xfffd, 0xfffd, 0x6a5f, 0xfffd, 0xfffd, 0x7a4d, 0xfffd, /* 0x3c */ 0xfffd, 0x9951, 0xfffd, 0xfffd, 0x8b4f, 0x9dc4, 0xfffd, 0x7e3e, 0x7ddd, 0xfffd, 0x6975, 0xfffd, 0x8f2f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d1a, 0x64e0, 0x5e7e, 0xfffd, 0xfffd, 0x858a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5291, 0xfffd, 0x6fdf, 0xfffd, 0xfffd, 0x8a08, 0x8a18, 0xfffd, 0xfffd, 0x969b, 0xfffd, 0x7e7c, 0x7d00, 0xfffd, 0xfffd, 0x593e, 0xfffd, 0xfffd, 0xfffd, 0x83a2, 0x9830, 0x8cc8, 0xfffd, 0x9240, 0xfffd, 0xfffd, 0x50f9, 0xfffd, 0x99d5, 0xfffd, 0x6bb2, 0x76e3, 0x5805, 0xfffd, 0x7b8b, 0x9593, 0xfffd, 0xfffd, 0xfffd, 0x8271, 0xfffd, 0x7dd8, 0x7e6d, 0x6aa2, 0xfffd, 0xfffd, 0x9e7c, 0x63c0, 0x64bf, 0x7c21, 0x5109, 0xfffd, 0xfffd, 0x85a6, 0x6abb, 0x9452, 0x8e10, 0x8ce4, 0x898b, 0x9375, 0xfffd, 0xfffd, /* 0x3d */ 0xfffd, 0x8266, 0x528d, 0x991e, 0x6f38, 0x6ffa, 0x6f97, 0xfffd, 0xfffd, 0xfffd, 0x5c07, 0x6f3f, 0xfffd, 0xfffd, 0x8523, 0x69f3, 0x596c, 0x8b1b, 0xfffd, 0x91ac, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x81a0, 0xfffd, 0xfffd, 0x6f86, 0x9a55, 0x5b0c, 0xfffd, 0x652a, 0x9278, 0x77ef, 0x50e5, 0xfffd, 0xfffd, 0xfffd, 0x9903, 0x7e73, 0x7d5e, 0xfffd, 0xfffd, 0xfffd, 0x8f4e, 0x8f03, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x968e, 0xfffd, 0xfffd, 0x7bc0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6f54, 0x7d50, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8aa1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7dca, 0x9326, 0x50c5, 0x8b39, 0x9032, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x71fc, 0xfffd, /* 0x3e */ 0x76e1, 0x52c1, 0xfffd, 0xfffd, 0x8396, 0xfffd, 0xfffd, 0x9be8, 0xfffd, 0x9a5a, 0xfffd, 0xfffd, 0x7d93, 0xfffd, 0xfffd, 0xfffd, 0x9838, 0xfffd, 0xfffd, 0xfffd, 0x93e1, 0x5f91, 0x75d9, 0xfffd, 0xfffd, 0x7af6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7cfe, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x820a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x99d2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8209, 0xfffd, 0xfffd, 0xfffd, 0x64da, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x92f8, 0xfffd, 0xfffd, 0x61fc, 0xfffd, 0x5287, 0xfffd, 0x9d51, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d79, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x89ba, 0xfffd, 0x8a23, 0x7d76, 0xfffd, 0xfffd, 0x921e, 0x8ecd, 0xfffd, 0xfffd, /* 0x3f */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x99ff, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x958b, 0xfffd, 0xfffd, 0x51f1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9846, 0xfffd, 0x6bbb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ab2, 0xfffd, 0xfffd, 0x58be, 0x61c7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6473, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5eab, 0x8932, 0x8a87, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x584a, 0xfffd, 0x5108, 0xfffd, 0x5bec, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7926, 0xfffd, 0x66e0, 0xfffd, 0x8667, 0xfffd, 0x5dcb, 0x7aba, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x40 */ 0x994b, 0xfffd, 0x6f70, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64f4, 0xfffd, 0x95ca, 0xfffd, 0xfffd, 0xfffd, 0x881f, 0x81d8, 0xfffd, 0xfffd, 0x840a, 0x4f86, 0x8cf4, 0x85cd, 0xfffd, 0x6b04, 0x6514, 0x7c43, 0x95cc, 0x862d, 0x703e, 0x8b95, 0x652c, 0x89bd, 0x61f6, 0x7e9c, 0x721b, 0x6feb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6488, 0x52de, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6f87, 0xfffd, 0x6a02, 0xfffd, 0x9433, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x58d8, 0xfffd, 0xfffd, 0x985e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7c6c, 0xfffd, 0x96e2, 0x7055, 0xfffd, 0xfffd, 0x88cf, 0x9bc9, 0x79ae, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9e97, 0x53b2, 0x52f5, 0x792b, 0x6b77, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x41 */ 0xfffd, 0xfffd, 0xfffd, 0x701d, 0x96b8, 0xfffd, 0xfffd, 0xfffd, 0x5006, 0x806f, 0x84ee, 0x9023, 0x942e, 0xfffd, 0x6190, 0x6f23, 0x7c3e, 0x6582, 0x81c9, 0x93c8, 0x6200, 0x7149, 0x7df4, 0x7ce7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5169, 0x8f1b, 0xfffd, 0xfffd, 0xfffd, 0x8ad2, 0xfffd, 0xfffd, 0xfffd, 0x7642, 0xfffd, 0xfffd, 0x907c, 0xfffd, 0xfffd, 0xfffd, 0x9410, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7375, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x81e8, 0x9130, 0x9c57, 0xfffd, 0xfffd, 0x8cc3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9f61, 0x9234, 0xfffd, 0xfffd, 0xfffd, 0x9748, 0xfffd, 0x5dba, 0x9818, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x993e, 0xfffd, 0x5289, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9f8d, 0x807e, 0x56a8, 0x7c60, 0xfffd, /* 0x42 */ 0xfffd, 0x58df, 0x650f, 0x96b4, 0x6a13, 0x5a41, 0x645f, 0x7c0d, 0xfffd, 0xfffd, 0x8606, 0x76e7, 0x9871, 0x5eec, 0x7210, 0x64c4, 0x6ef7, 0x865c, 0x9b6f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8cc2, 0xfffd, 0xfffd, 0xfffd, 0x9332, 0x9678, 0xfffd, 0x9a62, 0xfffd, 0x92c1, 0xfffd, 0xfffd, 0xfffd, 0x5c62, 0x7e37, 0x616e, 0xfffd, 0xfffd, 0xfffd, 0x6ffe, 0x7dd1, 0x5dd2, 0x6523, 0x5b7f, 0x7064, 0xfffd, 0x4e82, 0xfffd, 0xfffd, 0x6384, 0x8f2a, 0x502b, 0x4f96, 0x6dea, 0x7db8, 0x8ad6, 0x863f, 0xfffd, 0x7f85, 0x908f, 0x947c, 0x7c6e, 0x9a3e, 0xfffd, 0xfffd, 0xfffd, 0x99f1, 0x7d61, 0x5abd, 0xfffd, 0x746a, 0x78bc, 0x879e, 0x99ac, 0x99e1, 0xfffd, 0x55ce, 0xfffd, 0x8cb7, 0x9ea5, 0x8ce3, 0x9081, 0xfffd, 0x779e, 0x9945, 0x883b, 0x6eff, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x43 */ 0x8b3e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9328, 0xfffd, 0xfffd, 0x925a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8cbf, 0x9ebd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9382, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9580, 0x60b6, 0x5011, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9333, 0xfffd, 0x5922, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8b0e, 0x5f4c, 0xfffd, 0xfffd, 0x8993, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7dbf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7dec, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5edf, 0xfffd, 0xfffd, 0x6ec5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x61ab, 0x95a9, 0xfffd, 0xfffd, 0x9cf4, 0x9298, 0xfffd, 0xfffd, 0x8b2c, 0xfffd, /* 0x44 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8b00, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x755d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9209, 0xfffd, 0xfffd, 0x7d0d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x96e3, 0xfffd, 0x6493, 0x8166, 0x60f1, 0x9b27, 0xfffd, 0xfffd, 0x9912, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64ec, 0xfffd, 0xfffd, 0x81a9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6506, 0xfffd, 0xfffd, 0xfffd, 0x91c0, 0x9ce5, 0xfffd, 0xfffd, 0x8076, 0xfffd, 0x5699, 0x9477, 0x93b3, 0xfffd, 0xfffd, 0x6ab8, 0x7370, 0xfffd, 0x5be7, /* 0x45 */ 0x64f0, 0x6fd8, 0xfffd, 0xfffd, 0x9215, 0x7d10, 0x81bf, 0x6fc3, 0x8fb2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7627, 0xfffd, 0xfffd, 0xfffd, 0x8afe, 0xfffd, 0x6b50, 0x9dd7, 0x6bc6, 0xfffd, 0x5614, 0xfffd, 0x6f1a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x76e4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9f90, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ce0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5674, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9d6c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x46 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9a19, 0x98c4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x983b, 0x8ca7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x860b, 0xfffd, 0xfffd, 0x6191, 0xfffd, 0x8a55, 0xfffd, 0xfffd, 0x6f51, 0x9817, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x64b2, 0x92ea, 0x50d5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6a38, 0xfffd, 0xfffd, 0xfffd, 0x8b5c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x81cd, 0x9f4a, 0xfffd, 0xfffd, 0xfffd, 0x9a0e, 0xfffd, 0x8c48, 0xfffd, 0xfffd, 0x5553, 0xfffd, 0xfffd, 0xfffd, 0x6c23, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a16, 0xfffd, /* 0x47 */ 0xfffd, 0xfffd, 0x727d, 0xfffd, 0x91fa, 0x925b, 0xfffd, 0x9077, 0x7c3d, 0xfffd, 0x8b19, 0xfffd, 0xfffd, 0x9322, 0x9257, 0xfffd, 0xfffd, 0xfffd, 0x6dfa, 0x8b74, 0x5879, 0xfffd, 0xfffd, 0xfffd, 0x69cd, 0x55c6, 0xfffd, 0xfffd, 0x58bb, 0x8594, 0xfffd, 0x6436, 0xfffd, 0x936c, 0xfffd, 0xfffd, 0x6a4b, 0xfffd, 0x55ac, 0x50d1, 0xfffd, 0xfffd, 0xfffd, 0x7ff9, 0xfffd, 0xfffd, 0x7ac5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7aca, 0x6b3d, 0xfffd, 0x89aa, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5be2, 0xfffd, 0xfffd, 0x8f15, 0x6c2b, 0x50be, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9803, 0x8acb, 0x6176, 0x74ca, 0x7aae, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8da8, 0x5340, 0xfffd, 0xfffd, 0x8ec0, 0xfffd, 0x9a45, 0xfffd, /* 0x48 */ 0xfffd, 0xfffd, 0x9f72, 0xfffd, 0xfffd, 0xfffd, 0x9874, 0x6b0a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x52f8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9d72, 0xfffd, 0x78ba, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8b93, 0x9952, 0x64fe, 0x7e5e, 0xfffd, 0x71b1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x97cc, 0xfffd, 0x8a8d, 0xfffd, 0xfffd, 0x7d09, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x69ae, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d68, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8edf, 0xfffd, 0xfffd, 0xfffd, 0x92ed, 0x958f, 0x6f64, 0xfffd, 0xfffd, 0xfffd, 0x7051, 0x85a9, 0xfffd, 0x9c13, 0xfffd, 0x8cfd, 0xfffd, 0xfffd, /* 0x49 */ 0x5098, 0xfffd, 0xfffd, 0xfffd, 0x55aa, 0xfffd, 0x9a37, 0x6383, 0xfffd, 0xfffd, 0xfffd, 0x6f80, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6bba, 0xfffd, 0xfffd, 0x7d17, 0xfffd, 0xfffd, 0xfffd, 0x7be9, 0x66ec, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9583, 0x965d, 0xfffd, 0x8d0d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7e55, 0xfffd, 0x50b7, 0xfffd, 0x8cde, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x71d2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d39, 0xfffd, 0x8cd2, 0xfffd, 0xfffd, 0x6368, 0xfffd, 0x651d, 0xfffd, 0x61fe, 0xfffd, 0xfffd, 0x8a2d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d33, 0xfffd, 0xfffd, 0x5be9, 0x5b38, 0xfffd, 0x814e, 0xfffd, 0x6ef2, 0x8072, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7e69, /* 0x4a */ 0xfffd, 0xfffd, 0xfffd, 0x52dd, 0x8056, 0x5e2b, 0xfffd, 0x7345, 0xfffd, 0x6fd5, 0x8a69, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6642, 0xfffd, 0xfffd, 0x8755, 0x5be6, 0x8b58, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x99db, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x52e2, 0xfffd, 0xfffd, 0xfffd, 0x9069, 0xfffd, 0xfffd, 0x91cb, 0x98fe, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8996, 0x8a66, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x58fd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7378, 0xfffd, 0x6a1e, 0xfffd, 0xfffd, 0xfffd, 0x8f38, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x66f8, 0x8d16, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5c6c, 0x8853, 0xfffd, 0x6a39, 0xfffd, 0xfffd, 0x7aea, 0xfffd, 0xfffd, 0x6578, 0xfffd, /* 0x4b */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5e25, 0xfffd, 0xfffd, 0xfffd, 0x96d9, 0xfffd, 0x8ab0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9806, 0xfffd, 0x8aac, 0x78a9, 0xfffd, 0x720d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d72, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x98fc, 0xfffd, 0x9b06, 0x8073, 0x616b, 0x980c, 0xfffd, 0xfffd, 0x8a1f, 0x8aa6, 0xfffd, 0xfffd, 0x64fb, 0xfffd, 0x8607, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a34, 0x8085, 0xfffd, 0xfffd, 0xfffd, 0x96d6, 0xfffd, 0x96a8, 0x7d8f, 0xfffd, 0xfffd, 0x6b72, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5b6b, 0x640d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7e2e, 0x7463, 0xfffd, 0x9396, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x4c */ 0x737a, 0x64bb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x81fa, 0xfffd, 0xfffd, 0xfffd, 0x614b, 0xfffd, 0xfffd, 0x6524, 0x8caa, 0x7671, 0x7058, 0x58c7, 0xfffd, 0xfffd, 0xfffd, 0x8b5a, 0x8ac7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5606, 0xfffd, 0x6e6f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x71d9, 0xfffd, 0x6fe4, 0xfffd, 0x7e27, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a0e, 0xfffd, 0xfffd, 0xfffd, 0x9a30, 0xfffd, 0x8b04, 0xfffd, 0xfffd, 0xfffd, 0x92bb, 0xfffd, 0x984c, 0xfffd, 0xfffd, 0x9ad4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x689d, 0xfffd, 0xfffd, 0xfffd, 0x8cbc, 0x9435, 0xfffd, 0x5ef3, 0x807d, 0x70f4, /* 0x4d */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9285, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d71, 0xfffd, 0xfffd, 0xfffd, 0x982d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5716, 0xfffd, 0xfffd, 0x5857, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5718, 0xfffd, 0x983d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9d15, 0xfffd, 0x99b1, 0x99dd, 0x6a62, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7aaa, 0xfffd, 0xfffd, 0x896a, 0xfffd, 0xfffd, 0xfffd, 0x5f4e, 0x7063, 0xfffd, 0x9811, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x842c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7db2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x4e */ 0xfffd, 0xfffd, 0xfffd, 0x97cb, 0x9055, 0xfffd, 0x570d, 0xfffd, 0xfffd, 0x7232, 0x6ff0, 0x7dad, 0x8466, 0xfffd, 0xfffd, 0x5049, 0x50de, 0xfffd, 0x7def, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8b02, 0xfffd, 0xfffd, 0x885b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x805e, 0x7d0b, 0xfffd, 0x7a69, 0xfffd, 0x554f, 0xfffd, 0xfffd, 0xfffd, 0x64be, 0x8778, 0x6e26, 0x7aa9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x55da, 0x93a2, 0x70cf, 0xfffd, 0x8aa3, 0xfffd, 0x7121, 0x856a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5862, 0xfffd, 0x9727, 0xfffd, 0xfffd, 0xfffd, 0x52d9, 0xfffd, 0x8aa4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x932b, 0x72a7, /* 0x4f */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8972, 0xfffd, 0x7fd2, 0xfffd, 0xfffd, 0x9291, 0xfffd, 0xfffd, 0xfffd, 0x6232, 0x7d30, 0xfffd, 0x8766, 0xfffd, 0xfffd, 0x8f44, 0xfffd, 0x5cfd, 0x4fe0, 0x72f9, 0xfffd, 0xfffd, 0xfffd, 0x5687, 0xfffd, 0x9341, 0xfffd, 0xfffd, 0x9bae, 0x7e96, 0xfffd, 0x8ce2, 0x929c, 0xfffd, 0x9591, 0xfffd, 0xfffd, 0xfffd, 0x986f, 0x96aa, 0x73fe, 0x737b, 0x7e23, 0xfffd, 0x9921, 0xfffd, 0x61b2, 0xfffd, 0xfffd, 0x7dab, 0xfffd, 0xfffd, 0x9472, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9109, 0xfffd, 0xfffd, 0x8a73, 0xfffd, 0x97ff, 0xfffd, 0x9805, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x856d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x56c2, 0x92b7, 0xfffd, 0xfffd, 0xfffd, 0x66c9, /* 0x50 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x562f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5354, 0x633e, 0xfffd, 0xfffd, 0xfffd, 0x8105, 0x8ae7, 0x5beb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7009, 0x8b1d, 0xfffd, 0xfffd, 0xfffd, 0x92c5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x91c1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8208, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x92b9, 0xfffd, 0xfffd, 0x7d89, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9808, 0xfffd, 0x8a31, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7dd2, 0x7e8c, 0x8ed2, 0xfffd, 0xfffd, 0x61f8, 0xfffd, 0xfffd, /* 0x51 */ 0x9078, 0x766c, 0xfffd, 0x7d62, 0xfffd, 0xfffd, 0x5b78, 0xfffd, 0xfffd, 0xfffd, 0x52db, 0xfffd, 0xfffd, 0xfffd, 0x8a62, 0x5c0b, 0x99b4, 0xfffd, 0xfffd, 0xfffd, 0x8a13, 0x8a0a, 0x905c, 0xfffd, 0x58d3, 0xfffd, 0x9d09, 0x9d28, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x555e, 0x4e9e, 0x8a1d, 0xfffd, 0xfffd, 0x95b9, 0xfffd, 0xfffd, 0x9e7d, 0x56b4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9854, 0x95bb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8277, 0xfffd, 0xfffd, 0x53ad, 0x786f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8afa, 0x9a57, 0xfffd, 0xfffd, 0x9d26, 0xfffd, 0x694a, 0x63da, 0xfffd, 0x760d, 0xfffd, 0xfffd, 0x967d, 0xfffd, 0xfffd, 0x7662, 0x990a, 0x6a23, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x52 */ 0xfffd, 0x582f, 0xfffd, 0xfffd, 0x8b21, 0xfffd, 0xfffd, 0xfffd, 0x85e5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x723a, 0xfffd, 0xfffd, 0xfffd, 0x9801, 0xfffd, 0x696d, 0x8449, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x91ab, 0xfffd, 0x92a5, 0xfffd, 0xfffd, 0xfffd, 0x9824, 0xfffd, 0x907a, 0xfffd, 0x5100, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x87fb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x85dd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5104, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x61b6, 0x7fa9, 0xfffd, 0xfffd, 0x8a63, 0x8b70, 0x8abc, 0x8b6f, 0xfffd, 0xfffd, 0xfffd, 0x7e79, 0xfffd, 0x852d, 0xfffd, 0xfffd, 0xfffd, 0x9670, 0xfffd, 0xfffd, 0x9280, 0xfffd, 0xfffd, 0x98f2, 0xfffd, 0xfffd, 0x96b1, /* 0x53 */ 0xfffd, 0xfffd, 0x6afb, 0x5b30, 0x9df9, 0x61c9, 0x7e93, 0x7469, 0x87a2, 0x71df, 0x7192, 0x8805, 0xfffd, 0x8d0f, 0xfffd, 0xfffd, 0x7a4e, 0xfffd, 0xfffd, 0x55b2, 0x64c1, 0x50ad, 0xfffd, 0x7670, 0xfffd, 0xfffd, 0x8e34, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x512a, 0xfffd, 0x6182, 0xfffd, 0xfffd, 0x90f5, 0x923e, 0x7336, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a98, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8f3f, 0x9918, 0xfffd, 0xfffd, 0x9b5a, 0xfffd, 0xfffd, 0x6f01, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8207, 0x5dbc, 0xfffd, 0xfffd, 0x8a9e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9b31, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7344, 0xfffd, 0x8b7d, /* 0x54 */ 0xfffd, 0xfffd, 0xfffd, 0x9810, 0xfffd, 0x99ad, 0x9d1b, 0x6df5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8f45, 0x5712, 0x54e1, 0x5713, 0xfffd, 0xfffd, 0x7de3, 0x9060, 0xfffd, 0x9858, 0xfffd, 0xfffd, 0xfffd, 0x7d04, 0xfffd, 0x8e8d, 0x9470, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x95b2, 0xfffd, 0x96f2, 0x9116, 0xfffd, 0x9695, 0xfffd, 0x904b, 0x85f4, 0x9196, 0x6688, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x96dc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8f09, 0xfffd, 0xfffd, 0xfffd, 0x6522, 0x66ab, 0x8d0a, 0x8d1c, 0x81df, 0xfffd, 0xfffd, 0xfffd, 0x947f, 0xfffd, 0x68d7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7ac8, 0xfffd, 0x8cac, 0x64c7, 0x5247, 0x6fa4, 0x8cca, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8d08, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ecb, /* 0x55 */ 0x9358, 0x9598, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a50, 0xfffd, 0x9f4b, 0xfffd, 0xfffd, 0x50b5, 0xfffd, 0xfffd, 0x6c08, 0xfffd, 0xfffd, 0xfffd, 0x76de, 0x65ac, 0x8f3e, 0x5d84, 0xfffd, 0xfffd, 0x68e7, 0xfffd, 0x6230, 0xfffd, 0xfffd, 0x7dbb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5f35, 0xfffd, 0x6f32, 0xfffd, 0xfffd, 0x5e33, 0x8cec, 0xfffd, 0x8139, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8d99, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x87c4, 0x8f4d, 0xfffd, 0x937a, 0xfffd, 0x9019, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8c9e, 0x91dd, 0x5075, 0xfffd, 0xfffd, 0x8a3a, 0xfffd, 0xfffd, 0x93ae, 0x9663, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x56 */ 0x5e40, 0x7665, 0x912d, 0x8b49, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7e54, 0x8077, 0xfffd, 0xfffd, 0xfffd, 0x57f7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8879, 0xfffd, 0x7d19, 0xfffd, 0x646f, 0x64f2, 0xfffd, 0xfffd, 0xfffd, 0x5e5f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8cea, 0xfffd, 0xfffd, 0x6eef, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9418, 0xfffd, 0x7d42, 0x7a2e, 0x816b, 0xfffd, 0xfffd, 0x8846, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8b05, 0xfffd, 0x8ef8, 0xfffd, 0xfffd, 0xfffd, 0x76ba, 0xfffd, 0x665d, 0x9a5f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8af8, 0x8a85, 0xfffd, 0xfffd, 0x71ed, 0xfffd, 0xfffd, 0x77da, 0x56d1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8caf, 0x9444, 0x7bc9, /* 0x57 */ 0xfffd, 0xfffd, 0xfffd, 0x99d0, 0xfffd, 0xfffd, 0xfffd, 0x5c08, 0x78da, 0x8f49, 0xfffd, 0x8cfa, 0xfffd, 0x6a01, 0x838a, 0x88dd, 0x599d, 0xfffd, 0x58ef, 0x72c0, 0xfffd, 0x9310, 0xfffd, 0x8d05, 0x589c, 0x7db4, 0x8ac4, 0x6e96, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6fc1, 0xfffd, 0xfffd, 0x8cc7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6f2c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7d9c, 0x7e3d, 0x7e31, 0x9112, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a5b, 0xfffd, 0x7d44, 0x947d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x58 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x55c7, 0xfffd, 0xfffd, 0x5399, 0xfffd, 0x53b4, 0xfffd, 0xfffd, 0x9768, 0x8d0b, 0xfffd, 0xfffd, 0x532d, 0x5331, 0xfffd, 0x8cfe, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5244, 0xfffd, 0x528c, 0x5274, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x50b4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5000, 0x5096, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x59 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5115, 0xfffd, 0x5102, 0xfffd, 0x5114, 0x513c, 0x5137, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x50e8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x50c2, 0x513b, 0x5110, 0x513a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x50c9, 0xfffd, 0xfffd, 0xfffd, 0x7cf4, 0xfffd, 0xfffd, 0x9ecc, 0xfffd, 0x56c5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9cec, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x893b, 0x81e0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x5a */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8a01, 0x8a10, 0x8a0c, 0x8a15, 0x8b33, 0x8a4e, 0x8a25, 0x8a41, 0x8a36, 0x8a46, 0x8a54, 0x8a58, 0x8a52, 0x8a86, 0x8a84, 0x8a7f, 0x8a70, 0x8a7c, 0x8a75, 0x8a6c, 0x8a6e, 0x8acd, 0x8ae2, 0x8a61, 0x8a9a, 0x8aa5, 0x8a91, 0x8a92, 0x8acf, 0x8ad1, 0x8ac9, 0x8adb, 0x8ad7, 0x8ac2, 0x8ab6, 0x8af6, 0x8aeb, 0x8b14, 0x8b01, 0x8ae4, 0x8aed, 0x8afc, 0x8af3, 0x8ae6, 0x8aee, 0x8ade, 0x8b28, 0x8b9c, 0x8b16, 0x8b1a, 0x8b10, 0x8b2b, 0x8b2d, 0x8b56, 0x8b59, 0x8b4e, 0x8b9e, 0x8b6b, 0x8b96, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9658, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x913a, 0xfffd, 0x9114, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9134, /* 0x5b */ 0xfffd, 0xfffd, 0x90df, 0xfffd, 0xfffd, 0x9136, 0xfffd, 0xfffd, 0x9106, 0x9148, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x82bb, 0xfffd, 0x52f1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5df0, 0xfffd, 0x580a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x58d9, 0xfffd, 0xfffd, 0x58e2, 0xfffd, 0xfffd, 0xfffd, 0x58e0, 0xfffd, 0x58da, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x57e1, 0xfffd, 0xfffd, 0x584f, 0xfffd, 0xfffd, 0x5816, 0xfffd, 0xfffd, 0xfffd, 0x5852, 0x581d, 0x5864, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x5c */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x858c, 0xfffd, 0xfffd, 0x8553, 0xfffd, 0xfffd, 0x85f6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x83a7, 0x8407, 0x84ef, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x82e7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8622, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8526, 0xfffd, 0xfffd, 0x584b, 0x7162, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8558, 0x84fd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x854e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8588, 0xfffd, 0xfffd, 0x85ba, 0xfffd, 0xfffd, 0xfffd, 0x7296, 0x6ece, /* 0x5d */ 0x8541, 0xfffd, 0x85ce, 0x8552, 0x84c0, 0x8452, 0x8464, 0xfffd, 0xfffd, 0x8494, 0x8435, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x859f, 0xfffd, 0xfffd, 0x8555, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9daf, 0x8493, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7e08, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8546, 0xfffd, 0xfffd, 0x8562, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x851e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9a40, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x863a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x93a3, 0x8577, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x861e, 0xfffd, 0x85fa, /* 0x5e */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8604, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x85ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x861a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5969, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5c37, 0xfffd, 0x636b, 0x6476, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x649f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6451, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x645c, 0xfffd, 0xfffd, 0xfffd, 0x64b3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6504, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6516, 0xfffd, 0xfffd, /* 0x5f */ 0xfffd, 0x64f7, 0x64fc, 0xfffd, 0x651b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5630, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5638, 0x56c8, 0xfffd, 0x56a6, 0xfffd, 0xfffd, 0x5504, 0x54bc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5680, 0xfffd, 0xfffd, 0xfffd, 0x565d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5660, 0xfffd, 0xfffd, 0x5635, 0x55f6, 0xfffd, 0xfffd, 0x5666, 0xfffd, 0xfffd, 0xfffd, 0x5672, 0xfffd, 0x568c, 0xfffd, 0xfffd, 0xfffd, 0x5665, 0xfffd, 0xfffd, 0x561c, 0xfffd, 0x562e, 0xfffd, 0xfffd, 0xfffd, 0x55e9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5616, 0xfffd, 0xfffd, 0xfffd, 0x56c0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x60 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x560d, 0x56b3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x56c1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x566f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8f61, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x56b6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5695, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5707, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5e43, 0xfffd, 0xfffd, 0xfffd, 0x5e6c, 0x5e58, 0x5e57, /* 0x61 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5d87, 0xfffd, 0x5cf4, 0xfffd, 0xfffd, 0x5d50, 0xfffd, 0xfffd, 0xfffd, 0x5d2c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5da7, 0xfffd, 0x5da0, 0xfffd, 0xfffd, 0x5d97, 0x5d0d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5db8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5d81, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5dd4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x540e, 0x5fa0, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7377, 0x7341, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x736a, 0xfffd, 0x733b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x736b, 0xfffd, /* 0x62 */ 0xfffd, 0xfffd, 0xfffd, 0x7380, 0xfffd, 0xfffd, 0xfffd, 0x737c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x98e0, 0x9933, 0x98e9, 0x993c, 0x98ea, 0x98eb, 0x98ed, 0x98f4, 0x9909, 0x9911, 0x4f59, 0x991b, 0x9937, 0x993f, 0x9943, 0x9948, 0x9949, 0x994a, 0x994c, 0x9962, 0xfffd, 0x5ee1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ce1, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x61fa, 0x61ae, 0xfffd, 0x616a, 0xfffd, 0xfffd, 0x613e, 0x60b5, 0x6134, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x61cc, 0xfffd, 0x615f, 0x61e8, 0x60fb, 0x6137, 0xfffd, /* 0x63 */ 0xfffd, 0x60f2, 0xfffd, 0xfffd, 0x6173, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x611c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6192, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9582, 0x9586, 0x95c8, 0x958e, 0x9594, 0x958c, 0x95e5, 0x95ad, 0x95ab, 0x9b2e, 0x95ac, 0x95be, 0x95b6, 0x9b29, 0x95bf, 0x95bd, 0x95bc, 0x95c3, 0x95cb, 0x95d4, 0x95d0, 0x95d5, 0x95de, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7043, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6f59, 0xfffd, 0xfffd, 0xfffd, 0x7027, 0x7018, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6ffc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6d87, /* 0x64 */ 0xfffd, 0xfffd, 0xfffd, 0x6d79, 0x6e5e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6fae, 0xfffd, 0xfffd, 0xfffd, 0x700f, 0x6ef8, 0x6f6f, 0xfffd, 0xfffd, 0xfffd, 0x6df6, 0x6f7f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7006, 0xfffd, 0xfffd, 0x6fa0, 0xfffd, 0xfffd, 0xfffd, 0x700b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7067, 0xfffd, 0xfffd, 0x7044, 0xfffd, 0x7005, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6f77, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7020, 0x701f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7032, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7028, /* 0x65 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x705d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9a2b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9087, 0xfffd, 0x9015, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9090, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5c68, 0xfffd, 0x5f33, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5af5, 0x5ad7, 0xfffd, /* 0x66 */ 0xfffd, 0xfffd, 0x5b00, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5a6d, 0x5b08, 0xfffd, 0x5b4c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5aa7, 0x5afb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5b0b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5b21, 0x5b2a, 0xfffd, 0xfffd, 0xfffd, 0x5b19, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x99d4, 0x99df, 0x99d9, 0x9a36, 0x9a5b, 0x99d1, 0x99d8, 0x9a4d, 0x9a4a, 0x99e2, 0x9a6a, 0x9a0f, 0x9a0d, 0x9a05, 0x9a42, 0x9a2d, 0x9a16, 0x9a41, 0x9a2e, 0x9a38, 0x9a43, 0x9a44, 0x9a4f, 0x9a65, 0x9a64, 0x7cf9, 0x7d06, 0x7d02, 0x7d07, 0x7d08, 0x7e8a, /* 0x67 */ 0x7d1c, 0x7d15, 0x7d13, 0x7d3a, 0x7d32, 0x7d31, 0x7e10, 0x7d3c, 0x7d40, 0x7d3f, 0x7d5d, 0x7d4e, 0x7d73, 0x7d86, 0x7d83, 0x7d88, 0x7dbe, 0x7dba, 0x7dcb, 0x7dd4, 0x7dc4, 0x7d9e, 0x7dac, 0x7db9, 0x7da3, 0x7db0, 0x7dc7, 0x7dd9, 0x7dd7, 0x7df9, 0x7df2, 0x7e62, 0x7de6, 0x7df6, 0x7df1, 0x7e0b, 0x7de1, 0x7e09, 0x7e1d, 0x7e1f, 0x7e1e, 0x7e2d, 0x7e0a, 0x7e11, 0x7e7d, 0x7e39, 0x7e35, 0x7e32, 0x7e46, 0x7e45, 0x7e88, 0x7e5a, 0x7e52, 0x7e6e, 0x7e7e, 0x7e70, 0x7e6f, 0x7e98, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x74a3, 0x744b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x74cf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x980a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x74bd, 0x743f, 0x7489, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x68 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x74a6, 0xfffd, 0xfffd, 0xfffd, 0x74d4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x74da, 0xfffd, 0x97d9, 0x97de, 0x97dc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x69aa, 0x6aea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6898, 0xfffd, 0x68d6, 0x6a05, 0x689f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6adb, 0xfffd, 0x6af3, 0xfffd, 0xfffd, 0x6ae8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6adf, 0xfffd, 0x6a89, 0xfffd, 0xfffd, 0x690f, 0x6a48, 0xfffd, 0x6968, 0xfffd, 0x69bf, 0xfffd, 0xfffd, 0xfffd, 0x6a3a, 0xfffd, 0x6a9c, 0xfffd, 0x6b12, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6b1e, 0xfffd, 0xfffd, 0x6add, 0x69e7, 0xfffd, /* 0x69 */ 0x6b0f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6b16, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6aec, 0x6ada, 0xfffd, 0x6af8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6ab3, 0xfffd, 0x6ae7, 0xfffd, 0xfffd, 0x6aa3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6ad3, 0xfffd, 0xfffd, 0xfffd, 0x6ade, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6ba4, 0xfffd, 0x6b9e, 0x6bae, 0xfffd, 0x6bab, 0xfffd, 0x6baf, 0xfffd, 0x8ed4, 0x8edb, 0x8ef2, 0x8efb, 0x8f64, 0x8ef9, 0x8efc, 0x8eeb, 0x8ee4, 0x8f62, 0x8efa, 0x8efe, 0x8f0a, 0x8f07, 0x8f05, 0x8f12, 0x8f26, 0x8f1e, /* 0x6a */ 0x8f1f, 0x8f1c, 0x8f33, 0x8f46, 0x8f54, 0xfffd, 0x6214, 0x6227, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x750c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x66c7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x66c4, 0xfffd, 0xfffd, 0x6689, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x66d6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8cc1, 0x8cb0, 0x8cba, 0x8cbd, 0x8d04, 0x8cb2, 0x8cc5, 0x8d10, 0x8cd1, 0x8cda, 0x8cd5, 0x8ceb, 0x8ce7, 0x8cfb, 0x8998, 0x89ac, 0x89a1, 0x89bf, 0x89a6, 0x89af, 0x89b2, 0x89b7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x6b */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6bff, 0xfffd, 0xfffd, 0x6c0c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6c2c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7258, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6727, 0x8156, 0xfffd, 0x81da, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x811b, 0xfffd, 0xfffd, 0xfffd, 0x81be, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8161, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x81cf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x6c */ 0xfffd, 0xfffd, 0x6b5f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x98ae, 0x98af, 0x98b6, 0x98bc, 0x98c6, 0x98c8, 0xfffd, 0xfffd, 0x8f42, 0xfffd, 0xfffd, 0x9f4f, 0x6595, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x716c, 0x7152, 0xfffd, 0x7197, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x71c1, 0xfffd, 0xfffd, 0xfffd, 0x71dc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x71fe, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x79b0, 0xfffd, 0xfffd, 0x798e, 0xfffd, 0xfffd, 0x79aa, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x6d */ 0x61df, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6164, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x61e3, 0x6207, 0xfffd, 0xfffd, 0xfffd, 0x6fa9, 0xfffd, 0x78ef, 0xfffd, 0x78ad, 0xfffd, 0x7868, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x78b8, 0xfffd, 0xfffd, 0x792a, 0x7931, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7864, 0x78fd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x78e7, 0xfffd, 0xfffd, 0xfffd, 0x78e3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9f95, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7798, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x775e, 0x77bc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x6e */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7f86, 0xfffd, 0xfffd, 0x7f88, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x91d2, 0x91d3, 0x91d4, 0x91d9, 0x91d7, 0x91d5, 0x91f7, 0x91e7, 0x91e4, 0x9346, 0x91f5, 0x91f9, 0x9208, 0x9226, 0x9245, 0x9211, 0x9210, 0x9201, 0x9227, 0x9204, 0x9225, 0x9200, 0x923a, 0x9266, 0x9237, 0x9233, 0x9255, 0x923d, 0x9238, 0x925e, 0x926c, 0x926d, 0x923f, 0x9460, 0x9230, 0x9249, 0x9248, 0x924d, 0x922e, 0x9239, 0x9438, 0x92ac, 0x92a0, 0x927a, 0x92aa, 0x92ee, 0x92cf, 0x9403, 0x92e3, 0x943a, 0x92b1, 0x92a6, 0x93a7, 0x9296, 0x92cc, 0x92a9, 0x93f5, 0x9293, 0x927f, /* 0x6f */ 0x93a9, 0x929a, 0x931a, 0x92ab, 0x9283, 0x940b, 0x92a8, 0x92a3, 0x9412, 0x9338, 0x92f1, 0x93d7, 0x92e5, 0x92f0, 0x92ef, 0x92e8, 0x92bc, 0x92dd, 0x92f6, 0x9426, 0x9427, 0x92c3, 0x92df, 0x92e6, 0x9312, 0x9306, 0x9369, 0x931b, 0x9340, 0x9301, 0x9315, 0x932e, 0x9343, 0x9307, 0x9308, 0x931f, 0x9319, 0x9365, 0x9347, 0x9376, 0x9354, 0x9364, 0x93aa, 0x9370, 0x9384, 0x93e4, 0x93d8, 0x9428, 0x9387, 0x93cc, 0x9398, 0x93b8, 0x93bf, 0x93a6, 0x93b0, 0x93b5, 0x944c, 0x93e2, 0x93dc, 0x93dd, 0x93cd, 0x93de, 0x93c3, 0x93c7, 0x93d1, 0x9414, 0x941d, 0x93f7, 0x9465, 0x9413, 0x946d, 0x9420, 0x9479, 0x93f9, 0x9419, 0x944a, 0x9432, 0x943f, 0x9454, 0x9463, 0x937e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x70 */ 0xfffd, 0xfffd, 0x7a61, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9ce9, 0x9cf6, 0x9d07, 0x9d06, 0x9d23, 0x9d87, 0x9e15, 0x9d1d, 0x9d1f, 0x9de5, 0x9d2f, 0x9dd9, 0x9d30, 0x9d42, 0x9e1e, 0x9d53, 0x9e1d, 0x9d60, 0x9d52, 0x9df3, 0x9d5c, 0x9d61, 0x9d93, 0x9d6a, 0x9d6f, 0x9d89, 0x9d98, 0x9d9a, 0x9dc0, 0x9da5, 0x9da9, 0x9dc2, 0x9dbc, 0x9e1a, 0x9dd3, 0x9dda, 0x9def, 0x9de6, 0x9df2, 0x9df8, 0x9e0c, 0x9dfa, 0x9e1b, 0xfffd, 0xfffd, 0x7664, 0x7658, 0xfffd, 0x7667, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7602, 0xfffd, 0xfffd, 0x7646, 0xfffd, 0xfffd, 0x7647, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7649, 0xfffd, 0x761e, 0xfffd, 0xfffd, 0x763b, 0xfffd, 0xfffd, /* 0x71 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x766d, 0xfffd, 0xfffd, 0x766e, 0xfffd, 0xfffd, 0x7669, 0xfffd, 0xfffd, 0xfffd, 0x7672, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7ac7, 0xfffd, 0xfffd, 0xfffd, 0x7ab6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8960, 0xfffd, 0xfffd, 0xfffd, 0x8933, 0xfffd, 0x895d, 0x8947, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8938, 0xfffd, 0x8964, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x76b8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x802e, 0xfffd, 0xfffd, 0x802c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8079, 0xfffd, 0x8075, 0xfffd, 0xfffd, 0x9807, 0x980e, 0x980f, /* 0x72 */ 0x9821, 0x981c, 0x6f41, 0x9826, 0x9837, 0x984e, 0x9853, 0x9873, 0x9862, 0x9859, 0x9865, 0x986c, 0x9870, 0xfffd, 0xfffd, 0xfffd, 0x87e3, 0x8806, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8706, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8823, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x87f6, 0xfffd, 0xfffd, 0x86fa, 0x87ef, 0xfffd, 0x8784, 0xfffd, 0xfffd, 0xfffd, 0x8810, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x87c8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8811, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x87bb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x87ce, 0xfffd, /* 0x73 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7f4c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7be4, 0xfffd, 0x7b67, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7c69, 0xfffd, 0xfffd, 0x7bf3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7c00, 0x7bcb, 0xfffd, 0xfffd, 0xfffd, 0x7c5c, 0xfffd, 0x7c1e, 0xfffd, 0xfffd, 0x7c2b, 0xfffd, 0x7c23, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7c6a, 0xfffd, /* 0x74 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7c5f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8264, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x826b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x88ca, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7fa5, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7cf2, 0x7cf6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7cdd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7e36, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9ea9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8db2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x75 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x91c5, 0x91c3, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9e7a, 0x8e89, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8e4c, 0xfffd, 0xfffd, 0xfffd, 0x8e92, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8e7a, 0x8e55, 0xfffd, 0x8e9a, 0x8e8b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8e93, 0xfffd, 0xfffd, 0x8e91, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8ea1, 0x8e63, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8eaa, 0xfffd, 0xfffd, 0x8ea6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x89f4, 0xfffd, 0xfffd, /* 0x76 */ 0xfffd, 0xfffd, 0x89f6, 0xfffd, 0xfffd, 0x975a, 0xfffd, 0x9742, 0xfffd, 0xfffd, 0x973d, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9744, 0xfffd, 0xfffd, 0x9f54, 0x9f5f, 0x9f59, 0x9f60, 0x9f5c, 0x9f66, 0x9f6c, 0x9f6a, 0x9f77, 0x9efd, 0x9eff, 0x9f09, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x8b8e, 0xfffd, 0x947e, 0xfffd, 0x93e8, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9b77, 0x9b74, 0x9b81, 0x9b83, 0x9b8e, 0x9c78, 0x7a4c, 0x9b92, 0x9c5f, 0x9b90, 0x9bad, 0x9b9a, 0x9baa, 0x9b9e, 0x9c6d, 0x9bab, 0x9b9d, 0x9c58, 0x9bc1, 0x9c7a, 0x9c31, 0x9c39, 0x9c23, 0x9c37, 0x9bc0, 0x9bca, 0x9bc7, 0x9bfd, 0x9bd6, 0x9bea, 0x9beb, 0x9be1, 0x9be4, 0x9be7, 0x9bdd, 0x9be2, 0x9bf0, 0x9bdb, 0x9bf4, 0x9bd4, 0x9c5d, 0x9c08, 0x9c10, 0x9c0d, 0x9c12, 0x9c09, 0x9bff, 0x9c20, /* 0x77 */ 0x9c32, 0x9c2d, 0x9c28, 0x9c25, 0x9c29, 0x9c33, 0x9c3e, 0x9c48, 0x9c3b, 0x9c35, 0x9c45, 0x9c56, 0x9c54, 0x9c52, 0x9c67, 0xfffd, 0xfffd, 0x97c3, 0x97bd, 0xfffd, 0x97c9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9dbb, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9acf, 0xfffd, 0x9ad6, 0x9ad5, 0xfffd, 0xfffd, 0xfffd, 0x9b58, 0x9b4e, 0xfffd, 0xfffd, 0xfffd, 0x9957, 0x995c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9b22, 0xfffd, 0xfffd, 0x4e48, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x9ef7, 0xfffd, 0xfffd, 0x9ef2, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x78 */ 0x896c, 0x95c6, 0x9336, 0x5f46, 0x8514, 0x7e94, 0x5382, 0x51b2, 0x4e11, 0x9f63, 0x5679, 0x515a, 0x6dc0, 0x9f15, 0x6597, 0x5641, 0x9aee, 0x8303, 0x4e30, 0x8907, 0x5e72, 0x7a40, 0x98b3, 0x5e7f, 0x95a4, 0x9b0d, 0x5212, 0x8ff4, 0x5f59, 0x7a6b, 0x98e2, 0x51e0, 0x50a2, 0x4ef7, 0x8350, 0x8591, 0x5118, 0x636e, 0x6372, 0x524b, 0x5938, 0x774f, 0x8721, 0x814a, 0x7e8d, 0x91cc, 0x66c6, 0x5e18, 0x77ad, 0x9e75, 0x56c9, 0x9ef4, 0x6fdb, 0x61de, 0x77c7, 0x7030, 0x9eb5, 0x884a, 0x95e2, 0x82f9, 0x51ed, 0x6251, 0x4ec6, 0x6734, 0x97c6, 0x7c64, 0x7e34, 0x97a6, 0x9eaf, 0x786e, 0x820d, 0x672f, 0x677e, 0x56cc, 0x53f0, 0x98b1, 0x6aaf, 0x7f4e, 0x6d82, 0x7cf0, 0x4e07, 0x4fc2, 0x7e6b, 0x9e79, 0x56ae, 0x9b1a, 0x846f, 0x53f6, 0x90c1, 0x79a6, 0x7c72, 0x613f, 0x4e91, 0x9ad2, /* 0x79 */ 0x75c7, 0x96bb, 0x53ea, 0x7dfb, 0x88fd, 0x79cd, 0x7843, 0x7b51, 0x51c6, }; static int gb12345ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 == 0x21) || (c1 == 0x26) || (c1 == 0x28) || (c1 >= 0x30 && c1 <= 0x79)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; if (i < 470) { if (i < 12) wc = gb12345ext_2uni_page21[i]; } else if (i < 658) { if (i < 555) wc = gb12345ext_2uni_page26[i-470]; } else if (i < 1410) { if (i < 690) wc = gb12345ext_2uni_page28[i-658]; } else { if (i < 8281) wc = gb12345ext_2uni_page30[i-1410]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short gb12345ext_2charset[2252] = { 0x283d, 0x283e, 0x283f, 0x283b, 0x2840, 0x283c, 0x212c, 0x7871, 0x7829, 0x7833, 0x7761, 0x4252, 0x787d, 0x5147, 0x785f, 0x7842, 0x6245, 0x4034, 0x4258, 0x7872, 0x4f40, 0x5876, 0x4129, 0x3256, 0x3876, 0x4347, 0x4257, 0x4e30, 0x3260, 0x556c, 0x5877, 0x4921, 0x3138, 0x7841, 0x5336, 0x342b, 0x5871, 0x552e, 0x494b, 0x4763, 0x594d, 0x3d76, 0x595d, 0x4748, 0x464d, 0x4e31, 0x3d44, 0x5947, 0x3c5b, 0x5247, 0x592f, 0x525a, 0x3f6b, 0x3c73, 0x594f, 0x5931, 0x592d, 0x7845, 0x3325, 0x5345, 0x3422, 0x5933, 0x5950, 0x594e, 0x5932, 0x3679, 0x782c, 0x413d, 0x7828, 0x7929, 0x3633, 0x7840, 0x785d, 0x3f2d, 0x783b, 0x5859, 0x5472, 0x7848, 0x3855, 0x3950, 0x585c, 0x3434, 0x3b2e, 0x3e67, 0x4175, 0x3974, 0x585b, 0x3d23, 0x3c41, 0x3e22, 0x362f, 0x4e71, 0x512b, 0x4a24, 0x404d, 0x4a46, 0x5b3d, 0x4078, 0x4830, 0x5850, 0x3b63, 0x5851, 0x4778, 0x502d, 0x7827, 0x5847, 0x325e, 0x5161, 0x4077, 0x5849, 0x324e, 0x3454, 0x7923, 0x786b, 0x7878, 0x6161, 0x5f43, 0x5431, 0x5f42, 0x4e4a, 0x4674, 0x5146, 0x4925, 0x4747, 0x3525, 0x5334, 0x473a, 0x5844, 0x4270, 0x4e58, 0x5f6f, 0x5f59, 0x4c3e, 0x6036, 0x453b, 0x5f75, 0x3322, 0x5f69, 0x3b29, 0x5f6b, 0x5025, 0x5f34, 0x5f58, 0x5f3c, 0x7830, 0x5f50, 0x5f55, 0x5f66, 0x5f5c, 0x6048, 0x5f60, 0x4567, 0x3656, 0x782b, 0x5f4c, 0x4f45, 0x5f62, 0x6060, 0x4476, 0x5f3f, 0x417c, 0x7875, 0x6037, 0x514f, 0x6053, 0x5f79, 0x603f, 0x4f79, 0x5966, 0x5f3d, 0x7853, 0x786a, 0x5676, 0x6070, 0x397a, 0x4e27, 0x5430, 0x5432, 0x4d3c, 0x4d45, 0x5b6b, 0x5634, 0x3c61, 0x5b51, 0x5b71, 0x5b76, 0x5222, 0x3128, 0x3321, 0x3f69, 0x5c63, 0x5b6e, 0x5b75, 0x4d3f, 0x4e6b, 0x5b77, 0x333e, 0x4735, 0x3566, 0x5739, 0x3669, 0x3758, 0x473d, 0x3f51, 0x4c33, 0x5139, 0x405d, 0x5b5b, 0x5b64, 0x3b35, 0x4222, 0x5b62, 0x5b5e, 0x3053, 0x5733, 0x3a78, 0x4a59, 0x434e, 0x7849, 0x3c50, 0x5e46, 0x3661, 0x3d31, 0x375c, 0x5731, 0x4226, 0x383e, 0x662b, 0x6634, 0x4268, 0x657d, 0x657c, 0x6635, 0x6623, 0x662c, 0x663f, 0x3d3f, 0x664d, 0x6648, 0x6649, 0x5324, 0x4974, 0x662e, 0x4b6f, 0x5127, 0x424f, 0x475e, 0x4a35, 0x447e, 0x4973, 0x5034, 0x3f6d, 0x3368, 0x3126, 0x3d2b, 0x5728, 0x5130, 0x3654, 0x353c, 0x5e4f, 0x4245, 0x3263, 0x6570, 0x4a74, 0x3854, 0x612d, 0x353a, 0x4f3f, 0x6141, 0x385a, 0x6134, 0x6130, 0x6150, 0x5538, 0x612b, 0x6140, 0x613d, 0x613b, 0x6149, 0x416b, 0x536c, 0x3f79, 0x424d, 0x615b, 0x5b4f, 0x7850, 0x4b27, 0x4a26, 0x554a, 0x3478, 0x5621, 0x6078, 0x607e, 0x607d, 0x5644, 0x3152, 0x306f, 0x607c, 0x7835, 0x3849, 0x3c38, 0x7838, 0x3f62, 0x436d, 0x3327, 0x6250, 0x374f, 0x3963, 0x422e, 0x4c7c, 0x6572, 0x5545, 0x7824, 0x352f, 0x4356, 0x4d64, 0x783d, 0x3a73, 0x3e36, 0x3453, 0x6162, 0x3834, 0x3339, 0x626a, 0x4346, 0x3671, 0x4455, 0x6322, 0x627c, 0x302e, 0x632b, 0x626b, 0x627d, 0x6269, 0x787c, 0x4c2c, 0x3252, 0x3251, 0x627a, 0x395f, 0x6d28, 0x6266, 0x4b4b, 0x4247, 0x6325, 0x476c, 0x5347, 0x3139, 0x412f, 0x463e, 0x6334, 0x352c, 0x375f, 0x4375, 0x6264, 0x4f5c, 0x5264, 0x3f52, 0x5326, 0x6278, 0x7856, 0x6d21, 0x6d2f, 0x627b, 0x334d, 0x4041, 0x3b33, 0x507c, 0x6263, 0x3e65, 0x4965, 0x4135, 0x6d30, 0x6a27, 0x6a28, 0x553d, 0x4f37, 0x785e, 0x502e, 0x4961, 0x5e51, 0x7846, 0x7847, 0x4928, 0x4255, 0x3c70, 0x516f, 0x3b53, 0x4b70, 0x3537, 0x4740, 0x5e62, 0x5e68, 0x4227, 0x563f, 0x3f59, 0x5e52, 0x3274, 0x404c, 0x4453, 0x5e58, 0x3527, 0x3226, 0x3827, 0x464b, 0x5e6c, 0x4c22, 0x4e4e, 0x3c71, 0x5335, 0x4230, 0x5471, 0x3b77, 0x3532, 0x3523, 0x3e5d, 0x3c37, 0x4462, 0x3177, 0x4521, 0x3869, 0x5640, 0x4029, 0x5f22, 0x305a, 0x4b53, 0x5f23, 0x4845, 0x5e73, 0x446c, 0x4223, 0x4039, 0x5e7c, 0x3273, 0x5f25, 0x4963, 0x545c, 0x424e, 0x4c2f, 0x3d41, 0x403f, 0x305c, 0x3550, 0x4a7d, 0x4132, 0x3150, 0x6c35, 0x782f, 0x5536, 0x364f, 0x4a31, 0x5667, 0x544e, 0x6a4d, 0x3329, 0x545d, 0x6a4a, 0x784f, 0x6a3c, 0x4f7e, 0x6a53, 0x3f75, 0x4939, 0x4a69, 0x3b61, 0x6b4a, 0x7868, 0x7860, 0x362b, 0x7869, 0x6845, 0x4c75, 0x6849, 0x6847, 0x5466, 0x3630, 0x553b, 0x6862, 0x516e, 0x3763, 0x6865, 0x5235, 0x3c2b, 0x683f, 0x4859, 0x6867, 0x3939, 0x4739, 0x687d, 0x3d30, 0x572e, 0x4056, 0x6848, 0x4225, 0x316a, 0x4a60, 0x5179, 0x4653, 0x4a77, 0x686b, 0x6863, 0x4745, 0x3b7a, 0x4d56, 0x685f, 0x3535, 0x686d, 0x3c6c, 0x6949, 0x786d, 0x6944, 0x447b, 0x3c77, 0x3971, 0x6956, 0x6935, 0x684e, 0x687c, 0x695a, 0x685d, 0x6946, 0x6853, 0x6840, 0x6934, 0x6850, 0x6937, 0x5323, 0x4038, 0x4828, 0x6921, 0x686f, 0x692d, 0x6879, 0x4755, 0x4537, 0x6c23, 0x3b36, 0x4b6a, 0x407a, 0x3969, 0x3250, 0x6966, 0x6964, 0x6969, 0x6967, 0x696b, 0x3c5f, 0x4931, 0x3f47, 0x4539, 0x6b27, 0x5531, 0x6b2a, 0x4678, 0x4762, 0x6b32, 0x6424, 0x786f, 0x637e, 0x782d, 0x4259, 0x5428, 0x6435, 0x4733, 0x4e50, 0x3262, 0x3b6b, 0x6425, 0x4c40, 0x573c, 0x3935, 0x3257, 0x4370, 0x3553, 0x5c7e, 0x3b26, 0x564d, 0x4978, 0x4231, 0x6430, 0x427a, 0x5366, 0x453d, 0x3a3a, 0x4130, 0x5755, 0x5547, 0x3d25, 0x3d2c, 0x7223, 0x4643, 0x3d60, 0x636d, 0x4873, 0x6431, 0x4023, 0x6464, 0x6436, 0x492c, 0x3d3d, 0x4054, 0x3d27, 0x6445, 0x5473, 0x6d34, 0x642b, 0x356d, 0x5747, 0x4528, 0x4a2a, 0x4522, 0x7855, 0x3c43, 0x4c4e, 0x4044, 0x4e2b, 0x3175, 0x3d26, 0x6378, 0x424b, 0x645e, 0x6442, 0x503a, 0x6449, 0x642f, 0x3174, 0x6372, 0x4124, 0x646c, 0x646b, 0x6371, 0x647e, 0x7858, 0x6472, 0x403d, 0x6363, 0x645c, 0x4877, 0x406c, 0x4c32, 0x6530, 0x4d65, 0x4250, 0x6459, 0x4e5a, 0x4c7e, 0x4e5e, 0x4136, 0x6c3f, 0x5c64, 0x3733, 0x6c3e, 0x532b, 0x6c41, 0x4848, 0x3363, 0x6c47, 0x3546, 0x4955, 0x4c4c, 0x6c4b, 0x532a, 0x3253, 0x5672, 0x3b62, 0x3d7d, 0x6c62, 0x4b38, 0x422f, 0x4043, 0x4e2a, 0x522f, 0x367b, 0x6b39, 0x4723, 0x5c7d, 0x363f, 0x4e7e, 0x5734, 0x4f41, 0x3137, 0x534c, 0x6178, 0x616f, 0x537c, 0x4a28, 0x3640, 0x6176, 0x617d, 0x447c, 0x3b71, 0x4154, 0x616e, 0x4a5e, 0x4c21, 0x4f57, 0x6228, 0x6224, 0x4f56, 0x6775, 0x6762, 0x4b76, 0x5328, 0x426a, 0x6776, 0x6761, 0x6828, 0x3b37, 0x6774, 0x476d, 0x6767, 0x682c, 0x6836, 0x6a31, 0x327a, 0x4436, 0x314f, 0x3b2d, 0x3531, 0x336b, 0x7921, 0x3e37, 0x7069, 0x3768, 0x5171, 0x7079, 0x342f, 0x4531, 0x707c, 0x4146, 0x706c, 0x706f, 0x7077, 0x705d, 0x3171, 0x5177, 0x705c, 0x5622, 0x705f, 0x712e, 0x5122, 0x7128, 0x712b, 0x5338, 0x4c31, 0x7132, 0x3722, 0x3028, 0x7164, 0x5665, 0x5535, 0x3e21, 0x3c60, 0x454c, 0x422c, 0x784a, 0x6d79, 0x6d6e, 0x4277, 0x7851, 0x6d7a, 0x7857, 0x5675, 0x3d43, 0x7927, 0x6d4c, 0x6d3a, 0x7866, 0x5162, 0x4b36, 0x6d38, 0x6d3f, 0x4837, 0x426b, 0x5729, 0x6d57, 0x6d53, 0x6d36, 0x6d4d, 0x3421, 0x302d, 0x3f73, 0x6d42, 0x4079, 0x372f, 0x6d43, 0x3b76, 0x6c75, 0x787a, 0x6c78, 0x4071, 0x6c72, 0x353b, 0x7926, 0x5656, 0x3346, 0x7836, 0x7655, 0x3b7d, 0x5331, 0x7023, 0x3b60, 0x4e48, 0x783e, 0x4e51, 0x4d5d, 0x476e, 0x7140, 0x3f7a, 0x345c, 0x474f, 0x713c, 0x546e, 0x4754, 0x4a7a, 0x3e3a, 0x314a, 0x7928, 0x7348, 0x3c63, 0x3d5a, 0x3736, 0x567e, 0x7366, 0x7346, 0x4938, 0x7359, 0x7365, 0x4228, 0x736c, 0x3c72, 0x7371, 0x736f, 0x4729, 0x4131, 0x403a, 0x336f, 0x736a, 0x7425, 0x417d, 0x7862, 0x7356, 0x737d, 0x4069, 0x4261, 0x787b, 0x7456, 0x3760, 0x4138, 0x7870, 0x744f, 0x5961, 0x7450, 0x6679, 0x3e40, 0x3c4d, 0x667b, 0x543c, 0x3a6c, 0x667a, 0x667c, 0x667d, 0x4852, 0x4e46, 0x4449, 0x4526, 0x6723, 0x343f, 0x6722, 0x4934, 0x563d, 0x3c36, 0x3757, 0x6721, 0x3744, 0x4f38, 0x6726, 0x6725, 0x4970, 0x495c, 0x6724, 0x6728, 0x672a, 0x6729, 0x5655, 0x5769, 0x306d, 0x672c, 0x3d61, 0x672b, 0x3d4a, 0x4267, 0x5124, 0x3878, 0x485e, 0x4d33, 0x4b3f, 0x672d, 0x3e78, 0x3e6e, 0x3073, 0x672f, 0x672e, 0x6730, 0x5065, 0x4b67, 0x3e2d, 0x575b, 0x6736, 0x3371, 0x6739, 0x4f5f, 0x6737, 0x4e2c, 0x673a, 0x3859, 0x4d78, 0x3141, 0x573a, 0x425a, 0x6738, 0x6732, 0x5540, 0x3442, 0x6731, 0x4360, 0x6735, 0x673b, 0x3d74, 0x6733, 0x424c, 0x5077, 0x6734, 0x673d, 0x3c6a, 0x673c, 0x3c29, 0x3650, 0x355e, 0x6745, 0x5435, 0x6741, 0x3160, 0x3b3a, 0x4365, 0x4e33, 0x6743, 0x673f, 0x4137, 0x6742, 0x673e, 0x7924, 0x5d53, 0x6746, 0x674b, 0x6744, 0x6727, 0x674c, 0x383f, 0x6747, 0x6749, 0x6748, 0x4f58, 0x4c50, 0x376c, 0x674a, 0x4b75, 0x575d, 0x6750, 0x7863, 0x674f, 0x746a, 0x4246, 0x674e, 0x575c, 0x3c28, 0x6752, 0x6751, 0x6755, 0x562f, 0x4949, 0x6754, 0x4846, 0x6740, 0x497e, 0x3b66, 0x7873, 0x3c6b, 0x6756, 0x6759, 0x6758, 0x3d49, 0x526f, 0x3c4c, 0x674d, 0x6757, 0x6753, 0x667e, 0x5078, 0x784d, 0x3278, 0x5327, 0x7826, 0x4f4b, 0x675a, 0x4042, 0x733f, 0x786e, 0x3723, 0x3055, 0x425e, 0x6e3c, 0x6e3f, 0x7447, 0x5265, 0x4f30, 0x474c, 0x716f, 0x716c, 0x4a25, 0x4e45, 0x412a, 0x344f, 0x4979, 0x4b4a, 0x7179, 0x4474, 0x5630, 0x7177, 0x4c7d, 0x417b, 0x4b60, 0x5032, 0x6b56, 0x554d, 0x784c, 0x4976, 0x6b4b, 0x6b61, 0x4454, 0x5657, 0x3326, 0x3774, 0x3d3a, 0x4465, 0x3528, 0x6b5a, 0x4527, 0x4133, 0x466a, 0x6b77, 0x4030, 0x6b4d, 0x5460, 0x5975, 0x4159, 0x4c28, 0x536b, 0x504b, 0x3e59, 0x3e49, 0x7867, 0x3255, 0x742f, 0x3d22, 0x7435, 0x3c68, 0x515e, 0x5b3b, 0x5c51, 0x785c, 0x7832, 0x7843, 0x572f, 0x3e25, 0x3c54, 0x5c48, 0x3b2a, 0x5c49, 0x4033, 0x4d72, 0x5d2b, 0x5236, 0x5d26, 0x5d27, 0x4e2d, 0x7877, 0x3b67, 0x5d3b, 0x5d2a, 0x3254, 0x5d25, 0x3847, 0x412b, 0x5c4a, 0x5c6a, 0x7825, 0x5d64, 0x3d2f, 0x5c60, 0x5271, 0x5d21, 0x5d5b, 0x5c71, 0x5d24, 0x5c3f, 0x5d35, 0x5c69, 0x5d5e, 0x3534, 0x4e5f, 0x4f74, 0x5d77, 0x5c76, 0x3c3b, 0x5c3c, 0x7844, 0x473e, 0x5d32, 0x3c76, 0x4878, 0x5c79, 0x4036, 0x5d23, 0x5255, 0x5229, 0x5e34, 0x544c, 0x5c42, 0x302a, 0x5d7e, 0x5e2d, 0x422b, 0x4b55, 0x463b, 0x5e3a, 0x5d7c, 0x5c57, 0x403c, 0x5d71, 0x425c, 0x3426, 0x4232, 0x3a45, 0x3f77, 0x724c, 0x7239, 0x784b, 0x4a34, 0x4f3a, 0x4e4f, 0x724f, 0x426c, 0x5329, 0x7277, 0x555d, 0x7265, 0x727d, 0x7231, 0x3275, 0x724d, 0x3366, 0x7249, 0x524f, 0x532c, 0x7232, 0x7253, 0x726e, 0x402f, 0x7243, 0x3946, 0x324f, 0x4279, 0x565a, 0x785a, 0x4a75, 0x4e40, 0x3365, 0x563b, 0x7441, 0x406f, 0x3239, 0x5730, 0x7925, 0x7834, 0x3f63, 0x714d, 0x715a, 0x5974, 0x7150, 0x3040, 0x714f, 0x7149, 0x715c, 0x4d60, 0x7821, 0x3344, 0x4f2e, 0x3c7b, 0x3966, 0x4359, 0x4a53, 0x6a68, 0x6a6a, 0x6a6c, 0x4757, 0x6a69, 0x6a6d, 0x6a6e, 0x6a6f, 0x3e75, 0x4040, 0x6a6b, 0x395b, 0x757c, 0x7623, 0x3425, 0x5a25, 0x3629, 0x383c, 0x3c46, 0x5136, 0x5a27, 0x4c56, 0x5a26, 0x5135, 0x5a28, 0x467d, 0x3c47, 0x366f, 0x5148, 0x4b4f, 0x3e77, 0x5a2b, 0x3743, 0x4968, 0x506d, 0x4b5f, 0x5a2d, 0x556f, 0x5a2c, 0x5a2e, 0x5a2a, 0x5529, 0x5a31, 0x5a2f, 0x4640, 0x5a30, 0x5767, 0x344a, 0x5a3c, 0x512f, 0x5268, 0x4a54, 0x4a2b, 0x326f, 0x5a38, 0x396e, 0x5a39, 0x5a35, 0x3b30, 0x3843, 0x4f6a, 0x5a37, 0x5a36, 0x5a34, 0x5a33, 0x566f, 0x5a32, 0x3f64, 0x484f, 0x5a3f, 0x5a40, 0x352e, 0x5355, 0x5a3d, 0x536f, 0x334f, 0x3d6b, 0x4e5c, 0x4e73, 0x5a3e, 0x4b50, 0x3b65, 0x4b35, 0x4b2d, 0x3f4e, 0x5a47, 0x374c, 0x526a, 0x3577, 0x5a46, 0x573b, 0x4c38, 0x5a43, 0x476b, 0x5a3a, 0x5a41, 0x5a42, 0x4142, 0x425b, 0x5a45, 0x5a44, 0x357d, 0x5a52, 0x5a3b, 0x5a4c, 0x5a50, 0x5033, 0x5a49, 0x5a4d, 0x5a51, 0x3b64, 0x5a4f, 0x5a48, 0x376d, 0x566e, 0x5168, 0x5a4e, 0x4535, 0x4431, 0x5a4b, 0x4e3d, 0x4c5c, 0x565f, 0x3b51, 0x4355, 0x5a57, 0x5a4a, 0x5a55, 0x3079, 0x472b, 0x5a56, 0x3d32, 0x503b, 0x5225, 0x5a53, 0x5a58, 0x437d, 0x5a59, 0x5a29, 0x3d77, 0x4321, 0x5624, 0x5a5c, 0x3c25, 0x5a5a, 0x4a36, 0x5a5b, 0x4c37, 0x4657, 0x5a5e, 0x526b, 0x5269, 0x4734, 0x3b24, 0x537e, 0x3641, 0x3164, 0x7645, 0x3277, 0x4843, 0x403e, 0x5a5f, 0x5a54, 0x5a5d, 0x4671, 0x3761, 0x3134, 0x556a, 0x383a, 0x3246, 0x3931, 0x4636, 0x3b75, 0x3737, 0x4c30, 0x3961, 0x5470, 0x567c, 0x6a5b, 0x6a5f, 0x3721, 0x3973, 0x3161, 0x4272, 0x347b, 0x6a5c, 0x3751, 0x4c79, 0x6a5d, 0x4333, 0x3a58, 0x6a5a, 0x4238, 0x415e, 0x3b5f, 0x6a60, 0x574a, 0x3c56, 0x5474, 0x6a62, 0x495e, 0x3176, 0x6a64, 0x6a63, 0x344d, 0x494d, 0x4562, 0x6259, 0x4f4d, 0x4274, 0x3c7a, 0x3833, 0x6a66, 0x564a, 0x6a65, 0x554b, 0x3644, 0x4035, 0x572c, 0x6a67, 0x393a, 0x487c, 0x5853, 0x6a5e, 0x5738, 0x5479, 0x545e, 0x584d, 0x4944, 0x532e, 0x6a61, 0x4a6a, 0x3853, 0x545f, 0x384f, 0x5554, 0x4777, 0x7475, 0x3c79, 0x533b, 0x7544, 0x754f, 0x7567, 0x754e, 0x753b, 0x336c, 0x7552, 0x543e, 0x755c, 0x7548, 0x7559, 0x7551, 0x7566, 0x345a, 0x7572, 0x756f, 0x477b, 0x3335, 0x547e, 0x396c, 0x3e7c, 0x5079, 0x696d, 0x696e, 0x486d, 0x6975, 0x6974, 0x696f, 0x5661, 0x6972, 0x6977, 0x6970, 0x6973, 0x6978, 0x3d4f, 0x697b, 0x697a, 0x5458, 0x6979, 0x697c, 0x3828, 0x4761, 0x413e, 0x6a22, 0x3b54, 0x697e, 0x6a21, 0x3975, 0x697d, 0x3132, 0x4256, 0x3c2d, 0x6a23, 0x4a64, 0x3778, 0x5537, 0x535f, 0x6c31, 0x4f3d, 0x542f, 0x6a24, 0x572a, 0x555e, 0x3d4e, 0x6a25, 0x3a64, 0x604e, 0x6976, 0x6971, 0x306c, 0x3447, 0x3168, 0x3167, 0x4529, 0x783c, 0x6549, 0x5562, 0x412c, 0x3d78, 0x544b, 0x397d, 0x346f, 0x4e25, 0x5137, 0x355d, 0x5436, 0x4a4a, 0x3359, 0x4728, 0x5121, 0x5245, 0x4149, 0x4275, 0x3b39, 0x6547, 0x315f, 0x425f, 0x654e, 0x7879, 0x5b23, 0x534a, 0x5b29, 0x4f67, 0x575e, 0x5a79, 0x5447, 0x354b, 0x5623, 0x415a, 0x3526, 0x5a7e, 0x5b26, 0x5a77, 0x5b2a, 0x544d, 0x3373, 0x523d, 0x3d34, 0x4470, 0x5046, 0x7527, 0x7526, 0x4a4d, 0x784e, 0x6e44, 0x6e45, 0x6e46, 0x6e49, 0x6e48, 0x3624, 0x6e47, 0x556b, 0x3576, 0x6e4c, 0x6e4b, 0x3730, 0x6e4e, 0x6e4a, 0x6e4f, 0x4725, 0x6e59, 0x6e55, 0x6e57, 0x6e50, 0x4446, 0x365b, 0x3933, 0x6e54, 0x6e53, 0x332e, 0x4525, 0x3e7b, 0x3846, 0x6e58, 0x6e51, 0x6e56, 0x6e6a, 0x6e66, 0x6e5d, 0x4165, 0x6e5c, 0x6e60, 0x6e6b, 0x6e5a, 0x6e5f, 0x534b, 0x6e64, 0x3c58, 0x6e52, 0x6e68, 0x6e67, 0x6e69, 0x322c, 0x6e5e, 0x472f, 0x432d, 0x4726, 0x6e61, 0x3227, 0x6e5b, 0x6e62, 0x6e63, 0x3d42, 0x6e6f, 0x3875, 0x6e7e, 0x5278, 0x6f25, 0x4d2d, 0x4f33, 0x6e7d, 0x6e79, 0x437a, 0x6f22, 0x4f4e, 0x6e6e, 0x6f28, 0x523f, 0x6e77, 0x6f27, 0x6e7b, 0x6e70, 0x6f24, 0x6e6d, 0x6e76, 0x4f7a, 0x5062, 0x4c60, 0x6f31, 0x4241, 0x6f36, 0x503f, 0x3135, 0x6e7a, 0x6e72, 0x3766, 0x6f32, 0x6f37, 0x6e74, 0x337a, 0x6f2d, 0x6f38, 0x6f30, 0x464c, 0x4871, 0x6e71, 0x6f2f, 0x6f2e, 0x6f2b, 0x6f33, 0x3e62, 0x3856, 0x6f3e, 0x6f3a, 0x6f42, 0x6f43, 0x5736, 0x6f39, 0x6f3f, 0x3438, 0x6f45, 0x6f23, 0x6f3c, 0x6f44, 0x3627, 0x472e, 0x3d75, 0x432a, 0x4e7d, 0x6f40, 0x346d, 0x423c, 0x434c, 0x7823, 0x6f2a, 0x6f3d, 0x4f47, 0x6f41, 0x6e4d, 0x6f47, 0x3978, 0x3646, 0x6f49, 0x5521, 0x364d, 0x6f4a, 0x6f46, 0x6f3b, 0x4742, 0x6f4c, 0x3c7c, 0x6f48, 0x5560, 0x6f71, 0x433e, 0x6f4d, 0x6f51, 0x3077, 0x4b78, 0x6f53, 0x4e59, 0x5d76, 0x6f56, 0x6e78, 0x6f21, 0x6f4b, 0x3864, 0x5572, 0x6f57, 0x4478, 0x6f58, 0x6f54, 0x6f55, 0x6f5f, 0x6f60, 0x4134, 0x6f52, 0x6f5d, 0x6f61, 0x6f2c, 0x6f4f, 0x6f5b, 0x6f5c, 0x6f5e, 0x3279, 0x3e35, 0x6f5a, 0x6f4e, 0x7649, 0x6e7c, 0x6f64, 0x6f6a, 0x6e73, 0x6f26, 0x414d, 0x6f29, 0x6f66, 0x6f62, 0x5653, 0x6f6b, 0x6f63, 0x6f68, 0x6f34, 0x6f35, 0x6f50, 0x412d, 0x6f6d, 0x4058, 0x4c7a, 0x6e6c, 0x6e75, 0x6f6e, 0x567d, 0x6f6c, 0x6f59, 0x3c78, 0x6f6f, 0x6e65, 0x6f70, 0x6f65, 0x6f67, 0x543f, 0x4f62, 0x4477, 0x6f69, 0x4260, 0x576a, 0x7647, 0x5464, 0x3324, 0x4345, 0x6345, 0x4941, 0x6346, 0x3155, 0x3f2a, 0x634a, 0x6348, 0x4872, 0x4f50, 0x3c64, 0x6349, 0x5522, 0x3a52, 0x3873, 0x7839, 0x3727, 0x396b, 0x4376, 0x634d, 0x634f, 0x634c, 0x5444, 0x6351, 0x514b, 0x5156, 0x6355, 0x6354, 0x6350, 0x6353, 0x6356, 0x7822, 0x6347, 0x402b, 0x6357, 0x403b, 0x6359, 0x6358, 0x635a, 0x3433, 0x3958, 0x635b, 0x327b, 0x785b, 0x634b, 0x5a6a, 0x4942, 0x5573, 0x5275, 0x3342, 0x423d, 0x5174, 0x3653, 0x3d57, 0x5449, 0x3c4a, 0x4b66, 0x4f55, 0x527e, 0x4224, 0x4125, 0x7922, 0x4b64, 0x4b2b, 0x337b, 0x5453, 0x406b, 0x4451, 0x5446, 0x3567, 0x4e6d, 0x762b, 0x7628, 0x7630, 0x4169, 0x7626, 0x584c, 0x392e, 0x7864, 0x7733, 0x7732, 0x7861, 0x7735, 0x4e24, 0x484d, 0x3a2b, 0x6838, 0x683a, 0x6839, 0x4f6c, 0x5233, 0x3625, 0x476a, 0x4f6e, 0x4b33, 0x717c, 0x506b, 0x676f, 0x4b4c, 0x717d, 0x717e, 0x5424, 0x4d67, 0x3064, 0x3659, 0x4644, 0x416c, 0x7222, 0x7221, 0x5243, 0x7224, 0x4d37, 0x3c55, 0x7225, 0x3e31, 0x4635, 0x4d47, 0x3f45, 0x4c62, 0x366e, 0x7226, 0x7227, 0x5155, 0x5438, 0x722a, 0x355f, 0x4060, 0x7229, 0x722b, 0x394b, 0x327c, 0x722c, 0x4f54, 0x722d, 0x422d, 0x7228, 0x4827, 0x3767, 0x6c29, 0x6c2a, 0x786c, 0x7837, 0x6c2b, 0x6c2c, 0x462e, 0x6c2d, 0x6c2e, 0x3749, 0x623b, 0x783f, 0x623d, 0x623f, 0x6240, 0x6241, 0x3739, 0x527b, 0x6242, 0x4b47, 0x3125, 0x4a4e, 0x3d48, 0x317d, 0x6243, 0x5178, 0x367c, 0x6244, 0x4459, 0x3676, 0x5360, 0x6246, 0x3d24, 0x4f5a, 0x395d, 0x623c, 0x6247, 0x623e, 0x4173, 0x6248, 0x6249, 0x4278, 0x624a, 0x624b, 0x624c, 0x4021, 0x624d, 0x3c22, 0x4844, 0x774f, 0x7750, 0x3276, 0x624e, 0x426d, 0x5426, 0x376b, 0x4d54, 0x335b, 0x5131, 0x3235, 0x5724, 0x6665, 0x3e54, 0x6660, 0x3c5d, 0x6666, 0x6662, 0x4a3b, 0x4d55, 0x6661, 0x426e, 0x6669, 0x3a27, 0x4266, 0x3f25, 0x3352, 0x666d, 0x666c, 0x466f, 0x666b, 0x6670, 0x462d, 0x6539, 0x666f, 0x6672, 0x4c5a, 0x6663, 0x4927, 0x6673, 0x4262, 0x5d6b, 0x6671, 0x666e, 0x6674, 0x6675, 0x477d, 0x6668, 0x6667, 0x6676, 0x3d3e, 0x5169, 0x3e2a, 0x6664, 0x5668, 0x423f, 0x6678, 0x6677, 0x666a, 0x3039, 0x7743, 0x787e, 0x4c65, 0x7746, 0x7745, 0x7831, 0x4b49, 0x783a, 0x7876, 0x775e, 0x3637, 0x4456, 0x6352, 0x634e, 0x5374, 0x774b, 0x774a, 0x5363, 0x4233, 0x7650, 0x764f, 0x7651, 0x7652, 0x7653, 0x7658, 0x312b, 0x7656, 0x765a, 0x765f, 0x765c, 0x765b, 0x765e, 0x7659, 0x4f4a, 0x7667, 0x7661, 0x7669, 0x4070, 0x7668, 0x7676, 0x766b, 0x7674, 0x7671, 0x766e, 0x7672, 0x766f, 0x7670, 0x3e28, 0x766c, 0x766d, 0x7673, 0x7675, 0x766a, 0x767d, 0x7678, 0x767c, 0x767a, 0x7679, 0x767b, 0x487a, 0x767e, 0x7665, 0x7724, 0x7723, 0x7725, 0x7722, 0x7663, 0x7721, 0x7726, 0x772a, 0x7666, 0x7664, 0x7729, 0x7727, 0x772b, 0x7728, 0x316e, 0x772e, 0x772d, 0x772c, 0x415b, 0x7660, 0x7677, 0x7657, 0x772f, 0x765d, 0x7654, 0x7662, 0x4471, 0x702f, 0x596c, 0x376f, 0x4379, 0x7030, 0x7032, 0x7031, 0x513b, 0x4d52, 0x5427, 0x7036, 0x7037, 0x7033, 0x516c, 0x513c, 0x7039, 0x703b, 0x3a68, 0x386b, 0x703c, 0x3e69, 0x7041, 0x703e, 0x7043, 0x366c, 0x7040, 0x7044, 0x7046, 0x4574, 0x7047, 0x4835, 0x7034, 0x7048, 0x7045, 0x7049, 0x704a, 0x704c, 0x704d, 0x5d3a, 0x3a57, 0x773d, 0x704f, 0x704b, 0x704e, 0x3c26, 0x7051, 0x4538, 0x703a, 0x7052, 0x7038, 0x7054, 0x7053, 0x7055, 0x7042, 0x7056, 0x5325, 0x7058, 0x7057, 0x7035, 0x7050, 0x7059, 0x703f, 0x703d, 0x7852, 0x7874, 0x753a, 0x3c6f, 0x514e, 0x4076, 0x4273, 0x746f, 0x7865, 0x7859, 0x4334, 0x5964, 0x3563, 0x3533, 0x7775, 0x7854, 0x7772, 0x763c, 0x763d, 0x763e, 0x782e, 0x466b, 0x552b, 0x6c34, 0x335d, 0x7633, 0x7635, 0x7637, 0x7634, 0x7636, 0x4164, 0x782a, 0x7638, 0x763a, 0x7639, 0x4823, 0x763b, 0x417a, 0x4553, 0x3928, 0x6d68, 0x396a, 0x2672, 0x2674, 0x2675, 0x2660, 0x2661, 0x2670, 0x2671, 0x2662, 0x2663, 0x266e, 0x266f, 0x2666, 0x2667, 0x2664, 0x2665, 0x2668, 0x2669, 0x266a, 0x266b, }; static const Summary16 gb12345ext_uni2indx_page01[23] = { /* 0x0100 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0110 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0000 }, { 2, 0x0200 }, /* 0x0200 */ { 3, 0x0000 }, { 3, 0x0000 }, { 3, 0x0000 }, { 3, 0x0000 }, { 3, 0x0000 }, { 3, 0x0002 }, { 4, 0x0002 }, }; static const Summary16 gb12345ext_uni2indx_page1e[4] = { /* 0x1e00 */ { 5, 0x0000 }, { 5, 0x0000 }, { 5, 0x0000 }, { 5, 0x8000 }, }; static const Summary16 gb12345ext_uni2indx_page22[3] = { /* 0x2200 */ { 6, 0x0000 }, { 6, 0x0000 }, { 6, 0x0020 }, }; static const Summary16 gb12345ext_uni2indx_page4e[1306] = { /* 0x4e00 */ { 7, 0x0080 }, { 8, 0x0002 }, { 9, 0x0000 }, { 9, 0x0001 }, { 10, 0x0100 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0004 }, { 12, 0x4002 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0040 }, { 15, 0x0000 }, { 15, 0x0000 }, { 15, 0x0080 }, /* 0x4f00 */ { 16, 0x0000 }, { 16, 0x0000 }, { 16, 0x0000 }, { 16, 0x0000 }, { 16, 0x0000 }, { 16, 0x0200 }, { 17, 0x0000 }, { 17, 0x0000 }, { 17, 0x0040 }, { 18, 0x0040 }, { 19, 0x0000 }, { 19, 0x0000 }, { 19, 0x0004 }, { 20, 0x0000 }, { 20, 0x0001 }, { 21, 0x0000 }, /* 0x5000 */ { 21, 0x0a41 }, { 25, 0x0002 }, { 26, 0x0800 }, { 27, 0x0000 }, { 27, 0x0200 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0030 }, { 30, 0x0000 }, { 30, 0x0340 }, { 33, 0x2004 }, { 35, 0x40b8 }, { 40, 0x0224 }, { 43, 0x4022 }, { 46, 0x0120 }, { 48, 0x0200 }, /* 0x5100 */ { 49, 0x0315 }, { 54, 0x8131 }, { 59, 0x0400 }, { 60, 0x1c84 }, { 65, 0x0000 }, { 65, 0x0404 }, { 67, 0x0200 }, { 68, 0x0000 }, { 68, 0x0000 }, { 68, 0x0000 }, { 68, 0x0000 }, { 68, 0x0004 }, { 69, 0x2040 }, { 71, 0x0000 }, { 71, 0x2001 }, { 73, 0x0002 }, /* 0x5200 */ { 74, 0x0000 }, { 74, 0x0004 }, { 75, 0x0000 }, { 75, 0x0000 }, { 75, 0x0890 }, { 78, 0x0800 }, { 79, 0x4000 }, { 80, 0x0030 }, { 82, 0x3688 }, { 88, 0x0002 }, { 89, 0x0000 }, { 89, 0x0000 }, { 89, 0x0002 }, { 90, 0x6a20 }, { 95, 0x0004 }, { 96, 0x0122 }, /* 0x5300 */ { 99, 0x0000 }, { 99, 0x0000 }, { 99, 0xa000 }, { 101, 0x0002 }, { 102, 0x0001 }, { 103, 0x0010 }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x0004 }, { 105, 0x0200 }, { 106, 0x2001 }, { 108, 0x0014 }, { 110, 0x0008 }, { 111, 0x0000 }, { 111, 0x0404 }, { 113, 0x0041 }, /* 0x5400 */ { 115, 0x4000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x1000 }, { 117, 0x0000 }, { 117, 0x0000 }, { 117, 0x0002 }, { 118, 0x0000 }, /* 0x5500 */ { 118, 0x0010 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x8000 }, { 120, 0x4008 }, { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x0000 }, { 122, 0x5400 }, { 125, 0x0004 }, { 126, 0x40c0 }, { 129, 0x0400 }, { 130, 0x0200 }, { 131, 0x0040 }, /* 0x5600 */ { 132, 0x2040 }, { 134, 0x10d0 }, { 138, 0xc200 }, { 141, 0x0121 }, { 144, 0x0002 }, { 145, 0x2000 }, { 146, 0x8061 }, { 150, 0x0314 }, { 154, 0x1081 }, { 157, 0x0220 }, { 159, 0x4140 }, { 162, 0x0058 }, { 165, 0x1327 }, { 172, 0x0002 }, { 173, 0x0000 }, { 173, 0x0000 }, /* 0x5700 */ { 173, 0x2880 }, { 176, 0x014c }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0000 }, { 180, 0x0002 }, { 181, 0x0080 }, /* 0x5800 */ { 182, 0x0420 }, { 184, 0x2040 }, { 186, 0x8000 }, { 187, 0x0012 }, { 189, 0x8c00 }, { 192, 0x0084 }, { 194, 0x0014 }, { 196, 0x0220 }, { 198, 0x0400 }, { 199, 0x1000 }, { 200, 0x4000 }, { 201, 0x4808 }, { 204, 0x0080 }, { 205, 0xc708 }, { 211, 0x8205 }, { 215, 0x2400 }, /* 0x5900 */ { 217, 0x0000 }, { 217, 0x0000 }, { 217, 0x0004 }, { 218, 0x4100 }, { 220, 0x0000 }, { 220, 0x0000 }, { 220, 0x5600 }, { 224, 0x0000 }, { 224, 0x0000 }, { 224, 0x2000 }, { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, /* 0x5a00 */ { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0000 }, { 225, 0x0002 }, { 226, 0x0000 }, { 226, 0x2040 }, { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0080 }, { 229, 0x2000 }, { 230, 0x0000 }, { 230, 0x0080 }, { 231, 0x0000 }, { 231, 0x0820 }, /* 0x5b00 */ { 233, 0x1901 }, { 237, 0x0200 }, { 238, 0x0402 }, { 240, 0x0101 }, { 242, 0x1000 }, { 243, 0x0000 }, { 243, 0x0800 }, { 244, 0x8100 }, { 246, 0x0000 }, { 246, 0x0000 }, { 246, 0x0000 }, { 246, 0x0000 }, { 246, 0x0000 }, { 246, 0x0000 }, { 246, 0x1ac4 }, { 252, 0x0060 }, /* 0x5c00 */ { 254, 0x6980 }, { 259, 0x0000 }, { 259, 0x0000 }, { 259, 0x0080 }, { 260, 0x0000 }, { 260, 0x0000 }, { 260, 0x1114 }, { 264, 0x0000 }, { 264, 0x0000 }, { 264, 0x0000 }, { 264, 0x0002 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x0000 }, { 265, 0x2050 }, /* 0x5d00 */ { 268, 0x2000 }, { 269, 0x0080 }, { 270, 0x1000 }, { 271, 0x0000 }, { 271, 0x0000 }, { 271, 0x0001 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0092 }, { 275, 0x0080 }, { 276, 0x0081 }, { 278, 0x1500 }, { 281, 0x0800 }, { 282, 0x0014 }, { 284, 0x0000 }, { 284, 0x0001 }, /* 0x5e00 */ { 285, 0x0000 }, { 285, 0x0100 }, { 286, 0x0820 }, { 288, 0x0048 }, { 290, 0x0009 }, { 292, 0x8180 }, { 295, 0x1808 }, { 298, 0xc204 }, { 302, 0x0000 }, { 302, 0x0000 }, { 302, 0x0800 }, { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x8000 }, { 304, 0x100f }, { 309, 0x0008 }, /* 0x5f00 */ { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0000 }, { 310, 0x0028 }, { 312, 0x5140 }, { 316, 0x0200 }, { 317, 0x0000 }, { 317, 0x0000 }, { 317, 0x1000 }, { 318, 0x4002 }, { 320, 0x0201 }, { 322, 0x0200 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, /* 0x6000 */ { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x0060 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0002 }, { 326, 0x0806 }, /* 0x6100 */ { 329, 0x0000 }, { 329, 0x1800 }, { 331, 0x0000 }, { 331, 0xc090 }, { 335, 0x0800 }, { 336, 0x8500 }, { 339, 0x4c18 }, { 344, 0x0048 }, { 346, 0x0404 }, { 348, 0x0407 }, { 352, 0x4810 }, { 355, 0x0044 }, { 357, 0x1280 }, { 360, 0xc000 }, { 362, 0x0108 }, { 364, 0x55c4 }, /* 0x6200 */ { 371, 0x0081 }, { 373, 0x0010 }, { 374, 0x0080 }, { 375, 0x0005 }, { 377, 0x0000 }, { 377, 0x0002 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, /* 0x6300 */ { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x0000 }, { 378, 0x4000 }, { 379, 0x0000 }, { 379, 0x0000 }, { 379, 0x4900 }, { 382, 0x0004 }, { 383, 0x0018 }, { 385, 0x0000 }, { 385, 0x0000 }, { 385, 0x0000 }, { 385, 0x0001 }, { 386, 0x0400 }, { 387, 0x4000 }, { 388, 0x0000 }, /* 0x6400 */ { 388, 0x2000 }, { 389, 0x0080 }, { 390, 0x0000 }, { 390, 0x0040 }, { 391, 0x0000 }, { 391, 0x9002 }, { 394, 0x8000 }, { 395, 0x0848 }, { 398, 0x0100 }, { 399, 0x8008 }, { 401, 0x0828 }, { 404, 0xc80c }, { 409, 0x0c92 }, { 414, 0x0410 }, { 416, 0x9001 }, { 419, 0x5c97 }, /* 0x6500 */ { 428, 0x8050 }, { 431, 0x2a50 }, { 436, 0x141c }, { 441, 0x0000 }, { 441, 0x0000 }, { 441, 0x0080 }, { 442, 0x0000 }, { 442, 0x0120 }, { 444, 0x000c }, { 446, 0x00a0 }, { 448, 0x1000 }, { 449, 0x0080 }, { 450, 0x0000 }, { 450, 0x0000 }, { 450, 0x0000 }, { 450, 0x0000 }, /* 0x6600 */ { 450, 0x0000 }, { 450, 0x0000 }, { 450, 0x0000 }, { 450, 0x0000 }, { 450, 0x0004 }, { 451, 0x2000 }, { 452, 0x0000 }, { 452, 0x0000 }, { 452, 0x0300 }, { 454, 0x0000 }, { 454, 0x0804 }, { 456, 0x0000 }, { 456, 0x02d0 }, { 460, 0x0040 }, { 461, 0x1001 }, { 463, 0x0100 }, /* 0x6700 */ { 464, 0x0008 }, { 465, 0x0000 }, { 465, 0x8080 }, { 467, 0x0010 }, { 468, 0x0000 }, { 468, 0x0000 }, { 468, 0x0000 }, { 468, 0x4002 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, /* 0x6800 */ { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0xa100 }, { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x80c0 }, { 476, 0x0080 }, { 477, 0x0000 }, /* 0x6900 */ { 477, 0x8000 }, { 478, 0x0000 }, { 478, 0x0000 }, { 478, 0x0000 }, { 478, 0x0400 }, { 479, 0x0008 }, { 480, 0x2100 }, { 482, 0x0020 }, { 483, 0x0000 }, { 483, 0x0000 }, { 483, 0x4400 }, { 485, 0x8000 }, { 486, 0x2800 }, { 488, 0x0000 }, { 488, 0x0080 }, { 489, 0x0008 }, /* 0x6a00 */ { 490, 0x0026 }, { 493, 0x4208 }, { 496, 0x0008 }, { 497, 0x0700 }, { 500, 0x0900 }, { 502, 0x8000 }, { 503, 0x0004 }, { 504, 0x0000 }, { 504, 0x0200 }, { 505, 0x1010 }, { 507, 0x800c }, { 510, 0x0908 }, { 513, 0x0008 }, { 514, 0xec08 }, { 520, 0x1580 }, { 524, 0x0908 }, /* 0x6b00 */ { 527, 0x8410 }, { 530, 0x4044 }, { 533, 0x0000 }, { 533, 0x2000 }, { 534, 0x0000 }, { 534, 0x8001 }, { 536, 0x0002 }, { 537, 0x0184 }, { 540, 0x0000 }, { 540, 0x4100 }, { 542, 0xc810 }, { 546, 0x0c04 }, { 549, 0x0040 }, { 550, 0x0000 }, { 550, 0x0000 }, { 550, 0x8000 }, /* 0x6c00 */ { 551, 0x1100 }, { 553, 0x0000 }, { 553, 0x1808 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, /* 0x6d00 */ { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0000 }, { 556, 0x0200 }, { 557, 0x0084 }, { 559, 0x0000 }, { 559, 0x0000 }, { 559, 0x0000 }, { 559, 0x0001 }, { 560, 0x0000 }, { 560, 0x0400 }, { 561, 0x0460 }, /* 0x6e00 */ { 564, 0x0000 }, { 564, 0x0000 }, { 564, 0x1040 }, { 566, 0x4000 }, { 567, 0x0000 }, { 567, 0x4000 }, { 568, 0x8000 }, { 569, 0x0000 }, { 569, 0x0000 }, { 569, 0x2040 }, { 571, 0x0000 }, { 571, 0x0000 }, { 571, 0x5030 }, { 575, 0x0000 }, { 575, 0x9000 }, { 577, 0x8184 }, /* 0x6f00 */ { 581, 0x0002 }, { 582, 0x0400 }, { 583, 0x100c }, { 586, 0x8104 }, { 589, 0x0002 }, { 590, 0x0212 }, { 593, 0x8010 }, { 595, 0x8081 }, { 598, 0x00c1 }, { 601, 0x0080 }, { 602, 0x4211 }, { 606, 0x0002 }, { 607, 0x000a }, { 609, 0x8920 }, { 613, 0x0810 }, { 615, 0x5403 }, /* 0x7000 */ { 620, 0x8a60 }, { 625, 0xa120 }, { 629, 0x0181 }, { 632, 0x4005 }, { 635, 0x0018 }, { 637, 0x2122 }, { 641, 0x0098 }, { 644, 0x0000 }, { 644, 0x0000 }, { 644, 0x0000 }, { 644, 0x0000 }, { 644, 0x0000 }, { 644, 0x8000 }, { 645, 0x0000 }, { 645, 0x0000 }, { 645, 0x0010 }, /* 0x7100 */ { 646, 0x0000 }, { 646, 0x0000 }, { 646, 0x0002 }, { 647, 0x0000 }, { 647, 0x0200 }, { 648, 0x0004 }, { 649, 0x1204 }, { 652, 0x0000 }, { 652, 0x0000 }, { 652, 0x0084 }, { 654, 0x0000 }, { 654, 0x4002 }, { 656, 0x0102 }, { 658, 0x9204 }, { 662, 0x2040 }, { 664, 0x5010 }, /* 0x7200 */ { 667, 0x2000 }, { 668, 0x0801 }, { 670, 0x0000 }, { 670, 0x4404 }, { 673, 0x0000 }, { 673, 0x0100 }, { 674, 0x0000 }, { 674, 0x2000 }, { 675, 0x0000 }, { 675, 0x0040 }, { 676, 0x0084 }, { 678, 0x0000 }, { 678, 0x0001 }, { 679, 0x0000 }, { 679, 0x0000 }, { 679, 0x2200 }, /* 0x7300 */ { 681, 0x0000 }, { 681, 0x0000 }, { 681, 0x0000 }, { 681, 0x0840 }, { 683, 0x0032 }, { 686, 0x0000 }, { 686, 0x0d00 }, { 689, 0x1da5 }, { 697, 0x0001 }, { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x4000 }, /* 0x7400 */ { 699, 0x0000 }, { 699, 0x0000 }, { 699, 0x0000 }, { 699, 0x8000 }, { 700, 0x0800 }, { 701, 0x0000 }, { 701, 0x0608 }, { 704, 0x0000 }, { 704, 0x0200 }, { 705, 0x0000 }, { 705, 0x0048 }, { 707, 0x2001 }, { 709, 0x8400 }, { 711, 0x0410 }, { 713, 0x0000 }, { 713, 0x0000 }, /* 0x7500 */ { 713, 0x1000 }, { 714, 0x0000 }, { 714, 0x0008 }, { 715, 0x0000 }, { 715, 0x0000 }, { 715, 0x2000 }, { 716, 0x0804 }, { 718, 0x0040 }, { 719, 0x0080 }, { 720, 0x0000 }, { 720, 0x0000 }, { 720, 0x0000 }, { 720, 0x0080 }, { 721, 0x0200 }, { 722, 0x0000 }, { 722, 0x0000 }, /* 0x7600 */ { 722, 0x2804 }, { 725, 0x4000 }, { 726, 0x0082 }, { 728, 0x0800 }, { 729, 0x02c4 }, { 733, 0x8100 }, { 735, 0x72b4 }, { 743, 0x1007 }, { 747, 0x0000 }, { 747, 0x0400 }, { 748, 0x0000 }, { 748, 0x0500 }, { 750, 0x0000 }, { 750, 0x4000 }, { 751, 0x009a }, { 755, 0x0000 }, /* 0x7700 */ { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x8000 }, { 756, 0x4000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x4100 }, { 759, 0x2000 }, { 760, 0x1000 }, { 761, 0x0080 }, { 762, 0x0400 }, { 763, 0x8000 }, { 764, 0x0000 }, /* 0x7800 */ { 764, 0x0000 }, { 764, 0x0000 }, { 764, 0x0000 }, { 764, 0x0000 }, { 764, 0x0008 }, { 765, 0x0000 }, { 765, 0xc110 }, { 769, 0x0000 }, { 769, 0x0000 }, { 769, 0x0000 }, { 769, 0x2200 }, { 771, 0x1500 }, { 774, 0x0000 }, { 774, 0x0400 }, { 775, 0x8088 }, { 778, 0x2000 }, /* 0x7900 */ { 779, 0x4000 }, { 780, 0x0200 }, { 781, 0x1c40 }, { 785, 0x0002 }, { 786, 0x0000 }, { 786, 0x0000 }, { 786, 0x0000 }, { 786, 0x0000 }, { 786, 0x6000 }, { 788, 0x0000 }, { 788, 0x4440 }, { 791, 0x0003 }, { 793, 0x2000 }, { 794, 0x0000 }, { 794, 0x0000 }, { 794, 0x0000 }, /* 0x7a00 */ { 794, 0x0000 }, { 794, 0x0000 }, { 794, 0x4000 }, { 795, 0x0002 }, { 796, 0x7001 }, { 800, 0x0000 }, { 800, 0x0a06 }, { 804, 0x0000 }, { 804, 0x0000 }, { 804, 0x0000 }, { 804, 0x4600 }, { 807, 0x0440 }, { 809, 0x05b0 }, { 814, 0x0000 }, { 814, 0x0400 }, { 815, 0x0040 }, /* 0x7b00 */ { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0040 }, { 817, 0x0002 }, { 818, 0x0080 }, { 819, 0x0000 }, { 819, 0x0800 }, { 820, 0x0000 }, { 820, 0x0000 }, { 820, 0x0000 }, { 820, 0x0a11 }, { 824, 0x0000 }, { 824, 0x0210 }, { 826, 0x0008 }, /* 0x7c00 */ { 827, 0x2001 }, { 829, 0x4000 }, { 830, 0x080a }, { 833, 0x6000 }, { 835, 0x1008 }, { 837, 0x9000 }, { 839, 0x5611 }, { 845, 0x0004 }, { 846, 0x0000 }, { 846, 0x0000 }, { 846, 0x0000 }, { 846, 0x0000 }, { 846, 0x0000 }, { 846, 0x6000 }, { 848, 0x0080 }, { 849, 0x4255 }, /* 0x7d00 */ { 855, 0x2bf5 }, { 865, 0x1eb9 }, { 874, 0x0002 }, { 875, 0x960f }, { 883, 0x4055 }, { 888, 0x6001 }, { 891, 0x0146 }, { 895, 0x024e }, { 900, 0x834a }, { 906, 0x5008 }, { 909, 0x380c }, { 914, 0xef1f }, { 926, 0x0c90 }, { 930, 0x6396 }, { 938, 0x934b }, { 946, 0x0a56 }, /* 0x7e00 */ { 952, 0x0f00 }, { 956, 0xe803 }, { 962, 0x6888 }, { 967, 0x62f6 }, { 976, 0x0060 }, { 978, 0x4434 }, { 983, 0xee04 }, { 990, 0x7209 }, { 996, 0xb500 }, { 1001, 0x1158 }, { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, /* 0x7f00 */ { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x0000 }, { 1006, 0x5000 }, { 1008, 0x0000 }, { 1008, 0x0000 }, { 1008, 0x0081 }, { 1010, 0x0160 }, { 1013, 0x0000 }, { 1013, 0x0220 }, { 1015, 0x0000 }, { 1015, 0x0000 }, { 1015, 0x0004 }, { 1016, 0x0000 }, { 1016, 0x0200 }, /* 0x8000 */ { 1017, 0x0000 }, { 1017, 0x0000 }, { 1017, 0x5000 }, { 1019, 0x0000 }, { 1019, 0x0000 }, { 1019, 0x4040 }, { 1021, 0x8000 }, { 1022, 0x62ed }, { 1031, 0x0020 }, { 1032, 0x0000 }, { 1032, 0x0000 }, { 1032, 0x0000 }, { 1032, 0x0000 }, { 1032, 0x0000 }, { 1032, 0x0000 }, { 1032, 0x0000 }, /* 0x8100 */ { 1032, 0x0020 }, { 1033, 0x0800 }, { 1034, 0x0000 }, { 1034, 0x0200 }, { 1035, 0x4400 }, { 1037, 0x0040 }, { 1038, 0x0842 }, { 1041, 0x0100 }, { 1042, 0x0000 }, { 1042, 0x0400 }, { 1043, 0x0201 }, { 1045, 0xe000 }, { 1048, 0xa200 }, { 1051, 0x8500 }, { 1054, 0x0101 }, { 1056, 0x0400 }, /* 0x8200 */ { 1057, 0x2780 }, { 1062, 0x0000 }, { 1062, 0x0000 }, { 1062, 0x0000 }, { 1062, 0x0000 }, { 1062, 0x0200 }, { 1063, 0x0850 }, { 1066, 0x0082 }, { 1068, 0x0000 }, { 1068, 0x0000 }, { 1068, 0x0000 }, { 1068, 0x0800 }, { 1069, 0x0000 }, { 1069, 0x0000 }, { 1069, 0x0080 }, { 1070, 0x0200 }, /* 0x8300 */ { 1071, 0x0008 }, { 1072, 0x0000 }, { 1072, 0x0000 }, { 1072, 0x0000 }, { 1072, 0x0000 }, { 1072, 0x0001 }, { 1073, 0x0000 }, { 1073, 0x0000 }, { 1073, 0x0400 }, { 1074, 0x0040 }, { 1075, 0x0084 }, { 1077, 0x0000 }, { 1077, 0x0000 }, { 1077, 0x0000 }, { 1077, 0x8000 }, { 1078, 0x0000 }, /* 0x8400 */ { 1078, 0x0480 }, { 1080, 0x0000 }, { 1080, 0x1000 }, { 1081, 0x0020 }, { 1082, 0x0200 }, { 1083, 0x0004 }, { 1084, 0x8050 }, { 1087, 0x0080 }, { 1088, 0x0000 }, { 1088, 0x0018 }, { 1090, 0x0000 }, { 1090, 0x1000 }, { 1091, 0x0801 }, { 1093, 0x0000 }, { 1093, 0xc000 }, { 1095, 0x2000 }, /* 0x8500 */ { 1096, 0x0000 }, { 1096, 0x4010 }, { 1098, 0x2048 }, { 1101, 0x0000 }, { 1101, 0x4042 }, { 1104, 0x012c }, { 1108, 0x2604 }, { 1112, 0x0080 }, { 1113, 0x1500 }, { 1116, 0x8012 }, { 1119, 0x0240 }, { 1121, 0x0400 }, { 1122, 0x6000 }, { 1124, 0x2000 }, { 1125, 0x0420 }, { 1127, 0x0650 }, /* 0x8600 */ { 1131, 0x08d0 }, { 1135, 0x4400 }, { 1137, 0x2004 }, { 1139, 0x8400 }, { 1141, 0x0000 }, { 1141, 0x9020 }, { 1144, 0x0080 }, { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0000 }, { 1145, 0x0400 }, /* 0x8700 */ { 1146, 0x0040 }, { 1147, 0x0000 }, { 1147, 0x0002 }, { 1148, 0x0000 }, { 1148, 0x0000 }, { 1148, 0x0020 }, { 1149, 0x0040 }, { 1150, 0x0100 }, { 1151, 0x0010 }, { 1152, 0x4000 }, { 1153, 0x0004 }, { 1154, 0x0800 }, { 1155, 0x4110 }, { 1158, 0x0000 }, { 1158, 0x9008 }, { 1161, 0x0844 }, /* 0x8800 */ { 1164, 0x0060 }, { 1166, 0x8003 }, { 1169, 0x0008 }, { 1170, 0x0842 }, { 1173, 0x0440 }, { 1175, 0x2808 }, { 1178, 0x0000 }, { 1178, 0x0200 }, { 1179, 0x0000 }, { 1179, 0x0000 }, { 1179, 0x0000 }, { 1179, 0x0000 }, { 1179, 0x8400 }, { 1181, 0x3000 }, { 1183, 0x0000 }, { 1183, 0x2000 }, /* 0x8900 */ { 1184, 0x0080 }, { 1185, 0x0000 }, { 1185, 0x0000 }, { 1185, 0x090c }, { 1189, 0x0080 }, { 1190, 0x2040 }, { 1192, 0x9411 }, { 1197, 0x0004 }, { 1198, 0x8800 }, { 1200, 0x0148 }, { 1203, 0x9442 }, { 1208, 0xa484 }, { 1213, 0x0001 }, { 1214, 0x0000 }, { 1214, 0x0000 }, { 1214, 0x0150 }, /* 0x8a00 */ { 1217, 0x550e }, { 1224, 0xa969 }, { 1232, 0x2428 }, { 1236, 0x0452 }, { 1240, 0x4042 }, { 1243, 0x4935 }, { 1250, 0x7a4e }, { 1259, 0x902f }, { 1266, 0x20f0 }, { 1271, 0x4526 }, { 1277, 0x117b }, { 1285, 0x9245 }, { 1291, 0xaa94 }, { 1298, 0x58c6 }, { 1305, 0x68d4 }, { 1312, 0x55ca }, /* 0x8b00 */ { 1320, 0x4437 }, { 1327, 0x2ed1 }, { 1335, 0x3902 }, { 1340, 0x4208 }, { 1343, 0xc200 }, { 1346, 0x1740 }, { 1351, 0x8800 }, { 1353, 0x2091 }, { 1357, 0x4401 }, { 1360, 0x506c }, { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, /* 0x8c00 */ { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0000 }, { 1366, 0x0100 }, { 1367, 0x0001 }, { 1368, 0x0000 }, { 1368, 0x0000 }, { 1368, 0x0000 }, { 1368, 0x6000 }, { 1370, 0x9f87 }, { 1380, 0xbddd }, { 1392, 0x05bf }, { 1401, 0x542e }, { 1408, 0x3cdf }, { 1419, 0x7c10 }, /* 0x8d00 */ { 1425, 0xad30 }, { 1432, 0x1841 }, { 1436, 0x0000 }, { 1436, 0x0000 }, { 1436, 0x0000 }, { 1436, 0x0000 }, { 1436, 0x0000 }, { 1436, 0x0000 }, { 1436, 0x0000 }, { 1436, 0x0220 }, { 1438, 0x0100 }, { 1439, 0x0004 }, { 1440, 0x0000 }, { 1440, 0x0000 }, { 1440, 0x0000 }, { 1440, 0x0000 }, /* 0x8e00 */ { 1440, 0x0000 }, { 1440, 0x0001 }, { 1441, 0x0000 }, { 1441, 0x0010 }, { 1442, 0x1000 }, { 1443, 0x0020 }, { 1444, 0x0008 }, { 1445, 0x0400 }, { 1446, 0x2e00 }, { 1450, 0x040e }, { 1454, 0x0462 }, { 1458, 0x0000 }, { 1458, 0x3c01 }, { 1463, 0x8814 }, { 1467, 0x0810 }, { 1469, 0x5f04 }, /* 0x8f00 */ { 1476, 0x06a8 }, { 1481, 0xf834 }, { 1489, 0x8660 }, { 1494, 0xc908 }, { 1499, 0x6274 }, { 1506, 0x8010 }, { 1508, 0x0016 }, { 1511, 0x0000 }, { 1511, 0x0000 }, { 1511, 0x0000 }, { 1511, 0xe040 }, { 1515, 0x0004 }, { 1516, 0x0000 }, { 1516, 0x0000 }, { 1516, 0x0000 }, { 1516, 0x0010 }, /* 0x9000 */ { 1517, 0x0000 }, { 1517, 0x0220 }, { 1519, 0x0008 }, { 1520, 0x0004 }, { 1521, 0x4800 }, { 1523, 0x5030 }, { 1527, 0x0201 }, { 1529, 0x1584 }, { 1534, 0x8492 }, { 1539, 0x0001 }, { 1540, 0x0000 }, { 1540, 0x0000 }, { 1540, 0x0002 }, { 1541, 0x8000 }, { 1542, 0x0000 }, { 1542, 0x0020 }, /* 0x9100 */ { 1543, 0x0240 }, { 1545, 0x0054 }, { 1548, 0x2080 }, { 1550, 0x0455 }, { 1555, 0x0100 }, { 1556, 0x0000 }, { 1556, 0x0000 }, { 1556, 0x0000 }, { 1556, 0x0000 }, { 1556, 0x1040 }, { 1558, 0x1800 }, { 1560, 0x0000 }, { 1560, 0x182b }, { 1566, 0x23bc }, { 1574, 0x0298 }, { 1578, 0x06a0 }, /* 0x9200 */ { 1582, 0x6313 }, { 1589, 0x4033 }, { 1594, 0x40e8 }, { 1599, 0xe799 }, { 1609, 0x2321 }, { 1614, 0x4ca2 }, { 1620, 0x3044 }, { 1624, 0x8d00 }, { 1628, 0x0029 }, { 1631, 0x154a }, { 1637, 0x1f69 }, { 1646, 0x1a82 }, { 1651, 0x90aa }, { 1657, 0xa004 }, { 1660, 0xe578 }, { 1669, 0x1143 }, /* 0x9300 */ { 1674, 0x01c2 }, { 1678, 0x8f25 }, { 1686, 0xc945 }, { 1693, 0x014c }, { 1697, 0x28cb }, { 1704, 0x0910 }, { 1707, 0x1230 }, { 1711, 0x4461 }, { 1716, 0x0494 }, { 1720, 0x0140 }, { 1722, 0x56cc }, { 1730, 0x8129 }, { 1735, 0x3188 }, { 1740, 0xf182 }, { 1747, 0x0116 }, { 1751, 0x02a0 }, /* 0x9400 */ { 1754, 0x0808 }, { 1756, 0x231d }, { 1763, 0x41c1 }, { 1768, 0x852c }, { 1774, 0x1410 }, { 1777, 0x0014 }, { 1779, 0x2029 }, { 1783, 0xf285 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, /* 0x9500 */ { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0000 }, { 1791, 0x0080 }, { 1792, 0xda4d }, { 1801, 0x011a }, { 1805, 0x3b3a }, { 1814, 0xfa44 }, { 1822, 0x1d48 }, { 1828, 0x5071 }, { 1834, 0x0026 }, { 1837, 0x0000 }, /* 0x9600 */ { 1837, 0x0000 }, { 1837, 0x0000 }, { 1837, 0x0000 }, { 1837, 0x0000 }, { 1837, 0x0000 }, { 1837, 0x2100 }, { 1839, 0x0008 }, { 1840, 0x2109 }, { 1844, 0x4400 }, { 1846, 0x0820 }, { 1848, 0x0500 }, { 1850, 0x0912 }, { 1854, 0x0000 }, { 1854, 0x1a40 }, { 1858, 0x000c }, { 1860, 0x0804 }, /* 0x9700 */ { 1862, 0x0000 }, { 1862, 0x0000 }, { 1862, 0x0080 }, { 1863, 0x2000 }, { 1864, 0x0114 }, { 1867, 0x0400 }, { 1868, 0x0100 }, { 1869, 0x0000 }, { 1869, 0x8000 }, { 1870, 0x0000 }, { 1870, 0x0040 }, { 1871, 0x2000 }, { 1872, 0x1a48 }, { 1877, 0x5208 }, { 1881, 0x0000 }, { 1881, 0x8000 }, /* 0x9800 */ { 1882, 0xd5ee }, { 1893, 0x118f }, { 1900, 0x2052 }, { 1904, 0x2981 }, { 1909, 0x7040 }, { 1913, 0x4b18 }, { 1919, 0x98a4 }, { 1925, 0x001b }, { 1929, 0x0000 }, { 1929, 0x0000 }, { 1929, 0xc100 }, { 1932, 0x104a }, { 1936, 0x0150 }, { 1939, 0x0800 }, { 1940, 0xae05 }, { 1947, 0x7014 }, /* 0x9900 */ { 1952, 0x1628 }, { 1957, 0x490e }, { 1963, 0x0102 }, { 1965, 0xd088 }, { 1970, 0x1f28 }, { 1977, 0x5086 }, { 1982, 0x0004 }, { 1983, 0x0000 }, { 1983, 0x0000 }, { 1983, 0x0000 }, { 1983, 0x7000 }, { 1986, 0x001a }, { 1989, 0x0002 }, { 1990, 0xab37 }, { 2000, 0x2006 }, { 2003, 0x8002 }, /* 0x9a00 */ { 2005, 0xe022 }, { 2010, 0x0240 }, { 2012, 0x6800 }, { 2015, 0x41c1 }, { 2020, 0xa43f }, { 2029, 0x8ca0 }, { 2034, 0x0434 }, { 2038, 0x0000 }, { 2038, 0x0000 }, { 2038, 0x0000 }, { 2038, 0x8000 }, { 2039, 0x0000 }, { 2039, 0x8000 }, { 2040, 0x0074 }, { 2044, 0x4000 }, { 2045, 0x0000 }, /* 0x9b00 */ { 2045, 0x2040 }, { 2047, 0x0400 }, { 2048, 0x42a4 }, { 2053, 0x0002 }, { 2054, 0x4000 }, { 2055, 0x0500 }, { 2057, 0x8000 }, { 2058, 0x0090 }, { 2060, 0x400a }, { 2063, 0x6407 }, { 2069, 0x6c00 }, { 2073, 0x0000 }, { 2073, 0x0683 }, { 2078, 0x2850 }, { 2082, 0x0d96 }, { 2089, 0xa011 }, /* 0x9c00 */ { 2093, 0x2300 }, { 2096, 0x000d }, { 2099, 0x2329 }, { 2105, 0x4aae }, { 2113, 0x0320 }, { 2116, 0xa1d4 }, { 2123, 0x2080 }, { 2125, 0x0500 }, { 2127, 0x0000 }, { 2127, 0x0000 }, { 2127, 0x0000 }, { 2127, 0x0000 }, { 2127, 0x0000 }, { 2127, 0x0000 }, { 2127, 0x1220 }, { 2130, 0x0058 }, /* 0x9d00 */ { 2133, 0x02c0 }, { 2136, 0xa820 }, { 2140, 0x8148 }, { 2144, 0x8801 }, { 2147, 0x0004 }, { 2148, 0x300e }, { 2153, 0x9403 }, { 2158, 0x0004 }, { 2159, 0x0280 }, { 2161, 0x0508 }, { 2164, 0x8220 }, { 2167, 0x1810 }, { 2170, 0x0015 }, { 2173, 0x0688 }, { 2177, 0x8060 }, { 2180, 0x070c }, /* 0x9e00 */ { 2185, 0x1000 }, { 2186, 0x6c20 }, { 2191, 0x0000 }, { 2191, 0x0000 }, { 2191, 0x0000 }, { 2191, 0x0000 }, { 2191, 0x0000 }, { 2191, 0x3620 }, { 2196, 0x0000 }, { 2196, 0x0080 }, { 2197, 0x8220 }, { 2200, 0x2020 }, { 2202, 0x1000 }, { 2203, 0x4000 }, { 2204, 0x0100 }, { 2205, 0xa094 }, /* 0x9f00 */ { 2210, 0x0200 }, { 2211, 0x0020 }, { 2212, 0x0000 }, { 2212, 0x0000 }, { 2212, 0x8c00 }, { 2215, 0x9214 }, { 2220, 0x144b }, { 2226, 0x0084 }, { 2228, 0x2000 }, { 2229, 0x1031 }, }; static const Summary16 gb12345ext_uni2indx_pagefe[5] = { /* 0xfe00 */ { 2233, 0x0000 }, { 2233, 0x0000 }, { 2233, 0x0000 }, { 2233, 0xfffa }, { 2247, 0x001f }, }; static int gb12345ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0100 && wc < 0x0270) summary = &gb12345ext_uni2indx_page01[(wc>>4)-0x010]; else if (wc >= 0x1e00 && wc < 0x1e40) summary = &gb12345ext_uni2indx_page1e[(wc>>4)-0x1e0]; else if (wc >= 0x2200 && wc < 0x2230) summary = &gb12345ext_uni2indx_page22[(wc>>4)-0x220]; else if (wc >= 0x4e00 && wc < 0x9fa0) summary = &gb12345ext_uni2indx_page4e[(wc>>4)-0x4e0]; else if (wc >= 0xfe00 && wc < 0xfe50) summary = &gb12345ext_uni2indx_pagefe[(wc>>4)-0xfe0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = gb12345ext_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/gb18030.h0100644000000000000000000000242007206266436014275 0ustar rootroot/* * GB18030 */ /* * GB18030, as implemented in glibc-2.2, is an extension of GBK (= CP936). * It adds the following ranges: * 1. Two-byte range * 0xA2E3, 0xA8BF, 0xA98A..0xA995, 0xFE50..0xFE9F * 2. Four-byte range * 0x{81..84}{30..39}{81..FE}{30..39} * Most of Unicode plane 1 in Unicode order. */ #include "gb18030ext.h" #include "gb18030uni.h" static int gb18030_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { int ret; /* Code set 0 (ASCII) */ if (*s < 0x80) return ascii_mbtowc(conv,pwc,s,n); /* Code set 1 (GBK extended) */ ret = gbk_mbtowc(conv,pwc,s,n); if (ret != RET_ILSEQ) return ret; ret = gb18030ext_mbtowc(conv,pwc,s,n); if (ret != RET_ILSEQ) return ret; /* Code set 2 (remainder of Unicode) */ return gb18030uni_mbtowc(conv,pwc,s,n); } static int gb18030_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { int ret; /* Code set 0 (ASCII) */ ret = ascii_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 1 (GBK extended) */ ret = gbk_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; ret = gb18030ext_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) return ret; /* Code set 2 (remainder of Unicode) */ return gb18030uni_wctomb(conv,r,wc,n); } recode-3.6/libiconv/gb18030ext.h0100644000000000000000000002307207206266436015024 0ustar rootroot /* * GB18030 two-byte extension */ static const unsigned short gb18030ext_2uni_pagea9[13] = { /* 0xa9 */ 0xfffd, 0x2ff0, 0x2ff1, 0x2ff2, 0x2ff3, 0x2ff4, 0x2ff5, 0x2ff6, 0x2ff7, 0x2ff8, 0x2ff9, 0x2ffa, 0x2ffb, }; static const unsigned short gb18030ext_2uni_pagefe[95] = { /* 0xfe */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2e81, 0xfffd, 0xfffd, 0xfffd, 0x2e84, 0x3473, 0x3447, 0x2e88, 0x2e8b, 0xfffd, 0x359e, 0x361a, 0x360e, 0x2e8c, 0xfffd, 0x396e, 0x3918, 0xfffd, 0x39cf, 0x39df, 0x3a73, 0x39d0, 0xfffd, 0xfffd, 0x3b4e, 0x3c6e, 0x3ce0, 0x2ea7, 0xfffd, 0xfffd, 0x2eaa, 0x4056, 0x415f, 0x2eae, 0x4337, 0x2eb3, 0x2eb6, 0x2eb7, 0xfffd, 0x43b1, 0x43ac, 0x2ebb, 0x43dd, 0x44d6, 0x4661, 0x464c, 0xfffd, 0x4723, 0x4729, 0x477c, 0x478d, 0x2eca, 0x4947, 0x497a, 0x497d, 0x4982, 0x4983, 0x4985, 0x4986, 0x499f, 0x499b, 0x49b7, 0x49b6, 0xfffd, 0xfffd, 0x4ca3, 0x4c9f, 0x4ca0, 0x4ca1, 0x4c77, 0x4ca2, 0x4d13, 0x4d14, 0x4d15, 0x4d16, 0x4d17, 0x4d18, 0x4d19, 0x4dae, }; static int gb18030ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 == 0xa2) || (c1 >= 0xa8 && c1 <= 0xa9) || (c1 == 0xfe)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) { unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); unsigned short wc = 0xfffd; if (i < 7410) { if (i == 6432) wc = 0x20ac; } else if (i < 23750) { if (i == 7536) wc = 0x01f9; else if (i >= 7672 && i < 7685) wc = gb18030ext_2uni_pagea9[i-7672]; } else { if (i < 23845) wc = gb18030ext_2uni_pagefe[i-23750]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short gb18030ext_page2e[80] = { 0x0000, 0xfe50, 0x0000, 0x0000, 0xfe54, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/ 0xfe57, 0x0000, 0x0000, 0xfe58, 0xfe5d, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe6b, /*0xa0-0xa7*/ 0x0000, 0x0000, 0xfe6e, 0x0000, 0x0000, 0x0000, 0xfe71, 0x0000, /*0xa8-0xaf*/ 0x0000, 0x0000, 0x0000, 0xfe73, 0x0000, 0x0000, 0xfe74, 0xfe75, /*0xb0-0xb7*/ 0x0000, 0x0000, 0x0000, 0xfe79, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/ 0x0000, 0x0000, 0xfe84, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/ }; static const unsigned short gb18030ext_page2f[16] = { 0xa98a, 0xa98b, 0xa98c, 0xa98d, 0xa98e, 0xa98f, 0xa990, 0xa991, /*0xf0-0xf7*/ 0xa992, 0xa993, 0xa994, 0xa995, 0x0000, 0x0000, 0x0000, 0x0000, /*0xf8-0xff*/ }; static const unsigned short gb18030ext_page34[56] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe56, /*0x40-0x47*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/ 0x0000, 0x0000, 0x0000, 0xfe55, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/ }; static const unsigned short gb18030ext_page36[24] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe5c, 0x0000, /*0x08-0x0f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/ 0x0000, 0x0000, 0xfe5b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/ }; static const unsigned short gb18030ext_page39[24] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe62, /*0xc8-0xcf*/ 0xfe65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe63, /*0xd8-0xdf*/ }; static const unsigned short gb18030ext_page43[56] = { 0x0000, 0x0000, 0x0000, 0x0000, 0xfe78, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/ 0x0000, 0xfe77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe7a, 0x0000, 0x0000, /*0xd8-0xdf*/ }; static const unsigned short gb18030ext_page46[32] = { 0x0000, 0x0000, 0x0000, 0x0000, 0xfe7d, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/ 0x0000, 0xfe7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/ }; static const unsigned short gb18030ext_page47_1[16] = { 0x0000, 0x0000, 0x0000, 0xfe80, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/ 0x0000, 0xfe81, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/ }; static const unsigned short gb18030ext_page47_2[24] = { 0x0000, 0x0000, 0x0000, 0x0000, 0xfe82, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe83, 0x0000, 0x0000, /*0x88-0x8f*/ }; static const unsigned short gb18030ext_page49[120] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe85, /*0x40-0x47*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/ 0x0000, 0x0000, 0xfe86, 0x0000, 0x0000, 0xfe87, 0x0000, 0x0000, /*0x78-0x7f*/ 0x0000, 0x0000, 0xfe88, 0xfe89, 0x0000, 0xfe8a, 0xfe8b, 0x0000, /*0x80-0x87*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/ 0x0000, 0x0000, 0x0000, 0xfe8d, 0x0000, 0x0000, 0x0000, 0xfe8c, /*0x98-0x9f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe8f, 0xfe8e, /*0xb0-0xb7*/ }; static const unsigned short gb18030ext_page4c[56] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe96, /*0x70-0x77*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe93, /*0x98-0x9f*/ 0xfe94, 0xfe95, 0xfe97, 0xfe92, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/ }; static const unsigned short gb18030ext_page4d[16] = { 0x0000, 0x0000, 0x0000, 0xfe98, 0xfe99, 0xfe9a, 0xfe9b, 0xfe9c, /*0x10-0x17*/ 0xfe9d, 0xfe9e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/ }; static int gb18030ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { unsigned short c = 0; if (wc == 0x01f9) c = 0xa8bf; else if (wc == 0x20ac) c = 0xa2e3; else if (wc >= 0x2e80 && wc < 0x2ed0) c = gb18030ext_page2e[wc-0x2e80]; else if (wc >= 0x2ff0 && wc < 0x3000) c = gb18030ext_page2f[wc-0x2ff0]; else if (wc >= 0x3440 && wc < 0x3478) c = gb18030ext_page34[wc-0x3440]; else if (wc == 0x359e) c = 0xfe5a; else if (wc >= 0x3608 && wc < 0x3620) c = gb18030ext_page36[wc-0x3608]; else if (wc == 0x3918) c = 0xfe60; else if (wc == 0x396e) c = 0xfe5f; else if (wc >= 0x39c8 && wc < 0x39e0) c = gb18030ext_page39[wc-0x39c8]; else if (wc == 0x3a73) c = 0xfe64; else if (wc == 0x3b4e) c = 0xfe68; else if (wc == 0x3c6e) c = 0xfe69; else if (wc == 0x3ce0) c = 0xfe6a; else if (wc == 0x4056) c = 0xfe6f; else if (wc == 0x415f) c = 0xfe70; else if (wc == 0x4337) c = 0xfe72; else if (wc >= 0x43a8 && wc < 0x43e0) c = gb18030ext_page43[wc-0x43a8]; else if (wc == 0x44d6) c = 0xfe7b; else if (wc >= 0x4648 && wc < 0x4668) c = gb18030ext_page46[wc-0x4648]; else if (wc >= 0x4720 && wc < 0x4730) c = gb18030ext_page47_1[wc-0x4720]; else if (wc >= 0x4778 && wc < 0x4790) c = gb18030ext_page47_2[wc-0x4778]; else if (wc >= 0x4940 && wc < 0x49b8) c = gb18030ext_page49[wc-0x4940]; else if (wc >= 0x4c70 && wc < 0x4ca8) c = gb18030ext_page4c[wc-0x4c70]; else if (wc >= 0x4d10 && wc < 0x4d20) c = gb18030ext_page4d[wc-0x4d10]; else if (wc == 0x4dae) c = 0xfe9f; if (c != 0) { r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/gb18030uni.h0100644000000000000000000011562207206266436015022 0ustar rootroot /* * GB18030 four-byte extension */ static const unsigned short gb18030uni_charset2uni_ranges[368] = { 0x0000, 0x0022, 0x0023, 0x0024, 0x0025, 0x002b, 0x002c, 0x0030, 0x0031, 0x004f, 0x0050, 0x0057, 0x0058, 0x005d, 0x005e, 0x005e, 0x005f, 0x0062, 0x0063, 0x0065, 0x0066, 0x0066, 0x0067, 0x0067, 0x0068, 0x006b, 0x006c, 0x007c, 0x007d, 0x0083, 0x0084, 0x0092, 0x0093, 0x00aa, 0x00ab, 0x00ad, 0x00ae, 0x00b1, 0x00b2, 0x00ce, 0x00cf, 0x0130, 0x0131, 0x0131, 0x0132, 0x0132, 0x0133, 0x0133, 0x0134, 0x0134, 0x0135, 0x0135, 0x0136, 0x0136, 0x0137, 0x0137, 0x0138, 0x0153, 0x0154, 0x01aa, 0x01ab, 0x01b9, 0x01ba, 0x021e, 0x021f, 0x021f, 0x0220, 0x022c, 0x022d, 0x02e3, 0x02e5, 0x02eb, 0x02ec, 0x02ec, 0x02ed, 0x0323, 0x0324, 0x0331, 0x0332, 0x0332, 0x0333, 0x1ef0, 0x1ef1, 0x1ef2, 0x1ef3, 0x1ef3, 0x1ef4, 0x1ef5, 0x1ef6, 0x1efc, 0x1efd, 0x1f05, 0x1f06, 0x1f06, 0x1f07, 0x1f07, 0x1f08, 0x1f0c, 0x1f0d, 0x1f7c, 0x1f7d, 0x1fd2, 0x1fd3, 0x1fd3, 0x1fd4, 0x1fd6, 0x1fd7, 0x1fe2, 0x1fe3, 0x1fec, 0x1fed, 0x202a, 0x202b, 0x202e, 0x202f, 0x2038, 0x2045, 0x2046, 0x2047, 0x20b4, 0x20b5, 0x20ba, 0x20bb, 0x20bb, 0x20bc, 0x20be, 0x20bf, 0x20c2, 0x20c3, 0x20c4, 0x20c5, 0x20c6, 0x20c7, 0x20c7, 0x20c8, 0x20c8, 0x20c9, 0x20ca, 0x20cb, 0x20cf, 0x20d0, 0x20d4, 0x20d5, 0x20de, 0x20df, 0x20e1, 0x20e2, 0x20e6, 0x20e7, 0x20f3, 0x20f4, 0x20f5, 0x20f6, 0x20fb, 0x20fc, 0x2120, 0x2121, 0x2123, 0x2124, 0x212e, 0x212f, 0x2147, 0x2148, 0x2199, 0x219a, 0x22d1, 0x22e7, 0x22f0, 0x22f1, 0x233f, 0x2355, 0x2358, 0x2359, 0x2365, 0x2366, 0x2368, 0x2373, 0x2382, 0x2383, 0x238a, 0x238b, 0x2392, 0x2393, 0x2395, 0x2396, 0x2397, 0x2398, 0x23a9, 0x23aa, 0x23c8, 0x23c9, 0x23ca, 0x23cb, 0x2400, 0x2401, 0x2401, 0x2402, 0x2c3f, 0x2c40, 0x2c41, 0x2c42, 0x2c44, 0x2c45, 0x2c46, 0x2c47, 0x2c60, 0x2c61, 0x2c62, 0x2c63, 0x2c65, 0x2c66, 0x2c69, 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6e, 0x2c6f, 0x2c7c, 0x2c7d, 0x2d87, 0x2da6, 0x2da6, 0x2da7, 0x2dab, 0x2dac, 0x2dad, 0x2dae, 0x2dc3, 0x2dc5, 0x2dcb, 0x2dce, 0x2dd2, 0x2dd9, 0x2ecb, 0x2ecf, 0x2ed5, 0x2ed6, 0x2f46, 0x2f47, 0x3030, 0x3031, 0x303c, 0x303d, 0x303e, 0x303f, 0x3060, 0x3061, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x30de, 0x30df, 0x3109, 0x310a, 0x3233, 0x3234, 0x32a2, 0x32a3, 0x32ad, 0x32ae, 0x35aa, 0x35ab, 0x35ff, 0x3600, 0x365f, 0x3660, 0x366d, 0x366e, 0x3700, 0x3701, 0x37da, 0x37db, 0x38f9, 0x38fa, 0x396a, 0x396b, 0x3cdf, 0x3ce0, 0x3de7, 0x3de8, 0x3fbe, 0x3fbf, 0x4032, 0x4033, 0x4036, 0x4037, 0x4061, 0x4062, 0x4159, 0x415a, 0x42ce, 0x42cf, 0x42e2, 0x42e3, 0x43a3, 0x43a4, 0x43a8, 0x43a9, 0x43fa, 0x43fb, 0x440a, 0x440b, 0x45c3, 0x45c4, 0x45f5, 0x45f6, 0x45f7, 0x45f8, 0x45fb, 0x45fc, 0x45fc, 0x45fd, 0x4610, 0x4611, 0x4613, 0x4614, 0x4629, 0x462a, 0x48e8, 0x48e9, 0x490f, 0x4910, 0x497e, 0x497f, 0x4a12, 0x4a13, 0x4a19, 0x4abe, 0x8261, 0x9b59, 0x9b84, 0x9b85, 0x9bd0, 0x9bd1, 0x9beb, 0x9bec, 0x9c3c, 0x9c3d, 0x9c45, 0x9c46, 0x9c5f, 0x9c60, 0x9c60, 0x9c61, 0x9c61, 0x9c62, 0x9c64, 0x9c65, 0x9c6a, 0x9c6b, 0x9c6b, 0x9c6c, 0x9c6d, 0x9c6e, 0xa067, 0xa074, 0xa074, 0xa07a, 0xa07a, 0xa080, 0xa10f, 0xa113, 0xa18e, 0xa192, 0xa1a9 }; static const unsigned short gb18030uni_uni2charset_ranges[368] = { 0x0081, 0x00a3, 0x00a5, 0x00a6, 0x00a9, 0x00af, 0x00b2, 0x00b6, 0x00b8, 0x00d6, 0x00d8, 0x00df, 0x00e2, 0x00e7, 0x00eb, 0x00eb, 0x00ee, 0x00f1, 0x00f4, 0x00f6, 0x00f8, 0x00f8, 0x00fb, 0x00fb, 0x00fd, 0x0100, 0x0102, 0x0112, 0x0114, 0x011a, 0x011c, 0x012a, 0x012c, 0x0143, 0x0145, 0x0147, 0x0149, 0x014c, 0x014e, 0x016a, 0x016c, 0x01cd, 0x01cf, 0x01cf, 0x01d1, 0x01d1, 0x01d3, 0x01d3, 0x01d5, 0x01d5, 0x01d7, 0x01d7, 0x01d9, 0x01d9, 0x01db, 0x01db, 0x01dd, 0x01f8, 0x01fa, 0x0250, 0x0252, 0x0260, 0x0262, 0x02c6, 0x02c8, 0x02c8, 0x02cc, 0x02d8, 0x02da, 0x0390, 0x03aa, 0x03b0, 0x03c2, 0x03c2, 0x03ca, 0x0400, 0x0402, 0x040f, 0x0450, 0x0450, 0x0452, 0x200f, 0x2011, 0x2012, 0x2017, 0x2017, 0x201a, 0x201b, 0x201e, 0x2024, 0x2027, 0x202f, 0x2031, 0x2031, 0x2034, 0x2034, 0x2036, 0x203a, 0x203c, 0x20ab, 0x20ad, 0x2102, 0x2104, 0x2104, 0x2106, 0x2108, 0x210a, 0x2115, 0x2117, 0x2120, 0x2122, 0x215f, 0x216c, 0x216f, 0x217a, 0x2183, 0x2194, 0x2195, 0x219a, 0x2207, 0x2209, 0x220e, 0x2210, 0x2210, 0x2212, 0x2214, 0x2216, 0x2219, 0x221b, 0x221c, 0x2221, 0x2222, 0x2224, 0x2224, 0x2226, 0x2226, 0x222c, 0x222d, 0x222f, 0x2233, 0x2238, 0x223c, 0x223e, 0x2247, 0x2249, 0x224b, 0x224d, 0x2251, 0x2253, 0x225f, 0x2262, 0x2263, 0x2268, 0x226d, 0x2270, 0x2294, 0x2296, 0x2298, 0x229a, 0x22a4, 0x22a6, 0x22be, 0x22c0, 0x2311, 0x2313, 0x244a, 0x246a, 0x2473, 0x249c, 0x24ea, 0x254c, 0x254f, 0x2574, 0x2580, 0x2590, 0x2592, 0x25a2, 0x25b1, 0x25b4, 0x25bb, 0x25be, 0x25c5, 0x25c8, 0x25ca, 0x25cc, 0x25cd, 0x25d0, 0x25e1, 0x25e6, 0x2604, 0x2607, 0x2608, 0x260a, 0x263f, 0x2641, 0x2641, 0x2643, 0x2e80, 0x2e82, 0x2e83, 0x2e85, 0x2e87, 0x2e89, 0x2e8a, 0x2e8d, 0x2ea6, 0x2ea8, 0x2ea9, 0x2eab, 0x2ead, 0x2eaf, 0x2eb2, 0x2eb4, 0x2eb5, 0x2eb8, 0x2eba, 0x2ebc, 0x2ec9, 0x2ecb, 0x2fd5, 0x3004, 0x3004, 0x3018, 0x301c, 0x301f, 0x3020, 0x302a, 0x303f, 0x3094, 0x309a, 0x30f7, 0x30fb, 0x312a, 0x321c, 0x322a, 0x3230, 0x3232, 0x32a2, 0x32a4, 0x338d, 0x3390, 0x339b, 0x339f, 0x33a0, 0x33a2, 0x33c3, 0x33c5, 0x33cd, 0x33cf, 0x33d0, 0x33d3, 0x33d4, 0x33d6, 0x3446, 0x3448, 0x3472, 0x3474, 0x359d, 0x359f, 0x360d, 0x360f, 0x3619, 0x361b, 0x3917, 0x3919, 0x396d, 0x396f, 0x39ce, 0x39d1, 0x39de, 0x39e0, 0x3a72, 0x3a74, 0x3b4d, 0x3b4f, 0x3c6d, 0x3c6f, 0x3cdf, 0x3ce1, 0x4055, 0x4057, 0x415e, 0x4160, 0x4336, 0x4338, 0x43ab, 0x43ad, 0x43b0, 0x43b2, 0x43dc, 0x43de, 0x44d5, 0x44d7, 0x464b, 0x464d, 0x4660, 0x4662, 0x4722, 0x4724, 0x4728, 0x472a, 0x477b, 0x477d, 0x478c, 0x478e, 0x4946, 0x4948, 0x4979, 0x497b, 0x497c, 0x497e, 0x4981, 0x4984, 0x4984, 0x4987, 0x499a, 0x499c, 0x499e, 0x49a0, 0x49b5, 0x49b8, 0x4c76, 0x4c78, 0x4c9e, 0x4ca4, 0x4d12, 0x4d1a, 0x4dad, 0x4daf, 0x4db5, 0xa000, 0xd7a3, 0xf900, 0xf92b, 0xf92d, 0xf978, 0xf97a, 0xf994, 0xf996, 0xf9e6, 0xf9e8, 0xf9f0, 0xf9f2, 0xfa0b, 0xfa10, 0xfa10, 0xfa12, 0xfa12, 0xfa15, 0xfa17, 0xfa19, 0xfa1e, 0xfa22, 0xfa22, 0xfa25, 0xfa26, 0xfa2a, 0xfe23, 0xfe32, 0xfe32, 0xfe58, 0xfe58, 0xfe70, 0xfeff, 0xff61, 0xffdc, 0xffe6, 0xfffd }; static const struct { unsigned short diff; unsigned short bitmap_offset; } gb18030uni_ranges[184] = { { 129, 0x0000 }, { 130, 0x0023 }, { 132, 0x0025 }, { 134, 0x002c }, { 135, 0x0031 }, { 136, 0x0050 }, { 138, 0x0058 }, { 141, 0x005e }, { 143, 0x005f }, { 145, 0x0063 }, { 146, 0x0066 }, { 148, 0x0067 }, { 149, 0x0068 }, { 150, 0x006c }, { 151, 0x007d }, { 152, 0x0084 }, { 153, 0x0093 }, { 154, 0x00ab }, { 155, 0x00ae }, { 156, 0x00b2 }, { 157, 0x00cf }, { 158, 0x0131 }, { 159, 0x0132 }, { 160, 0x0133 }, { 161, 0x0134 }, { 162, 0x0135 }, { 163, 0x0136 }, { 164, 0x0137 }, { 165, 0x0138 }, { 166, 0x0154 }, { 167, 0x01ab }, { 168, 0x01ba }, { 169, 0x021f }, { 172, 0x0220 }, { 173, 0x022d }, { 197, 0x02e4 }, { 214, 0x02eb }, { 221, 0x02ec }, { 222, 0x0323 }, { 286, 0x0331 }, { 287, 0x0332 }, { 288, 0x1ef0 }, { 292, 0x1ef2 }, { 294, 0x1ef3 }, { 296, 0x1ef5 }, { 298, 0x1efc }, { 299, 0x1f05 }, { 301, 0x1f06 }, { 302, 0x1f07 }, { 303, 0x1f0c }, { 304, 0x1f7c }, { 305, 0x1fd2 }, { 306, 0x1fd3 }, { 307, 0x1fd6 }, { 308, 0x1fe2 }, { 309, 0x1fec }, { 321, 0x202a }, { 331, 0x202e }, { 335, 0x2038 }, { 339, 0x203a }, { 340, 0x20a8 }, { 341, 0x20ae }, { 342, 0x20af }, { 343, 0x20b2 }, { 344, 0x20b6 }, { 348, 0x20b8 }, { 349, 0x20ba }, { 350, 0x20bb }, { 355, 0x20bc }, { 356, 0x20be }, { 360, 0x20c3 }, { 361, 0x20c8 }, { 362, 0x20d2 }, { 363, 0x20d5 }, { 364, 0x20da }, { 366, 0x20e7 }, { 370, 0x20e9 }, { 372, 0x20ef }, { 373, 0x2114 }, { 374, 0x2117 }, { 375, 0x2122 }, { 376, 0x213b }, { 377, 0x218d }, { 387, 0x22c5 }, { 427, 0x22cf }, { 503, 0x231e }, { 539, 0x2322 }, { 554, 0x232f }, { 559, 0x2332 }, { 561, 0x2342 }, { 563, 0x234a }, { 565, 0x2352 }, { 566, 0x2355 }, { 568, 0x2357 }, { 572, 0x2369 }, { 574, 0x2388 }, { 575, 0x238a }, { 576, 0x23c0 }, { 577, 0x23c1 }, { 578, 0x2bff }, { 579, 0x2c01 }, { 580, 0x2c04 }, { 582, 0x2c06 }, { 583, 0x2c20 }, { 584, 0x2c22 }, { 585, 0x2c25 }, { 586, 0x2c29 }, { 588, 0x2c2b }, { 589, 0x2c2e }, { 590, 0x2c3c }, { 606, 0x2d47 }, { 625, 0x2d48 }, { 627, 0x2d4d }, { 636, 0x2d4f }, { 719, 0x2d65 }, { 809, 0x2d6c }, { 849, 0x2d71 }, { 859, 0x2e64 }, { 860, 0x2e6b }, { 861, 0x2edc }, { 863, 0x2fc6 }, { 866, 0x2fd2 }, { 867, 0x2fd4 }, { 868, 0x2ff6 }, { 869, 0x2fff }, { 871, 0x3001 }, { 872, 0x3003 }, { 873, 0x3074 }, { 874, 0x309f }, { 875, 0x31c9 }, { 876, 0x3238 }, { 877, 0x3243 }, { 878, 0x3540 }, { 879, 0x3595 }, { 881, 0x35f5 }, { 882, 0x3603 }, { 883, 0x3696 }, { 884, 0x3770 }, { 885, 0x388f }, { 886, 0x3900 }, { 887, 0x3c75 }, { 888, 0x3d7d }, { 889, 0x3f54 }, { 890, 0x3fc8 }, { 891, 0x3fcc }, { 892, 0x3ff7 }, { 893, 0x40ef }, { 894, 0x4264 }, { 895, 0x4278 }, { 896, 0x4339 }, { 897, 0x433e }, { 898, 0x4390 }, { 899, 0x43a0 }, { 900, 0x4559 }, { 901, 0x458b }, { 902, 0x458d }, { 904, 0x4591 }, { 906, 0x4592 }, { 907, 0x45a6 }, { 908, 0x45a9 }, { 910, 0x45bf }, { 911, 0x487e }, { 916, 0x48a5 }, { 923, 0x4914 }, { 924, 0x49a8 }, { 21826, 0x49af }, { 23975, 0x8153 }, { 23976, 0x817f }, { 23977, 0x81cb }, { 23978, 0x81e6 }, { 23979, 0x8237 }, { 23980, 0x8240 }, { 23984, 0x825a }, { 23985, 0x825b }, { 23987, 0x825c }, { 23988, 0x825f }, { 23991, 0x8265 }, { 23993, 0x8266 }, { 23996, 0x8268 }, { 23998, 0x8662 }, { 24030, 0x8663 }, { 24048, 0x8664 }, { 24142, 0x86f4 }, { 24148, 0x8770 } }; static const unsigned char gb18030uni_bitmap[4337] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x38, 0x00, 0x80, 0x21, 0x82, 0xbf, 0xfe, 0xff, 0xfd, 0xf3, 0xff, 0xff, 0x3f, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x19, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x06, 0xfe, 0xff, 0xfb, 0xff, 0xff, 0xfb, 0x1f, 0x00, 0xff, 0xff, 0xff, 0x07, 0x1f, 0x00, 0x00, 0x10, 0x00, 0x88, 0xfe, 0xff, 0xff, 0x07, 0xff, 0xff, 0x3f, 0x00, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0x7f, 0xff, 0xbf, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0x3f, 0x1f, 0xff, 0xff, 0xff, 0x01, 0x00, 0xee, 0x9f, 0xf9, 0xff, 0xff, 0xfd, 0xc5, 0xd3, 0x9f, 0x39, 0x80, 0xb0, 0xcf, 0xff, 0xff, 0x07, 0xe4, 0x87, 0xf9, 0xff, 0xff, 0xfd, 0x6d, 0xd3, 0x87, 0x39, 0x00, 0x5e, 0xc0, 0xff, 0x1f, 0x00, 0xee, 0xaf, 0xfb, 0xff, 0xff, 0xfd, 0xed, 0xf3, 0xbf, 0x3b, 0x01, 0x00, 0xc1, 0xff, 0x00, 0x00, 0xee, 0x9f, 0xf9, 0xff, 0xff, 0xfd, 0xcd, 0xf3, 0x8f, 0x39, 0xc0, 0xb0, 0xc3, 0xff, 0x01, 0x00, 0xec, 0xc7, 0x3d, 0xd6, 0x18, 0xc7, 0xbf, 0xc3, 0xc7, 0x3d, 0x80, 0x00, 0x80, 0xff, 0x07, 0x00, 0xee, 0xdf, 0xfd, 0xff, 0xff, 0xfd, 0xef, 0xc3, 0xdf, 0x3d, 0x60, 0x00, 0xc3, 0xff, 0x00, 0x00, 0xec, 0xdf, 0xfd, 0xff, 0xff, 0xfd, 0xef, 0xc3, 0xdf, 0x3d, 0x60, 0x40, 0xc3, 0xff, 0x00, 0x00, 0xec, 0xdf, 0xfd, 0xff, 0xff, 0xfd, 0xff, 0xc3, 0xcf, 0x3d, 0x80, 0x00, 0xc3, 0xff, 0x00, 0x00, 0xec, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xfb, 0x2f, 0x7f, 0x84, 0x5f, 0xff, 0x00, 0x00, 0x1c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x96, 0x25, 0xf0, 0xfe, 0xae, 0xec, 0xff, 0x3b, 0x5f, 0x3f, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x0f, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xf6, 0xc7, 0x03, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3d, 0x7f, 0x3d, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3d, 0xff, 0xff, 0xff, 0x7f, 0x3d, 0x7f, 0x3d, 0x7f, 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x3d, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x03, 0x00, 0x00, 0xff, 0x7f, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0xff, 0xaa, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xcf, 0xef, 0xff, 0xff, 0xdc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0xf1, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf7, 0xfc, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xeb, 0xd1, 0x9f, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xbf, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x38, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x3e, 0xf8, 0xff, 0xff, 0xdf, 0xd7, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xe7, 0xe7, 0xe7, 0xfd, 0x01, 0xf8 }; static int gb18030uni_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if (c1 >= 0x81 && c1 <= 0x84) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x30 && c2 <= 0x39) { if (n >= 3) { unsigned char c3 = s[2]; if (c3 >= 0x81 && c3 <= 0xfe) { if (n >= 4) { unsigned char c4 = s[3]; if (c4 >= 0x30 && c4 <= 0x39) { unsigned int i = (((c1 - 0x81) * 10 + (c2 - 0x30)) * 126 + (c3 - 0x81)) * 10 + (c4 - 0x30); if (i >= 0 && i <= 41385) { unsigned int k1 = 0; unsigned int k2 = 183; while (k1 < k2) { unsigned int k = (k1 + k2) / 2; if (i <= gb18030uni_charset2uni_ranges[2*k+1]) k2 = k; else if (i >= gb18030uni_charset2uni_ranges[2*k+2]) k1 = k + 1; else return RET_ILSEQ; } { unsigned int bitmap_index = i - gb18030uni_charset2uni_ranges[2*k1] + gb18030uni_ranges[k1].bitmap_offset; if ((gb18030uni_bitmap[bitmap_index >> 3] >> (bitmap_index & 7)) & 1) { unsigned int diff = gb18030uni_ranges[k1].diff; *pwc = (ucs4_t) (i + diff); return 4; } } } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static int gb18030uni_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 4) { unsigned int i = wc; if (i >= 0x0081 && i <= 0xfffd) { unsigned int k1 = 0; unsigned int k2 = 183; while (k1 < k2) { unsigned int k = (k1 + k2) / 2; if (i <= gb18030uni_uni2charset_ranges[2*k+1]) k2 = k; else if (i >= gb18030uni_uni2charset_ranges[2*k+2]) k1 = k + 1; else return RET_ILSEQ; } { unsigned int bitmap_index = i - gb18030uni_uni2charset_ranges[2*k1] + gb18030uni_ranges[k1].bitmap_offset; if ((gb18030uni_bitmap[bitmap_index >> 3] >> (bitmap_index & 7)) & 1) { unsigned int diff = gb18030uni_ranges[k1].diff; i -= diff; r[3] = (i % 10) + 0x30; i = i / 10; r[2] = (i % 126) + 0x81; i = i / 126; r[1] = (i % 10) + 0x30; i = i / 10; r[0] = i + 0x81; return 4; } } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/gb2312.h0100644000000000000000000046322107206266436014223 0ustar rootroot /* * GB2312.1980-0 */ static const unsigned short gb2312_2uni_page21[831] = { /* 0x21 */ 0x3000, 0x3001, 0x3002, 0x30fb, 0x02c9, 0x02c7, 0x00a8, 0x3003, 0x3005, 0x2015, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c, 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a, 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312, 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d, 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234, 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4, 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, /* 0x22 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd, /* 0x23 */ 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3, /* 0x24 */ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x25 */ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x26 */ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x27 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x28 */ 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8, 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2, 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc, 0x00fc, 0x00ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x29 */ 0xfffd, 0xfffd, 0xfffd, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c, 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c, 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, }; static const unsigned short gb2312_2uni_page30[6768] = { /* 0x30 */ 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691, 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d, 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848, 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884, 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed, 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776, 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf, 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed, 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc, 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886, 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d, 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265, /* 0x31 */ 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5, 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351, 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907, 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29, 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4, 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9, 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5, 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16, 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab, 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b, 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175, 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3, /* 0x32 */ 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2, 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236, 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa, 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016, 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29, 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b, 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf, 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7, 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336, 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6, 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20, 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316, /* 0x33 */ 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e, 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632, 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3, 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1, 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59, 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f, 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60, 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64, 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0, 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7, 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8, 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a, /* 0x34 */ 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd, 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97, 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524, 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822, 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148, 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471, 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07, 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106, 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb, 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26, 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e, /* 0x35 */ 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6, 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb, 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48, 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053, 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49, 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c, 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730, 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382, 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43, 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc, 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc, 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0, /* 0x36 */ 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a, 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b, 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661, 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec, 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6, 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e, 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566, 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a, 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0, 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25, 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c, 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c, /* 0x37 */ 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5, 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492, 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af, 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632, 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561, 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8, 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f, 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa, 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af, 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b, 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90, 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d, /* 0x38 */ 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85, 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74, 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236, 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490, 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89, 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f, 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b, 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f, 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c, 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b, 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9, 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9, /* 0x39 */ 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a, 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1, 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2, 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30, 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37, 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250, 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173, 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c, 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845, 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842, 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505, 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8, /* 0x3a */ 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163, 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a, 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a, 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a, 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d, 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2, 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a, 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8, 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f, 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c, 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6, 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56, /* 0x3b */ 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1, 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd, 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853, 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115, 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757, 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d, 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de, 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd, 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f, 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b, 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e, 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95, /* 0x3c */ 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9, 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca, 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0, 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d, 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2, 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939, 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be, 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1, 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270, 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3, 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274, 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6, /* 0x3d */ 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa, 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868, 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901, 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc, 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a, 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb, 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a, 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01, 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f, 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1, 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb, 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78, /* 0x3e */ 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8, 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f, 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756, 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0, 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551, 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8, 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9, 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd, 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350, 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b, 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd, 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb, /* 0x3f */ 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361, 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a, 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b, 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777, 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3, 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543, 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7, 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6, 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef, 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50, 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4, 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080, /* 0x40 */ 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec, 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a, 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f, 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8, 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca, 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c, 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d, 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b, 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece, 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4, 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1, 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0, /* 0x41 */ 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9, 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f, 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae, 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e, 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5, 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217, 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716, 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce, 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc, 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409, 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3, 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf, /* 0x42 */ 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3, 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3, 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42, 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415, 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f, 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6, 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1, 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523, 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988, 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417, 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992, 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b, /* 0x43 */ 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b, 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192, 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176, 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e, 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c, 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f, 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8, 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5, 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf, 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d, 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f, 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478, /* 0x44 */ 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9, 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c, 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd, 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766, 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c, 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537, 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462, 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5, 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b, 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f, 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d, 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81, /* 0x45 */ 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53, 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650, 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25, 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c, 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43, 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224, 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486, 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9, 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6, 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c, 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812, 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7, /* 0x46 */ 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41, 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2, 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058, 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4, 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb, 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9, 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd, 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4, 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566, 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77, 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14, 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390, /* 0x47 */ 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1, 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d, 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49, 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2, 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8, 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207, 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6, 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752, 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30, 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18, 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a, 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20, /* 0x48 */ 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743, 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d, 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0, 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4, 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed, 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203, 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9, 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9, 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1, 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e, 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428, 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1, /* 0x49 */ 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b, 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802, 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b, 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b, 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247, 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a, 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6, 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c, 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe, 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5, 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17, 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3, /* 0x4a */ 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee, 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe, 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2, 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16, 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc, 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02, 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88, 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2, 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f, 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72, 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f, 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31, /* 0x4b */ 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813, 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e, 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1, 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b, 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3, 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5, 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20, 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083, 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3, 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f, 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501, 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854, /* 0x4c */ 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0, 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a, 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08, 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64, 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018, 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6, 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279, 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511, 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5, 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c, 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3, 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3, /* 0x4d */ 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a, 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876, 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f, 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60, 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f, 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258, 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3, 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c, 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38, 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b, 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51, 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01, /* 0x4e */ 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f, 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f, 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3, 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b, 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33, 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1, 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c, 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7, 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e, 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff, 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852, 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a, /* 0x4f */ 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184, 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60, 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6, 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0, 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148, 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2, 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf, 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8, 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4, 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61, 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee, 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653, /* 0x50 */ 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954, 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa, 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8, 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23, 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165, 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c, 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8, 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d, 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700, 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9, 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed, 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384, /* 0x51 */ 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74, 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb, 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5, 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259, 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6, 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814, 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf, 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5, 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a, 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f, 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b, 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476, /* 0x52 */ 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200, 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce, 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b, 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d, 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0, 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a, 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091, 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6, 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3, 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335, 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6, 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690, /* 0x53 */ 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71, 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8, 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38, 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24, 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709, 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2, 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59, 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88, 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd, 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea, 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89, /* 0x54 */ 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a, 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed, 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f, 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3, 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300, 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55, 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d, 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f, 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1, 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23, 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe, 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67, /* 0x55 */ 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8, 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb, 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d, 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd, 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756, 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db, 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087, 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517, 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827, 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707, 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0, 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f, /* 0x56 */ 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431, 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c, 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307, 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7, 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9, 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d, 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd, 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5, 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4, 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010, 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457, 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51, /* 0x57 */ 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13, 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5, 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58, 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c, 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179, 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4, 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5, 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f, 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b, 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a, 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750, 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x58 */ 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98, 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315, 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997, 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69, 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d, 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326, 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e, 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c, 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54, 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede, 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09, 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d, /* 0x59 */ 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89, 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94, 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1, 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e, 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043, 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9, 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107, 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46, 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9, 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156, 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34, 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc, /* 0x5a */ 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa, 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce, 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf, 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6, 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c, 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b, 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a, 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369, 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c, 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674, 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099, 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba, /* 0x5b */ 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7, 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef, 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139, 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be, 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4, 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c, 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c, 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742, 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d, 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7, 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2, 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd, /* 0x5c */ 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844, 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8, 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8, 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be, 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb, 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4, 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307, 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311, 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351, 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b, 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317, 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365, /* 0x5d */ 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0, 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385, 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e, 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807, 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411, 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea, 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a, 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c, 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1, 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba, 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c, 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a, /* 0x5e */ 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564, 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8, 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7, 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629, 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955, 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c, 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322, 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a, 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc, 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452, 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c, 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496, /* 0x5f */ 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7, 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519, 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412, 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d, 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3, 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9, 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de, 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523, 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549, 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c, /* 0x60 */ 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c, 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f, 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594, 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec, 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3, 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608, 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d, 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c, 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c, 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5, 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f, 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c, /* 0x61 */ 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a, 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a, 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3, 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02, 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b, 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d, 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d, 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89, 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc, 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3, 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2, 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa, /* 0x62 */ 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315, 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d, 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b, 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a, 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91, 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3, 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4, 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4, 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035, 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f, 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042, /* 0x63 */ 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092, 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6, 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100, 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7, 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3, 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608, 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54, 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68, 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad, 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa, 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe, /* 0x64 */ 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19, 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52, 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93, 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5, 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9, 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b, 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44, 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7, 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2, 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f, 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d, 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1, /* 0x65 */ 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde, 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f, 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f, 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07, 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6, 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d, 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074, 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56, 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66, 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e, 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3, /* 0x66 */ 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af, 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8, 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13, 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec, 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2, 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8, 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15, 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75, 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85, 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b, 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7, 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9, /* 0x67 */ 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb, 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8, 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa, 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b, 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b, 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32, 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e, 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7, 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a, 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b, 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c, /* 0x68 */ 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477, 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b, 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea, 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5, 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e, 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a, 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd, 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832, 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883, 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a, 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b, 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9, /* 0x69 */ 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971, 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998, 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966, 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4, 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff, 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e, 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28, 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337, 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d, 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72, 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c, 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b, /* 0x6a */ 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217, 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7, 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee, 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006, 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677, 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6, 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45, 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7, 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e, 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b, 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0, /* 0x6b */ 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9, 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a, 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b, 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c, 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4, 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4, 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4, 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a, 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153, 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d, 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5, 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb, /* 0x6c */ 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59, 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40, 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4, 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096, 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca, 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168, 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5, 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228, 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248, 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953, 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985, 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0, /* 0x6d */ 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab, 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206, 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d, 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823, 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847, 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1, 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec, 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b, 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707, 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768, /* 0x6e */ 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791, 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e, 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61, 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e, 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a, 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a, 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac, 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5, 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0, 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea, /* 0x6f */ 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7, 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522, 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f, 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573, 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb, 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14, /* 0x70 */ 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e, 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22, 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36, 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51, 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d, 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3, 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2, 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7, 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c, 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619, /* 0x71 */ 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f, 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c, 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80, 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad, 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2, 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5, 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919, 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966, 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014, 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, /* 0x72 */ 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e, 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c, 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b, 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6, 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9, 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0, 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707, 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e, 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729, 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760, 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764, 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2, /* 0x73 */ 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5, 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0, 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe, 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44, 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15, 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e, 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58, 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b, 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac, 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4, 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea, 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b, /* 0x74 */ 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201, 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d, 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e, 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e, 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7, 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c, 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc, 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf, 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3, 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4, 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47, 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164, /* 0x75 */ 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172, 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2, 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba, 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5, 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde, 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3, 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f, 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35, 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a, 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94, 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98, 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc, /* 0x76 */ 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3, 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d, 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc, 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8, 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82, 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90, 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8, 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb, /* 0x77 */ 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c, 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2, 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc, 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45, 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d, 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb, 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23, 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92, 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf, 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c, 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44, }; static int gb2312_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x21 && c1 <= 0x29) || (c1 >= 0x30 && c1 <= 0x77)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; if (i < 1410) { if (i < 831) wc = gb2312_2uni_page21[i]; } else { if (i < 8178) wc = gb2312_2uni_page30[i-1410]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short gb2312_2charset[7445] = { 0x2168, 0x216c, 0x2127, 0x2163, 0x2140, 0x2141, 0x2824, 0x2822, 0x2828, 0x2826, 0x283a, 0x282c, 0x282a, 0x2830, 0x282e, 0x2142, 0x2834, 0x2832, 0x2839, 0x2821, 0x2825, 0x2827, 0x2829, 0x282d, 0x2831, 0x2823, 0x282b, 0x282f, 0x2833, 0x2835, 0x2836, 0x2837, 0x2838, 0x2126, 0x2125, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x212a, 0x212c, 0x212e, 0x212f, 0x2130, 0x2131, 0x212d, 0x216b, 0x2164, 0x2165, 0x2179, 0x2166, 0x216d, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276, 0x2277, 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x217b, 0x217c, 0x217a, 0x217d, 0x214a, 0x2147, 0x2146, 0x214c, 0x2158, 0x215e, 0x214f, 0x214e, 0x2144, 0x2145, 0x2149, 0x2148, 0x2152, 0x2153, 0x2160, 0x215f, 0x2143, 0x214b, 0x2157, 0x2156, 0x2155, 0x2159, 0x2154, 0x215c, 0x215d, 0x215a, 0x215b, 0x2151, 0x214d, 0x2150, 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, 0x2260, 0x2261, 0x2262, 0x2245, 0x2246, 0x2247, 0x2248, 0x2249, 0x224a, 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, 0x2250, 0x2251, 0x2252, 0x2253, 0x2254, 0x2255, 0x2256, 0x2257, 0x2258, 0x2231, 0x2232, 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239, 0x223a, 0x223b, 0x223c, 0x223d, 0x223e, 0x223f, 0x2240, 0x2241, 0x2242, 0x2243, 0x2244, 0x2924, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929, 0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f, 0x2930, 0x2931, 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, 0x2940, 0x2941, 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949, 0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f, 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, 0x2176, 0x2175, 0x2178, 0x2177, 0x2174, 0x2173, 0x2170, 0x2172, 0x2171, 0x216f, 0x216e, 0x2162, 0x2161, 0x2121, 0x2122, 0x2123, 0x2128, 0x2129, 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b, 0x213e, 0x213f, 0x217e, 0x2132, 0x2133, 0x213c, 0x213d, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472, 0x2473, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2124, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853, 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b, 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863, 0x2864, 0x2865, 0x2866, 0x2867, 0x2868, 0x2869, 0x2265, 0x2266, 0x2267, 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, 0x226d, 0x226e, 0x523b, 0x3621, 0x465f, 0x4d72, 0x5549, 0x487d, 0x494f, 0x4f42, 0x5822, 0x323b, 0x536b, 0x5824, 0x3373, 0x5728, 0x4752, 0x5827, 0x4a40, 0x4770, 0x317b, 0x5235, 0x3454, 0x362b, 0x4b3f, 0x5829, 0x362a, 0x413d, 0x514f, 0x4925, 0x582d, 0x3876, 0x513e, 0x635c, 0x5650, 0x3761, 0x342e, 0x4159, 0x583c, 0x4d68, 0x3524, 0x4e2a, 0x5677, 0x4076, 0x3e59, 0x582f, 0x444b, 0x3e43, 0x5831, 0x4334, 0x5265, 0x562e, 0x4e5a, 0x5527, 0x3a75, 0x3726, 0x4056, 0x4639, 0x4552, 0x4747, 0x3954, 0x334b, 0x5252, 0x583f, 0x3e45, 0x4672, 0x5232, 0x4f30, 0x4f67, 0x4a69, 0x5840, 0x4272, 0x4252, 0x4869, 0x472c, 0x414b, 0x5368, 0x5579, 0x4a42, 0x367e, 0x5821, 0x535a, 0x3f77, 0x5446, 0x3b25, 0x5841, 0x4e65, 0x3e2e, 0x5828, 0x5147, 0x5029, 0x583d, 0x596f, 0x4d76, 0x3f3a, 0x3d3b, 0x3a25, 0x5260, 0x327a, 0x3a60, 0x4436, 0x4f6d, 0x3e29, 0x4d24, 0x4141, 0x4757, 0x5971, 0x5974, 0x484b, 0x5869, 0x525a, 0x4a32, 0x484a, 0x586c, 0x586a, 0x5846, 0x3d76, 0x464d, 0x3370, 0x586b, 0x3d71, 0x3d69, 0x4854, 0x3453, 0x4258, 0x3256, 0x5750, 0x4a4b, 0x4b7b, 0x554c, 0x3836, 0x4f49, 0x595a, 0x5870, 0x472a, 0x586e, 0x347a, 0x416e, 0x5254, 0x586d, 0x5247, 0x586f, 0x4347, 0x5176, 0x5659, 0x5872, 0x5875, 0x3c7e, 0x3c5b, 0x484e, 0x375d, 0x3742, 0x4673, 0x5878, 0x5241, 0x4e69, 0x3c3f, 0x377c, 0x3725, 0x505d, 0x565a, 0x5345, 0x3b6f, 0x3b61, 0x5871, 0x4921, 0x4e30, 0x342b, 0x5873, 0x494b, 0x5876, 0x4257, 0x5877, 0x4e31, 0x5879, 0x322e, 0x3940, 0x5923, 0x3069, 0x4166, 0x496c, 0x4b45, 0x4b46, 0x5924, 0x3568, 0x352b, 0x4e3b, 0x354d, 0x5721, 0x5774, 0x5353, 0x4c65, 0x3a4e, 0x5922, 0x595c, 0x5360, 0x587d, 0x3770, 0x5777, 0x587e, 0x587a, 0x5921, 0x4463, 0x5336, 0x5874, 0x595d, 0x587b, 0x4565, 0x4050, 0x5170, 0x305b, 0x3c51, 0x5926, 0x5925, 0x592c, 0x592e, 0x592b, 0x4a39, 0x5929, 0x5636, 0x335e, 0x5928, 0x407d, 0x4a4c, 0x592a, 0x5927, 0x5930, 0x3631, 0x3929, 0x5240, 0x4f40, 0x4242, 0x3d44, 0x556c, 0x3260, 0x4748, 0x3f6b, 0x592d, 0x592f, 0x4e6a, 0x3a6e, 0x4756, 0x3163, 0x3459, 0x366d, 0x5934, 0x3f21, 0x595e, 0x474e, 0x407e, 0x5938, 0x4b57, 0x377d, 0x5935, 0x5937, 0x3123, 0x5361, 0x5939, 0x5045, 0x5936, 0x5931, 0x5932, 0x4129, 0x5933, 0x3c73, 0x505e, 0x3829, 0x3e63, 0x593d, 0x593a, 0x3033, 0x5942, 0x5944, 0x3136, 0x593f, 0x3539, 0x3e73, 0x4c48, 0x3a72, 0x5250, 0x5943, 0x3d68, 0x332b, 0x5945, 0x3e6b, 0x5946, 0x593b, 0x445f, 0x593e, 0x5941, 0x5940, 0x552e, 0x5635, 0x4763, 0x5948, 0x3c59, 0x594a, 0x593c, 0x594b, 0x462b, 0x5949, 0x5776, 0x4d23, 0x3d21, 0x594c, 0x453c, 0x4d35, 0x594d, 0x5947, 0x3325, 0x3f7e, 0x3835, 0x407c, 0x3078, 0x3476, 0x594e, 0x594f, 0x3422, 0x5950, 0x345f, 0x3041, 0x5951, 0x4935, 0x4f71, 0x5952, 0x4145, 0x5956, 0x492e, 0x5955, 0x5954, 0x5957, 0x4b5b, 0x3d29, 0x4627, 0x5953, 0x5958, 0x5959, 0x4865, 0x405c, 0x3679, 0x5823, 0x544a, 0x542a, 0x5056, 0x3364, 0x5557, 0x4f48, 0x3962, 0x3f4b, 0x4362, 0x3652, 0x4d43, 0x596e, 0x5970, 0x3533, 0x3635, 0x3e24, 0x486b, 0x482b, 0x304b, 0x392b, 0x4179, 0x5962, 0x403c, 0x3932, 0x3958, 0x504b, 0x3178, 0x4664, 0x3e5f, 0x3564, 0x5748, 0x5178, 0x3c66, 0x4a5e, 0x3c3d, 0x5966, 0x5867, 0x445a, 0x3854, 0x483d, 0x3261, 0x5459, 0x4330, 0x4361, 0x5a22, 0x485f, 0x5034, 0x3e7c, 0x4529, 0x395a, 0x5a23, 0x5429, 0x5a24, 0x597b, 0x362c, 0x376b, 0x3179, 0x597c, 0x3365, 0x3e76, 0x3f76, 0x5231, 0x4064, 0x3633, 0x597e, 0x597d, 0x3e3b, 0x4660, 0x573c, 0x5a21, 0x4139, 0x3572, 0x4168, 0x3c75, 0x3455, 0x415d, 0x447d, 0x3c38, 0x3732, 0x376f, 0x596c, 0x463e, 0x3f2d, 0x3b4b, 0x354a, 0x5b49, 0x5057, 0x4d39, 0x303c, 0x3376, 0x3b77, 0x5b4a, 0x3a2f, 0x5464, 0x3536, 0x3573, 0x5856, 0x4850, 0x3756, 0x4750, 0x5857, 0x3f2f, 0x5b3b, 0x5858, 0x504c, 0x3b2e, 0x6b3e, 0x4150, 0x4175, 0x5472, 0x3855, 0x3434, 0x3375, 0x493e, 0x4550, 0x4559, 0x407b, 0x3170, 0x5859, 0x394e, 0x353d, 0x585a, 0x5646, 0x4b22, 0x482f, 0x4932, 0x344c, 0x3f4c, 0x3974, 0x585b, 0x585c, 0x3667, 0x3c41, 0x4c6a, 0x4f77, 0x585d, 0x4730, 0x3950, 0x3d23, 0x4c5e, 0x464a, 0x5860, 0x585e, 0x585f, 0x307e, 0x3e67, 0x4a23, 0x3c74, 0x3831, 0x386e, 0x5862, 0x3d4b, 0x5864, 0x5863, 0x457c, 0x5865, 0x5866, 0x4126, 0x4830, 0x306c, 0x3926, 0x3c53, 0x4e71, 0x5b3d, 0x4153, 0x362f, 0x567a, 0x452c, 0x3d59, 0x5b3e, 0x5b3f, 0x4078, 0x3e22, 0x404d, 0x5b40, 0x4a46, 0x322a, 0x5342, 0x4363, 0x512b, 0x5b42, 0x4055, 0x5b43, 0x3f31, 0x443c, 0x475a, 0x5b44, 0x5968, 0x4957, 0x3934, 0x4e70, 0x5448, 0x307c, 0x3452, 0x5059, 0x5969, 0x5e4b, 0x596b, 0x5830, 0x3b2f, 0x3131, 0x3357, 0x584e, 0x5451, 0x3d33, 0x3f6f, 0x4f3b, 0x5850, 0x374b, 0x5851, 0x4625, 0x4778, 0x523d, 0x5852, 0x4464, 0x4a2e, 0x4727, 0x5826, 0x497d, 0x4e67, 0x3b5c, 0x306b, 0x3b2a, 0x502d, 0x3130, 0x5764, 0x573f, 0x3525, 0x4274, 0x444f, 0x3229, 0x3237, 0x3165, 0x5f32, 0x553c, 0x3f28, 0x422c, 0x5855, 0x4231, 0x5854, 0x4e54, 0x5a60, 0x4e40, 0x5834, 0x432e, 0x5321, 0x4e23, 0x3c34, 0x4834, 0x4251, 0x3e6d, 0x5036, 0x5a61, 0x4764, 0x3327, 0x3672, 0x4c7c, 0x407a, 0x4077, 0x5139, 0x5161, 0x5847, 0x325e, 0x4065, 0x3a71, 0x5848, 0x542d, 0x4f61, 0x5849, 0x584a, 0x4f43, 0x3378, 0x3e47, 0x584b, 0x5b4c, 0x4825, 0x4f58, 0x487e, 0x324e, 0x5356, 0x3266, 0x3c30, 0x5351, 0x4b2b, 0x3734, 0x3722, 0x4a65, 0x4821, 0x4a5c, 0x3164, 0x5070, 0x4551, 0x5b45, 0x357e, 0x3f5a, 0x3945, 0x3e64, 0x416d, 0x5f36, 0x5f35, 0x563b, 0x3d50, 0x5559, 0x3048, 0x3623, 0x3f49, 0x4c28, 0x5f33, 0x4a37, 0x5352, 0x584f, 0x5236, 0x3a45, 0x4b3e, 0x4c3e, 0x5f37, 0x3570, 0x5f34, 0x5375, 0x3354, 0x3877, 0x5f3a, 0x3a4f, 0x3c2a, 0x3575, 0x4d2c, 0x437b, 0x3a73, 0x4074, 0x4d42, 0x4f72, 0x5f38, 0x4f45, 0x4240, 0x5f39, 0x4270, 0x3e7d, 0x415f, 0x4d4c, 0x5277, 0x374d, 0x5f41, 0x5f44, 0x3771, 0x3049, 0x3656, 0x3754, 0x3a2c, 0x4c7d, 0x3f54, 0x4b31, 0x4674, 0x5628, 0x5f45, 0x4e62, 0x3333, 0x4e7c, 0x3435, 0x4e47, 0x3a70, 0x4e61, 0x513d, 0x5f40, 0x3474, 0x334a, 0x3866, 0x5f3b, 0x4445, 0x5f3c, 0x5f3d, 0x5f3e, 0x453b, 0x5f3f, 0x5f42, 0x5431, 0x5f43, 0x473a, 0x4e58, 0x4458, 0x5f4a, 0x5f4f, 0x565c, 0x5f49, 0x5f5a, 0x4e36, 0x3a47, 0x5f4e, 0x5f48, 0x455e, 0x496b, 0x3a74, 0x437c, 0x3e57, 0x5f46, 0x5f4d, 0x4558, 0x5526, 0x3a4d, 0x3e4c, 0x533d, 0x3840, 0x5664, 0x5f47, 0x393e, 0x3f27, 0x417c, 0x5f4b, 0x5f4c, 0x5f50, 0x5f5b, 0x5f65, 0x5f57, 0x5f56, 0x5749, 0x5f63, 0x5f64, 0x656b, 0x5227, 0x5f52, 0x3f29, 0x545b, 0x3f48, 0x5f54, 0x4f4c, 0x5f5d, 0x514a, 0x5f5e, 0x3027, 0x4637, 0x5f53, 0x3a65, 0x365f, 0x4d5b, 0x397e, 0x5455, 0x5f5f, 0x4f6c, 0x3025, 0x5f67, 0x5f51, 0x5146, 0x5f55, 0x5f58, 0x5f59, 0x5f5c, 0x3b29, 0x5f60, 0x5f61, 0x5f62, 0x5f66, 0x5f68, 0x5334, 0x3867, 0x4536, 0x5f6a, 0x495a, 0x4128, 0x4444, 0x3f5e, 0x4f78, 0x555c, 0x5f6e, 0x3238, 0x3a5f, 0x5f6c, 0x5b41, 0x5164, 0x4b74, 0x343d, 0x3026, 0x5f71, 0x4c46, 0x5f72, 0x5f6d, 0x5f69, 0x5f6b, 0x5f6f, 0x5f70, 0x3b3d, 0x5f73, 0x5f74, 0x3b23, 0x4a5b, 0x4e28, 0x6027, 0x332a, 0x6026, 0x6021, 0x5f7e, 0x4d59, 0x5f7c, 0x5f7a, 0x3f50, 0x5744, 0x494c, 0x5f78, 0x3021, 0x5f7d, 0x5f7b, 0x6022, 0x6028, 0x3748, 0x4621, 0x4936, 0x4032, 0x5f75, 0x453e, 0x5844, 0x5f79, 0x4476, 0x6023, 0x6024, 0x6025, 0x5025, 0x6034, 0x4c64, 0x6031, 0x3f26, 0x602f, 0x4e39, 0x602b, 0x4946, 0x402e, 0x602e, 0x3a6d, 0x3a30, 0x6029, 0x5f76, 0x6033, 0x6038, 0x342d, 0x6039, 0x4f32, 0x3a48, 0x6030, 0x507a, 0x602c, 0x547b, 0x5f77, 0x4567, 0x602d, 0x5377, 0x6036, 0x6037, 0x6044, 0x5061, 0x603c, 0x6049, 0x604a, 0x603e, 0x602a, 0x4924, 0x6041, 0x6032, 0x4a48, 0x6043, 0x6035, 0x4e4b, 0x4b43, 0x604d, 0x6046, 0x6042, 0x604b, 0x603a, 0x603f, 0x6040, 0x6045, 0x6047, 0x6048, 0x604c, 0x603b, 0x4b54, 0x6055, 0x6056, 0x6052, 0x6050, 0x3c4e, 0x6051, 0x3842, 0x5845, 0x506a, 0x426f, 0x604f, 0x603d, 0x6054, 0x6053, 0x6057, 0x605c, 0x6058, 0x5676, 0x3330, 0x576c, 0x4b3b, 0x605a, 0x4e7b, 0x3a59, 0x6061, 0x605d, 0x522d, 0x6062, 0x605b, 0x6059, 0x605f, 0x6060, 0x605e, 0x6064, 0x4677, 0x582c, 0x546b, 0x6066, 0x4a49, 0x6065, 0x3841, 0x6067, 0x6068, 0x6069, 0x6063, 0x3a3f, 0x4c67, 0x606a, 0x4f79, 0x606b, 0x4842, 0x3d40, 0x4452, 0x606c, 0x606d, 0x4774, 0x4b44, 0x606e, 0x3b58, 0x5836, 0x5272, 0x606f, 0x4d45, 0x365a, 0x6071, 0x5430, 0x4027, 0x3451, 0x4e27, 0x6070, 0x6072, 0x394c, 0x397a, 0x4d3c, 0x6073, 0x4654, 0x6074, 0x5432, 0x4826, 0x6076, 0x6075, 0x6077, 0x4d41, 0x4a25, 0x545a, 0x5b57, 0x5b59, 0x5b58, 0x3967, 0x5b5c, 0x5b5d, 0x3558, 0x5b5a, 0x5b5b, 0x3321, 0x5b5f, 0x3b78, 0x5637, 0x5b60, 0x3e79, 0x373b, 0x5b50, 0x4c2e, 0x3f32, 0x3b35, 0x5778, 0x3f53, 0x3f69, 0x3c61, 0x4c33, 0x5b5e, 0x3053, 0x4e6b, 0x3758, 0x5739, 0x4642, 0x4024, 0x4c39, 0x5b67, 0x5b61, 0x463a, 0x5b63, 0x5b68, 0x4577, 0x5b6a, 0x5b69, 0x3f40, 0x5b66, 0x5b65, 0x3439, 0x402c, 0x4222, 0x5b62, 0x5b64, 0x504d, 0x5b6d, 0x405d, 0x5b72, 0x3662, 0x5b73, 0x5b52, 0x3938, 0x542b, 0x5b6c, 0x3f51, 0x5b70, 0x5b51, 0x3566, 0x5b6b, 0x3f65, 0x5b6e, 0x5b71, 0x5b79, 0x3921, 0x3023, 0x4271, 0x3347, 0x5b6f, 0x5b78, 0x4652, 0x5b74, 0x5b75, 0x5b77, 0x5b76, 0x5b7e, 0x5372, 0x323a, 0x5b7d, 0x5c24, 0x5b7b, 0x5b7a, 0x5b7c, 0x4560, 0x3b79, 0x5c23, 0x5c25, 0x4c43, 0x3651, 0x5d40, 0x5c21, 0x5c22, 0x4735, 0x3669, 0x5c27, 0x5c26, 0x5c29, 0x3124, 0x354c, 0x3f30, 0x515f, 0x3642, 0x5c28, 0x4b7a, 0x6b73, 0x4b5c, 0x4b7e, 0x4c41, 0x487b, 0x5c2a, 0x4c6e, 0x5c2b, 0x5b53, 0x5c2f, 0x5c2c, 0x3e33, 0x4a7b, 0x5c2d, 0x494a, 0x4439, 0x473d, 0x5c2e, 0x5476, 0x5066, 0x442b, 0x3655, 0x5b54, 0x315a, 0x5b55, 0x5b56, 0x3a3e, 0x4840, 0x4a3f, 0x4849, 0x5733, 0x4979, 0x3f47, 0x3a78, 0x523c, 0x623a, 0x3426, 0x3138, 0x3834, 0x4f44, 0x5967, 0x4f26, 0x4d62, 0x596d, 0x3660, 0x5239, 0x393b, 0x6239, 0x6237, 0x3473, 0x4c6c, 0x4c2b, 0x3772, 0x5832, 0x516b, 0x3a3b, 0x4a27, 0x4d37, 0x5244, 0x3f64, 0x3c50, 0x3661, 0x5e45, 0x5e46, 0x5b3c, 0x5159, 0x4666, 0x444e, 0x376e, 0x375c, 0x3f7c, 0x5760, 0x4675, 0x313c, 0x5e48, 0x3d31, 0x4c57, 0x5e4a, 0x5e49, 0x356c, 0x495d, 0x3042, 0x452e, 0x452b, 0x444c, 0x3c69, 0x4b7d, 0x3a43, 0x6579, 0x4867, 0x657a, 0x4d7d, 0x5731, 0x383e, 0x4268, 0x4851, 0x657b, 0x364a, 0x3c4b, 0x517d, 0x6621, 0x436e, 0x6624, 0x657e, 0x6625, 0x4d57, 0x3741, 0x657c, 0x657d, 0x6623, 0x445d, 0x6628, 0x6627, 0x4343, 0x465e, 0x662a, 0x4437, 0x6622, 0x4a3c, 0x3d63, 0x3943, 0x6626, 0x5055, 0x4e2f, 0x6629, 0x6630, 0x5226, 0x3d2a, 0x662d, 0x662f, 0x4051, 0x524c, 0x3c27, 0x6631, 0x5276, 0x574b, 0x4d7e, 0x4d5e, 0x4226, 0x662b, 0x662c, 0x3d3f, 0x662e, 0x6633, 0x6632, 0x6636, 0x6638, 0x446f, 0x4448, 0x3e6a, 0x496f, 0x6637, 0x3670, 0x4364, 0x5369, 0x6634, 0x6635, 0x4822, 0x663d, 0x6639, 0x4645, 0x4d71, 0x663b, 0x663c, 0x3b69, 0x663e, 0x663a, 0x4037, 0x5324, 0x663f, 0x4974, 0x6643, 0x6644, 0x5076, 0x433d, 0x4344, 0x6642, 0x6641, 0x6647, 0x4f31, 0x6b74, 0x664a, 0x6645, 0x3c5e, 0x4929, 0x3c35, 0x4f53, 0x6648, 0x6649, 0x664e, 0x6650, 0x6651, 0x664b, 0x3555, 0x664c, 0x664f, 0x445b, 0x6646, 0x664d, 0x6652, 0x6654, 0x6653, 0x6655, 0x5978, 0x6656, 0x6657, 0x5753, 0x665d, 0x665e, 0x3f57, 0x5450, 0x5756, 0x3466, 0x4b6f, 0x665a, 0x5843, 0x574e, 0x5022, 0x434f, 0x665f, 0x3c3e, 0x3942, 0x665b, 0x5127, 0x3a22, 0x424f, 0x582b, 0x4a6b, 0x656e, 0x665c, 0x3775, 0x4866, 0x4475, 0x6532, 0x447e, 0x4b7c, 0x6533, 0x552c, 0x536e, 0x4a58, 0x3032, 0x4b4e, 0x4d6a, 0x3a6a, 0x6535, 0x6534, 0x575a, 0x3959, 0x5666, 0x3628, 0x4d70, 0x524b, 0x3126, 0x4a35, 0x3368, 0x4973, 0x3f4d, 0x507b, 0x4a52, 0x6536, 0x3b42, 0x4f5c, 0x392c, 0x5457, 0x3a26, 0x5167, 0x4f7c, 0x3c52, 0x6537, 0x485d, 0x3f6d, 0x3176, 0x4b5e, 0x3c45, 0x3c44, 0x527a, 0x435c, 0x3f5c, 0x383b, 0x4342, 0x3a2e, 0x5422, 0x475e, 0x442f, 0x326c, 0x3951, 0x653b, 0x4148, 0x552f, 0x653c, 0x653e, 0x3467, 0x3654, 0x4b42, 0x5130, 0x353c, 0x4a59, 0x3762, 0x4964, 0x3d2b, 0x4e3e, 0x5770, 0x5021, 0x4959, 0x367b, 0x6658, 0x3c62, 0x333e, 0x4950, 0x6659, 0x3322, 0x5e4c, 0x5348, 0x5e4d, 0x5222, 0x5e4e, 0x3e4d, 0x5e4f, 0x4a2c, 0x527c, 0x335f, 0x656a, 0x4461, 0x3e21, 0x4e32, 0x4472, 0x3e56, 0x4628, 0x3263, 0x3e53, 0x477c, 0x4c6b, 0x3d6c, 0x4e5d, 0x4a3a, 0x4641, 0x656c, 0x503c, 0x5539, 0x656d, 0x4a74, 0x4d40, 0x4245, 0x656f, 0x4244, 0x6570, 0x6578, 0x4d4d, 0x493d, 0x5259, 0x6128, 0x536c, 0x4b6a, 0x4671, 0x612c, 0x6127, 0x6129, 0x612a, 0x612f, 0x326d, 0x612b, 0x385a, 0x612d, 0x612e, 0x6130, 0x353a, 0x6131, 0x6133, 0x6138, 0x5152, 0x6136, 0x6135, 0x416b, 0x6137, 0x5440, 0x6132, 0x613a, 0x3036, 0x6134, 0x3f79, 0x6139, 0x613b, 0x613e, 0x613c, 0x5645, 0x4f3f, 0x613d, 0x613f, 0x424d, 0x366b, 0x5378, 0x474d, 0x3765, 0x3e7e, 0x6140, 0x6141, 0x6147, 0x3367, 0x4669, 0x345e, 0x5142, 0x6148, 0x6146, 0x6145, 0x6143, 0x6142, 0x3140, 0x5538, 0x6144, 0x614b, 0x614c, 0x614a, 0x6f7a, 0x6153, 0x6152, 0x4736, 0x6149, 0x614e, 0x6150, 0x6154, 0x6151, 0x614d, 0x614f, 0x6155, 0x6156, 0x6157, 0x6158, 0x615a, 0x615b, 0x4e21, 0x675d, 0x3428, 0x565d, 0x5132, 0x3332, 0x3924, 0x5773, 0x4749, 0x3e5e, 0x392e, 0x4e57, 0x326e, 0x5b4f, 0x3c3a, 0x5251, 0x4b48, 0x304d, 0x4f6f, 0x5963, 0x3d6d, 0x3152, 0x4a50, 0x323c, 0x4b27, 0x372b, 0x4a26, 0x4f23, 0x6078, 0x554a, 0x607b, 0x607a, 0x4541, 0x4c7b, 0x4131, 0x6079, 0x5663, 0x322f, 0x5644, 0x355b, 0x3478, 0x5621, 0x4f2f, 0x306f, 0x607c, 0x6121, 0x3323, 0x607d, 0x607e, 0x4331, 0x435d, 0x6122, 0x3779, 0x3b4f, 0x6123, 0x443b, 0x6124, 0x6125, 0x6126, 0x3431, 0x3849, 0x463d, 0x446a, 0x3222, 0x5052, 0x675b, 0x3b43, 0x5357, 0x5344, 0x3963, 0x624f, 0x572f, 0x476c, 0x3153, 0x3432, 0x6251, 0x5072, 0x422e, 0x6250, 0x3f62, 0x5326, 0x3557, 0x6252, 0x356a, 0x436d, 0x387d, 0x382e, 0x4553, 0x374f, 0x6254, 0x6253, 0x3648, 0x5779, 0x4d25, 0x6258, 0x6256, 0x4a7c, 0x3f35, 0x5339, 0x6255, 0x6257, 0x412e, 0x4048, 0x625b, 0x625a, 0x402a, 0x414e, 0x625c, 0x625d, 0x625e, 0x5b48, 0x5153, 0x4d22, 0x3d28, 0x5e43, 0x5825, 0x3f2a, 0x5b4d, 0x526c, 0x467a, 0x452a, 0x5e44, 0x3157, 0x5f2e, 0x4a3d, 0x5f31, 0x392d, 0x527d, 0x3825, 0x3a6b, 0x335a, 0x355c, 0x5545, 0x4356, 0x4f52, 0x3b21, 0x6573, 0x6572, 0x6574, 0x4d64, 0x4875, 0x352f, 0x473f, 0x6576, 0x6c30, 0x6566, 0x3969, 0x3531, 0x423c, 0x6568, 0x6567, 0x6569, 0x524d, 0x616a, 0x504e, 0x4d2e, 0x5165, 0x324a, 0x316b, 0x3172, 0x456d, 0x5543, 0x5330, 0x615c, 0x615d, 0x525b, 0x3339, 0x314b, 0x4d79, 0x5577, 0x615e, 0x3e36, 0x347d, 0x615f, 0x3a5c, 0x6160, 0x3b32, 0x4249, 0x6161, 0x506c, 0x4d3d, 0x6162, 0x3543, 0x4547, 0x6163, 0x6164, 0x5379, 0x6165, 0x512d, 0x6166, 0x4e22, 0x6167, 0x3542, 0x6168, 0x3b55, 0x5044, 0x6260, 0x3158, 0x5264, 0x6261, 0x3c49, 0x484c, 0x6263, 0x6c7e, 0x6c7d, 0x5f2f, 0x6262, 0x563e, 0x4d7c, 0x4326, 0x6343, 0x5652, 0x6267, 0x6268, 0x5347, 0x626c, 0x3f6c, 0x626d, 0x6265, 0x3340, 0x446e, 0x626e, 0x5043, 0x3a76, 0x6269, 0x375e, 0x3b33, 0x4c2c, 0x4b4b, 0x6264, 0x6266, 0x626a, 0x626b, 0x6277, 0x6274, 0x5475, 0x6273, 0x452d, 0x557a, 0x4542, 0x3240, 0x626f, 0x6272, 0x412f, 0x4b3c, 0x3521, 0x6279, 0x3c31, 0x6271, 0x5054, 0x5439, 0x6275, 0x3956, 0x6276, 0x4753, 0x6270, 0x575c, 0x6d21, 0x6278, 0x6d25, 0x627e, 0x4a51, 0x4135, 0x3b50, 0x3f56, 0x3a63, 0x4b21, 0x6d26, 0x6d23, 0x6d22, 0x3b56, 0x6d27, 0x5074, 0x6d24, 0x3a5e, 0x3677, 0x6321, 0x3632, 0x4c71, 0x3927, 0x4f22, 0x4721, 0x3f52, 0x3671, 0x627a, 0x627b, 0x627d, 0x627c, 0x4455, 0x6322, 0x5341, 0x6327, 0x4744, 0x4f24, 0x6329, 0x3a37, 0x6328, 0x3b5a, 0x6323, 0x6324, 0x632a, 0x6326, 0x4e72, 0x5346, 0x3b3c, 0x5443, 0x447a, 0x6d28, 0x507c, 0x6325, 0x4375, 0x632d, 0x312f, 0x6332, 0x3c42, 0x632c, 0x353f, 0x4769, 0x6330, 0x3e2a, 0x4d6f, 0x3b73, 0x4c68, 0x632f, 0x6331, 0x4f27, 0x632e, 0x4e29, 0x3b5d, 0x356b, 0x3e65, 0x3252, 0x334d, 0x3139, 0x632b, 0x3251, 0x352c, 0x395f, 0x3668, 0x4f6b, 0x6337, 0x3b4c, 0x4847, 0x504a, 0x6338, 0x336e, 0x6d29, 0x537a, 0x5364, 0x6d2a, 0x6339, 0x5262, 0x6335, 0x535e, 0x3850, 0x6333, 0x6336, 0x375f, 0x6334, 0x4022, 0x633a, 0x5438, 0x3448, 0x633b, 0x3b45, 0x4977, 0x4965, 0x443d, 0x6d2b, 0x427d, 0x3b5b, 0x3f2e, 0x4e3f, 0x633c, 0x3f36, 0x316f, 0x5477, 0x633e, 0x6d2d, 0x633f, 0x3a29, 0x6d2c, 0x633d, 0x6340, 0x3a36, 0x362e, 0x5038, 0x3043, 0x6d2e, 0x6d2f, 0x4041, 0x6341, 0x4533, 0x6342, 0x5c32, 0x6d30, 0x386a, 0x4e6c, 0x6a27, 0x5067, 0x4a79, 0x4856, 0x4f37, 0x3349, 0x4e52, 0x3d64, 0x635e, 0x3b72, 0x6a28, 0x553d, 0x465d, 0x6a29, 0x6a2a, 0x6a2c, 0x6a2b, 0x6a2e, 0x6a2d, 0x3d58, 0x6a2f, 0x423e, 0x3441, 0x3477, 0x3b27, 0x6c66, 0x6c65, 0x373f, 0x4b79, 0x3162, 0x6c67, 0x4948, 0x6c68, 0x6c69, 0x4a56, 0x5e50, 0x3245, 0x547a, 0x464b, 0x3047, 0x3472, 0x4853, 0x4d50, 0x3f38, 0x3f5b, 0x4724, 0x5634, 0x4029, 0x5e51, 0x4928, 0x516f, 0x4524, 0x3067, 0x3336, 0x4845, 0x3062, 0x3776, 0x457a, 0x3673, 0x5552, 0x3350, 0x3c3c, 0x332d, 0x3e71, 0x3051, 0x5256, 0x4a63, 0x5725, 0x4d36, 0x3636, 0x3f39, 0x555b, 0x3827, 0x4557, 0x5e52, 0x3f59, 0x4255, 0x4740, 0x3b24, 0x3128, 0x456a, 0x457b, 0x4c27, 0x3127, 0x3556, 0x4428, 0x5e53, 0x513a, 0x3369, 0x4372, 0x3777, 0x5674, 0x3523, 0x3270, 0x4434, 0x4469, 0x402d, 0x5e54, 0x3068, 0x4544, 0x4160, 0x3955, 0x3e5c, 0x4d58, 0x304e, 0x4d4f, 0x5e56, 0x3e50, 0x573e, 0x5e55, 0x5550, 0x305d, 0x4462, 0x4223, 0x3c70, 0x5335, 0x4039, 0x4521, 0x3226, 0x5471, 0x4028, 0x4a43, 0x5e57, 0x557c, 0x3930, 0x482d, 0x4b29, 0x5e59, 0x3f3d, 0x4634, 0x5727, 0x4a30, 0x4443, 0x3356, 0x3952, 0x5638, 0x6a7c, 0x3034, 0x3f66, 0x4c74, 0x4d5a, 0x563f, 0x424e, 0x4e4e, 0x4c22, 0x502e, 0x4453, 0x3532, 0x5e58, 0x5575, 0x3c37, 0x3b53, 0x3024, 0x4532, 0x346c, 0x5571, 0x6a7d, 0x5e5a, 0x4d26, 0x4d6c, 0x4e66, 0x5e5c, 0x4d31, 0x4026, 0x573d, 0x5e5b, 0x3046, 0x3a34, 0x4953, 0x4473, 0x3e68, 0x3236, 0x404c, 0x4b70, 0x3c71, 0x3b3b, 0x3537, 0x4575, 0x5e66, 0x5e63, 0x3e5d, 0x5e5f, 0x3437, 0x3d5d, 0x5e60, 0x446d, 0x4f46, 0x3560, 0x365e, 0x4a5a, 0x3574, 0x5e65, 0x5546, 0x5e61, 0x4c4d, 0x467e, 0x4545, 0x5234, 0x3e72, 0x4253, 0x4c3d, 0x3338, 0x3d53, 0x3f58, 0x4d46, 0x515a, 0x346b, 0x5e64, 0x5e5d, 0x5e67, 0x6a7e, 0x4230, 0x5e62, 0x5640, 0x3527, 0x3274, 0x5e68, 0x5e72, 0x5e6d, 0x5e71, 0x4860, 0x5761, 0x5e6f, 0x4368, 0x4c61, 0x3265, 0x523e, 0x5e6e, 0x5e6b, 0x4e55, 0x3427, 0x3f2b, 0x3e3e, 0x3d52, 0x5e69, 0x542e, 0x5e5e, 0x5e6a, 0x403f, 0x5e6c, 0x3273, 0x3869, 0x4227, 0x3d41, 0x5e75, 0x5e78, 0x322b, 0x3424, 0x346a, 0x4926, 0x5e76, 0x4b51, 0x3863, 0x5e77, 0x5e7a, 0x5e79, 0x4c42, 0x3061, 0x346e, 0x653a, 0x502f, 0x326b, 0x6b21, 0x5e74, 0x4963, 0x5e73, 0x305a, 0x5221, 0x3177, 0x4c2f, 0x5e70, 0x4b24, 0x552a, 0x5e7b, 0x345d, 0x4426, 0x5e7d, 0x437e, 0x4421, 0x5f21, 0x414c, 0x5e7c, 0x3e6f, 0x4632, 0x3345, 0x4876, 0x4b3a, 0x5e7e, 0x5f24, 0x5732, 0x3337, 0x4143, 0x474b, 0x3225, 0x3469, 0x572b, 0x446c, 0x5f22, 0x5f23, 0x5f25, 0x3a33, 0x5f26, 0x405e, 0x4943, 0x3259, 0x4766, 0x5f27, 0x475c, 0x5f28, 0x6b22, 0x4b53, 0x5f2a, 0x5f29, 0x3241, 0x454a, 0x5f2b, 0x545c, 0x4841, 0x5f2c, 0x3e70, 0x5f2d, 0x5627, 0x6a37, 0x6b36, 0x4a55, 0x587c, 0x3844, 0x3925, 0x3745, 0x557e, 0x394a, 0x5027, 0x744d, 0x3550, 0x4374, 0x3e48, 0x6b37, 0x303d, 0x3d4c, 0x4132, 0x3156, 0x3328, 0x3852, 0x4922, 0x3658, 0x6b38, 0x3e34, 0x4a7d, 0x4743, 0x557b, 0x3773, 0x4e44, 0x552b, 0x3173, 0x6c33, 0x305f, 0x6c35, 0x3637, 0x414f, 0x757a, 0x5031, 0x5565, 0x4e53, 0x3d6f, 0x3362, 0x382b, 0x5536, 0x6d3d, 0x364f, 0x4b39, 0x5042, 0x373d, 0x6c36, 0x4a29, 0x4554, 0x6c39, 0x6c38, 0x4243, 0x6c37, 0x507d, 0x6c3a, 0x6c3b, 0x5765, 0x6c3c, 0x6c3d, 0x466c, 0x4e5e, 0x3c48, 0x4855, 0x3529, 0x3e49, 0x563c, 0x5467, 0x512e, 0x5071, 0x6a38, 0x6a39, 0x6a3a, 0x3a35, 0x4a31, 0x3f75, 0x4d7a, 0x6a40, 0x303a, 0x6a3e, 0x4025, 0x6a3b, 0x327d, 0x4377, 0x3b68, 0x5257, 0x4e74, 0x6a3f, 0x6a3c, 0x6a43, 0x5047, 0x5333, 0x343a, 0x4341, 0x5772, 0x5551, 0x4a47, 0x6a45, 0x6a44, 0x6a47, 0x6a46, 0x5667, 0x4f54, 0x6a4b, 0x3b4e, 0x3d7a, 0x494e, 0x6a4c, 0x4939, 0x4f7e, 0x6a4a, 0x544e, 0x6a4d, 0x6a4f, 0x4d6d, 0x6a49, 0x6a4e, 0x4e6e, 0x3b5e, 0x333f, 0x4655, 0x3e30, 0x4e7a, 0x4767, 0x3e27, 0x6a50, 0x5647, 0x4140, 0x545d, 0x6a51, 0x4f3e, 0x6a52, 0x4a6e, 0x452f, 0x3035, 0x6a54, 0x6a53, 0x745f, 0x443a, 0x3129, 0x655f, 0x6a55, 0x4a6f, 0x6a56, 0x6a57, 0x4658, 0x6a58, 0x6a59, 0x543b, 0x477a, 0x5237, 0x387c, 0x6a42, 0x325c, 0x427c, 0x5478, 0x4c66, 0x576e, 0x5442, 0x5350, 0x6b43, 0x4573, 0x377e, 0x6b54, 0x4b37, 0x6b5e, 0x404a, 0x4d7b, 0x332f, 0x465a, 0x6b7c, 0x443e, 0x4e34, 0x4429, 0x313e, 0x547d, 0x4a75, 0x566c, 0x4653, 0x3664, 0x3b7a, 0x5060, 0x4931, 0x5453, 0x4828, 0x384b, 0x683e, 0x493c, 0x683b, 0x406e, 0x5053, 0x3244, 0x3465, 0x683c, 0x5548, 0x3645, 0x683d, 0x4a78, 0x385c, 0x4c75, 0x4034, 0x516e, 0x683f, 0x6842, 0x3a3c, 0x312d, 0x3d5c, 0x6a3d, 0x6843, 0x6846, 0x684b, 0x684c, 0x4b49, 0x3065, 0x3c2b, 0x3939, 0x6841, 0x4d77, 0x684a, 0x4e76, 0x556d, 0x4156, 0x6844, 0x4336, 0x397b, 0x5626, 0x6848, 0x4a60, 0x5466, 0x6840, 0x6845, 0x6847, 0x4739, 0x3763, 0x6849, 0x3f5d, 0x6852, 0x6857, 0x6855, 0x3c5c, 0x3c4f, 0x685b, 0x685e, 0x685a, 0x317a, 0x3058, 0x4433, 0x384c, 0x4662, 0x483e, 0x4861, 0x684f, 0x6854, 0x6856, 0x3971, 0x6858, 0x5775, 0x447b, 0x685c, 0x3269, 0x6851, 0x3c6d, 0x3f42, 0x684d, 0x5679, 0x4178, 0x3271, 0x685f, 0x4a41, 0x6859, 0x5524, 0x316a, 0x553b, 0x684e, 0x6850, 0x3630, 0x6853, 0x685d, 0x4038, 0x4a77, 0x4b28, 0x465c, 0x4075, 0x6869, 0x5023, 0x6872, 0x566a, 0x6860, 0x6861, 0x5179, 0x3a4b, 0x3879, 0x3871, 0x5454, 0x686f, 0x686e, 0x686c, 0x3970, 0x4c52, 0x6866, 0x4e26, 0x3f72, 0x3038, 0x6871, 0x6870, 0x5740, 0x6864, 0x4d29, 0x4923, 0x3b38, 0x3d5b, 0x686a, 0x6862, 0x6863, 0x6865, 0x3535, 0x6867, 0x4745, 0x686b, 0x686d, 0x3d30, 0x572e, 0x6878, 0x6875, 0x4d30, 0x6876, 0x413a, 0x6868, 0x4337, 0x3070, 0x6874, 0x6877, 0x3923, 0x4952, 0x434e, 0x4e60, 0x4066, 0x4b73, 0x4c5d, 0x5035, 0x4a61, 0x6873, 0x3c6c, 0x6879, 0x435e, 0x4665, 0x3977, 0x3074, 0x5758, 0x3c2c, 0x456f, 0x4c44, 0x6926, 0x492d, 0x6922, 0x4062, 0x3f43, 0x687e, 0x3957, 0x687b, 0x6924, 0x524e, 0x6923, 0x5632, 0x5735, 0x6927, 0x3d37, 0x687c, 0x687d, 0x6921, 0x4d56, 0x522c, 0x6932, 0x6929, 0x342a, 0x343b, 0x692b, 0x5028, 0x6925, 0x337e, 0x692c, 0x4063, 0x692a, 0x6939, 0x6938, 0x692e, 0x687a, 0x6928, 0x3f2c, 0x6931, 0x693a, 0x4225, 0x692f, 0x3845, 0x692d, 0x535c, 0x6934, 0x6935, 0x6937, 0x6947, 0x4046, 0x6945, 0x6930, 0x693b, 0x3071, 0x693c, 0x5525, 0x693e, 0x693f, 0x6941, 0x4171, 0x4836, 0x693d, 0x6942, 0x6943, 0x6933, 0x6936, 0x3b31, 0x6940, 0x3c77, 0x6944, 0x6946, 0x694a, 0x694e, 0x325b, 0x6948, 0x372e, 0x694b, 0x694c, 0x5541, 0x4423, 0x6958, 0x3a61, 0x6949, 0x5323, 0x6954, 0x6957, 0x6950, 0x694f, 0x4741, 0x6952, 0x6959, 0x3348, 0x6953, 0x4f70, 0x694d, 0x3377, 0x6956, 0x695a, 0x4c34, 0x4f2d, 0x6955, 0x695c, 0x695b, 0x695e, 0x6951, 0x695d, 0x695f, 0x434a, 0x4737, 0x344e, 0x3b36, 0x5040, 0x6c23, 0x4537, 0x537b, 0x6c24, 0x6c25, 0x465b, 0x3f6e, 0x6c26, 0x6c27, 0x502a, 0x4738, 0x3868, 0x6c28, 0x5639, 0x557d, 0x344b, 0x323d, 0x4e64, 0x4667, 0x4d61, 0x3475, 0x4b40, 0x3c5f, 0x6962, 0x6963, 0x516a, 0x6965, 0x3479, 0x6964, 0x5133, 0x4a62, 0x3250, 0x6968, 0x6966, 0x6967, 0x5633, 0x6969, 0x696a, 0x696b, 0x696c, 0x6c2f, 0x4539, 0x364e, 0x5273, 0x356e, 0x3b59, 0x6c31, 0x5263, 0x4e63, 0x4438, 0x433f, 0x363e, 0x5839, 0x3148, 0x314f, 0x3151, 0x457e, 0x3150, 0x432b, 0x5531, 0x6b24, 0x3a41, 0x4c3a, 0x6b25, 0x6b27, 0x6b28, 0x6b26, 0x6b29, 0x6b2b, 0x6b2a, 0x6b2c, 0x4a4f, 0x5835, 0x4371, 0x4325, 0x4678, 0x6b2d, 0x444a, 0x6b2e, 0x6b2f, 0x6b30, 0x3755, 0x377a, 0x6b31, 0x4762, 0x6b33, 0x3a24, 0x5175, 0x3031, 0x6b32, 0x6b34, 0x352a, 0x4248, 0x4768, 0x6b35, 0x4b2e, 0x635f, 0x5340, 0x595b, 0x4d21, 0x562d, 0x4773, 0x5960, 0x3b63, 0x3a3a, 0x6362, 0x4f2b, 0x6360, 0x4947, 0x3a39, 0x5134, 0x6361, 0x486a, 0x392f, 0x3d2d, 0x3358, 0x4e5b, 0x4c40, 0x6368, 0x6369, 0x4d74, 0x4c2d, 0x3c33, 0x636a, 0x636b, 0x505a, 0x467b, 0x375a, 0x475f, 0x524a, 0x4e56, 0x6364, 0x636c, 0x4972, 0x3341, 0x6367, 0x4663, 0x6365, 0x6d33, 0x6366, 0x4933, 0x4566, 0x3935, 0x433b, 0x6363, 0x453d, 0x4124, 0x4259, 0x3257, 0x636d, 0x3b26, 0x442d, 0x6370, 0x3e5a, 0x637b, 0x6375, 0x3a53, 0x3750, 0x534d, 0x564e, 0x5553, 0x3941, 0x5534, 0x5158, 0x5039, 0x4776, 0x482a, 0x3234, 0x435a, 0x636e, 0x637c, 0x636f, 0x3728, 0x6377, 0x6374, 0x373a, 0x4522, 0x6376, 0x455d, 0x3228, 0x467c, 0x4460, 0x5722, 0x4061, 0x6379, 0x637a, 0x637d, 0x4c29, 0x6373, 0x533e, 0x3143, 0x6d34, 0x6371, 0x6372, 0x6378, 0x503a, 0x4643, 0x5473, 0x637e, 0x3d60, 0x6427, 0x6426, 0x5173, 0x6423, 0x6429, 0x4877, 0x4f34, 0x6428, 0x642e, 0x4265, 0x3634, 0x3d72, 0x6422, 0x3a69, 0x642a, 0x642c, 0x367d, 0x565e, 0x6432, 0x642d, 0x6421, 0x3b6e, 0x4d5d, 0x4722, 0x4549, 0x4177, 0x6424, 0x4733, 0x3d2c, 0x3d3d, 0x6425, 0x5747, 0x3262, 0x642b, 0x3c43, 0x642f, 0x3b6b, 0x6430, 0x4528, 0x6431, 0x5563, 0x3f23, 0x643a, 0x6437, 0x643b, 0x643d, 0x4656, 0x3a46, 0x404b, 0x3821, 0x6434, 0x5421, 0x3a23, 0x3d7e, 0x643c, 0x4d3f, 0x4479, 0x4f7b, 0x4966, 0x533f, 0x4f51, 0x6433, 0x6438, 0x6439, 0x4c69, 0x4c4e, 0x4054, 0x6435, 0x4130, 0x6436, 0x4e50, 0x3b41, 0x3553, 0x4873, 0x3d27, 0x5547, 0x492c, 0x3822, 0x644a, 0x644c, 0x5144, 0x523a, 0x3a2d, 0x3a54, 0x6443, 0x356d, 0x574d, 0x6440, 0x4f7d, 0x643f, 0x415c, 0x4c4a, 0x4a67, 0x4457, 0x4c54, 0x6448, 0x6447, 0x6441, 0x6444, 0x352d, 0x5359, 0x6446, 0x5279, 0x3463, 0x3b34, 0x496e, 0x343e, 0x3b6c, 0x514d, 0x4c6d, 0x6d35, 0x4765, 0x5428, 0x644b, 0x5755, 0x6442, 0x3d25, 0x6445, 0x5366, 0x6449, 0x4978, 0x643e, 0x5365, 0x477e, 0x3649, 0x547c, 0x3233, 0x6457, 0x4e42, 0x644d, 0x4e3c, 0x385b, 0x6456, 0x3f4a, 0x534e, 0x436c, 0x4548, 0x6458, 0x4d44, 0x644f, 0x6454, 0x6455, 0x3a7e, 0x4f66, 0x553f, 0x6452, 0x6450, 0x644e, 0x4d65, 0x4a2a, 0x4023, 0x3d26, 0x6453, 0x3848, 0x6467, 0x5434, 0x645b, 0x416f, 0x6469, 0x5267, 0x645f, 0x6460, 0x4f2a, 0x4b5d, 0x645a, 0x6451, 0x6465, 0x485c, 0x6463, 0x4467, 0x6462, 0x6461, 0x337c, 0x6468, 0x3561, 0x574c, 0x6466, 0x3b2c, 0x5752, 0x4c4f, 0x6b78, 0x6464, 0x3976, 0x564d, 0x6459, 0x645c, 0x427a, 0x645e, 0x424b, 0x4044, 0x4250, 0x3175, 0x4c32, 0x354e, 0x646f, 0x462f, 0x4661, 0x6475, 0x4229, 0x406c, 0x515d, 0x646e, 0x442e, 0x646d, 0x6476, 0x6474, 0x427e, 0x645d, 0x6470, 0x4a7e, 0x5544, 0x6471, 0x517a, 0x646b, 0x646c, 0x6472, 0x4e2b, 0x454b, 0x4731, 0x423a, 0x646a, 0x414a, 0x4c36, 0x3331, 0x647b, 0x6473, 0x647a, 0x647d, 0x647c, 0x334e, 0x333a, 0x6477, 0x6479, 0x6478, 0x456c, 0x403d, 0x5468, 0x6522, 0x3044, 0x6524, 0x6523, 0x3c24, 0x6525, 0x6521, 0x647e, 0x3174, 0x6528, 0x6529, 0x6526, 0x6527, 0x652a, 0x4659, 0x652b, 0x652d, 0x652c, 0x652f, 0x652e, 0x3960, 0x6530, 0x6531, 0x3b70, 0x6c61, 0x4370, 0x3546, 0x3b52, 0x4169, 0x546e, 0x3e44, 0x5746, 0x5456, 0x3253, 0x6c3e, 0x6a41, 0x422f, 0x3436, 0x5157, 0x3334, 0x4832, 0x3f3b, 0x6c40, 0x564b, 0x6c3f, 0x6c41, 0x6c45, 0x3e66, 0x4c3f, 0x455a, 0x3e3c, 0x6c46, 0x317e, 0x6c44, 0x5528, 0x3563, 0x6c42, 0x4136, 0x3363, 0x6c43, 0x4b38, 0x4043, 0x4c7e, 0x4152, 0x6c48, 0x3a66, 0x4053, 0x5672, 0x514c, 0x3f3e, 0x3733, 0x4955, 0x6c47, 0x3b62, 0x4c4c, 0x3d7d, 0x4848, 0x4f29, 0x4d69, 0x456b, 0x3769, 0x5149, 0x3a38, 0x6c49, 0x6c4a, 0x3b40, 0x6c4b, 0x6c62, 0x313a, 0x3759, 0x3d39, 0x6c4c, 0x5166, 0x6c4d, 0x483b, 0x6c51, 0x6c53, 0x3b4d, 0x3c65, 0x6c4f, 0x4937, 0x433a, 0x6c63, 0x5555, 0x6c50, 0x5673, 0x6c52, 0x6c4e, 0x6c54, 0x6c55, 0x493f, 0x4f28, 0x505c, 0x512c, 0x485b, 0x6c56, 0x4e75, 0x4a6c, 0x6c5a, 0x6c59, 0x303e, 0x6c57, 0x6c58, 0x6c64, 0x483c, 0x4147, 0x6c5c, 0x5160, 0x6c5b, 0x546f, 0x6c5d, 0x5b46, 0x6c5e, 0x312c, 0x6c5f, 0x6c60, 0x5726, 0x4540, 0x6b3c, 0x302e, 0x3e74, 0x3838, 0x522f, 0x3056, 0x3579, 0x5833, 0x4b2c, 0x635d, 0x462c, 0x3066, 0x4546, 0x6b39, 0x6b3a, 0x6b3b, 0x5140, 0x4523, 0x6a72, 0x4432, 0x4435, 0x404e, 0x6a73, 0x4441, 0x4e6f, 0x6a70, 0x6a74, 0x497c, 0x4723, 0x4c58, 0x4e7e, 0x6a75, 0x6a76, 0x4f2c, 0x4067, 0x6a77, 0x363f, 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a71, 0x482e, 0x616b, 0x3738, 0x616c, 0x616d, 0x5734, 0x616e, 0x616f, 0x534c, 0x6171, 0x3f71, 0x6170, 0x3552, 0x3137, 0x6173, 0x6172, 0x3a7c, 0x6174, 0x3937, 0x3e51, 0x447c, 0x3a5d, 0x3d46, 0x6175, 0x6177, 0x3640, 0x4f41, 0x4a28, 0x6176, 0x5578, 0x537c, 0x6178, 0x617c, 0x6179, 0x617a, 0x406a, 0x617e, 0x6221, 0x4047, 0x617b, 0x617d, 0x6225, 0x4154, 0x6223, 0x6228, 0x327e, 0x6222, 0x434d, 0x3242, 0x6227, 0x6226, 0x6224, 0x6229, 0x622b, 0x5049, 0x566d, 0x4328, 0x622c, 0x4f57, 0x622e, 0x3a6f, 0x6960, 0x622d, 0x622a, 0x3b2b, 0x5433, 0x6230, 0x622f, 0x6961, 0x6231, 0x6232, 0x6233, 0x4c21, 0x6234, 0x6235, 0x507e, 0x424a, 0x5371, 0x4d75, 0x6760, 0x6761, 0x3e41, 0x426a, 0x6764, 0x6763, 0x4d66, 0x4335, 0x6762, 0x3b37, 0x4f56, 0x4161, 0x6769, 0x6768, 0x6774, 0x3223, 0x676a, 0x6766, 0x676c, 0x676b, 0x493a, 0x5564, 0x6765, 0x3729, 0x6767, 0x676e, 0x6773, 0x5669, 0x676d, 0x6772, 0x6771, 0x3060, 0x6775, 0x4772, 0x4045, 0x406d, 0x4170, 0x6770, 0x6776, 0x4b76, 0x6822, 0x6821, 0x5741, 0x677a, 0x6779, 0x677b, 0x6777, 0x677e, 0x677d, 0x677c, 0x4155, 0x4759, 0x457d, 0x4543, 0x476d, 0x6823, 0x6826, 0x6825, 0x6827, 0x3a77, 0x6778, 0x6824, 0x4870, 0x492a, 0x6829, 0x3965, 0x517e, 0x6828, 0x682a, 0x682d, 0x682e, 0x4127, 0x682f, 0x6830, 0x682c, 0x6834, 0x682b, 0x6831, 0x6835, 0x6832, 0x6833, 0x6837, 0x6836, 0x394f, 0x702c, 0x702d, 0x4630, 0x306a, 0x483f, 0x4d5f, 0x4e4d, 0x6a31, 0x6a32, 0x463f, 0x3449, 0x6a33, 0x5567, 0x5d79, 0x6a34, 0x6a35, 0x6a36, 0x384a, 0x5f30, 0x4975, 0x4c70, 0x497a, 0x497b, 0x5343, 0x4b26, 0x3826, 0x702e, 0x3142, 0x6538, 0x4c6f, 0x5349, 0x3c57, 0x496a, 0x3567, 0x4450, 0x3569, 0x6e2e, 0x3b2d, 0x675e, 0x6e2f, 0x3329, 0x6e32, 0x6e31, 0x3d67, 0x6e30, 0x4e37, 0x454f, 0x4174, 0x5b4e, 0x6e33, 0x5073, 0x4254, 0x4668, 0x372c, 0x6e34, 0x336b, 0x3b7b, 0x6e35, 0x675c, 0x6e36, 0x3d2e, 0x7162, 0x4a68, 0x5249, 0x705a, 0x705b, 0x705c, 0x4146, 0x386d, 0x3e4e, 0x705e, 0x4531, 0x705d, 0x5171, 0x7060, 0x304c, 0x3d6a, 0x525f, 0x705f, 0x342f, 0x3768, 0x7066, 0x7065, 0x4623, 0x7061, 0x7062, 0x3443, 0x7063, 0x556e, 0x4c5b, 0x3e52, 0x3c32, 0x7068, 0x7067, 0x7064, 0x3221, 0x5622, 0x5338, 0x3e37, 0x482c, 0x706a, 0x5177, 0x564c, 0x3a5b, 0x7069, 0x363b, 0x4d34, 0x4626, 0x4121, 0x706b, 0x706e, 0x706d, 0x7070, 0x706c, 0x3b3e, 0x706f, 0x4c35, 0x7072, 0x3355, 0x3154, 0x7073, 0x7074, 0x7076, 0x3461, 0x7071, 0x7077, 0x707a, 0x7078, 0x7075, 0x707d, 0x7079, 0x707c, 0x707e, 0x7121, 0x4e41, 0x7124, 0x7123, 0x4176, 0x707b, 0x4a5d, 0x3471, 0x3171, 0x4c31, 0x7126, 0x7127, 0x712c, 0x554e, 0x7129, 0x4833, 0x7122, 0x712b, 0x7128, 0x7125, 0x712a, 0x3029, 0x712d, 0x712f, 0x7131, 0x7130, 0x712e, 0x5122, 0x7132, 0x7133, 0x396f, 0x3547, 0x3057, 0x3059, 0x546d, 0x3544, 0x3d54, 0x3b4a, 0x7027, 0x385e, 0x7028, 0x3028, 0x7029, 0x4d6e, 0x702a, 0x702b, 0x4624, 0x5665, 0x7164, 0x7165, 0x4373, 0x535b, 0x5651, 0x4568, 0x532f, 0x5266, 0x6e41, 0x303b, 0x5535, 0x514e, 0x3c60, 0x3a50, 0x3f78, 0x3847, 0x3541, 0x454c, 0x4a22, 0x434b, 0x6e42, 0x443f, 0x3622, 0x6d6c, 0x4324, 0x5631, 0x4f60, 0x6d6f, 0x454e, 0x365c, 0x4a21, 0x6d6d, 0x6d70, 0x6d71, 0x433c, 0x3f34, 0x6d6e, 0x6d74, 0x6d72, 0x5566, 0x435f, 0x6d73, 0x6d76, 0x5523, 0x5123, 0x6d75, 0x4350, 0x6d77, 0x3f74, 0x3e6c, 0x6d78, 0x4c77, 0x515b, 0x5745, 0x5576, 0x6d7c, 0x6d7b, 0x6d79, 0x6d7a, 0x6d7d, 0x3e26, 0x4b2f, 0x6e21, 0x363d, 0x6e22, 0x4440, 0x6d7e, 0x3d5e, 0x3247, 0x3643, 0x6e25, 0x583a, 0x6e23, 0x6e26, 0x4369, 0x3372, 0x6e27, 0x6e24, 0x4f39, 0x6e28, 0x4277, 0x6e29, 0x6e2a, 0x5e2b, 0x4633, 0x4746, 0x5675, 0x3549, 0x4b32, 0x6e2b, 0x4d2b, 0x6e2c, 0x5530, 0x6e2d, 0x7644, 0x5b47, 0x3423, 0x432c, 0x7166, 0x4a38, 0x5253, 0x562a, 0x6f72, 0x3e58, 0x3d43, 0x6f73, 0x364c, 0x302b, 0x4a2f, 0x6d36, 0x6d37, 0x4e79, 0x372f, 0x3f73, 0x6d38, 0x426b, 0x4930, 0x6d39, 0x4676, 0x3f33, 0x6d3c, 0x4578, 0x5150, 0x5729, 0x6d3a, 0x6d3b, 0x5162, 0x6d3f, 0x6d40, 0x6d44, 0x6d48, 0x6d46, 0x6d4e, 0x5568, 0x6d49, 0x6d47, 0x6d3e, 0x4569, 0x4646, 0x4969, 0x5452, 0x6d41, 0x6d42, 0x6d43, 0x6d45, 0x4079, 0x3421, 0x3968, 0x6d50, 0x6d51, 0x6d4a, 0x6d4f, 0x4e78, 0x4b36, 0x6d4c, 0x6d4d, 0x4f75, 0x6d52, 0x4172, 0x5332, 0x6d4b, 0x4837, 0x3c6f, 0x4570, 0x6d56, 0x356f, 0x4235, 0x302d, 0x4b69, 0x312e, 0x6d54, 0x4d6b, 0x3562, 0x6d55, 0x6d53, 0x6d57, 0x357a, 0x6d58, 0x6d59, 0x6d5c, 0x314c, 0x4576, 0x3c6e, 0x6d5a, 0x4c3c, 0x326a, 0x6d5b, 0x446b, 0x3445, 0x3075, 0x6d5f, 0x405a, 0x3468, 0x454d, 0x6d5d, 0x3f44, 0x6d5e, 0x4425, 0x6d60, 0x6d61, 0x6d63, 0x4157, 0x3b47, 0x3d38, 0x6d62, 0x6d64, 0x6d66, 0x6d65, 0x6d67, 0x4a3e, 0x6c6a, 0x4071, 0x4967, 0x6c6b, 0x466e, 0x6c6c, 0x466d, 0x6c6d, 0x6c70, 0x5766, 0x6c73, 0x6c71, 0x6c6e, 0x6c6f, 0x5723, 0x4971, 0x4b6e, 0x6c74, 0x6c72, 0x4f69, 0x6c76, 0x4631, 0x3c40, 0x6c75, 0x353b, 0x3b76, 0x6c77, 0x5977, 0x3d7b, 0x423b, 0x6c78, 0x6c79, 0x3823, 0x6c7a, 0x6c7b, 0x6c7c, 0x536d, 0x582e, 0x406b, 0x475d, 0x3a4c, 0x5063, 0x4b3d, 0x4d3a, 0x3851, 0x317c, 0x476f, 0x5656, 0x3f46, 0x436b, 0x6f75, 0x4358, 0x5762, 0x6f77, 0x3353, 0x4758, 0x516d, 0x5648, 0x6f78, 0x6f76, 0x3b7d, 0x3346, 0x3d55, 0x5246, 0x3b60, 0x4f21, 0x6f7c, 0x6f7b, 0x6f79, 0x334c, 0x4954, 0x4b30, 0x6f7e, 0x305e, 0x5649, 0x6f7d, 0x336d, 0x7655, 0x4e48, 0x7022, 0x7021, 0x353e, 0x3c5a, 0x3b7c, 0x3865, 0x4442, 0x7023, 0x4b6b, 0x7026, 0x5128, 0x3e3f, 0x476e, 0x7136, 0x7137, 0x3f55, 0x3429, 0x7138, 0x4d3b, 0x4754, 0x552d, 0x7139, 0x713a, 0x474f, 0x5224, 0x564f, 0x713b, 0x3d51, 0x3430, 0x3e3d, 0x345c, 0x4e51, 0x3f5f, 0x713d, 0x3f7a, 0x713c, 0x713f, 0x713e, 0x7140, 0x7141, 0x417e, 0x4122, 0x4a7a, 0x553e, 0x3e3a, 0x3e39, 0x5542, 0x3f22, 0x4d2f, 0x7135, 0x3d5f, 0x364b, 0x5671, 0x7343, 0x7344, 0x384d, 0x7346, 0x7347, 0x304a, 0x7345, 0x7349, 0x4b71, 0x734b, 0x5026, 0x314a, 0x7348, 0x734f, 0x3551, 0x7357, 0x7352, 0x7354, 0x7353, 0x377b, 0x313f, 0x734e, 0x734a, 0x355a, 0x7350, 0x7351, 0x7355, 0x734d, 0x3c63, 0x417d, 0x7356, 0x735a, 0x734c, 0x3548, 0x3d6e, 0x735c, 0x3724, 0x3f70, 0x567e, 0x4d32, 0x3470, 0x325f, 0x7358, 0x7359, 0x4938, 0x735d, 0x735e, 0x7361, 0x735f, 0x7363, 0x7362, 0x735b, 0x3f6a, 0x336f, 0x7360, 0x4729, 0x3c72, 0x736b, 0x393f, 0x7364, 0x322d, 0x3b7e, 0x4b63, 0x736d, 0x7369, 0x395c, 0x736e, 0x7365, 0x7366, 0x736a, 0x4261, 0x736c, 0x736f, 0x7368, 0x3c7d, 0x4f64, 0x7370, 0x7367, 0x7372, 0x572d, 0x462a, 0x7373, 0x7371, 0x4228, 0x385d, 0x7375, 0x7374, 0x345b, 0x7376, 0x7377, 0x7378, 0x403a, 0x4069, 0x4571, 0x737b, 0x737a, 0x3458, 0x737e, 0x7379, 0x737c, 0x737d, 0x7421, 0x7423, 0x3b49, 0x7422, 0x7424, 0x323e, 0x7426, 0x7425, 0x3c2e, 0x4357, 0x5961, 0x4060, 0x744c, 0x5751, 0x375b, 0x744e, 0x4123, 0x4649, 0x3456, 0x5533, 0x7450, 0x744f, 0x7451, 0x4b5a, 0x7452, 0x5441, 0x5660, 0x3760, 0x4138, 0x413b, 0x7453, 0x3e2c, 0x3462, 0x7454, 0x7455, 0x3e2b, 0x7456, 0x745b, 0x7457, 0x745a, 0x3a7d, 0x7458, 0x7459, 0x3862, 0x4c47, 0x745c, 0x325a, 0x4353, 0x5463, 0x3f37, 0x745d, 0x4534, 0x7469, 0x4f35, 0x4e49, 0x4b58, 0x4b77, 0x3d74, 0x574f, 0x405b, 0x5075, 0x746a, 0x746b, 0x746c, 0x7763, 0x3731, 0x746d, 0x576b, 0x746e, 0x6679, 0x3e40, 0x667a, 0x3a6c, 0x667b, 0x4f4b, 0x667c, 0x543c, 0x3c36, 0x667d, 0x667e, 0x3c4d, 0x4852, 0x4e33, 0x6721, 0x343f, 0x6722, 0x4934, 0x3859, 0x4449, 0x575d, 0x425a, 0x3757, 0x563d, 0x4e46, 0x3744, 0x4526, 0x6723, 0x4f5f, 0x6724, 0x6725, 0x6726, 0x4137, 0x5769, 0x4970, 0x4f38, 0x562f, 0x5655, 0x6727, 0x306d, 0x6728, 0x6729, 0x495c, 0x526f, 0x3e2d, 0x672a, 0x3073, 0x485e, 0x3d61, 0x672b, 0x4846, 0x672c, 0x3b66, 0x3878, 0x5124, 0x672d, 0x4267, 0x3e78, 0x3d4a, 0x4d33, 0x672e, 0x672f, 0x3e6e, 0x5065, 0x4b67, 0x4c50, 0x3c4c, 0x6730, 0x3c28, 0x5077, 0x6731, 0x5078, 0x6732, 0x6733, 0x3442, 0x6734, 0x6735, 0x497e, 0x4e2c, 0x4360, 0x6737, 0x3141, 0x3371, 0x6738, 0x6739, 0x575b, 0x5540, 0x673a, 0x424c, 0x573a, 0x673b, 0x673c, 0x673d, 0x3c6a, 0x4365, 0x4042, 0x673e, 0x673f, 0x3c29, 0x6740, 0x6741, 0x6736, 0x3650, 0x6742, 0x6743, 0x6744, 0x3b3a, 0x355e, 0x4246, 0x3160, 0x6745, 0x5435, 0x6746, 0x383f, 0x6748, 0x6747, 0x376c, 0x6749, 0x3278, 0x674a, 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, 0x6750, 0x5327, 0x4b75, 0x6751, 0x6752, 0x6753, 0x6754, 0x4949, 0x6755, 0x6756, 0x6757, 0x6758, 0x6759, 0x3d49, 0x675a, 0x733e, 0x3857, 0x4831, 0x733f, 0x7340, 0x7341, 0x395e, 0x4d78, 0x5868, 0x3a31, 0x425e, 0x6e37, 0x3723, 0x6e39, 0x6e38, 0x3055, 0x6e3b, 0x5556, 0x576f, 0x5643, 0x6e3d, 0x4a70, 0x6e3c, 0x6e3e, 0x6e40, 0x6e3f, 0x5172, 0x473c, 0x4340, 0x3861, 0x4167, 0x7446, 0x505f, 0x7447, 0x4f5b, 0x483a, 0x7448, 0x7449, 0x744a, 0x744b, 0x597a, 0x387e, 0x6571, 0x5370, 0x7460, 0x4e4c, 0x3361, 0x7134, 0x526e, 0x7461, 0x4f68, 0x7462, 0x474c, 0x3554, 0x3464, 0x7464, 0x7463, 0x7465, 0x7466, 0x7467, 0x3a32, 0x303f, 0x7468, 0x372d, 0x526d, 0x522b, 0x404f, 0x3f3c, 0x6b23, 0x555f, 0x6a48, 0x7173, 0x3678, 0x4b23, 0x444d, 0x7167, 0x7168, 0x387b, 0x7169, 0x3a44, 0x5445, 0x3052, 0x716a, 0x716b, 0x716c, 0x716d, 0x716e, 0x716f, 0x7171, 0x7170, 0x4555, 0x7172, 0x367a, 0x7174, 0x522e, 0x5e47, 0x4b4a, 0x335c, 0x3522, 0x3922, 0x4474, 0x7175, 0x7176, 0x4144, 0x417b, 0x5630, 0x7177, 0x7178, 0x412a, 0x4638, 0x3e5b, 0x7179, 0x344f, 0x717a, 0x6d32, 0x6d31, 0x4b60, 0x525e, 0x4b41, 0x5558, 0x4862, 0x405f, 0x3c21, 0x6b41, 0x5024, 0x5662, 0x3647, 0x3858, 0x6b40, 0x384e, 0x6b3f, 0x3326, 0x3949, 0x562b, 0x3774, 0x374a, 0x3c67, 0x373e, 0x6b46, 0x6b47, 0x3039, 0x3f4f, 0x6b45, 0x537d, 0x6b48, 0x6b49, 0x374e, 0x6b42, 0x6b44, 0x4976, 0x5657, 0x554d, 0x5032, 0x6b4f, 0x4e38, 0x6b50, 0x3528, 0x3133, 0x6b52, 0x4c25, 0x4556, 0x6b53, 0x6b51, 0x455f, 0x6b4e, 0x4a24, 0x6b55, 0x307b, 0x3a7a, 0x5837, 0x7163, 0x6b4a, 0x6b4b, 0x6b4c, 0x6b4d, 0x6b56, 0x6640, 0x6b59, 0x3f68, 0x5248, 0x6b57, 0x6b5c, 0x386c, 0x6b58, 0x3d3a, 0x5058, 0x3037, 0x6b5d, 0x445c, 0x562c, 0x3460, 0x4276, 0x3c39, 0x6b5a, 0x6b5b, 0x5460, 0x466a, 0x4454, 0x6b5f, 0x4527, 0x5975, 0x3231, 0x6b64, 0x3d45, 0x6b62, 0x6b63, 0x382c, 0x4d51, 0x6b65, 0x6b61, 0x4133, 0x4622, 0x4c73, 0x6b66, 0x4030, 0x5238, 0x6b67, 0x382f, 0x382d, 0x6b68, 0x473b, 0x4d73, 0x6b6a, 0x6b6b, 0x6b6d, 0x5048, 0x6b72, 0x6b6e, 0x6b71, 0x4879, 0x517c, 0x6b6c, 0x6b69, 0x3839, 0x4f59, 0x4465, 0x6b6f, 0x6b70, 0x4c5a, 0x4d48, 0x3072, 0x6b76, 0x6b75, 0x3232, 0x3860, 0x6b77, 0x316c, 0x4c45, 0x4424, 0x4f25, 0x6b79, 0x6c22, 0x4572, 0x6b7a, 0x4945, 0x625f, 0x6b7e, 0x4d4e, 0x6c21, 0x315b, 0x5337, 0x525c, 0x6b7d, 0x6b7b, 0x333c, 0x6a30, 0x5754, 0x742b, 0x3374, 0x5641, 0x5642, 0x5569, 0x3e4a, 0x7427, 0x5228, 0x7428, 0x7429, 0x742a, 0x3e4b, 0x535f, 0x4960, 0x4961, 0x7342, 0x4a66, 0x4c72, 0x6236, 0x4b34, 0x4e68, 0x565b, 0x742d, 0x742e, 0x742f, 0x7432, 0x3a3d, 0x7433, 0x3063, 0x7430, 0x7431, 0x3d22, 0x3255, 0x7436, 0x7437, 0x3666, 0x3230, 0x4f4f, 0x7434, 0x342c, 0x7435, 0x7438, 0x7439, 0x4d27, 0x743a, 0x743b, 0x743c, 0x4b52, 0x743d, 0x743e, 0x743f, 0x745e, 0x413c, 0x3c68, 0x492b, 0x515e, 0x6575, 0x5c33, 0x5255, 0x5c34, 0x302c, 0x5c35, 0x3d5a, 0x5c39, 0x5842, 0x5c37, 0x5373, 0x4956, 0x5c3a, 0x5c36, 0x5c3b, 0x4322, 0x5c3c, 0x5c45, 0x5c3d, 0x4e5f, 0x5625, 0x5c4f, 0x5c4d, 0x5c52, 0x3d66, 0x422b, 0x5c38, 0x5c4b, 0x5c4e, 0x5c3e, 0x3752, 0x3045, 0x5c47, 0x503e, 0x5c41, 0x3b28, 0x373c, 0x5c4c, 0x5c46, 0x5c3f, 0x475b, 0x513f, 0x5c40, 0x5c4a, 0x5c50, 0x4e2d, 0x5c42, 0x5c43, 0x5c48, 0x5c49, 0x3254, 0x5c51, 0x4b55, 0x5437, 0x5c5b, 0x5c5f, 0x4c26, 0x5c66, 0x4367, 0x5c5c, 0x3f41, 0x5c59, 0x307a, 0x3936, 0x5c65, 0x5c53, 0x5c44, 0x5c56, 0x4874, 0x3f60, 0x493b, 0x313d, 0x5322, 0x5c5a, 0x5c55, 0x463b, 0x5c5e, 0x5742, 0x432f, 0x3736, 0x4751, 0x4329, 0x5c62, 0x5c58, 0x5c6b, 0x5c54, 0x5c5d, 0x3e25, 0x5c57, 0x5c60, 0x5c63, 0x5c64, 0x5c78, 0x5c61, 0x5d22, 0x5c67, 0x3c6b, 0x3444, 0x4323, 0x3267, 0x5c7a, 0x5c72, 0x5c6f, 0x5c7c, 0x5c6e, 0x5270, 0x3268, 0x4857, 0x4863, 0x5c7b, 0x5c6d, 0x5c77, 0x5c75, 0x3e23, 0x5c74, 0x325d, 0x5c73, 0x3c76, 0x5c68, 0x3b44, 0x4073, 0x3c54, 0x5c69, 0x5c6a, 0x5c71, 0x5c76, 0x5c79, 0x3534, 0x4859, 0x3b67, 0x5c7e, 0x5c7d, 0x532b, 0x5d21, 0x5d23, 0x5d25, 0x5271, 0x5d24, 0x5d26, 0x5d27, 0x5229, 0x3a49, 0x5d29, 0x5d36, 0x5d31, 0x5d34, 0x5d30, 0x464e, 0x4072, 0x492f, 0x5c6c, 0x5d2e, 0x5d37, 0x5c70, 0x5d2f, 0x5d38, 0x5d2c, 0x5d39, 0x5d33, 0x5d2d, 0x442a, 0x5d28, 0x4033, 0x412b, 0x5d2a, 0x5d2b, 0x5d32, 0x3b71, 0x5d35, 0x5328, 0x5d3a, 0x5d3b, 0x4327, 0x5d52, 0x5d3c, 0x5d51, 0x393d, 0x3e55, 0x3e7a, 0x3a4a, 0x5d4a, 0x5d45, 0x5d3f, 0x324b, 0x5d43, 0x5d4b, 0x3224, 0x5d55, 0x5d3e, 0x4650, 0x5d50, 0x5d54, 0x4162, 0x3746, 0x5d4e, 0x5d4f, 0x5d44, 0x5d3d, 0x5d4d, 0x4c51, 0x5d49, 0x5d42, 0x4348, 0x463c, 0x4e2e, 0x5d4c, 0x5d48, 0x5d41, 0x5d46, 0x425c, 0x5329, 0x532a, 0x5d53, 0x4f74, 0x4878, 0x5d66, 0x5d47, 0x5d60, 0x4264, 0x5d61, 0x5d57, 0x5678, 0x5d59, 0x5d58, 0x3870, 0x5d56, 0x464f, 0x362d, 0x5d62, 0x3a79, 0x5461, 0x5d67, 0x3450, 0x5d5a, 0x3f7b, 0x5d63, 0x5d5f, 0x5d5d, 0x3559, 0x5d5b, 0x5d5c, 0x5d5e, 0x3d2f, 0x5d64, 0x5d65, 0x5d75, 0x4349, 0x4b62, 0x5d72, 0x5861, 0x4651, 0x5d74, 0x5574, 0x5d73, 0x5d70, 0x5d6c, 0x5d6f, 0x5d68, 0x506e, 0x4858, 0x5d6e, 0x5d69, 0x5d6a, 0x4b72, 0x5d6d, 0x314d, 0x4036, 0x3c3b, 0x5d71, 0x5d77, 0x5d76, 0x5d6b, 0x456e, 0x5d7b, 0x5e24, 0x5e23, 0x5d78, 0x436f, 0x427b, 0x5561, 0x4e35, 0x5d7d, 0x324c, 0x4468, 0x4a5f, 0x473e, 0x5d7a, 0x5d7c, 0x5d7e, 0x5e22, 0x302a, 0x314e, 0x5e2c, 0x5e26, 0x3d36, 0x486f, 0x5e21, 0x5e25, 0x5e29, 0x5e28, 0x5e27, 0x5e2d, 0x544c, 0x5e33, 0x5e2a, 0x5e2e, 0x4059, 0x3121, 0x5e36, 0x5e31, 0x5e32, 0x5126, 0x5e35, 0x5e2f, 0x5e30, 0x503d, 0x5e34, 0x4a6d, 0x5e39, 0x5e38, 0x5e37, 0x5e3b, 0x3d65, 0x3258, 0x436a, 0x5e3a, 0x453a, 0x5e3c, 0x4c59, 0x372a, 0x5465, 0x5e3d, 0x5e3f, 0x4422, 0x5e41, 0x5e3e, 0x5e40, 0x553a, 0x5e42, 0x722e, 0x3b22, 0x4232, 0x4530, 0x4247, 0x722f, 0x5069, 0x535d, 0x6b3d, 0x3366, 0x7230, 0x7231, 0x4a2d, 0x3a67, 0x7233, 0x7235, 0x7234, 0x4b64, 0x4f3a, 0x7232, 0x4a34, 0x524f, 0x426c, 0x4e43, 0x7238, 0x3076, 0x7237, 0x723e, 0x324f, 0x5141, 0x723a, 0x723c, 0x5469, 0x723b, 0x7236, 0x723f, 0x723d, 0x7239, 0x7247, 0x7244, 0x7246, 0x724a, 0x7242, 0x7240, 0x7245, 0x567b, 0x7241, 0x4779, 0x495f, 0x7248, 0x3946, 0x3530, 0x7243, 0x7249, 0x7250, 0x7256, 0x3b57, 0x7255, 0x4d5c, 0x566b, 0x7252, 0x7254, 0x3872, 0x724b, 0x724e, 0x4279, 0x555d, 0x724c, 0x724d, 0x724f, 0x7253, 0x7259, 0x533c, 0x366a, 0x4a71, 0x3764, 0x7257, 0x7258, 0x725a, 0x725d, 0x725b, 0x725c, 0x5151, 0x7251, 0x4d49, 0x4e4f, 0x5629, 0x7263, 0x435b, 0x7260, 0x402f, 0x726c, 0x725e, 0x7261, 0x7268, 0x7262, 0x7267, 0x7266, 0x7269, 0x725f, 0x7264, 0x726a, 0x532c, 0x7265, 0x3275, 0x7272, 0x502b, 0x7275, 0x3b48, 0x7279, 0x7270, 0x7276, 0x7278, 0x727a, 0x7273, 0x7271, 0x3a7b, 0x357b, 0x726f, 0x7277, 0x726d, 0x726e, 0x726b, 0x7326, 0x7323, 0x7322, 0x7274, 0x485a, 0x727b, 0x7325, 0x4378, 0x727d, 0x7327, 0x7329, 0x7324, 0x727c, 0x732b, 0x732a, 0x425d, 0x732e, 0x7330, 0x7321, 0x7331, 0x732c, 0x732f, 0x727e, 0x732d, 0x7332, 0x7334, 0x7328, 0x7333, 0x7335, 0x5037, 0x7338, 0x5979, 0x7339, 0x7337, 0x4864, 0x7336, 0x733a, 0x733b, 0x3440, 0x6e43, 0x733c, 0x733d, 0x512a, 0x742c, 0x5046, 0x5050, 0x515c, 0x4f4e, 0x3d56, 0x5143, 0x3a62, 0x6169, 0x5242, 0x7142, 0x3239, 0x316d, 0x7143, 0x4940, 0x3344, 0x5972, 0x4b25, 0x7144, 0x5654, 0x7145, 0x7440, 0x7146, 0x542c, 0x7147, 0x3040, 0x7441, 0x7442, 0x347c, 0x455b, 0x4c3b, 0x5064, 0x4d60, 0x7148, 0x5973, 0x313b, 0x4f2e, 0x3824, 0x714a, 0x714b, 0x3243, 0x4151, 0x5730, 0x7149, 0x714c, 0x714e, 0x5976, 0x5261, 0x5423, 0x7443, 0x4839, 0x7444, 0x714d, 0x714f, 0x3f63, 0x7150, 0x7154, 0x7156, 0x7151, 0x4951, 0x4561, 0x4263, 0x397c, 0x7153, 0x7155, 0x3953, 0x715b, 0x3a56, 0x307d, 0x7159, 0x7158, 0x7152, 0x715a, 0x7157, 0x486c, 0x4d4a, 0x715d, 0x653d, 0x715c, 0x715e, 0x715f, 0x4f65, 0x7445, 0x3d73, 0x7160, 0x7161, 0x4e77, 0x522a, 0x717b, 0x3832, 0x3c7b, 0x395b, 0x3966, 0x4359, 0x4a53, 0x6a68, 0x4040, 0x3e75, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, 0x3d47, 0x757b, 0x757d, 0x757e, 0x757c, 0x3d62, 0x7621, 0x3425, 0x7622, 0x7623, 0x6c32, 0x5154, 0x596a, 0x7624, 0x6e3a, 0x5532, 0x537e, 0x4c5c, 0x4a44, 0x6540, 0x7625, 0x3e2f, 0x4629, 0x5a25, 0x3c46, 0x3629, 0x383c, 0x484f, 0x3c25, 0x5a26, 0x5a27, 0x4c56, 0x4843, 0x5a28, 0x467d, 0x5135, 0x5269, 0x5136, 0x3c47, 0x3d32, 0x3b64, 0x5a29, 0x5a2a, 0x5148, 0x5a2b, 0x506d, 0x366f, 0x425b, 0x4b4f, 0x376d, 0x4968, 0x3743, 0x3e77, 0x5624, 0x5a2c, 0x5a2d, 0x4640, 0x5767, 0x4a36, 0x5529, 0x4b5f, 0x556f, 0x5a2e, 0x565f, 0x344a, 0x5a30, 0x5a2f, 0x526b, 0x5a31, 0x5a32, 0x5a33, 0x4a54, 0x5a34, 0x4a2b, 0x5a35, 0x5a36, 0x334f, 0x566f, 0x5a37, 0x3b30, 0x352e, 0x5a38, 0x5a39, 0x396e, 0x512f, 0x5268, 0x5a3a, 0x3843, 0x4f6a, 0x326f, 0x5a3b, 0x5a3c, 0x3d6b, 0x4e5c, 0x536f, 0x5a3d, 0x4e73, 0x5a3e, 0x5355, 0x3b65, 0x5a3f, 0x4b35, 0x4b50, 0x5a40, 0x476b, 0x566e, 0x5a41, 0x4535, 0x3641, 0x5a42, 0x374c, 0x3f4e, 0x5a43, 0x5a44, 0x4b2d, 0x5a45, 0x3577, 0x5a46, 0x4142, 0x573b, 0x5a47, 0x4c38, 0x526a, 0x4431, 0x5a48, 0x357d, 0x3b51, 0x5a49, 0x5033, 0x5a4a, 0x5a4b, 0x4e3d, 0x5a4c, 0x5a4d, 0x5a4e, 0x3277, 0x5a51, 0x5a4f, 0x5168, 0x5a50, 0x4355, 0x5a52, 0x5a53, 0x5a54, 0x5a55, 0x503b, 0x5225, 0x3079, 0x5a56, 0x472b, 0x5a57, 0x3d77, 0x4321, 0x5a58, 0x5a59, 0x437d, 0x4c37, 0x5a5a, 0x5a5b, 0x403e, 0x4657, 0x5a5c, 0x5a5d, 0x4734, 0x5a5e, 0x5a5f, 0x3948, 0x3b6d, 0x3639, 0x7478, 0x7479, 0x4d63, 0x7539, 0x6b60, 0x4f73, 0x3b3f, 0x3a40, 0x5425, 0x6159, 0x7574, 0x312a, 0x3272, 0x7575, 0x7577, 0x3a51, 0x7576, 0x4332, 0x7579, 0x7578, 0x3134, 0x556a, 0x383a, 0x3931, 0x3246, 0x5470, 0x4f4d, 0x305c, 0x554b, 0x3b75, 0x564a, 0x3737, 0x4c30, 0x4636, 0x3161, 0x393a, 0x567c, 0x3961, 0x3721, 0x3c7a, 0x6a5a, 0x6a5b, 0x4c79, 0x3973, 0x6a5c, 0x347b, 0x4333, 0x3751, 0x3a58, 0x6a5d, 0x5474, 0x6a5e, 0x3c56, 0x3b5f, 0x6a5f, 0x415e, 0x4238, 0x545f, 0x574a, 0x6a60, 0x6a61, 0x6a64, 0x6a62, 0x6a63, 0x495e, 0x3833, 0x3644, 0x6a65, 0x4a6a, 0x494d, 0x344d, 0x6259, 0x4562, 0x6a66, 0x4035, 0x5738, 0x6a67, 0x572c, 0x487c, 0x5853, 0x584d, 0x545e, 0x5479, 0x4944, 0x532e, 0x3853, 0x3360, 0x4962, 0x7476, 0x3a55, 0x7477, 0x575f, 0x7471, 0x3830, 0x5554, 0x384f, 0x4670, 0x3343, 0x7472, 0x332c, 0x543d, 0x4777, 0x7474, 0x7473, 0x4c4b, 0x4824, 0x7475, 0x5763, 0x453f, 0x7540, 0x753b, 0x7543, 0x7542, 0x563a, 0x7541, 0x543e, 0x7544, 0x754c, 0x304f, 0x3578, 0x7549, 0x754a, 0x455c, 0x7545, 0x7546, 0x7547, 0x754b, 0x3e60, 0x7548, 0x387a, 0x7550, 0x7553, 0x3f67, 0x3972, 0x753c, 0x754d, 0x4237, 0x4c78, 0x3c79, 0x754e, 0x754f, 0x7551, 0x3665, 0x7552, 0x7555, 0x753d, 0x7554, 0x533b, 0x336c, 0x4c24, 0x7556, 0x7557, 0x3e61, 0x7558, 0x4c5f, 0x755b, 0x3248, 0x5759, 0x7559, 0x755a, 0x755c, 0x7562, 0x7560, 0x755f, 0x755d, 0x7561, 0x755e, 0x7564, 0x7565, 0x4c63, 0x653f, 0x3538, 0x7563, 0x7568, 0x4c23, 0x7566, 0x7567, 0x753e, 0x3144, 0x753f, 0x3545, 0x3264, 0x756c, 0x7569, 0x3657, 0x756d, 0x756a, 0x756b, 0x345a, 0x546a, 0x756e, 0x3379, 0x756f, 0x7571, 0x7570, 0x7572, 0x7573, 0x496d, 0x392a, 0x477b, 0x3663, 0x4c49, 0x6a26, 0x3335, 0x547e, 0x396c, 0x5079, 0x696d, 0x572a, 0x696e, 0x4256, 0x486d, 0x3a64, 0x696f, 0x6970, 0x6971, 0x5661, 0x6972, 0x6973, 0x6975, 0x6974, 0x6976, 0x6977, 0x4761, 0x6978, 0x5458, 0x6979, 0x3d4e, 0x697a, 0x697b, 0x3d4f, 0x697c, 0x3828, 0x413e, 0x697d, 0x3132, 0x3b54, 0x3975, 0x697e, 0x6a21, 0x6a22, 0x6a23, 0x3778, 0x3c2d, 0x4a64, 0x604e, 0x542f, 0x4f3d, 0x5537, 0x6a24, 0x555e, 0x6a25, 0x5041, 0x393c, 0x3447, 0x3159, 0x4031, 0x3166, 0x3167, 0x3168, 0x333d, 0x4868, 0x6541, 0x315f, 0x4149, 0x346f, 0x4728, 0x5358, 0x4679, 0x5138, 0x397d, 0x4275, 0x532d, 0x544b, 0x3d7c, 0x6542, 0x3735, 0x6543, 0x3b39, 0x5562, 0x3d78, 0x5436, 0x4e25, 0x412c, 0x3359, 0x4c76, 0x6546, 0x6544, 0x6548, 0x654a, 0x6547, 0x354f, 0x4648, 0x357c, 0x6545, 0x4a76, 0x6549, 0x4354, 0x3145, 0x3c23, 0x5737, 0x4d4b, 0x4b4d, 0x4a4a, 0x4c53, 0x654c, 0x654b, 0x4466, 0x5121, 0x5137, 0x654d, 0x6550, 0x4d38, 0x5670, 0x654f, 0x355d, 0x4d3e, 0x6551, 0x363a, 0x4d28, 0x3964, 0x4a45, 0x3351, 0x4b59, 0x546c, 0x6552, 0x376a, 0x654e, 0x6555, 0x347e, 0x6556, 0x6553, 0x6554, 0x525d, 0x425f, 0x3146, 0x5362, 0x365d, 0x4b6c, 0x6557, 0x5376, 0x3169, 0x3674, 0x655a, 0x6558, 0x6559, 0x3540, 0x5245, 0x655c, 0x655e, 0x655d, 0x4732, 0x5223, 0x655b, 0x5462, 0x555a, 0x6560, 0x5771, 0x6561, 0x315c, 0x517b, 0x6562, 0x6564, 0x6563, 0x6565, 0x5258, 0x354b, 0x675f, 0x5a75, 0x5a78, 0x5a76, 0x5a77, 0x5a7a, 0x504f, 0x4447, 0x306e, 0x5030, 0x5a79, 0x534a, 0x3a2a, 0x5b22, 0x4771, 0x5a7c, 0x5a7b, 0x495b, 0x5a7d, 0x5b21, 0x575e, 0x5a7e, 0x415a, 0x5b25, 0x5374, 0x5b27, 0x5b24, 0x5b28, 0x3d3c, 0x4049, 0x5b23, 0x5b26, 0x5623, 0x5b29, 0x5b2d, 0x5b2e, 0x5b2c, 0x3a42, 0x3f24, 0x5b2b, 0x5b2a, 0x5447, 0x323f, 0x5b2f, 0x3979, 0x5b30, 0x333b, 0x3526, 0x363c, 0x5b31, 0x3675, 0x5b32, 0x3149, 0x5b34, 0x5b33, 0x5b35, 0x5b37, 0x5b36, 0x5b38, 0x5b39, 0x5b3a, 0x534f, 0x747a, 0x4775, 0x5743, 0x4564, 0x747c, 0x747d, 0x747b, 0x3e46, 0x506f, 0x3753, 0x544d, 0x4c2a, 0x7522, 0x7521, 0x3a28, 0x747e, 0x4b56, 0x7524, 0x4052, 0x336a, 0x4d2a, 0x7525, 0x7523, 0x3d34, 0x7528, 0x7529, 0x3d4d, 0x4338, 0x3f61, 0x4b61, 0x752a, 0x7526, 0x7527, 0x4470, 0x752c, 0x343c, 0x576d, 0x3457, 0x752b, 0x752e, 0x752d, 0x752f, 0x5051, 0x4351, 0x4829, 0x7530, 0x7531, 0x7532, 0x7533, 0x7534, 0x7535, 0x7537, 0x7536, 0x7538, 0x3249, 0x5354, 0x4a4d, 0x406f, 0x5658, 0x5230, 0x413f, 0x3d70, 0x382a, 0x3c78, 0x7646, 0x7647, 0x7648, 0x7649, 0x764a, 0x764c, 0x764b, 0x7769, 0x764d, 0x764e, 0x6e44, 0x6e45, 0x6e46, 0x556b, 0x3624, 0x6e48, 0x6e47, 0x6e49, 0x6e4a, 0x4725, 0x6e4b, 0x6e4c, 0x3730, 0x3576, 0x6e4d, 0x6e4f, 0x6e4e, 0x3846, 0x6e50, 0x6e51, 0x6e52, 0x365b, 0x332e, 0x5653, 0x4446, 0x3135, 0x3856, 0x6e53, 0x6e54, 0x543f, 0x4755, 0x3e7b, 0x4e59, 0x3933, 0x6e56, 0x6e55, 0x6e58, 0x6e57, 0x4525, 0x6e59, 0x6e5a, 0x472e, 0x6e5b, 0x472f, 0x6e5c, 0x3227, 0x6e5d, 0x6e5e, 0x6e5f, 0x6e60, 0x6e61, 0x576a, 0x6e62, 0x6e63, 0x3c58, 0x6e64, 0x534b, 0x4c7a, 0x322c, 0x4165, 0x6e65, 0x4726, 0x432d, 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x6e6d, 0x6e6e, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e74, 0x6e73, 0x6e75, 0x4d2d, 0x4241, 0x6e76, 0x6e77, 0x6e78, 0x5521, 0x6e79, 0x4f33, 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6f21, 0x6e7e, 0x6f22, 0x3875, 0x437a, 0x6f23, 0x6f24, 0x3d42, 0x523f, 0x3279, 0x6f25, 0x6f26, 0x6f27, 0x5278, 0x6f28, 0x567d, 0x6f29, 0x464c, 0x6f2a, 0x6f2b, 0x4134, 0x6f2c, 0x4f7a, 0x4b78, 0x6f2e, 0x6f2d, 0x337a, 0x3978, 0x6f2f, 0x6f30, 0x5062, 0x6f31, 0x6f32, 0x3766, 0x503f, 0x6f33, 0x6f34, 0x6f35, 0x4871, 0x4c60, 0x6f36, 0x6f37, 0x6f38, 0x6f39, 0x6f3a, 0x5560, 0x6f3b, 0x346d, 0x432a, 0x6f3c, 0x6f3d, 0x6f3e, 0x6f3f, 0x4e7d, 0x6f40, 0x4260, 0x3438, 0x5736, 0x3d75, 0x4f47, 0x6f43, 0x6f41, 0x6f42, 0x6f44, 0x3627, 0x3c7c, 0x3e62, 0x434c, 0x6f45, 0x6f46, 0x6f47, 0x6f4f, 0x6f48, 0x6f49, 0x6f4a, 0x4742, 0x6f71, 0x364d, 0x6f4b, 0x6f4c, 0x6f4d, 0x3646, 0x433e, 0x6f4e, 0x6f50, 0x6f51, 0x6f52, 0x5572, 0x6f53, 0x4477, 0x6f54, 0x4478, 0x6f55, 0x6f56, 0x3864, 0x3077, 0x6f57, 0x6f58, 0x6f59, 0x6f5a, 0x6f5b, 0x6f5c, 0x6f5d, 0x6f5e, 0x3e35, 0x6f61, 0x6f5f, 0x6f60, 0x6f62, 0x6f63, 0x414d, 0x6f64, 0x6f65, 0x6f66, 0x6f67, 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x4058, 0x6f6d, 0x412d, 0x6f6e, 0x6f6f, 0x6f70, 0x4f62, 0x3324, 0x4345, 0x6345, 0x4941, 0x6346, 0x3155, 0x4e4a, 0x3433, 0x4872, 0x6347, 0x4f50, 0x6348, 0x3c64, 0x6349, 0x634a, 0x4346, 0x5522, 0x4456, 0x396b, 0x4e45, 0x634b, 0x4376, 0x634c, 0x3727, 0x3873, 0x3a52, 0x634d, 0x634e, 0x5444, 0x634f, 0x6350, 0x514b, 0x6351, 0x6352, 0x6353, 0x6354, 0x5156, 0x6355, 0x327b, 0x403b, 0x6356, 0x402b, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b, 0x3837, 0x5a62, 0x3653, 0x5a64, 0x5a63, 0x5a66, 0x486e, 0x5a65, 0x3740, 0x5174, 0x5275, 0x5573, 0x3d57, 0x5768, 0x5a68, 0x5a67, 0x3022, 0x4d53, 0x5a69, 0x383d, 0x3c4a, 0x423d, 0x4224, 0x3342, 0x5a6a, 0x422a, 0x4430, 0x3d35, 0x4f5e, 0x5a6b, 0x4942, 0x315d, 0x5a6c, 0x3638, 0x543a, 0x337d, 0x5a6d, 0x5449, 0x4f55, 0x4563, 0x5a6e, 0x5a6f, 0x5a70, 0x416a, 0x4c55, 0x4f5d, 0x5367, 0x4221, 0x5a71, 0x4b65, 0x5a72, 0x4b66, 0x527e, 0x3874, 0x5a73, 0x302f, 0x4f36, 0x554f, 0x4b6d, 0x5a74, 0x6344, 0x4125, 0x763f, 0x7640, 0x7641, 0x4451, 0x4838, 0x5163, 0x505b, 0x5145, 0x3c2f, 0x394d, 0x6f74, 0x3446, 0x533a, 0x7642, 0x337b, 0x7643, 0x3571, 0x7645, 0x536a, 0x7627, 0x5129, 0x7629, 0x7628, 0x4163, 0x4057, 0x3122, 0x4e6d, 0x5068, 0x762b, 0x4f76, 0x762a, 0x5570, 0x762c, 0x4339, 0x3b74, 0x762e, 0x762d, 0x445e, 0x4158, 0x4b2a, 0x4f3c, 0x762f, 0x7630, 0x7631, 0x4236, 0x3054, 0x4579, 0x7632, 0x4760, 0x7626, 0x3e38, 0x3e32, 0x3565, 0x3747, 0x3f3f, 0x4352, 0x4366, 0x584c, 0x386f, 0x3d79, 0x5125, 0x3050, 0x7730, 0x7731, 0x502c, 0x3030, 0x7732, 0x7733, 0x7734, 0x474a, 0x3e4f, 0x7737, 0x7736, 0x315e, 0x7735, 0x7738, 0x7739, 0x4e24, 0x484d, 0x3a2b, 0x6838, 0x6839, 0x683a, 0x3e42, 0x5274, 0x544f, 0x4958, 0x5233, 0x3625, 0x476a, 0x717c, 0x4f6e, 0x4b33, 0x506b, 0x676f, 0x4d67, 0x394b, 0x3659, 0x717d, 0x3064, 0x4b4c, 0x717e, 0x5424, 0x422d, 0x416c, 0x4644, 0x3e31, 0x7221, 0x3c55, 0x7222, 0x7223, 0x7224, 0x5243, 0x4635, 0x4d47, 0x7225, 0x5331, 0x3f45, 0x4c62, 0x7226, 0x7227, 0x5155, 0x366e, 0x7228, 0x7229, 0x355f, 0x722a, 0x722b, 0x327c, 0x722c, 0x722d, 0x4827, 0x3767, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x462e, 0x6c2d, 0x6c2e, 0x3749, 0x4a33, 0x6238, 0x774f, 0x7750, 0x324d, 0x7751, 0x7753, 0x7752, 0x623b, 0x3c22, 0x623c, 0x623d, 0x623e, 0x623f, 0x6240, 0x6241, 0x3739, 0x527b, 0x3d24, 0x4a4e, 0x3125, 0x4b47, 0x6242, 0x367c, 0x4844, 0x6243, 0x3d48, 0x317d, 0x6244, 0x3676, 0x6245, 0x4459, 0x6246, 0x4f5a, 0x395d, 0x6247, 0x4021, 0x6248, 0x3276, 0x6249, 0x4173, 0x624a, 0x624b, 0x4278, 0x624c, 0x624d, 0x624e, 0x4a57, 0x5838, 0x5965, 0x4f63, 0x7025, 0x5c30, 0x426d, 0x5426, 0x4d54, 0x5131, 0x335b, 0x477d, 0x3235, 0x423f, 0x6660, 0x4a3b, 0x6661, 0x6662, 0x3e54, 0x6663, 0x5724, 0x4d55, 0x6665, 0x3c5d, 0x6664, 0x6666, 0x6667, 0x426e, 0x3d3e, 0x6668, 0x4266, 0x3a27, 0x6669, 0x666a, 0x3352, 0x5169, 0x3f25, 0x666b, 0x466f, 0x666c, 0x666d, 0x666e, 0x462d, 0x666f, 0x4927, 0x6670, 0x6671, 0x6672, 0x6539, 0x6673, 0x6674, 0x4262, 0x6675, 0x6676, 0x5668, 0x6677, 0x6678, 0x3947, 0x773b, 0x773a, 0x773e, 0x773c, 0x3a21, 0x773f, 0x7740, 0x7742, 0x7741, 0x7744, 0x7743, 0x7745, 0x7746, 0x7747, 0x4b68, 0x385f, 0x7754, 0x7755, 0x7756, 0x7758, 0x775a, 0x7757, 0x775b, 0x7759, 0x5757, 0x775c, 0x775d, 0x775e, 0x775f, 0x7760, 0x5b4b, 0x582a, 0x6577, 0x396d, 0x3f7d, 0x3b6a, 0x7749, 0x4647, 0x7748, 0x774a, 0x774c, 0x774b, 0x774d, 0x4e3a, 0x774e, 0x4427, 0x5363, 0x764f, 0x4233, 0x7650, 0x7651, 0x7652, 0x7653, 0x7654, 0x7656, 0x312b, 0x7657, 0x7658, 0x7659, 0x765a, 0x765b, 0x765c, 0x765d, 0x765e, 0x4f4a, 0x765f, 0x7660, 0x7661, 0x7662, 0x7663, 0x7664, 0x4070, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766a, 0x766b, 0x766c, 0x766d, 0x766e, 0x766f, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x3e28, 0x7675, 0x7676, 0x7677, 0x7678, 0x487a, 0x7679, 0x767a, 0x767b, 0x767c, 0x767d, 0x767e, 0x7721, 0x7722, 0x7723, 0x7724, 0x7725, 0x7726, 0x7727, 0x7728, 0x316e, 0x7729, 0x772a, 0x772b, 0x772c, 0x772d, 0x415b, 0x772e, 0x772f, 0x4471, 0x702f, 0x3c26, 0x7030, 0x4379, 0x4538, 0x513b, 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x513c, 0x516c, 0x7037, 0x7036, 0x5427, 0x4d52, 0x7038, 0x703a, 0x7039, 0x703b, 0x703c, 0x386b, 0x703d, 0x3a68, 0x703e, 0x703f, 0x3e69, 0x7040, 0x366c, 0x7041, 0x7042, 0x7043, 0x7044, 0x4835, 0x7045, 0x7046, 0x7047, 0x4574, 0x7048, 0x7049, 0x704a, 0x773d, 0x704b, 0x704c, 0x704d, 0x704e, 0x704f, 0x3a57, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7058, 0x5325, 0x7057, 0x7059, 0x753a, 0x4239, 0x7764, 0x7765, 0x7766, 0x7767, 0x7768, 0x4234, 0x776a, 0x776b, 0x4273, 0x7470, 0x746f, 0x4269, 0x7761, 0x7762, 0x3b46, 0x5964, 0x4a72, 0x4068, 0x7024, 0x3a5a, 0x472d, 0x442c, 0x776c, 0x776d, 0x776e, 0x7770, 0x776f, 0x7771, 0x7774, 0x7773, 0x7772, 0x7775, 0x7776, 0x6d69, 0x6d6a, 0x6d6b, 0x763c, 0x763d, 0x763e, 0x3626, 0x583e, 0x3944, 0x583b, 0x5c31, 0x4a73, 0x7777, 0x7778, 0x7779, 0x777b, 0x777a, 0x3147, 0x777c, 0x777d, 0x777e, 0x466b, 0x6c34, 0x335d, 0x7633, 0x7634, 0x4164, 0x7635, 0x7636, 0x7637, 0x7638, 0x7639, 0x763a, 0x4823, 0x763b, 0x417a, 0x3928, 0x6d68, 0x396a, 0x595f, 0x2321, 0x2322, 0x2323, 0x2167, 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d, 0x212b, 0x2169, 0x216a, 0x237e, 0x2324, }; static const Summary16 gb2312_uni2indx_page00[70] = { /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0190 }, { 3, 0x0003 }, { 5, 0x0000 }, { 5, 0x0080 }, { 6, 0x3703 }, { 13, 0x168c }, /* 0x0100 */ { 19, 0x0002 }, { 20, 0x0808 }, { 22, 0x0800 }, { 23, 0x0000 }, { 23, 0x2000 }, { 24, 0x0000 }, { 24, 0x0800 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x4000 }, { 26, 0x1555 }, { 33, 0x0000 }, { 33, 0x0000 }, /* 0x0200 */ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0280 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, /* 0x0300 */ { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0xfffe }, { 50, 0x03fb }, { 59, 0xfffe }, { 74, 0x03fb }, { 83, 0x0000 }, { 83, 0x0000 }, { 83, 0x0000 }, /* 0x0400 */ { 83, 0x0002 }, { 84, 0xffff }, { 100, 0xffff }, { 116, 0xffff }, { 132, 0xffff }, { 148, 0x0002 }, }; static const Summary16 gb2312_uni2indx_page20[101] = { /* 0x2000 */ { 149, 0x0000 }, { 149, 0x3360 }, { 155, 0x0040 }, { 156, 0x080d }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, /* 0x2100 */ { 160, 0x0008 }, { 161, 0x0040 }, { 162, 0x0000 }, { 162, 0x0000 }, { 162, 0x0000 }, { 162, 0x0000 }, { 162, 0x0fff }, { 174, 0x0000 }, { 174, 0x0000 }, { 174, 0x000f }, { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 }, /* 0x2200 */ { 178, 0x8100 }, { 180, 0x6402 }, { 184, 0x4fa1 }, { 192, 0x20f0 }, { 197, 0x1100 }, { 199, 0x0000 }, { 199, 0xc033 }, { 205, 0x0000 }, { 205, 0x0000 }, { 205, 0x0200 }, { 206, 0x0020 }, { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 }, /* 0x2300 */ { 207, 0x0000 }, { 207, 0x0004 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, /* 0x2400 */ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x03ff }, { 218, 0xfff0 }, { 230, 0xffff }, { 246, 0x0fff }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, /* 0x2500 */ { 258, 0xffff }, { 274, 0xffff }, { 290, 0xffff }, { 306, 0xffff }, { 322, 0x0fff }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0003 }, { 336, 0x000c }, { 338, 0xc8c0 }, { 343, 0x0000 }, { 343, 0x0000 }, { 343, 0x0000 }, /* 0x2600 */ { 343, 0x0060 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0005 }, }; static const Summary16 gb2312_uni2indx_page30[35] = { /* 0x3000 */ { 347, 0xff2f }, { 360, 0x00fb }, { 367, 0x0000 }, { 367, 0x0000 }, { 367, 0xfffe }, { 382, 0xffff }, { 398, 0xffff }, { 414, 0xffff }, { 430, 0xffff }, { 446, 0x000f }, { 450, 0xfffe }, { 465, 0xffff }, { 481, 0xffff }, { 497, 0xffff }, { 513, 0xffff }, { 529, 0x087f }, /* 0x3100 */ { 537, 0xffe0 }, { 548, 0xffff }, { 564, 0x03ff }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, /* 0x3200 */ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x03ff }, }; static const Summary16 gb2312_uni2indx_page4e[1263] = { /* 0x4e00 */ { 584, 0x7f8b }, { 595, 0x7f7b }, { 608, 0x3db4 }, { 617, 0xef55 }, { 628, 0xfba8 }, { 638, 0xf35d }, { 649, 0x0243 }, { 653, 0x400b }, { 657, 0xfb40 }, { 665, 0x8d3e }, { 674, 0x7bf7 }, { 687, 0x8c2c }, { 693, 0x6eff }, { 706, 0xe3fa }, { 717, 0x1d3a }, { 725, 0xa8ed }, /* 0x4f00 */ { 734, 0xe602 }, { 740, 0xcf83 }, { 749, 0x8cf5 }, { 758, 0x3555 }, { 766, 0xe048 }, { 771, 0xffab }, { 784, 0x92b9 }, { 792, 0xd859 }, { 800, 0xab18 }, { 807, 0x2892 }, { 812, 0xd7e9 }, { 823, 0x8020 }, { 825, 0xc438 }, { 831, 0xf583 }, { 840, 0xe74a }, { 849, 0x450a }, /* 0x5000 */ { 854, 0xb000 }, { 857, 0x9714 }, { 864, 0x7762 }, { 873, 0x5400 }, { 876, 0xd188 }, { 882, 0x1420 }, { 885, 0x1020 }, { 887, 0xc8c0 }, { 892, 0x2121 }, { 896, 0x0000 }, { 896, 0x13a8 }, { 902, 0x0c04 }, { 905, 0x8000 }, { 906, 0x0440 }, { 908, 0x70c0 }, { 913, 0x0828 }, /* 0x5100 */ { 916, 0x08c0 }, { 919, 0x0004 }, { 920, 0x0002 }, { 921, 0x8000 }, { 922, 0x2b7b }, { 932, 0x1472 }, { 938, 0x7924 }, { 945, 0x3bfb }, { 957, 0x3327 }, { 965, 0x1ae4 }, { 972, 0x9835 }, { 979, 0x38ef }, { 989, 0x9ad1 }, { 997, 0x2802 }, { 1000, 0xa813 }, { 1006, 0xbf69 }, /* 0x5200 */ { 1017, 0x65cf }, { 1027, 0x2fc6 }, { 1036, 0x6b11 }, { 1043, 0xafc9 }, { 1053, 0x340f }, { 1060, 0x5053 }, { 1066, 0x86a2 }, { 1072, 0xa004 }, { 1075, 0x0106 }, { 1078, 0xe809 }, { 1084, 0x3f0f }, { 1094, 0xc00e }, { 1099, 0x0a88 }, { 1103, 0x8145 }, { 1108, 0x0010 }, { 1109, 0xc601 }, /* 0x5300 */ { 1114, 0xa161 }, { 1120, 0x26e1 }, { 1127, 0x444b }, { 1133, 0xce00 }, { 1138, 0xc7aa }, { 1147, 0xd4ee }, { 1157, 0xcadf }, { 1168, 0x85bb }, { 1177, 0x3a74 }, { 1185, 0xa520 }, { 1190, 0x436c }, { 1197, 0x8840 }, { 1200, 0x3f06 }, { 1208, 0x8bd2 }, { 1216, 0xff79 }, { 1229, 0x3bef }, /* 0x5400 */ { 1241, 0xf75a }, { 1252, 0xe8ef }, { 1263, 0xfbcb }, { 1275, 0x5b36 }, { 1284, 0x0d49 }, { 1290, 0x1bfd }, { 1301, 0x0154 }, { 1305, 0x39ee }, { 1315, 0xd855 }, { 1323, 0x2e75 }, { 1332, 0xbfd8 }, { 1343, 0xa91a }, { 1350, 0xf3d7 }, { 1362, 0xf6bf }, { 1375, 0x67e0 }, { 1383, 0xb40c }, /* 0x5500 */ { 1389, 0x82c2 }, { 1394, 0x0813 }, { 1398, 0xd49d }, { 1407, 0xd08b }, { 1414, 0x065a }, { 1420, 0x1061 }, { 1424, 0x74f2 }, { 1433, 0x59e0 }, { 1440, 0x8f9f }, { 1451, 0xb312 }, { 1458, 0x0080 }, { 1459, 0x6aaa }, { 1467, 0x3230 }, { 1472, 0xb05e }, { 1480, 0x9d7a }, { 1490, 0x60ac }, /* 0x5600 */ { 1496, 0xd303 }, { 1503, 0xc900 }, { 1507, 0x3098 }, { 1512, 0x8a56 }, { 1519, 0x7000 }, { 1522, 0x1390 }, { 1527, 0x1f14 }, { 1534, 0x1842 }, { 1538, 0xc060 }, { 1542, 0x0008 }, { 1543, 0x8008 }, { 1545, 0x1080 }, { 1547, 0x0400 }, { 1548, 0xec90 }, { 1555, 0x2817 }, { 1561, 0xe633 }, /* 0x5700 */ { 1570, 0x0758 }, { 1576, 0x9000 }, { 1578, 0xf708 }, { 1586, 0x4e09 }, { 1592, 0xf485 }, { 1600, 0xfc83 }, { 1609, 0xaf53 }, { 1619, 0x18c8 }, { 1624, 0x187c }, { 1631, 0x080c }, { 1634, 0x6adf }, { 1645, 0x0114 }, { 1648, 0xc80c }, { 1653, 0xa734 }, { 1661, 0xa011 }, { 1665, 0x2710 }, /* 0x5800 */ { 1670, 0x28c5 }, { 1676, 0x4222 }, { 1680, 0x0413 }, { 1684, 0x0021 }, { 1686, 0x3010 }, { 1689, 0x4112 }, { 1693, 0x1820 }, { 1696, 0x4000 }, { 1697, 0x022b }, { 1702, 0xc60c }, { 1708, 0x0300 }, { 1710, 0x1000 }, { 1711, 0x0022 }, { 1713, 0x0022 }, { 1715, 0x5810 }, { 1719, 0x0249 }, /* 0x5900 */ { 1723, 0xa094 }, { 1728, 0x9670 }, { 1735, 0xeeb0 }, { 1744, 0x1792 }, { 1751, 0xcb96 }, { 1760, 0x05f2 }, { 1767, 0x0025 }, { 1770, 0x2358 }, { 1776, 0x25de }, { 1785, 0x42cc }, { 1791, 0xcf38 }, { 1800, 0x4a04 }, { 1804, 0x0c40 }, { 1807, 0x359f }, { 1817, 0x1128 }, { 1821, 0x8a00 }, /* 0x5a00 */ { 1824, 0x13fa }, { 1833, 0x910a }, { 1838, 0x0229 }, { 1842, 0x1056 }, { 1847, 0x0641 }, { 1851, 0x0420 }, { 1853, 0x0484 }, { 1856, 0x84f0 }, { 1862, 0x0000 }, { 1862, 0x0c04 }, { 1865, 0x0400 }, { 1866, 0x412c }, { 1871, 0x1206 }, { 1875, 0x1154 }, { 1880, 0x0a4b }, { 1886, 0x0002 }, /* 0x5b00 */ { 1887, 0x0200 }, { 1888, 0x00c0 }, { 1890, 0x0000 }, { 1890, 0x0094 }, { 1893, 0x0001 }, { 1894, 0xbfbb }, { 1907, 0x167c }, { 1915, 0x242b }, { 1921, 0x9bbb }, { 1932, 0x7fa8 }, { 1942, 0x0c7f }, { 1951, 0xe379 }, { 1961, 0x10f4 }, { 1967, 0xe00d }, { 1973, 0x4132 }, { 1978, 0x9f01 }, /* 0x5c00 */ { 1985, 0x8652 }, { 1991, 0x3572 }, { 1999, 0x10b4 }, { 2004, 0xff12 }, { 2014, 0xcf27 }, { 2024, 0x4223 }, { 2029, 0xc06b }, { 2036, 0x8602 }, { 2040, 0x3106 }, { 2045, 0x1fd3 }, { 2055, 0x3a0c }, { 2061, 0xa1aa }, { 2068, 0x0812 }, { 2071, 0x0204 }, { 2073, 0x2572 }, { 2080, 0x0801 }, /* 0x5d00 */ { 2082, 0x40cc }, { 2087, 0x4850 }, { 2091, 0x62d0 }, { 2097, 0x6010 }, { 2100, 0x1c80 }, { 2104, 0x2900 }, { 2107, 0x9a00 }, { 2111, 0x0010 }, { 2112, 0x0004 }, { 2113, 0x2200 }, { 2115, 0x0000 }, { 2115, 0x0080 }, { 2116, 0x2020 }, { 2118, 0x6800 }, { 2121, 0xcbe6 }, { 2131, 0x609e }, /* 0x5e00 */ { 2138, 0x916e }, { 2146, 0x3f73 }, { 2157, 0x60c0 }, { 2161, 0x3982 }, { 2167, 0x1034 }, { 2171, 0x4830 }, { 2175, 0x0006 }, { 2177, 0xbd5c }, { 2187, 0x8cd1 }, { 2194, 0xd6fb }, { 2206, 0x20e1 }, { 2211, 0x43e8 }, { 2218, 0x0600 }, { 2220, 0x084e }, { 2225, 0x0500 }, { 2227, 0xc4d0 }, /* 0x5f00 */ { 2233, 0x8d1f }, { 2242, 0x89aa }, { 2249, 0xa6e1 }, { 2257, 0x1602 }, { 2261, 0x0001 }, { 2262, 0x21ed }, { 2270, 0x3656 }, { 2278, 0x1a8b }, { 2285, 0x1fb7 }, { 2296, 0x13a5 }, { 2303, 0x6502 }, { 2308, 0x30a0 }, { 2312, 0xb278 }, { 2320, 0x23c7 }, { 2328, 0x6c93 }, { 2336, 0xe922 }, /* 0x6000 */ { 2343, 0xe47f }, { 2354, 0x3a74 }, { 2362, 0x8fe3 }, { 2372, 0x9820 }, { 2376, 0x280e }, { 2381, 0x2625 }, { 2387, 0xbf9c }, { 2398, 0xbf49 }, { 2408, 0x3218 }, { 2413, 0xac54 }, { 2420, 0xb949 }, { 2428, 0x1916 }, { 2434, 0x0c60 }, { 2438, 0xb522 }, { 2445, 0xfbc1 }, { 2455, 0x0659 }, /* 0x6100 */ { 2461, 0xe343 }, { 2469, 0x8420 }, { 2472, 0x08d9 }, { 2478, 0x8000 }, { 2479, 0x5500 }, { 2483, 0x2022 }, { 2486, 0x0184 }, { 2489, 0x00a1 }, { 2492, 0x4800 }, { 2494, 0x2010 }, { 2496, 0x1380 }, { 2500, 0x4080 }, { 2502, 0x0d04 }, { 2506, 0x0016 }, { 2509, 0x0040 }, { 2510, 0x8020 }, /* 0x6200 */ { 2512, 0xfd40 }, { 2520, 0x8de7 }, { 2530, 0x5436 }, { 2537, 0xe098 }, { 2543, 0x7b8b }, { 2553, 0x091e }, { 2559, 0xfec8 }, { 2569, 0xd249 }, { 2576, 0x0611 }, { 2580, 0x8dee }, { 2590, 0x1937 }, { 2598, 0xba22 }, { 2605, 0x77f4 }, { 2616, 0x9fdd }, { 2628, 0xf3ec }, { 2639, 0xf0da }, /* 0x6300 */ { 2648, 0x4386 }, { 2654, 0xec42 }, { 2661, 0x8d3f }, { 2671, 0x2604 }, { 2675, 0xfa6c }, { 2685, 0xc021 }, { 2689, 0x628e }, { 2696, 0x0cc2 }, { 2701, 0xd785 }, { 2710, 0x0145 }, { 2714, 0x77ad }, { 2725, 0x5599 }, { 2733, 0xe250 }, { 2739, 0x4045 }, { 2743, 0x260b }, { 2749, 0xa154 }, /* 0x6400 */ { 2755, 0x9827 }, { 2762, 0x5819 }, { 2768, 0x3443 }, { 2774, 0xa410 }, { 2778, 0x05f2 }, { 2785, 0x4114 }, { 2789, 0x2280 }, { 2792, 0x0700 }, { 2795, 0x00b4 }, { 2799, 0x4266 }, { 2805, 0x7210 }, { 2810, 0x15a1 }, { 2816, 0x6025 }, { 2821, 0x4185 }, { 2826, 0x0054 }, { 2829, 0x0000 }, /* 0x6500 */ { 2829, 0x0201 }, { 2831, 0x0104 }, { 2833, 0xc820 }, { 2837, 0xcb70 }, { 2845, 0x9320 }, { 2850, 0x6a62 }, { 2857, 0x184c }, { 2862, 0x0095 }, { 2866, 0x1880 }, { 2869, 0x9a8b }, { 2877, 0xaab2 }, { 2885, 0x3201 }, { 2889, 0xd87a }, { 2898, 0x00c4 }, { 2901, 0xf3e5 }, { 2912, 0x04c3 }, /* 0x6600 */ { 2917, 0xd44d }, { 2925, 0xa238 }, { 2931, 0xa1a1 }, { 2937, 0x5072 }, { 2943, 0x980a }, { 2948, 0x84fc }, { 2956, 0xc152 }, { 2962, 0x44d1 }, { 2968, 0x1094 }, { 2972, 0x20c2 }, { 2976, 0x4180 }, { 2979, 0x4210 }, { 2982, 0x0000 }, { 2982, 0x3a00 }, { 2986, 0x0240 }, { 2988, 0xd29d }, /* 0x6700 */ { 2997, 0x2f01 }, { 3003, 0xa8b1 }, { 3010, 0xbd40 }, { 3017, 0x2432 }, { 3022, 0xd34d }, { 3031, 0xd04b }, { 3038, 0xa723 }, { 3046, 0xd0ad }, { 3054, 0x0a92 }, { 3059, 0x75a1 }, { 3067, 0xadac }, { 3076, 0x01e9 }, { 3082, 0x801a }, { 3086, 0x771f }, { 3097, 0x9225 }, { 3103, 0xa01b }, /* 0x6800 */ { 3109, 0xdfa1 }, { 3119, 0x20ca }, { 3124, 0x0602 }, { 3127, 0x738c }, { 3135, 0x577f }, { 3147, 0x003b }, { 3152, 0x0bff }, { 3163, 0x00d0 }, { 3166, 0x806a }, { 3171, 0x0088 }, { 3173, 0xa1c4 }, { 3179, 0x0029 }, { 3182, 0x2a05 }, { 3187, 0x0524 }, { 3191, 0x4009 }, { 3194, 0x1623 }, /* 0x6900 */ { 3200, 0x6822 }, { 3205, 0x8005 }, { 3208, 0x2011 }, { 3211, 0xa211 }, { 3216, 0x0004 }, { 3217, 0x6490 }, { 3222, 0x4849 }, { 3227, 0x1382 }, { 3232, 0x23d5 }, { 3240, 0x1930 }, { 3245, 0x2980 }, { 3249, 0x0892 }, { 3253, 0x5402 }, { 3257, 0x8811 }, { 3261, 0x2001 }, { 3263, 0xa004 }, /* 0x6a00 */ { 3266, 0x0400 }, { 3267, 0x8180 }, { 3270, 0x8502 }, { 3274, 0x6022 }, { 3278, 0x0090 }, { 3280, 0x0b01 }, { 3284, 0x0022 }, { 3286, 0x1202 }, { 3289, 0x4011 }, { 3292, 0x0083 }, { 3295, 0x1a01 }, { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 }, /* 0x6b00 */ { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x009f }, { 3305, 0x4684 }, { 3310, 0x12c8 }, { 3315, 0x0200 }, { 3316, 0x04fc }, { 3323, 0x1a00 }, { 3326, 0x2ede }, { 3336, 0x0c4c }, { 3341, 0x0402 }, { 3343, 0x80b8 }, { 3348, 0xa826 }, { 3354, 0x0afc }, { 3362, 0x8c02 }, { 3366, 0x2228 }, /* 0x6c00 */ { 3370, 0xa0e0 }, { 3375, 0x8f7b }, { 3386, 0xc7d6 }, { 3396, 0x2135 }, { 3402, 0x06c7 }, { 3409, 0xf8b1 }, { 3418, 0x0713 }, { 3424, 0x6255 }, { 3431, 0x936e }, { 3440, 0x8a19 }, { 3446, 0x6efa }, { 3457, 0xfb0e }, { 3467, 0x1630 }, { 3472, 0x48f9 }, { 3480, 0xcd2f }, { 3490, 0x7deb }, /* 0x6d00 */ { 3502, 0x5892 }, { 3508, 0x4e84 }, { 3514, 0x4ca0 }, { 3519, 0x7a2e }, { 3528, 0xedea }, { 3539, 0x561e }, { 3547, 0xc649 }, { 3554, 0x1190 }, { 3558, 0x5324 }, { 3564, 0xe83a }, { 3572, 0xcfdb }, { 3584, 0x8124 }, { 3588, 0x18f1 }, { 3595, 0x6342 }, { 3601, 0x5853 }, { 3608, 0x1a8a }, /* 0x6e00 */ { 3614, 0x7420 }, { 3619, 0x24d3 }, { 3626, 0xaa3b }, { 3635, 0x0514 }, { 3639, 0x6018 }, { 3643, 0x8958 }, { 3649, 0x4800 }, { 3651, 0xc000 }, { 3653, 0x8268 }, { 3658, 0x9101 }, { 3662, 0x84a4 }, { 3667, 0x2cd6 }, { 3675, 0x8886 }, { 3680, 0xc4ba }, { 3688, 0x0377 }, { 3696, 0x0210 }, /* 0x6f00 */ { 3698, 0x8244 }, { 3702, 0x0038 }, { 3705, 0xae11 }, { 3712, 0x404a }, { 3716, 0x28c0 }, { 3720, 0x5100 }, { 3723, 0x6044 }, { 3727, 0x1514 }, { 3732, 0x7310 }, { 3738, 0x1000 }, { 3739, 0x0082 }, { 3741, 0x0248 }, { 3744, 0x0205 }, { 3747, 0x4006 }, { 3750, 0xc003 }, { 3754, 0x0000 }, /* 0x7000 */ { 3754, 0x0000 }, { 3754, 0x0c02 }, { 3757, 0x0008 }, { 3758, 0x0220 }, { 3760, 0x9000 }, { 3762, 0x4000 }, { 3763, 0xb800 }, { 3767, 0xd161 }, { 3774, 0x4621 }, { 3779, 0x3274 }, { 3786, 0xf800 }, { 3791, 0x3b8a }, { 3799, 0x050f }, { 3805, 0x8b00 }, { 3809, 0xbbd0 }, { 3818, 0x2280 }, /* 0x7100 */ { 3821, 0x0600 }, { 3823, 0x0769 }, { 3830, 0x8040 }, { 3832, 0x0043 }, { 3835, 0x5420 }, { 3839, 0x5000 }, { 3841, 0x41d0 }, { 3846, 0x250c }, { 3851, 0x8410 }, { 3854, 0x8310 }, { 3858, 0x1101 }, { 3861, 0x0228 }, { 3864, 0x4008 }, { 3866, 0x0030 }, { 3868, 0x40a1 }, { 3872, 0x0200 }, /* 0x7200 */ { 3873, 0x0040 }, { 3874, 0x2000 }, { 3875, 0x1500 }, { 3878, 0xabe3 }, { 3888, 0x3180 }, { 3892, 0xaa44 }, { 3898, 0xc2c6 }, { 3905, 0xc624 }, { 3911, 0xac13 }, { 3918, 0x8004 }, { 3920, 0xb000 }, { 3923, 0x03d1 }, { 3929, 0x611e }, { 3936, 0x4285 }, { 3941, 0xf303 }, { 3949, 0x1d9f }, /* 0x7300 */ { 3959, 0x440a }, { 3963, 0x78e8 }, { 3971, 0x5e26 }, { 3979, 0xc392 }, { 3986, 0x2000 }, { 3987, 0x0085 }, { 3990, 0xb001 }, { 3994, 0x4000 }, { 3995, 0x4a90 }, { 4000, 0x8842 }, { 4004, 0xca04 }, { 4009, 0x0c8d }, { 4015, 0xa705 }, { 4022, 0x4203 }, { 4026, 0x22a1 }, { 4031, 0x0004 }, /* 0x7400 */ { 4032, 0x8668 }, { 4038, 0x0c01 }, { 4041, 0x5564 }, { 4048, 0x1079 }, { 4054, 0x0002 }, { 4055, 0xdea0 }, { 4063, 0x2000 }, { 4064, 0x40c1 }, { 4068, 0x488b }, { 4074, 0x5001 }, { 4077, 0x0380 }, { 4080, 0x0400 }, { 4081, 0x0000 }, { 4081, 0x5004 }, { 4084, 0xc05d }, { 4091, 0x80d0 }, /* 0x7500 */ { 4095, 0xa010 }, { 4098, 0x970a }, { 4105, 0xbb20 }, { 4112, 0x4daf }, { 4122, 0xd921 }, { 4129, 0x1e10 }, { 4134, 0x0460 }, { 4137, 0x8314 }, { 4142, 0x8848 }, { 4146, 0xa6d6 }, { 4155, 0xd83b }, { 4164, 0x733f }, { 4175, 0x27bc }, { 4184, 0x4974 }, { 4191, 0x0ddc }, { 4199, 0x9213 }, /* 0x7600 */ { 4205, 0x142b }, { 4211, 0x8ba1 }, { 4218, 0x2e75 }, { 4227, 0xd139 }, { 4235, 0x3009 }, { 4239, 0x5050 }, { 4243, 0x8808 }, { 4246, 0x6900 }, { 4250, 0x49d4 }, { 4257, 0x024a }, { 4261, 0x4010 }, { 4263, 0x8016 }, { 4267, 0xe564 }, { 4275, 0x89d7 }, { 4284, 0xc020 }, { 4287, 0x5316 }, /* 0x7700 */ { 4294, 0x2b92 }, { 4301, 0x8600 }, { 4304, 0xa345 }, { 4311, 0x15e0 }, { 4317, 0x008b }, { 4321, 0x0c03 }, { 4325, 0x196e }, { 4333, 0xe200 }, { 4337, 0x7031 }, { 4343, 0x8006 }, { 4346, 0x16a5 }, { 4353, 0xa829 }, { 4359, 0x2000 }, { 4360, 0x1880 }, { 4363, 0x7aac }, { 4372, 0xe148 }, /* 0x7800 */ { 4378, 0x3207 }, { 4384, 0xb5d6 }, { 4394, 0x32e8 }, { 4401, 0x5f91 }, { 4410, 0x50a1 }, { 4415, 0x20e5 }, { 4421, 0x7c00 }, { 4426, 0x1080 }, { 4428, 0x7280 }, { 4433, 0x9d8a }, { 4441, 0x00aa }, { 4445, 0x421f }, { 4452, 0x0e22 }, { 4457, 0x0231 }, { 4461, 0x1100 }, { 4463, 0x0494 }, /* 0x7900 */ { 4467, 0x0022 }, { 4469, 0x4008 }, { 4471, 0x0010 }, { 4472, 0x5c10 }, { 4477, 0x0343 }, { 4482, 0xfcc8 }, { 4491, 0xa1a5 }, { 4498, 0x0580 }, { 4501, 0x8433 }, { 4507, 0x0400 }, { 4508, 0x0080 }, { 4509, 0x6e08 }, { 4515, 0x2a4b }, { 4522, 0x8126 }, { 4527, 0xaad8 }, { 4535, 0x2901 }, /* 0x7a00 */ { 4539, 0x684d }, { 4546, 0x4490 }, { 4550, 0x0009 }, { 4552, 0xba88 }, { 4559, 0x0040 }, { 4560, 0x0082 }, { 4562, 0x0000 }, { 4562, 0x87d1 }, { 4570, 0x215b }, { 4577, 0xb1e6 }, { 4586, 0x3161 }, { 4592, 0x8008 }, { 4594, 0x0800 }, { 4595, 0xc240 }, { 4599, 0xa069 }, { 4605, 0xa600 }, /* 0x7b00 */ { 4609, 0x8d58 }, { 4616, 0x4a32 }, { 4622, 0x5d71 }, { 4631, 0x550a }, { 4637, 0x9aa0 }, { 4643, 0x2d57 }, { 4652, 0x4005 }, { 4655, 0x4aa6 }, { 4662, 0x2021 }, { 4665, 0x30b1 }, { 4671, 0x3fc6 }, { 4681, 0x0112 }, { 4684, 0x10c2 }, { 4688, 0x260a }, { 4693, 0x4462 }, { 4698, 0x5082 }, /* 0x7c00 */ { 4702, 0x9880 }, { 4706, 0x8040 }, { 4708, 0x04c0 }, { 4711, 0x8100 }, { 4713, 0x2003 }, { 4716, 0x0000 }, { 4716, 0x0000 }, { 4716, 0x3818 }, { 4721, 0x0200 }, { 4722, 0xf1a6 }, { 4731, 0x4434 }, { 4736, 0x720e }, { 4743, 0x35a2 }, { 4750, 0x92e0 }, { 4756, 0x8101 }, { 4759, 0x0900 }, /* 0x7d00 */ { 4761, 0x0400 }, { 4762, 0x0000 }, { 4762, 0x8885 }, { 4767, 0x0000 }, { 4767, 0x0000 }, { 4767, 0x0000 }, { 4767, 0x4000 }, { 4768, 0x0080 }, { 4769, 0x0000 }, { 4769, 0x0000 }, { 4769, 0x4040 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, /* 0x7e00 */ { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0800 }, { 4772, 0x0082 }, { 4774, 0x0000 }, { 4774, 0x0000 }, { 4774, 0x0000 }, { 4774, 0x0004 }, { 4775, 0x8800 }, { 4777, 0xbfff }, { 4792, 0xe7ef }, { 4805, 0xffff }, { 4821, 0xffbf }, { 4836, 0xefef }, { 4850, 0xfdff }, /* 0x7f00 */ { 4865, 0xfbff }, { 4880, 0xbffe }, { 4894, 0xffff }, { 4910, 0x057f }, { 4919, 0x0034 }, { 4922, 0x85b3 }, { 4930, 0x4706 }, { 4936, 0x4216 }, { 4941, 0x5402 }, { 4945, 0xe410 }, { 4950, 0x8092 }, { 4954, 0xb305 }, { 4961, 0x5422 }, { 4966, 0x8130 }, { 4970, 0x4263 }, { 4976, 0x180b }, /* 0x8000 */ { 4981, 0x387b }, { 4990, 0x13f5 }, { 4999, 0x07e5 }, { 5007, 0xa9ea }, { 5016, 0x3c4c }, { 5023, 0x0514 }, { 5027, 0x0600 }, { 5029, 0x8002 }, { 5031, 0x1ad9 }, { 5039, 0xbd48 }, { 5047, 0xee37 }, { 5058, 0xf496 }, { 5067, 0x705f }, { 5076, 0x7ec0 }, { 5084, 0xbfb2 }, { 5095, 0x355f }, /* 0x8100 */ { 5105, 0xe644 }, { 5112, 0x455f }, { 5121, 0x9000 }, { 5123, 0x4146 }, { 5128, 0x1d40 }, { 5133, 0x063b }, { 5140, 0x62a1 }, { 5146, 0xfe13 }, { 5156, 0x8505 }, { 5161, 0x3902 }, { 5166, 0x0548 }, { 5170, 0x0c08 }, { 5173, 0x144f }, { 5180, 0x0000 }, { 5180, 0x3488 }, { 5185, 0x5818 }, /* 0x8200 */ { 5190, 0x3077 }, { 5198, 0xd815 }, { 5205, 0xbd0e }, { 5214, 0x4bfb }, { 5225, 0x8a90 }, { 5230, 0x8500 }, { 5233, 0xc100 }, { 5236, 0xe61d }, { 5245, 0xed14 }, { 5253, 0xb386 }, { 5261, 0xff72 }, { 5273, 0x639b }, { 5282, 0xfd92 }, { 5292, 0xd9be }, { 5303, 0x887b }, { 5311, 0x0a92 }, /* 0x8300 */ { 5316, 0xd3fe }, { 5328, 0x1cb2 }, { 5335, 0xb980 }, { 5341, 0x177a }, { 5350, 0x82c9 }, { 5356, 0xdc17 }, { 5365, 0xfffb }, { 5380, 0x3980 }, { 5385, 0x4260 }, { 5389, 0x590c }, { 5395, 0x0f01 }, { 5400, 0x37df }, { 5412, 0x94a3 }, { 5419, 0xb150 }, { 5425, 0x0623 }, { 5430, 0x2307 }, /* 0x8400 */ { 5436, 0xf85a }, { 5445, 0x3102 }, { 5449, 0x01f0 }, { 5454, 0x3102 }, { 5458, 0x0040 }, { 5459, 0x1e82 }, { 5465, 0x3a0a }, { 5471, 0x056a }, { 5477, 0x5b84 }, { 5484, 0x1280 }, { 5487, 0x8002 }, { 5489, 0xa714 }, { 5496, 0x2612 }, { 5501, 0xa04b }, { 5507, 0x1069 }, { 5512, 0x9001 }, /* 0x8500 */ { 5515, 0x1000 }, { 5516, 0x848a }, { 5521, 0x1802 }, { 5524, 0x3f80 }, { 5531, 0x0708 }, { 5535, 0x4240 }, { 5538, 0x0110 }, { 5540, 0x4e14 }, { 5546, 0x80b0 }, { 5550, 0x1800 }, { 5552, 0xc510 }, { 5557, 0x0281 }, { 5560, 0x8202 }, { 5563, 0x1029 }, { 5567, 0x0210 }, { 5569, 0x8800 }, /* 0x8600 */ { 5571, 0x0020 }, { 5572, 0x0042 }, { 5574, 0x0280 }, { 5576, 0x1100 }, { 5578, 0xe000 }, { 5581, 0x4413 }, { 5586, 0x5804 }, { 5590, 0xfe02 }, { 5598, 0x3c07 }, { 5605, 0x3028 }, { 5609, 0x9798 }, { 5617, 0x0473 }, { 5623, 0xced1 }, { 5632, 0xcb13 }, { 5640, 0x6210 }, { 5644, 0x431f }, /* 0x8700 */ { 5652, 0x278d }, { 5660, 0x55ac }, { 5668, 0x422e }, { 5674, 0xc892 }, { 5680, 0x5380 }, { 5685, 0x0288 }, { 5688, 0x4039 }, { 5693, 0x7851 }, { 5700, 0x292c }, { 5706, 0x8088 }, { 5709, 0xb900 }, { 5714, 0x2428 }, { 5718, 0x0c41 }, { 5722, 0x080e }, { 5726, 0x4421 }, { 5730, 0x4200 }, /* 0x8800 */ { 5732, 0x0408 }, { 5734, 0x0868 }, { 5738, 0x0006 }, { 5740, 0x1204 }, { 5743, 0x3031 }, { 5748, 0x0290 }, { 5751, 0x5b3e }, { 5761, 0xe085 }, { 5767, 0x2936 }, { 5774, 0x1044 }, { 5777, 0x2814 }, { 5781, 0x1082 }, { 5784, 0x4266 }, { 5790, 0x8334 }, { 5796, 0x013c }, { 5801, 0x531b }, /* 0x8900 */ { 5809, 0x0404 }, { 5811, 0x0e0d }, { 5817, 0x0c22 }, { 5821, 0x0051 }, { 5824, 0x0012 }, { 5826, 0xc000 }, { 5828, 0x0040 }, { 5829, 0x8800 }, { 5831, 0x004a }, { 5834, 0x0000 }, { 5834, 0x0000 }, { 5834, 0x0000 }, { 5834, 0xdff6 }, { 5847, 0x5447 }, { 5854, 0x8868 }, { 5859, 0x0008 }, /* 0x8a00 */ { 5860, 0x0081 }, { 5862, 0x0000 }, { 5862, 0x0000 }, { 5862, 0x4000 }, { 5863, 0x0100 }, { 5864, 0x0000 }, { 5864, 0x0000 }, { 5864, 0x0200 }, { 5865, 0x0600 }, { 5867, 0x0008 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, /* 0x8b00 */ { 5868, 0x0080 }, { 5869, 0x0000 }, { 5869, 0x0040 }, { 5870, 0x0000 }, { 5870, 0x0000 }, { 5870, 0x0000 }, { 5870, 0x1040 }, { 5872, 0x0000 }, { 5872, 0x0000 }, { 5872, 0x0000 }, { 5872, 0xefff }, { 5887, 0xf7fd }, { 5901, 0xff7f }, { 5916, 0xfffe }, { 5931, 0xfbff }, { 5946, 0xffff }, /* 0x8c00 */ { 5962, 0xfdff }, { 5977, 0xbfff }, { 5992, 0xffff }, { 6008, 0x00ff }, { 6016, 0x12c2 }, { 6021, 0x0420 }, { 6023, 0x0c06 }, { 6027, 0x0708 }, { 6031, 0x1624 }, { 6036, 0x0110 }, { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 }, /* 0x8d00 */ { 6038, 0x0000 }, { 6038, 0xe000 }, { 6041, 0xfffe }, { 6056, 0xffff }, { 6072, 0xffff }, { 6088, 0x7f79 }, { 6100, 0x28df }, { 6109, 0x00f9 }, { 6115, 0x0c32 }, { 6120, 0x8012 }, { 6123, 0x0008 }, { 6124, 0xd53a }, { 6133, 0xd858 }, { 6140, 0xecc2 }, { 6148, 0x9d18 }, { 6155, 0x2fa8 }, /* 0x8e00 */ { 6163, 0x9620 }, { 6168, 0xe010 }, { 6172, 0xd60c }, { 6179, 0x2622 }, { 6184, 0x0f97 }, { 6193, 0x0206 }, { 6196, 0xb240 }, { 6201, 0x9055 }, { 6207, 0x80a2 }, { 6211, 0x5011 }, { 6215, 0x9800 }, { 6218, 0x0404 }, { 6220, 0x4000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, /* 0x8f00 */ { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0xfbc0 }, { 6230, 0xffff }, { 6246, 0xeffe }, { 6260, 0xdffb }, { 6274, 0x0b08 }, { 6278, 0x6243 }, { 6284, 0x41b6 }, { 6291, 0xfb3b }, { 6303, 0x6f74 }, { 6313, 0x2389 }, /* 0x9000 */ { 6319, 0xae7f }, { 6331, 0xecd7 }, { 6342, 0xe047 }, { 6349, 0x5960 }, { 6355, 0xa096 }, { 6361, 0x098f }, { 6368, 0x612c }, { 6374, 0xa030 }, { 6378, 0x090d }, { 6383, 0x2aaa }, { 6390, 0xd44e }, { 6398, 0x4f7b }, { 6409, 0xc4b2 }, { 6416, 0x388b }, { 6423, 0xa9c6 }, { 6431, 0x6110 }, /* 0x9100 */ { 6435, 0x0014 }, { 6437, 0x4200 }, { 6439, 0x800c }, { 6442, 0x0202 }, { 6444, 0xfe48 }, { 6453, 0x6485 }, { 6459, 0xd63e }, { 6469, 0xe3f7 }, { 6481, 0x3aa0 }, { 6487, 0x0c07 }, { 6492, 0xe40c }, { 6498, 0x0430 }, { 6501, 0xf680 }, { 6508, 0x1002 }, { 6510, 0x0000 }, { 6510, 0x0000 }, /* 0x9200 */ { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0010 }, { 6511, 0x4000 }, { 6512, 0x0000 }, { 6512, 0x4000 }, { 6513, 0x0000 }, { 6513, 0x0100 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 }, /* 0x9300 */ { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x4000 }, { 6515, 0x0000 }, { 6515, 0x0000 }, { 6515, 0x0400 }, { 6516, 0x0000 }, { 6516, 0x8000 }, { 6517, 0x0000 }, { 6517, 0x0000 }, { 6517, 0x0000 }, { 6517, 0x0400 }, { 6518, 0x0040 }, { 6519, 0x0000 }, { 6519, 0x0000 }, /* 0x9400 */ { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x4000 }, { 6520, 0x0000 }, { 6520, 0x0000 }, { 6520, 0x0800 }, { 6521, 0x0000 }, { 6521, 0xffe0 }, { 6532, 0xfebd }, { 6545, 0xffff }, { 6561, 0xffff }, { 6577, 0x7f7f }, { 6591, 0xfbe7 }, { 6604, 0xffbf }, { 6619, 0xf7ff }, /* 0x9500 */ { 6634, 0xffff }, { 6650, 0xefff }, { 6665, 0xff7e }, { 6679, 0xdff7 }, { 6693, 0xf6f7 }, { 6706, 0xfbdf }, { 6720, 0xbffe }, { 6734, 0x804f }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0xef00 }, { 6747, 0x7fff }, /* 0x9600 */ { 6762, 0xff7f }, { 6777, 0xb6f7 }, { 6789, 0x4406 }, { 6793, 0xb87e }, { 6803, 0x3bf5 }, { 6814, 0x8831 }, { 6819, 0x1796 }, { 6827, 0x00f4 }, { 6832, 0xa960 }, { 6838, 0x1391 }, { 6844, 0x0080 }, { 6845, 0x7249 }, { 6852, 0xf2f3 }, { 6863, 0x0024 }, { 6865, 0x8701 }, { 6870, 0x42c8 }, /* 0x9700 */ { 6875, 0xe3d3 }, { 6885, 0x5048 }, { 6889, 0x2400 }, { 6891, 0x4305 }, { 6896, 0x0000 }, { 6896, 0x4a4c }, { 6902, 0x0227 }, { 6907, 0x1058 }, { 6911, 0x2820 }, { 6914, 0x0116 }, { 6918, 0xa809 }, { 6923, 0x0014 }, { 6925, 0x0000 }, { 6925, 0x0000 }, { 6925, 0x3ec0 }, { 6932, 0x0068 }, /* 0x9800 */ { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0xffe0 }, { 6946, 0xb7ff }, { 6960, 0xfddb }, { 6973, 0x00f7 }, { 6980, 0x0000 }, { 6980, 0x4000 }, { 6981, 0xc72e }, { 6990, 0x0180 }, { 6992, 0x0000 }, /* 0x9900 */ { 6992, 0x2000 }, { 6993, 0x0001 }, { 6994, 0x4000 }, { 6995, 0x0000 }, { 6995, 0x0000 }, { 6995, 0x0030 }, { 6997, 0xffa8 }, { 7008, 0xb4f7 }, { 7019, 0xadf3 }, { 7030, 0x03ff }, { 7040, 0x0120 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, /* 0x9a00 */ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0xf000 }, { 7046, 0xfffb }, { 7061, 0x9df7 }, { 7073, 0xfdcf }, { 7086, 0x01bf }, { 7094, 0x15c3 }, { 7101, 0x1827 }, { 7107, 0x810a }, { 7111, 0xa842 }, { 7116, 0x0a00 }, /* 0x9b00 */ { 7118, 0x8108 }, { 7121, 0x8008 }, { 7123, 0x8008 }, { 7125, 0x1804 }, { 7128, 0xa3be }, { 7138, 0x0012 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, /* 0x9c00 */ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x9000 }, { 7142, 0x69e6 }, { 7151, 0xdc37 }, { 7161, 0x6bff }, { 7174, 0x3dff }, { 7187, 0xfcf8 }, { 7198, 0xf3f9 }, { 7210, 0x0004 }, }; static const Summary16 gb2312_uni2indx_page9e[27] = { /* 0x9e00 */ { 7211, 0x0000 }, { 7211, 0x8000 }, { 7212, 0xbf6f }, { 7225, 0xe7ee }, { 7237, 0xdffe }, { 7251, 0x5da2 }, { 7259, 0x3fd8 }, { 7269, 0xc00b }, { 7274, 0x0984 }, { 7278, 0xa00c }, { 7282, 0x0040 }, { 7283, 0x6910 }, { 7288, 0xe210 }, { 7293, 0xb912 }, { 7300, 0x86a5 }, { 7307, 0x5a00 }, /* 0x9f00 */ { 7311, 0x6800 }, { 7314, 0x0289 }, { 7318, 0x9005 }, { 7322, 0x6a80 }, { 7327, 0x0010 }, { 7328, 0x0003 }, { 7330, 0x0000 }, { 7330, 0x8000 }, { 7331, 0x1ff9 }, { 7342, 0x8e00 }, { 7346, 0x0001 }, }; static const Summary16 gb2312_uni2indx_pageff[15] = { /* 0xff00 */ { 7347, 0xfffe }, { 7362, 0xffff }, { 7378, 0xffff }, { 7394, 0xffff }, { 7410, 0xffff }, { 7426, 0x7fff }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x002b }, }; static int gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0460) summary = &gb2312_uni2indx_page00[(wc>>4)]; else if (wc >= 0x2000 && wc < 0x2650) summary = &gb2312_uni2indx_page20[(wc>>4)-0x200]; else if (wc >= 0x3000 && wc < 0x3230) summary = &gb2312_uni2indx_page30[(wc>>4)-0x300]; else if (wc >= 0x4e00 && wc < 0x9cf0) summary = &gb2312_uni2indx_page4e[(wc>>4)-0x4e0]; else if (wc >= 0x9e00 && wc < 0x9fb0) summary = &gb2312_uni2indx_page9e[(wc>>4)-0x9e0]; else if (wc >= 0xff00 && wc < 0xfff0) summary = &gb2312_uni2indx_pageff[(wc>>4)-0xff0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = gb2312_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/gbk.h0100644000000000000000000000752507206266436014067 0ustar rootroot/* * GBK */ /* * GBK, as described in Ken Lunde's book, is an extension of GB 2312-1980 * (shifted by adding 0x8080 to the range 0xA1A1..0xFEFE, as used in EUC-CN). * It adds the following ranges: * * (part of GBK/1) 0xA2A1-0xA2AA Small Roman numerals * GBK/3 0x{81-A0}{40-7E,80-FE} 6080 new characters, all in Unicode * GBK/4 0x{AA-FE}{40-7E,80-A0} 8160 new characters, 8080 in Unicode * GBK/5 0x{A8-A9}{40-7E,80-A0} 166 new characters, 153 in Unicode */ /* * CP936 is nearly identical to GBK. It differs as follows: * * 1. Some characters in the GB2312 range are defined differently: * * code GB2312 CP936.TXT * 0xA1A4 0x30FB # KATAKANA MIDDLE DOT 0x00B7 # MIDDLE DOT * 0xA1AA 0x2015 # HORIZONTAL BAR 0x2014 # EM DASH * * 2. 19 characters added in the range 0xA6E0-0xA6F5. * * 3. 4 characters added in the range 0xA8BB-0xA8C0. */ /* * Since all three tables I have looked at * - the CP936 table by Microsoft, found on ftp.unicode.org, * - the GBK table by Sun, investigated on a Solaris 2.7 machine, * - the GBK tables by CWEX, found in the Big5+ package, * all include these CP936 extensions (the CWEX tables have additional * differences), I conclude that either Ken Lunde has overlooked some of * the differences between GB2312 and GBK, or he is right but the major * vendors don't care about it. In either case, CP936 is the de facto * standard under the name "GBK", and we should better support it. * * So in what follows, when we write "GBK" we always mean "CP936". */ #include "gbkext1.h" #include "gbkext2.h" #include "gbkext_inv.h" #include "cp936ext.h" static int gbk_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c >= 0x81 && c < 0xff) { if (n < 2) return RET_TOOFEW(0); if (c >= 0xa1 && c <= 0xf7) { unsigned char c2 = s[1]; if (c == 0xa1) { if (c2 == 0xa4) { *pwc = 0x00b7; return 2; } if (c2 == 0xaa) { *pwc = 0x2014; return 2; } } if (c2 >= 0xa1 && c2 < 0xff) { unsigned char buf[2]; int ret; buf[0] = c-0x80; buf[1] = c2-0x80; ret = gb2312_mbtowc(conv,pwc,buf,2); if (ret != RET_ILSEQ) return ret; buf[0] = c; buf[1] = c2; ret = cp936ext_mbtowc(conv,pwc,buf,2); if (ret != RET_ILSEQ) return ret; } } if (c >= 0x81 && c <= 0xa0) return gbkext1_mbtowc(conv,pwc,s,2); if (c >= 0xa8 && c <= 0xfe) return gbkext2_mbtowc(conv,pwc,s,2); if (c == 0xa2) { unsigned char c2 = s[1]; if (c2 >= 0xa1 && c2 <= 0xaa) { *pwc = 0x2170+(c2-0xa1); return 2; } } } return RET_ILSEQ; } static int gbk_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; if (wc != 0x30fb && wc != 0x2015) { ret = gb2312_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]+0x80; r[1] = buf[1]+0x80; return 2; } } ret = gbkext_inv_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]; r[1] = buf[1]; return 2; } if (wc >= 0x2170 && wc <= 0x2179) { r[0] = 0xa2; r[1] = 0xa1 + (wc-0x2170); return 2; } ret = cp936ext_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]; r[1] = buf[1]; return 2; } if (wc == 0x00b7) { if (n < 2) return RET_TOOSMALL; r[0] = 0xa1; r[1] = 0xa4; return 2; } if (wc == 0x2014) { if (n < 2) return RET_TOOSMALL; r[0] = 0xa1; r[1] = 0xaa; return 2; } return RET_ILSEQ; } recode-3.6/libiconv/gbkext1.h0100644000000000000000000014420107206266436014662 0ustar rootroot /* * GBK/3 extensions */ static const unsigned short gbkext1_2uni_page81[6080] = { /* 0x81 */ 0x4e02, 0x4e04, 0x4e05, 0x4e06, 0x4e0f, 0x4e12, 0x4e17, 0x4e1f, 0x4e20, 0x4e21, 0x4e23, 0x4e26, 0x4e29, 0x4e2e, 0x4e2f, 0x4e31, 0x4e33, 0x4e35, 0x4e37, 0x4e3c, 0x4e40, 0x4e41, 0x4e42, 0x4e44, 0x4e46, 0x4e4a, 0x4e51, 0x4e55, 0x4e57, 0x4e5a, 0x4e5b, 0x4e62, 0x4e63, 0x4e64, 0x4e65, 0x4e67, 0x4e68, 0x4e6a, 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f, 0x4e72, 0x4e74, 0x4e75, 0x4e76, 0x4e77, 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7f, 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e87, 0x4e8a, 0x4e90, 0x4e96, 0x4e97, 0x4e99, 0x4e9c, 0x4e9d, 0x4e9e, 0x4ea3, 0x4eaa, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb4, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9, 0x4ebc, 0x4ebd, 0x4ebe, 0x4ec8, 0x4ecc, 0x4ecf, 0x4ed0, 0x4ed2, 0x4eda, 0x4edb, 0x4edc, 0x4ee0, 0x4ee2, 0x4ee6, 0x4ee7, 0x4ee9, 0x4eed, 0x4eee, 0x4eef, 0x4ef1, 0x4ef4, 0x4ef8, 0x4ef9, 0x4efa, 0x4efc, 0x4efe, 0x4f00, 0x4f02, 0x4f03, 0x4f04, 0x4f05, 0x4f06, 0x4f07, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12, 0x4f13, 0x4f14, 0x4f15, 0x4f16, 0x4f1c, 0x4f1d, 0x4f21, 0x4f23, 0x4f28, 0x4f29, 0x4f2c, 0x4f2d, 0x4f2e, 0x4f31, 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f44, 0x4f45, 0x4f47, 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f61, 0x4f62, 0x4f66, 0x4f68, 0x4f6a, 0x4f6b, 0x4f6d, 0x4f6e, 0x4f71, 0x4f72, 0x4f75, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7d, 0x4f80, 0x4f81, 0x4f82, 0x4f85, 0x4f86, 0x4f87, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93, 0x4f95, 0x4f96, 0x4f98, 0x4f99, 0x4f9a, 0x4f9c, 0x4f9e, 0x4f9f, 0x4fa1, 0x4fa2, /* 0x82 */ 0x4fa4, 0x4fab, 0x4fad, 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4, 0x4fb6, 0x4fb7, 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc6, 0x4fc7, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6, 0x4fd9, 0x4fdb, 0x4fe0, 0x4fe2, 0x4fe4, 0x4fe5, 0x4fe7, 0x4feb, 0x4fec, 0x4ff0, 0x4ff2, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7, 0x4ff9, 0x4ffb, 0x4ffc, 0x4ffd, 0x4fff, 0x5000, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500a, 0x500b, 0x500e, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 0x501b, 0x501d, 0x501e, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502b, 0x502f, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, 0x5038, 0x5039, 0x503b, 0x503d, 0x503f, 0x5040, 0x5041, 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504a, 0x504b, 0x504d, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058, 0x5059, 0x505b, 0x505d, 0x505e, 0x505f, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506a, 0x506b, 0x506d, 0x506e, 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5078, 0x5079, 0x507a, 0x507c, 0x507d, 0x5081, 0x5082, 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508a, 0x508b, 0x508c, 0x508e, 0x508f, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095, 0x5096, 0x5097, 0x5098, 0x5099, 0x509a, 0x509b, 0x509c, 0x509d, 0x509e, 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50a4, 0x50a6, 0x50aa, 0x50ab, 0x50ad, 0x50ae, 0x50af, 0x50b0, 0x50b1, 0x50b3, 0x50b4, 0x50b5, 0x50b6, 0x50b7, 0x50b8, 0x50b9, 0x50bc, /* 0x83 */ 0x50bd, 0x50be, 0x50bf, 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4, 0x50c5, 0x50c6, 0x50c7, 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc, 0x50cd, 0x50ce, 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5, 0x50d7, 0x50d8, 0x50d9, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df, 0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e8, 0x50e9, 0x50ea, 0x50eb, 0x50ef, 0x50f0, 0x50f1, 0x50f2, 0x50f4, 0x50f6, 0x50f7, 0x50f8, 0x50f9, 0x50fa, 0x50fc, 0x50fd, 0x50fe, 0x50ff, 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108, 0x5109, 0x510a, 0x510c, 0x510d, 0x510e, 0x510f, 0x5110, 0x5111, 0x5113, 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511a, 0x511b, 0x511c, 0x511d, 0x511e, 0x511f, 0x5120, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f, 0x5130, 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x5142, 0x5147, 0x514a, 0x514c, 0x514e, 0x514f, 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515b, 0x515d, 0x515e, 0x515f, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167, 0x5169, 0x516a, 0x516f, 0x5172, 0x517a, 0x517e, 0x517f, 0x5183, 0x5184, 0x5186, 0x5187, 0x518a, 0x518b, 0x518e, 0x518f, 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519a, 0x519d, 0x519e, 0x519f, 0x51a1, 0x51a3, 0x51a6, 0x51a7, 0x51a8, 0x51a9, 0x51aa, 0x51ad, 0x51ae, 0x51b4, 0x51b8, 0x51b9, 0x51ba, 0x51be, 0x51bf, 0x51c1, 0x51c2, 0x51c3, 0x51c5, 0x51c8, 0x51ca, 0x51cd, 0x51ce, 0x51d0, 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7, /* 0x84 */ 0x51d8, 0x51d9, 0x51da, 0x51dc, 0x51de, 0x51df, 0x51e2, 0x51e3, 0x51e5, 0x51e6, 0x51e7, 0x51e8, 0x51e9, 0x51ea, 0x51ec, 0x51ee, 0x51f1, 0x51f2, 0x51f4, 0x51f7, 0x51fe, 0x5204, 0x5205, 0x5209, 0x520b, 0x520c, 0x520f, 0x5210, 0x5213, 0x5214, 0x5215, 0x521c, 0x521e, 0x521f, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, 0x522a, 0x522c, 0x522f, 0x5231, 0x5232, 0x5234, 0x5235, 0x523c, 0x523e, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524b, 0x524e, 0x524f, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0x5259, 0x525a, 0x525b, 0x525d, 0x525f, 0x5260, 0x5262, 0x5263, 0x5264, 0x5266, 0x5268, 0x526b, 0x526c, 0x526d, 0x526e, 0x5270, 0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279, 0x527a, 0x527b, 0x527c, 0x527e, 0x5280, 0x5283, 0x5284, 0x5285, 0x5286, 0x5287, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e, 0x528f, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298, 0x5299, 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52ae, 0x52af, 0x52b0, 0x52b4, 0x52b5, 0x52b6, 0x52b7, 0x52b8, 0x52b9, 0x52ba, 0x52bb, 0x52bc, 0x52bd, 0x52c0, 0x52c1, 0x52c2, 0x52c4, 0x52c5, 0x52c6, 0x52c8, 0x52ca, 0x52cc, 0x52cd, 0x52ce, 0x52cf, 0x52d1, 0x52d3, 0x52d4, 0x52d5, 0x52d7, 0x52d9, 0x52da, 0x52db, 0x52dc, 0x52dd, 0x52de, 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e5, 0x52e6, 0x52e7, 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed, 0x52ee, 0x52ef, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6, 0x52f7, 0x52f8, 0x52fb, 0x52fc, 0x52fd, 0x5301, 0x5302, 0x5303, 0x5304, 0x5307, 0x5309, 0x530a, 0x530b, 0x530c, 0x530e, /* 0x85 */ 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531b, 0x531c, 0x531e, 0x531f, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, 0x5335, 0x5336, 0x5337, 0x5338, 0x533c, 0x533d, 0x5340, 0x5342, 0x5344, 0x5346, 0x534b, 0x534c, 0x534d, 0x5350, 0x5354, 0x5358, 0x5359, 0x535b, 0x535d, 0x5365, 0x5368, 0x536a, 0x536c, 0x536d, 0x5372, 0x5376, 0x5379, 0x537b, 0x537c, 0x537d, 0x537e, 0x5380, 0x5381, 0x5383, 0x5387, 0x5388, 0x538a, 0x538e, 0x538f, 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 0x539b, 0x539c, 0x539e, 0x53a0, 0x53a1, 0x53a4, 0x53a7, 0x53aa, 0x53ab, 0x53ac, 0x53ad, 0x53af, 0x53b0, 0x53b1, 0x53b2, 0x53b3, 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53b9, 0x53ba, 0x53bc, 0x53bd, 0x53be, 0x53c0, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, 0x53ce, 0x53cf, 0x53d0, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dc, 0x53dd, 0x53de, 0x53e1, 0x53e2, 0x53e7, 0x53f4, 0x53fa, 0x53fe, 0x53ff, 0x5400, 0x5402, 0x5405, 0x5407, 0x540b, 0x5414, 0x5418, 0x5419, 0x541a, 0x541c, 0x5422, 0x5424, 0x5425, 0x542a, 0x5430, 0x5433, 0x5436, 0x5437, 0x543a, 0x543d, 0x543f, 0x5441, 0x5442, 0x5444, 0x5445, 0x5447, 0x5449, 0x544c, 0x544d, 0x544e, 0x544f, 0x5451, 0x545a, 0x545d, 0x545e, 0x545f, 0x5460, 0x5461, 0x5463, 0x5465, 0x5467, 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f, 0x5470, 0x5474, 0x5479, 0x547a, 0x547e, 0x547f, 0x5481, 0x5483, 0x5485, 0x5487, 0x5488, 0x5489, 0x548a, 0x548d, 0x5491, 0x5493, 0x5497, 0x5498, 0x549c, 0x549e, 0x549f, 0x54a0, 0x54a1, /* 0x86 */ 0x54a2, 0x54a5, 0x54ae, 0x54b0, 0x54b2, 0x54b5, 0x54b6, 0x54b7, 0x54b9, 0x54ba, 0x54bc, 0x54be, 0x54c3, 0x54c5, 0x54ca, 0x54cb, 0x54d6, 0x54d8, 0x54db, 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4, 0x54eb, 0x54ec, 0x54ef, 0x54f0, 0x54f1, 0x54f4, 0x54f5, 0x54f6, 0x54f7, 0x54f8, 0x54f9, 0x54fb, 0x54fe, 0x5500, 0x5502, 0x5503, 0x5504, 0x5505, 0x5508, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e, 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551a, 0x551c, 0x551d, 0x551e, 0x551f, 0x5521, 0x5525, 0x5526, 0x5528, 0x5529, 0x552b, 0x552d, 0x5532, 0x5534, 0x5535, 0x5536, 0x5538, 0x5539, 0x553a, 0x553b, 0x553d, 0x5540, 0x5542, 0x5545, 0x5547, 0x5548, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5551, 0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555a, 0x555b, 0x555d, 0x555e, 0x555f, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 0x556b, 0x556f, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 0x557a, 0x557d, 0x557f, 0x5585, 0x5586, 0x558c, 0x558d, 0x558e, 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559a, 0x559b, 0x559e, 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6, 0x55a8, 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af, 0x55b0, 0x55b2, 0x55b4, 0x55b6, 0x55b8, 0x55ba, 0x55bc, 0x55bf, 0x55c0, 0x55c1, 0x55c2, 0x55c3, 0x55c6, 0x55c7, 0x55c8, 0x55ca, 0x55cb, 0x55ce, 0x55cf, 0x55d0, 0x55d5, 0x55d7, 0x55d8, 0x55d9, 0x55da, 0x55db, 0x55de, 0x55e0, 0x55e2, 0x55e7, 0x55e9, 0x55ed, 0x55ee, 0x55f0, 0x55f1, 0x55f4, 0x55f6, 0x55f8, 0x55f9, 0x55fa, 0x55fb, 0x55fc, 0x55ff, 0x5602, 0x5603, 0x5604, 0x5605, /* 0x87 */ 0x5606, 0x5607, 0x560a, 0x560b, 0x560d, 0x5610, 0x5611, 0x5612, 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561a, 0x561c, 0x561d, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629, 0x562a, 0x562b, 0x562e, 0x562f, 0x5630, 0x5633, 0x5635, 0x5637, 0x5638, 0x563a, 0x563c, 0x563d, 0x563e, 0x5640, 0x5641, 0x5642, 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564a, 0x564b, 0x564f, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656, 0x565a, 0x565b, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5663, 0x5665, 0x5666, 0x5667, 0x566d, 0x566e, 0x566f, 0x5670, 0x5672, 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567a, 0x567d, 0x567e, 0x567f, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5687, 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x5690, 0x5691, 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699, 0x569a, 0x569b, 0x569c, 0x569d, 0x569e, 0x569f, 0x56a0, 0x56a1, 0x56a2, 0x56a4, 0x56a5, 0x56a6, 0x56a7, 0x56a8, 0x56a9, 0x56aa, 0x56ab, 0x56ac, 0x56ad, 0x56ae, 0x56b0, 0x56b1, 0x56b2, 0x56b3, 0x56b4, 0x56b5, 0x56b6, 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bd, 0x56be, 0x56bf, 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5, 0x56c6, 0x56c7, 0x56c8, 0x56c9, 0x56cb, 0x56cc, 0x56cd, 0x56ce, 0x56cf, 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d5, 0x56d6, 0x56d8, 0x56d9, 0x56dc, 0x56e3, 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56e9, 0x56ea, 0x56ec, 0x56ee, 0x56ef, 0x56f2, 0x56f3, 0x56f6, 0x56f7, 0x56f8, 0x56fb, 0x56fc, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 0x570b, 0x570c, 0x570d, 0x570e, 0x570f, 0x5710, 0x5711, /* 0x88 */ 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719, 0x571a, 0x571b, 0x571d, 0x571e, 0x5720, 0x5721, 0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572b, 0x5731, 0x5732, 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573c, 0x573d, 0x573f, 0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574b, 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765, 0x5767, 0x576c, 0x576e, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775, 0x5778, 0x5779, 0x577a, 0x577d, 0x577e, 0x577f, 0x5780, 0x5781, 0x5787, 0x5788, 0x5789, 0x578a, 0x578d, 0x578e, 0x578f, 0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a5, 0x57a8, 0x57aa, 0x57ac, 0x57af, 0x57b0, 0x57b1, 0x57b3, 0x57b5, 0x57b6, 0x57b7, 0x57b9, 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf, 0x57c0, 0x57c1, 0x57c4, 0x57c5, 0x57c6, 0x57c7, 0x57c8, 0x57c9, 0x57ca, 0x57cc, 0x57cd, 0x57d0, 0x57d1, 0x57d3, 0x57d6, 0x57d7, 0x57db, 0x57dc, 0x57de, 0x57e1, 0x57e2, 0x57e3, 0x57e5, 0x57e6, 0x57e7, 0x57e8, 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ee, 0x57f0, 0x57f1, 0x57f2, 0x57f3, 0x57f5, 0x57f6, 0x57f7, 0x57fb, 0x57fc, 0x57fe, 0x57ff, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580a, 0x580c, 0x580e, 0x580f, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816, 0x5817, 0x5818, 0x581a, 0x581b, 0x581c, 0x581d, 0x581f, 0x5822, 0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582b, 0x582c, 0x582d, 0x582e, 0x582f, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836, 0x5837, 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d, /* 0x89 */ 0x583e, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846, 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584e, 0x584f, 0x5850, 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5866, 0x5867, 0x5868, 0x5869, 0x586a, 0x586d, 0x586e, 0x586f, 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587f, 0x5882, 0x5884, 0x5886, 0x5887, 0x5888, 0x588a, 0x588b, 0x588c, 0x588d, 0x588e, 0x588f, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897, 0x5898, 0x589b, 0x589c, 0x589d, 0x58a0, 0x58a1, 0x58a2, 0x58a3, 0x58a4, 0x58a5, 0x58a6, 0x58a7, 0x58aa, 0x58ab, 0x58ac, 0x58ad, 0x58ae, 0x58af, 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4, 0x58b5, 0x58b6, 0x58b7, 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bd, 0x58be, 0x58bf, 0x58c0, 0x58c2, 0x58c3, 0x58c4, 0x58c6, 0x58c7, 0x58c8, 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf, 0x58d0, 0x58d2, 0x58d3, 0x58d4, 0x58d6, 0x58d7, 0x58d8, 0x58d9, 0x58da, 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df, 0x58e0, 0x58e1, 0x58e2, 0x58e3, 0x58e5, 0x58e6, 0x58e7, 0x58e8, 0x58e9, 0x58ea, 0x58ed, 0x58ef, 0x58f1, 0x58f2, 0x58f4, 0x58f5, 0x58f7, 0x58f8, 0x58fa, 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff, 0x5900, 0x5901, 0x5903, 0x5905, 0x5906, 0x5908, 0x5909, 0x590a, 0x590b, 0x590c, 0x590e, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591b, 0x591d, 0x591e, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 0x592c, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593b, /* 0x8a */ 0x593d, 0x593e, 0x593f, 0x5940, 0x5943, 0x5945, 0x5946, 0x594a, 0x594c, 0x594d, 0x5950, 0x5952, 0x5953, 0x5959, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967, 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f, 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597a, 0x597b, 0x597c, 0x597e, 0x597f, 0x5980, 0x5985, 0x5989, 0x598b, 0x598c, 0x598e, 0x598f, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599a, 0x599b, 0x599c, 0x599d, 0x599f, 0x59a0, 0x59a1, 0x59a2, 0x59a6, 0x59a7, 0x59ac, 0x59ad, 0x59b0, 0x59b1, 0x59b3, 0x59b4, 0x59b5, 0x59b6, 0x59b7, 0x59b8, 0x59ba, 0x59bc, 0x59bd, 0x59bf, 0x59c0, 0x59c1, 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c7, 0x59c8, 0x59c9, 0x59cc, 0x59cd, 0x59ce, 0x59cf, 0x59d5, 0x59d6, 0x59d9, 0x59db, 0x59de, 0x59df, 0x59e0, 0x59e1, 0x59e2, 0x59e4, 0x59e6, 0x59e7, 0x59e9, 0x59ea, 0x59eb, 0x59ed, 0x59ee, 0x59ef, 0x59f0, 0x59f1, 0x59f2, 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7, 0x59f8, 0x59fa, 0x59fc, 0x59fd, 0x59fe, 0x5a00, 0x5a02, 0x5a0a, 0x5a0b, 0x5a0d, 0x5a0e, 0x5a0f, 0x5a10, 0x5a12, 0x5a14, 0x5a15, 0x5a16, 0x5a17, 0x5a19, 0x5a1a, 0x5a1b, 0x5a1d, 0x5a1e, 0x5a21, 0x5a22, 0x5a24, 0x5a26, 0x5a27, 0x5a28, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, 0x5a30, 0x5a33, 0x5a35, 0x5a37, 0x5a38, 0x5a39, 0x5a3a, 0x5a3b, 0x5a3d, 0x5a3e, 0x5a3f, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50, 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a56, 0x5a57, 0x5a58, 0x5a59, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60, /* 0x8b */ 0x5a61, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a68, 0x5a69, 0x5a6b, 0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71, 0x5a72, 0x5a73, 0x5a78, 0x5a79, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a80, 0x5a81, 0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, 0x5a88, 0x5a89, 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f, 0x5a90, 0x5a91, 0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97, 0x5a98, 0x5a99, 0x5a9c, 0x5a9d, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4, 0x5aa5, 0x5aa6, 0x5aa7, 0x5aa8, 0x5aa9, 0x5aab, 0x5aac, 0x5aad, 0x5aae, 0x5aaf, 0x5ab0, 0x5ab1, 0x5ab4, 0x5ab6, 0x5ab7, 0x5ab9, 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abf, 0x5ac0, 0x5ac3, 0x5ac4, 0x5ac5, 0x5ac6, 0x5ac7, 0x5ac8, 0x5aca, 0x5acb, 0x5acd, 0x5ace, 0x5acf, 0x5ad0, 0x5ad1, 0x5ad3, 0x5ad5, 0x5ad7, 0x5ad9, 0x5ada, 0x5adb, 0x5add, 0x5ade, 0x5adf, 0x5ae2, 0x5ae4, 0x5ae5, 0x5ae7, 0x5ae8, 0x5aea, 0x5aec, 0x5aed, 0x5aee, 0x5aef, 0x5af0, 0x5af2, 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7, 0x5af8, 0x5af9, 0x5afa, 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff, 0x5b00, 0x5b01, 0x5b02, 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, 0x5b08, 0x5b0a, 0x5b0b, 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f, 0x5b10, 0x5b11, 0x5b12, 0x5b13, 0x5b14, 0x5b15, 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c, 0x5b1d, 0x5b1e, 0x5b1f, 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25, 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b33, 0x5b35, 0x5b36, 0x5b38, 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b41, 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47, /* 0x8c */ 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f, 0x5b52, 0x5b56, 0x5b5e, 0x5b60, 0x5b61, 0x5b67, 0x5b68, 0x5b6b, 0x5b6d, 0x5b6e, 0x5b6f, 0x5b72, 0x5b74, 0x5b76, 0x5b77, 0x5b78, 0x5b79, 0x5b7b, 0x5b7c, 0x5b7e, 0x5b7f, 0x5b82, 0x5b86, 0x5b8a, 0x5b8d, 0x5b8e, 0x5b90, 0x5b91, 0x5b92, 0x5b94, 0x5b96, 0x5b9f, 0x5ba7, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5bae, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7, 0x5bba, 0x5bbb, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bc3, 0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcd, 0x5bce, 0x5bcf, 0x5bd1, 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda, 0x5bdb, 0x5bdc, 0x5be0, 0x5be2, 0x5be3, 0x5be6, 0x5be7, 0x5be9, 0x5bea, 0x5beb, 0x5bec, 0x5bed, 0x5bef, 0x5bf1, 0x5bf2, 0x5bf3, 0x5bf4, 0x5bf5, 0x5bf6, 0x5bf7, 0x5bfd, 0x5bfe, 0x5c00, 0x5c02, 0x5c03, 0x5c05, 0x5c07, 0x5c08, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e, 0x5c10, 0x5c12, 0x5c13, 0x5c17, 0x5c19, 0x5c1b, 0x5c1e, 0x5c1f, 0x5c20, 0x5c21, 0x5c23, 0x5c26, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2d, 0x5c2e, 0x5c2f, 0x5c30, 0x5c32, 0x5c33, 0x5c35, 0x5c36, 0x5c37, 0x5c43, 0x5c44, 0x5c46, 0x5c47, 0x5c4c, 0x5c4d, 0x5c52, 0x5c53, 0x5c54, 0x5c56, 0x5c57, 0x5c58, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d, 0x5c5f, 0x5c62, 0x5c64, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d, 0x5c70, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76, 0x5c77, 0x5c78, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c80, 0x5c83, 0x5c84, 0x5c85, 0x5c86, 0x5c87, 0x5c89, 0x5c8a, 0x5c8b, 0x5c8e, 0x5c8f, 0x5c92, 0x5c93, 0x5c95, 0x5c9d, 0x5c9e, 0x5c9f, 0x5ca0, 0x5ca1, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7, 0x5ca8, /* 0x8d */ 0x5caa, 0x5cae, 0x5caf, 0x5cb0, 0x5cb2, 0x5cb4, 0x5cb6, 0x5cb9, 0x5cba, 0x5cbb, 0x5cbc, 0x5cbe, 0x5cc0, 0x5cc2, 0x5cc3, 0x5cc5, 0x5cc6, 0x5cc7, 0x5cc8, 0x5cc9, 0x5cca, 0x5ccc, 0x5ccd, 0x5cce, 0x5ccf, 0x5cd0, 0x5cd1, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7, 0x5cd8, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf, 0x5ce0, 0x5ce2, 0x5ce3, 0x5ce7, 0x5ce9, 0x5ceb, 0x5cec, 0x5cee, 0x5cef, 0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7, 0x5cf8, 0x5cf9, 0x5cfa, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff, 0x5d00, 0x5d01, 0x5d04, 0x5d05, 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0d, 0x5d0f, 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d15, 0x5d17, 0x5d18, 0x5d19, 0x5d1a, 0x5d1c, 0x5d1d, 0x5d1f, 0x5d20, 0x5d21, 0x5d22, 0x5d23, 0x5d25, 0x5d28, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2f, 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d35, 0x5d36, 0x5d37, 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3f, 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d48, 0x5d49, 0x5d4d, 0x5d4e, 0x5d4f, 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57, 0x5d59, 0x5d5a, 0x5d5c, 0x5d5e, 0x5d5f, 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, 0x5d68, 0x5d6a, 0x5d6d, 0x5d6e, 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d75, 0x5d76, 0x5d77, 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5d7f, 0x5d80, 0x5d81, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87, 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f, 0x5d90, 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97, 0x5d98, 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9e, 0x5d9f, 0x5da0, /* 0x8e */ 0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7, 0x5da8, 0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf, 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf, 0x5dc0, 0x5dc1, 0x5dc2, 0x5dc3, 0x5dc4, 0x5dc6, 0x5dc7, 0x5dc8, 0x5dc9, 0x5dca, 0x5dcb, 0x5dcc, 0x5dce, 0x5dcf, 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3, 0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7, 0x5dd8, 0x5dd9, 0x5dda, 0x5ddc, 0x5ddf, 0x5de0, 0x5de3, 0x5de4, 0x5dea, 0x5dec, 0x5ded, 0x5df0, 0x5df5, 0x5df6, 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc, 0x5dff, 0x5e00, 0x5e04, 0x5e07, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0d, 0x5e0e, 0x5e12, 0x5e13, 0x5e17, 0x5e1e, 0x5e1f, 0x5e20, 0x5e21, 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2f, 0x5e30, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e39, 0x5e3a, 0x5e3e, 0x5e3f, 0x5e40, 0x5e41, 0x5e43, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5c, 0x5e5d, 0x5e5f, 0x5e60, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e75, 0x5e77, 0x5e79, 0x5e7e, 0x5e81, 0x5e82, 0x5e83, 0x5e85, 0x5e88, 0x5e89, 0x5e8c, 0x5e8d, 0x5e8e, 0x5e92, 0x5e98, 0x5e9b, 0x5e9d, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb4, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd, 0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5, /* 0x8f */ 0x5ec6, 0x5ec7, 0x5ec8, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf, 0x5ed0, 0x5ed4, 0x5ed5, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edc, 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4, 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee9, 0x5eeb, 0x5eec, 0x5eed, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef5, 0x5ef8, 0x5ef9, 0x5efb, 0x5efc, 0x5efd, 0x5f05, 0x5f06, 0x5f07, 0x5f09, 0x5f0c, 0x5f0d, 0x5f0e, 0x5f10, 0x5f12, 0x5f14, 0x5f16, 0x5f19, 0x5f1a, 0x5f1c, 0x5f1d, 0x5f1e, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28, 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f32, 0x5f33, 0x5f34, 0x5f35, 0x5f36, 0x5f37, 0x5f38, 0x5f3b, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f41, 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49, 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f51, 0x5f54, 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5e, 0x5f5f, 0x5f60, 0x5f63, 0x5f65, 0x5f67, 0x5f68, 0x5f6b, 0x5f6e, 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f76, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e, 0x5f7f, 0x5f83, 0x5f86, 0x5f8d, 0x5f8e, 0x5f8f, 0x5f91, 0x5f93, 0x5f94, 0x5f96, 0x5f9a, 0x5f9b, 0x5f9d, 0x5f9e, 0x5f9f, 0x5fa0, 0x5fa2, 0x5fa3, 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7, 0x5fa9, 0x5fab, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb6, 0x5fb8, 0x5fb9, 0x5fba, 0x5fbb, 0x5fbe, 0x5fbf, 0x5fc0, 0x5fc1, 0x5fc2, 0x5fc7, 0x5fc8, 0x5fca, 0x5fcb, 0x5fce, 0x5fd3, 0x5fd4, 0x5fd5, 0x5fda, 0x5fdb, 0x5fdc, 0x5fde, 0x5fdf, 0x5fe2, 0x5fe3, 0x5fe5, 0x5fe6, 0x5fe8, 0x5fe9, 0x5fec, 0x5fef, 0x5ff0, 0x5ff2, 0x5ff3, 0x5ff4, 0x5ff6, 0x5ff7, 0x5ff9, 0x5ffa, 0x5ffc, 0x6007, /* 0x90 */ 0x6008, 0x6009, 0x600b, 0x600c, 0x6010, 0x6011, 0x6013, 0x6017, 0x6018, 0x601a, 0x601e, 0x601f, 0x6022, 0x6023, 0x6024, 0x602c, 0x602d, 0x602e, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036, 0x6037, 0x6038, 0x6039, 0x603a, 0x603d, 0x603e, 0x6040, 0x6044, 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604c, 0x604e, 0x604f, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605b, 0x605c, 0x605e, 0x605f, 0x6060, 0x6061, 0x6065, 0x6066, 0x606e, 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607e, 0x6080, 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608a, 0x608b, 0x608e, 0x608f, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098, 0x6099, 0x609c, 0x609e, 0x60a1, 0x60a2, 0x60a4, 0x60a5, 0x60a7, 0x60a9, 0x60aa, 0x60ae, 0x60b0, 0x60b3, 0x60b5, 0x60b6, 0x60b7, 0x60b9, 0x60ba, 0x60bd, 0x60be, 0x60bf, 0x60c0, 0x60c1, 0x60c2, 0x60c3, 0x60c4, 0x60c7, 0x60c8, 0x60c9, 0x60cc, 0x60cd, 0x60ce, 0x60cf, 0x60d0, 0x60d2, 0x60d3, 0x60d4, 0x60d6, 0x60d7, 0x60d9, 0x60db, 0x60de, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60ea, 0x60f1, 0x60f2, 0x60f5, 0x60f7, 0x60f8, 0x60fb, 0x60fc, 0x60fd, 0x60fe, 0x60ff, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610a, 0x610b, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6118, 0x6119, 0x611b, 0x611c, 0x611d, 0x611e, 0x6121, 0x6122, 0x6125, 0x6128, 0x6129, 0x612a, 0x612c, 0x612d, 0x612e, 0x612f, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137, 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, /* 0x91 */ 0x6147, 0x6149, 0x614b, 0x614d, 0x614f, 0x6150, 0x6152, 0x6153, 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615e, 0x615f, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, 0x6171, 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617a, 0x617b, 0x617c, 0x617d, 0x617e, 0x617f, 0x6180, 0x6181, 0x6182, 0x6183, 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618a, 0x618c, 0x618d, 0x618f, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x6196, 0x6197, 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619e, 0x619f, 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6, 0x61aa, 0x61ab, 0x61ad, 0x61ae, 0x61af, 0x61b0, 0x61b1, 0x61b2, 0x61b3, 0x61b4, 0x61b5, 0x61b6, 0x61b8, 0x61b9, 0x61ba, 0x61bb, 0x61bc, 0x61bd, 0x61bf, 0x61c0, 0x61c1, 0x61c3, 0x61c4, 0x61c5, 0x61c6, 0x61c7, 0x61c9, 0x61cc, 0x61cd, 0x61ce, 0x61cf, 0x61d0, 0x61d3, 0x61d5, 0x61d6, 0x61d7, 0x61d8, 0x61d9, 0x61da, 0x61db, 0x61dc, 0x61dd, 0x61de, 0x61df, 0x61e0, 0x61e1, 0x61e2, 0x61e3, 0x61e4, 0x61e5, 0x61e7, 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec, 0x61ed, 0x61ee, 0x61ef, 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4, 0x61f6, 0x61f7, 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd, 0x61fe, 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 0x6209, 0x6213, 0x6214, 0x6219, 0x621c, 0x621d, 0x621e, 0x6220, 0x6223, 0x6226, 0x6227, 0x6228, 0x6229, 0x622b, 0x622d, 0x622f, 0x6230, 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623a, 0x623b, 0x623c, 0x6242, 0x6244, 0x6245, 0x6246, 0x624a, /* 0x92 */ 0x624f, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625a, 0x625c, 0x625d, 0x625e, 0x625f, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265, 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627a, 0x627b, 0x627d, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287, 0x6288, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f, 0x6290, 0x6294, 0x6299, 0x629c, 0x629d, 0x629e, 0x62a3, 0x62a6, 0x62a7, 0x62a9, 0x62aa, 0x62ad, 0x62ae, 0x62af, 0x62b0, 0x62b2, 0x62b3, 0x62b4, 0x62b6, 0x62b7, 0x62b8, 0x62ba, 0x62be, 0x62c0, 0x62c1, 0x62c3, 0x62cb, 0x62cf, 0x62d1, 0x62d5, 0x62dd, 0x62de, 0x62e0, 0x62e1, 0x62e4, 0x62ea, 0x62eb, 0x62f0, 0x62f2, 0x62f5, 0x62f8, 0x62f9, 0x62fa, 0x62fb, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630a, 0x630b, 0x630c, 0x630d, 0x630f, 0x6310, 0x6312, 0x6313, 0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631c, 0x6326, 0x6327, 0x6329, 0x632c, 0x632d, 0x632e, 0x6330, 0x6331, 0x6333, 0x6334, 0x6335, 0x6336, 0x6337, 0x6338, 0x633b, 0x633c, 0x633e, 0x633f, 0x6340, 0x6341, 0x6344, 0x6347, 0x6348, 0x634a, 0x6351, 0x6352, 0x6353, 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b, 0x635c, 0x635d, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636a, 0x636b, 0x636c, 0x636f, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378, 0x6379, 0x637c, 0x637d, 0x637e, 0x637f, 0x6381, 0x6383, 0x6384, 0x6385, 0x6386, 0x638b, 0x638d, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e, 0x639f, 0x63a1, 0x63a4, 0x63a6, 0x63ab, 0x63af, 0x63b1, 0x63b2, 0x63b5, 0x63b6, 0x63b9, 0x63bb, 0x63bd, 0x63bf, 0x63c0, /* 0x93 */ 0x63c1, 0x63c2, 0x63c3, 0x63c5, 0x63c7, 0x63c8, 0x63ca, 0x63cb, 0x63cc, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63d7, 0x63d8, 0x63d9, 0x63da, 0x63db, 0x63dc, 0x63dd, 0x63df, 0x63e2, 0x63e4, 0x63e5, 0x63e6, 0x63e7, 0x63e8, 0x63eb, 0x63ec, 0x63ee, 0x63ef, 0x63f0, 0x63f1, 0x63f3, 0x63f5, 0x63f7, 0x63f9, 0x63fa, 0x63fb, 0x63fc, 0x63fe, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640a, 0x640d, 0x640e, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418, 0x6419, 0x641a, 0x641d, 0x641f, 0x6422, 0x6423, 0x6424, 0x6425, 0x6427, 0x6428, 0x6429, 0x642b, 0x642e, 0x642f, 0x6430, 0x6431, 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643b, 0x643c, 0x643e, 0x6440, 0x6442, 0x6443, 0x6449, 0x644b, 0x644c, 0x644d, 0x644e, 0x644f, 0x6450, 0x6451, 0x6453, 0x6455, 0x6456, 0x6457, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468, 0x646a, 0x646b, 0x646c, 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x647b, 0x647c, 0x647d, 0x647e, 0x647f, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489, 0x648a, 0x648b, 0x648c, 0x648d, 0x648e, 0x648f, 0x6490, 0x6493, 0x6494, 0x6497, 0x6498, 0x649a, 0x649b, 0x649c, 0x649d, 0x649f, 0x64a0, 0x64a1, 0x64a2, 0x64a3, 0x64a5, 0x64a6, 0x64a7, 0x64a8, 0x64aa, 0x64ab, 0x64af, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b6, 0x64b9, 0x64bb, 0x64bd, 0x64be, 0x64bf, 0x64c1, 0x64c3, 0x64c4, 0x64c6, 0x64c7, 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cf, 0x64d1, 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d9, 0x64da, /* 0x94 */ 0x64db, 0x64dc, 0x64dd, 0x64df, 0x64e0, 0x64e1, 0x64e3, 0x64e5, 0x64e7, 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee, 0x64ef, 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6, 0x64f7, 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe, 0x64ff, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507, 0x6508, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f, 0x6510, 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651a, 0x651b, 0x651c, 0x651d, 0x651e, 0x651f, 0x6520, 0x6521, 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652a, 0x652c, 0x652d, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653a, 0x653c, 0x653d, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547, 0x654a, 0x654b, 0x654d, 0x654e, 0x6550, 0x6552, 0x6553, 0x6554, 0x6557, 0x6558, 0x655a, 0x655c, 0x655f, 0x6560, 0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656a, 0x656d, 0x656e, 0x656f, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657a, 0x657b, 0x657c, 0x657d, 0x657e, 0x657f, 0x6580, 0x6581, 0x6582, 0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658a, 0x658d, 0x658e, 0x658f, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659a, 0x659d, 0x659e, 0x65a0, 0x65a2, 0x65a3, 0x65a6, 0x65a8, 0x65aa, 0x65ac, 0x65ae, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6, 0x65b7, 0x65b8, 0x65ba, 0x65bb, 0x65be, 0x65bf, 0x65c0, 0x65c2, 0x65c7, 0x65c8, 0x65c9, 0x65ca, 0x65cd, 0x65d0, 0x65d1, 0x65d3, 0x65d4, 0x65d5, 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd, 0x65de, 0x65df, 0x65e1, 0x65e3, 0x65e4, 0x65ea, 0x65eb, /* 0x95 */ 0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f8, 0x65f9, 0x65fb, 0x65fc, 0x65fd, 0x65fe, 0x65ff, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608, 0x6609, 0x660b, 0x660d, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617, 0x6618, 0x661a, 0x661b, 0x661c, 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c, 0x662e, 0x6630, 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663a, 0x663b, 0x663d, 0x663f, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, 0x6649, 0x664a, 0x664d, 0x664e, 0x6650, 0x6651, 0x6658, 0x6659, 0x665b, 0x665c, 0x665d, 0x665e, 0x6660, 0x6662, 0x6663, 0x6665, 0x6667, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x6671, 0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667b, 0x667c, 0x667d, 0x667f, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 0x668a, 0x668b, 0x668d, 0x668e, 0x668f, 0x6690, 0x6692, 0x6693, 0x6694, 0x6695, 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669e, 0x669f, 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6, 0x66a9, 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66af, 0x66b0, 0x66b1, 0x66b2, 0x66b3, 0x66b5, 0x66b6, 0x66b7, 0x66b8, 0x66ba, 0x66bb, 0x66bc, 0x66bd, 0x66bf, 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4, 0x66c5, 0x66c6, 0x66c7, 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc, 0x66cd, 0x66ce, 0x66cf, 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4, 0x66d5, 0x66d6, 0x66d7, 0x66d8, 0x66da, 0x66de, 0x66df, 0x66e0, 0x66e1, 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e7, 0x66e8, 0x66ea, 0x66eb, 0x66ec, 0x66ed, 0x66ee, 0x66ef, 0x66f1, 0x66f5, 0x66f6, 0x66f8, 0x66fa, 0x66fb, 0x66fd, 0x6701, 0x6702, 0x6703, /* 0x96 */ 0x6704, 0x6705, 0x6706, 0x6707, 0x670c, 0x670e, 0x670f, 0x6711, 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671a, 0x671c, 0x671e, 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729, 0x672e, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739, 0x673b, 0x673c, 0x673e, 0x673f, 0x6741, 0x6744, 0x6745, 0x6747, 0x674a, 0x674b, 0x674d, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759, 0x675a, 0x675b, 0x675d, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, 0x676b, 0x676c, 0x676e, 0x6771, 0x6774, 0x6776, 0x6778, 0x6779, 0x677a, 0x677b, 0x677d, 0x6780, 0x6782, 0x6783, 0x6785, 0x6786, 0x6788, 0x678a, 0x678c, 0x678d, 0x678e, 0x678f, 0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679b, 0x679f, 0x67a0, 0x67a1, 0x67a4, 0x67a6, 0x67a9, 0x67ac, 0x67ae, 0x67b1, 0x67b2, 0x67b4, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be, 0x67bf, 0x67c0, 0x67c2, 0x67c5, 0x67c6, 0x67c7, 0x67c8, 0x67c9, 0x67ca, 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67d5, 0x67d6, 0x67d7, 0x67db, 0x67df, 0x67e1, 0x67e3, 0x67e4, 0x67e6, 0x67e7, 0x67e8, 0x67ea, 0x67eb, 0x67ed, 0x67ee, 0x67f2, 0x67f5, 0x67f6, 0x67f7, 0x67f8, 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fe, 0x6801, 0x6802, 0x6803, 0x6804, 0x6806, 0x680d, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818, 0x6819, 0x681a, 0x681b, 0x681c, 0x681e, 0x681f, 0x6820, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682b, 0x682c, 0x682d, 0x682e, 0x682f, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836, 0x683a, 0x683b, 0x683f, 0x6847, 0x684b, 0x684d, 0x684f, 0x6852, 0x6856, 0x6857, 0x6858, 0x6859, 0x685a, 0x685b, /* 0x97 */ 0x685c, 0x685d, 0x685e, 0x685f, 0x686a, 0x686c, 0x686d, 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f, 0x6880, 0x6882, 0x6884, 0x6887, 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d, 0x688e, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898, 0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f, 0x68a0, 0x68a1, 0x68a3, 0x68a4, 0x68a5, 0x68a9, 0x68aa, 0x68ab, 0x68ac, 0x68ae, 0x68b1, 0x68b2, 0x68b4, 0x68b6, 0x68b7, 0x68b8, 0x68b9, 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf, 0x68c1, 0x68c3, 0x68c4, 0x68c5, 0x68c6, 0x68c7, 0x68c8, 0x68ca, 0x68cc, 0x68ce, 0x68cf, 0x68d0, 0x68d1, 0x68d3, 0x68d4, 0x68d6, 0x68d7, 0x68d9, 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df, 0x68e1, 0x68e2, 0x68e4, 0x68e5, 0x68e6, 0x68e7, 0x68e8, 0x68e9, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68ef, 0x68f2, 0x68f3, 0x68f4, 0x68f6, 0x68f7, 0x68f8, 0x68fb, 0x68fd, 0x68fe, 0x68ff, 0x6900, 0x6902, 0x6903, 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690a, 0x690c, 0x690f, 0x6911, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691a, 0x691b, 0x691c, 0x691d, 0x691e, 0x6921, 0x6922, 0x6923, 0x6925, 0x6926, 0x6927, 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692e, 0x692f, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 0x6938, 0x693a, 0x693b, 0x693c, 0x693e, 0x6940, 0x6941, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694a, 0x694b, 0x694c, 0x694d, 0x694e, 0x694f, 0x6950, 0x6951, 0x6952, 0x6953, 0x6955, 0x6956, 0x6958, 0x6959, 0x695b, 0x695c, 0x695f, /* 0x98 */ 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696a, 0x696c, 0x696d, 0x696f, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x697a, 0x697b, 0x697d, 0x697e, 0x697f, 0x6981, 0x6983, 0x6985, 0x698a, 0x698b, 0x698c, 0x698e, 0x698f, 0x6990, 0x6991, 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699a, 0x699d, 0x699e, 0x699f, 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6, 0x69a9, 0x69aa, 0x69ac, 0x69ae, 0x69af, 0x69b0, 0x69b2, 0x69b3, 0x69b5, 0x69b6, 0x69b8, 0x69b9, 0x69ba, 0x69bc, 0x69bd, 0x69be, 0x69bf, 0x69c0, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6, 0x69c7, 0x69c8, 0x69c9, 0x69cb, 0x69cd, 0x69cf, 0x69d1, 0x69d2, 0x69d3, 0x69d5, 0x69d6, 0x69d7, 0x69d8, 0x69d9, 0x69da, 0x69dc, 0x69dd, 0x69de, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6, 0x69e7, 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ee, 0x69ef, 0x69f0, 0x69f1, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7, 0x69f8, 0x69f9, 0x69fa, 0x69fb, 0x69fc, 0x69fe, 0x6a00, 0x6a01, 0x6a02, 0x6a03, 0x6a04, 0x6a05, 0x6a06, 0x6a07, 0x6a08, 0x6a09, 0x6a0b, 0x6a0c, 0x6a0d, 0x6a0e, 0x6a0f, 0x6a10, 0x6a11, 0x6a12, 0x6a13, 0x6a14, 0x6a15, 0x6a16, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d, 0x6a1e, 0x6a20, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a29, 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a30, 0x6a32, 0x6a33, 0x6a34, 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3f, 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a45, 0x6a46, 0x6a48, 0x6a49, 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a51, 0x6a52, 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a5a, /* 0x99 */ 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a62, 0x6a63, 0x6a64, 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, 0x6a70, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77, 0x6a78, 0x6a7a, 0x6a7b, 0x6a7d, 0x6a7e, 0x6a7f, 0x6a81, 0x6a82, 0x6a83, 0x6a85, 0x6a86, 0x6a87, 0x6a88, 0x6a89, 0x6a8a, 0x6a8b, 0x6a8c, 0x6a8d, 0x6a8f, 0x6a92, 0x6a93, 0x6a94, 0x6a95, 0x6a96, 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e, 0x6a9f, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0x6aa7, 0x6aa8, 0x6aaa, 0x6aad, 0x6aae, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab2, 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7, 0x6ab8, 0x6ab9, 0x6aba, 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf, 0x6ac0, 0x6ac1, 0x6ac2, 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, 0x6ac8, 0x6ac9, 0x6aca, 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf, 0x6ad0, 0x6ad1, 0x6ad2, 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7, 0x6ad8, 0x6ad9, 0x6ada, 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf, 0x6ae0, 0x6ae1, 0x6ae2, 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7, 0x6ae8, 0x6ae9, 0x6aea, 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef, 0x6af0, 0x6af1, 0x6af2, 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7, 0x6af8, 0x6af9, 0x6afa, 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff, 0x6b00, 0x6b01, 0x6b02, 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, 0x6b08, 0x6b09, 0x6b0a, 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f, 0x6b10, 0x6b11, 0x6b12, 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17, 0x6b18, 0x6b19, 0x6b1a, 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f, 0x6b25, 0x6b26, 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e, /* 0x9a */ 0x6b2f, 0x6b30, 0x6b31, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b38, 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b44, 0x6b45, 0x6b48, 0x6b4a, 0x6b4b, 0x6b4d, 0x6b4e, 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, 0x6b58, 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f, 0x6b60, 0x6b61, 0x6b68, 0x6b69, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f, 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77, 0x6b78, 0x6b7a, 0x6b7d, 0x6b7e, 0x6b7f, 0x6b80, 0x6b85, 0x6b88, 0x6b8c, 0x6b8e, 0x6b8f, 0x6b90, 0x6b91, 0x6b94, 0x6b95, 0x6b97, 0x6b98, 0x6b99, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f, 0x6ba0, 0x6ba2, 0x6ba3, 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7, 0x6ba8, 0x6ba9, 0x6bab, 0x6bac, 0x6bad, 0x6bae, 0x6baf, 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb6, 0x6bb8, 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bc0, 0x6bc3, 0x6bc4, 0x6bc6, 0x6bc7, 0x6bc8, 0x6bc9, 0x6bca, 0x6bcc, 0x6bce, 0x6bd0, 0x6bd1, 0x6bd8, 0x6bda, 0x6bdc, 0x6bdd, 0x6bde, 0x6bdf, 0x6be0, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7, 0x6be8, 0x6be9, 0x6bec, 0x6bed, 0x6bee, 0x6bf0, 0x6bf1, 0x6bf2, 0x6bf4, 0x6bf6, 0x6bf7, 0x6bf8, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfe, 0x6bff, 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c08, 0x6c09, 0x6c0a, 0x6c0b, 0x6c0c, 0x6c0e, 0x6c12, 0x6c17, 0x6c1c, 0x6c1d, 0x6c1e, 0x6c20, 0x6c23, 0x6c25, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c31, 0x6c33, 0x6c36, 0x6c37, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3e, 0x6c3f, 0x6c43, 0x6c44, 0x6c45, 0x6c48, 0x6c4b, 0x6c4c, 0x6c4d, 0x6c4e, 0x6c4f, 0x6c51, 0x6c52, 0x6c53, 0x6c56, 0x6c58, /* 0x9b */ 0x6c59, 0x6c5a, 0x6c62, 0x6c63, 0x6c65, 0x6c66, 0x6c67, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, 0x6c71, 0x6c73, 0x6c75, 0x6c77, 0x6c78, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7f, 0x6c80, 0x6c84, 0x6c87, 0x6c8a, 0x6c8b, 0x6c8d, 0x6c8e, 0x6c91, 0x6c92, 0x6c95, 0x6c96, 0x6c97, 0x6c98, 0x6c9a, 0x6c9c, 0x6c9d, 0x6c9e, 0x6ca0, 0x6ca2, 0x6ca8, 0x6cac, 0x6caf, 0x6cb0, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7, 0x6cba, 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc6, 0x6cc7, 0x6cc8, 0x6ccb, 0x6ccd, 0x6cce, 0x6ccf, 0x6cd1, 0x6cd2, 0x6cd8, 0x6cd9, 0x6cda, 0x6cdc, 0x6cdd, 0x6cdf, 0x6ce4, 0x6ce6, 0x6ce7, 0x6ce9, 0x6cec, 0x6ced, 0x6cf2, 0x6cf4, 0x6cf9, 0x6cff, 0x6d00, 0x6d02, 0x6d03, 0x6d05, 0x6d06, 0x6d08, 0x6d09, 0x6d0a, 0x6d0d, 0x6d0f, 0x6d10, 0x6d11, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d18, 0x6d1c, 0x6d1d, 0x6d1f, 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d26, 0x6d28, 0x6d29, 0x6d2c, 0x6d2d, 0x6d2f, 0x6d30, 0x6d34, 0x6d36, 0x6d37, 0x6d38, 0x6d3a, 0x6d3f, 0x6d40, 0x6d42, 0x6d44, 0x6d49, 0x6d4c, 0x6d50, 0x6d55, 0x6d56, 0x6d57, 0x6d58, 0x6d5b, 0x6d5d, 0x6d5f, 0x6d61, 0x6d62, 0x6d64, 0x6d65, 0x6d67, 0x6d68, 0x6d6b, 0x6d6c, 0x6d6d, 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d75, 0x6d76, 0x6d79, 0x6d7a, 0x6d7b, 0x6d7d, 0x6d7e, 0x6d7f, 0x6d80, 0x6d81, 0x6d83, 0x6d84, 0x6d86, 0x6d87, 0x6d8a, 0x6d8b, 0x6d8d, 0x6d8f, 0x6d90, 0x6d92, 0x6d96, 0x6d97, 0x6d98, 0x6d99, 0x6d9a, 0x6d9c, 0x6da2, 0x6da5, 0x6dac, 0x6dad, 0x6db0, 0x6db1, 0x6db3, 0x6db4, 0x6db6, 0x6db7, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd, 0x6dbe, 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc8, 0x6dc9, 0x6dca, /* 0x9c */ 0x6dcd, 0x6dce, 0x6dcf, 0x6dd0, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5, 0x6dd7, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddf, 0x6de2, 0x6de3, 0x6de5, 0x6de7, 0x6de8, 0x6de9, 0x6dea, 0x6ded, 0x6def, 0x6df0, 0x6df2, 0x6df4, 0x6df5, 0x6df6, 0x6df8, 0x6dfa, 0x6dfd, 0x6dfe, 0x6dff, 0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e06, 0x6e07, 0x6e08, 0x6e09, 0x6e0b, 0x6e0f, 0x6e12, 0x6e13, 0x6e15, 0x6e18, 0x6e19, 0x6e1b, 0x6e1c, 0x6e1e, 0x6e1f, 0x6e22, 0x6e26, 0x6e27, 0x6e28, 0x6e2a, 0x6e2c, 0x6e2e, 0x6e30, 0x6e31, 0x6e33, 0x6e35, 0x6e36, 0x6e37, 0x6e39, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f, 0x6e40, 0x6e41, 0x6e42, 0x6e45, 0x6e46, 0x6e47, 0x6e48, 0x6e49, 0x6e4a, 0x6e4b, 0x6e4c, 0x6e4f, 0x6e50, 0x6e51, 0x6e52, 0x6e55, 0x6e57, 0x6e59, 0x6e5a, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e60, 0x6e61, 0x6e62, 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a, 0x6e6c, 0x6e6d, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e73, 0x6e74, 0x6e75, 0x6e76, 0x6e77, 0x6e78, 0x6e79, 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6e80, 0x6e81, 0x6e82, 0x6e84, 0x6e87, 0x6e88, 0x6e8a, 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e91, 0x6e92, 0x6e93, 0x6e94, 0x6e95, 0x6e96, 0x6e97, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9d, 0x6e9e, 0x6ea0, 0x6ea1, 0x6ea3, 0x6ea4, 0x6ea6, 0x6ea8, 0x6ea9, 0x6eab, 0x6eac, 0x6ead, 0x6eae, 0x6eb0, 0x6eb3, 0x6eb5, 0x6eb8, 0x6eb9, 0x6ebc, 0x6ebe, 0x6ebf, 0x6ec0, 0x6ec3, 0x6ec4, 0x6ec5, 0x6ec6, 0x6ec8, 0x6ec9, 0x6eca, 0x6ecc, 0x6ecd, 0x6ece, 0x6ed0, 0x6ed2, 0x6ed6, 0x6ed8, 0x6ed9, 0x6edb, 0x6edc, 0x6edd, 0x6ee3, 0x6ee7, 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef, /* 0x9d */ 0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef5, 0x6ef6, 0x6ef7, 0x6ef8, 0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff, 0x6f00, 0x6f01, 0x6f03, 0x6f04, 0x6f05, 0x6f07, 0x6f08, 0x6f0a, 0x6f0b, 0x6f0c, 0x6f0d, 0x6f0e, 0x6f10, 0x6f11, 0x6f12, 0x6f16, 0x6f17, 0x6f18, 0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f, 0x6f21, 0x6f22, 0x6f23, 0x6f25, 0x6f26, 0x6f27, 0x6f28, 0x6f2c, 0x6f2e, 0x6f30, 0x6f32, 0x6f34, 0x6f35, 0x6f37, 0x6f38, 0x6f39, 0x6f3a, 0x6f3b, 0x6f3c, 0x6f3d, 0x6f3f, 0x6f40, 0x6f41, 0x6f42, 0x6f43, 0x6f44, 0x6f45, 0x6f48, 0x6f49, 0x6f4a, 0x6f4c, 0x6f4e, 0x6f4f, 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56, 0x6f57, 0x6f59, 0x6f5a, 0x6f5b, 0x6f5d, 0x6f5f, 0x6f60, 0x6f61, 0x6f63, 0x6f64, 0x6f65, 0x6f67, 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x6f6f, 0x6f70, 0x6f71, 0x6f73, 0x6f75, 0x6f76, 0x6f77, 0x6f79, 0x6f7b, 0x6f7d, 0x6f7e, 0x6f7f, 0x6f80, 0x6f81, 0x6f82, 0x6f83, 0x6f85, 0x6f86, 0x6f87, 0x6f8a, 0x6f8b, 0x6f8f, 0x6f90, 0x6f91, 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97, 0x6f98, 0x6f99, 0x6f9a, 0x6f9b, 0x6f9d, 0x6f9e, 0x6f9f, 0x6fa0, 0x6fa2, 0x6fa3, 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa8, 0x6fa9, 0x6faa, 0x6fab, 0x6fac, 0x6fad, 0x6fae, 0x6faf, 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb4, 0x6fb5, 0x6fb7, 0x6fb8, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe, 0x6fbf, 0x6fc1, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, 0x6fc8, 0x6fca, 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf, 0x6fd0, 0x6fd3, 0x6fd4, 0x6fd5, 0x6fd6, 0x6fd7, 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb, 0x6fdc, 0x6fdd, 0x6fdf, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5, /* 0x9e */ 0x6fe6, 0x6fe7, 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed, 0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7, 0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff, 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f, 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018, 0x7019, 0x701c, 0x701d, 0x701e, 0x701f, 0x7020, 0x7021, 0x7022, 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702a, 0x702b, 0x702c, 0x702d, 0x702e, 0x702f, 0x7030, 0x7031, 0x7032, 0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703a, 0x703b, 0x703c, 0x703d, 0x703e, 0x703f, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045, 0x7046, 0x7047, 0x7048, 0x7049, 0x704a, 0x704b, 0x704d, 0x704e, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057, 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705f, 0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069, 0x706a, 0x706e, 0x7071, 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707a, 0x707b, 0x707d, 0x7081, 0x7082, 0x7083, 0x7084, 0x7086, 0x7087, 0x7088, 0x708b, 0x708c, 0x708d, 0x708f, 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709a, 0x709b, 0x709e, 0x709f, 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6, 0x70a7, 0x70a8, 0x70a9, 0x70aa, 0x70b0, 0x70b2, 0x70b4, 0x70b5, 0x70b6, 0x70ba, 0x70be, 0x70bf, 0x70c4, 0x70c5, 0x70c6, 0x70c7, 0x70c9, 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf, 0x70d0, 0x70d1, 0x70d2, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7, 0x70da, /* 0x9f */ 0x70dc, 0x70dd, 0x70de, 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e5, 0x70ea, 0x70ee, 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5, 0x70f6, 0x70f8, 0x70fa, 0x70fb, 0x70fc, 0x70fe, 0x70ff, 0x7100, 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108, 0x710b, 0x710c, 0x710d, 0x710e, 0x710f, 0x7111, 0x7112, 0x7114, 0x7117, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f, 0x7120, 0x7121, 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712a, 0x712b, 0x712c, 0x712d, 0x712e, 0x7132, 0x7133, 0x7134, 0x7135, 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d, 0x713e, 0x713f, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147, 0x7148, 0x7149, 0x714b, 0x714d, 0x714f, 0x7150, 0x7151, 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 0x715a, 0x715b, 0x715d, 0x715f, 0x7160, 0x7161, 0x7162, 0x7163, 0x7165, 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716f, 0x7170, 0x7171, 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717b, 0x717c, 0x717e, 0x717f, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x718b, 0x718c, 0x718d, 0x718e, 0x7190, 0x7191, 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719a, 0x719b, 0x719c, 0x719d, 0x719e, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5, 0x71a6, 0x71a7, 0x71a9, 0x71aa, 0x71ab, 0x71ad, 0x71ae, 0x71af, 0x71b0, 0x71b1, 0x71b2, 0x71b4, 0x71b6, 0x71b7, 0x71b8, 0x71ba, 0x71bb, 0x71bc, 0x71bd, 0x71be, 0x71bf, 0x71c0, 0x71c1, 0x71c2, 0x71c4, 0x71c5, 0x71c6, 0x71c7, 0x71c8, 0x71c9, 0x71ca, 0x71cb, 0x71cc, 0x71cd, 0x71cf, 0x71d0, 0x71d1, 0x71d2, 0x71d3, /* 0xa0 */ 0x71d6, 0x71d7, 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd, 0x71de, 0x71df, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e6, 0x71e8, 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ef, 0x71f0, 0x71f1, 0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7, 0x71f8, 0x71fa, 0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff, 0x7200, 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720a, 0x720b, 0x720c, 0x720d, 0x720e, 0x720f, 0x7210, 0x7211, 0x7212, 0x7213, 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721a, 0x721b, 0x721c, 0x721e, 0x721f, 0x7220, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722b, 0x722d, 0x722e, 0x722f, 0x7232, 0x7233, 0x7234, 0x723a, 0x723c, 0x723e, 0x7240, 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724a, 0x724b, 0x724e, 0x724f, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257, 0x7258, 0x725a, 0x725c, 0x725e, 0x7260, 0x7263, 0x7264, 0x7265, 0x7268, 0x726a, 0x726b, 0x726c, 0x726d, 0x7270, 0x7271, 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727b, 0x727c, 0x727d, 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728c, 0x728e, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, 0x7298, 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x72a0, 0x72a1, 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7, 0x72a8, 0x72a9, 0x72aa, 0x72ab, 0x72ae, 0x72b1, 0x72b2, 0x72b3, 0x72b5, 0x72ba, 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf, 0x72c0, 0x72c5, 0x72c6, 0x72c7, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cf, 0x72d1, 0x72d3, 0x72d4, 0x72d5, 0x72d6, 0x72d8, 0x72da, 0x72db, }; static int gbkext1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x81 && c1 <= 0xa0)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) { unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); unsigned short wc = 0xfffd; { if (i < 6080) wc = gbkext1_2uni_page81[i]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } recode-3.6/libiconv/gbkext2.h0100644000000000000000000021075707206266436014675 0ustar rootroot /* * GBK/4 and GBK/5 extensions */ static const unsigned short gbkext2_2uni_pagea8[8272] = { /* 0xa8 */ 0x02ca, 0x02cb, 0x02d9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105, 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221f, 0x2223, 0x2252, 0x2266, 0x2267, 0x22bf, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f, 0x2593, 0x2594, 0x2595, 0x25bc, 0x25bd, 0x25e2, 0x25e3, 0x25e4, 0x25e5, 0x2609, 0x2295, 0x3012, 0x301d, 0x301e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xa9 */ 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x32a3, 0x338e, 0x338f, 0x339c, 0x339d, 0x339e, 0x33a1, 0x33c4, 0x33ce, 0x33d1, 0x33d2, 0x33d5, 0xfe30, 0xffe2, 0xffe4, 0xfffd, 0x2121, 0x3231, 0xfffd, 0x2010, 0xfffd, 0xfffd, 0xfffd, 0x30fc, 0x309b, 0x309c, 0x30fd, 0x30fe, 0x3006, 0x309d, 0x309e, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, 0xfe50, 0xfe51, 0xfe52, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f, 0xfe60, 0xfe61, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3007, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xaa */ 0x72dc, 0x72dd, 0x72df, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6, 0x72e7, 0x72ea, 0x72eb, 0x72f5, 0x72f6, 0x72f9, 0x72fd, 0x72fe, 0x72ff, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308, 0x7309, 0x730b, 0x730c, 0x730d, 0x730f, 0x7310, 0x7311, 0x7312, 0x7314, 0x7318, 0x7319, 0x731a, 0x731f, 0x7320, 0x7323, 0x7324, 0x7326, 0x7327, 0x7328, 0x732d, 0x732f, 0x7330, 0x7332, 0x7333, 0x7335, 0x7336, 0x733a, 0x733b, 0x733c, 0x733d, 0x7340, 0x7341, 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0x7349, 0x734a, 0x734b, 0x734c, 0x734e, 0x734f, 0x7351, 0x7353, 0x7354, 0x7355, 0x7356, 0x7358, 0x7359, 0x735a, 0x735b, 0x735c, 0x735d, 0x735e, 0x735f, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, 0x7369, 0x736a, 0x736b, 0x736e, 0x7370, 0x7371, /* 0xab */ 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379, 0x737a, 0x737b, 0x737c, 0x737d, 0x737f, 0x7380, 0x7381, 0x7382, 0x7383, 0x7385, 0x7386, 0x7388, 0x738a, 0x738c, 0x738d, 0x738f, 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399, 0x739a, 0x739c, 0x739d, 0x739e, 0x73a0, 0x73a1, 0x73a3, 0x73a4, 0x73a5, 0x73a6, 0x73a7, 0x73a8, 0x73aa, 0x73ac, 0x73ad, 0x73b1, 0x73b4, 0x73b5, 0x73b6, 0x73b8, 0x73b9, 0x73bc, 0x73bd, 0x73be, 0x73bf, 0x73c1, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, 0x73cb, 0x73cc, 0x73ce, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6, 0x73d7, 0x73d8, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73df, 0x73e1, 0x73e2, 0x73e3, 0x73e4, 0x73e6, 0x73e8, 0x73ea, 0x73eb, 0x73ec, 0x73ee, 0x73ef, 0x73f0, 0x73f1, 0x73f3, 0x73f4, 0x73f5, 0x73f6, 0x73f7, /* 0xac */ 0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff, 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740b, 0x740c, 0x740d, 0x740e, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416, 0x7417, 0x7418, 0x7419, 0x741c, 0x741d, 0x741e, 0x741f, 0x7420, 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742b, 0x742d, 0x742f, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743a, 0x743b, 0x743d, 0x743e, 0x743f, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 0x7447, 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0x744e, 0x744f, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456, 0x7458, 0x745d, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466, 0x7467, 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746e, 0x746f, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747a, /* 0xad */ 0x747b, 0x747c, 0x747d, 0x747f, 0x7482, 0x7484, 0x7485, 0x7486, 0x7488, 0x7489, 0x748a, 0x748c, 0x748d, 0x748f, 0x7491, 0x7492, 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749a, 0x749b, 0x749d, 0x749f, 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4, 0x74a5, 0x74a6, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af, 0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7, 0x74b8, 0x74b9, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf, 0x74c0, 0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, 0x74c8, 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf, 0x74d0, 0x74d1, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7, 0x74d8, 0x74d9, 0x74da, 0x74db, 0x74dd, 0x74df, 0x74e1, 0x74e5, 0x74e7, 0x74e8, 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74f0, 0x74f1, 0x74f2, /* 0xae */ 0x74f3, 0x74f5, 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd, 0x74fe, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507, 0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750e, 0x7510, 0x7512, 0x7514, 0x7515, 0x7516, 0x7517, 0x751b, 0x751d, 0x751e, 0x7520, 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752a, 0x752e, 0x7534, 0x7536, 0x7539, 0x753c, 0x753d, 0x753f, 0x7541, 0x7542, 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754a, 0x754d, 0x7550, 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0x755d, 0x755e, 0x755f, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7567, 0x7568, 0x7569, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f, 0x7570, 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757a, 0x757b, 0x757c, 0x757d, 0x757e, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587, /* 0xaf */ 0x7588, 0x7589, 0x758a, 0x758c, 0x758d, 0x758e, 0x7590, 0x7593, 0x7595, 0x7598, 0x759b, 0x759c, 0x759e, 0x75a2, 0x75a6, 0x75a7, 0x75a8, 0x75a9, 0x75aa, 0x75ad, 0x75b6, 0x75b7, 0x75ba, 0x75bb, 0x75bf, 0x75c0, 0x75c1, 0x75c6, 0x75cb, 0x75cc, 0x75ce, 0x75cf, 0x75d0, 0x75d1, 0x75d3, 0x75d7, 0x75d9, 0x75da, 0x75dc, 0x75dd, 0x75df, 0x75e0, 0x75e1, 0x75e5, 0x75e9, 0x75ec, 0x75ed, 0x75ee, 0x75ef, 0x75f2, 0x75f3, 0x75f5, 0x75f6, 0x75f7, 0x75f8, 0x75fa, 0x75fb, 0x75fd, 0x75fe, 0x7602, 0x7604, 0x7606, 0x7607, 0x7608, 0x7609, 0x760b, 0x760d, 0x760e, 0x760f, 0x7611, 0x7612, 0x7613, 0x7614, 0x7616, 0x761a, 0x761c, 0x761d, 0x761e, 0x7621, 0x7623, 0x7627, 0x7628, 0x762c, 0x762e, 0x762f, 0x7631, 0x7632, 0x7636, 0x7637, 0x7639, 0x763a, 0x763b, 0x763d, 0x7641, 0x7642, 0x7644, /* 0xb0 */ 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764a, 0x764b, 0x764e, 0x764f, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658, 0x7659, 0x765a, 0x765b, 0x765d, 0x765f, 0x7660, 0x7661, 0x7662, 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766a, 0x766c, 0x766d, 0x766e, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675, 0x7676, 0x7677, 0x7679, 0x767a, 0x767c, 0x767f, 0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768a, 0x768c, 0x768d, 0x768f, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769a, 0x769b, 0x769c, 0x769d, 0x769e, 0x769f, 0x76a0, 0x76a1, 0x76a2, 0x76a3, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac, 0x76ad, 0x76af, 0x76b0, 0x76b3, 0x76b5, 0x76b6, 0x76b7, 0x76b8, 0x76b9, 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76c0, 0x76c1, 0x76c3, /* 0xb1 */ 0x76c4, 0x76c7, 0x76c9, 0x76cb, 0x76cc, 0x76d3, 0x76d5, 0x76d9, 0x76da, 0x76dc, 0x76dd, 0x76de, 0x76e0, 0x76e1, 0x76e2, 0x76e3, 0x76e4, 0x76e6, 0x76e7, 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec, 0x76ed, 0x76f0, 0x76f3, 0x76f5, 0x76f6, 0x76f7, 0x76fa, 0x76fb, 0x76fd, 0x76ff, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770a, 0x770c, 0x770e, 0x770f, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714, 0x7715, 0x7716, 0x7717, 0x7718, 0x771b, 0x771c, 0x771d, 0x771e, 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772a, 0x772b, 0x772c, 0x772e, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773b, 0x773d, 0x773e, 0x773f, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748, 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f, 0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 0x775c, /* 0xb2 */ 0x775d, 0x775e, 0x775f, 0x7760, 0x7764, 0x7767, 0x7769, 0x776a, 0x776d, 0x776e, 0x776f, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, 0x7775, 0x7776, 0x7777, 0x7778, 0x777a, 0x777b, 0x777c, 0x7781, 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778a, 0x778b, 0x778f, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798, 0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x77a1, 0x77a3, 0x77a4, 0x77a6, 0x77a8, 0x77ab, 0x77ad, 0x77ae, 0x77af, 0x77b1, 0x77b2, 0x77b4, 0x77b6, 0x77b7, 0x77b8, 0x77b9, 0x77ba, 0x77bc, 0x77be, 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5, 0x77c6, 0x77c7, 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77ce, 0x77cf, 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6, 0x77d8, 0x77d9, 0x77da, 0x77dd, 0x77de, 0x77df, 0x77e0, 0x77e1, 0x77e4, /* 0xb3 */ 0x77e6, 0x77e8, 0x77ea, 0x77ef, 0x77f0, 0x77f1, 0x77f2, 0x77f4, 0x77f5, 0x77f7, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x7803, 0x7804, 0x7805, 0x7806, 0x7807, 0x7808, 0x780a, 0x780b, 0x780e, 0x780f, 0x7810, 0x7813, 0x7815, 0x7819, 0x781b, 0x781e, 0x7820, 0x7821, 0x7822, 0x7824, 0x7828, 0x782a, 0x782b, 0x782e, 0x782f, 0x7831, 0x7832, 0x7833, 0x7835, 0x7836, 0x783d, 0x783f, 0x7841, 0x7842, 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784a, 0x784b, 0x784d, 0x784f, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785a, 0x785b, 0x785c, 0x785e, 0x785f, 0x7860, 0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786f, 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787a, 0x787b, 0x787d, 0x787e, 0x787f, 0x7880, 0x7881, 0x7882, 0x7883, /* 0xb4 */ 0x7884, 0x7885, 0x7886, 0x7888, 0x788a, 0x788b, 0x788f, 0x7890, 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789d, 0x789e, 0x78a0, 0x78a2, 0x78a4, 0x78a6, 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac, 0x78ad, 0x78ae, 0x78af, 0x78b5, 0x78b6, 0x78b7, 0x78b8, 0x78ba, 0x78bb, 0x78bc, 0x78bd, 0x78bf, 0x78c0, 0x78c2, 0x78c3, 0x78c4, 0x78c6, 0x78c7, 0x78c8, 0x78cc, 0x78cd, 0x78ce, 0x78cf, 0x78d1, 0x78d2, 0x78d3, 0x78d6, 0x78d7, 0x78d8, 0x78da, 0x78db, 0x78dc, 0x78dd, 0x78de, 0x78df, 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0x78e4, 0x78e5, 0x78e6, 0x78e7, 0x78e9, 0x78ea, 0x78eb, 0x78ed, 0x78ee, 0x78ef, 0x78f0, 0x78f1, 0x78f3, 0x78f5, 0x78f6, 0x78f8, 0x78f9, 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff, 0x7900, 0x7902, 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790a, 0x790b, 0x790c, /* 0xb5 */ 0x790d, 0x790e, 0x790f, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915, 0x7916, 0x7917, 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d, 0x791f, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927, 0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f, 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938, 0x7939, 0x793d, 0x793f, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947, 0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f, 0x7950, 0x7951, 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0x7964, 0x7966, 0x7969, 0x796a, 0x796b, 0x796c, 0x796e, 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797b, 0x797c, 0x797d, 0x797e, 0x797f, 0x7982, 0x7983, 0x7986, 0x7987, 0x7988, 0x7989, 0x798b, 0x798c, 0x798d, 0x798e, 0x7990, 0x7991, 0x7992, /* 0xb6 */ 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799b, 0x799c, 0x799d, 0x799e, 0x799f, 0x79a0, 0x79a1, 0x79a2, 0x79a3, 0x79a4, 0x79a5, 0x79a6, 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac, 0x79ad, 0x79ae, 0x79af, 0x79b0, 0x79b1, 0x79b2, 0x79b4, 0x79b5, 0x79b6, 0x79b7, 0x79b8, 0x79bc, 0x79bf, 0x79c2, 0x79c4, 0x79c5, 0x79c7, 0x79c8, 0x79ca, 0x79cc, 0x79ce, 0x79cf, 0x79d0, 0x79d3, 0x79d4, 0x79d6, 0x79d7, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd, 0x79de, 0x79e0, 0x79e1, 0x79e2, 0x79e5, 0x79e8, 0x79ea, 0x79ec, 0x79ee, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6, 0x79f7, 0x79f9, 0x79fa, 0x79fc, 0x79fe, 0x79ff, 0x7a01, 0x7a04, 0x7a05, 0x7a07, 0x7a08, 0x7a09, 0x7a0a, 0x7a0c, 0x7a0f, 0x7a10, 0x7a11, 0x7a12, 0x7a13, 0x7a15, 0x7a16, 0x7a18, 0x7a19, 0x7a1b, 0x7a1c, /* 0xb7 */ 0x7a1d, 0x7a1f, 0x7a21, 0x7a22, 0x7a24, 0x7a25, 0x7a26, 0x7a27, 0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f, 0x7a30, 0x7a31, 0x7a32, 0x7a34, 0x7a35, 0x7a36, 0x7a38, 0x7a3a, 0x7a3e, 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a47, 0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f, 0x7a50, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a58, 0x7a59, 0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f, 0x7a60, 0x7a61, 0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67, 0x7a68, 0x7a69, 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f, 0x7a71, 0x7a72, 0x7a73, 0x7a75, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a82, 0x7a85, 0x7a87, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8e, 0x7a8f, 0x7a90, 0x7a93, 0x7a94, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9e, 0x7aa1, 0x7aa2, /* 0xb8 */ 0x7aa3, 0x7aa4, 0x7aa7, 0x7aa9, 0x7aaa, 0x7aab, 0x7aae, 0x7aaf, 0x7ab0, 0x7ab1, 0x7ab2, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7, 0x7ab8, 0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7ac0, 0x7ac1, 0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, 0x7ac8, 0x7ac9, 0x7aca, 0x7acc, 0x7acd, 0x7ace, 0x7acf, 0x7ad0, 0x7ad1, 0x7ad2, 0x7ad3, 0x7ad4, 0x7ad5, 0x7ad7, 0x7ad8, 0x7ada, 0x7adb, 0x7adc, 0x7add, 0x7ae1, 0x7ae2, 0x7ae4, 0x7ae7, 0x7ae8, 0x7ae9, 0x7aea, 0x7aeb, 0x7aec, 0x7aee, 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0x7af4, 0x7af5, 0x7af6, 0x7af7, 0x7af8, 0x7afb, 0x7afc, 0x7afe, 0x7b00, 0x7b01, 0x7b02, 0x7b05, 0x7b07, 0x7b09, 0x7b0c, 0x7b0d, 0x7b0e, 0x7b10, 0x7b12, 0x7b13, 0x7b16, 0x7b17, 0x7b18, 0x7b1a, 0x7b1c, 0x7b1d, 0x7b1f, 0x7b21, 0x7b22, 0x7b23, 0x7b27, 0x7b29, 0x7b2d, /* 0xb9 */ 0x7b2f, 0x7b30, 0x7b32, 0x7b34, 0x7b35, 0x7b36, 0x7b37, 0x7b39, 0x7b3b, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44, 0x7b46, 0x7b48, 0x7b4a, 0x7b4d, 0x7b4e, 0x7b53, 0x7b55, 0x7b57, 0x7b59, 0x7b5c, 0x7b5e, 0x7b5f, 0x7b61, 0x7b63, 0x7b64, 0x7b65, 0x7b66, 0x7b67, 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d, 0x7b6f, 0x7b70, 0x7b73, 0x7b74, 0x7b76, 0x7b78, 0x7b7a, 0x7b7c, 0x7b7d, 0x7b7f, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b86, 0x7b87, 0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8e, 0x7b8f, 0x7b91, 0x7b92, 0x7b93, 0x7b96, 0x7b98, 0x7b99, 0x7b9a, 0x7b9b, 0x7b9e, 0x7b9f, 0x7ba0, 0x7ba3, 0x7ba4, 0x7ba5, 0x7bae, 0x7baf, 0x7bb0, 0x7bb2, 0x7bb3, 0x7bb5, 0x7bb6, 0x7bb7, 0x7bb9, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf, 0x7bc0, 0x7bc2, 0x7bc3, 0x7bc4, /* 0xba */ 0x7bc5, 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcd, 0x7bce, 0x7bcf, 0x7bd0, 0x7bd2, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7, 0x7bd8, 0x7bdb, 0x7bdc, 0x7bde, 0x7bdf, 0x7be0, 0x7be2, 0x7be3, 0x7be4, 0x7be7, 0x7be8, 0x7be9, 0x7beb, 0x7bec, 0x7bed, 0x7bef, 0x7bf0, 0x7bf2, 0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb, 0x7bfd, 0x7bff, 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05, 0x7c06, 0x7c08, 0x7c09, 0x7c0a, 0x7c0d, 0x7c0e, 0x7c10, 0x7c11, 0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c17, 0x7c18, 0x7c19, 0x7c1a, 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c20, 0x7c21, 0x7c22, 0x7c23, 0x7c24, 0x7c25, 0x7c28, 0x7c29, 0x7c2b, 0x7c2c, 0x7c2d, 0x7c2e, 0x7c2f, 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35, 0x7c36, 0x7c37, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e, 0x7c42, /* 0xbb */ 0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, 0x7c48, 0x7c49, 0x7c4a, 0x7c4b, 0x7c4c, 0x7c4e, 0x7c4f, 0x7c50, 0x7c51, 0x7c52, 0x7c53, 0x7c54, 0x7c55, 0x7c56, 0x7c57, 0x7c58, 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f, 0x7c60, 0x7c61, 0x7c62, 0x7c63, 0x7c64, 0x7c65, 0x7c66, 0x7c67, 0x7c68, 0x7c69, 0x7c6a, 0x7c6b, 0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f, 0x7c70, 0x7c71, 0x7c72, 0x7c75, 0x7c76, 0x7c77, 0x7c78, 0x7c79, 0x7c7a, 0x7c7e, 0x7c7f, 0x7c80, 0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, 0x7c88, 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f, 0x7c90, 0x7c93, 0x7c94, 0x7c96, 0x7c99, 0x7c9a, 0x7c9b, 0x7ca0, 0x7ca1, 0x7ca3, 0x7ca6, 0x7ca7, 0x7ca8, 0x7ca9, 0x7cab, 0x7cac, 0x7cad, 0x7caf, 0x7cb0, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7, 0x7cb8, 0x7cba, 0x7cbb, /* 0xbc */ 0x7cbf, 0x7cc0, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc6, 0x7cc9, 0x7ccb, 0x7cce, 0x7ccf, 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd8, 0x7cda, 0x7cdb, 0x7cdd, 0x7cde, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4, 0x7ce5, 0x7ce6, 0x7ce7, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced, 0x7cee, 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6, 0x7cf7, 0x7cf9, 0x7cfa, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff, 0x7d00, 0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, 0x7d08, 0x7d09, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f, 0x7d10, 0x7d11, 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17, 0x7d18, 0x7d19, 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f, 0x7d21, 0x7d23, 0x7d24, 0x7d25, 0x7d26, 0x7d28, 0x7d29, 0x7d2a, 0x7d2c, 0x7d2d, 0x7d2e, 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35, 0x7d36, /* 0xbd */ 0x7d37, 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d3f, 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46, 0x7d47, 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e, 0x7d4f, 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56, 0x7d57, 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e, 0x7d5f, 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66, 0x7d67, 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6f, 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0x7d78, 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f, 0x7d80, 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87, 0x7d88, 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f, 0x7d90, 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97, 0x7d98, /* 0xbe */ 0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f, 0x7da0, 0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da7, 0x7da8, 0x7da9, 0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7daf, 0x7db0, 0x7db1, 0x7db2, 0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7, 0x7db8, 0x7db9, 0x7dba, 0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf, 0x7dc0, 0x7dc1, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, 0x7dc8, 0x7dc9, 0x7dca, 0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf, 0x7dd0, 0x7dd1, 0x7dd2, 0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7, 0x7dd8, 0x7dd9, 0x7dda, 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf, 0x7de0, 0x7de1, 0x7de2, 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7, 0x7de8, 0x7de9, 0x7dea, 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def, 0x7df0, 0x7df1, 0x7df2, 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7, 0x7df8, 0x7df9, 0x7dfa, /* 0xbf */ 0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff, 0x7e00, 0x7e01, 0x7e02, 0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, 0x7e08, 0x7e09, 0x7e0a, 0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f, 0x7e10, 0x7e11, 0x7e12, 0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17, 0x7e18, 0x7e19, 0x7e1a, 0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f, 0x7e20, 0x7e21, 0x7e22, 0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27, 0x7e28, 0x7e29, 0x7e2a, 0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f, 0x7e30, 0x7e31, 0x7e32, 0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37, 0x7e38, 0x7e39, 0x7e3a, 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f, 0x7e40, 0x7e42, 0x7e43, 0x7e44, 0x7e45, 0x7e46, 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4d, 0x7e4e, 0x7e4f, 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54, 0x7e55, 0x7e56, 0x7e57, 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c, 0x7e5d, /* 0xc0 */ 0x7e5e, 0x7e5f, 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65, 0x7e66, 0x7e67, 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d, 0x7e6e, 0x7e6f, 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75, 0x7e76, 0x7e77, 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d, 0x7e7e, 0x7e7f, 0x7e80, 0x7e81, 0x7e83, 0x7e84, 0x7e85, 0x7e86, 0x7e87, 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e, 0x7e8f, 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96, 0x7e97, 0x7e98, 0x7e99, 0x7e9a, 0x7e9c, 0x7e9d, 0x7e9e, 0x7eae, 0x7eb4, 0x7ebb, 0x7ebc, 0x7ed6, 0x7ee4, 0x7eec, 0x7ef9, 0x7f0a, 0x7f10, 0x7f1e, 0x7f37, 0x7f39, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e, 0x7f3f, 0x7f40, 0x7f41, 0x7f43, 0x7f46, 0x7f47, 0x7f48, 0x7f49, 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f, 0x7f52, 0x7f53, /* 0xc1 */ 0x7f56, 0x7f59, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f60, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f67, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6f, 0x7f70, 0x7f73, 0x7f75, 0x7f76, 0x7f77, 0x7f78, 0x7f7a, 0x7f7b, 0x7f7c, 0x7f7d, 0x7f7f, 0x7f80, 0x7f82, 0x7f83, 0x7f84, 0x7f85, 0x7f86, 0x7f87, 0x7f88, 0x7f89, 0x7f8b, 0x7f8d, 0x7f8f, 0x7f90, 0x7f91, 0x7f92, 0x7f93, 0x7f95, 0x7f96, 0x7f97, 0x7f98, 0x7f99, 0x7f9b, 0x7f9c, 0x7fa0, 0x7fa2, 0x7fa3, 0x7fa5, 0x7fa6, 0x7fa8, 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7fb1, 0x7fb3, 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7, 0x7fba, 0x7fbb, 0x7fbe, 0x7fc0, 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc6, 0x7fc7, 0x7fc8, 0x7fc9, 0x7fcb, 0x7fcd, 0x7fcf, 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd6, 0x7fd7, 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fe2, 0x7fe3, /* 0xc2 */ 0x7fe4, 0x7fe7, 0x7fe8, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fef, 0x7ff2, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7, 0x7ff8, 0x7ff9, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8002, 0x8007, 0x8008, 0x8009, 0x800a, 0x800e, 0x800f, 0x8011, 0x8013, 0x801a, 0x801b, 0x801d, 0x801e, 0x801f, 0x8021, 0x8023, 0x8024, 0x802b, 0x802c, 0x802d, 0x802e, 0x802f, 0x8030, 0x8032, 0x8034, 0x8039, 0x803a, 0x803c, 0x803e, 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804e, 0x804f, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0x8059, 0x805b, 0x805c, 0x805d, 0x805e, 0x805f, 0x8060, 0x8061, 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806b, 0x806c, 0x806d, 0x806e, 0x806f, 0x8070, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077, 0x8078, 0x8079, 0x807a, 0x807b, 0x807c, 0x807d, /* 0xc3 */ 0x807e, 0x8081, 0x8082, 0x8085, 0x8088, 0x808a, 0x808d, 0x808e, 0x808f, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099, 0x809e, 0x80a3, 0x80a6, 0x80a7, 0x80a8, 0x80ac, 0x80b0, 0x80b3, 0x80b5, 0x80b6, 0x80b8, 0x80b9, 0x80bb, 0x80c5, 0x80c7, 0x80c8, 0x80c9, 0x80ca, 0x80cb, 0x80cf, 0x80d0, 0x80d1, 0x80d2, 0x80d3, 0x80d4, 0x80d5, 0x80d8, 0x80df, 0x80e0, 0x80e2, 0x80e3, 0x80e6, 0x80ee, 0x80f5, 0x80f7, 0x80f9, 0x80fb, 0x80fe, 0x80ff, 0x8100, 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810b, 0x810c, 0x8115, 0x8117, 0x8119, 0x811b, 0x811c, 0x811d, 0x811f, 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 0x8128, 0x8129, 0x812a, 0x812b, 0x812d, 0x812e, 0x8130, 0x8133, 0x8134, 0x8135, 0x8137, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d, 0x813f, /* 0xc4 */ 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149, 0x814d, 0x814e, 0x814f, 0x8152, 0x8156, 0x8157, 0x8158, 0x815b, 0x815c, 0x815d, 0x815e, 0x815f, 0x8161, 0x8162, 0x8163, 0x8164, 0x8166, 0x8168, 0x816a, 0x816b, 0x816c, 0x816f, 0x8172, 0x8173, 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, 0x8189, 0x818b, 0x818c, 0x818d, 0x818e, 0x8190, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819a, 0x819e, 0x819f, 0x81a0, 0x81a1, 0x81a2, 0x81a4, 0x81a5, 0x81a7, 0x81a9, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1, 0x81b2, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81bc, 0x81bd, 0x81be, 0x81bf, 0x81c4, 0x81c5, 0x81c7, 0x81c8, 0x81c9, 0x81cb, 0x81cd, 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3, /* 0xc5 */ 0x81d4, 0x81d5, 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e4, 0x81e5, 0x81e6, 0x81e8, 0x81e9, 0x81eb, 0x81ee, 0x81ef, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa, 0x81fd, 0x81ff, 0x8203, 0x8207, 0x8208, 0x8209, 0x820a, 0x820b, 0x820e, 0x820f, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218, 0x8219, 0x821a, 0x821d, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227, 0x8229, 0x822e, 0x8232, 0x823a, 0x823c, 0x823d, 0x823f, 0x8240, 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824a, 0x824c, 0x824d, 0x824e, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x8259, 0x825b, 0x825c, 0x825d, 0x825e, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8269, /* 0xc6 */ 0x826a, 0x826b, 0x826c, 0x826d, 0x8271, 0x8275, 0x8276, 0x8277, 0x8278, 0x827b, 0x827c, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, 0x8287, 0x8289, 0x828c, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296, 0x829a, 0x829b, 0x829e, 0x82a0, 0x82a2, 0x82a3, 0x82a7, 0x82b2, 0x82b5, 0x82b6, 0x82ba, 0x82bb, 0x82bc, 0x82bf, 0x82c0, 0x82c2, 0x82c3, 0x82c5, 0x82c6, 0x82c9, 0x82d0, 0x82d6, 0x82d9, 0x82da, 0x82dd, 0x82e2, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82ec, 0x82ed, 0x82ee, 0x82f0, 0x82f2, 0x82f3, 0x82f5, 0x82f6, 0x82f8, 0x82fa, 0x82fc, 0x82fd, 0x82fe, 0x82ff, 0x8300, 0x830a, 0x830b, 0x830d, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831d, 0x831e, 0x831f, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8329, 0x832a, 0x832e, 0x8330, 0x8332, 0x8337, 0x833b, 0x833d, /* 0xc7 */ 0x833e, 0x833f, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x8353, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359, 0x835d, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8379, 0x837a, 0x837e, 0x837f, 0x8380, 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838a, 0x838b, 0x838c, 0x838d, 0x838f, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396, 0x8397, 0x8399, 0x839a, 0x839d, 0x839f, 0x83a1, 0x83a2, 0x83a3, 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b5, 0x83bb, 0x83be, 0x83bf, 0x83c2, 0x83c3, 0x83c4, 0x83c6, 0x83c8, 0x83c9, 0x83cb, 0x83cd, 0x83ce, 0x83d0, 0x83d1, 0x83d2, 0x83d3, 0x83d5, 0x83d7, 0x83d9, 0x83da, 0x83db, 0x83de, 0x83e2, 0x83e3, 0x83e4, 0x83e6, 0x83e7, 0x83e8, 0x83eb, 0x83ec, 0x83ed, /* 0xc8 */ 0x83ee, 0x83ef, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83fa, 0x83fb, 0x83fc, 0x83fe, 0x83ff, 0x8400, 0x8402, 0x8405, 0x8407, 0x8408, 0x8409, 0x840a, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, 0x8417, 0x8419, 0x841a, 0x841b, 0x841e, 0x841f, 0x8420, 0x8421, 0x8422, 0x8423, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d, 0x842e, 0x842f, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436, 0x8437, 0x8439, 0x843a, 0x843b, 0x843e, 0x843f, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845d, 0x845e, 0x845f, 0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846a, 0x846e, 0x846f, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847b, 0x847c, /* 0xc9 */ 0x847d, 0x847e, 0x847f, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485, 0x8486, 0x848a, 0x848d, 0x848f, 0x8490, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, 0x8496, 0x8498, 0x849a, 0x849b, 0x849d, 0x849e, 0x849f, 0x84a0, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84b0, 0x84b1, 0x84b3, 0x84b5, 0x84b6, 0x84b7, 0x84bb, 0x84bc, 0x84be, 0x84c0, 0x84c2, 0x84c3, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84cb, 0x84cc, 0x84ce, 0x84cf, 0x84d2, 0x84d4, 0x84d5, 0x84d7, 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84de, 0x84e1, 0x84e2, 0x84e4, 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ed, 0x84ee, 0x84ef, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fd, 0x84fe, 0x8500, 0x8501, 0x8502, /* 0xca */ 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850a, 0x850b, 0x850d, 0x850e, 0x850f, 0x8510, 0x8512, 0x8514, 0x8515, 0x8516, 0x8518, 0x8519, 0x851b, 0x851c, 0x851d, 0x851e, 0x8520, 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529, 0x852a, 0x852d, 0x852e, 0x852f, 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, 0x8536, 0x853e, 0x853f, 0x8540, 0x8541, 0x8542, 0x8544, 0x8545, 0x8546, 0x8547, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8557, 0x8558, 0x855a, 0x855b, 0x855c, 0x855d, 0x855f, 0x8560, 0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f, 0x8570, 0x8571, 0x8573, 0x8575, 0x8576, 0x8577, 0x8578, 0x857c, 0x857d, 0x857f, 0x8580, 0x8581, /* 0xcb */ 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858a, 0x858b, 0x858c, 0x858d, 0x858e, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0x859a, 0x859d, 0x859e, 0x859f, 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a5, 0x85a6, 0x85a7, 0x85a9, 0x85ab, 0x85ac, 0x85ad, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b8, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c0, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8, 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85d1, 0x85d2, 0x85d4, 0x85d6, 0x85d7, 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dd, 0x85de, 0x85df, 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e5, 0x85e6, 0x85e7, 0x85e8, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0, 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8, /* 0xcc */ 0x85f9, 0x85fa, 0x85fc, 0x85fd, 0x85fe, 0x8600, 0x8601, 0x8602, 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860a, 0x860b, 0x860c, 0x860d, 0x860e, 0x860f, 0x8610, 0x8612, 0x8613, 0x8614, 0x8615, 0x8617, 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d, 0x861e, 0x861f, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, 0x8626, 0x8628, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f, 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637, 0x8639, 0x863a, 0x863b, 0x863d, 0x863e, 0x863f, 0x8640, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864a, 0x864b, 0x864c, 0x8652, 0x8653, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865b, 0x865c, 0x865d, 0x865f, 0x8660, 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a, /* 0xcd */ 0x866d, 0x866f, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, 0x8689, 0x868e, 0x868f, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696, 0x8697, 0x8698, 0x8699, 0x869a, 0x869b, 0x869e, 0x869f, 0x86a0, 0x86a1, 0x86a2, 0x86a5, 0x86a6, 0x86ab, 0x86ad, 0x86ae, 0x86b2, 0x86b3, 0x86b7, 0x86b8, 0x86b9, 0x86bb, 0x86bc, 0x86bd, 0x86be, 0x86bf, 0x86c1, 0x86c2, 0x86c3, 0x86c5, 0x86c8, 0x86cc, 0x86cd, 0x86d2, 0x86d3, 0x86d5, 0x86d6, 0x86d7, 0x86da, 0x86dc, 0x86dd, 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e5, 0x86e6, 0x86e7, 0x86e8, 0x86ea, 0x86eb, 0x86ec, 0x86ef, 0x86f5, 0x86f6, 0x86f7, 0x86fa, 0x86fb, 0x86fc, 0x86fd, 0x86ff, 0x8701, 0x8704, 0x8705, 0x8706, 0x870b, 0x870c, 0x870e, 0x870f, 0x8710, 0x8711, 0x8714, 0x8716, /* 0xce */ 0x8719, 0x871b, 0x871d, 0x871f, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872a, 0x872b, 0x872c, 0x872d, 0x872f, 0x8730, 0x8732, 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873a, 0x873c, 0x873d, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874a, 0x874b, 0x874d, 0x874f, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755, 0x8756, 0x8758, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f, 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d, 0x876f, 0x8771, 0x8772, 0x8773, 0x8775, 0x8777, 0x8778, 0x8779, 0x877a, 0x877f, 0x8780, 0x8781, 0x8784, 0x8786, 0x8787, 0x8789, 0x878a, 0x878c, 0x878e, 0x878f, 0x8790, 0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4, /* 0xcf */ 0x87a5, 0x87a6, 0x87a7, 0x87a9, 0x87aa, 0x87ae, 0x87b0, 0x87b1, 0x87b2, 0x87b4, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87bb, 0x87bc, 0x87be, 0x87bf, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c7, 0x87c8, 0x87c9, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d4, 0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87dc, 0x87dd, 0x87de, 0x87df, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e6, 0x87e7, 0x87e8, 0x87e9, 0x87eb, 0x87ec, 0x87ed, 0x87ef, 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87ff, 0x8800, 0x8801, 0x8802, 0x8804, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880b, 0x880c, 0x880d, 0x880e, 0x880f, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817, 0x8818, 0x8819, 0x881a, 0x881c, 0x881d, 0x881e, 0x881f, 0x8820, 0x8823, /* 0xd0 */ 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882a, 0x882b, 0x882c, 0x882d, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833, 0x8834, 0x8835, 0x8836, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883e, 0x883f, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849, 0x884a, 0x884b, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853, 0x8855, 0x8856, 0x8858, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f, 0x8860, 0x8866, 0x8867, 0x886a, 0x886d, 0x886f, 0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887a, 0x887b, 0x887c, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888a, 0x888c, 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, 0x8897, 0x8898, 0x8899, 0x889a, 0x889b, 0x889d, 0x889e, 0x889f, 0x88a0, 0x88a1, 0x88a3, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa, /* 0xd1 */ 0x88ac, 0x88ae, 0x88af, 0x88b0, 0x88b2, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bd, 0x88be, 0x88bf, 0x88c0, 0x88c3, 0x88c4, 0x88c7, 0x88c8, 0x88ca, 0x88cb, 0x88cc, 0x88cd, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d6, 0x88d7, 0x88da, 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88e0, 0x88e1, 0x88e6, 0x88e7, 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f2, 0x88f5, 0x88f6, 0x88f7, 0x88fa, 0x88fb, 0x88fd, 0x88ff, 0x8900, 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0x8909, 0x890b, 0x890c, 0x890d, 0x890e, 0x890f, 0x8911, 0x8914, 0x8915, 0x8916, 0x8917, 0x8918, 0x891c, 0x891d, 0x891e, 0x891f, 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 0x892c, 0x892d, 0x892e, 0x892f, 0x8931, 0x8932, 0x8933, 0x8935, 0x8937, /* 0xd2 */ 0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f, 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b, 0x895c, 0x895d, 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897c, 0x897d, 0x897e, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989, 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1, /* 0xd3 */ 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, 0x89c0, 0x89c3, 0x89cd, 0x89d3, 0x89d4, 0x89d5, 0x89d7, 0x89d8, 0x89d9, 0x89db, 0x89dd, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e4, 0x89e7, 0x89e8, 0x89e9, 0x89ea, 0x89ec, 0x89ed, 0x89ee, 0x89f0, 0x89f1, 0x89f2, 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb, 0x89fc, 0x89fd, 0x89fe, 0x89ff, 0x8a01, 0x8a02, 0x8a03, 0x8a04, 0x8a05, 0x8a06, 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0d, 0x8a0e, 0x8a0f, 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14, 0x8a15, 0x8a16, 0x8a17, 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c, 0x8a1d, /* 0xd4 */ 0x8a1e, 0x8a1f, 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25, 0x8a26, 0x8a27, 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d, 0x8a2e, 0x8a2f, 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35, 0x8a36, 0x8a37, 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d, 0x8a3f, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46, 0x8a47, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f, 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67, 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f, 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77, 0x8a78, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f, 0x8a80, /* 0xd5 */ 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a92, 0x8a94, 0x8a95, 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0, 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3, /* 0xd6 */ 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8aff, 0x8b00, 0x8b01, 0x8b02, 0x8b03, 0x8b04, 0x8b05, 0x8b06, 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c, 0x8b0d, 0x8b0e, 0x8b0f, 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14, 0x8b15, 0x8b16, 0x8b17, 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c, 0x8b1d, 0x8b1e, 0x8b1f, 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0x8b24, 0x8b25, 0x8b27, 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2d, 0x8b2e, 0x8b2f, 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34, 0x8b35, 0x8b36, 0x8b37, 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c, 0x8b3d, 0x8b3e, 0x8b3f, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45, /* 0xd7 */ 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b67, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f, 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x8b87, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97, 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f, 0x8bac, 0x8bb1, 0x8bbb, 0x8bc7, 0x8bd0, 0x8bea, 0x8c09, 0x8c1e, /* 0xd8 */ 0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f, 0x8c40, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c48, 0x8c4a, 0x8c4b, 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54, 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e, 0x8c5f, 0x8c60, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72, 0x8c74, 0x8c75, 0x8c76, 0x8c77, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e, 0x8c7f, 0x8c80, 0x8c81, 0x8c83, 0x8c84, 0x8c86, 0x8c87, 0x8c88, 0x8c8b, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0x8c95, 0x8c96, 0x8c97, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d, 0x8c9e, 0x8c9f, 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, /* 0xd9 */ 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe, 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe, 0x8cff, 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04, 0x8d05, 0x8d06, 0x8d07, 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0d, /* 0xda */ 0x8d0e, 0x8d0f, 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15, 0x8d16, 0x8d17, 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d20, 0x8d51, 0x8d52, 0x8d57, 0x8d5f, 0x8d65, 0x8d68, 0x8d69, 0x8d6a, 0x8d6c, 0x8d6e, 0x8d6f, 0x8d71, 0x8d72, 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f, 0x8d80, 0x8d82, 0x8d83, 0x8d86, 0x8d87, 0x8d88, 0x8d89, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f, 0x8d90, 0x8d92, 0x8d93, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99, 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8da0, 0x8da1, 0x8da2, 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db2, 0x8db6, 0x8db7, 0x8db9, 0x8dbb, 0x8dbd, 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc5, 0x8dc7, 0x8dc8, 0x8dc9, 0x8dca, 0x8dcd, 0x8dd0, 0x8dd2, 0x8dd3, 0x8dd4, /* 0xdb */ 0x8dd5, 0x8dd8, 0x8dd9, 0x8ddc, 0x8de0, 0x8de1, 0x8de2, 0x8de5, 0x8de6, 0x8de7, 0x8de9, 0x8ded, 0x8dee, 0x8df0, 0x8df1, 0x8df2, 0x8df4, 0x8df6, 0x8dfc, 0x8dfe, 0x8dff, 0x8e00, 0x8e01, 0x8e02, 0x8e03, 0x8e04, 0x8e06, 0x8e07, 0x8e08, 0x8e0b, 0x8e0d, 0x8e0e, 0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e15, 0x8e16, 0x8e17, 0x8e18, 0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e20, 0x8e21, 0x8e24, 0x8e25, 0x8e26, 0x8e27, 0x8e28, 0x8e2b, 0x8e2d, 0x8e30, 0x8e32, 0x8e33, 0x8e34, 0x8e36, 0x8e37, 0x8e38, 0x8e3b, 0x8e3c, 0x8e3e, 0x8e3f, 0x8e43, 0x8e45, 0x8e46, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0x8e63, 0x8e64, 0x8e65, 0x8e67, 0x8e68, 0x8e6a, 0x8e6b, 0x8e6e, 0x8e71, /* 0xdc */ 0x8e73, 0x8e75, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7d, 0x8e7e, 0x8e80, 0x8e82, 0x8e83, 0x8e84, 0x8e86, 0x8e88, 0x8e89, 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e91, 0x8e92, 0x8e93, 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9d, 0x8e9f, 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8ead, 0x8eae, 0x8eb0, 0x8eb1, 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8ebb, 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ecf, 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4, /* 0xdd */ 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8eff, 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04, 0x8f05, 0x8f06, 0x8f07, 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c, 0x8f0d, 0x8f0e, 0x8f0f, 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14, 0x8f15, 0x8f16, 0x8f17, 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c, 0x8f1d, 0x8f1e, 0x8f1f, 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0x8f24, 0x8f25, 0x8f26, 0x8f27, 0x8f28, 0x8f29, 0x8f2a, 0x8f2b, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f2f, 0x8f30, 0x8f31, 0x8f32, 0x8f33, 0x8f34, 0x8f35, 0x8f36, 0x8f37, 0x8f38, 0x8f39, 0x8f3a, 0x8f3b, 0x8f3c, 0x8f3d, 0x8f3e, 0x8f3f, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, /* 0xde */ 0x8f45, 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65, 0x8f6a, 0x8f80, 0x8f8c, 0x8f92, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa2, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, 0x8faa, 0x8fac, 0x8fad, 0x8fae, 0x8faf, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb7, 0x8fb8, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbf, 0x8fc0, 0x8fc3, 0x8fc6, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fcf, 0x8fd2, 0x8fd6, 0x8fd7, 0x8fda, 0x8fe0, 0x8fe1, 0x8fe3, 0x8fe7, 0x8fec, 0x8fef, 0x8ff1, 0x8ff2, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffe, 0x8fff, 0x9007, 0x9008, 0x900c, 0x900e, 0x9013, 0x9015, 0x9018, /* 0xdf */ 0x9019, 0x901c, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029, 0x902a, 0x902b, 0x902c, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, 0x9037, 0x9039, 0x903a, 0x903d, 0x903f, 0x9040, 0x9043, 0x9045, 0x9046, 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904e, 0x9054, 0x9055, 0x9056, 0x9059, 0x905a, 0x905c, 0x905d, 0x905e, 0x905f, 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906a, 0x906b, 0x906c, 0x906f, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077, 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907e, 0x9081, 0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908a, 0x908c, 0x908d, 0x908e, 0x908f, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909a, 0x909c, 0x909e, 0x909f, 0x90a0, 0x90a4, 0x90a5, 0x90a7, 0x90a8, 0x90a9, 0x90ab, 0x90ad, 0x90b2, 0x90b7, 0x90bc, 0x90bd, 0x90bf, 0x90c0, /* 0xe0 */ 0x90c2, 0x90c3, 0x90c6, 0x90c8, 0x90c9, 0x90cb, 0x90cc, 0x90cd, 0x90d2, 0x90d4, 0x90d5, 0x90d6, 0x90d8, 0x90d9, 0x90da, 0x90de, 0x90df, 0x90e0, 0x90e3, 0x90e4, 0x90e5, 0x90e9, 0x90ea, 0x90ec, 0x90ee, 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f5, 0x90f6, 0x90f7, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90ff, 0x9100, 0x9101, 0x9103, 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910a, 0x910b, 0x910c, 0x910d, 0x910e, 0x910f, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114, 0x9115, 0x9116, 0x9117, 0x9118, 0x911a, 0x911b, 0x911c, 0x911d, 0x911f, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127, 0x9128, 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x9130, 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913a, 0x913b, 0x913c, 0x913d, 0x913e, 0x913f, 0x9140, 0x9141, 0x9142, 0x9144, /* 0xe1 */ 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, 0x9158, 0x9159, 0x915b, 0x915c, 0x915f, 0x9160, 0x9166, 0x9167, 0x9168, 0x916b, 0x916d, 0x9173, 0x917a, 0x917b, 0x917c, 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918a, 0x918e, 0x918f, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0x91a4, 0x91a5, 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91ab, 0x91ac, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91bb, 0x91bc, 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c8, 0x91cb, 0x91d0, 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dd, 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5, /* 0xe2 */ 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x91fe, 0x91ff, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, 0x9206, 0x9207, 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d, 0x920e, 0x920f, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, 0x9216, 0x9217, 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d, 0x921e, 0x921f, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225, 0x9226, 0x9227, 0x9228, 0x9229, 0x922a, 0x922b, 0x922c, 0x922d, 0x922e, 0x922f, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235, 0x9236, 0x9237, 0x9238, 0x9239, 0x923a, 0x923b, 0x923c, 0x923d, 0x923e, 0x923f, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, /* 0xe3 */ 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e, 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e, 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e, 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e, 0x927f, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286, 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928f, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297, 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f, 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, /* 0xe4 */ 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8, 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8, 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0, 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff, 0x9300, 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 0x9309, /* 0xe5 */ 0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f, 0x9310, 0x9311, 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319, 0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f, 0x9320, 0x9321, 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329, 0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f, 0x9330, 0x9331, 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339, 0x933a, 0x933b, 0x933c, 0x933d, 0x933f, 0x9340, 0x9341, 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936b, /* 0xe6 */ 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x937f, 0x9380, 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b, 0x938c, 0x938d, 0x938e, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d, 0x939e, 0x939f, 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93cb, 0x93cc, 0x93cd, /* 0xe7 */ 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5, 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de, 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee, 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe, 0x93ff, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0x940e, 0x940f, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416, 0x9417, 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d, 0x941e, 0x941f, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426, 0x9427, 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d, 0x942e, /* 0xe8 */ 0x942f, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436, 0x9437, 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943f, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946c, 0x946d, 0x946e, 0x946f, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f, 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498, 0x94c7, 0x94cf, 0x94d3, 0x94d4, 0x94da, 0x94e6, 0x94fb, 0x951c, 0x9520, /* 0xe9 */ 0x9527, 0x9533, 0x953d, 0x9543, 0x9548, 0x954b, 0x9555, 0x955a, 0x9560, 0x956e, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x9580, 0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f, 0x9590, 0x9591, 0x9592, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959a, 0x959b, 0x959c, 0x959d, 0x959e, 0x959f, 0x95a0, 0x95a1, 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1, 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0x95ca, 0x95cb, /* 0xea */ 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95ec, 0x95ff, 0x9607, 0x9613, 0x9618, 0x961b, 0x961e, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, 0x9628, 0x9629, 0x962b, 0x962c, 0x962d, 0x962f, 0x9630, 0x9637, 0x9638, 0x9639, 0x963a, 0x963e, 0x9641, 0x9643, 0x964a, 0x964e, 0x964f, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0x9658, 0x9659, 0x965a, 0x965c, 0x965d, 0x965e, 0x9660, 0x9663, 0x9665, 0x9666, 0x966b, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9673, 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x967f, 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968a, /* 0xeb */ 0x968c, 0x968e, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969a, 0x969b, 0x969d, 0x969e, 0x969f, 0x96a0, 0x96a1, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac, 0x96ad, 0x96ae, 0x96af, 0x96b1, 0x96b2, 0x96b4, 0x96b5, 0x96b7, 0x96b8, 0x96ba, 0x96bb, 0x96bf, 0x96c2, 0x96c3, 0x96c8, 0x96ca, 0x96cb, 0x96d0, 0x96d1, 0x96d3, 0x96d4, 0x96d6, 0x96d7, 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, 0x96eb, 0x96ec, 0x96ed, 0x96ee, 0x96f0, 0x96f1, 0x96f2, 0x96f4, 0x96f5, 0x96f8, 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96ff, 0x9702, 0x9703, 0x9705, 0x970a, 0x970b, 0x970c, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715, 0x9717, 0x9718, 0x9719, 0x971a, 0x971b, 0x971d, 0x971f, 0x9720, /* 0xec */ 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728, 0x9729, 0x972b, 0x972c, 0x972e, 0x972f, 0x9731, 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973a, 0x973b, 0x973c, 0x973d, 0x973f, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f, 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975a, 0x975c, 0x975d, 0x975f, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977d, 0x977e, 0x977f, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787, 0x9788, 0x9789, 0x978a, 0x978c, 0x978e, 0x978f, 0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, /* 0xed */ 0x979e, 0x979f, 0x97a1, 0x97a2, 0x97a4, 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0x97aa, 0x97ac, 0x97ae, 0x97b0, 0x97b1, 0x97b3, 0x97b5, 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf, 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf, 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df, 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e8, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f4, 0x97f7, 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x97ff, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806, 0x9807, 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d, 0x980e, /* 0xee */ 0x980f, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, 0x9817, 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e, 0x981f, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, 0x9827, 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e, 0x982f, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9837, 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e, 0x983f, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, /* 0xef */ 0x986f, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988b, 0x988e, 0x9892, 0x9895, 0x9899, 0x98a3, 0x98a8, 0x98a9, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb, 0x98cc, 0x98cd, 0x98cf, 0x98d0, 0x98d4, 0x98d6, 0x98d7, 0x98db, 0x98dc, 0x98dd, 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x98ff, 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907, /* 0xf0 */ 0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990e, 0x990f, 0x9911, 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919, 0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f, 0x9920, 0x9921, 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929, 0x992a, 0x992b, 0x992c, 0x992d, 0x992f, 0x9930, 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993a, 0x993b, 0x993c, 0x993d, 0x993e, 0x993f, 0x9940, 0x9941, 0x9942, 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c, 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997b, 0x997e, 0x9982, 0x9983, 0x9989, /* 0xf1 */ 0x998c, 0x998e, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f, 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a6, 0x99a7, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9, /* 0xf2 */ 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff, 0x9a00, 0x9a01, 0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, 0x9a08, 0x9a09, 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f, 0x9a10, 0x9a11, 0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17, 0x9a18, 0x9a19, 0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f, 0x9a20, 0x9a21, 0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27, 0x9a28, 0x9a29, 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f, 0x9a30, 0x9a31, 0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37, 0x9a38, 0x9a39, 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f, 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, 0x9a58, 0x9a59, /* 0xf3 */ 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a72, 0x9a83, 0x9a89, 0x9a8d, 0x9a8e, 0x9a94, 0x9a95, 0x9a99, 0x9aa6, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab9, 0x9abb, 0x9abd, 0x9abe, 0x9abf, 0x9ac3, 0x9ac4, 0x9ac6, 0x9ac7, 0x9ac8, 0x9ac9, 0x9aca, 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad2, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, 0x9ade, 0x9ae0, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae7, 0x9ae8, 0x9ae9, 0x9aea, 0x9aec, 0x9aee, 0x9af0, 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9afa, 0x9afc, 0x9afd, 0x9afe, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b04, 0x9b05, 0x9b06, /* 0xf4 */ 0x9b07, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10, 0x9b11, 0x9b12, 0x9b14, 0x9b15, 0x9b16, 0x9b17, 0x9b18, 0x9b19, 0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b20, 0x9b21, 0x9b22, 0x9b24, 0x9b25, 0x9b26, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2b, 0x9b2c, 0x9b2d, 0x9b2e, 0x9b30, 0x9b31, 0x9b33, 0x9b34, 0x9b35, 0x9b36, 0x9b37, 0x9b38, 0x9b39, 0x9b3a, 0x9b3d, 0x9b3e, 0x9b3f, 0x9b40, 0x9b46, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4e, 0x9b50, 0x9b52, 0x9b53, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, 0x9b7a, 0x9b7b, /* 0xf5 */ 0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f, 0x9b80, 0x9b81, 0x9b82, 0x9b83, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b92, 0x9b93, 0x9b94, 0x9b95, 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3, 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb, 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3, 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3, 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb, /* 0xf6 */ 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3, 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb, 0x9bec, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb, 0x9bfc, 0x9bfd, 0x9bfe, 0x9bff, 0x9c00, 0x9c01, 0x9c02, 0x9c03, 0x9c04, 0x9c05, 0x9c06, 0x9c07, 0x9c08, 0x9c09, 0x9c0a, 0x9c0b, 0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f, 0x9c10, 0x9c11, 0x9c12, 0x9c13, 0x9c14, 0x9c15, 0x9c16, 0x9c17, 0x9c18, 0x9c19, 0x9c1a, 0x9c1b, 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f, 0x9c20, 0x9c21, 0x9c22, 0x9c23, 0x9c24, 0x9c25, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c2b, 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f, 0x9c30, 0x9c31, 0x9c32, 0x9c33, 0x9c34, 0x9c35, 0x9c36, 0x9c37, 0x9c38, 0x9c39, 0x9c3a, 0x9c3b, /* 0xf7 */ 0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f, 0x9c40, 0x9c41, 0x9c42, 0x9c43, 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0x9c53, 0x9c54, 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b, 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74, 0x9c75, 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7d, 0x9c7e, 0x9c80, 0x9c83, 0x9c84, 0x9c89, 0x9c8a, 0x9c8c, 0x9c8f, 0x9c93, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9c9d, 0x9caa, 0x9cac, 0x9caf, 0x9cb9, 0x9cbe, 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc8, 0x9cc9, 0x9cd1, 0x9cd2, 0x9cda, 0x9cdb, 0x9ce0, 0x9ce1, /* 0xf8 */ 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff, 0x9d00, 0x9d01, 0x9d02, 0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, 0x9d08, 0x9d09, 0x9d0a, 0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f, 0x9d10, 0x9d11, 0x9d12, 0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17, 0x9d18, 0x9d19, 0x9d1a, 0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f, 0x9d20, 0x9d21, 0x9d22, 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27, 0x9d28, 0x9d29, 0x9d2a, 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f, 0x9d30, 0x9d31, 0x9d32, 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37, 0x9d38, 0x9d39, 0x9d3a, 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f, 0x9d40, 0x9d41, 0x9d42, /* 0xf9 */ 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0x9d5a, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f, 0x9d80, 0x9d81, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, 0x9d91, 0x9d92, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99, 0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0x9da1, 0x9da2, /* 0xfa */ 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff, 0x9e00, 0x9e01, 0x9e02, /* 0xfb */ 0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, 0x9e08, 0x9e09, 0x9e0a, 0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f, 0x9e10, 0x9e11, 0x9e12, 0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17, 0x9e18, 0x9e19, 0x9e1a, 0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e24, 0x9e27, 0x9e2e, 0x9e30, 0x9e34, 0x9e3b, 0x9e3c, 0x9e40, 0x9e4d, 0x9e50, 0x9e52, 0x9e53, 0x9e54, 0x9e56, 0x9e59, 0x9e5d, 0x9e5f, 0x9e60, 0x9e61, 0x9e62, 0x9e65, 0x9e6e, 0x9e6f, 0x9e72, 0x9e74, 0x9e75, 0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e80, 0x9e81, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e89, 0x9e8a, 0x9e8c, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9e, 0x9ea0, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa, /* 0xfc */ 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb9, 0x9eba, 0x9ebc, 0x9ebf, 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0x9eca, 0x9ecb, 0x9ecc, 0x9ed0, 0x9ed2, 0x9ed3, 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed9, 0x9eda, 0x9ede, 0x9ee1, 0x9ee3, 0x9ee4, 0x9ee6, 0x9ee8, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9efa, 0x9efd, 0x9eff, 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0x9f06, 0x9f07, 0x9f08, 0x9f09, 0x9f0a, 0x9f0c, 0x9f0f, 0x9f11, 0x9f12, 0x9f14, 0x9f15, 0x9f16, 0x9f18, 0x9f1a, 0x9f1b, 0x9f1c, 0x9f1d, 0x9f1e, 0x9f1f, 0x9f21, 0x9f23, 0x9f24, 0x9f25, 0x9f26, 0x9f27, 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2d, 0x9f2e, 0x9f30, 0x9f31, /* 0xfd */ 0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f38, 0x9f3a, 0x9f3c, 0x9f3f, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f45, 0x9f46, 0x9f47, 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f81, 0x9f82, 0x9f8d, 0x9f8e, 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95, 0x9f96, 0x9f97, 0x9f98, 0x9f9c, 0x9f9d, 0x9f9e, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0xf92c, 0xf979, 0xf995, 0xf9e7, 0xf9f1, /* 0xfe */ 0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f, 0xfa11, 0xfa13, 0xfa14, 0xfa18, 0xfa1f, 0xfa20, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa28, 0xfa29, }; static int gbkext2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0xa8 && c1 <= 0xfe)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xa1)) { unsigned int i = 96 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40)); unsigned short wc = 0xfffd; { if (i < 12016) wc = gbkext2_2uni_pagea8[i-3744]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } recode-3.6/libiconv/gbkext_inv.h0100644000000000000000000044403407206266436015464 0ustar rootroot /* * GBK extensions */ static const unsigned short gbkext_inv_2charset[14313] = { 0xa840, 0xa841, 0xa842, 0xa95c, 0xa843, 0xa844, 0xa845, 0xa846, 0xa847, 0xa848, 0xa959, 0xa849, 0xa84a, 0xa84b, 0xa84c, 0xa84d, 0xa84e, 0xa84f, 0xa850, 0xa851, 0xa852, 0xa892, 0xa853, 0xa854, 0xa855, 0xa856, 0xa857, 0xa858, 0xa859, 0xa85a, 0xa85b, 0xa85c, 0xa85d, 0xa85e, 0xa85f, 0xa860, 0xa861, 0xa862, 0xa863, 0xa864, 0xa865, 0xa866, 0xa867, 0xa868, 0xa869, 0xa86a, 0xa86b, 0xa86c, 0xa86d, 0xa86e, 0xa86f, 0xa870, 0xa871, 0xa872, 0xa873, 0xa874, 0xa875, 0xa876, 0xa877, 0xa878, 0xa879, 0xa87a, 0xa87b, 0xa87c, 0xa87d, 0xa87e, 0xa880, 0xa881, 0xa882, 0xa883, 0xa884, 0xa885, 0xa886, 0xa887, 0xa888, 0xa889, 0xa88a, 0xa88b, 0xa88c, 0xa88d, 0xa88e, 0xa88f, 0xa890, 0xa891, 0xa965, 0xa996, 0xa893, 0xa894, 0xa895, 0xa940, 0xa941, 0xa942, 0xa943, 0xa944, 0xa945, 0xa946, 0xa947, 0xa948, 0xa961, 0xa962, 0xa966, 0xa967, 0xa960, 0xa963, 0xa964, 0xa95a, 0xa949, 0xa94a, 0xa94b, 0xa94c, 0xa94d, 0xa94e, 0xa94f, 0xa950, 0xa951, 0xa952, 0xa953, 0xa954, 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149, 0x814a, 0x814b, 0x814c, 0x814d, 0x814e, 0x814f, 0x8150, 0x8151, 0x8152, 0x8153, 0x8154, 0x8155, 0x8156, 0x8157, 0x8158, 0x8159, 0x815a, 0x815b, 0x815c, 0x815d, 0x815e, 0x815f, 0x8160, 0x8161, 0x8162, 0x8163, 0x8164, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a, 0x816b, 0x816c, 0x816d, 0x816e, 0x816f, 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0x8176, 0x8177, 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0x817d, 0x817e, 0x8180, 0x8181, 0x8182, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, 0x8188, 0x8189, 0x818a, 0x818b, 0x818c, 0x818d, 0x818e, 0x818f, 0x8190, 0x8191, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8198, 0x8199, 0x819a, 0x819b, 0x819c, 0x819d, 0x819e, 0x819f, 0x81a0, 0x81a1, 0x81a2, 0x81a3, 0x81a4, 0x81a5, 0x81a6, 0x81a7, 0x81a8, 0x81a9, 0x81aa, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1, 0x81b2, 0x81b3, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81ba, 0x81bb, 0x81bc, 0x81bd, 0x81be, 0x81bf, 0x81c0, 0x81c1, 0x81c2, 0x81c3, 0x81c4, 0x81c5, 0x81c6, 0x81c7, 0x81c8, 0x81c9, 0x81ca, 0x81cb, 0x81cc, 0x81cd, 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e3, 0x81e4, 0x81e5, 0x81e6, 0x81e7, 0x81e8, 0x81e9, 0x81ea, 0x81eb, 0x81ec, 0x81ed, 0x81ee, 0x81ef, 0x81f0, 0x81f1, 0x81f2, 0x81f3, 0x81f4, 0x81f5, 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa, 0x81fb, 0x81fc, 0x81fd, 0x81fe, 0x8240, 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0x8248, 0x8249, 0x824a, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x8258, 0x8259, 0x825a, 0x825b, 0x825c, 0x825d, 0x825e, 0x825f, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e, 0x826f, 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827a, 0x827b, 0x827c, 0x827d, 0x827e, 0x8280, 0x8281, 0x8282, 0x8283, 0x8284, 0x8285, 0x8286, 0x8287, 0x8288, 0x8289, 0x828a, 0x828b, 0x828c, 0x828d, 0x828e, 0x828f, 0x8290, 0x8291, 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, 0x8298, 0x8299, 0x829a, 0x829b, 0x829c, 0x829d, 0x829e, 0x829f, 0x82a0, 0x82a1, 0x82a2, 0x82a3, 0x82a4, 0x82a5, 0x82a6, 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0x82ae, 0x82af, 0x82b0, 0x82b1, 0x82b2, 0x82b3, 0x82b4, 0x82b5, 0x82b6, 0x82b7, 0x82b8, 0x82b9, 0x82ba, 0x82bb, 0x82bc, 0x82bd, 0x82be, 0x82bf, 0x82c0, 0x82c1, 0x82c2, 0x82c3, 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8, 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82ce, 0x82cf, 0x82d0, 0x82d1, 0x82d2, 0x82d3, 0x82d4, 0x82d5, 0x82d6, 0x82d7, 0x82d8, 0x82d9, 0x82da, 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0, 0x82e1, 0x82e2, 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82eb, 0x82ec, 0x82ed, 0x82ee, 0x82ef, 0x82f0, 0x82f1, 0x82f2, 0x82f3, 0x82f4, 0x82f5, 0x82f6, 0x82f7, 0x82f8, 0x82f9, 0x82fa, 0x82fb, 0x82fc, 0x82fd, 0x82fe, 0x8340, 0x8341, 0x8342, 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351, 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359, 0x835a, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367, 0x8368, 0x8369, 0x836a, 0x836b, 0x836c, 0x836d, 0x836e, 0x836f, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377, 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0x837e, 0x8380, 0x8381, 0x8382, 0x8383, 0x8384, 0x8385, 0x8386, 0x8387, 0x8388, 0x8389, 0x838a, 0x838b, 0x838c, 0x838d, 0x838e, 0x838f, 0x8390, 0x8391, 0x8392, 0x8393, 0x8394, 0x8395, 0x8396, 0x8397, 0x8398, 0x8399, 0x839a, 0x839b, 0x839c, 0x839d, 0x839e, 0x839f, 0x83a0, 0x83a1, 0x83a2, 0x83a3, 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab, 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0x83b3, 0x83b4, 0x83b5, 0x83b6, 0x83b7, 0x83b8, 0x83b9, 0x83ba, 0x83bb, 0x83bc, 0x83bd, 0x83be, 0x83bf, 0x83c0, 0x83c1, 0x83c2, 0x83c3, 0x83c4, 0x83c5, 0x83c6, 0x83c7, 0x83c8, 0x83c9, 0x83ca, 0x83cb, 0x83cc, 0x83cd, 0x83ce, 0x83cf, 0x83d0, 0x83d1, 0x83d2, 0x83d3, 0x83d4, 0x83d5, 0x83d6, 0x83d7, 0x83d8, 0x83d9, 0x83da, 0x83db, 0x83dc, 0x83dd, 0x83de, 0x83df, 0x83e0, 0x83e1, 0x83e2, 0x83e3, 0x83e4, 0x83e5, 0x83e6, 0x83e7, 0x83e8, 0x83e9, 0x83ea, 0x83eb, 0x83ec, 0x83ed, 0x83ee, 0x83ef, 0x83f0, 0x83f1, 0x83f2, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83f8, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8446, 0x8447, 0x8448, 0x8449, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450, 0x8451, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8457, 0x8458, 0x8459, 0x845a, 0x845b, 0x845c, 0x845d, 0x845e, 0x845f, 0x8460, 0x8461, 0x8462, 0x8463, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x8469, 0x846a, 0x846b, 0x846c, 0x846d, 0x846e, 0x846f, 0x8470, 0x8471, 0x8472, 0x8473, 0x8474, 0x8475, 0x8476, 0x8477, 0x8478, 0x8479, 0x847a, 0x847b, 0x847c, 0x847d, 0x847e, 0x8480, 0x8481, 0x8482, 0x8483, 0x8484, 0x8485, 0x8486, 0x8487, 0x8488, 0x8489, 0x848a, 0x848b, 0x848c, 0x848d, 0x848e, 0x848f, 0x8490, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, 0x8496, 0x8497, 0x8498, 0x8499, 0x849a, 0x849b, 0x849c, 0x849d, 0x849e, 0x849f, 0x84a0, 0x84a1, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84af, 0x84b0, 0x84b1, 0x84b2, 0x84b3, 0x84b4, 0x84b5, 0x84b6, 0x84b7, 0x84b8, 0x84b9, 0x84ba, 0x84bb, 0x84bc, 0x84bd, 0x84be, 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0x84c4, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84c9, 0x84ca, 0x84cb, 0x84cc, 0x84cd, 0x84ce, 0x84cf, 0x84d0, 0x84d1, 0x84d2, 0x84d3, 0x84d4, 0x84d5, 0x84d6, 0x84d7, 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84dd, 0x84de, 0x84df, 0x84e0, 0x84e1, 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0x84fe, 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, 0x8546, 0x8547, 0x8548, 0x8549, 0x854a, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, 0x8558, 0x8559, 0x855a, 0x855b, 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567, 0x8568, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f, 0x8570, 0x8571, 0x8572, 0x8573, 0x8574, 0x8575, 0x8576, 0x8577, 0x8578, 0x8579, 0x857a, 0x857b, 0x857c, 0x857d, 0x857e, 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0x8585, 0x8586, 0x8587, 0x8588, 0x8589, 0x858a, 0x858b, 0x858c, 0x858d, 0x858e, 0x858f, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0x859a, 0x859b, 0x859c, 0x859d, 0x859e, 0x859f, 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, 0x85a7, 0x85a8, 0x85a9, 0x85aa, 0x85ab, 0x85ac, 0x85ad, 0x85ae, 0x85af, 0x85b0, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b7, 0x85b8, 0x85b9, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c0, 0x85c1, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8, 0x85c9, 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85cf, 0x85d0, 0x85d1, 0x85d2, 0x85d3, 0x85d4, 0x85d5, 0x85d6, 0x85d7, 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dc, 0x85dd, 0x85de, 0x85df, 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, 0x85e8, 0x85e9, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0, 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8, 0x85f9, 0x85fa, 0x85fb, 0x85fc, 0x85fd, 0x85fe, 0x8640, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864a, 0x864b, 0x864c, 0x864d, 0x864e, 0x864f, 0x8650, 0x8651, 0x8652, 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865a, 0x865b, 0x865c, 0x865d, 0x865e, 0x865f, 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a, 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0x8670, 0x8671, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, 0x8678, 0x8679, 0x867a, 0x867b, 0x867c, 0x867d, 0x867e, 0x8680, 0x8681, 0x8682, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, 0x8689, 0x868a, 0x868b, 0x868c, 0x868d, 0x868e, 0x868f, 0x8690, 0x8691, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, 0x8697, 0x8698, 0x8699, 0x869a, 0x869b, 0x869c, 0x869d, 0x869e, 0x869f, 0x86a0, 0x86a1, 0x86a2, 0x86a3, 0x86a4, 0x86a5, 0x86a6, 0x86a7, 0x86a8, 0x86a9, 0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0x86af, 0x86b0, 0x86b1, 0x86b2, 0x86b3, 0x86b4, 0x86b5, 0x86b6, 0x86b7, 0x86b8, 0x86b9, 0x86ba, 0x86bb, 0x86bc, 0x86bd, 0x86be, 0x86bf, 0x86c0, 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf, 0x86d0, 0x86d1, 0x86d2, 0x86d3, 0x86d4, 0x86d5, 0x86d6, 0x86d7, 0x86d8, 0x86d9, 0x86da, 0x86db, 0x86dc, 0x86dd, 0x86de, 0x86df, 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e4, 0x86e5, 0x86e6, 0x86e7, 0x86e8, 0x86e9, 0x86ea, 0x86eb, 0x86ec, 0x86ed, 0x86ee, 0x86ef, 0x86f0, 0x86f1, 0x86f2, 0x86f3, 0x86f4, 0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0x86fa, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d, 0x874e, 0x874f, 0x8750, 0x8751, 0x8752, 0x8753, 0x8754, 0x8755, 0x8756, 0x8757, 0x8758, 0x8759, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f, 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d, 0x876e, 0x876f, 0x8770, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775, 0x8776, 0x8777, 0x8778, 0x8779, 0x877a, 0x877b, 0x877c, 0x877d, 0x877e, 0x8780, 0x8781, 0x8782, 0x8783, 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878a, 0x878b, 0x878c, 0x878d, 0x878e, 0x878f, 0x8790, 0x8791, 0x8792, 0x8793, 0x8794, 0x8795, 0x8796, 0x8797, 0x8798, 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0x879f, 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4, 0x87a5, 0x87a6, 0x87a7, 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, 0x87ae, 0x87af, 0x87b0, 0x87b1, 0x87b2, 0x87b3, 0x87b4, 0x87b5, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0x87bc, 0x87bd, 0x87be, 0x87bf, 0x87c0, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0x87c7, 0x87c8, 0x87c9, 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d1, 0x87d2, 0x87d3, 0x87d4, 0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87db, 0x87dc, 0x87dd, 0x87de, 0x87df, 0x87e0, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e5, 0x87e6, 0x87e7, 0x87e8, 0x87e9, 0x87ea, 0x87eb, 0x87ec, 0x87ed, 0x87ee, 0x87ef, 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87fe, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, 0x8846, 0x8847, 0x8848, 0x8849, 0x884a, 0x884b, 0x884c, 0x884d, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853, 0x8854, 0x8855, 0x8856, 0x8857, 0x8858, 0x8859, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f, 0x8860, 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, 0x8868, 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, 0x8870, 0x8871, 0x8872, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, 0x8878, 0x8879, 0x887a, 0x887b, 0x887c, 0x887d, 0x887e, 0x8880, 0x8881, 0x8882, 0x8883, 0x8884, 0x8885, 0x8886, 0x8887, 0x8888, 0x8889, 0x888a, 0x888b, 0x888c, 0x888d, 0x888e, 0x888f, 0x8890, 0x8891, 0x8892, 0x8893, 0x8894, 0x8895, 0x8896, 0x8897, 0x8898, 0x8899, 0x889a, 0x889b, 0x889c, 0x889d, 0x889e, 0x889f, 0x88a0, 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa, 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, 0x88b0, 0x88b1, 0x88b2, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bc, 0x88bd, 0x88be, 0x88bf, 0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0x88ca, 0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d2, 0x88d3, 0x88d4, 0x88d5, 0x88d6, 0x88d7, 0x88d8, 0x88d9, 0x88da, 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88df, 0x88e0, 0x88e1, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, 0x88e8, 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, 0x88f8, 0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941, 0x8942, 0x8943, 0x8944, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b, 0x895c, 0x895d, 0x895e, 0x895f, 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8966, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897b, 0x897c, 0x897d, 0x897e, 0x8980, 0x8981, 0x8982, 0x8983, 0x8984, 0x8985, 0x8986, 0x8987, 0x8988, 0x8989, 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5, 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, 0x89cd, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x89d2, 0x89d3, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, 0x89de, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, 0x89e8, 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed, 0x89ee, 0x89ef, 0x89f0, 0x89f1, 0x89f2, 0x89f3, 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb, 0x89fc, 0x89fd, 0x89fe, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46, 0x8a47, 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f, 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67, 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f, 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77, 0x8a78, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a80, 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89, 0x8a8a, 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94, 0x8a95, 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0, 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x8b87, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97, 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f, 0x8ba0, 0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, 0x8ba8, 0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad, 0x8bae, 0x8baf, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, 0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3, 0x8bc4, 0x8bc5, 0x8bc6, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb, 0x8bcc, 0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda, 0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2, 0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea, 0x8beb, 0x8bec, 0x8bed, 0x8bee, 0x8bef, 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe, 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47, 0x8c48, 0x8c49, 0x8c4a, 0x8c4b, 0x8c4c, 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54, 0x8c55, 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5a, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e, 0x8c5f, 0x8c60, 0x8c61, 0x8c62, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72, 0x8c73, 0x8c74, 0x8c75, 0x8c76, 0x8c77, 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e, 0x8c80, 0x8c81, 0x8c82, 0x8c83, 0x8c84, 0x8c85, 0x8c86, 0x8c87, 0x8c88, 0x8c89, 0x8c8a, 0x8c8b, 0x8c8c, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0x8c94, 0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d, 0x8c9e, 0x8c9f, 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe, 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe, 0x8d40, 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47, 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f, 0x8d50, 0x8d51, 0x8d52, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57, 0x8d58, 0x8d59, 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f, 0x8d60, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, 0x8d67, 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c, 0x8d6d, 0x8d6e, 0x8d6f, 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, 0x8d77, 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d80, 0x8d81, 0x8d82, 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, 0x8d88, 0x8d89, 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f, 0x8d90, 0x8d91, 0x8d92, 0x8d93, 0x8d94, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99, 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8d9f, 0x8da0, 0x8da1, 0x8da2, 0x8da3, 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0x8db4, 0x8db5, 0x8db6, 0x8db7, 0x8db8, 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, 0x8dd0, 0x8dd1, 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, 0x8dd8, 0x8dd9, 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, 0x8de1, 0x8de2, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, 0x8df0, 0x8df1, 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, 0x8df8, 0x8df9, 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, 0x8dfe, 0x8e40, 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, 0x8e48, 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50, 0x8e51, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0x8e63, 0x8e64, 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0x8e69, 0x8e6a, 0x8e6b, 0x8e6c, 0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e72, 0x8e73, 0x8e74, 0x8e75, 0x8e76, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7c, 0x8e7d, 0x8e7e, 0x8e80, 0x8e81, 0x8e82, 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0x8e88, 0x8e89, 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e8f, 0x8e90, 0x8e91, 0x8e92, 0x8e93, 0x8e94, 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f, 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8eab, 0x8eac, 0x8ead, 0x8eae, 0x8eaf, 0x8eb0, 0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4, 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65, 0x8f66, 0x8f67, 0x8f68, 0x8f69, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6d, 0x8f6e, 0x8f6f, 0x8f70, 0x8f71, 0x8f72, 0x8f73, 0x8f74, 0x8f75, 0x8f76, 0x8f77, 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d, 0x8f7e, 0x8f80, 0x8f81, 0x8f82, 0x8f83, 0x8f84, 0x8f85, 0x8f86, 0x8f87, 0x8f88, 0x8f89, 0x8f8a, 0x8f8b, 0x8f8c, 0x8f8d, 0x8f8e, 0x8f8f, 0x8f90, 0x8f91, 0x8f92, 0x8f93, 0x8f94, 0x8f95, 0x8f96, 0x8f97, 0x8f98, 0x8f99, 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e, 0x8f9f, 0x8fa0, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, 0x8fad, 0x8fae, 0x8faf, 0x8fb0, 0x8fb1, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb6, 0x8fb7, 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, 0x8fbe, 0x8fbf, 0x8fc0, 0x8fc1, 0x8fc2, 0x8fc3, 0x8fc4, 0x8fc5, 0x8fc6, 0x8fc7, 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fce, 0x8fcf, 0x8fd0, 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0x8fd6, 0x8fd7, 0x8fd8, 0x8fd9, 0x8fda, 0x8fdb, 0x8fdc, 0x8fdd, 0x8fde, 0x8fdf, 0x8fe0, 0x8fe1, 0x8fe2, 0x8fe3, 0x8fe4, 0x8fe5, 0x8fe6, 0x8fe7, 0x8fe8, 0x8fe9, 0x8fea, 0x8feb, 0x8fec, 0x8fed, 0x8fee, 0x8fef, 0x8ff0, 0x8ff1, 0x8ff2, 0x8ff3, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ff7, 0x8ff8, 0x8ff9, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffd, 0x8ffe, 0x9040, 0x9041, 0x9042, 0x9043, 0x9044, 0x9045, 0x9046, 0x9047, 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904d, 0x904e, 0x904f, 0x9050, 0x9051, 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0x9057, 0x9058, 0x9059, 0x905a, 0x905b, 0x905c, 0x905d, 0x905e, 0x905f, 0x9060, 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, 0x9068, 0x9069, 0x906a, 0x906b, 0x906c, 0x906d, 0x906e, 0x906f, 0x9070, 0x9071, 0x9072, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907d, 0x907e, 0x9080, 0x9081, 0x9082, 0x9083, 0x9084, 0x9085, 0x9086, 0x9087, 0x9088, 0x9089, 0x908a, 0x908b, 0x908c, 0x908d, 0x908e, 0x908f, 0x9090, 0x9091, 0x9092, 0x9093, 0x9094, 0x9095, 0x9096, 0x9097, 0x9098, 0x9099, 0x909a, 0x909b, 0x909c, 0x909d, 0x909e, 0x909f, 0x90a0, 0x90a1, 0x90a2, 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0x90aa, 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, 0x90b0, 0x90b1, 0x90b2, 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, 0x90b8, 0x90b9, 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90be, 0x90bf, 0x90c0, 0x90c1, 0x90c2, 0x90c3, 0x90c4, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d2, 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0x90d7, 0x90d8, 0x90d9, 0x90da, 0x90db, 0x90dc, 0x90dd, 0x90de, 0x90df, 0x90e0, 0x90e1, 0x90e2, 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, 0x90e8, 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0x90f8, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140, 0x9141, 0x9142, 0x9143, 0x9144, 0x9145, 0x9146, 0x9147, 0x9148, 0x9149, 0x914a, 0x914b, 0x914c, 0x914d, 0x914e, 0x914f, 0x9150, 0x9151, 0x9152, 0x9153, 0x9154, 0x9155, 0x9156, 0x9157, 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, 0x915e, 0x915f, 0x9160, 0x9161, 0x9162, 0x9163, 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b, 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173, 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, 0x917a, 0x917b, 0x917c, 0x917d, 0x917e, 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0x9187, 0x9188, 0x9189, 0x918a, 0x918b, 0x918c, 0x918d, 0x918e, 0x918f, 0x9190, 0x9191, 0x9192, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919a, 0x919b, 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5, 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad, 0x91ae, 0x91af, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb, 0x91bc, 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf, 0x91d0, 0x91d1, 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5, 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x91fe, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e, 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e, 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e, 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9274, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286, 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928e, 0x928f, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297, 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f, 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8, 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8, 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0, 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x9340, 0x9341, 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x9380, 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b, 0x938c, 0x938d, 0x938e, 0x938f, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d, 0x939e, 0x939f, 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5, 0x93d6, 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de, 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee, 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946b, 0x946c, 0x946d, 0x946e, 0x946f, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486, 0x9487, 0x9488, 0x9489, 0x948a, 0x948b, 0x948c, 0x948d, 0x948e, 0x948f, 0x9490, 0x9491, 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497, 0x9498, 0x9499, 0x949a, 0x949b, 0x949c, 0x949d, 0x949e, 0x949f, 0x94a0, 0x94a1, 0x94a2, 0x94a3, 0x94a4, 0x94a5, 0x94a6, 0x94a7, 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, 0x94ad, 0x94ae, 0x94af, 0x94b0, 0x94b1, 0x94b2, 0x94b3, 0x94b4, 0x94b5, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, 0x94be, 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6, 0x94c7, 0x94c8, 0x94c9, 0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94cf, 0x94d0, 0x94d1, 0x94d2, 0x94d3, 0x94d4, 0x94d5, 0x94d6, 0x94d7, 0x94d8, 0x94d9, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de, 0x94df, 0x94e0, 0x94e1, 0x94e2, 0x94e3, 0x94e4, 0x94e5, 0x94e6, 0x94e7, 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, 0x94ed, 0x94ee, 0x94ef, 0x94f0, 0x94f1, 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6, 0x94f7, 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, 0x94fe, 0x9540, 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547, 0x9548, 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f, 0x9550, 0x9551, 0x9552, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557, 0x9558, 0x9559, 0x955a, 0x955b, 0x955c, 0x955d, 0x955e, 0x955f, 0x9560, 0x9561, 0x9562, 0x9563, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956d, 0x956e, 0x956f, 0x9570, 0x9571, 0x9572, 0x9573, 0x9574, 0x9575, 0x9576, 0x9577, 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x9580, 0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f, 0x9590, 0x9591, 0x9592, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959a, 0x959b, 0x959c, 0x959d, 0x959e, 0x959f, 0x95a0, 0x95a1, 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1, 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0x95ed, 0x95ee, 0x95ef, 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4, 0x95f5, 0x95f6, 0x95f7, 0x95f8, 0x95f9, 0x95fa, 0x95fb, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642, 0x9643, 0x9644, 0x9645, 0x9646, 0x9647, 0x9648, 0x9649, 0x964a, 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, 0x9658, 0x9659, 0x965a, 0x965b, 0x965c, 0x965d, 0x965e, 0x965f, 0x9660, 0x9661, 0x9662, 0x9663, 0x9664, 0x9665, 0x9666, 0x9667, 0x9668, 0x9669, 0x966a, 0x966b, 0x966c, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9672, 0x9673, 0x9674, 0x9675, 0x9676, 0x9677, 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9685, 0x9686, 0x9687, 0x9688, 0x9689, 0x968a, 0x968b, 0x968c, 0x968d, 0x968e, 0x968f, 0x9690, 0x9691, 0x9692, 0x9693, 0x9694, 0x9695, 0x9696, 0x9697, 0x9698, 0x9699, 0x969a, 0x969b, 0x969c, 0x969d, 0x969e, 0x969f, 0x96a0, 0x96a1, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac, 0x96ad, 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4, 0x96b5, 0x96b6, 0x96b7, 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc, 0x96bd, 0x96be, 0x96bf, 0x96c0, 0x96c1, 0x96c2, 0x96c3, 0x96c4, 0x96c5, 0x96c6, 0x96c7, 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0x96cd, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0x96d2, 0x96d3, 0x96d4, 0x96d5, 0x96d6, 0x96d7, 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec, 0x96ed, 0x96ee, 0x96ef, 0x96f0, 0x96f1, 0x96f2, 0x96f3, 0x96f4, 0x96f5, 0x96f6, 0x96f7, 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755, 0x9756, 0x9757, 0x9758, 0x9759, 0x975a, 0x975b, 0x975c, 0x975d, 0x975e, 0x975f, 0x9760, 0x9761, 0x9762, 0x9763, 0x9764, 0x9765, 0x9766, 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9772, 0x9773, 0x9774, 0x9775, 0x9776, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d, 0x977e, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, 0x9787, 0x9788, 0x9789, 0x978a, 0x978b, 0x978c, 0x978d, 0x978e, 0x978f, 0x9790, 0x9791, 0x9792, 0x9793, 0x9794, 0x9795, 0x9796, 0x9797, 0x9798, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, 0x979e, 0x979f, 0x97a0, 0x97a1, 0x97a2, 0x97a3, 0x97a4, 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, 0x97ad, 0x97ae, 0x97af, 0x97b0, 0x97b1, 0x97b2, 0x97b3, 0x97b4, 0x97b5, 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf, 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf, 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df, 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e6, 0x97e7, 0x97e8, 0x97e9, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7, 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, 0x9878, 0x9879, 0x987a, 0x987b, 0x987c, 0x987d, 0x987e, 0x9880, 0x9881, 0x9882, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, 0x9888, 0x9889, 0x988a, 0x988b, 0x988c, 0x988d, 0x988e, 0x988f, 0x9890, 0x9891, 0x9892, 0x9893, 0x9894, 0x9895, 0x9896, 0x9897, 0x9898, 0x9899, 0x989a, 0x989b, 0x989c, 0x989d, 0x989e, 0x989f, 0x98a0, 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, 0x98a8, 0x98a9, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0x98d1, 0x98d2, 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, 0x98d8, 0x98d9, 0x98da, 0x98db, 0x98dc, 0x98dd, 0x98de, 0x98df, 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0x98e8, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x9940, 0x9941, 0x9942, 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c, 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9963, 0x9964, 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, 0x9979, 0x997a, 0x997b, 0x997c, 0x997d, 0x997e, 0x9980, 0x9981, 0x9982, 0x9983, 0x9984, 0x9985, 0x9986, 0x9987, 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, 0x998d, 0x998e, 0x998f, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995, 0x9996, 0x9997, 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f, 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76, 0x9a77, 0x9a78, 0x9a79, 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a7e, 0x9a80, 0x9a81, 0x9a82, 0x9a83, 0x9a84, 0x9a85, 0x9a86, 0x9a87, 0x9a88, 0x9a89, 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8d, 0x9a8e, 0x9a8f, 0x9a90, 0x9a91, 0x9a92, 0x9a93, 0x9a94, 0x9a95, 0x9a96, 0x9a97, 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, 0x9a9c, 0x9a9d, 0x9a9e, 0x9a9f, 0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, 0x9aa8, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab0, 0x9ab1, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8, 0x9ab9, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, 0x9ac0, 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8, 0x9ac9, 0x9aca, 0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, 0x9ade, 0x9adf, 0x9ae0, 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae8, 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, 0x9af0, 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9, 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9afe, 0x9b40, 0x9b41, 0x9b42, 0x9b43, 0x9b44, 0x9b45, 0x9b46, 0x9b47, 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4d, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51, 0x9b52, 0x9b53, 0x9b54, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, 0x9b7a, 0x9b7b, 0x9b7c, 0x9b7d, 0x9b7e, 0x9b80, 0x9b81, 0x9b82, 0x9b83, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b92, 0x9b93, 0x9b94, 0x9b95, 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3, 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb, 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3, 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3, 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb, 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3, 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb, 0x9bec, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb, 0x9bfc, 0x9bfd, 0x9bfe, 0x9c40, 0x9c41, 0x9c42, 0x9c43, 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0x9c53, 0x9c54, 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b, 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74, 0x9c75, 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c, 0x9c7d, 0x9c7e, 0x9c80, 0x9c81, 0x9c82, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x9c89, 0x9c8a, 0x9c8b, 0x9c8c, 0x9c8d, 0x9c8e, 0x9c8f, 0x9c90, 0x9c91, 0x9c92, 0x9c93, 0x9c94, 0x9c95, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9c9a, 0x9c9b, 0x9c9c, 0x9c9d, 0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, 0x9cad, 0x9cae, 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, 0x9cbe, 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd1, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9cde, 0x9cdf, 0x9ce0, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0x9d5a, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d80, 0x9d81, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, 0x9d91, 0x9d92, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99, 0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0x9da1, 0x9da2, 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41, 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, 0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, 0x9e58, 0x9e59, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, 0x9e60, 0x9e61, 0x9e62, 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, 0x9e6f, 0x9e70, 0x9e71, 0x9e72, 0x9e73, 0x9e74, 0x9e75, 0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e7e, 0x9e80, 0x9e81, 0x9e82, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e87, 0x9e88, 0x9e89, 0x9e8a, 0x9e8b, 0x9e8c, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e92, 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9d, 0x9e9e, 0x9e9f, 0x9ea0, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4, 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf, 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc, 0x9ecd, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed1, 0x9ed2, 0x9ed3, 0x9ed4, 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed8, 0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ede, 0x9edf, 0x9ee0, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4, 0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9eef, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, 0x9efe, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50, 0x9f51, 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f80, 0x9f81, 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89, 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95, 0x9f96, 0x9f97, 0x9f98, 0x9f99, 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, 0x9f9e, 0x9f9f, 0x9fa0, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7, 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0x9fae, 0x9faf, 0x9fb0, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, 0x9fb5, 0x9fb6, 0x9fb7, 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0x9fbe, 0x9fbf, 0x9fc0, 0x9fc1, 0x9fc2, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0x9fc7, 0x9fc8, 0x9fc9, 0x9fca, 0x9fcb, 0x9fcc, 0x9fcd, 0x9fce, 0x9fcf, 0x9fd0, 0x9fd1, 0x9fd2, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7, 0x9fd8, 0x9fd9, 0x9fda, 0x9fdb, 0x9fdc, 0x9fdd, 0x9fde, 0x9fdf, 0x9fe0, 0x9fe1, 0x9fe2, 0x9fe3, 0x9fe4, 0x9fe5, 0x9fe6, 0x9fe7, 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec, 0x9fed, 0x9fee, 0x9fef, 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3, 0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7, 0x9ff8, 0x9ff9, 0x9ffa, 0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xa040, 0xa041, 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048, 0xa049, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xa04e, 0xa04f, 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xa055, 0xa056, 0xa057, 0xa058, 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, 0xa05e, 0xa05f, 0xa060, 0xa061, 0xa062, 0xa063, 0xa064, 0xa065, 0xa066, 0xa067, 0xa068, 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070, 0xa071, 0xa072, 0xa073, 0xa074, 0xa075, 0xa076, 0xa077, 0xa078, 0xa079, 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa07e, 0xa080, 0xa081, 0xa082, 0xa083, 0xa084, 0xa085, 0xa086, 0xa087, 0xa088, 0xa089, 0xa08a, 0xa08b, 0xa08c, 0xa08d, 0xa08e, 0xa08f, 0xa090, 0xa091, 0xa092, 0xa093, 0xa094, 0xa095, 0xa096, 0xa097, 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, 0xa09e, 0xa09f, 0xa0a0, 0xa0a1, 0xa0a2, 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8, 0xa0a9, 0xa0aa, 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, 0xa0b0, 0xa0b1, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, 0xa0b8, 0xa0b9, 0xa0ba, 0xa0bb, 0xa0bc, 0xa0bd, 0xa0be, 0xa0bf, 0xa0c0, 0xa0c1, 0xa0c2, 0xa0c3, 0xa0c4, 0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9, 0xa0ca, 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3, 0xa0d4, 0xa0d5, 0xa0d6, 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, 0xa0df, 0xa0e0, 0xa0e1, 0xa0e2, 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, 0xa0f0, 0xa0f1, 0xa0f2, 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0f9, 0xa0fa, 0xa0fb, 0xa0fc, 0xa0fd, 0xa0fe, 0xaa40, 0xaa41, 0xaa42, 0xaa43, 0xaa44, 0xaa45, 0xaa46, 0xaa47, 0xaa48, 0xaa49, 0xaa4a, 0xaa4b, 0xaa4c, 0xaa4d, 0xaa4e, 0xaa4f, 0xaa50, 0xaa51, 0xaa52, 0xaa53, 0xaa54, 0xaa55, 0xaa56, 0xaa57, 0xaa58, 0xaa59, 0xaa5a, 0xaa5b, 0xaa5c, 0xaa5d, 0xaa5e, 0xaa5f, 0xaa60, 0xaa61, 0xaa62, 0xaa63, 0xaa64, 0xaa65, 0xaa66, 0xaa67, 0xaa68, 0xaa69, 0xaa6a, 0xaa6b, 0xaa6c, 0xaa6d, 0xaa6e, 0xaa6f, 0xaa70, 0xaa71, 0xaa72, 0xaa73, 0xaa74, 0xaa75, 0xaa76, 0xaa77, 0xaa78, 0xaa79, 0xaa7a, 0xaa7b, 0xaa7c, 0xaa7d, 0xaa7e, 0xaa80, 0xaa81, 0xaa82, 0xaa83, 0xaa84, 0xaa85, 0xaa86, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xaa8b, 0xaa8c, 0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa92, 0xaa93, 0xaa94, 0xaa95, 0xaa96, 0xaa97, 0xaa98, 0xaa99, 0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d, 0xaa9e, 0xaa9f, 0xaaa0, 0xab40, 0xab41, 0xab42, 0xab43, 0xab44, 0xab45, 0xab46, 0xab47, 0xab48, 0xab49, 0xab4a, 0xab4b, 0xab4c, 0xab4d, 0xab4e, 0xab4f, 0xab50, 0xab51, 0xab52, 0xab53, 0xab54, 0xab55, 0xab56, 0xab57, 0xab58, 0xab59, 0xab5a, 0xab5b, 0xab5c, 0xab5d, 0xab5e, 0xab5f, 0xab60, 0xab61, 0xab62, 0xab63, 0xab64, 0xab65, 0xab66, 0xab67, 0xab68, 0xab69, 0xab6a, 0xab6b, 0xab6c, 0xab6d, 0xab6e, 0xab6f, 0xab70, 0xab71, 0xab72, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79, 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab7e, 0xab80, 0xab81, 0xab82, 0xab83, 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, 0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab92, 0xab93, 0xab94, 0xab95, 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0, 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, 0xac48, 0xac49, 0xac4a, 0xac4b, 0xac4c, 0xac4d, 0xac4e, 0xac4f, 0xac50, 0xac51, 0xac52, 0xac53, 0xac54, 0xac55, 0xac56, 0xac57, 0xac58, 0xac59, 0xac5a, 0xac5b, 0xac5c, 0xac5d, 0xac5e, 0xac5f, 0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xac65, 0xac66, 0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xac6f, 0xac70, 0xac71, 0xac72, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77, 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac80, 0xac81, 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xac87, 0xac88, 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91, 0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xac9e, 0xac9f, 0xaca0, 0xad40, 0xad41, 0xad42, 0xad43, 0xad44, 0xad45, 0xad46, 0xad47, 0xad48, 0xad49, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, 0xad55, 0xad56, 0xad57, 0xad58, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad61, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e, 0xad6f, 0xad70, 0xad71, 0xad72, 0xad73, 0xad74, 0xad75, 0xad76, 0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, 0xad7e, 0xad80, 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0xad88, 0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, 0xad8f, 0xad90, 0xad91, 0xad92, 0xad93, 0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xad9e, 0xad9f, 0xada0, 0xae40, 0xae41, 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48, 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xae4d, 0xae4e, 0xae4f, 0xae50, 0xae51, 0xae52, 0xae53, 0xae54, 0xae55, 0xae56, 0xae57, 0xae58, 0xae59, 0xae5a, 0xae5b, 0xae5c, 0xae5d, 0xae5e, 0xae5f, 0xae60, 0xae61, 0xae62, 0xae63, 0xae64, 0xae65, 0xae66, 0xae67, 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c, 0xae6d, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77, 0xae78, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d, 0xae7e, 0xae80, 0xae81, 0xae82, 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, 0xae88, 0xae89, 0xae8a, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae92, 0xae93, 0xae94, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, 0xaea0, 0xaf40, 0xaf41, 0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0xaf48, 0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f, 0xaf50, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d, 0xaf5e, 0xaf5f, 0xaf60, 0xaf61, 0xaf62, 0xaf63, 0xaf64, 0xaf65, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf72, 0xaf73, 0xaf74, 0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf79, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf80, 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86, 0xaf87, 0xaf88, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, 0xaf90, 0xaf91, 0xaf92, 0xaf93, 0xaf94, 0xaf95, 0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0xaf9c, 0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xb040, 0xb041, 0xb042, 0xb043, 0xb044, 0xb045, 0xb046, 0xb047, 0xb048, 0xb049, 0xb04a, 0xb04b, 0xb04c, 0xb04d, 0xb04e, 0xb04f, 0xb050, 0xb051, 0xb052, 0xb053, 0xb054, 0xb055, 0xb056, 0xb057, 0xb058, 0xb059, 0xb05a, 0xb05b, 0xb05c, 0xb05d, 0xb05e, 0xb05f, 0xb060, 0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, 0xb070, 0xb071, 0xb072, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb07b, 0xb07c, 0xb07d, 0xb07e, 0xb080, 0xb081, 0xb082, 0xb083, 0xb084, 0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xb091, 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xb09e, 0xb09f, 0xb0a0, 0xb140, 0xb141, 0xb142, 0xb143, 0xb144, 0xb145, 0xb146, 0xb147, 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb150, 0xb151, 0xb152, 0xb153, 0xb154, 0xb155, 0xb156, 0xb157, 0xb158, 0xb159, 0xb15a, 0xb15b, 0xb15c, 0xb15d, 0xb15e, 0xb15f, 0xb160, 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0xb178, 0xb179, 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb17e, 0xb180, 0xb181, 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xb187, 0xb188, 0xb189, 0xb18a, 0xb18b, 0xb18c, 0xb18d, 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb192, 0xb193, 0xb194, 0xb195, 0xb196, 0xb197, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, 0xb19e, 0xb19f, 0xb1a0, 0xb240, 0xb241, 0xb242, 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a, 0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d, 0xb25e, 0xb25f, 0xb260, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb268, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xb26e, 0xb26f, 0xb270, 0xb271, 0xb272, 0xb273, 0xb274, 0xb275, 0xb276, 0xb277, 0xb278, 0xb279, 0xb27a, 0xb27b, 0xb27c, 0xb27d, 0xb27e, 0xb280, 0xb281, 0xb282, 0xb283, 0xb284, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289, 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, 0xb290, 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297, 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, 0xb29e, 0xb29f, 0xb2a0, 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0xb354, 0xb355, 0xb356, 0xb357, 0xb358, 0xb359, 0xb35a, 0xb35b, 0xb35c, 0xb35d, 0xb35e, 0xb35f, 0xb360, 0xb361, 0xb362, 0xb363, 0xb364, 0xb365, 0xb366, 0xb367, 0xb368, 0xb369, 0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f, 0xb370, 0xb371, 0xb372, 0xb373, 0xb374, 0xb375, 0xb376, 0xb377, 0xb378, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb37e, 0xb380, 0xb381, 0xb382, 0xb383, 0xb384, 0xb385, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38c, 0xb38d, 0xb38e, 0xb38f, 0xb390, 0xb391, 0xb392, 0xb393, 0xb394, 0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb440, 0xb441, 0xb442, 0xb443, 0xb444, 0xb445, 0xb446, 0xb447, 0xb448, 0xb449, 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, 0xb450, 0xb451, 0xb452, 0xb453, 0xb454, 0xb455, 0xb456, 0xb457, 0xb458, 0xb459, 0xb45a, 0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f, 0xb460, 0xb461, 0xb462, 0xb463, 0xb464, 0xb465, 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46c, 0xb46d, 0xb46e, 0xb46f, 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d, 0xb47e, 0xb480, 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0xb488, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, 0xb48f, 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49d, 0xb49e, 0xb49f, 0xb4a0, 0xb540, 0xb541, 0xb542, 0xb543, 0xb544, 0xb545, 0xb546, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xb550, 0xb551, 0xb552, 0xb553, 0xb554, 0xb555, 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb55e, 0xb55f, 0xb560, 0xb561, 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577, 0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb580, 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586, 0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, 0xb594, 0xb595, 0xb596, 0xb597, 0xb598, 0xb599, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, 0xb5a0, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0xb648, 0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, 0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f, 0xb660, 0xb661, 0xb662, 0xb663, 0xb664, 0xb665, 0xb666, 0xb667, 0xb668, 0xb669, 0xb66a, 0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xb679, 0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688, 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, 0xb690, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697, 0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69c, 0xb69d, 0xb69e, 0xb69f, 0xb6a0, 0xb740, 0xb741, 0xb742, 0xb743, 0xb744, 0xb745, 0xb746, 0xb747, 0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, 0xb750, 0xb751, 0xb752, 0xb753, 0xb754, 0xb755, 0xb756, 0xb757, 0xb758, 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767, 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, 0xb76f, 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, 0xb77e, 0xb780, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb78f, 0xb790, 0xb791, 0xb792, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, 0xb798, 0xb799, 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb79e, 0xb79f, 0xb7a0, 0xb840, 0xb841, 0xb842, 0xb843, 0xb844, 0xb845, 0xb846, 0xb847, 0xb848, 0xb849, 0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f, 0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b, 0xb85c, 0xb85d, 0xb85e, 0xb85f, 0xb860, 0xb861, 0xb862, 0xb863, 0xb864, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86c, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xb871, 0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0xb878, 0xb879, 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb880, 0xb881, 0xb882, 0xb883, 0xb884, 0xb885, 0xb886, 0xb887, 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88d, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb892, 0xb893, 0xb894, 0xb895, 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, 0xb8a0, 0xb940, 0xb941, 0xb942, 0xb943, 0xb944, 0xb945, 0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xb94f, 0xb950, 0xb951, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957, 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, 0xb95e, 0xb95f, 0xb960, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xb968, 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d, 0xb96e, 0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0xb974, 0xb975, 0xb976, 0xb977, 0xb978, 0xb979, 0xb97a, 0xb97b, 0xb97c, 0xb97d, 0xb97e, 0xb980, 0xb981, 0xb982, 0xb983, 0xb984, 0xb985, 0xb986, 0xb987, 0xb988, 0xb989, 0xb98a, 0xb98b, 0xb98c, 0xb98d, 0xb98e, 0xb98f, 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, 0xb99f, 0xb9a0, 0xba40, 0xba41, 0xba42, 0xba43, 0xba44, 0xba45, 0xba46, 0xba47, 0xba48, 0xba49, 0xba4a, 0xba4b, 0xba4c, 0xba4d, 0xba4e, 0xba4f, 0xba50, 0xba51, 0xba52, 0xba53, 0xba54, 0xba55, 0xba56, 0xba57, 0xba58, 0xba59, 0xba5a, 0xba5b, 0xba5c, 0xba5d, 0xba5e, 0xba5f, 0xba60, 0xba61, 0xba62, 0xba63, 0xba64, 0xba65, 0xba66, 0xba67, 0xba68, 0xba69, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba70, 0xba71, 0xba72, 0xba73, 0xba74, 0xba75, 0xba76, 0xba77, 0xba78, 0xba79, 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba80, 0xba81, 0xba82, 0xba83, 0xba84, 0xba85, 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8c, 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44, 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb52, 0xbb53, 0xbb54, 0xbb55, 0xbb56, 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f, 0xbb70, 0xbb71, 0xbb72, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e, 0xbb80, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8d, 0xbb8e, 0xbb8f, 0xbb90, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, 0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e, 0xbb9f, 0xbba0, 0xbc40, 0xbc41, 0xbc42, 0xbc43, 0xbc44, 0xbc45, 0xbc46, 0xbc47, 0xbc48, 0xbc49, 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e, 0xbc4f, 0xbc50, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a, 0xbc5b, 0xbc5c, 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77, 0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, 0xbc87, 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc94, 0xbc95, 0xbc96, 0xbc97, 0xbc98, 0xbc99, 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca0, 0xbd40, 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48, 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, 0xbd50, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd58, 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f, 0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd90, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, 0xbda0, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, 0xbe47, 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe54, 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, 0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, 0xbe6f, 0xbe70, 0xbe71, 0xbe72, 0xbe73, 0xbe74, 0xbe75, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe7e, 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, 0xbe8e, 0xbe8f, 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97, 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f, 0xbea0, 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46, 0xbf47, 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, 0xbf51, 0xbf52, 0xbf53, 0xbf54, 0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, 0xbf80, 0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, 0xbf91, 0xbf92, 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xc040, 0xc041, 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051, 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc058, 0xc059, 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f, 0xc060, 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068, 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc080, 0xc081, 0xc082, 0xc083, 0xc084, 0xc085, 0xc086, 0xc087, 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc091, 0xc092, 0xc093, 0xc094, 0xc095, 0xc096, 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, 0xc09f, 0xc0a0, 0xc140, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, 0xc147, 0xc148, 0xc149, 0xc14a, 0xc14b, 0xc14c, 0xc14d, 0xc14e, 0xc14f, 0xc150, 0xc151, 0xc152, 0xc153, 0xc154, 0xc155, 0xc156, 0xc157, 0xc158, 0xc159, 0xc15a, 0xc15b, 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161, 0xc162, 0xc163, 0xc164, 0xc165, 0xc166, 0xc167, 0xc168, 0xc169, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xc170, 0xc171, 0xc172, 0xc173, 0xc174, 0xc175, 0xc176, 0xc177, 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, 0xc185, 0xc186, 0xc187, 0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18c, 0xc18d, 0xc18e, 0xc18f, 0xc190, 0xc191, 0xc192, 0xc193, 0xc194, 0xc195, 0xc196, 0xc197, 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xc19f, 0xc1a0, 0xc240, 0xc241, 0xc242, 0xc243, 0xc244, 0xc245, 0xc246, 0xc247, 0xc248, 0xc249, 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f, 0xc250, 0xc251, 0xc252, 0xc253, 0xc254, 0xc255, 0xc256, 0xc257, 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f, 0xc260, 0xc261, 0xc262, 0xc263, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26c, 0xc26d, 0xc26e, 0xc26f, 0xc270, 0xc271, 0xc272, 0xc273, 0xc274, 0xc275, 0xc276, 0xc277, 0xc278, 0xc279, 0xc27a, 0xc27b, 0xc27c, 0xc27d, 0xc27e, 0xc280, 0xc281, 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, 0xc28e, 0xc28f, 0xc290, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297, 0xc298, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d, 0xc29e, 0xc29f, 0xc2a0, 0xc340, 0xc341, 0xc342, 0xc343, 0xc344, 0xc345, 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, 0xc34d, 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352, 0xc353, 0xc354, 0xc355, 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c, 0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0xc368, 0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e, 0xc36f, 0xc370, 0xc371, 0xc372, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc378, 0xc379, 0xc37a, 0xc37b, 0xc37c, 0xc37d, 0xc37e, 0xc380, 0xc381, 0xc382, 0xc383, 0xc384, 0xc385, 0xc386, 0xc387, 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc392, 0xc393, 0xc394, 0xc395, 0xc396, 0xc397, 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc3a0, 0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, 0xc448, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f, 0xc450, 0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457, 0xc458, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, 0xc45f, 0xc460, 0xc461, 0xc462, 0xc463, 0xc464, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, 0xc46a, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xc475, 0xc476, 0xc477, 0xc478, 0xc479, 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc480, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, 0xc487, 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490, 0xc491, 0xc492, 0xc493, 0xc494, 0xc495, 0xc496, 0xc497, 0xc498, 0xc499, 0xc49a, 0xc49b, 0xc49c, 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc540, 0xc541, 0xc542, 0xc543, 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a, 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f, 0xc550, 0xc551, 0xc552, 0xc553, 0xc554, 0xc555, 0xc556, 0xc557, 0xc558, 0xc559, 0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc55e, 0xc55f, 0xc560, 0xc561, 0xc562, 0xc563, 0xc564, 0xc565, 0xc566, 0xc567, 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f, 0xc570, 0xc571, 0xc572, 0xc573, 0xc574, 0xc575, 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, 0xc57b, 0xc57c, 0xc57d, 0xc57e, 0xc580, 0xc581, 0xc582, 0xc583, 0xc584, 0xc585, 0xc586, 0xc587, 0xc588, 0xc589, 0xc58a, 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591, 0xc592, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597, 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f, 0xc5a0, 0xc640, 0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646, 0xc647, 0xc648, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, 0xc650, 0xc651, 0xc652, 0xc653, 0xc654, 0xc655, 0xc656, 0xc657, 0xc658, 0xc659, 0xc65a, 0xc65b, 0xc65c, 0xc65d, 0xc65e, 0xc65f, 0xc660, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, 0xc666, 0xc667, 0xc668, 0xc669, 0xc66a, 0xc66b, 0xc66c, 0xc66d, 0xc66e, 0xc66f, 0xc670, 0xc671, 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, 0xc67e, 0xc680, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, 0xc688, 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d, 0xc68e, 0xc68f, 0xc690, 0xc691, 0xc692, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xc699, 0xc69a, 0xc69b, 0xc69c, 0xc69d, 0xc69e, 0xc69f, 0xc6a0, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc780, 0xc781, 0xc782, 0xc783, 0xc784, 0xc785, 0xc786, 0xc787, 0xc788, 0xc789, 0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f, 0xc790, 0xc791, 0xc792, 0xc793, 0xc794, 0xc795, 0xc796, 0xc797, 0xc798, 0xc799, 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc79e, 0xc79f, 0xc7a0, 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a, 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877, 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc880, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, 0xc886, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0xc88c, 0xc88d, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc892, 0xc893, 0xc894, 0xc895, 0xc896, 0xc897, 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89d, 0xc89e, 0xc89f, 0xc8a0, 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xc945, 0xc946, 0xc947, 0xc948, 0xc949, 0xc94a, 0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc950, 0xc951, 0xc952, 0xc953, 0xc954, 0xc955, 0xc956, 0xc957, 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f, 0xc960, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xc967, 0xc968, 0xc969, 0xc96a, 0xc96b, 0xc96c, 0xc96d, 0xc96e, 0xc96f, 0xc970, 0xc971, 0xc972, 0xc973, 0xc974, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, 0xc97a, 0xc97b, 0xc97c, 0xc97d, 0xc97e, 0xc980, 0xc981, 0xc982, 0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc98e, 0xc98f, 0xc990, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997, 0xc998, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d, 0xc99e, 0xc99f, 0xc9a0, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, 0xca45, 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4c, 0xca4d, 0xca4e, 0xca4f, 0xca50, 0xca51, 0xca52, 0xca53, 0xca54, 0xca55, 0xca56, 0xca57, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, 0xca5e, 0xca5f, 0xca60, 0xca61, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0xca68, 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e, 0xca6f, 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, 0xca80, 0xca81, 0xca82, 0xca83, 0xca84, 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c, 0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, 0xca95, 0xca96, 0xca97, 0xca98, 0xca99, 0xca9a, 0xca9b, 0xca9c, 0xca9d, 0xca9e, 0xca9f, 0xcaa0, 0xcb40, 0xcb41, 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57, 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d, 0xcb5e, 0xcb5f, 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e, 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xcb8e, 0xcb8f, 0xcb90, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, 0xcba0, 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xcc44, 0xcc45, 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xcc4a, 0xcc4b, 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52, 0xcc53, 0xcc54, 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xcc59, 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc60, 0xcc61, 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, 0xcc70, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77, 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91, 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, 0xcc98, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcc9e, 0xcc9f, 0xcca0, 0xcd40, 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, 0xcd50, 0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0xcd5c, 0xcd5d, 0xcd5e, 0xcd5f, 0xcd60, 0xcd61, 0xcd62, 0xcd63, 0xcd64, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6c, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, 0xcd71, 0xcd72, 0xcd73, 0xcd74, 0xcd75, 0xcd76, 0xcd77, 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87, 0xcd88, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xcd94, 0xcd95, 0xcd96, 0xcd97, 0xcd98, 0xcd99, 0xcd9a, 0xcd9b, 0xcd9c, 0xcd9d, 0xcd9e, 0xcd9f, 0xcda0, 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51, 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xce5f, 0xce60, 0xce61, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67, 0xce68, 0xce69, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce72, 0xce73, 0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xce7a, 0xce7b, 0xce7c, 0xce7d, 0xce7e, 0xce80, 0xce81, 0xce82, 0xce83, 0xce84, 0xce85, 0xce86, 0xce87, 0xce88, 0xce89, 0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0xce90, 0xce91, 0xce92, 0xce93, 0xce94, 0xce95, 0xce96, 0xce97, 0xce98, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xce9e, 0xce9f, 0xcea0, 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47, 0xcf48, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xcf57, 0xcf58, 0xcf59, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, 0xcf5e, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf64, 0xcf65, 0xcf66, 0xcf67, 0xcf68, 0xcf69, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xcf6e, 0xcf6f, 0xcf70, 0xcf71, 0xcf72, 0xcf73, 0xcf74, 0xcf75, 0xcf76, 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf80, 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85, 0xcf86, 0xcf87, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92, 0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xd040, 0xd041, 0xd042, 0xd043, 0xd044, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049, 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, 0xd050, 0xd051, 0xd052, 0xd053, 0xd054, 0xd055, 0xd056, 0xd057, 0xd058, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f, 0xd060, 0xd061, 0xd062, 0xd063, 0xd064, 0xd065, 0xd066, 0xd067, 0xd068, 0xd069, 0xd06a, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, 0xd071, 0xd072, 0xd073, 0xd074, 0xd075, 0xd076, 0xd077, 0xd078, 0xd079, 0xd07a, 0xd07b, 0xd07c, 0xd07d, 0xd07e, 0xd080, 0xd081, 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, 0xd097, 0xd098, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, 0xd09e, 0xd09f, 0xd0a0, 0xd140, 0xd141, 0xd142, 0xd143, 0xd144, 0xd145, 0xd146, 0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14c, 0xd14d, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd152, 0xd153, 0xd154, 0xd155, 0xd156, 0xd157, 0xd158, 0xd159, 0xd15a, 0xd15b, 0xd15c, 0xd15d, 0xd15e, 0xd15f, 0xd160, 0xd161, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, 0xd16f, 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, 0xd178, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, 0xd17e, 0xd180, 0xd181, 0xd182, 0xd183, 0xd184, 0xd185, 0xd186, 0xd187, 0xd188, 0xd189, 0xd18a, 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f, 0xd190, 0xd191, 0xd192, 0xd193, 0xd194, 0xd195, 0xd196, 0xd197, 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e, 0xd19f, 0xd1a0, 0xd240, 0xd241, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, 0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd27e, 0xd280, 0xd281, 0xd282, 0xd283, 0xd284, 0xd285, 0xd286, 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, 0xd28f, 0xd290, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, 0xd29e, 0xd29f, 0xd2a0, 0xd340, 0xd341, 0xd342, 0xd343, 0xd344, 0xd345, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, 0xd35e, 0xd35f, 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368, 0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378, 0xd379, 0xd37a, 0xd37b, 0xd37c, 0xd37d, 0xd37e, 0xd380, 0xd381, 0xd382, 0xd383, 0xd384, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38c, 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f, 0xd3a0, 0xd440, 0xd441, 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455, 0xd456, 0xd457, 0xd458, 0xd459, 0xd45a, 0xd45b, 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xd460, 0xd461, 0xd462, 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, 0xd468, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46d, 0xd46e, 0xd46f, 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd480, 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd488, 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f, 0xd490, 0xd491, 0xd492, 0xd493, 0xd494, 0xd495, 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, 0xd4a0, 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c, 0xd54d, 0xd54e, 0xd54f, 0xd550, 0xd551, 0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, 0xd558, 0xd559, 0xd55a, 0xd55b, 0xd55c, 0xd55d, 0xd55e, 0xd55f, 0xd560, 0xd561, 0xd562, 0xd563, 0xd564, 0xd565, 0xd566, 0xd567, 0xd568, 0xd569, 0xd56a, 0xd56b, 0xd56c, 0xd56d, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, 0xd574, 0xd575, 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a, 0xd57b, 0xd57c, 0xd57d, 0xd57e, 0xd580, 0xd581, 0xd582, 0xd583, 0xd584, 0xd585, 0xd586, 0xd587, 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, 0xd59f, 0xd5a0, 0xd640, 0xd641, 0xd642, 0xd643, 0xd644, 0xd645, 0xd646, 0xd647, 0xd648, 0xd649, 0xd64a, 0xd64b, 0xd64c, 0xd64d, 0xd64e, 0xd64f, 0xd650, 0xd651, 0xd652, 0xd653, 0xd654, 0xd655, 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a, 0xd65b, 0xd65c, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xd663, 0xd664, 0xd665, 0xd666, 0xd667, 0xd668, 0xd669, 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd670, 0xd671, 0xd672, 0xd673, 0xd674, 0xd675, 0xd676, 0xd677, 0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd680, 0xd681, 0xd682, 0xd683, 0xd684, 0xd685, 0xd686, 0xd687, 0xd688, 0xd689, 0xd68a, 0xd68b, 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692, 0xd693, 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, 0xd69b, 0xd69c, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd740, 0xd741, 0xd742, 0xd743, 0xd744, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749, 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd750, 0xd751, 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757, 0xd758, 0xd759, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xd760, 0xd761, 0xd762, 0xd763, 0xd764, 0xd765, 0xd766, 0xd767, 0xd768, 0xd769, 0xd76a, 0xd76b, 0xd76c, 0xd76d, 0xd76e, 0xd76f, 0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, 0xd776, 0xd777, 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xd77d, 0xd77e, 0xd780, 0xd781, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd788, 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f, 0xd790, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd798, 0xd799, 0xd79a, 0xd79b, 0xd79c, 0xd79d, 0xd79e, 0xd79f, 0xd7a0, 0xd840, 0xd841, 0xd842, 0xd843, 0xd844, 0xd845, 0xd846, 0xd847, 0xd848, 0xd849, 0xd84a, 0xd84b, 0xd84c, 0xd84d, 0xd84e, 0xd84f, 0xd850, 0xd851, 0xd852, 0xd853, 0xd854, 0xd855, 0xd856, 0xd857, 0xd858, 0xd859, 0xd85a, 0xd85b, 0xd85c, 0xd85d, 0xd85e, 0xd85f, 0xd860, 0xd861, 0xd862, 0xd863, 0xd864, 0xd865, 0xd866, 0xd867, 0xd868, 0xd869, 0xd86a, 0xd86b, 0xd86c, 0xd86d, 0xd86e, 0xd86f, 0xd870, 0xd871, 0xd872, 0xd873, 0xd874, 0xd875, 0xd876, 0xd877, 0xd878, 0xd879, 0xd87a, 0xd87b, 0xd87c, 0xd87d, 0xd87e, 0xd880, 0xd881, 0xd882, 0xd883, 0xd884, 0xd885, 0xd886, 0xd887, 0xd888, 0xd889, 0xd88a, 0xd88b, 0xd88c, 0xd88d, 0xd88e, 0xd88f, 0xd890, 0xd891, 0xd892, 0xd893, 0xd894, 0xd895, 0xd896, 0xd897, 0xd898, 0xd899, 0xd89a, 0xd89b, 0xd89c, 0xd89d, 0xd89e, 0xd89f, 0xd8a0, 0xd940, 0xd941, 0xd942, 0xd943, 0xd944, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949, 0xd94a, 0xd94b, 0xd94c, 0xd94d, 0xd94e, 0xd94f, 0xd950, 0xd951, 0xd952, 0xd953, 0xd954, 0xd955, 0xd956, 0xd957, 0xd958, 0xd959, 0xd95a, 0xd95b, 0xd95c, 0xd95d, 0xd95e, 0xd95f, 0xd960, 0xd961, 0xd962, 0xd963, 0xd964, 0xd965, 0xd966, 0xd967, 0xd968, 0xd969, 0xd96a, 0xd96b, 0xd96c, 0xd96d, 0xd96e, 0xd96f, 0xd970, 0xd971, 0xd972, 0xd973, 0xd974, 0xd975, 0xd976, 0xd977, 0xd978, 0xd979, 0xd97a, 0xd97b, 0xd97c, 0xd97d, 0xd97e, 0xd980, 0xd981, 0xd982, 0xd983, 0xd984, 0xd985, 0xd986, 0xd987, 0xd988, 0xd989, 0xd98a, 0xd98b, 0xd98c, 0xd98d, 0xd98e, 0xd98f, 0xd990, 0xd991, 0xd992, 0xd993, 0xd994, 0xd995, 0xd996, 0xd997, 0xd998, 0xd999, 0xd99a, 0xd99b, 0xd99c, 0xd99d, 0xd99e, 0xd99f, 0xd9a0, 0xda40, 0xda41, 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, 0xda48, 0xda49, 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xda4f, 0xda50, 0xda51, 0xda52, 0xda53, 0xda54, 0xda55, 0xda56, 0xda57, 0xda58, 0xda59, 0xda5a, 0xda5b, 0xda5c, 0xda5d, 0xda5e, 0xda5f, 0xda60, 0xda61, 0xda62, 0xda63, 0xda64, 0xda65, 0xda66, 0xda67, 0xda68, 0xda69, 0xda6a, 0xda6b, 0xda6c, 0xda6d, 0xda6e, 0xda6f, 0xda70, 0xda71, 0xda72, 0xda73, 0xda74, 0xda75, 0xda76, 0xda77, 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xda7d, 0xda7e, 0xda80, 0xda81, 0xda82, 0xda83, 0xda84, 0xda85, 0xda86, 0xda87, 0xda88, 0xda89, 0xda8a, 0xda8b, 0xda8c, 0xda8d, 0xda8e, 0xda8f, 0xda90, 0xda91, 0xda92, 0xda93, 0xda94, 0xda95, 0xda96, 0xda97, 0xda98, 0xda99, 0xda9a, 0xda9b, 0xda9c, 0xda9d, 0xda9e, 0xda9f, 0xdaa0, 0xdb40, 0xdb41, 0xdb42, 0xdb43, 0xdb44, 0xdb45, 0xdb46, 0xdb47, 0xdb48, 0xdb49, 0xdb4a, 0xdb4b, 0xdb4c, 0xdb4d, 0xdb4e, 0xdb4f, 0xdb50, 0xdb51, 0xdb52, 0xdb53, 0xdb54, 0xdb55, 0xdb56, 0xdb57, 0xdb58, 0xdb59, 0xdb5a, 0xdb5b, 0xdb5c, 0xdb5d, 0xdb5e, 0xdb5f, 0xdb60, 0xdb61, 0xdb62, 0xdb63, 0xdb64, 0xdb65, 0xdb66, 0xdb67, 0xdb68, 0xdb69, 0xdb6a, 0xdb6b, 0xdb6c, 0xdb6d, 0xdb6e, 0xdb6f, 0xdb70, 0xdb71, 0xdb72, 0xdb73, 0xdb74, 0xdb75, 0xdb76, 0xdb77, 0xdb78, 0xdb79, 0xdb7a, 0xdb7b, 0xdb7c, 0xdb7d, 0xdb7e, 0xdb80, 0xdb81, 0xdb82, 0xdb83, 0xdb84, 0xdb85, 0xdb86, 0xdb87, 0xdb88, 0xdb89, 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8d, 0xdb8e, 0xdb8f, 0xdb90, 0xdb91, 0xdb92, 0xdb93, 0xdb94, 0xdb95, 0xdb96, 0xdb97, 0xdb98, 0xdb99, 0xdb9a, 0xdb9b, 0xdb9c, 0xdb9d, 0xdb9e, 0xdb9f, 0xdba0, 0xdc40, 0xdc41, 0xdc42, 0xdc43, 0xdc44, 0xdc45, 0xdc46, 0xdc47, 0xdc48, 0xdc49, 0xdc4a, 0xdc4b, 0xdc4c, 0xdc4d, 0xdc4e, 0xdc4f, 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xdc55, 0xdc56, 0xdc57, 0xdc58, 0xdc59, 0xdc5a, 0xdc5b, 0xdc5c, 0xdc5d, 0xdc5e, 0xdc5f, 0xdc60, 0xdc61, 0xdc62, 0xdc63, 0xdc64, 0xdc65, 0xdc66, 0xdc67, 0xdc68, 0xdc69, 0xdc6a, 0xdc6b, 0xdc6c, 0xdc6d, 0xdc6e, 0xdc6f, 0xdc70, 0xdc71, 0xdc72, 0xdc73, 0xdc74, 0xdc75, 0xdc76, 0xdc77, 0xdc78, 0xdc79, 0xdc7a, 0xdc7b, 0xdc7c, 0xdc7d, 0xdc7e, 0xdc80, 0xdc81, 0xdc82, 0xdc83, 0xdc84, 0xdc85, 0xdc86, 0xdc87, 0xdc88, 0xdc89, 0xdc8a, 0xdc8b, 0xdc8c, 0xdc8d, 0xdc8e, 0xdc8f, 0xdc90, 0xdc91, 0xdc92, 0xdc93, 0xdc94, 0xdc95, 0xdc96, 0xdc97, 0xdc98, 0xdc99, 0xdc9a, 0xdc9b, 0xdc9c, 0xdc9d, 0xdc9e, 0xdc9f, 0xdca0, 0xdd40, 0xdd41, 0xdd42, 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, 0xdd48, 0xdd49, 0xdd4a, 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, 0xdd50, 0xdd51, 0xdd52, 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, 0xdd58, 0xdd59, 0xdd5a, 0xdd5b, 0xdd5c, 0xdd5d, 0xdd5e, 0xdd5f, 0xdd60, 0xdd61, 0xdd62, 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, 0xdd68, 0xdd69, 0xdd6a, 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, 0xdd70, 0xdd71, 0xdd72, 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0xdd77, 0xdd78, 0xdd79, 0xdd7a, 0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd80, 0xdd81, 0xdd82, 0xdd83, 0xdd84, 0xdd85, 0xdd86, 0xdd87, 0xdd88, 0xdd89, 0xdd8a, 0xdd8b, 0xdd8c, 0xdd8d, 0xdd8e, 0xdd8f, 0xdd90, 0xdd91, 0xdd92, 0xdd93, 0xdd94, 0xdd95, 0xdd96, 0xdd97, 0xdd98, 0xdd99, 0xdd9a, 0xdd9b, 0xdd9c, 0xdd9d, 0xdd9e, 0xdd9f, 0xdda0, 0xde40, 0xde41, 0xde42, 0xde43, 0xde44, 0xde45, 0xde46, 0xde47, 0xde48, 0xde49, 0xde4a, 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f, 0xde50, 0xde51, 0xde52, 0xde53, 0xde54, 0xde55, 0xde56, 0xde57, 0xde58, 0xde59, 0xde5a, 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f, 0xde60, 0xde61, 0xde62, 0xde63, 0xde64, 0xde65, 0xde66, 0xde67, 0xde68, 0xde69, 0xde6a, 0xde6b, 0xde6c, 0xde6d, 0xde6e, 0xde6f, 0xde70, 0xde71, 0xde72, 0xde73, 0xde74, 0xde75, 0xde76, 0xde77, 0xde78, 0xde79, 0xde7a, 0xde7b, 0xde7c, 0xde7d, 0xde7e, 0xde80, 0xde81, 0xde82, 0xde83, 0xde84, 0xde85, 0xde86, 0xde87, 0xde88, 0xde89, 0xde8a, 0xde8b, 0xde8c, 0xde8d, 0xde8e, 0xde8f, 0xde90, 0xde91, 0xde92, 0xde93, 0xde94, 0xde95, 0xde96, 0xde97, 0xde98, 0xde99, 0xde9a, 0xde9b, 0xde9c, 0xde9d, 0xde9e, 0xde9f, 0xdea0, 0xdf40, 0xdf41, 0xdf42, 0xdf43, 0xdf44, 0xdf45, 0xdf46, 0xdf47, 0xdf48, 0xdf49, 0xdf4a, 0xdf4b, 0xdf4c, 0xdf4d, 0xdf4e, 0xdf4f, 0xdf50, 0xdf51, 0xdf52, 0xdf53, 0xdf54, 0xdf55, 0xdf56, 0xdf57, 0xdf58, 0xdf59, 0xdf5a, 0xdf5b, 0xdf5c, 0xdf5d, 0xdf5e, 0xdf5f, 0xdf60, 0xdf61, 0xdf62, 0xdf63, 0xdf64, 0xdf65, 0xdf66, 0xdf67, 0xdf68, 0xdf69, 0xdf6a, 0xdf6b, 0xdf6c, 0xdf6d, 0xdf6e, 0xdf6f, 0xdf70, 0xdf71, 0xdf72, 0xdf73, 0xdf74, 0xdf75, 0xdf76, 0xdf77, 0xdf78, 0xdf79, 0xdf7a, 0xdf7b, 0xdf7c, 0xdf7d, 0xdf7e, 0xdf80, 0xdf81, 0xdf82, 0xdf83, 0xdf84, 0xdf85, 0xdf86, 0xdf87, 0xdf88, 0xdf89, 0xdf8a, 0xdf8b, 0xdf8c, 0xdf8d, 0xdf8e, 0xdf8f, 0xdf90, 0xdf91, 0xdf92, 0xdf93, 0xdf94, 0xdf95, 0xdf96, 0xdf97, 0xdf98, 0xdf99, 0xdf9a, 0xdf9b, 0xdf9c, 0xdf9d, 0xdf9e, 0xdf9f, 0xdfa0, 0xe040, 0xe041, 0xe042, 0xe043, 0xe044, 0xe045, 0xe046, 0xe047, 0xe048, 0xe049, 0xe04a, 0xe04b, 0xe04c, 0xe04d, 0xe04e, 0xe04f, 0xe050, 0xe051, 0xe052, 0xe053, 0xe054, 0xe055, 0xe056, 0xe057, 0xe058, 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xe05d, 0xe05e, 0xe05f, 0xe060, 0xe061, 0xe062, 0xe063, 0xe064, 0xe065, 0xe066, 0xe067, 0xe068, 0xe069, 0xe06a, 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, 0xe070, 0xe071, 0xe072, 0xe073, 0xe074, 0xe075, 0xe076, 0xe077, 0xe078, 0xe079, 0xe07a, 0xe07b, 0xe07c, 0xe07d, 0xe07e, 0xe080, 0xe081, 0xe082, 0xe083, 0xe084, 0xe085, 0xe086, 0xe087, 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xe08f, 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, 0xe096, 0xe097, 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, 0xe09d, 0xe09e, 0xe09f, 0xe0a0, 0xe140, 0xe141, 0xe142, 0xe143, 0xe144, 0xe145, 0xe146, 0xe147, 0xe148, 0xe149, 0xe14a, 0xe14b, 0xe14c, 0xe14d, 0xe14e, 0xe14f, 0xe150, 0xe151, 0xe152, 0xe153, 0xe154, 0xe155, 0xe156, 0xe157, 0xe158, 0xe159, 0xe15a, 0xe15b, 0xe15c, 0xe15d, 0xe15e, 0xe15f, 0xe160, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, 0xe166, 0xe167, 0xe168, 0xe169, 0xe16a, 0xe16b, 0xe16c, 0xe16d, 0xe16e, 0xe16f, 0xe170, 0xe171, 0xe172, 0xe173, 0xe174, 0xe175, 0xe176, 0xe177, 0xe178, 0xe179, 0xe17a, 0xe17b, 0xe17c, 0xe17d, 0xe17e, 0xe180, 0xe181, 0xe182, 0xe183, 0xe184, 0xe185, 0xe186, 0xe187, 0xe188, 0xe189, 0xe18a, 0xe18b, 0xe18c, 0xe18d, 0xe18e, 0xe18f, 0xe190, 0xe191, 0xe192, 0xe193, 0xe194, 0xe195, 0xe196, 0xe197, 0xe198, 0xe199, 0xe19a, 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, 0xe1a0, 0xe240, 0xe241, 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, 0xe248, 0xe249, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, 0xe250, 0xe251, 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, 0xe258, 0xe259, 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, 0xe260, 0xe261, 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, 0xe268, 0xe269, 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, 0xe270, 0xe271, 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, 0xe278, 0xe279, 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe280, 0xe281, 0xe282, 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, 0xe288, 0xe289, 0xe28a, 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, 0xe290, 0xe291, 0xe292, 0xe293, 0xe294, 0xe295, 0xe296, 0xe297, 0xe298, 0xe299, 0xe29a, 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, 0xe2a0, 0xe340, 0xe341, 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349, 0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f, 0xe350, 0xe351, 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 0xe358, 0xe359, 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361, 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, 0xe368, 0xe369, 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xe36e, 0xe36f, 0xe370, 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, 0xe378, 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe380, 0xe381, 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 0xe388, 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390, 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, 0xe398, 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 0xe3a0, 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xe446, 0xe447, 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, 0xe44f, 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, 0xe457, 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, 0xe45f, 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, 0xe466, 0xe467, 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, 0xe46e, 0xe46f, 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, 0xe476, 0xe477, 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, 0xe47e, 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, 0xe487, 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, 0xe48f, 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, 0xe497, 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, 0xe49f, 0xe4a0, 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, 0xe546, 0xe547, 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, 0xe54e, 0xe54f, 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, 0xe556, 0xe557, 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, 0xe55e, 0xe55f, 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xe565, 0xe566, 0xe567, 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, 0xe56e, 0xe56f, 0xe570, 0xe571, 0xe572, 0xe573, 0xe574, 0xe575, 0xe576, 0xe577, 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, 0xe57d, 0xe57e, 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, 0xe586, 0xe587, 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, 0xe58e, 0xe58f, 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, 0xe596, 0xe597, 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe640, 0xe641, 0xe642, 0xe643, 0xe644, 0xe645, 0xe646, 0xe647, 0xe648, 0xe649, 0xe64a, 0xe64b, 0xe64c, 0xe64d, 0xe64e, 0xe64f, 0xe650, 0xe651, 0xe652, 0xe653, 0xe654, 0xe655, 0xe656, 0xe657, 0xe658, 0xe659, 0xe65a, 0xe65b, 0xe65c, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0xe661, 0xe662, 0xe663, 0xe664, 0xe665, 0xe666, 0xe667, 0xe668, 0xe669, 0xe66a, 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, 0xe670, 0xe671, 0xe672, 0xe673, 0xe674, 0xe675, 0xe676, 0xe677, 0xe678, 0xe679, 0xe67a, 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe680, 0xe681, 0xe682, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0xe689, 0xe68a, 0xe68b, 0xe68c, 0xe68d, 0xe68e, 0xe68f, 0xe690, 0xe691, 0xe692, 0xe693, 0xe694, 0xe695, 0xe696, 0xe697, 0xe698, 0xe699, 0xe69a, 0xe69b, 0xe69c, 0xe69d, 0xe69e, 0xe69f, 0xe6a0, 0xe740, 0xe741, 0xe742, 0xe743, 0xe744, 0xe745, 0xe746, 0xe747, 0xe748, 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, 0xe750, 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, 0xe758, 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, 0xe760, 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0xe766, 0xe767, 0xe768, 0xe769, 0xe76a, 0xe76b, 0xe76c, 0xe76d, 0xe76e, 0xe76f, 0xe770, 0xe771, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, 0xe778, 0xe779, 0xe77a, 0xe77b, 0xe77c, 0xe77d, 0xe77e, 0xe780, 0xe781, 0xe782, 0xe783, 0xe784, 0xe785, 0xe786, 0xe787, 0xe788, 0xe789, 0xe78a, 0xe78b, 0xe78c, 0xe78d, 0xe78e, 0xe78f, 0xe790, 0xe791, 0xe792, 0xe793, 0xe794, 0xe795, 0xe796, 0xe797, 0xe798, 0xe799, 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, 0xe7a0, 0xe840, 0xe841, 0xe842, 0xe843, 0xe844, 0xe845, 0xe846, 0xe847, 0xe848, 0xe849, 0xe84a, 0xe84b, 0xe84c, 0xe84d, 0xe84e, 0xe84f, 0xe850, 0xe851, 0xe852, 0xe853, 0xe854, 0xe855, 0xe856, 0xe857, 0xe858, 0xe859, 0xe85a, 0xe85b, 0xe85c, 0xe85d, 0xe85e, 0xe85f, 0xe860, 0xe861, 0xe862, 0xe863, 0xe864, 0xe865, 0xe866, 0xe867, 0xe868, 0xe869, 0xe86a, 0xe86b, 0xe86c, 0xe86d, 0xe86e, 0xe86f, 0xe870, 0xe871, 0xe872, 0xe873, 0xe874, 0xe875, 0xe876, 0xe877, 0xe878, 0xe879, 0xe87a, 0xe87b, 0xe87c, 0xe87d, 0xe87e, 0xe880, 0xe881, 0xe882, 0xe883, 0xe884, 0xe885, 0xe886, 0xe887, 0xe888, 0xe889, 0xe88a, 0xe88b, 0xe88c, 0xe88d, 0xe88e, 0xe88f, 0xe890, 0xe891, 0xe892, 0xe893, 0xe894, 0xe895, 0xe896, 0xe897, 0xe898, 0xe899, 0xe89a, 0xe89b, 0xe89c, 0xe89d, 0xe89e, 0xe89f, 0xe8a0, 0xe940, 0xe941, 0xe942, 0xe943, 0xe944, 0xe945, 0xe946, 0xe947, 0xe948, 0xe949, 0xe94a, 0xe94b, 0xe94c, 0xe94d, 0xe94e, 0xe94f, 0xe950, 0xe951, 0xe952, 0xe953, 0xe954, 0xe955, 0xe956, 0xe957, 0xe958, 0xe959, 0xe95a, 0xe95b, 0xe95c, 0xe95d, 0xe95e, 0xe95f, 0xe960, 0xe961, 0xe962, 0xe963, 0xe964, 0xe965, 0xe966, 0xe967, 0xe968, 0xe969, 0xe96a, 0xe96b, 0xe96c, 0xe96d, 0xe96e, 0xe96f, 0xe970, 0xe971, 0xe972, 0xe973, 0xe974, 0xe975, 0xe976, 0xe977, 0xe978, 0xe979, 0xe97a, 0xe97b, 0xe97c, 0xe97d, 0xe97e, 0xe980, 0xe981, 0xe982, 0xe983, 0xe984, 0xe985, 0xe986, 0xe987, 0xe988, 0xe989, 0xe98a, 0xe98b, 0xe98c, 0xe98d, 0xe98e, 0xe98f, 0xe990, 0xe991, 0xe992, 0xe993, 0xe994, 0xe995, 0xe996, 0xe997, 0xe998, 0xe999, 0xe99a, 0xe99b, 0xe99c, 0xe99d, 0xe99e, 0xe99f, 0xe9a0, 0xea40, 0xea41, 0xea42, 0xea43, 0xea44, 0xea45, 0xea46, 0xea47, 0xea48, 0xea49, 0xea4a, 0xea4b, 0xea4c, 0xea4d, 0xea4e, 0xea4f, 0xea50, 0xea51, 0xea52, 0xea53, 0xea54, 0xea55, 0xea56, 0xea57, 0xea58, 0xea59, 0xea5a, 0xea5b, 0xea5c, 0xea5d, 0xea5e, 0xea5f, 0xea60, 0xea61, 0xea62, 0xea63, 0xea64, 0xea65, 0xea66, 0xea67, 0xea68, 0xea69, 0xea6a, 0xea6b, 0xea6c, 0xea6d, 0xea6e, 0xea6f, 0xea70, 0xea71, 0xea72, 0xea73, 0xea74, 0xea75, 0xea76, 0xea77, 0xea78, 0xea79, 0xea7a, 0xea7b, 0xea7c, 0xea7d, 0xea7e, 0xea80, 0xea81, 0xea82, 0xea83, 0xea84, 0xea85, 0xea86, 0xea87, 0xea88, 0xea89, 0xea8a, 0xea8b, 0xea8c, 0xea8d, 0xea8e, 0xea8f, 0xea90, 0xea91, 0xea92, 0xea93, 0xea94, 0xea95, 0xea96, 0xea97, 0xea98, 0xea99, 0xea9a, 0xea9b, 0xea9c, 0xea9d, 0xea9e, 0xea9f, 0xeaa0, 0xeb40, 0xeb41, 0xeb42, 0xeb43, 0xeb44, 0xeb45, 0xeb46, 0xeb47, 0xeb48, 0xeb49, 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0xeb51, 0xeb52, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59, 0xeb5a, 0xeb5b, 0xeb5c, 0xeb5d, 0xeb5e, 0xeb5f, 0xeb60, 0xeb61, 0xeb62, 0xeb63, 0xeb64, 0xeb65, 0xeb66, 0xeb67, 0xeb68, 0xeb69, 0xeb6a, 0xeb6b, 0xeb6c, 0xeb6d, 0xeb6e, 0xeb6f, 0xeb70, 0xeb71, 0xeb72, 0xeb73, 0xeb74, 0xeb75, 0xeb76, 0xeb77, 0xeb78, 0xeb79, 0xeb7a, 0xeb7b, 0xeb7c, 0xeb7d, 0xeb7e, 0xeb80, 0xeb81, 0xeb82, 0xeb83, 0xeb84, 0xeb85, 0xeb86, 0xeb87, 0xeb88, 0xeb89, 0xeb8a, 0xeb8b, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f, 0xeb90, 0xeb91, 0xeb92, 0xeb93, 0xeb94, 0xeb95, 0xeb96, 0xeb97, 0xeb98, 0xeb99, 0xeb9a, 0xeb9b, 0xeb9c, 0xeb9d, 0xeb9e, 0xeb9f, 0xeba0, 0xec40, 0xec41, 0xec42, 0xec43, 0xec44, 0xec45, 0xec46, 0xec47, 0xec48, 0xec49, 0xec4a, 0xec4b, 0xec4c, 0xec4d, 0xec4e, 0xec4f, 0xec50, 0xec51, 0xec52, 0xec53, 0xec54, 0xec55, 0xec56, 0xec57, 0xec58, 0xec59, 0xec5a, 0xec5b, 0xec5c, 0xec5d, 0xec5e, 0xec5f, 0xec60, 0xec61, 0xec62, 0xec63, 0xec64, 0xec65, 0xec66, 0xec67, 0xec68, 0xec69, 0xec6a, 0xec6b, 0xec6c, 0xec6d, 0xec6e, 0xec6f, 0xec70, 0xec71, 0xec72, 0xec73, 0xec74, 0xec75, 0xec76, 0xec77, 0xec78, 0xec79, 0xec7a, 0xec7b, 0xec7c, 0xec7d, 0xec7e, 0xec80, 0xec81, 0xec82, 0xec83, 0xec84, 0xec85, 0xec86, 0xec87, 0xec88, 0xec89, 0xec8a, 0xec8b, 0xec8c, 0xec8d, 0xec8e, 0xec8f, 0xec90, 0xec91, 0xec92, 0xec93, 0xec94, 0xec95, 0xec96, 0xec97, 0xec98, 0xec99, 0xec9a, 0xec9b, 0xec9c, 0xec9d, 0xec9e, 0xec9f, 0xeca0, 0xed40, 0xed41, 0xed42, 0xed43, 0xed44, 0xed45, 0xed46, 0xed47, 0xed48, 0xed49, 0xed4a, 0xed4b, 0xed4c, 0xed4d, 0xed4e, 0xed4f, 0xed50, 0xed51, 0xed52, 0xed53, 0xed54, 0xed55, 0xed56, 0xed57, 0xed58, 0xed59, 0xed5a, 0xed5b, 0xed5c, 0xed5d, 0xed5e, 0xed5f, 0xed60, 0xed61, 0xed62, 0xed63, 0xed64, 0xed65, 0xed66, 0xed67, 0xed68, 0xed69, 0xed6a, 0xed6b, 0xed6c, 0xed6d, 0xed6e, 0xed6f, 0xed70, 0xed71, 0xed72, 0xed73, 0xed74, 0xed75, 0xed76, 0xed77, 0xed78, 0xed79, 0xed7a, 0xed7b, 0xed7c, 0xed7d, 0xed7e, 0xed80, 0xed81, 0xed82, 0xed83, 0xed84, 0xed85, 0xed86, 0xed87, 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0xed8d, 0xed8e, 0xed8f, 0xed90, 0xed91, 0xed92, 0xed93, 0xed94, 0xed95, 0xed96, 0xed97, 0xed98, 0xed99, 0xed9a, 0xed9b, 0xed9c, 0xed9d, 0xed9e, 0xed9f, 0xeda0, 0xee40, 0xee41, 0xee42, 0xee43, 0xee44, 0xee45, 0xee46, 0xee47, 0xee48, 0xee49, 0xee4a, 0xee4b, 0xee4c, 0xee4d, 0xee4e, 0xee4f, 0xee50, 0xee51, 0xee52, 0xee53, 0xee54, 0xee55, 0xee56, 0xee57, 0xee58, 0xee59, 0xee5a, 0xee5b, 0xee5c, 0xee5d, 0xee5e, 0xee5f, 0xee60, 0xee61, 0xee62, 0xee63, 0xee64, 0xee65, 0xee66, 0xee67, 0xee68, 0xee69, 0xee6a, 0xee6b, 0xee6c, 0xee6d, 0xee6e, 0xee6f, 0xee70, 0xee71, 0xee72, 0xee73, 0xee74, 0xee75, 0xee76, 0xee77, 0xee78, 0xee79, 0xee7a, 0xee7b, 0xee7c, 0xee7d, 0xee7e, 0xee80, 0xee81, 0xee82, 0xee83, 0xee84, 0xee85, 0xee86, 0xee87, 0xee88, 0xee89, 0xee8a, 0xee8b, 0xee8c, 0xee8d, 0xee8e, 0xee8f, 0xee90, 0xee91, 0xee92, 0xee93, 0xee94, 0xee95, 0xee96, 0xee97, 0xee98, 0xee99, 0xee9a, 0xee9b, 0xee9c, 0xee9d, 0xee9e, 0xee9f, 0xeea0, 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xef46, 0xef47, 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d, 0xef4e, 0xef4f, 0xef50, 0xef51, 0xef52, 0xef53, 0xef54, 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c, 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, 0xef64, 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c, 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xef72, 0xef73, 0xef74, 0xef75, 0xef76, 0xef77, 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c, 0xef7d, 0xef7e, 0xef80, 0xef81, 0xef82, 0xef83, 0xef84, 0xef85, 0xef86, 0xef87, 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c, 0xef8d, 0xef8e, 0xef8f, 0xef90, 0xef91, 0xef92, 0xef93, 0xef94, 0xef95, 0xef96, 0xef97, 0xef98, 0xef99, 0xef9a, 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, 0xefa0, 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f, 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057, 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f, 0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067, 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077, 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, 0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096, 0xf097, 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e, 0xf09f, 0xf0a0, 0xf140, 0xf141, 0xf142, 0xf143, 0xf144, 0xf145, 0xf146, 0xf147, 0xf148, 0xf149, 0xf14a, 0xf14b, 0xf14c, 0xf14d, 0xf14e, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153, 0xf154, 0xf155, 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b, 0xf15c, 0xf15d, 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163, 0xf164, 0xf165, 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b, 0xf16c, 0xf16d, 0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173, 0xf174, 0xf175, 0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b, 0xf17c, 0xf17d, 0xf17e, 0xf180, 0xf181, 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, 0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, 0xf18f, 0xf190, 0xf191, 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, 0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, 0xf19f, 0xf1a0, 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246, 0xf247, 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e, 0xf24f, 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256, 0xf257, 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e, 0xf25f, 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d, 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275, 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d, 0xf27e, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, 0xf286, 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, 0xf28e, 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, 0xf296, 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, 0xf29e, 0xf29f, 0xf2a0, 0xf340, 0xf341, 0xf342, 0xf343, 0xf344, 0xf345, 0xf346, 0xf347, 0xf348, 0xf349, 0xf34a, 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f, 0xf350, 0xf351, 0xf352, 0xf353, 0xf354, 0xf355, 0xf356, 0xf357, 0xf358, 0xf359, 0xf35a, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361, 0xf362, 0xf363, 0xf364, 0xf365, 0xf366, 0xf367, 0xf368, 0xf369, 0xf36a, 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f, 0xf370, 0xf371, 0xf372, 0xf373, 0xf374, 0xf375, 0xf376, 0xf377, 0xf378, 0xf379, 0xf37a, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf380, 0xf381, 0xf382, 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, 0xf388, 0xf389, 0xf38a, 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392, 0xf393, 0xf394, 0xf395, 0xf396, 0xf397, 0xf398, 0xf399, 0xf39a, 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f, 0xf3a0, 0xf440, 0xf441, 0xf442, 0xf443, 0xf444, 0xf445, 0xf446, 0xf447, 0xf448, 0xf449, 0xf44a, 0xf44b, 0xf44c, 0xf44d, 0xf44e, 0xf44f, 0xf450, 0xf451, 0xf452, 0xf453, 0xf454, 0xf455, 0xf456, 0xf457, 0xf458, 0xf459, 0xf45a, 0xf45b, 0xf45c, 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xf463, 0xf464, 0xf465, 0xf466, 0xf467, 0xf468, 0xf469, 0xf46a, 0xf46b, 0xf46c, 0xf46d, 0xf46e, 0xf46f, 0xf470, 0xf471, 0xf472, 0xf473, 0xf474, 0xf475, 0xf476, 0xf477, 0xf478, 0xf479, 0xf47a, 0xf47b, 0xf47c, 0xf47d, 0xf47e, 0xf480, 0xf481, 0xf482, 0xf483, 0xf484, 0xf485, 0xf486, 0xf487, 0xf488, 0xf489, 0xf48a, 0xf48b, 0xf48c, 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0xf492, 0xf493, 0xf494, 0xf495, 0xf496, 0xf497, 0xf498, 0xf499, 0xf49a, 0xf49b, 0xf49c, 0xf49d, 0xf49e, 0xf49f, 0xf4a0, 0xf540, 0xf541, 0xf542, 0xf543, 0xf544, 0xf545, 0xf546, 0xf547, 0xf548, 0xf549, 0xf54a, 0xf54b, 0xf54c, 0xf54d, 0xf54e, 0xf54f, 0xf550, 0xf551, 0xf552, 0xf553, 0xf554, 0xf555, 0xf556, 0xf557, 0xf558, 0xf559, 0xf55a, 0xf55b, 0xf55c, 0xf55d, 0xf55e, 0xf55f, 0xf560, 0xf561, 0xf562, 0xf563, 0xf564, 0xf565, 0xf566, 0xf567, 0xf568, 0xf569, 0xf56a, 0xf56b, 0xf56c, 0xf56d, 0xf56e, 0xf56f, 0xf570, 0xf571, 0xf572, 0xf573, 0xf574, 0xf575, 0xf576, 0xf577, 0xf578, 0xf579, 0xf57a, 0xf57b, 0xf57c, 0xf57d, 0xf57e, 0xf580, 0xf581, 0xf582, 0xf583, 0xf584, 0xf585, 0xf586, 0xf587, 0xf588, 0xf589, 0xf58a, 0xf58b, 0xf58c, 0xf58d, 0xf58e, 0xf58f, 0xf590, 0xf591, 0xf592, 0xf593, 0xf594, 0xf595, 0xf596, 0xf597, 0xf598, 0xf599, 0xf59a, 0xf59b, 0xf59c, 0xf59d, 0xf59e, 0xf59f, 0xf5a0, 0xf640, 0xf641, 0xf642, 0xf643, 0xf644, 0xf645, 0xf646, 0xf647, 0xf648, 0xf649, 0xf64a, 0xf64b, 0xf64c, 0xf64d, 0xf64e, 0xf64f, 0xf650, 0xf651, 0xf652, 0xf653, 0xf654, 0xf655, 0xf656, 0xf657, 0xf658, 0xf659, 0xf65a, 0xf65b, 0xf65c, 0xf65d, 0xf65e, 0xf65f, 0xf660, 0xf661, 0xf662, 0xf663, 0xf664, 0xf665, 0xf666, 0xf667, 0xf668, 0xf669, 0xf66a, 0xf66b, 0xf66c, 0xf66d, 0xf66e, 0xf66f, 0xf670, 0xf671, 0xf672, 0xf673, 0xf674, 0xf675, 0xf676, 0xf677, 0xf678, 0xf679, 0xf67a, 0xf67b, 0xf67c, 0xf67d, 0xf67e, 0xf680, 0xf681, 0xf682, 0xf683, 0xf684, 0xf685, 0xf686, 0xf687, 0xf688, 0xf689, 0xf68a, 0xf68b, 0xf68c, 0xf68d, 0xf68e, 0xf68f, 0xf690, 0xf691, 0xf692, 0xf693, 0xf694, 0xf695, 0xf696, 0xf697, 0xf698, 0xf699, 0xf69a, 0xf69b, 0xf69c, 0xf69d, 0xf69e, 0xf69f, 0xf6a0, 0xf740, 0xf741, 0xf742, 0xf743, 0xf744, 0xf745, 0xf746, 0xf747, 0xf748, 0xf749, 0xf74a, 0xf74b, 0xf74c, 0xf74d, 0xf74e, 0xf74f, 0xf750, 0xf751, 0xf752, 0xf753, 0xf754, 0xf755, 0xf756, 0xf757, 0xf758, 0xf759, 0xf75a, 0xf75b, 0xf75c, 0xf75d, 0xf75e, 0xf75f, 0xf760, 0xf761, 0xf762, 0xf763, 0xf764, 0xf765, 0xf766, 0xf767, 0xf768, 0xf769, 0xf76a, 0xf76b, 0xf76c, 0xf76d, 0xf76e, 0xf76f, 0xf770, 0xf771, 0xf772, 0xf773, 0xf774, 0xf775, 0xf776, 0xf777, 0xf778, 0xf779, 0xf77a, 0xf77b, 0xf77c, 0xf77d, 0xf77e, 0xf780, 0xf781, 0xf782, 0xf783, 0xf784, 0xf785, 0xf786, 0xf787, 0xf788, 0xf789, 0xf78a, 0xf78b, 0xf78c, 0xf78d, 0xf78e, 0xf78f, 0xf790, 0xf791, 0xf792, 0xf793, 0xf794, 0xf795, 0xf796, 0xf797, 0xf798, 0xf799, 0xf79a, 0xf79b, 0xf79c, 0xf79d, 0xf79e, 0xf79f, 0xf7a0, 0xf840, 0xf841, 0xf842, 0xf843, 0xf844, 0xf845, 0xf846, 0xf847, 0xf848, 0xf849, 0xf84a, 0xf84b, 0xf84c, 0xf84d, 0xf84e, 0xf84f, 0xf850, 0xf851, 0xf852, 0xf853, 0xf854, 0xf855, 0xf856, 0xf857, 0xf858, 0xf859, 0xf85a, 0xf85b, 0xf85c, 0xf85d, 0xf85e, 0xf85f, 0xf860, 0xf861, 0xf862, 0xf863, 0xf864, 0xf865, 0xf866, 0xf867, 0xf868, 0xf869, 0xf86a, 0xf86b, 0xf86c, 0xf86d, 0xf86e, 0xf86f, 0xf870, 0xf871, 0xf872, 0xf873, 0xf874, 0xf875, 0xf876, 0xf877, 0xf878, 0xf879, 0xf87a, 0xf87b, 0xf87c, 0xf87d, 0xf87e, 0xf880, 0xf881, 0xf882, 0xf883, 0xf884, 0xf885, 0xf886, 0xf887, 0xf888, 0xf889, 0xf88a, 0xf88b, 0xf88c, 0xf88d, 0xf88e, 0xf88f, 0xf890, 0xf891, 0xf892, 0xf893, 0xf894, 0xf895, 0xf896, 0xf897, 0xf898, 0xf899, 0xf89a, 0xf89b, 0xf89c, 0xf89d, 0xf89e, 0xf89f, 0xf8a0, 0xf940, 0xf941, 0xf942, 0xf943, 0xf944, 0xf945, 0xf946, 0xf947, 0xf948, 0xf949, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e, 0xf94f, 0xf950, 0xf951, 0xf952, 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0xf958, 0xf959, 0xf95a, 0xf95b, 0xf95c, 0xf95d, 0xf95e, 0xf95f, 0xf960, 0xf961, 0xf962, 0xf963, 0xf964, 0xf965, 0xf966, 0xf967, 0xf968, 0xf969, 0xf96a, 0xf96b, 0xf96c, 0xf96d, 0xf96e, 0xf96f, 0xf970, 0xf971, 0xf972, 0xf973, 0xf974, 0xf975, 0xf976, 0xf977, 0xf978, 0xf979, 0xf97a, 0xf97b, 0xf97c, 0xf97d, 0xf97e, 0xf980, 0xf981, 0xf982, 0xf983, 0xf984, 0xf985, 0xf986, 0xf987, 0xf988, 0xf989, 0xf98a, 0xf98b, 0xf98c, 0xf98d, 0xf98e, 0xf98f, 0xf990, 0xf991, 0xf992, 0xf993, 0xf994, 0xf995, 0xf996, 0xf997, 0xf998, 0xf999, 0xf99a, 0xf99b, 0xf99c, 0xf99d, 0xf99e, 0xf99f, 0xf9a0, 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44, 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b, 0xfa4c, 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa54, 0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b, 0xfa5c, 0xfa5d, 0xfa5e, 0xfa5f, 0xfa60, 0xfa61, 0xfa62, 0xfa63, 0xfa64, 0xfa65, 0xfa66, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b, 0xfa6c, 0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73, 0xfa74, 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b, 0xfa7c, 0xfa7d, 0xfa7e, 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85, 0xfa86, 0xfa87, 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d, 0xfa8e, 0xfa8f, 0xfa90, 0xfa91, 0xfa92, 0xfa93, 0xfa94, 0xfa95, 0xfa96, 0xfa97, 0xfa98, 0xfa99, 0xfa9a, 0xfa9b, 0xfa9c, 0xfa9d, 0xfa9e, 0xfa9f, 0xfaa0, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46, 0xfb47, 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56, 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d, 0xfb5e, 0xfb5f, 0xfb60, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66, 0xfb67, 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfb6f, 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76, 0xfb77, 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xfb7e, 0xfb80, 0xfb81, 0xfb82, 0xfb83, 0xfb84, 0xfb85, 0xfb86, 0xfb87, 0xfb88, 0xfb89, 0xfb8a, 0xfb8b, 0xfb8c, 0xfb8d, 0xfb8e, 0xfb8f, 0xfb90, 0xfb91, 0xfb92, 0xfb93, 0xfb94, 0xfb95, 0xfb96, 0xfb97, 0xfb98, 0xfb99, 0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d, 0xfb9e, 0xfb9f, 0xfba0, 0xfc40, 0xfc41, 0xfc42, 0xfc43, 0xfc44, 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xfc49, 0xfc4a, 0xfc4b, 0xfc4c, 0xfc4d, 0xfc4e, 0xfc4f, 0xfc50, 0xfc51, 0xfc52, 0xfc53, 0xfc54, 0xfc55, 0xfc56, 0xfc57, 0xfc58, 0xfc59, 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, 0xfc5e, 0xfc5f, 0xfc60, 0xfc61, 0xfc62, 0xfc63, 0xfc64, 0xfc65, 0xfc66, 0xfc67, 0xfc68, 0xfc69, 0xfc6a, 0xfc6b, 0xfc6c, 0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71, 0xfc72, 0xfc73, 0xfc74, 0xfc75, 0xfc76, 0xfc77, 0xfc78, 0xfc79, 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfc80, 0xfc81, 0xfc82, 0xfc83, 0xfc84, 0xfc85, 0xfc86, 0xfc87, 0xfc88, 0xfc89, 0xfc8a, 0xfc8b, 0xfc8c, 0xfc8d, 0xfc8e, 0xfc8f, 0xfc90, 0xfc91, 0xfc92, 0xfc93, 0xfc94, 0xfc95, 0xfc96, 0xfc97, 0xfc98, 0xfc99, 0xfc9a, 0xfc9b, 0xfc9c, 0xfc9d, 0xfc9e, 0xfc9f, 0xfca0, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44, 0xfd45, 0xfd46, 0xfd47, 0xfd48, 0xfd49, 0xfd4a, 0xfd4b, 0xfd4c, 0xfd4d, 0xfd4e, 0xfd4f, 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54, 0xfd55, 0xfd56, 0xfd57, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c, 0xfd5d, 0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64, 0xfd65, 0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6d, 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74, 0xfd75, 0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c, 0xfd7d, 0xfd7e, 0xfd80, 0xfd81, 0xfd82, 0xfd83, 0xfd84, 0xfd85, 0xfd86, 0xfd87, 0xfd88, 0xfd89, 0xfd8a, 0xfd8b, 0xfd8c, 0xfd8d, 0xfd8e, 0xfd8f, 0xfd90, 0xfd91, 0xfd92, 0xfd93, 0xfd94, 0xfd95, 0xfd96, 0xfd97, 0xfd98, 0xfd99, 0xfd9a, 0xfd9b, 0xfd9c, 0xfd9d, 0xfd9e, 0xfd9f, 0xfda0, 0xfe40, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfe45, 0xfe46, 0xfe47, 0xfe48, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, 0xa955, 0xa968, 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e, 0xa96f, 0xa970, 0xa971, 0xa972, 0xa973, 0xa974, 0xa975, 0xa976, 0xa977, 0xa978, 0xa979, 0xa97a, 0xa97b, 0xa97c, 0xa97d, 0xa97e, 0xa980, 0xa981, 0xa982, 0xa983, 0xa984, 0xa985, 0xa986, 0xa987, 0xa988, 0xa956, 0xa957, }; static const Summary16 gbkext_inv_uni2indx_page02[14] = { /* 0x0200 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0c00 }, { 2, 0x0200 }, }; static const Summary16 gbkext_inv_uni2indx_page20[44] = { /* 0x2000 */ { 3, 0x0000 }, { 3, 0x0029 }, { 6, 0x0020 }, { 7, 0x0020 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, { 8, 0x0000 }, /* 0x2100 */ { 8, 0x0220 }, { 10, 0x0000 }, { 10, 0x0002 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x0000 }, { 11, 0x03c0 }, { 15, 0x0000 }, { 15, 0x0000 }, { 15, 0x0000 }, { 15, 0x0000 }, { 15, 0x0000 }, { 15, 0x0000 }, /* 0x2200 */ { 15, 0x0000 }, { 15, 0x8020 }, { 17, 0x0008 }, { 18, 0x0000 }, { 18, 0x0000 }, { 18, 0x0004 }, { 19, 0x00c0 }, { 21, 0x0000 }, { 21, 0x0000 }, { 21, 0x0020 }, { 22, 0x0000 }, { 22, 0x8000 }, }; static const Summary16 gbkext_inv_uni2indx_page25[17] = { /* 0x2500 */ { 23, 0x0000 }, { 23, 0x0000 }, { 23, 0x0000 }, { 23, 0x0000 }, { 23, 0x0000 }, { 23, 0xffff }, { 39, 0xffff }, { 55, 0x000f }, { 59, 0xfffe }, { 74, 0x0038 }, { 77, 0x0000 }, { 77, 0x3000 }, { 79, 0x0000 }, { 79, 0x0000 }, { 79, 0x003c }, { 83, 0x0000 }, /* 0x2600 */ { 83, 0x0200 }, }; static const Summary16 gbkext_inv_uni2indx_page30[16] = { /* 0x3000 */ { 84, 0x00c0 }, { 86, 0x6004 }, { 89, 0x03fe }, { 98, 0x0000 }, { 98, 0x0000 }, { 98, 0x0000 }, { 98, 0x0000 }, { 98, 0x0000 }, { 98, 0x0000 }, { 98, 0x7800 }, { 102, 0x0000 }, { 102, 0x0000 }, { 102, 0x0000 }, { 102, 0x0000 }, { 102, 0x0000 }, { 102, 0x7000 }, }; static const Summary16 gbkext_inv_uni2indx_page32[30] = { /* 0x3200 */ { 105, 0x0000 }, { 105, 0x0000 }, { 105, 0x0000 }, { 105, 0x0002 }, { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x0008 }, { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0x0000 }, /* 0x3300 */ { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0x0000 }, { 107, 0xc000 }, { 109, 0x7000 }, { 112, 0x0002 }, { 113, 0x0000 }, { 113, 0x4010 }, { 115, 0x0026 }, }; static const Summary16 gbkext_inv_uni2indx_page4e[1307] = { /* 0x4e00 */ { 118, 0x8074 }, { 123, 0x8084 }, { 126, 0xc24b }, { 133, 0x10aa }, { 138, 0x0457 }, { 144, 0x0ca2 }, { 149, 0xfdbc }, { 161, 0xbff4 }, { 173, 0x04bf }, { 181, 0x72c1 }, { 188, 0x8408 }, { 191, 0x73d3 }, { 201, 0x9100 }, { 204, 0x1c05 }, { 209, 0xe2c5 }, { 217, 0x5712 }, /* 0x4f00 */ { 224, 0x19fd }, { 234, 0x307c }, { 241, 0x730a }, { 248, 0xcaaa }, { 256, 0x1fb7 }, { 267, 0x0054 }, { 270, 0x6d46 }, { 278, 0x27a6 }, { 286, 0x54e7 }, { 295, 0xd76d }, { 306, 0x2816 }, { 311, 0x7fdf }, { 325, 0x3bc7 }, { 335, 0x0a7c }, { 342, 0x18b5 }, { 349, 0xbaf5 }, /* 0x5000 */ { 360, 0x4fff }, { 373, 0x68eb }, { 382, 0x889d }, { 389, 0xabff }, { 402, 0x2e77 }, { 412, 0xebdf }, { 425, 0xefdf }, { 439, 0x373f }, { 450, 0xdede }, { 462, 0xffff }, { 478, 0xec57 }, { 488, 0xf3fb }, { 501, 0x7fff }, { 516, 0xfbbf }, { 530, 0x8f3f }, { 541, 0xf7d7 }, /* 0x5100 */ { 554, 0xf73f }, { 567, 0xfffb }, { 582, 0xfffd }, { 597, 0x7fff }, { 612, 0xd484 }, { 618, 0xeb8d }, { 628, 0x86db }, { 637, 0xc404 }, { 641, 0xccd8 }, { 649, 0xe51b }, { 658, 0x67ca }, { 667, 0xc710 }, { 673, 0x652e }, { 681, 0xd7fd }, { 694, 0x57ec }, { 704, 0x4096 }, /* 0x5200 */ { 709, 0x9a30 }, { 715, 0xd039 }, { 722, 0x94ee }, { 731, 0x5036 }, { 737, 0xcbf0 }, { 746, 0xafac }, { 756, 0x795d }, { 766, 0x5ffb }, { 779, 0xfef9 }, { 792, 0x17f6 }, { 802, 0xc0f0 }, { 808, 0x3ff1 }, { 819, 0xf577 }, { 831, 0x7eba }, { 842, 0xffef }, { 857, 0x39fe }, /* 0x5300 */ { 868, 0x5e9e }, { 878, 0xd91e }, { 887, 0xbbb4 }, { 897, 0x31ff }, { 908, 0x3855 }, { 915, 0x2b11 }, { 921, 0x3520 }, { 926, 0x7a44 }, { 933, 0xc58b }, { 941, 0x5adf }, { 952, 0xbc93 }, { 961, 0x77bf }, { 974, 0xc0f9 }, { 982, 0x742d }, { 990, 0x0086 }, { 993, 0xc410 }, /* 0x5400 */ { 997, 0x08a5 }, { 1002, 0x1710 }, { 1007, 0x0434 }, { 1011, 0xa4c9 }, { 1018, 0xf2b6 }, { 1028, 0xe402 }, { 1033, 0xfeab }, { 1045, 0xc611 }, { 1051, 0x27aa }, { 1059, 0xd18a }, { 1066, 0x4027 }, { 1071, 0x56e5 }, { 1080, 0x0c28 }, { 1084, 0x0940 }, { 1087, 0x981f }, { 1095, 0x4bf3 }, /* 0x5500 */ { 1105, 0x7d3d }, { 1116, 0xf7ec }, { 1128, 0x2b62 }, { 1135, 0x2f74 }, { 1144, 0xf9a5 }, { 1154, 0xef9e }, { 1166, 0x8b0d }, { 1173, 0xa61f }, { 1182, 0x7060 }, { 1187, 0x4ced }, { 1196, 0xff7f }, { 1211, 0x9555 }, { 1219, 0xcdcf }, { 1230, 0x4fa1 }, { 1238, 0x6285 }, { 1244, 0x9f53 }, /* 0x5600 */ { 1254, 0x2cfc }, { 1263, 0x36ff }, { 1275, 0xcf67 }, { 1286, 0x75a9 }, { 1295, 0x8fff }, { 1308, 0xec6f }, { 1319, 0xe0eb }, { 1328, 0xe7bd }, { 1340, 0x3f9f }, { 1352, 0xfff7 }, { 1367, 0x7ff7 }, { 1381, 0xef7f }, { 1395, 0xfbff }, { 1410, 0x136f }, { 1419, 0xd7e8 }, { 1429, 0x19cc }, /* 0x5700 */ { 1436, 0xf8a7 }, { 1446, 0x6fff }, { 1460, 0x08f7 }, { 1468, 0xb1f6 }, { 1478, 0x0b7a }, { 1486, 0x037c }, { 1493, 0x50ac }, { 1499, 0xe737 }, { 1510, 0xe783 }, { 1519, 0xf7f3 }, { 1532, 0x9520 }, { 1537, 0xfeeb }, { 1550, 0x37f3 }, { 1561, 0x58cb }, { 1569, 0x5fee }, { 1581, 0xd8ef }, /* 0x5800 */ { 1592, 0xd73a }, { 1602, 0xbddd }, { 1614, 0xfbec }, { 1626, 0xffde }, { 1640, 0xcfef }, { 1653, 0xbeed }, { 1665, 0xe7df }, { 1678, 0xbfff }, { 1693, 0xfdd4 }, { 1704, 0x39f3 }, { 1714, 0xfcff }, { 1728, 0xefff }, { 1743, 0xffdd }, { 1757, 0xffdd }, { 1771, 0xa7ef }, { 1783, 0xfdb6 }, /* 0x5900 */ { 1795, 0x5f6b }, { 1806, 0x698f }, { 1815, 0x114f }, { 1822, 0xe86d }, { 1831, 0x3469 }, { 1838, 0xfa0d }, { 1847, 0xffda }, { 1860, 0xdca7 }, { 1870, 0xda21 }, { 1877, 0xbd33 }, { 1887, 0x30c7 }, { 1894, 0xb5fb }, { 1906, 0xf3bf }, { 1919, 0xca60 }, { 1925, 0xeed7 }, { 1937, 0x75ff }, /* 0x5a00 */ { 1950, 0xec05 }, { 1957, 0x6ef5 }, { 1968, 0xfdd6 }, { 1980, 0xefa9 }, { 1991, 0xf9be }, { 2003, 0xfbdf }, { 2017, 0xfb7b }, { 2030, 0x7b0f }, { 2040, 0xffff }, { 2056, 0xf3fb }, { 2069, 0xfbff }, { 2084, 0xbed3 }, { 2095, 0xedf9 }, { 2107, 0xeeab }, { 2118, 0xf5b4 }, { 2128, 0xfffd }, /* 0x5b00 */ { 2143, 0xfdff }, { 2158, 0xff3f }, { 2172, 0xffff }, { 2188, 0xff6b }, { 2201, 0xfffe }, { 2216, 0x4044 }, { 2219, 0xe983 }, { 2227, 0xdbd4 }, { 2237, 0x6444 }, { 2242, 0x8057 }, { 2248, 0xf380 }, { 2255, 0x1c86 }, { 2261, 0xef0b }, { 2271, 0x1ff2 }, { 2281, 0xbecd }, { 2292, 0x60fe }, /* 0x5c00 */ { 2301, 0x79ad }, { 2311, 0xca8d }, { 2319, 0xef4b }, { 2330, 0x00ed }, { 2336, 0x30d8 }, { 2342, 0xbddc }, { 2353, 0x3f94 }, { 2362, 0x79fd }, { 2374, 0xcef9 }, { 2385, 0xe02c }, { 2391, 0xc5f3 }, { 2401, 0x5e55 }, { 2410, 0xf7ed }, { 2423, 0xfdfb }, { 2437, 0xda8d }, { 2446, 0xf7fe }, /* 0x5d00 */ { 2460, 0xbf33 }, { 2471, 0xb7af }, { 2483, 0x9d2f }, { 2493, 0x9fef }, { 2506, 0xe37f }, { 2518, 0xd6ff }, { 2531, 0x65ff }, { 2543, 0xffef }, { 2558, 0xfffb }, { 2573, 0xddff }, { 2587, 0xffff }, { 2603, 0xff7f }, { 2618, 0xdfdf }, { 2632, 0x97ff }, { 2645, 0x3419 }, { 2651, 0x9f61 }, /* 0x5e00 */ { 2660, 0x6e91 }, { 2668, 0xc08c }, { 2673, 0x9f3f }, { 2685, 0xc67d }, { 2695, 0xefcb }, { 2707, 0xb7cf }, { 2719, 0xfff9 }, { 2733, 0x42a3 }, { 2739, 0x732e }, { 2748, 0x2904 }, { 2752, 0xdf1e }, { 2763, 0xbc17 }, { 2772, 0xf9ff }, { 2786, 0xf7b1 }, { 2797, 0xfaff }, { 2811, 0x3b2f }, /* 0x5f00 */ { 2821, 0x72e0 }, { 2828, 0x7655 }, { 2837, 0x591e }, { 2845, 0xe9fd }, { 2857, 0xfffe }, { 2872, 0xde12 }, { 2880, 0xc9a9 }, { 2888, 0xe574 }, { 2897, 0xe048 }, { 2902, 0xec5a }, { 2911, 0x9afd }, { 2922, 0xcf5f }, { 2934, 0x4d87 }, { 2942, 0xdc38 }, { 2950, 0x936c }, { 2958, 0x16dd }, /* 0x6000 */ { 2967, 0x1b80 }, { 2972, 0xc58b }, { 2980, 0x701c }, { 2986, 0x67df }, { 2998, 0xd7f1 }, { 3009, 0xd9da }, { 3019, 0x4063 }, { 3024, 0x40b6 }, { 3030, 0xcde7 }, { 3041, 0x53ab }, { 3050, 0x46b6 }, { 3058, 0xe6e9 }, { 3068, 0xf39f }, { 3080, 0x4add }, { 3089, 0x043e }, { 3095, 0xf9a6 }, /* 0x6100 */ { 3105, 0x1cbc }, { 3113, 0x7bdf }, { 3126, 0xf726 }, { 3136, 0x7fff }, { 3151, 0xaaff }, { 3163, 0xdfdd }, { 3176, 0xfe7b }, { 3189, 0xff5e }, { 3202, 0xb7ff }, { 3216, 0xdfef }, { 3230, 0xec7f }, { 3242, 0xbf7f }, { 3256, 0xf2fb }, { 3268, 0xffe9 }, { 3281, 0xffbf }, { 3296, 0x7fdf }, /* 0x6200 */ { 3310, 0x02bf }, { 3318, 0x7218 }, { 3324, 0xabc9 }, { 3333, 0x1f67 }, { 3343, 0x8474 }, { 3349, 0xf6e1 }, { 3359, 0x0137 }, { 3365, 0x2db6 }, { 3374, 0xf9ee }, { 3386, 0x7211 }, { 3392, 0xe6c8 }, { 3400, 0x45dd }, { 3409, 0x880b }, { 3414, 0x6022 }, { 3418, 0x0c13 }, { 3423, 0x0f25 }, /* 0x6300 */ { 3430, 0xbc79 }, { 3440, 0x13bd }, { 3449, 0x72c0 }, { 3455, 0xd9fb }, { 3467, 0x0593 }, { 3473, 0x3fde }, { 3485, 0x9d71 }, { 3494, 0xf33d }, { 3505, 0x287a }, { 3512, 0xfeba }, { 3524, 0x8852 }, { 3529, 0xaa66 }, { 3537, 0x1daf }, { 3547, 0xbfba }, { 3559, 0xd9f4 }, { 3569, 0x5eab }, /* 0x6400 */ { 3579, 0x67d8 }, { 3588, 0xa7e6 }, { 3598, 0xcbbc }, { 3608, 0x5bef }, { 3620, 0xfa0d }, { 3629, 0xbeeb }, { 3641, 0xdd7f }, { 3654, 0xf8ff }, { 3667, 0xff4b }, { 3679, 0xbd99 }, { 3689, 0x8def }, { 3700, 0xea5e }, { 3710, 0x9fda }, { 3721, 0xbe7a }, { 3732, 0xffab }, { 3745, 0xffff }, /* 0x6500 */ { 3761, 0xfdfe }, { 3775, 0xfefb }, { 3789, 0x37df }, { 3801, 0x348f }, { 3809, 0x6cdf }, { 3820, 0x959d }, { 3829, 0xe7b3 }, { 3840, 0xff6a }, { 3852, 0xe77f }, { 3865, 0x6574 }, { 3873, 0x554d }, { 3881, 0xcdfe }, { 3893, 0x2785 }, { 3900, 0xff3b }, { 3913, 0x0c1a }, { 3918, 0xfb3c }, /* 0x6600 */ { 3929, 0x2bb2 }, { 3937, 0x5dc7 }, { 3947, 0x5e5e }, { 3957, 0xaf8d }, { 3967, 0x67f5 }, { 3978, 0x7b03 }, { 3986, 0x3ead }, { 3996, 0xbb2e }, { 4006, 0xef6b }, { 4018, 0xdf3d }, { 4030, 0xbe7f }, { 4043, 0xbdef }, { 4056, 0xffff }, { 4072, 0xc5ff }, { 4084, 0xfdbf }, { 4098, 0x2d62 }, /* 0x6700 */ { 4105, 0xd0fe }, { 4115, 0x574e }, { 4124, 0x42bf }, { 4133, 0xdbcd }, { 4144, 0x2cb2 }, { 4151, 0x2fb4 }, { 4160, 0x58dc }, { 4168, 0x2f52 }, { 4176, 0xf56d }, { 4187, 0x8a5e }, { 4195, 0x5253 }, { 4202, 0xfe16 }, { 4212, 0x7fe5 }, { 4224, 0x88e0 }, { 4229, 0x6dda }, { 4239, 0x5fe4 }, /* 0x6800 */ { 4249, 0x205e }, { 4255, 0xdf35 }, { 4266, 0xf9fd }, { 4279, 0x8c73 }, { 4287, 0xa880 }, { 4291, 0xffc4 }, { 4302, 0xf400 }, { 4307, 0xff2f }, { 4320, 0x7f95 }, { 4331, 0xff77 }, { 4345, 0x5e3b }, { 4355, 0xffd6 }, { 4368, 0xd5fa }, { 4379, 0xfadb }, { 4391, 0xbff6 }, { 4404, 0xe9dc }, /* 0x6900 */ { 4414, 0x97dd }, { 4425, 0x7ffa }, { 4438, 0xdfee }, { 4451, 0x5dee }, { 4462, 0xfffb }, { 4477, 0x9b6f }, { 4488, 0xb7b6 }, { 4499, 0xec7d }, { 4510, 0xdc2a }, { 4518, 0xe6cf }, { 4529, 0xd67f }, { 4541, 0xf76d }, { 4553, 0xabfd }, { 4565, 0x77ee }, { 4577, 0xdffe }, { 4591, 0x5ffb }, /* 0x6a00 */ { 4604, 0xfbff }, { 4619, 0x7e7f }, { 4632, 0x7afd }, { 4644, 0x9fdd }, { 4656, 0xff6f }, { 4670, 0xf4fe }, { 4682, 0xffdd }, { 4696, 0xedfd }, { 4709, 0xbfee }, { 4722, 0xff7c }, { 4735, 0xe5fe }, { 4747, 0xffff }, { 4763, 0xffff }, { 4779, 0xffff }, { 4795, 0xffff }, { 4811, 0xffff }, /* 0x6b00 */ { 4827, 0xffff }, { 4843, 0xffff }, { 4859, 0xff60 }, { 4869, 0xb97b }, { 4880, 0xed37 }, { 4891, 0xfdff }, { 4906, 0xfb03 }, { 4915, 0xe5ff }, { 4928, 0xd121 }, { 4934, 0xf3b3 }, { 4945, 0xfbfd }, { 4959, 0x7f47 }, { 4970, 0x57d9 }, { 4980, 0xf503 }, { 4988, 0x73fd }, { 5000, 0xddd7 }, /* 0x6c00 */ { 5012, 0x5f1f }, { 5023, 0x7084 }, { 5028, 0x3829 }, { 5034, 0xdeca }, { 5044, 0xf938 }, { 5053, 0x074e }, { 5060, 0xf8ec }, { 5070, 0x9daa }, { 5079, 0x6c91 }, { 5086, 0x75e6 }, { 5096, 0x9105 }, { 5101, 0x04f1 }, { 5107, 0xe9cf }, { 5118, 0xb706 }, { 5126, 0x32d0 }, { 5132, 0x8214 }, /* 0x6d00 */ { 5136, 0xa76d }, { 5146, 0xb17b }, { 5156, 0xb35f }, { 5167, 0x85d1 }, { 5174, 0x1215 }, { 5179, 0xa9e1 }, { 5187, 0x39b6 }, { 5196, 0xee6f }, { 5208, 0xacdb }, { 5218, 0x17c5 }, { 5226, 0x3024 }, { 5230, 0x7edb }, { 5242, 0xe70e }, { 5251, 0x9cbd }, { 5261, 0xa7ac }, { 5270, 0xe575 }, /* 0x6e00 */ { 5280, 0x8bdf }, { 5291, 0xdb2c }, { 5300, 0x55c4 }, { 5307, 0xfaeb }, { 5319, 0x9fe7 }, { 5331, 0x76a7 }, { 5341, 0xb7ff }, { 5355, 0x3fff }, { 5369, 0x7d97 }, { 5380, 0x6efe }, { 5392, 0x7b5b }, { 5403, 0xd329 }, { 5411, 0x7779 }, { 5422, 0x3b45 }, { 5430, 0xfc88 }, { 5438, 0xfdef }, /* 0x6f00 */ { 5452, 0x7dbb }, { 5464, 0xffc7 }, { 5477, 0x51ee }, { 5486, 0xbfb5 }, { 5498, 0xd73f }, { 5510, 0xaeff }, { 5523, 0x9fbb }, { 5535, 0xeaeb }, { 5546, 0x8cef }, { 5556, 0xefff }, { 5571, 0xff7d }, { 5585, 0xfdb7 }, { 5598, 0xfdfa }, { 5611, 0xbff9 }, { 5624, 0x3ffc }, { 5636, 0xffff }, /* 0x7000 */ { 5652, 0xffff }, { 5668, 0xf3fd }, { 5681, 0xfff7 }, { 5696, 0xfddf }, { 5710, 0x6fff }, { 5724, 0xbfff }, { 5739, 0x47ff }, { 5751, 0x2e9e }, { 5760, 0xb9de }, { 5771, 0xcd8b }, { 5780, 0x07ff }, { 5791, 0xc475 }, { 5799, 0xfaf0 }, { 5809, 0x74ff }, { 5821, 0x442f }, { 5828, 0xdd7f }, /* 0x7100 */ { 5841, 0xf9ff }, { 5855, 0xf896 }, { 5864, 0x7fbf }, { 5878, 0xffbc }, { 5891, 0xabdf }, { 5903, 0xafff }, { 5917, 0xbe2f }, { 5928, 0xdaf3 }, { 5939, 0x7bef }, { 5952, 0x7cef }, { 5964, 0xeefe }, { 5977, 0xfdd7 }, { 5990, 0xbff7 }, { 6004, 0xffcf }, { 6018, 0xbf5e }, { 6030, 0xfdff }, /* 0x7200 */ { 6045, 0xffbf }, { 6060, 0xdfff }, { 6075, 0xeaff }, { 6088, 0x541c }, { 6094, 0xce7f }, { 6106, 0x55bb }, { 6116, 0x3d39 }, { 6125, 0x39db }, { 6135, 0x53ec }, { 6144, 0x7ffb }, { 6158, 0x4fff }, { 6171, 0xfc2e }, { 6181, 0x9ee1 }, { 6190, 0xbd7a }, { 6201, 0x0cfc }, { 6209, 0xe260 }, /* 0x7300 */ { 6215, 0xbbf5 }, { 6227, 0x8717 }, { 6235, 0xa1d9 }, { 6243, 0x3c6d }, { 6252, 0xdfff }, { 6267, 0xff7a }, { 6280, 0x4ffe }, { 6292, 0xbfff }, { 6307, 0xb56f }, { 6318, 0x77bd }, { 6330, 0x35fb }, { 6341, 0xf372 }, { 6351, 0x58fa }, { 6360, 0xbdfc }, { 6372, 0xdd5e }, { 6383, 0xfffb }, /* 0x7400 */ { 6398, 0x7997 }, { 6408, 0xf3fe }, { 6421, 0xaa9b }, { 6430, 0xef86 }, { 6440, 0xfffd }, { 6455, 0x215f }, { 6463, 0xdfff }, { 6478, 0xbf3e }, { 6490, 0xb774 }, { 6500, 0xaffe }, { 6513, 0xfc7f }, { 6526, 0xfbff }, { 6541, 0xffff }, { 6557, 0xaffb }, { 6570, 0x3fa2 }, { 6579, 0x7f2f }, /* 0x7500 */ { 6591, 0x5fef }, { 6604, 0x68f5 }, { 6613, 0x44df }, { 6622, 0xb250 }, { 6628, 0x26de }, { 6637, 0xe1ef }, { 6648, 0xfb9f }, { 6661, 0x7ceb }, { 6672, 0x77b7 }, { 6684, 0x5929 }, { 6691, 0x27c4 }, { 6698, 0x8cc0 }, { 6703, 0xd843 }, { 6710, 0xb68b }, { 6719, 0xf223 }, { 6727, 0x6dec }, /* 0x7600 */ { 6737, 0xebd4 }, { 6747, 0x745e }, { 6756, 0xd18a }, { 6763, 0x2ec6 }, { 6771, 0xcff6 }, { 6783, 0xafaf }, { 6795, 0x77f7 }, { 6808, 0x96ff }, { 6820, 0xb62b }, { 6829, 0xfdb5 }, { 6841, 0xbfef }, { 6855, 0x7fe9 }, { 6867, 0x1a9b }, { 6875, 0x7628 }, { 6882, 0x3fdf }, { 6895, 0xace9 }, /* 0x7700 */ { 6904, 0xd46d }, { 6913, 0x79ff }, { 6926, 0x5cba }, { 6935, 0xea1f }, { 6945, 0xff74 }, { 6957, 0xf3fc }, { 6969, 0xe691 }, { 6977, 0x1dff }, { 6989, 0x8fce }, { 6999, 0x7ff9 }, { 7012, 0xe95a }, { 7021, 0x57d6 }, { 7031, 0xdfff }, { 7046, 0xe77f }, { 7059, 0x8553 }, { 7066, 0x1eb7 }, /* 0x7800 */ { 7076, 0xcdf8 }, { 7086, 0x4a29 }, { 7092, 0xcd17 }, { 7101, 0xa06e }, { 7108, 0xaf5e }, { 7119, 0xdf1a }, { 7129, 0x83ff }, { 7140, 0xef7f }, { 7154, 0x8d7f }, { 7165, 0x6275 }, { 7173, 0xff55 }, { 7185, 0xbde0 }, { 7194, 0xf1dd }, { 7205, 0xfdce }, { 7217, 0xeeff }, { 7231, 0xfb6b }, /* 0x7900 */ { 7243, 0xffdd }, { 7257, 0xbff7 }, { 7271, 0xffef }, { 7286, 0xa3ef }, { 7297, 0xfcbc }, { 7308, 0x0337 }, { 7315, 0x5e5a }, { 7324, 0xfa7f }, { 7337, 0x7bcc }, { 7347, 0xfbff }, { 7362, 0xff7f }, { 7377, 0x91f7 }, { 7387, 0xd5b4 }, { 7396, 0x7ed9 }, { 7407, 0x5527 }, { 7415, 0xd6fe }, /* 0x7a00 */ { 7427, 0x97b2 }, { 7436, 0xbb6f }, { 7448, 0xfff6 }, { 7462, 0x4577 }, { 7471, 0xffbf }, { 7486, 0xff7d }, { 7500, 0xffff }, { 7516, 0x782e }, { 7524, 0xdea4 }, { 7533, 0x4e19 }, { 7540, 0xce9e }, { 7550, 0x7ff7 }, { 7564, 0xf7ff }, { 7579, 0x3dbf }, { 7591, 0x5f96 }, { 7601, 0x59ff }, /* 0x7b00 */ { 7613, 0x72a7 }, { 7622, 0xb5cd }, { 7632, 0xa28e }, { 7639, 0xaaf5 }, { 7649, 0x655f }, { 7659, 0xd2a8 }, { 7666, 0xbffa }, { 7679, 0xb559 }, { 7688, 0xdfde }, { 7701, 0xcf4e }, { 7711, 0xc039 }, { 7717, 0xfeed }, { 7730, 0xef3d }, { 7742, 0xd9f5 }, { 7753, 0xbb9d }, { 7764, 0xaf7d }, /* 0x7c00 */ { 7776, 0x677f }, { 7788, 0x7fbf }, { 7802, 0xfb3f }, { 7815, 0x7eff }, { 7829, 0xdffc }, { 7842, 0xffff }, { 7858, 0xffff }, { 7874, 0xc7e7 }, { 7885, 0xfdff }, { 7900, 0x0e59 }, { 7907, 0xbbcb }, { 7918, 0x8df1 }, { 7927, 0xca5d }, { 7936, 0x6d1f }, { 7946, 0x7efe }, { 7959, 0xf6ff }, /* 0x7d00 */ { 7973, 0xfbff }, { 7988, 0xffff }, { 8004, 0x777a }, { 8015, 0xffff }, { 8031, 0xffff }, { 8047, 0xffff }, { 8063, 0xbfff }, { 8078, 0xff7f }, { 8093, 0xffff }, { 8109, 0xffff }, { 8125, 0xbfbf }, { 8139, 0xffff }, { 8155, 0xffff }, { 8171, 0xffff }, { 8187, 0xffff }, { 8203, 0xffff }, /* 0x7e00 */ { 8219, 0xffff }, { 8235, 0xffff }, { 8251, 0xffff }, { 8267, 0xf7ff }, { 8282, 0xff7d }, { 8296, 0xffff }, { 8312, 0xffff }, { 8328, 0xffff }, { 8344, 0xfffb }, { 8359, 0x77ff }, { 8373, 0x4000 }, { 8374, 0x1810 }, { 8377, 0x0000 }, { 8377, 0x0040 }, { 8378, 0x1010 }, { 8380, 0x0200 }, /* 0x7f00 */ { 8381, 0x0400 }, { 8382, 0x4001 }, { 8384, 0x0000 }, { 8384, 0xfa80 }, { 8391, 0xffcb }, { 8404, 0x7a4c }, { 8412, 0xb8f9 }, { 8422, 0xbde9 }, { 8433, 0xabfd }, { 8445, 0x1bef }, { 8456, 0x7f6d }, { 8468, 0x4cfa }, { 8477, 0xabdd }, { 8488, 0x7ecf }, { 8500, 0xbd9c }, { 8510, 0xe7f4 }, /* 0x8000 */ { 8521, 0xc784 }, { 8528, 0xec0a }, { 8535, 0xf81a }, { 8543, 0x5615 }, { 8550, 0xc3b3 }, { 8559, 0xfaeb }, { 8571, 0xf9ff }, { 8585, 0x7ffd }, { 8599, 0xe526 }, { 8607, 0x42b7 }, { 8615, 0x11c8 }, { 8620, 0x0b69 }, { 8627, 0x8fa0 }, { 8634, 0x813f }, { 8642, 0x404d }, { 8647, 0xcaa0 }, /* 0x8100 */ { 8653, 0x19bb }, { 8662, 0xbaa0 }, { 8669, 0x6fff }, { 8683, 0xbeb9 }, { 8694, 0xe2bf }, { 8705, 0xf9c4 }, { 8714, 0x9d5e }, { 8724, 0x01ec }, { 8730, 0x7afa }, { 8741, 0xc6fd }, { 8752, 0xfab7 }, { 8764, 0xf3f7 }, { 8777, 0xebb0 }, { 8786, 0xffff }, { 8802, 0xcb77 }, { 8813, 0xa7e7 }, /* 0x8200 */ { 8824, 0xcf88 }, { 8832, 0x27ea }, { 8841, 0x42f1 }, { 8848, 0xb404 }, { 8853, 0x756f }, { 8864, 0x7aff }, { 8877, 0x3eff }, { 8890, 0x19e2 }, { 8897, 0x12eb }, { 8905, 0x4c79 }, { 8913, 0x008d }, { 8917, 0x9c64 }, { 8924, 0x026d }, { 8930, 0x2641 }, { 8935, 0x7784 }, { 8943, 0xf56d }, /* 0x8300 */ { 8954, 0x2c01 }, { 8958, 0xe34d }, { 8967, 0x467f }, { 8977, 0xe885 }, { 8984, 0x7d36 }, { 8994, 0x23e8 }, { 9001, 0x0004 }, { 9002, 0xc67f }, { 9013, 0xbd9f }, { 9025, 0xa6f3 }, { 9035, 0xf0fe }, { 9046, 0xc820 }, { 9050, 0x6b5c }, { 9059, 0x4eaf }, { 9069, 0xf9dc }, { 9080, 0xdcf8 }, /* 0x8400 */ { 9090, 0x07a5 }, { 9097, 0xcefd }, { 9109, 0xfe0f }, { 9120, 0xcefd }, { 9132, 0xffbf }, { 9147, 0xe17d }, { 9157, 0xc5f5 }, { 9167, 0xfa95 }, { 9177, 0xa47b }, { 9186, 0xed7f }, { 9199, 0x7ffd }, { 9213, 0x58eb }, { 9222, 0xd9ed }, { 9233, 0x5fb4 }, { 9243, 0xef96 }, { 9254, 0x6ffe }, /* 0x8500 */ { 9267, 0xefff }, { 9282, 0x7b75 }, { 9293, 0xe7fd }, { 9306, 0xc07f }, { 9315, 0xf8f7 }, { 9327, 0xbdbf }, { 9340, 0xfeef }, { 9354, 0xb1eb }, { 9364, 0x7f4f }, { 9376, 0xe7ff }, { 9390, 0x3aef }, { 9401, 0xfd7e }, { 9414, 0x7dfd }, { 9427, 0xefd6 }, { 9439, 0xfdef }, { 9453, 0x77ff }, /* 0x8600 */ { 9467, 0xffdf }, { 9482, 0xffbd }, { 9496, 0xfd7f }, { 9510, 0xeeff }, { 9524, 0x1fff }, { 9537, 0xbbec }, { 9548, 0xa7fb }, { 9560, 0x01fd }, { 9568, 0xc3f8 }, { 9577, 0xcfd7 }, { 9589, 0x6867 }, { 9597, 0xfb8c }, { 9607, 0x312e }, { 9614, 0x34ec }, { 9622, 0x9def }, { 9634, 0xbce0 }, /* 0x8700 */ { 9642, 0xd872 }, { 9650, 0xaa53 }, { 9658, 0xbdd1 }, { 9668, 0x376d }, { 9678, 0xac7f }, { 9689, 0xfd77 }, { 9702, 0xbfc6 }, { 9713, 0x87ae }, { 9722, 0xd6d3 }, { 9732, 0x7f77 }, { 9745, 0x46ff }, { 9756, 0xdbd7 }, { 9768, 0xf3be }, { 9780, 0xf7f1 }, { 9792, 0xbbde }, { 9804, 0xbdff }, /* 0x8800 */ { 9818, 0xfbf7 }, { 9832, 0xf797 }, { 9844, 0xfff9 }, { 9858, 0xedfb }, { 9871, 0xcfce }, { 9882, 0xfd6f }, { 9895, 0xa4c1 }, { 9901, 0x1f7a }, { 9911, 0xd6c9 }, { 9920, 0xefbb }, { 9933, 0xd7eb }, { 9945, 0xef7d }, { 9958, 0xbd99 }, { 9968, 0x7ccb }, { 9978, 0xfec3 }, { 9989, 0xace4 }, /* 0x8900 */ { 9997, 0xfbfb }, { 10011, 0xf1f2 }, { 10021, 0xf3dd }, { 10033, 0xffae }, { 10046, 0xffed }, { 10060, 0x3fff }, { 10074, 0xffbf }, { 10089, 0x77ff }, { 10103, 0xffb5 }, { 10116, 0xffff }, { 10132, 0xffff }, { 10148, 0xffff }, { 10164, 0x2009 }, { 10167, 0xabb8 }, { 10176, 0x7797 }, { 10187, 0xfff7 }, /* 0x8a00 */ { 10202, 0xff7e }, { 10216, 0xffff }, { 10232, 0xffff }, { 10248, 0xbfff }, { 10263, 0xfeff }, { 10278, 0xffff }, { 10294, 0xffff }, { 10310, 0xfdff }, { 10325, 0xf9ff }, { 10339, 0xfff7 }, { 10354, 0xffff }, { 10370, 0xffff }, { 10386, 0xffff }, { 10402, 0xffff }, { 10418, 0xffff }, { 10434, 0xffff }, /* 0x8b00 */ { 10450, 0xff7f }, { 10465, 0xffff }, { 10481, 0xffbf }, { 10496, 0xffff }, { 10512, 0xffff }, { 10528, 0xffff }, { 10544, 0xefbf }, { 10558, 0xffff }, { 10574, 0xffff }, { 10590, 0xffff }, { 10606, 0x1000 }, { 10607, 0x0802 }, { 10609, 0x0080 }, { 10610, 0x0001 }, { 10611, 0x0400 }, { 10612, 0x0000 }, /* 0x8c00 */ { 10612, 0x0200 }, { 10613, 0x4000 }, { 10614, 0x0000 }, { 10614, 0xff00 }, { 10622, 0xed3d }, { 10633, 0xfbdf }, { 10647, 0xf3f9 }, { 10659, 0xf8f7 }, { 10671, 0xe9db }, { 10682, 0xfeef }, { 10696, 0xffff }, { 10712, 0xffff }, { 10728, 0xffff }, { 10744, 0xffff }, { 10760, 0xffff }, { 10776, 0xffff }, /* 0x8d00 */ { 10792, 0xffff }, { 10808, 0x1fff }, { 10821, 0x0001 }, { 10822, 0x0000 }, { 10822, 0x0000 }, { 10822, 0x8086 }, { 10826, 0xd720 }, { 10833, 0xff06 }, { 10843, 0xf3cd }, { 10854, 0x7fed }, { 10867, 0xfff7 }, { 10882, 0x2ac5 }, { 10889, 0x27a7 }, { 10898, 0x133d }, { 10906, 0x62e7 }, { 10915, 0xd057 }, /* 0x8e00 */ { 10923, 0x69df }, { 10934, 0x1fef }, { 10946, 0x29f3 }, { 10955, 0xd9dd }, { 10966, 0xf068 }, { 10973, 0xfdf9 }, { 10986, 0x4dbf }, { 10997, 0x6faa }, { 11007, 0x7f5d }, { 11019, 0xafee }, { 11031, 0x67ff }, { 11044, 0xfbfb }, { 11058, 0xbfff }, { 11073, 0xffff }, { 11089, 0xffff }, { 11105, 0xffff }, /* 0x8f00 */ { 11121, 0xffff }, { 11137, 0xffff }, { 11153, 0xffff }, { 11169, 0xffff }, { 11185, 0xffff }, { 11201, 0xffff }, { 11217, 0x043f }, { 11224, 0x0000 }, { 11224, 0x1001 }, { 11226, 0x2004 }, { 11228, 0xf4f7 }, { 11240, 0x9dbc }, { 11250, 0xbe49 }, { 11259, 0x04c4 }, { 11263, 0x908b }, { 11269, 0xdc76 }, /* 0x9000 */ { 11279, 0x5180 }, { 11283, 0x1328 }, { 11288, 0x1fb8 }, { 11297, 0xa69f }, { 11307, 0x5f69 }, { 11317, 0xf670 }, { 11326, 0x9ed3 }, { 11336, 0x5fcf }, { 11348, 0xf6f2 }, { 11359, 0xd555 }, { 11368, 0x2bb1 }, { 11376, 0xb084 }, { 11381, 0x3b4d }, { 11390, 0xc774 }, { 11399, 0x5639 }, { 11407, 0x9eef }, /* 0x9100 */ { 11419, 0xffeb }, { 11433, 0xbdff }, { 11447, 0x7ff3 }, { 11460, 0xfdfd }, { 11474, 0x01b7 }, { 11481, 0x9b7a }, { 11491, 0x29c1 }, { 11497, 0x1c08 }, { 11501, 0xc55f }, { 11511, 0xf3f8 }, { 11522, 0x1bf3 }, { 11532, 0xfbcf }, { 11545, 0x097f }, { 11554, 0xeffd }, { 11568, 0xffff }, { 11584, 0xffff }, /* 0x9200 */ { 11600, 0xffff }, { 11616, 0xffff }, { 11632, 0xffff }, { 11648, 0xffff }, { 11664, 0xffff }, { 11680, 0xffff }, { 11696, 0xffff }, { 11712, 0xffef }, { 11727, 0xbfff }, { 11742, 0xffff }, { 11758, 0xbfff }, { 11773, 0xffff }, { 11789, 0xfeff }, { 11804, 0xffff }, { 11820, 0xffff }, { 11836, 0xffff }, /* 0x9300 */ { 11852, 0xffff }, { 11868, 0xffff }, { 11884, 0xffff }, { 11900, 0xbfff }, { 11915, 0xffff }, { 11931, 0xffff }, { 11947, 0xfbff }, { 11962, 0xffff }, { 11978, 0x7fff }, { 11993, 0xffff }, { 12009, 0xffff }, { 12025, 0xffff }, { 12041, 0xfbff }, { 12056, 0xffbf }, { 12071, 0xffff }, { 12087, 0xffff }, /* 0x9400 */ { 12103, 0xffff }, { 12119, 0xffff }, { 12135, 0xffff }, { 12151, 0xbfff }, { 12166, 0xffff }, { 12182, 0xffff }, { 12198, 0xf7ff }, { 12213, 0xffff }, { 12229, 0x001f }, { 12234, 0x0142 }, { 12237, 0x0000 }, { 12237, 0x0000 }, { 12237, 0x8080 }, { 12239, 0x0418 }, { 12242, 0x0040 }, { 12243, 0x0800 }, /* 0x9500 */ { 12244, 0x0000 }, { 12244, 0x1000 }, { 12245, 0x0081 }, { 12247, 0x2008 }, { 12249, 0x0908 }, { 12252, 0x0420 }, { 12254, 0x4001 }, { 12256, 0x7fb0 }, { 12266, 0xffff }, { 12282, 0xffff }, { 12298, 0xffff }, { 12314, 0xffff }, { 12330, 0xffff }, { 12346, 0xffff }, { 12362, 0x10ff }, { 12371, 0x8000 }, /* 0x9600 */ { 12372, 0x0080 }, { 12373, 0x4908 }, { 12377, 0xbbf9 }, { 12389, 0x4781 }, { 12395, 0xc40a }, { 12400, 0x77ce }, { 12411, 0xe869 }, { 12419, 0xff0b }, { 12430, 0x569f }, { 12440, 0xec6e }, { 12450, 0xff7f }, { 12465, 0x8db6 }, { 12474, 0x0d0c }, { 12479, 0xffdb }, { 12493, 0x78fe }, { 12504, 0xbd37 }, /* 0x9700 */ { 12515, 0x1c2c }, { 12521, 0xafb7 }, { 12533, 0xdbff }, { 12547, 0xbcfa }, { 12558, 0xffff }, { 12574, 0xb5b3 }, { 12584, 0xfdd8 }, { 12595, 0xefa7 }, { 12607, 0xd7df }, { 12620, 0xfee9 }, { 12632, 0x57f6 }, { 12643, 0xffeb }, { 12657, 0xffff }, { 12673, 0xffff }, { 12689, 0xc13f }, { 12698, 0xff97 }, /* 0x9800 */ { 12711, 0xffff }, { 12727, 0xffff }, { 12743, 0xffff }, { 12759, 0xffff }, { 12775, 0xffff }, { 12791, 0xffff }, { 12807, 0xffff }, { 12823, 0x001f }, { 12828, 0x4800 }, { 12830, 0x0224 }, { 12833, 0xff08 }, { 12842, 0xffff }, { 12858, 0xbfff }, { 12873, 0x38d1 }, { 12880, 0xfe7f }, { 12894, 0xffff }, /* 0x9900 */ { 12910, 0xdfff }, { 12925, 0xfffe }, { 12940, 0xbfff }, { 12955, 0xffff }, { 12971, 0xffff }, { 12987, 0xffcf }, { 13001, 0x0057 }, { 13006, 0x4b08 }, { 13011, 0x520c }, { 13016, 0xfc00 }, { 13022, 0xfedf }, { 13036, 0xffff }, { 13052, 0xffff }, { 13068, 0xffff }, { 13084, 0xffff }, { 13100, 0xffff }, /* 0x9a00 */ { 13116, 0xffff }, { 13132, 0xffff }, { 13148, 0xffff }, { 13164, 0xffff }, { 13180, 0xffff }, { 13196, 0xffff }, { 13212, 0x0fff }, { 13224, 0x0004 }, { 13225, 0x6208 }, { 13229, 0x0230 }, { 13232, 0xfe40 }, { 13240, 0xea3c }, { 13249, 0xe7d8 }, { 13259, 0x7ef5 }, { 13271, 0x57bd }, { 13282, 0xf5ff }, /* 0x9b00 */ { 13296, 0x7ef7 }, { 13309, 0x7ff7 }, { 13323, 0x7ff7 }, { 13337, 0xe7fb }, { 13350, 0x5c41 }, { 13356, 0xffed }, { 13370, 0xffff }, { 13386, 0xffff }, { 13402, 0xffff }, { 13418, 0xffff }, { 13434, 0xffff }, { 13450, 0xffff }, { 13466, 0xffff }, { 13482, 0xffff }, { 13498, 0xffff }, { 13514, 0xffff }, /* 0x9c00 */ { 13530, 0xffff }, { 13546, 0xffff }, { 13562, 0xffff }, { 13578, 0xffff }, { 13594, 0xffff }, { 13610, 0xffff }, { 13626, 0xffff }, { 13642, 0x6fff }, { 13656, 0x9619 }, { 13663, 0x23c8 }, { 13669, 0x9400 }, { 13672, 0xc200 }, { 13675, 0x0307 }, { 13680, 0x0c06 }, { 13684, 0xfffb }, { 13699, 0xffff }, /* 0x9d00 */ { 13715, 0xffff }, { 13731, 0xffff }, { 13747, 0xffff }, { 13763, 0xffff }, { 13779, 0xffff }, { 13795, 0xffff }, { 13811, 0xffff }, { 13827, 0xffff }, { 13843, 0xffff }, { 13859, 0xffff }, { 13875, 0xffff }, { 13891, 0xffff }, { 13907, 0xffff }, { 13923, 0xffff }, { 13939, 0xffff }, { 13955, 0xffff }, /* 0x9e00 */ { 13971, 0xffff }, { 13987, 0x7fff }, { 14002, 0x4090 }, { 14005, 0x1811 }, { 14009, 0x2001 }, { 14011, 0xa25d }, { 14019, 0xc027 }, { 14025, 0x3ff4 }, { 14036, 0xf67b }, { 14048, 0x5ff3 }, { 14060, 0xffbf }, { 14075, 0x96ef }, { 14086, 0x1def }, { 14097, 0x46ed }, { 14106, 0x795a }, { 14115, 0xa5ff }, /* 0x9f00 */ { 14127, 0x97ff }, { 14140, 0xfd76 }, { 14152, 0x6ffa }, { 14164, 0x957f }, { 14175, 0xffef }, { 14190, 0xfffc }, { 14204, 0xffff }, { 14220, 0x7fff }, { 14235, 0xe006 }, { 14240, 0x71ff }, { 14252, 0x003e }, }; static const Summary16 gbkext_inv_uni2indx_pagef9[19] = { /* 0xf900 */ { 14257, 0x0000 }, { 14257, 0x0000 }, { 14257, 0x1000 }, { 14258, 0x0000 }, { 14258, 0x0000 }, { 14258, 0x0000 }, { 14258, 0x0000 }, { 14258, 0x0200 }, { 14259, 0x0000 }, { 14259, 0x0020 }, { 14260, 0x0000 }, { 14260, 0x0000 }, { 14260, 0x0000 }, { 14260, 0x0000 }, { 14260, 0x0080 }, { 14261, 0x0002 }, /* 0xfa00 */ { 14262, 0xf000 }, { 14266, 0x811a }, { 14271, 0x039b }, }; static const Summary16 gbkext_inv_uni2indx_pagefe[31] = { /* 0xfe00 */ { 14278, 0x0000 }, { 14278, 0x0000 }, { 14278, 0x0000 }, { 14278, 0x0001 }, { 14279, 0xfe00 }, { 14286, 0xfef7 }, { 14300, 0x0f7f }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, /* 0xff00 */ { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0000 }, { 14311, 0x0014 }, }; static int gbkext_inv_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0200 && wc < 0x02e0) summary = &gbkext_inv_uni2indx_page02[(wc>>4)-0x020]; else if (wc >= 0x2000 && wc < 0x22c0) summary = &gbkext_inv_uni2indx_page20[(wc>>4)-0x200]; else if (wc >= 0x2500 && wc < 0x2610) summary = &gbkext_inv_uni2indx_page25[(wc>>4)-0x250]; else if (wc >= 0x3000 && wc < 0x3100) summary = &gbkext_inv_uni2indx_page30[(wc>>4)-0x300]; else if (wc >= 0x3200 && wc < 0x33e0) summary = &gbkext_inv_uni2indx_page32[(wc>>4)-0x320]; else if (wc >= 0x4e00 && wc < 0x9fb0) summary = &gbkext_inv_uni2indx_page4e[(wc>>4)-0x4e0]; else if (wc >= 0xf900 && wc < 0xfa30) summary = &gbkext_inv_uni2indx_pagef9[(wc>>4)-0xf90]; else if (wc >= 0xfe00 && wc < 0xfff0) summary = &gbkext_inv_uni2indx_pagefe[(wc>>4)-0xfe0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = gbkext_inv_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/georgian_academy.h0100644000000000000000000000621107206266437016572 0ustar rootroot /* * GEORGIAN-ACADEMY */ static const unsigned short georgian_academy_2uni[32] = { /* 0x80 */ 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f, /* 0x90 */ 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178, }; static int georgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c >= 0x80 && c < 0xa0) *pwc = (ucs4_t) georgian_academy_2uni[c-0x80]; else if (c >= 0xc0 && c < 0xe7) *pwc = (ucs4_t) c + 0x1010; else *pwc = (ucs4_t) c; return 1; } static const unsigned char georgian_academy_page00[32] = { 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */ 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */ }; static const unsigned char georgian_academy_page01[72] = { 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char georgian_academy_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char georgian_academy_page20[48] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int georgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x0080 && wc < 0x00a0) c = georgian_academy_page00[wc-0x0080]; else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100)) c = wc; else if (wc >= 0x0150 && wc < 0x0198) c = georgian_academy_page01[wc-0x0150]; else if (wc >= 0x02c0 && wc < 0x02e0) c = georgian_academy_page02[wc-0x02c0]; else if (wc >= 0x10d0 && wc < 0x10f7) c = wc-0x1010; else if (wc >= 0x2010 && wc < 0x2040) c = georgian_academy_page20[wc-0x2010]; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/georgian_ps.h0100644000000000000000000000761607206266437015623 0ustar rootroot /* * GEORGIAN-PS */ static const unsigned short georgian_ps_2uni_1[32] = { /* 0x80 */ 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f, /* 0x90 */ 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178, }; static const unsigned short georgian_ps_2uni_2[39] = { /* 0xc0 */ 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1, 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd, /* 0xd0 */ 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, /* 0xe0 */ 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5, }; static int georgian_ps_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c >= 0x80 && c < 0xa0) *pwc = (ucs4_t) georgian_ps_2uni_1[c-0x80]; else if (c >= 0xc0 && c < 0xe6) *pwc = (ucs4_t) georgian_ps_2uni_2[c-0xc0]; else *pwc = (ucs4_t) c; return 1; } static const unsigned char georgian_ps_page00[32] = { 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */ 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */ }; static const unsigned char georgian_ps_page01[72] = { 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char georgian_ps_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char georgian_ps_page10[40] = { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc8, /* 0xd0-0xd7 */ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xcf, 0xd0, 0xd1, /* 0xd8-0xdf */ 0xd2, 0xd3, 0xd4, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, /* 0xe0-0xe7 */ 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe3, /* 0xe8-0xef */ 0xe4, 0xc7, 0xce, 0xd5, 0xe2, 0xe5, 0x00, 0x00, /* 0xf0-0xf7 */ }; static const unsigned char georgian_ps_page20[48] = { 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static int georgian_ps_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x0080 && wc < 0x00a0) c = georgian_ps_page00[wc-0x0080]; else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100)) c = wc; else if (wc >= 0x0150 && wc < 0x0198) c = georgian_ps_page01[wc-0x0150]; else if (wc >= 0x02c0 && wc < 0x02e0) c = georgian_ps_page02[wc-0x02c0]; else if (wc >= 0x10d0 && wc < 0x10f8) c = georgian_ps_page10[wc-0x10d0]; else if (wc >= 0x2010 && wc < 0x2040) c = georgian_ps_page20[wc-0x2010]; else if (wc == 0x2122) c = 0x99; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/hkscs.h0100644000000000000000000037406307206266437014444 0ustar rootroot /* * HKSCS */ static const unsigned short hkscs_2uni_page88[627] = { /* 0x88 */ 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, 0xf30a, 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f, 0xf310, 0xf311, 0xf312, 0xf313, 0xf314, 0xf315, 0xf316, 0xf317, 0xf318, 0x0100, 0x00c1, 0x01cd, 0x00c0, 0x0112, 0x00c9, 0x011a, 0x00c8, 0x014c, 0x00d3, 0x01d1, 0x00d2, 0xf325, 0x1ebe, 0xf327, 0x1ec0, 0x00ca, 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0251, 0x0113, 0x00e9, 0x011b, 0x00e8, 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2, 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc, 0x00fc, 0xf344, 0x1ebf, 0xf346, 0x1ec1, 0x00ea, 0x0261, 0xf34a, 0xf34b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x89 */ 0xf3a0, 0xf3a1, 0xfffd, 0x650a, 0xfffd, 0xfffd, 0x4e3d, 0x6edd, 0x9d4e, 0x91df, 0xfffd, 0xfffd, 0xf3ac, 0x6491, 0x4f1a, 0x4f28, 0x4fa8, 0x5156, 0x5174, 0x519c, 0x51e4, 0x52a1, 0x52a8, 0x533b, 0x534e, 0x53d1, 0x53d8, 0x56e2, 0x58f0, 0x5904, 0x5907, 0x5932, 0x5934, 0x5b66, 0x5b9e, 0x5b9f, 0x5c9a, 0x5e86, 0x603b, 0x6589, 0x67fe, 0x6804, 0x6865, 0x6d4e, 0x70bc, 0x7535, 0x7ea4, 0x7eac, 0x7eba, 0x7ec7, 0x7ecf, 0x7edf, 0x7f06, 0x7f37, 0x827a, 0x82cf, 0x836f, 0x89c6, 0x8bbe, 0x8be2, 0x8f66, 0x8f67, 0x8f6e, 0x7411, 0x7cfc, 0x7dcd, 0x6946, 0x7ac9, 0x5227, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x918c, 0x78b8, 0x915e, 0x80bc, 0xfffd, 0x8d0b, 0x80f6, 0xf3f0, 0xfffd, 0xfffd, 0x809f, 0x9ec7, 0x4ccd, 0x9dc9, 0x9e0c, 0x4c3e, 0xf3f9, 0xf3fa, 0x9e0a, 0xf3fc, 0x35c1, 0xfffd, 0x6e9a, 0x823e, 0x7519, 0xfffd, 0x4911, 0x9a6c, 0x9a8f, 0x9f99, 0x7987, 0xf408, 0xf409, 0xf40a, 0xf40b, 0x4e24, 0x4e81, 0x4e80, 0x4e87, 0x4ebf, 0x4eeb, 0x4f37, 0x344c, 0x4fbd, 0x3e48, 0x5003, 0x5088, 0x347d, 0x3493, 0x34a5, 0x5186, 0x5905, 0x51db, 0x51fc, 0x5205, 0x4e89, 0x5279, 0x5290, 0x5327, 0x35c7, 0x53a9, 0x3551, 0x53b0, 0x3553, 0x53c2, 0x5423, 0x356d, 0x3572, 0x3681, 0x5493, 0x54a3, 0x54b4, 0x54b9, 0x54d0, 0x54ef, 0x5518, 0x5523, 0x5528, 0x3598, 0x553f, 0x35a5, 0x35bf, 0x55d7, 0x35c5, /* 0x8a */ 0xf43d, 0x5525, 0xfffd, 0xf440, 0xf441, 0xf442, 0x5590, 0xf444, 0x39ec, 0xf446, 0x8e46, 0xf448, 0xf449, 0x4053, 0xf44b, 0x777a, 0xf44d, 0x3a34, 0x47d5, 0xf450, 0xf451, 0xf452, 0x64dd, 0xf454, 0xf455, 0xf456, 0xf457, 0x648d, 0x8e7e, 0xf45a, 0xf45b, 0xf45c, 0xf45d, 0xf45e, 0xf45f, 0xfffd, 0xf461, 0xf462, 0xf463, 0x47f4, 0xf465, 0xf466, 0x9ab2, 0x3a67, 0xf469, 0x3fed, 0x3506, 0xf46c, 0xf46d, 0xf46e, 0xf46f, 0x9d6e, 0x9815, 0xfffd, 0x43d9, 0xf474, 0x64b4, 0x54e3, 0xf477, 0xf478, 0xf479, 0x39fb, 0xf47b, 0xf47c, 0xf47d, 0xf47e, 0x64ea, 0xf480, 0xf481, 0x8e68, 0xf483, 0xf484, 0xf485, 0xfffd, 0x480b, 0xf488, 0x3ffa, 0x5873, 0xf48b, 0xfffd, 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0x5579, 0x40bb, 0x43ba, 0xfffd, 0x4ab4, 0xf497, 0xf498, 0x81aa, 0x98f5, 0xf49b, 0x6379, 0x39fe, 0xf49e, 0x8dc0, 0x56a1, 0x647c, 0x3e43, 0xfffd, 0xf4a4, 0xf4a5, 0xf4a6, 0xf4a7, 0xfffd, 0xf4a9, 0xf4aa, 0x3992, 0x3a06, 0xf4ad, 0x3578, 0xf4af, 0xf4b0, 0x5652, 0xf4b2, 0xf4b3, 0xf4b4, 0x34bc, 0x6c3d, 0xf4b7, 0xfffd, 0xfffd, 0xf4ba, 0xf4bb, 0xf4bc, 0xf4bd, 0xf4be, 0xf4bf, 0xf4c0, 0xf4c1, 0x7f93, 0xf4c3, 0xf4c4, 0xf4c5, 0x35fb, 0xf4c7, 0xf4c8, 0xf4c9, 0xf4ca, 0x3f93, 0xf4cc, 0xf4cd, 0xf4ce, 0xf4cf, 0xfffd, 0xf4d1, 0xf4d2, 0xf4d3, 0xf4d4, 0xf4d5, 0x3ff9, 0xf4d7, 0x6432, 0xf4d9, /* 0x8b */ 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df, 0xf4e0, 0x3a18, 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, 0xf4e8, 0xf4e9, 0x95aa, 0x54cc, 0x82c4, 0x55b9, 0xfffd, 0xf4ef, 0x9c26, 0x9ab6, 0xf4f2, 0xf4f3, 0x7140, 0x816d, 0x80ec, 0x5c1c, 0xf4f8, 0x8134, 0x3797, 0x535f, 0xf4fc, 0x91b6, 0xf4fe, 0xf4ff, 0xf500, 0xf501, 0x35dd, 0xf503, 0x3609, 0xf505, 0x56af, 0xf507, 0xf508, 0xf509, 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510, 0xf511, 0x5a54, 0xf513, 0xf514, 0xf515, 0xf516, 0x579c, 0xf518, 0xf519, 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0x3703, 0xf51f, 0xf520, 0xf521, 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0x5899, 0x5268, 0x361a, 0xf52a, 0x7bb2, 0x5b68, 0x4800, 0x4b2c, 0x9f27, 0x49e7, 0x9c1f, 0x9b8d, 0xf533, 0xf534, 0x55fb, 0x35f2, 0x5689, 0x4e28, 0x5902, 0xf53a, 0xf53b, 0x9751, 0xf53d, 0x4e5b, 0x4ebb, 0x353e, 0x5c23, 0x5f51, 0x5fc4, 0x38fa, 0x624c, 0x6535, 0x6b7a, 0x6c35, 0x6c3a, 0x706c, 0x722b, 0x4e2c, 0x72ad, 0xf54e, 0x7f52, 0x793b, 0x7cf9, 0x7f53, 0xf553, 0x34c1, 0xfffd, 0xf556, 0x8002, 0x8080, 0xf559, 0xf55a, 0x535d, 0x8864, 0x89c1, 0xf55e, 0x8ba0, 0x8d1d, 0x9485, 0x9578, 0x957f, 0x95e8, 0xf565, 0x97e6, 0x9875, 0x98ce, 0x98de, 0x9963, 0xf56b, 0x9c7c, 0x9e1f, 0x9ec4, 0x6b6f, 0x9f9c, 0x4e37, 0xf572, 0x961d, 0x6237, 0x94a2, }; static const unsigned short hkscs_2uni_page8d[3140] = { /* 0x8d */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x5d3e, 0x5d48, 0x5d56, 0x3dfc, 0x380f, 0x5da4, 0x5db9, 0x3820, 0x3838, 0x5e42, 0x5ebd, 0x5f25, 0x5f83, 0x3908, 0x3914, 0x393f, 0x394d, 0x60d7, 0x613d, 0x5ce5, 0x3989, 0x61b7, 0x61b9, 0x61cf, 0x39b8, 0x622c, 0x6290, 0x62e5, 0x6318, 0x39f8, 0x56b1, 0x3a03, 0x63e2, 0x63fb, 0x6407, 0x645a, 0x3a4b, 0x64c0, 0x5d15, 0x5621, 0x9f9f, 0x3a97, 0x6586, 0x3abd, 0x65ff, 0x6653, 0x3af2, 0x6692, 0x3b22, 0x6716, 0x3b42, 0x67a4, 0x6800, 0x3b58, 0x684a, 0x6884, 0x3b72, 0x3b71, 0x3b7b, 0x6909, 0x6943, 0x725c, 0x6964, 0x699f, 0x6985, 0x3bbc, 0x69d6, 0x3bdd, 0x6a65, 0x6a74, 0x6a71, 0x6a82, 0x3bec, 0x6a99, 0x3bf2, 0x6aab, 0x6ab5, 0x6ad4, 0x6af6, 0x6b81, 0x6bc1, 0x6bea, 0x6c75, 0x6caa, 0x3ccb, 0x6d02, 0x6d06, 0x6d26, 0x6d81, 0x3cef, 0x6da4, 0x6db1, 0x6e15, 0x6e18, 0x6e29, 0x6e86, 0xf694, 0x6ebb, 0x6ee2, 0x6eda, 0x9f7f, 0x6ee8, 0x6ee9, 0x6f24, 0x6f34, 0x3d46, 0xf69e, 0x6f81, 0x6fbe, 0x3d6a, 0x3d75, 0x71b7, 0x5c99, 0x3d8a, 0x702c, 0x3d91, 0x7050, 0x7054, 0x706f, 0x707f, 0x7089, 0xf6ad, 0x43c1, 0x35f1, 0xf6b0, /* 0x8e */ 0xe311, 0x57be, 0xe313, 0x713e, 0xe315, 0x364e, 0x69a2, 0xe318, 0x5b74, 0x7a49, 0xe31b, 0xe31c, 0x7a65, 0x7a7d, 0xe31f, 0x7abb, 0x7ab0, 0x7ac2, 0x7ac3, 0x71d1, 0xe325, 0x41ca, 0x7ada, 0x7add, 0x7aea, 0x41ef, 0x54b2, 0xe32c, 0x7b0b, 0x7b55, 0x7b29, 0xe330, 0xe331, 0x7ba2, 0x7b6f, 0x839c, 0xe335, 0xe336, 0x7bd0, 0x8421, 0x7b92, 0xfffd, 0xe33b, 0x3dad, 0xe33d, 0x8492, 0x7bfa, 0xfffd, 0x7c35, 0xe342, 0x7c44, 0x7c83, 0xe345, 0x7ca6, 0x667d, 0xe348, 0x7cc9, 0x7cc7, 0x7ce6, 0x7c74, 0x7cf3, 0x7cf5, 0xfffd, 0x7e67, 0x451d, 0xe352, 0x7d5d, 0xe354, 0x748d, 0x7d89, 0x7dab, 0x7135, 0x7db3, 0xfffd, 0xe35b, 0xe35c, 0x7de4, 0x3d13, 0x7df5, 0xe360, 0x7de5, 0xe362, 0xfffd, 0xe364, 0xe365, 0x7e6e, 0x7e92, 0x432b, 0x946c, 0x7e27, 0x7f40, 0x7f41, 0x7f47, 0x7936, 0xe36f, 0x99e1, 0x7f97, 0xe372, 0x7fa3, 0xe374, 0xe375, 0x455c, 0xe377, 0x4503, 0xe379, 0x7ffa, 0xe37b, 0xfffd, 0x8008, 0x801d, 0xfffd, 0x802f, 0xe381, 0xe382, 0x803b, 0x803c, 0x8061, 0xe386, 0x4989, 0xe388, 0xe389, 0xe38a, 0x6725, 0x80a7, 0xe38d, 0x8107, 0x811a, 0x58b0, 0xe391, 0x6c7f, 0xe393, 0xe394, 0x64e7, 0xe396, 0x8218, 0xe398, 0x6a53, 0xe39a, 0xe39b, 0x447a, 0x8229, 0xe39e, 0xe39f, 0xe3a0, 0x4ff9, 0xe3a2, 0x84e2, 0x8362, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8, 0xe3a9, 0x82aa, 0x691b, 0xe3ac, 0x41db, /* 0x8f */ 0x854b, 0x82d0, 0x831a, 0xe3b1, 0xe3b2, 0x36c1, 0xe3b4, 0xe3b5, 0x827b, 0x82e2, 0x8318, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd, 0x3dbf, 0x831d, 0x55ec, 0x8385, 0x450b, 0xe3c3, 0x83ac, 0xfffd, 0x83d3, 0x347e, 0xe3c8, 0x6a57, 0x855a, 0x3496, 0xe3cc, 0xe3cd, 0x8458, 0xe3cf, 0x8471, 0x3dd3, 0x44e4, 0x6aa7, 0x844a, 0xe3d5, 0x7958, 0xfffd, 0xe3d8, 0xe3d9, 0xe3da, 0x84de, 0xfffd, 0x8391, 0x44a0, 0x8493, 0x84e4, 0xe3e1, 0x4240, 0xe3e3, 0x4543, 0x8534, 0x5af2, 0xe3e7, 0x4527, 0x8573, 0x4516, 0x67bf, 0x8616, 0xe3ed, 0xe3ee, 0x85c1, 0xe3f0, 0x8602, 0xe3f2, 0xe3f3, 0xe3f4, 0x456a, 0x8628, 0x3648, 0xe3f8, 0x53f7, 0xe3fa, 0x867e, 0x8771, 0xe3fd, 0x87ee, 0xe3ff, 0x87b1, 0x87da, 0x880f, 0x5661, 0x866c, 0x6856, 0x460f, 0x8845, 0x8846, 0xe409, 0xe40a, 0xe40b, 0x885e, 0x889c, 0x465b, 0x88b4, 0x88b5, 0x63c1, 0x88c5, 0x7777, 0xe414, 0x8987, 0x898a, 0xfffd, 0xfffd, 0x89a7, 0x89bc, 0xe41b, 0x89e7, 0xe41d, 0xe41e, 0x8a9c, 0x7793, 0x91fe, 0x8a90, 0xe423, 0x7ae9, 0xe425, 0xe426, 0x4713, 0xe428, 0x717c, 0x8b0c, 0x8b1f, 0xe42c, 0xe42d, 0x8b3f, 0x8b4c, 0x8b4d, 0x8aa9, 0xe432, 0x8b90, 0x8b9b, 0x8aaf, 0xe436, 0x4615, 0x884f, 0x8c9b, 0xe43a, 0xe43b, 0xe43c, 0x3725, 0xe43e, 0x8cd6, 0xe440, 0xe441, 0x8d12, 0x8d03, 0xe444, 0x8cdb, 0x705c, 0x8d11, 0xe448, 0x3ed0, 0xfffd, /* 0x90 */ 0x8da9, 0xe44c, 0xe44d, 0xe44e, 0x3b7c, 0xe450, 0xe451, 0x7ae7, 0x8ead, 0x8eb6, 0x8ec3, 0x92d4, 0x8f19, 0x8f2d, 0xe459, 0xe45a, 0x8fa5, 0x9303, 0xe45d, 0xe45e, 0x8fb3, 0x492a, 0xe461, 0xe462, 0xe463, 0x5ef8, 0xe465, 0x8ff9, 0xe467, 0xe468, 0xe469, 0xe46a, 0x3980, 0xe46c, 0x9037, 0xe46e, 0xe46f, 0x9061, 0xe471, 0xe472, 0x90a8, 0xe474, 0x90c4, 0xe476, 0x90ae, 0xfffd, 0x9167, 0x3af0, 0x91a9, 0x91c4, 0x7cac, 0xe47e, 0xe47f, 0x920e, 0x6c9f, 0x9241, 0x9262, 0xe484, 0xfffd, 0xe486, 0xe487, 0xe488, 0xe489, 0xe48a, 0x932c, 0x936b, 0xe48d, 0xe48e, 0x708f, 0x5ac3, 0xe491, 0xe492, 0x4965, 0x9244, 0xe495, 0xe496, 0xe497, 0x9373, 0x945b, 0x8ebc, 0x9585, 0x95a6, 0x9426, 0x95a0, 0x6ff6, 0x42b9, 0xe4a1, 0xe4a2, 0xe4a3, 0xe4a4, 0x49df, 0x6c1c, 0x967b, 0x9696, 0x416c, 0x96a3, 0xe4ab, 0x61da, 0x96b6, 0x78f5, 0xe4af, 0x96bd, 0x53cc, 0x49a1, 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8, 0xe4b9, 0xe4ba, 0x9731, 0x8642, 0x9736, 0x4a0f, 0x453d, 0x4585, 0xe4c1, 0x7075, 0x5b41, 0x971b, 0xfffd, 0xe4c6, 0x9757, 0x5b4a, 0xe4c9, 0x975f, 0x9425, 0x50d0, 0xe4cd, 0xe4ce, 0x9789, 0x979f, 0x97b1, 0x97be, 0x97c0, 0x97d2, 0x97e0, 0xe4d6, 0x97ee, 0x741c, 0xe4d9, 0xfffd, 0x97f5, 0xe4dc, 0xe4dd, 0x4ad1, 0x9834, 0x9833, 0x984b, 0x9866, 0x3b0e, 0xe4e4, 0x3d51, 0xe4e6, 0xe4e7, /* 0x91 */ 0xe4e8, 0x98ca, 0x98b7, 0x98c8, 0x98c7, 0x4aff, 0xe4ee, 0xe4ef, 0x55b0, 0x98e1, 0x98e6, 0x98ec, 0x9378, 0x9939, 0xe4f6, 0x4b72, 0xe4f8, 0xe4f9, 0x99f5, 0x9a0c, 0x9a3b, 0x9a10, 0x9a58, 0xe4ff, 0x36c4, 0xe501, 0xe502, 0x9ae0, 0x9ae2, 0xe505, 0x9af4, 0x4c0e, 0x9b14, 0x9b2d, 0xe50a, 0x5034, 0x9b34, 0xe50d, 0x38c3, 0xe50f, 0x9b50, 0x9b40, 0xe512, 0x5a45, 0xe514, 0x9b8e, 0xe516, 0x9c02, 0x9bff, 0x9c0c, 0xe51a, 0x9dd4, 0xe51c, 0xe51d, 0xe51e, 0xe51f, 0xe520, 0xe521, 0x9d7e, 0x9d83, 0xe524, 0x9e0e, 0x6888, 0x9dc4, 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0x9d39, 0xe52e, 0xe52f, 0x9e90, 0x9e95, 0x9e9e, 0x9ea2, 0x4d34, 0x9eaa, 0x9eaf, 0xe537, 0x9ec1, 0x3b60, 0x39e5, 0x3d1d, 0x4f32, 0x37be, 0xe53e, 0x9f02, 0x9f08, 0x4b96, 0x9424, 0xe543, 0x9f17, 0xfffd, 0x9f39, 0x569f, 0x568a, 0x9f45, 0x99b8, 0xe54b, 0x97f2, 0x847f, 0x9f62, 0x9f69, 0x7adc, 0x9f8e, 0x7216, 0x4bbe, 0xe554, 0xe555, 0x7177, 0xe557, 0xe558, 0xe559, 0x739e, 0xe55b, 0xe55c, 0x799f, 0xe55e, 0xe55f, 0x9369, 0x93f3, 0xe562, 0x92ec, 0x9381, 0x93cb, 0xe566, 0xe567, 0x7217, 0x3eeb, 0x7772, 0x7a43, 0x70d0, 0xe56d, 0xe56e, 0x717e, 0xe570, 0x70a3, 0xe572, 0xe573, 0x3ec7, 0xe575, 0xe576, 0xe577, 0x3722, 0xe579, 0xe57a, 0x36e1, 0xe57c, 0xe57d, 0xe57e, 0x3723, 0xe580, 0x575b, 0xe582, 0xe583, 0xe584, /* 0x92 */ 0xe585, 0xe586, 0x8503, 0xe588, 0xfffd, 0x8455, 0xe58b, 0xe58c, 0xe58d, 0xe58e, 0xe58f, 0xe590, 0x44f4, 0xe592, 0xe593, 0xe594, 0x67f9, 0x3733, 0x3c15, 0x3de7, 0x586c, 0xe59a, 0x6810, 0x4057, 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe5a1, 0x54cb, 0x569e, 0xe5a4, 0x5692, 0xe5a6, 0xe5a7, 0xe5a8, 0x93c6, 0xe5aa, 0x939c, 0x4ef8, 0x512b, 0x3819, 0xe5af, 0x4ebc, 0xe5b1, 0xe5b2, 0x4f4b, 0x4f8a, 0xe5b5, 0x5a68, 0xe5b7, 0xe5b8, 0x3999, 0xe5ba, 0xe5bb, 0x3435, 0x4f29, 0xe5be, 0xe5bf, 0xe5c0, 0x8ada, 0xe5c2, 0x4e98, 0x50cd, 0x510d, 0x4fa2, 0x4f03, 0xe5c8, 0xe5c9, 0x4f42, 0x502e, 0x506c, 0x5081, 0x4fcc, 0x4fe5, 0x5058, 0x50fc, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x6e76, 0xe5d7, 0xe5d8, 0xe5d9, 0x6d72, 0xe5db, 0xe5dc, 0x51a8, 0x51c3, 0xe5df, 0x44dd, 0xe5e1, 0xe5e2, 0xe5e3, 0x8d7a, 0xe5e5, 0xe5e6, 0x5259, 0x52a4, 0xe5e9, 0x52e1, 0xfffd, 0x467a, 0x718c, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0x69d1, 0xe5f3, 0xfffd, 0x3ede, 0x7499, 0x7414, 0x7456, 0x7398, 0x4b8e, 0xe5fb, 0xe5fc, 0x53d0, 0x3584, 0x720f, 0xe600, 0x55b4, 0xe602, 0x54cd, 0xe604, 0x571d, 0x925d, 0x96f4, 0x9366, 0x57dd, 0x578d, 0x577f, 0x363e, 0x58cb, 0x5a99, 0xe60f, 0xe610, 0xe611, 0xe612, 0x5a2c, 0x59b8, 0x928f, 0x5a7e, 0x5acf, 0x5a12, 0xe619, 0xe61a, 0xe61b, 0xe61c, 0x36f5, 0x6d05, 0x7443, 0x5a21, 0xe621, /* 0x93 */ 0x5a81, 0xe623, 0xe624, 0x93e0, 0x748c, 0xe627, 0x7105, 0x4972, 0x9408, 0xe62b, 0x93bd, 0x37a0, 0x5c1e, 0x5c9e, 0x5e5e, 0x5e48, 0xe632, 0xe633, 0xe634, 0x5ecd, 0x5b4f, 0xe637, 0xe638, 0x3701, 0xe63a, 0x36dd, 0xe63c, 0x36d3, 0x812a, 0xe63f, 0xe640, 0xe641, 0xe642, 0x5f0c, 0x5f0e, 0xe645, 0xe646, 0x5a6b, 0xe648, 0x5b44, 0x8614, 0xe64b, 0x8860, 0x607e, 0xe64e, 0xe64f, 0x5fdb, 0x3eb8, 0xe652, 0xe653, 0xe654, 0xe655, 0x61c0, 0xe657, 0xe658, 0xe659, 0x6199, 0x6198, 0x6075, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0x6471, 0xe662, 0xe663, 0x3a29, 0xe665, 0xe666, 0xe667, 0xe668, 0x6337, 0xe66a, 0x64b6, 0x6331, 0x63d1, 0xe66e, 0xe66f, 0x62a4, 0xe671, 0x643b, 0x656b, 0x6972, 0x3bf4, 0xe676, 0xe677, 0xe678, 0xe679, 0x550d, 0xe67b, 0xe67c, 0xe67d, 0x66ce, 0xe67f, 0xe680, 0x3ae0, 0x4190, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0x78ee, 0xe68a, 0xe68b, 0xe68c, 0x3464, 0xe68e, 0xe68f, 0xe690, 0x668e, 0xe692, 0x666b, 0x4b93, 0x6630, 0xe696, 0xe697, 0x6663, 0xe699, 0xe69a, 0x661e, 0xe69c, 0x38d1, 0xe69e, 0xe69f, 0x3b99, 0xe6a1, 0xe6a2, 0x74d0, 0x3b96, 0x678f, 0xe6a6, 0x68b6, 0x681e, 0x3bc4, 0x6abe, 0x3863, 0xe6ac, 0xe6ad, 0x6a33, 0x6a52, 0x6ac9, 0x6b05, 0xe6b2, 0x6511, 0x6898, 0x6a4c, 0x3bd7, 0x6a7a, 0x6b57, 0xe6b9, 0xe6ba, 0x93a0, 0x92f2, 0xe6bd, 0xe6be, /* 0x94 */ 0x9289, 0xe6c0, 0xe6c1, 0x9467, 0x6da5, 0x6f0b, 0xe6c5, 0xfffd, 0xe6c7, 0x3d8f, 0x6e04, 0xe6ca, 0x5a3d, 0x6e0a, 0x5847, 0x6d24, 0x7842, 0x713b, 0xe6d1, 0xe6d2, 0x70f1, 0x7250, 0x7287, 0x7294, 0xe6d7, 0xe6d8, 0x5179, 0xe6da, 0xe6db, 0x747a, 0xe6dd, 0xe6de, 0xe6df, 0xe6e0, 0xe6e1, 0x3f06, 0x3eb1, 0xe6e4, 0xe6e5, 0xe6e6, 0x60a7, 0x3ef3, 0x74cc, 0x743c, 0x9387, 0x7437, 0x449f, 0xe6ee, 0x4551, 0x7583, 0x3f63, 0xe6f2, 0xe6f3, 0x3f58, 0x7555, 0x7673, 0xe6f7, 0x3b19, 0x7468, 0xe6fa, 0xe6fb, 0xe6fc, 0x3afb, 0x3dcd, 0xe6ff, 0x3eff, 0xe701, 0xe702, 0x91fa, 0x5732, 0x9342, 0xe706, 0xe707, 0x50df, 0xe709, 0xe70a, 0x7778, 0xe70c, 0x770e, 0x770f, 0x777b, 0xe710, 0xe711, 0x3a5e, 0xe713, 0x7438, 0x749b, 0x3ebf, 0xe717, 0xe718, 0x40c8, 0xe71a, 0xe71b, 0x9307, 0xe71d, 0x781e, 0x788d, 0x7888, 0x78d2, 0x73d0, 0x7959, 0xe724, 0xe725, 0x410e, 0xfffd, 0x8496, 0x79a5, 0x6a2d, 0xe72b, 0x7a3a, 0x79f4, 0x416e, 0xe72f, 0x4132, 0x9235, 0x79f1, 0xe733, 0xe734, 0xe735, 0xe736, 0xe737, 0x3597, 0x556b, 0x3570, 0x36aa, 0xe73c, 0xe73d, 0x7ae2, 0x5a59, 0xe740, 0xe741, 0xe742, 0x5a0d, 0xe744, 0x78f0, 0x5a2a, 0xe747, 0x7afe, 0x41f9, 0x7c5d, 0x7c6d, 0x4211, 0xe74d, 0xe74e, 0xe74f, 0x7ccd, 0xe751, 0xe752, 0x7c8e, 0x7c7c, 0x7cae, 0x6ab2, 0x7ddc, 0x7e07, 0x7dd3, 0x7f4e, 0xe75b, /* 0x95 */ 0xe75c, 0xe75d, 0x7d97, 0xe75f, 0x426a, 0xe761, 0xe762, 0x67d6, 0xe764, 0xe765, 0x57c4, 0xe767, 0xe768, 0xe769, 0x7fdd, 0x7b27, 0xe76c, 0xe76d, 0xe76e, 0x7b0c, 0xe770, 0x99e6, 0x8645, 0x9a63, 0x6a1c, 0xe775, 0x39e2, 0xe777, 0xe778, 0x9a1f, 0xe77a, 0x8480, 0xe77c, 0xe77d, 0x44ea, 0x8137, 0x4402, 0x80c6, 0x8109, 0x8142, 0xe784, 0x98c3, 0xe786, 0x8262, 0x8265, 0xe789, 0x8453, 0xe78b, 0x8610, 0xe78d, 0x5a86, 0x417f, 0xe790, 0x5b2b, 0xe792, 0x5ae4, 0xe794, 0x86a0, 0xe796, 0xe797, 0x882d, 0xe799, 0x5a02, 0x886e, 0x4f45, 0x8887, 0x88bf, 0x88e6, 0x8965, 0x894d, 0xe7a2, 0x8954, 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9, 0x3ead, 0x84a3, 0x46f5, 0x46cf, 0x37f2, 0x8a3d, 0x8a1c, 0xe7b1, 0x5f4d, 0x922b, 0xe7b4, 0x65d4, 0x7129, 0x70c4, 0xe7b8, 0x9d6d, 0x8c9f, 0x8ce9, 0xe7bc, 0x599a, 0x77c3, 0x59f0, 0x436e, 0x36d4, 0x8e2a, 0x8ea7, 0xe7c4, 0x8f30, 0x8f4a, 0x42f4, 0x6c58, 0x6fbb, 0xe7ca, 0x489b, 0x6f79, 0x6e8b, 0xe7ce, 0x9be9, 0x36b5, 0xe7d1, 0x90bb, 0xfffd, 0x5571, 0x4906, 0x91bb, 0x9404, 0xe7d8, 0x4062, 0xe7da, 0x9427, 0xe7dc, 0xe7dd, 0x84e5, 0x8a2b, 0x9599, 0x95a7, 0x9597, 0x9596, 0xe7e4, 0x7445, 0x3ec2, 0xe7e7, 0xe7e8, 0xe7e9, 0x3ee7, 0xe7eb, 0x968f, 0xe7ed, 0xe7ee, 0xe7ef, 0x3ecc, 0xe7f1, 0xe7f2, 0xe7f3, 0x7412, 0x746b, 0x3efc, 0x9741, 0xe7f8, /* 0x96 */ 0x6847, 0x4a1d, 0xe7fb, 0xe7fc, 0xfffd, 0x9368, 0xe7ff, 0xe800, 0xe801, 0xe802, 0x92ba, 0x5b11, 0x8b69, 0x493c, 0x73f9, 0xe808, 0x979b, 0x9771, 0x9938, 0xe80c, 0x5dc1, 0xe80e, 0xe80f, 0x981f, 0xe811, 0x92f6, 0xe813, 0x91e5, 0x44c0, 0xe816, 0xe817, 0xe818, 0x98dc, 0xe81a, 0x3f00, 0x922a, 0x4925, 0x8414, 0x993b, 0x994d, 0xe821, 0x3dfd, 0x999b, 0x4b6f, 0x99aa, 0x9a5c, 0xe827, 0xe828, 0x6a8f, 0x9a21, 0x5afe, 0x9a2f, 0xe82d, 0x4b90, 0xe82f, 0x99bc, 0x4bbd, 0x4b97, 0x937d, 0x5872, 0xe835, 0x5822, 0xe837, 0xe838, 0x7844, 0xe83a, 0xe83b, 0x68c5, 0x3d7d, 0x9458, 0x3927, 0x6150, 0xe841, 0xe842, 0x6107, 0x9c4f, 0x9c53, 0x9c7b, 0x9c35, 0x9c10, 0x9b7f, 0x9bcf, 0xe84b, 0x9b9f, 0xe84d, 0xe84e, 0x9d21, 0x4cae, 0xe851, 0x9e18, 0x4cb0, 0x9d0c, 0xe855, 0xe856, 0xe857, 0xe858, 0x9da5, 0x84bd, 0xe85b, 0xe85c, 0xe85d, 0x85fc, 0x4533, 0xe860, 0xe861, 0xe862, 0x8420, 0x85ee, 0xe865, 0xe866, 0xe867, 0x79e2, 0xe869, 0xe86a, 0x492d, 0xe86c, 0x3d62, 0x93db, 0x92be, 0x9348, 0xe871, 0x78b9, 0x9277, 0x944d, 0x4fe4, 0x3440, 0x9064, 0xe878, 0x783d, 0x7854, 0x78b6, 0x784b, 0xe87d, 0xe87e, 0xe87f, 0x369a, 0x4f72, 0x6fda, 0x6fd9, 0xfffd, 0x701e, 0x5414, 0xe887, 0x57bb, 0x58f3, 0x578a, 0x9d16, 0x57d7, 0x7134, 0x34af, 0xe88f, 0x71eb, 0xe891, 0xe892, 0xfffd, 0xe894, 0xe895, /* 0x97 */ 0x610c, 0x5ace, 0x5a0b, 0x42bc, 0xe89a, 0x372c, 0x4b7b, 0xe89d, 0x93bb, 0x93b8, 0xe8a0, 0xe8a1, 0x8472, 0xe8a3, 0xe8a4, 0xe8a5, 0xe8a6, 0xe8a7, 0x5994, 0xe8a9, 0xe8aa, 0x7da8, 0xe8ac, 0xe8ad, 0xe8ae, 0xe8af, 0xe8b0, 0x92e5, 0x73e2, 0x3ee9, 0x74b4, 0xe8b5, 0xe8b6, 0x3ee1, 0xe8b8, 0x6ad8, 0x73f3, 0x73fb, 0x3ed6, 0xe8bd, 0xe8be, 0xe8bf, 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0x7448, 0xe8c5, 0x70a5, 0xe8c7, 0x9284, 0x73e6, 0x935f, 0xe8cb, 0x9331, 0xe8cd, 0xe8ce, 0x9386, 0xe8d0, 0xe8d1, 0x4935, 0xe8d3, 0x716b, 0xe8d5, 0xe8d6, 0x56a4, 0xe8d8, 0xe8d9, 0xe8da, 0x5502, 0x79c4, 0xe8dd, 0x7dfe, 0xe8df, 0xe8e0, 0xe8e1, 0x452e, 0x9401, 0x370a, 0xe8e5, 0xe8e6, 0x59b0, 0xe8e8, 0xe8e9, 0xe8ea, 0x5aa1, 0x36e2, 0xe8ed, 0x36b0, 0x925f, 0x5a79, 0xe8f1, 0xe8f2, 0x9374, 0x3ccd, 0xe8f5, 0x4a96, 0x398a, 0x50f4, 0x3d69, 0x3d4c, 0xe8fb, 0x7175, 0x42fb, 0xe8fe, 0x6e0f, 0xe900, 0x44eb, 0x6d57, 0xe903, 0x7067, 0x6caf, 0x3cd6, 0xe907, 0xe908, 0x6e02, 0x6f0c, 0x3d6f, 0xe90c, 0x7551, 0x36bc, 0x34c8, 0x4680, 0x3eda, 0x4871, 0x59c4, 0x926e, 0x493e, 0x8f41, 0xe917, 0xe918, 0x5812, 0x57c8, 0x36d6, 0xe91c, 0x70fe, 0xe91e, 0xe91f, 0xe920, 0xe921, 0xe922, 0x68b9, 0x6967, 0xe925, 0xe926, 0xe927, 0xe928, 0xe929, 0xe92a, 0xe92b, 0xe92c, 0x6a1a, 0xe92e, 0xe92f, 0x843e, 0x44df, 0x44ce, /* 0x98 */ 0xe933, 0xe934, 0xe935, 0xe936, 0x6f17, 0xe938, 0x833d, 0xe93a, 0x83ed, 0xe93c, 0xe93d, 0xe93e, 0x5989, 0x5a82, 0xe941, 0x5a61, 0x5a71, 0xe944, 0xe945, 0x372d, 0x59ef, 0xe948, 0x36c7, 0x718e, 0x9390, 0x669a, 0xe94d, 0x5a6e, 0x5a2b, 0xe950, 0x6a2b, 0xe952, 0xe953, 0xe954, 0xe955, 0x711d, 0xe957, 0xe958, 0x4fb0, 0xe95a, 0x5cc2, 0xe95c, 0xe95d, 0xe95e, 0x6a0c, 0xe960, 0xe961, 0x70a6, 0x7133, 0xe964, 0x3da5, 0x6cdf, 0xe967, 0xe968, 0x7e65, 0x59eb, 0x5d2f, 0x3df3, 0x5f5c, 0xe96e, 0xe96f, 0x7da4, 0x8426, 0x5485, 0xe973, 0xe974, 0xe975, 0x577e, 0xe977, 0xe978, 0x3fe5, 0xe97a, 0xe97b, 0x7003, 0xe97d, 0x5d70, 0x738f, 0x7cd3, 0xe981, 0xe982, 0x4fc8, 0x7fe7, 0x72cd, 0x7310, 0xe987, 0x7338, 0x7339, 0xe98a, 0x7341, 0x7348, 0x3ea9, 0xe98e, 0x906c, 0x71f5, 0xe991, 0x73e1, 0x81f6, 0x3eca, 0x770c, 0x3ed1, 0x6ca2, 0x56fd, 0x7419, 0x741e, 0x741f, 0x3ee2, 0x3ef0, 0x3ef4, 0x3efa, 0x74d3, 0x3f0e, 0x3f53, 0x7542, 0x756d, 0x7572, 0x758d, 0x3f7c, 0x75c8, 0x75dc, 0x3fc0, 0x764d, 0x3fd7, 0x7674, 0x3fdc, 0x767a, 0xe9b0, 0x7188, 0x5623, 0x8980, 0x5869, 0x401d, 0x7743, 0x4039, 0x6761, 0x4045, 0x35db, 0x7798, 0x406a, 0x406f, 0x5c5e, 0x77be, 0x77cb, 0x58f2, 0x7818, 0x70b9, 0x781c, 0x40a8, 0x7839, 0x7847, 0x7851, 0x7866, 0x8448, 0xe9cb, 0x7933, 0x6803, 0x7932, 0x4103, /* 0x99 */ 0x4109, 0x7991, 0x7999, 0x8fbb, 0x7a06, 0x8fbc, 0x4167, 0x7a91, 0x41b2, 0x7abc, 0x8279, 0x41c4, 0x7acf, 0x7adb, 0x41cf, 0x4e21, 0x7b62, 0x7b6c, 0x7b7b, 0x7c12, 0x7c1b, 0x4260, 0x427a, 0x7c7b, 0x7c9c, 0x428c, 0x7cb8, 0x4294, 0x7ced, 0x8f93, 0x70c0, 0xe9ef, 0x7dcf, 0x7dd4, 0x7dd0, 0x7dfd, 0x7fae, 0x7fb4, 0x729f, 0x4397, 0x8020, 0x8025, 0x7b39, 0x802e, 0x8031, 0x8054, 0x3dcc, 0x57b4, 0x70a0, 0x80b7, 0x80e9, 0x43ed, 0x810c, 0x732a, 0x810e, 0x8112, 0x7560, 0x8114, 0x4401, 0x3b39, 0x8156, 0x8159, 0x815a, 0x4413, 0x583a, 0x817c, 0x8184, 0x4425, 0x8193, 0x442d, 0x81a5, 0x57ef, 0x81c1, 0x81e4, 0x8254, 0x448f, 0x82a6, 0x8276, 0x82ca, 0x82d8, 0x82ff, 0x44b0, 0x8357, 0x9669, 0x698a, 0x8405, 0x70f5, 0x8464, 0x60e3, 0x8488, 0x4504, 0x84be, 0x84e1, 0x84f8, 0x8510, 0x8538, 0x8552, 0x453b, 0x856f, 0x8570, 0x85e0, 0x4577, 0x8672, 0x8692, 0x86b2, 0x86ef, 0x9645, 0x878b, 0x4606, 0x4617, 0x88ae, 0x88ff, 0x8924, 0x8947, 0x8991, 0xea43, 0x8a29, 0x8a38, 0x8a94, 0x8ab4, 0x8c51, 0x8cd4, 0x8cf2, 0x8d1c, 0x4798, 0x585f, 0x8dc3, 0x47ed, 0x4eee, 0x8e3a, 0x55d8, 0x5754, 0x8e71, 0x55f5, 0x8eb0, 0x4837, 0x8ece, 0x8ee2, 0x8ee4, 0x8eed, 0x8ef2, 0x8fb7, 0x8fc1, 0x8fca, 0x8fcc, 0x9033, 0x99c4, 0x48ad, 0x98e0, 0x9213, 0x491e, 0x9228, 0x9258, 0x926b, 0x92b1, 0x92ae, 0x92bf, /* 0x9a */ 0x92e3, 0x92eb, 0x92f3, 0x92f4, 0x92fd, 0x9343, 0x9384, 0x93ad, 0x4945, 0x4951, 0x9ebf, 0x9417, 0x5301, 0x941d, 0x942d, 0x943e, 0x496a, 0x9454, 0x9479, 0x952d, 0x95a2, 0x49a7, 0x95f4, 0x9633, 0x49e5, 0x67a0, 0x4a24, 0x9740, 0x4a35, 0x97b2, 0x97c2, 0x5654, 0x4ae4, 0x60e8, 0x98b9, 0x4b19, 0x98f1, 0x5844, 0x990e, 0x9919, 0x51b4, 0x991c, 0x9937, 0x9942, 0x995d, 0x9962, 0x4b70, 0x99c5, 0x4b9d, 0x9a3c, 0x9b0f, 0x7a83, 0x9b69, 0x9b81, 0x9bdd, 0x9bf1, 0x9bf4, 0x4c6d, 0x9c20, 0x376f, 0xeaa9, 0x9d49, 0x9c3a, 0x9efe, 0x5650, 0x9d93, 0x9dbd, 0x9dc0, 0x9dfc, 0x94f6, 0x8fb6, 0x9e7b, 0x9eac, 0x9eb1, 0x9ebd, 0x9ec6, 0x94dc, 0x9ee2, 0x9ef1, 0x9ef8, 0x7ac8, 0x9f44, 0xeabf, 0xeac0, 0xeac1, 0x691a, 0x94c3, 0x59ac, 0xeac5, 0x5840, 0x94c1, 0x37b9, 0xeac9, 0xeaca, 0xeacb, 0xeacc, 0x5757, 0x7173, 0xeacf, 0xead0, 0xead1, 0x546a, 0xead3, 0xead4, 0x549e, 0xead6, 0xead7, 0xead8, 0xead9, 0xeada, 0x60e7, 0xeadc, 0x567a, 0xeade, 0xeadf, 0xeae0, 0xeae1, 0xeae2, 0xeae3, 0x6955, 0x9c2f, 0x87a5, 0xeae7, 0xeae8, 0xeae9, 0xeaea, 0xeaeb, 0xeaec, 0x5c20, 0xeaee, 0x5e0b, 0xeaf0, 0xeaf1, 0xeaf2, 0x671e, 0xeaf4, 0xeaf5, 0xeaf6, 0x3647, 0xeaf8, 0xeaf9, 0xeafa, 0xeafb, 0x5364, 0x84ad, 0xeafe, 0xeaff, 0xeb00, 0x8b81, 0xeb02, 0xeb03, 0xeb04, 0xeb05, 0x4e78, 0x70bb, 0xeb08, 0xeb09, /* 0x9b */ 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f, 0x62c3, 0xeb11, 0xeb12, 0x7198, 0x6855, 0xeb15, 0x69e9, 0x36c8, 0xeb18, 0xeb19, 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0x82fd, 0xeb1f, 0xeb20, 0xeb21, 0x89a5, 0xeb23, 0x8fa0, 0xeb25, 0x97b8, 0xeb27, 0x9847, 0x9abd, 0xeb2a, 0xfffd, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f, 0xeb30, 0xeb31, 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37, 0xeb38, 0xeb39, 0x5fb1, 0x6648, 0x66bf, 0xeb3d, 0xeb3e, 0xeb3f, 0xfffd, 0xeb41, 0xfffd, 0xeb43, 0xeb44, 0xfffd, 0xeb46, 0x58b5, 0x670e, 0x6918, 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0x48d0, 0x4ab8, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59, 0xeb5a, 0xeb5b, 0x51d2, 0xeb5d, 0x599f, 0xeb5f, 0x3bbe, 0xeb61, 0xeb62, 0xeb63, 0x5788, 0xeb65, 0x399b, 0xeb67, 0xeb68, 0xeb69, 0x3762, 0xeb6b, 0x8b5e, 0xeb6d, 0xfffd, 0xeb6f, 0xeb70, 0xeb71, 0x7209, 0xeb73, 0xeb74, 0x5965, 0xeb76, 0xeb77, 0xeb78, 0x8eda, 0xeb7a, 0x528f, 0x573f, 0x7171, 0xeb7e, 0xeb7f, 0xeb80, 0xeb81, 0x55bc, 0xeb83, 0xeb84, 0xeb85, 0xfffd, 0x3473, 0xeb88, 0xeb89, 0xeb8a, 0x4718, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f, 0xeb90, 0x5066, 0x34fb, 0xeb93, 0xfffd, 0xeb95, 0x477c, 0xeb97, 0xeb98, 0xeb99, 0xeb9a, 0xeb9b, 0x57a1, 0x7151, 0xfffd, 0xeb9f, 0xeba0, 0x9056, 0xeba2, 0xeba3, 0x8b62, 0xeba5, 0xeba6, /* 0x9c */ 0x5d5b, 0xeba8, 0xfffd, 0xebaa, 0xebab, 0x8aea, 0xebad, 0xebae, 0xebaf, 0xebb0, 0x4bc0, 0xebb2, 0xebb3, 0xebb4, 0x9465, 0xebb6, 0x6195, 0x5a27, 0xebb9, 0xfffd, 0x56b9, 0xebbc, 0xebbd, 0x4e6a, 0xebbf, 0x9656, 0x6d8f, 0xebc2, 0x3618, 0x8977, 0xebc5, 0xebc6, 0xebc7, 0xebc8, 0xfffd, 0xebca, 0x7b42, 0xebcc, 0xebcd, 0xebce, 0xfffd, 0xebd0, 0x7a45, 0xfffd, 0xebd3, 0x9a26, 0xebd5, 0x365f, 0xebd7, 0xebd8, 0x7983, 0xebda, 0xebdb, 0x5d2c, 0xebdd, 0xfffd, 0xebdf, 0x46d0, 0xebe1, 0x753b, 0x8865, 0xebe4, 0x58b6, 0x371c, 0xebe7, 0xebe8, 0xebe9, 0x3c54, 0xebeb, 0xebec, 0x9281, 0xebee, 0xebef, 0x9330, 0xebf1, 0xebf2, 0x6c39, 0x949f, 0xebf5, 0xebf6, 0x8827, 0x88f5, 0xebf9, 0xebfa, 0xebfb, 0x6eb8, 0xebfd, 0xebfe, 0x39a4, 0x36b9, 0xfffd, 0xfffd, 0x453f, 0x66b6, 0xec05, 0xec06, 0x8943, 0xec08, 0xec09, 0x56d6, 0x40df, 0xec0c, 0x39a1, 0xec0e, 0xec0f, 0xec10, 0x71ad, 0x8366, 0xec13, 0xec14, 0xfffd, 0x4cb7, 0xec17, 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c, 0xec1d, 0x7b43, 0x797e, 0xec20, 0x6fb5, 0xec22, 0x6a03, 0xec24, 0x53a2, 0xec26, 0x93bf, 0x6836, 0x975d, 0xec2a, 0xec2b, 0xec2c, 0xec2d, 0xec2e, 0xec2f, 0x5d85, 0xec31, 0xec32, 0x5715, 0x9823, 0xec35, 0x5dab, 0xec37, 0x65be, 0x69d5, 0x53d2, 0xec3b, 0xec3c, 0x3c11, 0x6736, 0xec3f, 0xec40, 0xec41, 0xec42, 0xec43, /* 0x9d */ 0xec44, 0xec45, 0xec46, 0xec47, 0xec48, 0xec49, 0x35ca, 0xec4b, 0xec4c, 0x48fa, 0x63e6, 0xec4f, 0x7808, 0x9255, 0xec52, 0x43f2, 0xec54, 0x43df, 0xec56, 0xec57, 0xec58, 0x59f8, 0xec5a, 0xfffd, 0xec5c, 0xec5d, 0xfffd, 0xec5f, 0xec60, 0x3df7, 0xec62, 0xec63, 0x8fd0, 0x728f, 0x568b, 0xec67, 0xec68, 0xec69, 0xec6a, 0xec6b, 0xec6c, 0xec6d, 0xec6e, 0xec6f, 0xec70, 0xec71, 0xec72, 0xec73, 0x7e9f, 0xec75, 0xec76, 0x4ca4, 0x9547, 0xec79, 0x71a2, 0xec7b, 0x4d91, 0x9012, 0xec7e, 0x4d9c, 0xec80, 0x8fbe, 0x55c1, 0x8fba, 0xec84, 0x8fb9, 0xec86, 0x4509, 0x7e7f, 0x6f56, 0x6ab1, 0x4eea, 0x34e4, 0xec8d, 0xec8e, 0x373a, 0x8e80, 0xec91, 0xec92, 0xec93, 0xec94, 0xec95, 0xec96, 0x3deb, 0xec98, 0xec99, 0xec9a, 0xec9b, 0x4e9a, 0xec9d, 0xec9e, 0x56bf, 0xeca0, 0x8e0e, 0x5b6d, 0xeca3, 0xeca4, 0x63de, 0xfffd, 0xeca7, 0xeca8, 0x6530, 0x562d, 0xecab, 0x541a, 0xecad, 0x3dc6, 0xecaf, 0x4c7d, 0x5622, 0x561e, 0x7f49, 0xecb4, 0x5975, 0xecb6, 0x8770, 0x4e1c, 0xecb9, 0xecba, 0xecbb, 0x8117, 0x9d5e, 0x8d18, 0x763b, 0x9c45, 0x764e, 0x77b9, 0x9345, 0x5432, 0x8148, 0x82f7, 0x5625, 0x8132, 0x8418, 0x80bd, 0x55ea, 0x7962, 0x5643, 0x5416, 0xeccf, 0x35ce, 0x5605, 0x55f1, 0x66f1, 0xecd4, 0x362d, 0x7534, 0x55f0, 0x55ba, 0x5497, 0x5572, 0xecdb, 0xecdc, 0x5ed0, 0xecde, 0xecdf, 0xece0, /* 0x9e */ 0xece1, 0x9eab, 0x7d5a, 0x55de, 0xece5, 0x629d, 0x976d, 0x5494, 0x8ccd, 0x71f6, 0x9176, 0x63fc, 0x63b9, 0x63fe, 0x5569, 0xecf0, 0x9c72, 0xecf2, 0x519a, 0x34df, 0xecf5, 0x51a7, 0x544d, 0x551e, 0x5513, 0x7666, 0x8e2d, 0xecfc, 0x75b1, 0x80b6, 0x8804, 0x8786, 0x88c7, 0x81b6, 0x841c, 0xed04, 0x44ec, 0x7304, 0xed07, 0x5b90, 0x830b, 0xed0a, 0x567b, 0xed0c, 0xed0d, 0xed0e, 0xed0f, 0xed10, 0xed11, 0x9170, 0xed13, 0x9208, 0xed15, 0xed16, 0xed17, 0xed18, 0x7266, 0xed1a, 0x474e, 0xed1c, 0xed1d, 0xed1e, 0x40fa, 0x9c5d, 0x651f, 0xed22, 0x48f3, 0xed24, 0xed25, 0xed26, 0xed27, 0xfffd, 0xed29, 0xed2a, 0xfffd, 0xed2c, 0xed2d, 0x71a3, 0x7e8e, 0x9d50, 0x4e1a, 0x4e04, 0x3577, 0x5b0d, 0x6cb2, 0x5367, 0x36ac, 0x39dc, 0x537d, 0x36a5, 0xed3b, 0x589a, 0xed3d, 0x822d, 0x544b, 0x57aa, 0xed41, 0xed42, 0xfffd, 0x3a52, 0xed45, 0x7374, 0xed47, 0x4d09, 0x9bed, 0xed4a, 0xed4b, 0x4c5b, 0xed4d, 0xed4e, 0xed4f, 0x845c, 0xed51, 0xed52, 0xed53, 0xed54, 0x632e, 0x7d25, 0xed57, 0xed58, 0x3a2a, 0x9008, 0x52cc, 0x3e74, 0x367a, 0x45e9, 0xed5f, 0x7640, 0x5af0, 0xed62, 0x787a, 0x47b6, 0x58a7, 0x40bf, 0x567c, 0x9b8b, 0x5d74, 0x7654, 0xed6b, 0x9e85, 0x4ce1, 0xfffd, 0x37fb, 0x6119, 0xed71, 0xed72, 0xfffd, 0x565d, 0xed75, 0x57a7, 0xed77, 0xed78, 0x5234, 0xed7a, 0x35ad, 0xfffd, 0x9d7c, /* 0x9f */ 0x7c56, 0x9b39, 0x57de, 0xed81, 0x5c53, 0x64d3, 0xed84, 0xed85, 0xed86, 0x86ad, 0xed88, 0xed89, 0xed8a, 0xed8b, 0xfffd, 0x51fe, 0xed8e, 0x5d8e, 0x9703, 0xed91, 0x9e81, 0x904c, 0x7b1f, 0x9b02, 0x5cd1, 0x7ba3, 0x6268, 0x6335, 0x9aff, 0x7bcf, 0x9b2a, 0x7c7e, 0xfffd, 0x7c42, 0x7c86, 0x9c15, 0x7bfc, 0x9b09, 0xfffd, 0x9c1b, 0xeda6, 0x9f5a, 0x5573, 0x5bc3, 0x4ffd, 0x9e98, 0x4ff2, 0x5260, 0x3e06, 0x52d1, 0x5767, 0x5056, 0x59b7, 0x5e12, 0x97c8, 0x9dab, 0x8f5c, 0x5469, 0x97b4, 0x9940, 0x97ba, 0x532c, 0x6130, 0x692c, 0x53da, 0x9c0a, 0x9d02, 0x4c3b, 0x9641, 0x6980, 0x50a6, 0x7546, 0xedc6, 0x99da, 0x5273, 0xfffd, 0x9159, 0x9681, 0x915c, 0xfffd, 0x9151, 0xedcf, 0x637f, 0xedd1, 0x6aca, 0x5611, 0x918e, 0x757a, 0x6285, 0xedd7, 0x734f, 0x7c70, 0xedda, 0xeddb, 0xfffd, 0xeddd, 0x76d6, 0x9b9d, 0x4e2a, 0xede1, 0x83be, 0x8842, 0xfffd, 0x5c4a, 0x69c0, 0xfffd, 0x577a, 0x521f, 0x5df5, 0x4ece, 0x6c31, 0xeded, 0x4f39, 0x549c, 0x54da, 0x529a, 0x8d82, 0x35fe, 0xfffd, 0x35f3, 0xfffd, 0x6b52, 0x917c, 0x9fa5, 0x9b97, 0x982e, 0x98b4, 0x9aba, 0x9ea8, 0x9e84, 0x717a, 0x7b14, 0xfffd, 0x6bfa, 0x8818, 0x7f78, 0xfffd, 0x5620, 0xee08, 0x8e77, 0x9f53, 0xfffd, 0x8dd4, 0x8e4f, 0x9e1c, 0x8e01, 0x6282, 0xee11, 0x8e28, 0x8e75, 0x7ad3, 0xee15, 0x7a3e, 0x78d8, 0x6cea, 0x8a67, 0x7607, /* 0xa0 */ 0xee1b, 0x9f26, 0x6cce, 0x87d6, 0x75c3, 0xee20, 0x7853, 0xee22, 0x8d0c, 0x72e2, 0x7371, 0x8b2d, 0x7302, 0x74f1, 0x8ceb, 0xee2a, 0x862f, 0x5fba, 0x88a0, 0x44b7, 0xfffd, 0xee30, 0xee31, 0xfffd, 0x8a7e, 0xee34, 0xfffd, 0x60fd, 0x7667, 0x9ad7, 0x9d44, 0x936e, 0x9b8f, 0x87f5, 0xfffd, 0xfffd, 0x8cf7, 0x732c, 0x9721, 0x9bb0, 0x35d6, 0x72b2, 0x4c07, 0x7c51, 0x994a, 0xee48, 0x6159, 0x4c04, 0x9e96, 0x617d, 0xfffd, 0x575f, 0x616f, 0x62a6, 0x6239, 0xfffd, 0x3a5c, 0x61e2, 0x53aa, 0xee56, 0x6364, 0x6802, 0x35d2, 0x5d57, 0xee5b, 0x8fda, 0xee5d, 0xfffd, 0x50d9, 0xee60, 0x7906, 0x5332, 0x9638, 0xee64, 0x4065, 0xfffd, 0x77fe, 0xfffd, 0x7cc2, 0xee6a, 0x7cda, 0x7a2d, 0x8066, 0x8063, 0x7d4d, 0x7505, 0x74f2, 0x8994, 0x821a, 0x670c, 0x8062, 0xee76, 0x805b, 0x74f0, 0x8103, 0x7724, 0x8989, 0xee7c, 0x7553, 0xee7e, 0x87a9, 0x87ce, 0x81c8, 0x878c, 0x8a49, 0x8cad, 0x8b43, 0x772b, 0x74f8, 0x84da, 0x3635, 0x69b2, 0x8da6, 0xfffd, 0x89a9, 0xfffd, 0x6db9, 0x87c1, 0xee91, 0x74e7, 0x3ddb, 0x7176, 0x60a4, 0x619c, 0x3cd1, 0xfffd, 0x6077, 0xfffd, 0x7f71, 0xee9c, 0xfffd, 0x60e9, 0x4b7e, 0x5220, 0xeea1, 0xeea2, 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7, 0xeea8, 0xeea9, 0xeeaa, 0x5cc1, 0xeeac, 0xeead, 0xeeae, 0xeeaf, 0xeeb0, 0xeeb1, 0x4562, 0x5b1f, 0xeeb4, 0x9f50, 0x9ea6, 0xeeb7, }; static const unsigned short hkscs_2uni_pagec6[471] = { /* 0xc6 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4e36, 0x4e3f, 0x4e85, 0x4ea0, 0x5182, 0x5196, 0x51ab, 0x52f9, 0x5338, 0x5369, 0x53b6, 0x590a, 0x5b80, 0x5ddb, 0x2f33, 0x5e7f, 0xfffd, 0x5f50, 0x5f61, 0x6534, 0xfffd, 0x7592, 0xfffd, 0x8fb5, 0xfffd, 0x00a8, 0x02c6, 0x30fd, 0x30fe, 0x309d, 0x309e, 0xfffd, 0xfffd, 0x3005, 0x3006, 0x3007, 0x30fc, 0xff3b, 0xff3d, 0x273d, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, /* 0xc7 */ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, /* 0xc8 */ 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x21e7, 0x21b8, 0x21b9, 0xf7e5, 0xf7e6, 0x4e5a, 0xf7e8, 0x5202, 0xf7ea, 0xf7eb, 0x5188, 0xf7ed, 0xf7ee, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xffe2, 0xffe4, 0xff07, 0xff02, 0x3231, 0x2116, 0x2121, 0x309b, 0x309c, 0x2e80, 0x2e84, 0x2e86, 0x2e87, 0x2e88, 0x2e8a, 0x2e8c, 0x2e8d, 0x2e95, 0x2e9c, 0x2e9d, 0x2ea5, 0x2ea7, 0x2eaa, 0x2eac, 0x2eae, 0x2eb6, 0x2ebc, 0x2ebe, 0x2ec6, 0x2eca, 0x2ecc, 0x2ecd, 0x2ecf, 0x2ed6, 0x2ed7, 0x2ede, 0x2ee3, 0xfffd, 0xfffd, 0xfffd, 0x0283, 0x0250, 0x025b, 0x0254, 0x0275, 0x0153, 0x00f8, 0x014b, 0x028a, 0x026a, }; static const unsigned short hkscs_2uni_pagef9[942] = { /* 0xf9 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x7881, 0x92b9, 0x88cf, 0x58bb, 0x6052, 0x7ca7, 0x5afa, 0x2554, 0x2566, 0x2557, 0x2560, 0x256c, 0x2563, 0x255a, 0x2569, 0x255d, 0x2552, 0x2564, 0x2555, 0x255e, 0x256a, 0x2561, 0x2558, 0x2567, 0x255b, 0x2553, 0x2565, 0x2556, 0x255f, 0x256b, 0x2562, 0x2559, 0x2568, 0x255c, 0x2551, 0x2550, 0x256d, 0x256e, 0x2570, 0x256f, 0xffed, /* 0xfa */ 0xe000, 0x92db, 0xe002, 0xe003, 0x854c, 0x42b5, 0x73ef, 0x51b5, 0x3649, 0xe009, 0xe00a, 0x9344, 0xe00c, 0x82ee, 0xe00e, 0x783c, 0x6744, 0x62df, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0x4fab, 0xe018, 0x5008, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0xfffd, 0xe020, 0x5fa4, 0xe022, 0xe023, 0x6edb, 0xe025, 0xfffd, 0x5101, 0x347a, 0x510e, 0x986c, 0x3743, 0x8416, 0xe02d, 0xe02e, 0x5160, 0xe030, 0x516a, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037, 0xe038, 0x5b82, 0x877d, 0xe03b, 0xe03c, 0x51b2, 0x51b8, 0x9d34, 0x51c9, 0x51cf, 0x51d1, 0x3cdc, 0x51d3, 0xe045, 0x51b3, 0x51e2, 0x5342, 0x51ed, 0x83cd, 0x693e, 0xe04c, 0x5f7b, 0x520b, 0x5226, 0x523c, 0x52b5, 0x5257, 0x5294, 0x52b9, 0x52c5, 0x7c15, 0x8542, 0x52e0, 0x860d, 0xe05a, 0xfffd, 0xe05c, 0x5549, 0x6ed9, 0xe05f, 0xe060, 0xe061, 0x5333, 0xfffd, 0xe064, 0x6ccb, 0xe066, 0x681b, 0x73d5, 0x604a, 0x3eaa, 0x38cc, 0xe06c, 0x71dd, 0x44a2, 0x536d, 0x5374, 0xe071, 0x537e, 0xfffd, 0xe074, 0xe075, 0x77e6, 0x5393, 0xe078, 0x53a0, 0x53ab, 0x53ae, 0x73a7, 0xe07d, 0x3f59, 0x739c, 0x53c1, 0x53c5, 0x6c49, 0x4e49, 0x57fe, 0x53d9, 0x3aab, 0xe087, 0x53e0, 0xe089, 0xe08a, 0x53f6, 0xe08c, 0x5413, 0x7079, 0x552b, 0x6657, 0x6d5b, 0x546d, 0xe093, 0xe094, 0x555d, 0x548f, 0x54a4, 0x47a6, 0xe099, 0xe09a, 0x3db4, 0xe09c, /* 0xfb */ 0xe09d, 0xe09e, 0x5547, 0x4ced, 0x542f, 0x7417, 0x5586, 0x55a9, 0xfffd, 0xe0a6, 0xe0a7, 0x4552, 0xe0a9, 0x66b3, 0xe0ab, 0x5637, 0x66cd, 0xe0ae, 0x66a4, 0x66ad, 0x564d, 0x564f, 0x78f1, 0x56f1, 0x9787, 0x53fe, 0x5700, 0x56ef, 0x56ed, 0xe0ba, 0x3623, 0xe0bc, 0x5746, 0xe0be, 0x6c6e, 0x708b, 0x5742, 0x36b1, 0xe0c3, 0x57e6, 0xe0c5, 0x5803, 0xe0c7, 0xe0c8, 0x5826, 0xe0ca, 0x585c, 0x58aa, 0x3561, 0x58e0, 0x58dc, 0xe0d0, 0x58fb, 0x5bff, 0x5743, 0xe0d4, 0xe0d5, 0x93d3, 0x35a1, 0x591f, 0x68a6, 0x36c3, 0x6e59, 0xe0dc, 0x5a24, 0x5553, 0xe0df, 0x8505, 0x59c9, 0xe0e2, 0xe0e3, 0xe0e4, 0xe0e5, 0x59d9, 0xe0e7, 0xe0e8, 0xe0e9, 0x6d71, 0xe0eb, 0xe0ec, 0x59f9, 0xe0ee, 0x5aab, 0x5a63, 0x36e6, 0xe0f2, 0xfffd, 0x3708, 0x5a96, 0x7465, 0x5ad3, 0xe0f8, 0xe0f9, 0x3d85, 0xe0fb, 0x3732, 0xe0fd, 0x5e83, 0x52d0, 0x5b76, 0x6588, 0x5b7c, 0xe103, 0x4004, 0x485d, 0xe106, 0x5bd5, 0x6160, 0xe109, 0xe10a, 0xe10b, 0x5bf3, 0x5b9d, 0x4d10, 0x5c05, 0xe110, 0x5c13, 0x73ce, 0x5c14, 0xe114, 0xe115, 0x5c49, 0x48dd, 0x5c85, 0x5ce9, 0x5cef, 0x5d8b, 0xe11c, 0xe11d, 0x5d10, 0x5d18, 0x5d46, 0xe121, 0x5cba, 0x5dd7, 0x82fc, 0x382d, 0xe126, 0xe127, 0xe128, 0x8287, 0x3836, 0x3bc2, 0x5e2e, 0x6a8a, 0xfffd, 0x5e7a, 0xe130, 0xe131, 0x53a6, 0x4eb7, 0xfffd, 0x53a8, 0xe136, 0x5e09, 0x5ef4, 0xe139, /* 0xfc */ 0x5ef9, 0x5efb, 0x38a0, 0x5efc, 0x683e, 0x941b, 0x5f0d, 0xe141, 0xe142, 0x3ade, 0x48ae, 0xe145, 0x5f3a, 0xe147, 0xe148, 0xfffd, 0xe14a, 0x5f63, 0x97bd, 0xe14d, 0x5f72, 0x9340, 0xe150, 0x5fa7, 0x5db6, 0x3d5f, 0xe154, 0xe155, 0xe156, 0xe157, 0x91d6, 0xe159, 0xe15a, 0x6031, 0x6685, 0xe15d, 0x3963, 0x3dc7, 0x3639, 0x5790, 0xe162, 0x7971, 0x3e40, 0x609e, 0xfffd, 0x60b3, 0xe168, 0xe169, 0xe16a, 0x74a4, 0x50e1, 0x5aa0, 0x6164, 0x8424, 0x6142, 0xe171, 0xe172, 0x6181, 0x51f4, 0xe175, 0x6187, 0x5baa, 0xe178, 0xe179, 0x61d3, 0xe17b, 0xe17c, 0x61d0, 0x3932, 0xe17f, 0xe180, 0x6023, 0x615c, 0x651e, 0x638b, 0xe185, 0x62c5, 0xe187, 0x62d5, 0xe189, 0x636c, 0xe18b, 0x3a17, 0x6438, 0x63f8, 0xe18f, 0xe190, 0xfffd, 0x6f8a, 0xe193, 0x9814, 0xe195, 0xe196, 0x64e1, 0x64e5, 0x947b, 0x3a66, 0x643a, 0x3a57, 0x654d, 0x6f16, 0xe19f, 0xe1a0, 0x6585, 0x656d, 0x655f, 0xe1a4, 0x65b5, 0xe1a6, 0x4b37, 0x65d1, 0x40d8, 0xe1aa, 0x65e0, 0x65e3, 0x5fdf, 0xe1ae, 0x6618, 0xe1b0, 0xe1b1, 0x6644, 0xe1b3, 0xe1b4, 0x664b, 0xe1b6, 0x6667, 0xe1b8, 0x6673, 0xfffd, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, 0x77c5, 0xe1c1, 0x99a4, 0x6702, 0xe1c4, 0xe1c5, 0x3b2b, 0x69fa, 0xe1c8, 0xfffd, 0x6767, 0x6762, 0xe1cc, 0xe1cd, 0x67d7, 0x44e9, 0x6822, 0x6e50, 0x923c, 0x6801, 0xe1d4, 0xe1d5, 0x685d, /* 0xfd */ 0xe1d7, 0x69e1, 0x6a0b, 0xe1da, 0x6973, 0x68c3, 0xe1dd, 0x6901, 0x6900, 0x3d32, 0x3a01, 0xe1e2, 0x3b80, 0x67ac, 0x6961, 0xe1e6, 0x42fc, 0x6936, 0x6998, 0x3ba1, 0xe1eb, 0x8363, 0x5090, 0x69f9, 0xe1ef, 0xe1f0, 0x6a45, 0xe1f2, 0x6a9d, 0x3bf3, 0x67b1, 0x6ac8, 0xe1f7, 0x3c0d, 0x6b1d, 0xe1fa, 0x60de, 0x6b35, 0x6b74, 0xe1fe, 0x6eb5, 0xe200, 0xe201, 0xe202, 0x3740, 0x5421, 0xe205, 0x6be1, 0xe207, 0x6bdc, 0x6c37, 0xe20a, 0xe20b, 0xe20c, 0x6c5a, 0x8226, 0x6c79, 0xe210, 0x44c5, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216, 0x36e5, 0x3ceb, 0xe219, 0x9b83, 0xe21b, 0xe21c, 0x7f8f, 0x6837, 0xe21f, 0xe220, 0xe221, 0x6d96, 0x6d5c, 0x6e7c, 0x6f04, 0xe226, 0xe227, 0xe228, 0x8533, 0xe22a, 0x51c7, 0xfffd, 0xfffd, 0x842e, 0xe22f, 0xfffd, 0xe231, 0x7453, 0xe233, 0x79cc, 0x6e4f, 0x5a91, 0xe237, 0x6ff8, 0x370d, 0x6f9d, 0xe23b, 0x6efa, 0xe23d, 0xe23e, 0x4555, 0x93f0, 0x6f44, 0x6f5c, 0x3d4e, 0x6f74, 0xe245, 0x3d3b, 0x6f9f, 0xe248, 0x6fd3, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, 0x51df, 0xe251, 0xe252, 0xe253, 0xe254, 0x704b, 0x707e, 0x70a7, 0x7081, 0x70cc, 0x70d5, 0x70d6, 0x70df, 0x4104, 0x3de8, 0x71b4, 0x7196, 0xe261, 0x712b, 0x7145, 0x5a88, 0x714a, 0xfffd, 0x5c9c, 0xe268, 0x714f, 0x9362, 0xe26b, 0x712c, 0xe26d, 0xe26e, 0xe26f, 0x71ba, 0xe271, 0x70bd, 0x720e, /* 0xfe */ 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0xe27a, 0x722e, 0x7240, 0xe27d, 0x68bd, 0x7255, 0x7257, 0x3e55, 0xe282, 0x680d, 0x6f3d, 0x7282, 0xfffd, 0x732b, 0xe288, 0xe289, 0x48ed, 0xe28b, 0x7328, 0x732e, 0x73cf, 0x73aa, 0xe290, 0xe291, 0x73c9, 0x7449, 0xe294, 0xe295, 0xe296, 0x6623, 0x36c5, 0xe299, 0xe29a, 0xe29b, 0x73f7, 0x7415, 0x6903, 0xe29f, 0x7439, 0xe2a1, 0x3ed7, 0xfffd, 0xe2a4, 0x7460, 0xe2a6, 0x7447, 0x73e4, 0x7476, 0x83b9, 0x746c, 0x3730, 0x7474, 0x93f1, 0x6a2c, 0x7482, 0x4953, 0xe2b2, 0xe2b3, 0xe2b4, 0xe2b5, 0x5b46, 0xe2b7, 0xe2b8, 0x74c8, 0xe2ba, 0x750e, 0xfffd, 0x751e, 0xe2be, 0xe2bf, 0x5bd7, 0xe2c1, 0x9385, 0x754d, 0x754a, 0x7567, 0x756e, 0xe2c7, 0x3f04, 0xe2c9, 0x758e, 0x745d, 0x759e, 0x75b4, 0x7602, 0x762c, 0x7651, 0x764f, 0x766f, 0x7676, 0xe2d4, 0x7690, 0x81ef, 0x37f8, 0xe2d8, 0xe2d9, 0x76a1, 0x76a5, 0x76b7, 0x76cc, 0xe2de, 0x8462, 0xe2e0, 0xe2e1, 0xe2e2, 0x771e, 0x7726, 0x7740, 0x64af, 0xe2e7, 0x7758, 0xe2e9, 0x77af, 0xe2eb, 0xe2ec, 0xe2ed, 0x77f4, 0xfffd, 0xe2f0, 0xe2f1, 0x68ca, 0x78af, 0x78c7, 0x78d3, 0x96a5, 0x792e, 0xe2f8, 0x78d7, 0x7934, 0x78b1, 0xe2fc, 0x8fb8, 0x8884, 0xe2ff, 0xe300, 0xe301, 0x7986, 0x8900, 0x6902, 0x7980, 0xe306, 0x799d, 0xe308, 0x793c, 0x79a9, 0x6e2a, 0xe30c, 0x3ea8, 0x79c6, 0xe30f, 0x79d4, }; static int hkscs_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x88 && c1 <= 0x8b) || (c1 >= 0x8d && c1 <= 0xa0) || (c1 >= 0xc6 && c1 <= 0xc8) || (c1 >= 0xf9 && c1 <= 0xfe)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) { unsigned int i = 157 * (c1 - 0x80) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40)); unsigned short wc = 0xfffd; if (i < 2041) { if (i < 1883) wc = hkscs_2uni_page88[i-1256]; } else if (i < 10990) { if (i < 5181) wc = hkscs_2uni_page8d[i-2041]; } else if (i < 18997) { if (i < 11461) wc = hkscs_2uni_pagec6[i-10990]; } else { if (i < 19939) wc = hkscs_2uni_pagef9[i-18997]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short hkscs_2charset[4702] = { 0xc6d8, 0x8859, 0x8857, 0x885d, 0x885b, 0x8866, 0x8861, 0x885f, 0x886a, 0x8868, 0x886f, 0x886d, 0x88a7, 0x8873, 0x8871, 0x8877, 0x8875, 0xc8fb, 0x887b, 0x8879, 0x88a2, 0x8856, 0x8867, 0x885a, 0x886c, 0x885c, 0x886e, 0x8870, 0xc8fc, 0x885e, 0x8874, 0xc8fa, 0x8878, 0x8858, 0x8869, 0x8872, 0x8860, 0x8876, 0x887a, 0x887c, 0x887d, 0x887e, 0x88a1, 0xc8f6, 0x886b, 0xc8f8, 0xc8f7, 0x88a8, 0xc8fe, 0xc8f9, 0xc8f5, 0xc8fd, 0xc6d9, 0xc7f9, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a, 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc85b, 0x8863, 0x88a4, 0x8865, 0x88a6, 0xc8d2, 0xc8d3, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be, 0xc877, 0xc878, 0xc876, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xf9f9, 0xf9f8, 0xf9e6, 0xf9ef, 0xf9dd, 0xf9e8, 0xf9f1, 0xf9df, 0xf9ec, 0xf9f5, 0xf9e3, 0xf9ee, 0xf9f7, 0xf9e5, 0xf9e9, 0xf9f2, 0xf9e0, 0xf9eb, 0xf9f4, 0xf9e2, 0xf9e7, 0xf9f0, 0xf9de, 0xf9ed, 0xf9f6, 0xf9e4, 0xf9ea, 0xf9f3, 0xf9e1, 0xf9fa, 0xf9fb, 0xf9fd, 0xf9fc, 0xc6e6, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0, 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1, 0xc6cd, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc8d4, 0xc8d5, 0xc6dc, 0xc6dd, 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc6e3, 0xc6da, 0xc6db, 0xc8d1, 0x9277, 0x96df, 0x89d5, 0x93cd, 0x9bdf, 0xfa68, 0x89da, 0x8f59, 0x89db, 0x8f5d, 0x89dc, 0x96f7, 0x8ada, 0x8bdc, 0x97db, 0x9e53, 0x9daa, 0x9bea, 0x8a6e, 0x8bc8, 0x89e8, 0x89ea, 0xfb70, 0x89ed, 0x94dd, 0x89ee, 0x9eb4, 0x8ad3, 0x92db, 0x94db, 0x89f9, 0xfb7a, 0x89fb, 0x9efc, 0x89fc, 0x89bf, 0x89fe, 0x89e6, 0x9d46, 0x9dee, 0xa07e, 0xa068, 0x98e9, 0x8b68, 0x8dfd, 0x8bbe, 0x9fd9, 0x8aeb, 0x9fd7, 0x8b6a, 0x9c5c, 0x8bb1, 0xfb5e, 0x9df3, 0xa0d0, 0xfc66, 0x92e9, 0x9aec, 0x8fab, 0xfa48, 0x8e45, 0x9c6f, 0x9ede, 0x89ef, 0x96e9, 0x9ebb, 0x94de, 0x9eb8, 0x97ba, 0xfb65, 0x95d6, 0x9cbb, 0x97da, 0x8f45, 0xfb7d, 0x9158, 0xfe64, 0x9856, 0x9b4d, 0x935b, 0x95c7, 0x97e7, 0x9359, 0x91f5, 0x97b8, 0xfda2, 0xfbb6, 0x92fa, 0x9357, 0x8ba6, 0xfbb9, 0x97b0, 0xfdc4, 0x9ca1, 0x91f2, 0x91f9, 0x8ff1, 0x9745, 0x9853, 0xfe78, 0xfbc1, 0x9251, 0x9dad, 0xfd6c, 0xfa6b, 0x9bc2, 0x9a7b, 0x8b60, 0x934b, 0x9abd, 0x91b7, 0x95b4, 0xfec5, 0x9ef0, 0x8d64, 0x9269, 0x8d67, 0xfbea, 0xfbef, 0x8d68, 0x93eb, 0xfc42, 0x9166, 0xfacd, 0x93dd, 0x8bcc, 0x8d6d, 0x8d6e, 0x96a8, 0xfca6, 0x8d6f, 0x8d70, 0xfc64, 0x9060, 0x8d74, 0x97c3, 0x8ad0, 0x9274, 0x9bbe, 0x9cc8, 0x9cba, 0x8d78, 0x9eb9, 0x955a, 0x91b4, 0x8a48, 0x8d7d, 0x8a7d, 0x8ac2, 0xfd4a, 0x8da1, 0x8ad1, 0xfcb4, 0x8b47, 0x93a4, 0x9eda, 0x8a51, 0x8da6, 0x9ec5, 0xfcc4, 0xa078, 0x94b5, 0xfcc2, 0x8a6b, 0x8dab, 0xfae8, 0x8dad, 0xfc49, 0x93c1, 0x906f, 0x8db0, 0x947e, 0x90fa, 0x9479, 0x8db2, 0xfcee, 0x997b, 0x8db4, 0x8db7, 0x91b3, 0x8dbb, 0x8dba, 0x8dbc, 0x9044, 0xfd4c, 0x93e4, 0x93e0, 0xfd53, 0x8dc3, 0x9bb8, 0xfbf0, 0x93e9, 0x93f6, 0x8dc5, 0x8dca, 0x8dcc, 0xfd5d, 0x93b5, 0xfd61, 0x9cf8, 0x9252, 0x9ca5, 0x8dd6, 0x97c0, 0xa0de, 0x97d2, 0xfaa5, 0xfda3, 0x8ddb, 0x8eaf, 0x91b5, 0xfd49, 0xfdd1, 0x8deb, 0x97c6, 0xfdce, 0x90fc, 0xfc59, 0x96d6, 0x97c5, 0x8def, 0x97d7, 0x8df0, 0x96a6, 0xfbbf, 0x8df3, 0x9449, 0x8df5, 0x9872, 0x8e6b, 0xfafd, 0x8f50, 0x9dcc, 0xfc65, 0x996e, 0x94a1, 0x8f63, 0xa0da, 0x9253, 0xfde9, 0x9db5, 0x9879, 0x9d5d, 0x8d63, 0x9669, 0x9f70, 0xfc6a, 0x8ac7, 0x89d7, 0xfe4d, 0x9edd, 0xfefb, 0x98bc, 0xfacc, 0x95b0, 0x9464, 0x936f, 0x94b9, 0x95ec, 0x91ee, 0x98c3, 0x95f6, 0x8ffd, 0x98c5, 0x9766, 0xfe6e, 0x97dd, 0x92d2, 0x9761, 0x98cb, 0x95f0, 0x975d, 0x91e3, 0x98cc, 0x9469, 0x98cd, 0x98ce, 0x95fc, 0x94a3, 0x9662, 0xfeb6, 0x9463, 0x98d0, 0x98d1, 0x9475, 0xfae0, 0x9472, 0x98d6, 0x8af0, 0x98d9, 0x98db, 0x98dd, 0x98a8, 0x8a6d, 0x8afb, 0x8aae, 0xfbc9, 0x98e4, 0x98e6, 0x98e8, 0x8a4d, 0x9257, 0x95df, 0xa0ac, 0x98eb, 0x98ec, 0x98f4, 0x8ab8, 0x9ee7, 0x94bc, 0xfcd1, 0x9cc6, 0x9e7e, 0x98fe, 0xfde8, 0x9940, 0x94c9, 0x94d3, 0x9946, 0x90c0, 0x94d1, 0x9573, 0x93c2, 0x9948, 0x994b, 0x8e55, 0x994e, 0x8efe, 0x8e59, 0x94ec, 0x94ef, 0x8f74, 0x9955, 0x9544, 0x9956, 0x9959, 0x995b, 0xfa45, 0x90b7, 0x9743, 0x95cd, 0x97c9, 0xfd50, 0x8eb9, 0x95c6, 0x9967, 0x8ab9, 0x8dfc, 0x8a76, 0x9d51, 0x9973, 0x9d4f, 0x997a, 0x9564, 0x99a1, 0x99a5, 0x99a7, 0x8eed, 0x99ad, 0x946e, 0x8f70, 0xfad0, 0x99b3, 0xa053, 0x965c, 0xfd7a, 0x97fe, 0x92bd, 0x97fd, 0x8f64, 0xfcf7, 0x9562, 0x97cd, 0x9e64, 0x924c, 0x8ec9, 0x99bc, 0x9da5, 0x8f54, 0x8f7c, 0x8ea2, 0x8f7a, 0x97ae, 0x96c8, 0x99c3, 0x90d6, 0x9cbe, 0x8f76, 0x9470, 0xfb4b, 0xfdca, 0x8ec7, 0xa0f9, 0x8fa9, 0x99c7, 0x90d7, 0x9edf, 0x99ce, 0x8fba, 0x8feb, 0x99cf, 0x8fc2, 0x92c9, 0x97dc, 0x95b3, 0x9c79, 0x95b2, 0x8fdb, 0x9be3, 0x9e7a, 0x9bee, 0x99de, 0xfafa, 0x9ee5, 0x8a52, 0x99e1, 0x8a67, 0x8bb5, 0x8aac, 0x99e9, 0xfbca, 0x97de, 0x95d1, 0x99f5, 0xfc4a, 0x9ba9, 0xfbdc, 0xfe56, 0x9ea4, 0x9d49, 0x95db, 0x89c5, 0x99f8, 0x9664, 0x9055, 0x96d4, 0x977c, 0x964d, 0x97e1, 0x9a48, 0x9a49, 0xfe7d, 0x90aa, 0x9a50, 0x9347, 0x8ed8, 0x90c9, 0x9a55, 0x90bc, 0x9a58, 0x8bb8, 0x90d5, 0x9641, 0x9a5a, 0x9a5c, 0x97c2, 0x8abb, 0x9baa, 0x90f5, 0x9a60, 0x9145, 0x9a63, 0x8bb6, 0xfccf, 0x966b, 0x9a6e, 0x914f, 0x9746, 0xa0e6, 0x92d7, 0x9675, 0x93d4, 0x91bb, 0x9679, 0x9a70, 0x9678, 0x91cd, 0x9c4a, 0xa06f, 0xa06a, 0x915f, 0x9fa5, 0x89ba, 0x9ecd, 0x9a79, 0x9dce, 0x9d73, 0x96b9, 0x96bc, 0x9cd1, 0x89b7, 0x9eee, 0xfb43, 0x9ec9, 0xfbd3, 0x91ae, 0x9d78, 0x9d7b, 0x9eb3, 0x9eb2, 0x9dd6, 0x994f, 0x89ce, 0x8bc0, 0x9fc4, 0x8bd4, 0xc6bf, 0x8bf9, 0x8946, 0xc6c0, 0xfae5, 0xc87b, 0x8bc6, 0x9c57, 0x9afb, 0x89d0, 0x89cf, 0xc6c1, 0x89d1, 0x89e2, 0x927e, 0x9dba, 0xc6c2, 0xfbf8, 0x8bc7, 0x926b, 0x89d2, 0x9fcf, 0x9da9, 0x89d3, 0x99e2, 0x9267, 0x92a4, 0x894e, 0x894f, 0x9278, 0x91b6, 0x89d4, 0x9fd2, 0x92a7, 0x95a2, 0x926e, 0x96ea, 0x926f, 0x92a3, 0x8950, 0xfa57, 0x9866, 0x89d6, 0x98b2, 0x92ab, 0x96de, 0x92ac, 0x9f6e, 0x8ef2, 0x9f6c, 0x89d8, 0xfa59, 0x92a8, 0x9163, 0x9f73, 0x92ad, 0x9be9, 0x92a9, 0x92aa, 0x89d9, 0xfd56, 0x9fa8, 0x92a1, 0x90e3, 0xa0a6, 0x94ab, 0xfc72, 0x97c4, 0x92ae, 0xfa67, 0x92a2, 0xfa69, 0x9268, 0x8951, 0xfa6f, 0xfa71, 0x8952, 0x945a, 0xc6c3, 0x89dd, 0xc8a2, 0xc6c4, 0x9e52, 0x8953, 0x9e55, 0x92ba, 0xc6c5, 0xfa7d, 0xfaa8, 0x9a68, 0xfa47, 0xfa7e, 0x92bb, 0xfdb6, 0xfaa2, 0xfaa3, 0xfaa4, 0x9bb4, 0xfaa6, 0x89df, 0xfddb, 0xfaa9, 0x8954, 0xfaab, 0xfc7a, 0x89e0, 0x9f4f, 0xc87d, 0x89e1, 0xfab0, 0x9fcd, 0xa0e7, 0xfab1, 0x89a6, 0x9efa, 0xfab2, 0xfab4, 0x92c4, 0x9f6f, 0x8bb0, 0x9fac, 0x89e3, 0x9bd3, 0x89e4, 0xfab5, 0x9fd5, 0x8955, 0x92c5, 0x8956, 0xfab3, 0xfab6, 0xfab7, 0x9edc, 0xfbc4, 0x9f71, 0xfaba, 0x92c7, 0xc6c6, 0x9a4c, 0x89e5, 0x9f7d, 0xa0a9, 0xfac4, 0xc6c7, 0x8957, 0xfaaa, 0x8958, 0x8be3, 0x8b61, 0x9af1, 0x9eb7, 0xc6c8, 0xfad1, 0xfad2, 0x9eba, 0xfad4, 0xfad9, 0xfadb, 0x9ce0, 0xfbf7, 0xfbfa, 0x89e7, 0xa07a, 0xfadc, 0xfadd, 0x89e9, 0xc6c9, 0xfae2, 0x89eb, 0xfae3, 0x90c8, 0x92da, 0x8959, 0x9cf5, 0x895a, 0xfae7, 0x9fa2, 0xfaea, 0xfaed, 0x8fad, 0xfb59, 0xfaef, 0x96ef, 0x9dec, 0x9dca, 0xfd6d, 0x89ec, 0xfb44, 0x9de2, 0x9ec0, 0x9e56, 0x9f79, 0x9ac7, 0xfaf4, 0x98a1, 0xfaf8, 0x89f0, 0x9e47, 0x9df7, 0x9fd3, 0x9aca, 0x89f1, 0xfaf9, 0x8e5a, 0x89f2, 0x89f3, 0x925d, 0x8b51, 0x92e0, 0x89f4, 0x9fd4, 0x8a79, 0x89f5, 0x97a7, 0x93ba, 0x9e58, 0x89f6, 0x9e57, 0x89f7, 0x8a41, 0x89f8, 0xfaf1, 0x89fa, 0xfb42, 0xfabf, 0xfba3, 0xfaf7, 0x9e4e, 0x94dc, 0x95da, 0x9df8, 0x9f6a, 0x8ab7, 0xfb46, 0x8a46, 0xfb47, 0x9148, 0x92de, 0x8b53, 0x9df6, 0x9bda, 0x9d7e, 0x89fd, 0x99e4, 0x9e43, 0x9de9, 0x8f52, 0x9df5, 0x9df0, 0x99e7, 0x8bbd, 0x9def, 0x9fb7, 0x9dd0, 0x9feb, 0x8da9, 0x9dcf, 0x98e1, 0x9de5, 0x9dc8, 0xfb4f, 0x9deb, 0xfb54, 0xfb55, 0x9aa2, 0x8ad6, 0x9a5f, 0x9ef5, 0x8fb7, 0x9ad2, 0x9e6a, 0x9ee8, 0x8bbf, 0x91c2, 0x9d62, 0x9260, 0x925e, 0x91c1, 0x8ac5, 0x97a3, 0x8b6c, 0x8d7e, 0x9c54, 0x9dbd, 0x9cc5, 0x895b, 0xfb5c, 0xfb5b, 0xfb57, 0x98c7, 0xfb5a, 0x9cee, 0x92e2, 0x94a7, 0x9bd4, 0xfb64, 0xfb76, 0xfb60, 0x99e5, 0x9ac2, 0x91fb, 0xa073, 0x9f72, 0x9fcc, 0x98a5, 0x92e8, 0x9bbc, 0x96f3, 0x92e7, 0xfc67, 0x8b7d, 0x9bf4, 0x9ef7, 0x9ec1, 0x996f, 0x96f1, 0x8e41, 0x954a, 0x97e6, 0x96f5, 0x92e6, 0x9f42, 0xfb67, 0x99a9, 0xfae6, 0xfb69, 0x97e5, 0x967d, 0xfb6c, 0x99a2, 0x9abb, 0x9a65, 0x944e, 0xfb6e, 0x99df, 0x98e3, 0x9254, 0x967b, 0x8aaf, 0x8baf, 0x9ebd, 0x9ee6, 0xfb6f, 0x8ee1, 0x9b7d, 0x9c7e, 0xf9d9, 0x92ea, 0xfb72, 0xfb71, 0x895c, 0x98f0, 0x96f2, 0xfb74, 0x8bc1, 0x895d, 0x89de, 0x895e, 0xc6ca, 0xfe42, 0xfb7b, 0x895f, 0x8960, 0x9bcd, 0x9dd3, 0x984c, 0x9752, 0x95c3, 0x9bb6, 0x9ab9, 0x97b3, 0x9f74, 0x92f1, 0x97df, 0xfba6, 0xfbab, 0x9877, 0x9854, 0x95c5, 0x9d55, 0xfbb2, 0x957e, 0x9742, 0x94e6, 0x92f5, 0x92fd, 0xfba2, 0x9c51, 0x94e9, 0x985c, 0x92f0, 0x944c, 0x916b, 0x8b78, 0x94e2, 0x984f, 0xfbb5, 0x9271, 0x9365, 0x985b, 0x9850, 0x97bc, 0x92f3, 0x9340, 0x984d, 0x9572, 0xfdef, 0xfdc1, 0xfbba, 0x92eb, 0xfc73, 0x97b7, 0xfbb4, 0x90a7, 0x9741, 0x92f4, 0xfbbc, 0x9577, 0x9ee2, 0x8f78, 0xf9dc, 0x9672, 0x9eb5, 0x964b, 0xa0fa, 0x9575, 0x90da, 0x9367, 0xfea4, 0x90df, 0x9354, 0x8961, 0x8bb4, 0x9dc0, 0x8e48, 0xfbc5, 0xfbc7, 0xc6cb, 0xfa79, 0x9e67, 0xfbd2, 0x8962, 0x8963, 0xfc7d, 0x9f6b, 0xfbcc, 0xfeae, 0xfbd1, 0xfb75, 0xfbd4, 0xfbd6, 0xfbd8, 0x8b5d, 0x934c, 0x9ae2, 0x8bc9, 0xfbdb, 0x9fc9, 0x9f44, 0x98ed, 0xfbdd, 0x8df2, 0x8964, 0xfdf2, 0x934d, 0xfbe7, 0xa0f2, 0x9868, 0x9f58, 0x8d73, 0xfbde, 0xfbdf, 0xfbe3, 0x8da8, 0xfbe4, 0x9c75, 0x9878, 0x8d60, 0xfbe5, 0x8d61, 0x8d62, 0xa0a1, 0x9c40, 0x98ad, 0x9eea, 0x9ceb, 0xfbe0, 0x9f51, 0x8d65, 0x9cf1, 0xfc58, 0x8d66, 0x9654, 0xfbe8, 0xc6cc, 0x9fce, 0xfbfc, 0x9ae4, 0x9f75, 0xfbf1, 0x8d69, 0x934f, 0x934e, 0xfbf4, 0xc6ce, 0xfbc3, 0x8965, 0x8d6a, 0x9353, 0x9dfb, 0xfbfd, 0x9059, 0xfc40, 0xfc41, 0xfc43, 0x9361, 0xfc46, 0x9362, 0x8d6b, 0xfc4c, 0x95b8, 0xc6d0, 0x8bca, 0x987a, 0xc6d1, 0xfc51, 0xfc54, 0xfaaf, 0x8d6c, 0xfa61, 0xfc57, 0x9b70, 0xa051, 0x8bcb, 0x936e, 0xfcd5, 0xfca9, 0xfc61, 0x8966, 0xfacb, 0xf9da, 0x937a, 0xa0e0, 0x936b, 0xfc6b, 0xa0dc, 0x9468, 0xfc6d, 0x8d71, 0xfd64, 0x99ba, 0x9ad0, 0x9a61, 0xa0e5, 0xa05b, 0x96ac, 0x9740, 0x9ef1, 0x9f7e, 0x8d72, 0xfc76, 0x96a9, 0xa06e, 0xfcaa, 0xfbcd, 0xfc74, 0xa074, 0xa071, 0xfc79, 0xfc7c, 0x9c50, 0x9379, 0x9378, 0xa0dd, 0x8d75, 0x8d76, 0x9374, 0x8d77, 0xfca5, 0xfca2, 0x90c3, 0xa079, 0x8d79, 0x8bfc, 0xa076, 0x8bcd, 0x9f5a, 0x9ff4, 0x9fba, 0x8d7a, 0x9e45, 0x93b0, 0xa075, 0x9b46, 0xfcae, 0xfcb0, 0xfa51, 0x8d7b, 0x8d7c, 0x9ed6, 0x93ac, 0x9f5b, 0x93a9, 0xa07c, 0xfcb2, 0x8ac1, 0x9fb4, 0xfcac, 0x9e4c, 0x8fc5, 0x93ad, 0x9dc3, 0x8da2, 0x9d4a, 0xfcb6, 0x8da3, 0x9e4b, 0x9e4d, 0x8da4, 0x8afd, 0xfcb5, 0xfcc3, 0x93b2, 0x8da5, 0x93a1, 0x8ac6, 0x8a5b, 0x894d, 0xfed4, 0x8a78, 0x93ab, 0x8da7, 0x9f45, 0x8a56, 0xfcbf, 0xfcc0, 0x8ee6, 0x8aa4, 0x8943, 0x93f3, 0xfcab, 0x9ea2, 0x9dc7, 0xc6d2, 0x8bce, 0xfcc5, 0xfccb, 0x93b3, 0xfcca, 0xfcc9, 0x8dac, 0xfbc6, 0x8967, 0xfccd, 0x9cf3, 0xfcd0, 0x95bb, 0xfcd3, 0xfcd4, 0x8dae, 0xfcd7, 0x93db, 0xfe63, 0x93d5, 0xfcda, 0x9b71, 0xfcdd, 0x8daf, 0xfaf2, 0x93d8, 0xfcdf, 0x93d3, 0xfce1, 0x8e76, 0xfc62, 0x93d1, 0x8db1, 0x9859, 0xfb52, 0xfb53, 0xfb4d, 0x9cbf, 0x9b72, 0xfb50, 0x93be, 0x9df1, 0xfceb, 0xa0bb, 0x9b7e, 0x8db3, 0x9ae8, 0x8edc, 0x9cf9, 0xfa50, 0x98e7, 0xfcf3, 0xfcf2, 0x93e5, 0x9a59, 0x8db5, 0xfd4d, 0xfd5e, 0x8f7d, 0x9547, 0xfcf6, 0x9250, 0x8968, 0x8db6, 0xfcfb, 0xa07d, 0x98fc, 0x8969, 0xfe4f, 0x9256, 0xfac9, 0x93e8, 0xfcf8, 0x9ce3, 0xfda9, 0xfc44, 0x9640, 0x8db8, 0x9b4a, 0x8fb9, 0xfcfe, 0x896a, 0x8db9, 0x917e, 0x93f4, 0xfb7c, 0x93e7, 0x97ef, 0xfe4a, 0xfd45, 0x96a5, 0xfee0, 0xfd48, 0xfd47, 0xfef2, 0xfe6a, 0x8dbd, 0x9ba1, 0x9ab7, 0x8efc, 0x9fa1, 0xfd51, 0xfaad, 0x8dbe, 0x89a4, 0x9ad9, 0xfd4e, 0x8dc0, 0x97f0, 0x93b4, 0xfd44, 0x9fa7, 0x8dc2, 0x99b6, 0xfd52, 0x8dc1, 0x8e46, 0xa0d1, 0x9fca, 0x92cf, 0x9cf4, 0x8dc4, 0xfd41, 0x9b4c, 0xfd57, 0xfcef, 0x9cde, 0xfd42, 0x986c, 0x97f9, 0x9558, 0x985e, 0xfe7b, 0x94cd, 0x93ee, 0xfd5a, 0x93f5, 0x93ef, 0x8eea, 0x8f5b, 0x8dc6, 0x8dc8, 0x8dc7, 0x93f7, 0x8dc9, 0xfbf2, 0x9670, 0x8dcb, 0xfd5c, 0x8f65, 0x8dcd, 0x9da8, 0x94f9, 0x8dce, 0x93ea, 0xfd5f, 0x93f0, 0x9fb6, 0x8dcf, 0x9763, 0x8dd0, 0x93f1, 0xfd62, 0xfd65, 0x9fdb, 0x93f8, 0x8bf7, 0xfd66, 0x8bcf, 0x8dd1, 0x8dd2, 0xfd71, 0xfd6f, 0x8dd3, 0x9fe7, 0x90bd, 0x9fd0, 0x8bd0, 0xfd72, 0x9cae, 0x8bd1, 0x8adb, 0xfae4, 0x95ce, 0xfd76, 0xfb62, 0x8dd4, 0xfd78, 0x8ee3, 0x9076, 0x98c6, 0x8dd5, 0x97d1, 0x9eb6, 0xfac7, 0xa042, 0x9873, 0x9ffc, 0x8dd7, 0x92fb, 0x8dd8, 0x944f, 0x8dd9, 0x896b, 0x97ce, 0xfaf3, 0xfdae, 0xfbaf, 0x92b7, 0x8dda, 0x9c5a, 0xfdad, 0x8ddc, 0x9444, 0x8ddd, 0xa0d6, 0x97d5, 0x944a, 0x944d, 0x97cb, 0x8dde, 0x8ddf, 0x8de0, 0xfef9, 0xfdc0, 0xfcf9, 0xfb7e, 0x92b3, 0xfdaf, 0x8de1, 0x95d3, 0x89c1, 0xfd68, 0x9cb7, 0x8de3, 0xfac0, 0x8de5, 0xfa64, 0x8947, 0x8de4, 0x8de7, 0x8de8, 0xfdc7, 0xfdb0, 0x9445, 0x97d6, 0xfcc6, 0x9844, 0x8de9, 0x8dea, 0xfe50, 0xfdcc, 0x9da7, 0xfdcd, 0xfdcf, 0x95d2, 0x8ded, 0xfcba, 0xfdc5, 0xfdd2, 0x9cdc, 0x95cf, 0x8dee, 0xfdd4, 0x96ec, 0x96eb, 0x90b6, 0xfdc3, 0x98ab, 0x96ee, 0x8df4, 0xfde0, 0x8df6, 0x8df7, 0x8ffa, 0x97d0, 0x8bd2, 0x8df8, 0x90d9, 0xfaf0, 0xfde1, 0x8df9, 0xfde3, 0x8dfa, 0xfb63, 0x90a6, 0x9970, 0x91eb, 0x9770, 0x986f, 0xfde2, 0x98f2, 0x9afc, 0x896c, 0xfdfd, 0x995e, 0x95bd, 0xfde4, 0x91e6, 0xfde5, 0xfde6, 0xfde7, 0x9454, 0x99b8, 0x97e9, 0x9346, 0x9863, 0x95bc, 0xfded, 0xfdf7, 0x9870, 0x96f6, 0x8ea9, 0x9451, 0x8e43, 0x8b5a, 0xfdee, 0xfdf0, 0xfdf4, 0x9bf5, 0x977e, 0x9bd5, 0x9ac3, 0x97c8, 0xa0db, 0x91d0, 0x9fe4, 0x8fdd, 0x91e9, 0x98e0, 0x92ca, 0x9857, 0xfdeb, 0x9b49, 0x9d76, 0x9eaf, 0x9ccc, 0xfdea, 0x8df1, 0xfdfb, 0x8e53, 0xfacf, 0x96f9, 0x98bf, 0x9e49, 0x9bca, 0xfdfe, 0x92dc, 0xfe41, 0x91cc, 0x91e2, 0xfe44, 0x8bd3, 0xfe47, 0xfe48, 0x9455, 0xfe4b, 0xfe4c, 0x8dbf, 0x9e78, 0xfe51, 0x9456, 0x9d61, 0x9457, 0x9966, 0x8bd5, 0xa069, 0x98b4, 0xa049, 0xa04c, 0x9e65, 0x98b5, 0xfe58, 0x9975, 0xfe53, 0xa065, 0xfe59, 0x98b7, 0x98b8, 0x98ba, 0x98bb, 0x9fbc, 0xa04a, 0x9ec7, 0x98ae, 0x92d6, 0xfae1, 0x91d4, 0xfade, 0xfe5b, 0xfe5e, 0xfbd7, 0xfe5a, 0x94c5, 0xfaca, 0x98c1, 0x975c, 0xfe74, 0x9773, 0xfa46, 0x9764, 0xfe68, 0x964e, 0x9765, 0x89a1, 0x95fa, 0x92d4, 0xfe69, 0xfb45, 0x98c8, 0x90ef, 0x98c9, 0x98ca, 0x946d, 0x94b7, 0xfe6c, 0x946b, 0x92fc, 0x95eb, 0xfe73, 0x976e, 0xfe5f, 0xfdbd, 0x92d5, 0xfeb9, 0xfe71, 0xfbbb, 0x947a, 0x95fb, 0xfe77, 0xfe79, 0xfe75, 0x945d, 0xfe7c, 0x9344, 0x8ea6, 0x92d3, 0x94b8, 0xfc71, 0x975e, 0xfea7, 0x946a, 0x93e3, 0x98cf, 0xa0d9, 0xa0bf, 0xa04d, 0xa0b8, 0xa0ce, 0xa0b7, 0xfea9, 0x89c3, 0xfeab, 0x9df4, 0x896d, 0x9c7b, 0x98d2, 0x9fa9, 0xfeb2, 0xfeb1, 0x97d9, 0xa0c4, 0x9476, 0x9978, 0xfeb3, 0x98d3, 0xfeb4, 0x98d4, 0x9fb9, 0x9471, 0x98d5, 0xfeb8, 0xc6d4, 0xfeba, 0x9e5c, 0xfebb, 0xa044, 0x98d7, 0x98d8, 0xfebc, 0x9ffe, 0xfebd, 0x9ddd, 0x9ee1, 0x98da, 0x9ddf, 0xfebf, 0xfebe, 0x9eeb, 0x9e59, 0xa05c, 0xfec0, 0x9477, 0x98dc, 0xfec1, 0x98de, 0xfec3, 0xfec8, 0xfec9, 0xfeca, 0xfecb, 0x9fc2, 0x98c4, 0x94b0, 0x94b1, 0xfed1, 0xa0c1, 0xfed2, 0xa0cd, 0xfed3, 0x98e5, 0xfed6, 0x91e4, 0x8fc7, 0x94ae, 0x8a4f, 0x94b2, 0x8fd4, 0x98ea, 0xfed8, 0x9de0, 0x98ee, 0x95c4, 0xfce8, 0x98ef, 0xfad8, 0xfedc, 0xa0ae, 0x9d4c, 0x98f1, 0x98f3, 0x94c1, 0x98f5, 0xfa4f, 0x96e2, 0x9450, 0x96a2, 0x98f6, 0x96e5, 0x98f7, 0xa046, 0x96e3, 0x98f8, 0x9ee4, 0xf9d6, 0x94c3, 0x94c2, 0xfee1, 0xfee9, 0x96e4, 0x89ac, 0x96db, 0xfee2, 0x94c4, 0xfee3, 0xfee7, 0x9ffb, 0x93c9, 0x94e8, 0xfb56, 0x90c5, 0xa0a8, 0xfee5, 0x98fd, 0x98fb, 0xfee8, 0x8ebf, 0x8bd8, 0xfef7, 0x8f68, 0x94c6, 0x9dea, 0xfc69, 0x9cda, 0xfef3, 0x9c72, 0xfef0, 0x89c9, 0x9941, 0x9942, 0xfef5, 0x91d7, 0x94cc, 0xfef8, 0x97a8, 0xfefc, 0xfdbf, 0xfefe, 0x96d1, 0x94d5, 0x94d0, 0x9944, 0xa0b3, 0x94cf, 0x9ffa, 0x91e5, 0x9c6a, 0x8e49, 0x8e4c, 0x8e4d, 0x9a73, 0x9947, 0x8e50, 0x8e4f, 0x9949, 0x8e51, 0x8e52, 0x9ab2, 0x89a5, 0x994c, 0x9ff8, 0x8e56, 0x994d, 0x91ca, 0x8e57, 0x94e1, 0x9047, 0x8fd8, 0x8e58, 0x94eb, 0x8e5c, 0x9553, 0x9fe5, 0x9f56, 0x954f, 0x8e5e, 0x996a, 0x9c64, 0x9cd9, 0x8e5d, 0x9950, 0x9951, 0x8e62, 0x9952, 0x8e68, 0x8e61, 0x9f59, 0x8bb3, 0x9f5d, 0x8e66, 0x8e6e, 0x9f64, 0x9953, 0xfab8, 0x9954, 0x8e70, 0x9f61, 0x8e72, 0xa06b, 0x9f40, 0x94ed, 0x94ee, 0x9fbd, 0x8e7b, 0x9957, 0x94f7, 0x9f5f, 0x8e73, 0x9f62, 0x94f6, 0x9958, 0x8e75, 0xf9db, 0x9072, 0x94f8, 0x995a, 0xa0b0, 0x8e79, 0x8e78, 0x94f3, 0x98af, 0xa0b2, 0x8e7a, 0x995c, 0x8e7c, 0x8e7d, 0x8bd9, 0x89a2, 0x9ed7, 0xa0b6, 0x9e42, 0x8ea4, 0x8ea7, 0x9542, 0x987d, 0x9755, 0x8ea8, 0x8eaa, 0x89a3, 0x9960, 0x9962, 0x94fc, 0x9961, 0x94fa, 0x8eae, 0x8eb2, 0x8eb0, 0x9963, 0x97aa, 0x94fb, 0x8ebb, 0x9876, 0x8ea1, 0x8eb7, 0x9da6, 0x9eb0, 0x8eb8, 0x9d70, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8ebc, 0x8ebd, 0x8ebe, 0x9dd1, 0x94fd, 0x8bd7, 0x8bda, 0xa0e2, 0x9fe9, 0xfda8, 0x8ae7, 0x8ec2, 0x8ec4, 0x9964, 0x9965, 0x954e, 0x98b3, 0x8ecb, 0x8bdf, 0x8ece, 0x8ecf, 0x9968, 0x9969, 0x996b, 0x8ed1, 0x996c, 0x8ed4, 0x8ed5, 0x996d, 0xa0be, 0x8ed6, 0xa0bc, 0xa0b5, 0xa0b4, 0x8be0, 0x89b5, 0x8edd, 0x9e5d, 0x9971, 0x89ae, 0x9de8, 0x9565, 0x9972, 0x8b5c, 0x89b1, 0xa0c0, 0x8edf, 0x9566, 0x9974, 0x9976, 0x9977, 0x9979, 0x9dda, 0x8ee0, 0x935c, 0x9de6, 0x8b5f, 0x9563, 0x9567, 0x9de3, 0x997c, 0x997d, 0x997e, 0x8b5b, 0x99a3, 0x99a4, 0x99a6, 0x99a8, 0x8abe, 0x9e61, 0x99aa, 0xa0c8, 0x99ab, 0xfec4, 0x98c2, 0x8ee8, 0xa0ba, 0xfd77, 0x8eee, 0x9ebf, 0x89c2, 0x99ac, 0x956b, 0x956c, 0x99af, 0x994a, 0x8976, 0x8f48, 0xfbee, 0x99ae, 0x8efb, 0x8b52, 0x99b0, 0x8977, 0x8f41, 0x99b1, 0x8f49, 0xfa4d, 0x9de4, 0xfbe9, 0x9b54, 0x99b2, 0x9e68, 0x8f4a, 0x8f42, 0x8f51, 0x9846, 0x99b4, 0x8ef5, 0xfd55, 0x9ccd, 0x8978, 0x8f53, 0x8f6f, 0x8e63, 0x8f56, 0xfe76, 0x9fc6, 0xfaac, 0x8f58, 0x9848, 0x99b7, 0x9665, 0xfa6c, 0x9de7, 0x9e62, 0x96cc, 0x8e67, 0xfc75, 0x987e, 0xfdb9, 0x97fc, 0x98f9, 0x8f66, 0x956e, 0x9245, 0x8f60, 0x9ed1, 0xfecd, 0x99b9, 0x8f62, 0x974c, 0x91c7, 0x955f, 0x99bb, 0x8e6d, 0x8f71, 0x94cb, 0x95b1, 0x9af2, 0x96c3, 0x99bd, 0xa0cf, 0x8f6d, 0x99be, 0x8ef4, 0x8f72, 0x95e4, 0x99bf, 0x9242, 0xfba5, 0x99c0, 0xfdb4, 0x8f77, 0x99c1, 0xfab9, 0x8f40, 0xfa44, 0x99c2, 0x8f5c, 0x99c4, 0x99c5, 0x8f7b, 0x8fa3, 0x99c6, 0x96cd, 0x96c7, 0x8fa5, 0xfabb, 0x9570, 0x9368, 0x8f7e, 0x8faa, 0xa050, 0x90d3, 0x9556, 0x8fb8, 0x99c8, 0x8faf, 0x99c9, 0x9579, 0x9f49, 0x99ca, 0x99cb, 0x9dd5, 0x8fb0, 0xfa7a, 0x9e5f, 0x99cd, 0xa0c9, 0x9adb, 0xa0c6, 0x8fb4, 0xa0d7, 0xa0c7, 0xa043, 0x8fb5, 0x8fb2, 0xa061, 0x9e5e, 0x8fb6, 0x9fe8, 0x9cb2, 0x957c, 0x9fc7, 0x8fbb, 0x8fbc, 0x8fec, 0x8fc0, 0x936a, 0x8be4, 0x9c7c, 0x95a1, 0xfeec, 0x95a3, 0x8fc1, 0xa052, 0x99d0, 0x8fc3, 0x8fc4, 0x95a4, 0x8fc6, 0x9e60, 0xf9d8, 0x95a5, 0x9cb3, 0x99d1, 0xfef1, 0x99d2, 0x9cc2, 0x99d3, 0x95a7, 0x95a9, 0x95a6, 0x9c5d, 0x98e2, 0x8fc9, 0xa0c2, 0x8fca, 0x99d4, 0xa0b9, 0x9b58, 0x8fcd, 0xa0d4, 0x8fce, 0x8be5, 0x8979, 0x8fd0, 0x95b6, 0x99d6, 0x95e5, 0x99d7, 0x95b5, 0xa0ca, 0x9ffd, 0xa058, 0x8fd6, 0x99d8, 0x8fd3, 0x8fe5, 0x8fe9, 0x99d9, 0x927c, 0x9c45, 0x8fde, 0x8fdf, 0xa04b, 0x8fe2, 0xa0cc, 0x8fe3, 0x8fe4, 0x9bc4, 0x9bfc, 0x964c, 0x9af6, 0x8fe7, 0x8fe8, 0x8be7, 0x897a, 0x897b, 0x99da, 0x8fed, 0x95c0, 0xa0cb, 0x9e48, 0x99db, 0x8ff3, 0x8ff9, 0x95c1, 0xa04e, 0x99dc, 0xa064, 0x8ff7, 0x89b0, 0xa048, 0x8ffb, 0x8ff6, 0x9ddc, 0x99dd, 0x8be8, 0x92c1, 0x9fd6, 0xa0d2, 0x9040, 0x8ac4, 0x99e0, 0x9ff0, 0x9ff3, 0x9dbf, 0x9ff6, 0x95c8, 0x9e5a, 0x99e3, 0x8a4a, 0x9ff1, 0x8aa7, 0x99e6, 0x9ff7, 0x9fed, 0x8a5c, 0x9dae, 0x95c9, 0x9048, 0x99e8, 0x9049, 0x90b1, 0x904a, 0x99ea, 0x9bd1, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x904c, 0x904d, 0x95cb, 0x97e2, 0x95cc, 0x9f78, 0x897c, 0x897d, 0x897e, 0x995d, 0x9b5a, 0x9050, 0x9054, 0xc6d6, 0x9aa8, 0x99ef, 0xfeeb, 0x9da3, 0x9da1, 0x9943, 0x9945, 0x9d7d, 0x99f0, 0x99f1, 0x99f2, 0x9d60, 0xa0a3, 0x905b, 0x9edb, 0x9d79, 0x99f3, 0x9062, 0x9f55, 0x9bf9, 0x9065, 0x96e0, 0x98be, 0x9068, 0x906c, 0x95d8, 0x906a, 0x9fb2, 0x9fae, 0x9fb0, 0x89ad, 0x906e, 0x9e71, 0x9e4a, 0x9fdc, 0x89ab, 0x9fb8, 0x9070, 0x8b63, 0x95dc, 0x9071, 0xfc5e, 0x8949, 0x965b, 0x94a6, 0x8fd5, 0x9e73, 0x9075, 0x99f7, 0x99f9, 0x9663, 0x95b9, 0x94d4, 0xfcfa, 0x9077, 0x90ab, 0x9d4d, 0x99fa, 0x92e3, 0x97bb, 0x9078, 0x99fb, 0x97e0, 0x96dc, 0x9ca8, 0x9772, 0x9440, 0x92f2, 0x99fd, 0x99fc, 0xf9d7, 0x964a, 0x96d8, 0x99fe, 0x904b, 0xfa41, 0x9a40, 0x975b, 0x9a41, 0x91dd, 0x93fc, 0x9a42, 0x9a43, 0x9659, 0x9a44, 0x9051, 0x94bf, 0x90a2, 0x9cab, 0x9776, 0xfc55, 0xfe45, 0x94a8, 0x9a45, 0xfa4b, 0x9de1, 0x96d9, 0x9774, 0xfdf5, 0x92e5, 0x9645, 0x91da, 0x90a3, 0xa05f, 0x90af, 0x97bf, 0x914c, 0x967a, 0x91de, 0x9a46, 0xfeb0, 0x9779, 0x946c, 0x9858, 0x9266, 0x93fb, 0x9a47, 0x9749, 0x9748, 0x934a, 0x9ce2, 0x9264, 0x91df, 0xfb79, 0x96d7, 0x9343, 0xfdcb, 0xfe7a, 0x91db, 0x97af, 0x95dd, 0x9348, 0x9a4b, 0xfc45, 0x9a4d, 0x91bc, 0x90e2, 0x90b4, 0x95e1, 0x9a4e, 0x9a4f, 0xfe40, 0xfe43, 0x96dd, 0x9a51, 0x96a7, 0x90b0, 0x9c4e, 0x9443, 0x8eba, 0x9a52, 0xfcc1, 0x8be9, 0x9caf, 0x8bfd, 0x9abc, 0x9ab8, 0x9aae, 0x9aa7, 0x9a53, 0x9d74, 0x8bea, 0x8beb, 0x90b2, 0x95e9, 0x95e8, 0x95e6, 0x90b5, 0x9a54, 0x90b3, 0x95e7, 0x8b50, 0x8bec, 0x9a56, 0x8bfb, 0x9a57, 0xa0aa, 0x9fa6, 0x99cc, 0x9c59, 0x99b5, 0x90be, 0x9faf, 0x95f2, 0x90bf, 0x90c1, 0xfee4, 0x90c4, 0x90c7, 0x92e4, 0x9f52, 0x90db, 0xa066, 0x90d2, 0x90d4, 0x9a5b, 0x95fd, 0x8bc4, 0x90de, 0x9ce4, 0x90e1, 0x9e46, 0x9651, 0xfb58, 0x90e6, 0x9650, 0x90e7, 0x90e8, 0x9a5d, 0x9f7a, 0x9b5c, 0x9f7c, 0xfc52, 0x90e9, 0x90ea, 0x9a5e, 0x9f76, 0x90eb, 0x90ec, 0x8bee, 0x90ee, 0x91c6, 0x90f2, 0xfcbc, 0x8a74, 0x9657, 0x9cef, 0x9fdf, 0x90f7, 0x90f6, 0x9b5e, 0x90f8, 0x90f9, 0xfa6a, 0x8bef, 0x9fe0, 0x9142, 0x9a62, 0x9569, 0x9144, 0x9143, 0x9141, 0x8bf0, 0x9660, 0x8bf1, 0x99f6, 0x9149, 0x914a, 0x914b, 0x9a64, 0x8abf, 0x9a66, 0x9a67, 0x9a69, 0x9a6a, 0x9652, 0x914d, 0x9666, 0x9f7b, 0x9a6b, 0xa06c, 0x9667, 0x9a6c, 0x9a6d, 0x8bf2, 0x966a, 0xfcea, 0x966c, 0x91c4, 0x9677, 0x99f4, 0x9a6f, 0x9fab, 0x8ec1, 0x9555, 0x9152, 0x9153, 0x9155, 0x955d, 0x9671, 0x9c6d, 0x9673, 0x9154, 0x9a71, 0x9156, 0x966d, 0x9557, 0x89c6, 0x89c7, 0x8a6a, 0x8b57, 0x9fe1, 0x9b5f, 0xa05d, 0x915b, 0x915c, 0x915e, 0x9f5c, 0x9f57, 0x9f65, 0x9a72, 0x9160, 0x9f5e, 0x9161, 0x9164, 0x9f41, 0x9169, 0x9168, 0x9a74, 0x96b2, 0x9a75, 0xfda5, 0x9ee9, 0x8bba, 0x916d, 0xa060, 0x9fde, 0x9fc3, 0x96b5, 0xa067, 0x96b3, 0x9a76, 0x95d5, 0x9eca, 0x9a77, 0x9a78, 0x9170, 0x916f, 0x9fa3, 0x9171, 0x96b1, 0x9f63, 0x9f67, 0x8bb9, 0x9a7a, 0x8b56, 0x9ada, 0x96b0, 0x9a7e, 0x9dde, 0x96ad, 0x96ae, 0x9ea1, 0x9e50, 0x96af, 0x8bf4, 0x9fa4, 0x96bd, 0x96f4, 0x96b8, 0xfaa1, 0x91a7, 0xa05e, 0x9a7d, 0x8948, 0x9eb1, 0x9ddb, 0x95bf, 0x8a73, 0x9efe, 0x917a, 0x917b, 0x9aa3, 0x96c2, 0x9f77, 0x9aa4, 0x9aa5, 0x91a1, 0x89b8, 0x9173, 0x9aa6, 0x89bd, 0x89b9, 0x917d, 0x96bb, 0x9ff2, 0x8bf5, 0x9aa9, 0x9f54, 0x9fe3, 0x9eed, 0x91aa, 0x91ab, 0xa070, 0x9f6d, 0x91ac, 0x91ad, 0xa0fd, 0x9fe2, 0x91af, 0x9e41, 0x9aaa, 0x91b0, 0x9aab, 0x9aac, 0x9a4a, 0x91b2, 0x8bf6, 0x9aad, 0x89b6, 0x9aaf, 0x9ab0, 0x9ab1, 0x9aa1, 0x91b9, 0x91ba, 0x91be, 0xa041, 0x8bb7, 0x91c0, 0x9ab3, 0x91c3, 0xa0fc, 0x9fee, 0x9f69, 0x91c8, 0x91c9, 0x8de6, 0x91cb, 0x89c8, 0x8bf8, 0x8daa, 0x9fdd, 0xfa40, 0xfa42, 0xfa43, 0xfa49, 0xfa4a, 0xfa4c, 0xfa4e, 0xfa52, 0xfa53, 0xfa54, 0xfa55, 0xfa56, 0xfa58, 0xfa5a, 0xfa5b, 0xfa5c, 0xfa5d, 0xfa5e, 0xfa60, 0xfa62, 0xfa63, 0xfa65, 0xfa6d, 0xfa6e, 0xfa70, 0xfa72, 0xfa73, 0xfa74, 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa7b, 0xfa7c, 0xfaa7, 0xfaae, 0xfabc, 0xfabe, 0xfac1, 0xfac2, 0xfac3, 0xfac6, 0xfac8, 0xface, 0xfad3, 0xfad6, 0xfad7, 0xfada, 0xfadf, 0xfae9, 0xfaeb, 0xfaec, 0xfaee, 0xfaf5, 0xfaf6, 0xfafb, 0xfafc, 0xfafe, 0xfb40, 0xfb41, 0xfb49, 0xfb4a, 0xfb4c, 0xfb4e, 0xfb51, 0xfb5d, 0xfb5f, 0xfb61, 0xfb66, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6d, 0xfb73, 0xfb77, 0xfb78, 0xfba1, 0xfba4, 0xfba7, 0xfba8, 0xfba9, 0xfbaa, 0xfbac, 0xfbad, 0xfbae, 0xfbb0, 0xfbb1, 0xfbb3, 0xfbb7, 0xfbbd, 0xfbbe, 0xfbc0, 0xfbc2, 0xfbc8, 0xfbcb, 0xfbce, 0xfbcf, 0xfbd0, 0xfbd5, 0xfbd9, 0xfbda, 0xfbe1, 0xfbe2, 0xfbe6, 0xfbeb, 0xfbec, 0xfbed, 0xfbf5, 0xfbf6, 0xfbfb, 0xfbfe, 0xfc47, 0xfc48, 0xfc4b, 0xfc4d, 0xfc4e, 0xfc50, 0xfc53, 0xfc56, 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, 0xfc5f, 0xfc60, 0xfc63, 0xfc68, 0xfc6e, 0xfc6f, 0xfc70, 0xfc77, 0xfc78, 0xfc7b, 0xfc7e, 0xfca1, 0xfca3, 0xfca4, 0xfca7, 0xfca8, 0xfcad, 0xfcaf, 0xfcb1, 0xfcb3, 0xfcb7, 0xfcb8, 0xfcbb, 0xfcbd, 0xfcbe, 0xfcc7, 0xfcc8, 0xfccc, 0xfcce, 0xfcd2, 0xfcd6, 0xfcd8, 0xfcd9, 0xfcdb, 0xfcdc, 0xfcde, 0xfce0, 0xfce3, 0xfce4, 0xfce5, 0xfce6, 0xfce7, 0xfce9, 0xfcec, 0xfced, 0xfcf0, 0xfcf4, 0xfcf5, 0xfcfc, 0xfcfd, 0xfd40, 0xfd43, 0xfd46, 0xfd4b, 0xfd4f, 0xfd54, 0xfd58, 0xfd59, 0xfd5b, 0xfd60, 0xfd63, 0xfd67, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6e, 0xfd70, 0xfd73, 0xfd74, 0xfd75, 0xfd79, 0xfd7b, 0xfd7c, 0xfd7d, 0xfd7e, 0xfda1, 0xfda4, 0xfda6, 0xfda7, 0xfdaa, 0xfdab, 0xfdac, 0xfdb1, 0xfdb2, 0xfdb3, 0xfdb5, 0xfdba, 0xfdbc, 0xfdbe, 0xfdc2, 0xfdc6, 0xfdc8, 0xfdc9, 0xfdd0, 0xfdd3, 0xfdd5, 0xfdd6, 0xfdd7, 0xfdd8, 0xfdd9, 0xfdda, 0xfddc, 0xfddd, 0xfdde, 0xfddf, 0xfdec, 0xfdf3, 0xfdf6, 0xfdf8, 0xfdf9, 0xfdfa, 0xfdfc, 0xfe46, 0xfe49, 0xfe4e, 0xfe54, 0xfe55, 0xfe57, 0xfe5c, 0xfe5d, 0xfe60, 0xfe61, 0xfe62, 0xfe65, 0xfe66, 0xfe67, 0xfe6b, 0xfe6d, 0xfe70, 0xfe72, 0xfe7e, 0xfea1, 0xfea2, 0xfea3, 0xfea5, 0xfea6, 0xfea8, 0xfeac, 0xfead, 0xfeaf, 0xfeb5, 0xfeb7, 0xfec2, 0xfec6, 0xfec7, 0xfecc, 0xfece, 0xfecf, 0xfed0, 0xfed5, 0xfed7, 0xfed9, 0xfeda, 0xfedb, 0xfede, 0xfedf, 0xfee6, 0xfeea, 0xfeed, 0xfeee, 0xfeef, 0xfef4, 0xfef6, 0xfefa, 0xfefd, 0x8e40, 0x8e42, 0x8e44, 0x8e47, 0x8e4a, 0x8e4b, 0x8e4e, 0x8e54, 0x8e5b, 0x8e5f, 0x8e60, 0x8e64, 0x8e65, 0x8e6a, 0x8e6c, 0x8e71, 0x8e74, 0x8e77, 0x8ea3, 0x8ea5, 0x8eac, 0x8ead, 0x8eb1, 0x8eb3, 0x8eb5, 0x8eb6, 0x8ec0, 0x8ec3, 0x8ec5, 0x8ec6, 0x8ec8, 0x8eca, 0x8ecc, 0x8ed2, 0x8ed3, 0x8ed7, 0x8ed9, 0x8eda, 0x8edb, 0x8ede, 0x8ee2, 0x8ee4, 0x8ee5, 0x8ee7, 0x8ee9, 0x8eeb, 0x8eec, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef3, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efd, 0x8f43, 0x8f44, 0x8f46, 0x8f47, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, 0x8f55, 0x8f5a, 0x8f5e, 0x8f5f, 0x8f61, 0x8f67, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f73, 0x8f75, 0x8f79, 0x8fa1, 0x8fa2, 0x8fa4, 0x8fa6, 0x8fa7, 0x8fa8, 0x8fac, 0x8fae, 0x8fb1, 0x8fb3, 0x8fbd, 0x8fbe, 0x8fbf, 0x8fc8, 0x8fcf, 0x8fd1, 0x8fd2, 0x8fd7, 0x8fd9, 0x8fda, 0x8fdc, 0x8fe0, 0x8fe1, 0x8fe6, 0x8fea, 0x8fee, 0x8fef, 0x8ff0, 0x8ff2, 0x8ff4, 0x8ff5, 0x8ff8, 0x8ffc, 0x9041, 0x9042, 0x9043, 0x9045, 0x9046, 0x904e, 0x904f, 0x9052, 0x9053, 0x9056, 0x9057, 0x9058, 0x905a, 0x905c, 0x905d, 0x905e, 0x905f, 0x9061, 0x9063, 0x9064, 0x9066, 0x9067, 0x9069, 0x906b, 0x9073, 0x9074, 0x9079, 0x907b, 0x907c, 0x907d, 0x907e, 0x90a1, 0x90a4, 0x90a5, 0x90a8, 0x90a9, 0x90ac, 0x90ad, 0x90ae, 0x90b8, 0x90b9, 0x90ba, 0x90bb, 0x90c2, 0x90c6, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d8, 0x90dd, 0x90e0, 0x90e4, 0x90e5, 0x90ed, 0x90f0, 0x90f3, 0x90f4, 0x90fb, 0x90fd, 0x90fe, 0x9140, 0x9146, 0x9147, 0x914e, 0x9150, 0x9151, 0x9157, 0x9159, 0x915a, 0x915d, 0x9162, 0x9165, 0x9167, 0x916a, 0x916c, 0x916e, 0x9172, 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, 0x917c, 0x91a2, 0x91a3, 0x91a4, 0x91a5, 0x91a6, 0x91a8, 0x91a9, 0x91b1, 0x91b8, 0x91bd, 0x91c5, 0x91ce, 0x91cf, 0x91d1, 0x91d2, 0x91d3, 0x91d5, 0x91d6, 0x91d8, 0x91d9, 0x91dc, 0x91e0, 0x91e1, 0x91e7, 0x91e8, 0x91ea, 0x91ec, 0x91ed, 0x91ef, 0x91f0, 0x91f1, 0x91f3, 0x91f4, 0x91f6, 0x91f7, 0x91f8, 0x91fa, 0x91fc, 0x91fd, 0x91fe, 0x9240, 0x9241, 0x9243, 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924d, 0x924e, 0x924f, 0x9255, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925f, 0x9261, 0x9262, 0x9263, 0x9265, 0x926a, 0x926c, 0x926d, 0x9270, 0x9272, 0x9273, 0x9275, 0x9276, 0x9279, 0x927a, 0x927b, 0x927d, 0x92a5, 0x92a6, 0x92b4, 0x92b5, 0x92b6, 0x92b8, 0x92b9, 0x92bc, 0x92be, 0x92bf, 0x92c0, 0x92c2, 0x92c3, 0x92c6, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, 0x92d8, 0x92d9, 0x92dd, 0x92df, 0x92e1, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f6, 0x92f7, 0x92f8, 0x92f9, 0x92fe, 0x9341, 0x9342, 0x9345, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9356, 0x9358, 0x935a, 0x935d, 0x935e, 0x935f, 0x9360, 0x9363, 0x9364, 0x9366, 0x9369, 0x936c, 0x936d, 0x9370, 0x9371, 0x9372, 0x9373, 0x9375, 0x9376, 0x9377, 0x937b, 0x937c, 0x937d, 0x937e, 0x93a2, 0x93a3, 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93aa, 0x93ae, 0x93af, 0x93b1, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93bb, 0x93bc, 0x93bd, 0x93bf, 0x93c0, 0x93c3, 0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93ca, 0x93cb, 0x93cc, 0x93ce, 0x93cf, 0x93d0, 0x93d2, 0x93d6, 0x93d7, 0x93d9, 0x93da, 0x93dc, 0x93de, 0x93df, 0x93e1, 0x93e2, 0x93e6, 0x93ec, 0x93ed, 0x93f2, 0x93f9, 0x93fa, 0x93fd, 0x93fe, 0x9441, 0x9442, 0x9446, 0x9448, 0x944b, 0x9452, 0x9453, 0x9458, 0x9459, 0x945b, 0x945c, 0x945e, 0x945f, 0x9460, 0x9461, 0x9462, 0x9465, 0x9466, 0x9467, 0x946f, 0x9473, 0x9474, 0x9478, 0x947b, 0x947c, 0x947d, 0x94a2, 0x94a4, 0x94a5, 0x94a9, 0x94aa, 0x94ac, 0x94ad, 0x94af, 0x94b3, 0x94b4, 0x94b6, 0x94ba, 0x94bb, 0x94bd, 0x94be, 0x94c0, 0x94c7, 0x94c8, 0x94ce, 0x94d2, 0x94d6, 0x94d7, 0x94d8, 0x94d9, 0x94da, 0x94df, 0x94e0, 0x94e3, 0x94e4, 0x94e5, 0x94e7, 0x94ea, 0x94f0, 0x94f1, 0x94f2, 0x94f4, 0x94f5, 0x94fe, 0x9540, 0x9541, 0x9543, 0x9545, 0x9546, 0x9548, 0x9549, 0x954b, 0x954c, 0x954d, 0x9550, 0x9551, 0x9552, 0x9554, 0x9559, 0x955b, 0x955c, 0x955e, 0x9560, 0x9561, 0x9568, 0x956a, 0x956d, 0x956f, 0x9571, 0x9574, 0x9576, 0x9578, 0x957a, 0x957b, 0x957d, 0x95a8, 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b7, 0x95ba, 0x95be, 0x95c2, 0x95ca, 0x95d0, 0x95d4, 0x95d7, 0x95de, 0x95e0, 0x95e2, 0x95e3, 0x95ea, 0x95ed, 0x95ee, 0x95ef, 0x95f1, 0x95f3, 0x95f4, 0x95f5, 0x95f7, 0x95f8, 0x95f9, 0x95fe, 0x9642, 0x9643, 0x9646, 0x9647, 0x9648, 0x9649, 0x964f, 0x9653, 0x9655, 0x9656, 0x9658, 0x965a, 0x965d, 0x965e, 0x965f, 0x9661, 0x9668, 0x966e, 0x966f, 0x9674, 0x9676, 0x967c, 0x967e, 0x96a1, 0x96a3, 0x96a4, 0x96aa, 0x96ab, 0x96b4, 0x96b6, 0x96b7, 0x96ba, 0x96be, 0x96bf, 0x96c0, 0x96c1, 0x96c4, 0x96c5, 0x96c6, 0x96c9, 0x96ca, 0x96cb, 0x96ce, 0x96cf, 0x96d0, 0x96d2, 0x96d3, 0x96d5, 0x96da, 0x96e1, 0x96e6, 0x96e7, 0x96e8, 0x96f0, 0x96f8, 0x96fa, 0x96fb, 0x96fd, 0x96fe, 0x9744, 0x9747, 0x974a, 0x974b, 0x974d, 0x974e, 0x974f, 0x9750, 0x9751, 0x9753, 0x9754, 0x9756, 0x9757, 0x9758, 0x9759, 0x975a, 0x975f, 0x9760, 0x9762, 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976f, 0x9771, 0x9775, 0x9777, 0x9778, 0x977a, 0x977b, 0x977d, 0x97a1, 0x97a2, 0x97a4, 0x97a5, 0x97a6, 0x97a9, 0x97ab, 0x97ac, 0x97ad, 0x97b1, 0x97b2, 0x97b4, 0x97b5, 0x97b6, 0x97b9, 0x97bd, 0x97be, 0x97c1, 0x97c7, 0x97ca, 0x97cc, 0x97cf, 0x97d3, 0x97d4, 0x97d8, 0x97e3, 0x97e4, 0x97e8, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7, 0x97f8, 0x97fa, 0x97fb, 0x9840, 0x9841, 0x9842, 0x9843, 0x9845, 0x9847, 0x9849, 0x984a, 0x984b, 0x984e, 0x9851, 0x9852, 0x9855, 0x985a, 0x985d, 0x985f, 0x9860, 0x9861, 0x9862, 0x9864, 0x9865, 0x9867, 0x9869, 0x986a, 0x986b, 0x986d, 0x986e, 0x9871, 0x9874, 0x9875, 0x987b, 0x987c, 0x98a2, 0x98a3, 0x98a4, 0x98a6, 0x98a7, 0x98a9, 0x98aa, 0x98ac, 0x98b0, 0x98b1, 0x98b6, 0x98b9, 0x98bd, 0x98c0, 0x98df, 0x98fa, 0x995f, 0x99d5, 0x9a7c, 0x9ab4, 0x9ab5, 0x9ab6, 0x9aba, 0x9abe, 0x9abf, 0x9ac0, 0x9ac1, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac8, 0x9ac9, 0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf, 0x9ad1, 0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad8, 0x9adc, 0x9add, 0x9ade, 0x9adf, 0x9ae0, 0x9ae1, 0x9ae3, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae9, 0x9aea, 0x9aeb, 0x9aed, 0x9aee, 0x9aef, 0x9af0, 0x9af3, 0x9af4, 0x9af5, 0x9af7, 0x9af8, 0x9af9, 0x9afa, 0x9afd, 0x9afe, 0x9b40, 0x9b41, 0x9b42, 0x9b43, 0x9b44, 0x9b45, 0x9b47, 0x9b48, 0x9b4b, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51, 0x9b52, 0x9b53, 0x9b55, 0x9b56, 0x9b57, 0x9b59, 0x9b5b, 0x9b5d, 0x9b60, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b73, 0x9b74, 0x9b75, 0x9b77, 0x9b79, 0x9b7a, 0x9b7c, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3, 0x9bb5, 0x9bb7, 0x9bb9, 0x9bba, 0x9bbb, 0x9bbd, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc3, 0x9bc5, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bcb, 0x9bcc, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd2, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bdb, 0x9bdc, 0x9bdd, 0x9be0, 0x9be1, 0x9be2, 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9beb, 0x9bed, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3, 0x9bf7, 0x9bf8, 0x9bfa, 0x9bfb, 0x9bfd, 0x9bfe, 0x9c41, 0x9c43, 0x9c44, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4b, 0x9c4c, 0x9c4d, 0x9c4f, 0x9c52, 0x9c55, 0x9c56, 0x9c58, 0x9c5b, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0x9c63, 0x9c65, 0x9c66, 0x9c67, 0x9c69, 0x9c6c, 0x9c6e, 0x9c70, 0x9c71, 0x9c73, 0x9c74, 0x9c76, 0x9c78, 0x9c7a, 0x9c7d, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca6, 0x9ca7, 0x9ca9, 0x9caa, 0x9cac, 0x9cad, 0x9cb0, 0x9cb1, 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb8, 0x9cb9, 0x9cc0, 0x9cc1, 0x9cc3, 0x9cc4, 0x9cc7, 0x9cc9, 0x9cca, 0x9ccb, 0x9cce, 0x9ccf, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7, 0x9cd8, 0x9cdb, 0x9cdd, 0x9cdf, 0x9ce1, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9cec, 0x9ced, 0x9cf0, 0x9cf2, 0x9cf6, 0x9cf7, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d47, 0x9d48, 0x9d4b, 0x9d4e, 0x9d50, 0x9d52, 0x9d53, 0x9d54, 0x9d56, 0x9d58, 0x9d59, 0x9d5b, 0x9d5c, 0x9d5e, 0x9d5f, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d71, 0x9d72, 0x9d75, 0x9d77, 0x9d7a, 0x9d7c, 0x9da2, 0x9da4, 0x9dab, 0x9dac, 0x9daf, 0x9db0, 0x9db1, 0x9db2, 0x9db3, 0x9db4, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dbb, 0x9dbc, 0x9dbe, 0x9dc1, 0x9dc2, 0x9dc5, 0x9dc6, 0x9dc9, 0x9dcb, 0x9dcd, 0x9dd2, 0x9dd4, 0x9dd7, 0x9dd8, 0x9dd9, 0x9ded, 0x9df2, 0x9df9, 0x9dfa, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e44, 0x9e4f, 0x9e51, 0x9e54, 0x9e5b, 0x9e63, 0x9e66, 0x9e69, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, 0x9e6f, 0x9e70, 0x9e72, 0x9e74, 0x9e75, 0x9e76, 0x9e77, 0x9e79, 0x9e7b, 0x9e7c, 0x9e7d, 0x9ea3, 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0x9eaa, 0x9eab, 0x9ead, 0x9eae, 0x9ebc, 0x9ebe, 0x9ec2, 0x9ec3, 0x9ec6, 0x9ec8, 0x9ecb, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed2, 0x9ed3, 0x9ed4, 0x9ed5, 0x9ed8, 0x9ed9, 0x9ee0, 0x9ee3, 0x9eec, 0x9ef2, 0x9ef3, 0x9ef6, 0x9ef8, 0x9ef9, 0x9efb, 0x9f43, 0x9f46, 0x9f47, 0x9f48, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f50, 0x9f53, 0x9f68, 0x9faa, 0x9fb3, 0x9fb5, 0x9fbb, 0x9fbe, 0x9fbf, 0x9fc1, 0x9fc5, 0x9fd1, 0x9fec, 0x9ff5, 0x9ff9, 0xa040, 0xa045, 0xa047, 0xa04f, 0xa055, 0xa056, 0xa059, 0xa06d, 0xa07b, 0xa0a2, 0xa0a4, 0xa0a7, 0xa0ab, 0xa0b1, 0xa0bd, 0xa0c3, 0xa0c5, 0xa0d8, 0xa0e3, 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, 0xa0f0, 0xa0f1, 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0fb, 0xa0fe, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, 0x8846, 0x8847, 0x8848, 0x8849, 0x884a, 0x884b, 0x884c, 0x884d, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853, 0x8854, 0x8855, 0x8862, 0x8864, 0x88a3, 0x88a5, 0x88a9, 0x88aa, 0x8940, 0x8941, 0x894c, 0x89b2, 0x89bb, 0x89bc, 0x89be, 0x89ca, 0x89cb, 0x89cc, 0x89cd, 0x8a40, 0x8a43, 0x8a44, 0x8a45, 0x8a47, 0x8a49, 0x8a4b, 0x8a4c, 0x8a4e, 0x8a50, 0x8a53, 0x8a54, 0x8a55, 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5d, 0x8a5e, 0x8a5f, 0x8a60, 0x8a61, 0x8a62, 0x8a64, 0x8a65, 0x8a66, 0x8a68, 0x8a69, 0x8a6c, 0x8a6f, 0x8a70, 0x8a71, 0x8a72, 0x8a77, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7e, 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa5, 0x8aa6, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aad, 0x8ab0, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8abc, 0x8abd, 0x8ac0, 0x8ac3, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8ace, 0x8acf, 0x8ad2, 0x8ad4, 0x8ad5, 0x8ad7, 0x8ad8, 0x8ad9, 0x8adc, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae8, 0x8ae9, 0x8aea, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x8afc, 0x8afe, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0x8b55, 0x8b58, 0x8b59, 0x8b5e, 0x8b62, 0x8b64, 0x8b65, 0x8b66, 0x8b67, 0x8b69, 0x8b6b, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7e, 0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5, 0x8ba7, 0x8ba8, 0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad, 0x8bae, 0x8bb2, 0x8bbb, 0x8bbc, 0x8bc2, 0x8bc3, 0x8bc5, 0x8bd6, 0x8bdb, 0x8bde, 0x8be1, 0x8be2, 0x8be6, 0x8bed, 0x8bf3, 0x8bfa, 0x8de2, 0x8dec, 0x8dfb, 0x8dfe, 0xc879, 0xc87a, 0xc87c, 0xc87e, 0xc8a1, 0xc8a3, 0xc8a4, 0xc8d0, 0xc8cf, 0xc6e4, 0xc6e5, 0xc8cd, 0xc8ce, 0xf9fe, }; static const Summary16 hkscs_uni2indx_page00[45] = { /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0100 }, { 1, 0x0000 }, { 1, 0x0703 }, { 6, 0x000c }, { 8, 0x3703 }, { 15, 0x170c }, /* 0x0100 */ { 21, 0x0003 }, { 23, 0x0c0c }, { 27, 0x0800 }, { 28, 0x0000 }, { 28, 0x3800 }, { 31, 0x0008 }, { 32, 0x0800 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x6000 }, { 35, 0x1557 }, { 43, 0x0000 }, { 43, 0x0000 }, /* 0x0200 */ { 43, 0x0000 }, { 43, 0x0000 }, { 43, 0x0000 }, { 43, 0x0000 }, { 43, 0x0000 }, { 43, 0x0813 }, { 47, 0x0402 }, { 49, 0x0020 }, { 50, 0x0408 }, { 52, 0x0000 }, { 52, 0x0000 }, { 52, 0x0000 }, { 52, 0x0040 }, }; static const Summary16 hkscs_uni2indx_page04[6] = { /* 0x0400 */ { 53, 0x0002 }, { 54, 0xffff }, { 70, 0xffff }, { 86, 0xffff }, { 102, 0xffff }, { 118, 0x0002 }, }; static const Summary16 hkscs_uni2indx_page1e[13] = { /* 0x1e00 */ { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0x0000 }, { 119, 0xc000 }, { 121, 0x0003 }, }; static const Summary16 hkscs_uni2indx_page21[15] = { /* 0x2100 */ { 123, 0x0000 }, { 123, 0x0040 }, { 124, 0x0002 }, { 125, 0x0000 }, { 125, 0x0000 }, { 125, 0x0000 }, { 125, 0x0000 }, { 125, 0x03ff }, { 135, 0x0000 }, { 135, 0x0000 }, { 135, 0x0000 }, { 135, 0x0300 }, { 137, 0x0000 }, { 137, 0x0000 }, { 137, 0x0080 }, }; static const Summary16 hkscs_uni2indx_page24[24] = { /* 0x2400 */ { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x0000 }, { 138, 0x03ff }, { 148, 0x3ff0 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, /* 0x2500 */ { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0x0000 }, { 158, 0xffff }, { 174, 0xffff }, { 190, 0x0001 }, }; static const Summary16 hkscs_uni2indx_page27[4] = { /* 0x2700 */ { 191, 0x0000 }, { 191, 0x0000 }, { 191, 0x0000 }, { 191, 0x2000 }, }; static const Summary16 hkscs_uni2indx_page2e[48] = { /* 0x2e00 */ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x35d1 }, { 200, 0x3020 }, { 203, 0x54a0 }, { 208, 0x5040 }, { 211, 0xb440 }, { 216, 0x40c0 }, { 219, 0x0008 }, { 220, 0x0000 }, /* 0x2f00 */ { 220, 0x0000 }, { 220, 0x0000 }, { 220, 0x0000 }, { 220, 0x0008 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, { 221, 0x0000 }, /* 0x3000 */ { 221, 0x00e0 }, { 224, 0x0000 }, { 224, 0x0000 }, { 224, 0x0000 }, { 224, 0xfffe }, { 239, 0xffff }, { 255, 0xffff }, { 271, 0xffff }, { 287, 0xffff }, { 303, 0x780f }, { 311, 0xfffe }, { 326, 0xffff }, { 342, 0xffff }, { 358, 0xffff }, { 374, 0xffff }, { 390, 0x707f }, }; static const Summary16 hkscs_uni2indx_page32[4] = { /* 0x3200 */ { 400, 0x0000 }, { 400, 0x0000 }, { 400, 0x0000 }, { 400, 0x0002 }, }; static const Summary16 hkscs_uni2indx_page34[1723] = { /* 0x3400 */ { 401, 0x0000 }, { 401, 0x0000 }, { 401, 0x0000 }, { 401, 0x0020 }, { 402, 0x1001 }, { 404, 0x0000 }, { 404, 0x0010 }, { 405, 0x6408 }, { 409, 0x0000 }, { 409, 0x0048 }, { 411, 0x8020 }, { 413, 0x1000 }, { 414, 0x0102 }, { 416, 0x8000 }, { 417, 0x0010 }, { 418, 0x0800 }, /* 0x3500 */ { 419, 0x0040 }, { 420, 0x0000 }, { 420, 0x0000 }, { 420, 0x4000 }, { 421, 0x0000 }, { 421, 0x000a }, { 423, 0x2002 }, { 425, 0x0185 }, { 429, 0x0010 }, { 430, 0x0180 }, { 432, 0x2022 }, { 435, 0x8000 }, { 436, 0x44a2 }, { 441, 0x2844 }, { 445, 0x0000 }, { 445, 0x480e }, /* 0x3600 */ { 450, 0x0200 }, { 451, 0x0500 }, { 453, 0x2008 }, { 455, 0x4220 }, { 458, 0x4380 }, { 462, 0x8000 }, { 463, 0x0000 }, { 463, 0x0400 }, { 464, 0x0002 }, { 465, 0x0400 }, { 466, 0x1420 }, { 469, 0x1223 }, { 474, 0x01ba }, { 480, 0x2058 }, { 484, 0x0066 }, { 488, 0x0020 }, /* 0x3700 */ { 489, 0x250a }, { 494, 0x1000 }, { 495, 0x302c }, { 500, 0x040d }, { 504, 0x0009 }, { 506, 0x0000 }, { 506, 0x8004 }, { 508, 0x0000 }, { 508, 0x0000 }, { 508, 0x0080 }, { 509, 0x0001 }, { 510, 0x4200 }, { 512, 0x0000 }, { 512, 0x0000 }, { 512, 0x0000 }, { 512, 0x0904 }, /* 0x3800 */ { 515, 0x8000 }, { 516, 0x0200 }, { 517, 0x2001 }, { 519, 0x0140 }, { 521, 0x0000 }, { 521, 0x0000 }, { 521, 0x0008 }, { 522, 0x0000 }, { 522, 0x0000 }, { 522, 0x0000 }, { 522, 0x0001 }, { 523, 0x0000 }, { 523, 0x1008 }, { 525, 0x0002 }, { 526, 0x0000 }, { 526, 0x0400 }, /* 0x3900 */ { 527, 0x0100 }, { 528, 0x0010 }, { 529, 0x0080 }, { 530, 0x8004 }, { 532, 0x2000 }, { 533, 0x0000 }, { 533, 0x0008 }, { 534, 0x0000 }, { 534, 0x0601 }, { 537, 0x0a04 }, { 540, 0x0012 }, { 542, 0x0100 }, { 543, 0x0000 }, { 543, 0x1000 }, { 544, 0x1024 }, { 547, 0x4900 }, /* 0x3a00 */ { 550, 0x004a }, { 553, 0x0180 }, { 555, 0x0600 }, { 557, 0x0010 }, { 558, 0x0800 }, { 559, 0x5084 }, { 563, 0x00c0 }, { 565, 0x0000 }, { 565, 0x0000 }, { 565, 0x0080 }, { 566, 0x0800 }, { 567, 0x2000 }, { 568, 0x0000 }, { 568, 0x4000 }, { 569, 0x0001 }, { 570, 0x0805 }, /* 0x3b00 */ { 573, 0x4000 }, { 574, 0x0200 }, { 575, 0x0804 }, { 577, 0x0200 }, { 578, 0x0004 }, { 579, 0x0100 }, { 580, 0x0001 }, { 581, 0x1806 }, { 585, 0x0001 }, { 586, 0x0240 }, { 588, 0x0002 }, { 589, 0x5000 }, { 591, 0x0014 }, { 593, 0x2080 }, { 595, 0x1000 }, { 596, 0x001c }, /* 0x3c00 */ { 599, 0x2000 }, { 600, 0x0022 }, { 602, 0x0000 }, { 602, 0x0000 }, { 602, 0x0000 }, { 602, 0x0010 }, { 603, 0x0000 }, { 603, 0x0000 }, { 603, 0x0000 }, { 603, 0x0000 }, { 603, 0x0000 }, { 603, 0x0000 }, { 603, 0x2800 }, { 605, 0x1042 }, { 608, 0x8800 }, { 610, 0x0000 }, /* 0x3d00 */ { 610, 0x0000 }, { 610, 0x2008 }, { 612, 0x0000 }, { 612, 0x0804 }, { 614, 0x5040 }, { 617, 0x8002 }, { 619, 0x8604 }, { 623, 0x2020 }, { 625, 0x8420 }, { 628, 0x0002 }, { 629, 0x2020 }, { 631, 0x8010 }, { 633, 0x30c0 }, { 637, 0x0808 }, { 639, 0x0980 }, { 642, 0x3088 }, /* 0x3e00 */ { 646, 0x0040 }, { 647, 0x0000 }, { 647, 0x0000 }, { 647, 0x0000 }, { 647, 0x0109 }, { 650, 0x0020 }, { 651, 0x0000 }, { 651, 0x0010 }, { 652, 0x0000 }, { 652, 0x0000 }, { 652, 0x2700 }, { 656, 0x8102 }, { 659, 0x1484 }, { 663, 0x44c3 }, { 669, 0x0a86 }, { 674, 0x9419 }, /* 0x3f00 */ { 680, 0x4051 }, { 684, 0x0000 }, { 684, 0x0000 }, { 684, 0x0000 }, { 684, 0x0000 }, { 684, 0x0308 }, { 687, 0x0008 }, { 688, 0x1000 }, { 689, 0x0000 }, { 689, 0x0008 }, { 690, 0x0000 }, { 690, 0x0000 }, { 690, 0x0001 }, { 691, 0x1080 }, { 693, 0x2020 }, { 695, 0x0600 }, /* 0x4000 */ { 697, 0x0010 }, { 698, 0x2000 }, { 699, 0x0000 }, { 699, 0x0200 }, { 700, 0x0020 }, { 701, 0x0088 }, { 703, 0x8424 }, { 707, 0x0000 }, { 707, 0x0000 }, { 707, 0x0000 }, { 707, 0x0100 }, { 708, 0x8800 }, { 710, 0x0100 }, { 711, 0x8100 }, { 713, 0x0000 }, { 713, 0x0400 }, /* 0x4100 */ { 714, 0x4218 }, { 718, 0x0000 }, { 718, 0x0000 }, { 718, 0x0004 }, { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x5080 }, { 722, 0x8000 }, { 723, 0x0000 }, { 723, 0x0001 }, { 724, 0x0000 }, { 724, 0x0004 }, { 725, 0x8410 }, { 728, 0x0800 }, { 729, 0x8000 }, { 730, 0x0200 }, /* 0x4200 */ { 731, 0x0000 }, { 731, 0x0002 }, { 732, 0x0000 }, { 732, 0x0000 }, { 732, 0x0001 }, { 733, 0x0000 }, { 733, 0x0401 }, { 735, 0x0400 }, { 736, 0x1000 }, { 737, 0x0010 }, { 738, 0x0000 }, { 738, 0x1220 }, { 741, 0x0000 }, { 741, 0x0000 }, { 741, 0x0000 }, { 741, 0x1810 }, /* 0x4300 */ { 744, 0x0000 }, { 744, 0x0000 }, { 744, 0x0800 }, { 745, 0x0000 }, { 745, 0x0000 }, { 745, 0x0000 }, { 745, 0x4000 }, { 746, 0x0000 }, { 746, 0x0000 }, { 746, 0x0080 }, { 747, 0x0000 }, { 747, 0x0400 }, { 748, 0x0002 }, { 749, 0x8200 }, { 751, 0x2000 }, { 752, 0x0004 }, /* 0x4400 */ { 753, 0x0006 }, { 755, 0x0008 }, { 756, 0x2020 }, { 758, 0x0000 }, { 758, 0x0000 }, { 758, 0x0000 }, { 758, 0x0000 }, { 758, 0x0400 }, { 759, 0x8000 }, { 760, 0x8000 }, { 761, 0x0005 }, { 763, 0x0081 }, { 765, 0x4021 }, { 768, 0xa000 }, { 770, 0x1e10 }, { 775, 0x0010 }, /* 0x4500 */ { 776, 0x0a18 }, { 780, 0x2040 }, { 782, 0x4080 }, { 784, 0xa808 }, { 788, 0x0008 }, { 789, 0x1026 }, { 793, 0x0404 }, { 795, 0x0080 }, { 796, 0x0020 }, { 797, 0x0000 }, { 797, 0x0000 }, { 797, 0x0000 }, { 797, 0x0000 }, { 797, 0x0000 }, { 797, 0x0200 }, { 798, 0x0000 }, /* 0x4600 */ { 798, 0x8040 }, { 800, 0x00a0 }, { 802, 0x0000 }, { 802, 0x0000 }, { 802, 0x0000 }, { 802, 0x0800 }, { 803, 0x0000 }, { 803, 0x0400 }, { 804, 0x0001 }, { 805, 0x0000 }, { 805, 0x0000 }, { 805, 0x0000 }, { 805, 0x8000 }, { 806, 0x0001 }, { 807, 0x0000 }, { 807, 0x0020 }, /* 0x4700 */ { 808, 0x0000 }, { 808, 0x0108 }, { 810, 0x0000 }, { 810, 0x0000 }, { 810, 0x4000 }, { 811, 0x0000 }, { 811, 0x0000 }, { 811, 0x1000 }, { 812, 0x0000 }, { 812, 0x0100 }, { 813, 0x0040 }, { 814, 0x0040 }, { 815, 0x0000 }, { 815, 0x0020 }, { 816, 0x2000 }, { 817, 0x0010 }, /* 0x4800 */ { 818, 0x0801 }, { 820, 0x0000 }, { 820, 0x0000 }, { 820, 0x0080 }, { 821, 0x0000 }, { 821, 0x2000 }, { 822, 0x0000 }, { 822, 0x0002 }, { 823, 0x0000 }, { 823, 0x0800 }, { 824, 0x6000 }, { 826, 0x0000 }, { 826, 0x0000 }, { 826, 0x2001 }, { 828, 0x2000 }, { 829, 0x0408 }, /* 0x4900 */ { 831, 0x0040 }, { 832, 0x4002 }, { 834, 0x2420 }, { 837, 0x5020 }, { 840, 0x0020 }, { 841, 0x000a }, { 843, 0x0420 }, { 845, 0x0004 }, { 846, 0x0200 }, { 847, 0x0000 }, { 847, 0x0082 }, { 849, 0x0000 }, { 849, 0x0000 }, { 849, 0x8000 }, { 850, 0x00a0 }, { 852, 0x0000 }, /* 0x4a00 */ { 852, 0x8000 }, { 853, 0x2000 }, { 854, 0x0010 }, { 855, 0x0020 }, { 856, 0x0000 }, { 856, 0x0000 }, { 856, 0x0000 }, { 856, 0x0000 }, { 856, 0x0000 }, { 856, 0x0040 }, { 857, 0x0000 }, { 857, 0x0110 }, { 859, 0x0000 }, { 859, 0x0002 }, { 860, 0x0010 }, { 861, 0x8000 }, /* 0x4b00 */ { 862, 0x0000 }, { 862, 0x0200 }, { 863, 0x1000 }, { 864, 0x0080 }, { 865, 0x0000 }, { 865, 0x0000 }, { 865, 0x8000 }, { 866, 0x4805 }, { 870, 0x4000 }, { 871, 0x20c9 }, { 876, 0x0000 }, { 876, 0x6000 }, { 878, 0x0001 }, { 879, 0x0000 }, { 879, 0x0000 }, { 879, 0x0000 }, /* 0x4c00 */ { 879, 0x4090 }, { 882, 0x0000 }, { 882, 0x0000 }, { 882, 0x4800 }, { 884, 0x0000 }, { 884, 0x0800 }, { 885, 0x2000 }, { 886, 0x2000 }, { 887, 0x0000 }, { 887, 0x0000 }, { 887, 0x4010 }, { 889, 0x0081 }, { 891, 0x2000 }, { 892, 0x0000 }, { 892, 0x2002 }, { 894, 0x0000 }, /* 0x4d00 */ { 894, 0x0200 }, { 895, 0x0001 }, { 896, 0x0000 }, { 896, 0x0010 }, { 897, 0x0000 }, { 897, 0x0000 }, { 897, 0x0000 }, { 897, 0x0000 }, { 897, 0x0000 }, { 897, 0x1002 }, { 899, 0x0000 }, { 899, 0x0000 }, { 899, 0x0000 }, { 899, 0x0000 }, { 899, 0x0000 }, { 899, 0x0000 }, /* 0x4e00 */ { 899, 0x0010 }, { 900, 0x1400 }, { 902, 0x1512 }, { 907, 0xa0c0 }, { 911, 0x0200 }, { 912, 0x0c00 }, { 914, 0x0400 }, { 915, 0x0100 }, { 916, 0x02a3 }, { 921, 0x0500 }, { 923, 0x0001 }, { 924, 0x9880 }, { 928, 0x4000 }, { 929, 0x0000 }, { 929, 0x4c00 }, { 932, 0x0100 }, /* 0x4f00 */ { 933, 0x0008 }, { 934, 0x0400 }, { 935, 0x0300 }, { 937, 0x0284 }, { 940, 0x0824 }, { 943, 0x0000 }, { 943, 0x0000 }, { 943, 0x0004 }, { 944, 0x0400 }, { 945, 0x0000 }, { 945, 0x0904 }, { 948, 0x2001 }, { 950, 0x1100 }, { 952, 0x0000 }, { 952, 0x0030 }, { 954, 0x2204 }, /* 0x5000 */ { 957, 0x0108 }, { 959, 0x0000 }, { 959, 0x4000 }, { 960, 0x0010 }, { 961, 0x0000 }, { 961, 0x0140 }, { 963, 0x1040 }, { 965, 0x0000 }, { 965, 0x0102 }, { 967, 0x0001 }, { 968, 0x0040 }, { 969, 0x0000 }, { 969, 0x2000 }, { 970, 0x8201 }, { 973, 0x0002 }, { 974, 0x1010 }, /* 0x5100 */ { 976, 0x6002 }, { 979, 0x0000 }, { 979, 0x0800 }, { 980, 0x0000 }, { 980, 0x0000 }, { 980, 0x0040 }, { 981, 0x0401 }, { 983, 0x0210 }, { 985, 0x0144 }, { 988, 0x1440 }, { 991, 0x0980 }, { 994, 0x013c }, { 999, 0x8288 }, { 1003, 0x880e }, { 1008, 0x2014 }, { 1011, 0x5010 }, /* 0x5200 */ { 1014, 0x0824 }, { 1017, 0x8000 }, { 1018, 0x00c1 }, { 1021, 0x1010 }, { 1023, 0x0000 }, { 1023, 0x0280 }, { 1025, 0x0101 }, { 1027, 0x0208 }, { 1029, 0x8000 }, { 1030, 0x0411 }, { 1033, 0x0112 }, { 1036, 0x0220 }, { 1038, 0x1020 }, { 1040, 0x0003 }, { 1042, 0x0003 }, { 1044, 0x0200 }, /* 0x5300 */ { 1045, 0x0002 }, { 1046, 0x0000 }, { 1046, 0x1080 }, { 1048, 0x090c }, { 1052, 0x4004 }, { 1054, 0xa000 }, { 1056, 0x2290 }, { 1060, 0x6010 }, { 1063, 0x0000 }, { 1063, 0x0008 }, { 1064, 0x4f45 }, { 1072, 0x0041 }, { 1074, 0x1026 }, { 1078, 0x0707 }, { 1084, 0x0001 }, { 1085, 0x40c0 }, /* 0x5400 */ { 1088, 0x0000 }, { 1088, 0x0458 }, { 1092, 0x800a }, { 1095, 0x0004 }, { 1096, 0x2800 }, { 1098, 0x0000 }, { 1098, 0x2600 }, { 1101, 0x0000 }, { 1101, 0x8020 }, { 1103, 0x5098 }, { 1108, 0x0018 }, { 1110, 0x0214 }, { 1113, 0x3800 }, { 1116, 0x0401 }, { 1118, 0x8008 }, { 1120, 0x0000 }, /* 0x5500 */ { 1120, 0x2004 }, { 1122, 0x4108 }, { 1125, 0x0928 }, { 1129, 0x8000 }, { 1130, 0x0280 }, { 1132, 0x2008 }, { 1134, 0x0a00 }, { 1136, 0x020e }, { 1140, 0x0040 }, { 1141, 0x0001 }, { 1142, 0x0200 }, { 1143, 0x1611 }, { 1148, 0x0002 }, { 1149, 0x4180 }, { 1152, 0x1400 }, { 1154, 0x0823 }, /* 0x5600 */ { 1158, 0x0020 }, { 1159, 0x4002 }, { 1161, 0x202f }, { 1167, 0x0080 }, { 1168, 0xa008 }, { 1171, 0x2015 }, { 1175, 0x0002 }, { 1176, 0x1c00 }, { 1179, 0x0e00 }, { 1182, 0xc004 }, { 1185, 0x8012 }, { 1188, 0x8202 }, { 1191, 0x0000 }, { 1191, 0x0040 }, { 1192, 0xa004 }, { 1195, 0x2002 }, /* 0x5700 */ { 1197, 0x0001 }, { 1198, 0x2020 }, { 1200, 0x0000 }, { 1200, 0x8004 }, { 1202, 0x004c }, { 1205, 0x8890 }, { 1209, 0x0080 }, { 1210, 0xc400 }, { 1213, 0x2500 }, { 1216, 0x1001 }, { 1218, 0x0482 }, { 1221, 0x4810 }, { 1224, 0x0110 }, { 1226, 0x6080 }, { 1229, 0x8040 }, { 1231, 0x4000 }, /* 0x5800 */ { 1232, 0x0008 }, { 1233, 0x0004 }, { 1234, 0x0044 }, { 1236, 0x0400 }, { 1237, 0x0091 }, { 1240, 0x9000 }, { 1242, 0x1200 }, { 1244, 0x000c }, { 1246, 0x0000 }, { 1246, 0x0600 }, { 1248, 0x0480 }, { 1250, 0x0861 }, { 1254, 0x0800 }, { 1255, 0x1000 }, { 1256, 0x0001 }, { 1257, 0x080d }, /* 0x5900 */ { 1261, 0x04b4 }, { 1266, 0x8002 }, { 1268, 0x0000 }, { 1268, 0x0014 }, { 1270, 0x0000 }, { 1270, 0x0000 }, { 1270, 0x0020 }, { 1271, 0x0020 }, { 1272, 0x0200 }, { 1273, 0x8410 }, { 1276, 0x1000 }, { 1277, 0x0181 }, { 1280, 0x0210 }, { 1282, 0x0200 }, { 1283, 0x8800 }, { 1285, 0x0301 }, /* 0x5a00 */ { 1288, 0x2804 }, { 1291, 0x0004 }, { 1292, 0x1c92 }, { 1298, 0x2000 }, { 1299, 0x0020 }, { 1300, 0x0210 }, { 1302, 0x490a }, { 1307, 0x4202 }, { 1310, 0x0146 }, { 1314, 0x0242 }, { 1317, 0x0803 }, { 1320, 0x0000 }, { 1320, 0xc008 }, { 1323, 0x0008 }, { 1324, 0x0010 }, { 1325, 0x4405 }, /* 0x5b00 */ { 1329, 0x2000 }, { 1330, 0x8002 }, { 1332, 0x0800 }, { 1333, 0x0000 }, { 1333, 0x8452 }, { 1338, 0x0000 }, { 1338, 0x2140 }, { 1341, 0x1050 }, { 1344, 0x0005 }, { 1346, 0xe001 }, { 1350, 0x0400 }, { 1351, 0x0000 }, { 1351, 0x0008 }, { 1352, 0x00a0 }, { 1354, 0x0000 }, { 1354, 0x8008 }, /* 0x5c00 */ { 1356, 0x0020 }, { 1357, 0x5018 }, { 1361, 0x0009 }, { 1363, 0x0000 }, { 1363, 0x0600 }, { 1365, 0x4008 }, { 1367, 0x0000 }, { 1367, 0x0000 }, { 1367, 0x0020 }, { 1368, 0x5600 }, { 1372, 0x0000 }, { 1372, 0x0400 }, { 1373, 0x0006 }, { 1375, 0x0002 }, { 1376, 0x8220 }, { 1379, 0x0000 }, /* 0x5d00 */ { 1379, 0x0000 }, { 1379, 0x0121 }, { 1382, 0x9000 }, { 1384, 0x4000 }, { 1385, 0x0140 }, { 1387, 0x08c0 }, { 1390, 0x0000 }, { 1390, 0x0011 }, { 1392, 0x4820 }, { 1395, 0x0000 }, { 1395, 0x0810 }, { 1397, 0x0240 }, { 1399, 0x0002 }, { 1400, 0x0880 }, { 1402, 0x0000 }, { 1402, 0x0020 }, /* 0x5e00 */ { 1403, 0x0a00 }, { 1405, 0x0004 }, { 1406, 0x4000 }, { 1407, 0x0000 }, { 1407, 0x0104 }, { 1409, 0x4000 }, { 1410, 0x0000 }, { 1410, 0x8400 }, { 1412, 0x0048 }, { 1414, 0x0000 }, { 1414, 0x0000 }, { 1414, 0x2000 }, { 1415, 0x2000 }, { 1416, 0x0001 }, { 1417, 0x0000 }, { 1417, 0x1b10 }, /* 0x5f00 */ { 1422, 0x7000 }, { 1425, 0x0000 }, { 1425, 0x0020 }, { 1426, 0x0400 }, { 1427, 0x2000 }, { 1428, 0x1003 }, { 1431, 0x000a }, { 1433, 0x0804 }, { 1435, 0x0008 }, { 1436, 0x0000 }, { 1436, 0x0090 }, { 1438, 0x0402 }, { 1440, 0x0010 }, { 1441, 0x8800 }, { 1443, 0x0000 }, { 1443, 0x0000 }, /* 0x6000 */ { 1443, 0x0000 }, { 1443, 0x0000 }, { 1443, 0x0008 }, { 1444, 0x0802 }, { 1446, 0x0400 }, { 1447, 0x0004 }, { 1448, 0x0000 }, { 1448, 0x40a0 }, { 1451, 0x0000 }, { 1451, 0x4000 }, { 1452, 0x0090 }, { 1454, 0x0008 }, { 1455, 0x0000 }, { 1455, 0x4080 }, { 1457, 0x0388 }, { 1461, 0x2000 }, /* 0x6100 */ { 1462, 0x1080 }, { 1464, 0x0200 }, { 1465, 0x0000 }, { 1465, 0x2001 }, { 1467, 0x0004 }, { 1468, 0x1201 }, { 1471, 0x8011 }, { 1474, 0x2000 }, { 1475, 0x0082 }, { 1477, 0x1320 }, { 1481, 0x0000 }, { 1481, 0x0280 }, { 1483, 0x8001 }, { 1485, 0x0409 }, { 1488, 0x0004 }, { 1489, 0x0000 }, /* 0x6200 */ { 1489, 0x0000 }, { 1489, 0x0000 }, { 1489, 0x1000 }, { 1490, 0x0280 }, { 1492, 0x1000 }, { 1493, 0x0000 }, { 1493, 0x0100 }, { 1494, 0x0000 }, { 1494, 0x0024 }, { 1496, 0x2001 }, { 1498, 0x0050 }, { 1500, 0x0000 }, { 1500, 0x0028 }, { 1502, 0x8020 }, { 1504, 0x0020 }, { 1505, 0x0000 }, /* 0x6300 */ { 1505, 0x0000 }, { 1505, 0x0100 }, { 1506, 0x4000 }, { 1507, 0x00a2 }, { 1510, 0x0000 }, { 1510, 0x0000 }, { 1510, 0x1010 }, { 1512, 0x8200 }, { 1514, 0x0800 }, { 1515, 0x0000 }, { 1515, 0x0000 }, { 1515, 0x0200 }, { 1516, 0x0002 }, { 1517, 0x4002 }, { 1519, 0x0044 }, { 1521, 0x5900 }, /* 0x6400 */ { 1525, 0x0080 }, { 1526, 0x0000 }, { 1526, 0x0000 }, { 1526, 0x0d04 }, { 1530, 0x0000 }, { 1530, 0x0400 }, { 1531, 0x0000 }, { 1531, 0x1002 }, { 1533, 0x2000 }, { 1534, 0x0002 }, { 1535, 0x8000 }, { 1536, 0x0050 }, { 1538, 0x0001 }, { 1539, 0x2008 }, { 1541, 0x04a2 }, { 1545, 0x0000 }, /* 0x6500 */ { 1545, 0x0400 }, { 1546, 0xc002 }, { 1549, 0x0000 }, { 1549, 0x0031 }, { 1552, 0x2000 }, { 1553, 0x8000 }, { 1554, 0x2800 }, { 1556, 0x0000 }, { 1556, 0x0360 }, { 1560, 0x0000 }, { 1560, 0x0000 }, { 1560, 0x4020 }, { 1562, 0x0000 }, { 1562, 0x0012 }, { 1564, 0x0009 }, { 1566, 0x8000 }, /* 0x6600 */ { 1567, 0x0000 }, { 1567, 0x4100 }, { 1569, 0x0008 }, { 1570, 0x0001 }, { 1571, 0x0910 }, { 1574, 0x0088 }, { 1576, 0x0888 }, { 1579, 0x2008 }, { 1581, 0x4020 }, { 1583, 0x0404 }, { 1585, 0x2010 }, { 1587, 0x8048 }, { 1590, 0x6000 }, { 1592, 0x0000 }, { 1592, 0x0000 }, { 1592, 0x0002 }, /* 0x6700 */ { 1593, 0x5004 }, { 1596, 0x4040 }, { 1598, 0x0020 }, { 1599, 0x0040 }, { 1600, 0x0010 }, { 1601, 0x0000 }, { 1601, 0x0086 }, { 1604, 0x0000 }, { 1604, 0x8000 }, { 1605, 0x0000 }, { 1605, 0x1011 }, { 1608, 0x8002 }, { 1610, 0x0000 }, { 1610, 0x00c0 }, { 1612, 0x0000 }, { 1612, 0x4200 }, /* 0x6800 */ { 1614, 0x201f }, { 1620, 0x4801 }, { 1623, 0x0004 }, { 1624, 0x40c0 }, { 1627, 0x0480 }, { 1629, 0x2060 }, { 1632, 0x0020 }, { 1633, 0x0000 }, { 1633, 0x0110 }, { 1635, 0x0100 }, { 1636, 0x0040 }, { 1637, 0x2240 }, { 1640, 0x0428 }, { 1643, 0x0000 }, { 1643, 0x0000 }, { 1643, 0x0000 }, /* 0x6900 */ { 1643, 0x020f }, { 1648, 0x0d00 }, { 1651, 0x1000 }, { 1652, 0x4040 }, { 1654, 0x0048 }, { 1656, 0x0020 }, { 1657, 0x0092 }, { 1660, 0x000c }, { 1662, 0x0421 }, { 1665, 0x8100 }, { 1667, 0x0004 }, { 1668, 0x0004 }, { 1669, 0x0001 }, { 1670, 0x0062 }, { 1673, 0x0202 }, { 1675, 0x0600 }, /* 0x6a00 */ { 1677, 0x1808 }, { 1680, 0x1400 }, { 1682, 0x3800 }, { 1685, 0x0008 }, { 1686, 0x1020 }, { 1688, 0x008c }, { 1691, 0x0020 }, { 1692, 0x0412 }, { 1695, 0x8404 }, { 1698, 0x2200 }, { 1700, 0x0880 }, { 1702, 0x4026 }, { 1706, 0x0700 }, { 1709, 0x0110 }, { 1711, 0x0000 }, { 1711, 0x0040 }, /* 0x6b00 */ { 1712, 0x0020 }, { 1713, 0x2000 }, { 1714, 0x0000 }, { 1714, 0x0020 }, { 1715, 0x0000 }, { 1715, 0x0084 }, { 1717, 0x8000 }, { 1718, 0x0410 }, { 1720, 0x0002 }, { 1721, 0x0000 }, { 1721, 0x0000 }, { 1721, 0x0000 }, { 1721, 0x0002 }, { 1722, 0x1000 }, { 1723, 0x0402 }, { 1725, 0x0400 }, /* 0x6c00 */ { 1726, 0x0000 }, { 1726, 0x1000 }, { 1727, 0x0000 }, { 1727, 0x26a2 }, { 1733, 0x0200 }, { 1734, 0x0500 }, { 1736, 0x4000 }, { 1737, 0x8220 }, { 1740, 0x0000 }, { 1740, 0x8000 }, { 1741, 0x8404 }, { 1744, 0x0004 }, { 1745, 0x4800 }, { 1747, 0x8000 }, { 1748, 0x0400 }, { 1749, 0x0000 }, /* 0x6d00 */ { 1749, 0x0064 }, { 1752, 0x0000 }, { 1752, 0x0050 }, { 1754, 0x0000 }, { 1754, 0x4000 }, { 1755, 0x1880 }, { 1758, 0x0000 }, { 1758, 0x0006 }, { 1760, 0x8002 }, { 1762, 0x0040 }, { 1763, 0x0030 }, { 1765, 0x0202 }, { 1767, 0x0000 }, { 1767, 0x0000 }, { 1767, 0x0000 }, { 1767, 0x0000 }, /* 0x6e00 */ { 1767, 0x8414 }, { 1771, 0x0120 }, { 1773, 0x0600 }, { 1775, 0x0000 }, { 1775, 0x8000 }, { 1776, 0x0201 }, { 1778, 0x0000 }, { 1778, 0x1040 }, { 1780, 0x0840 }, { 1782, 0x0400 }, { 1783, 0x0000 }, { 1783, 0x0920 }, { 1786, 0x0000 }, { 1786, 0x2e00 }, { 1790, 0x0304 }, { 1793, 0x0400 }, /* 0x6f00 */ { 1794, 0x1810 }, { 1797, 0x00c0 }, { 1799, 0x0010 }, { 1800, 0x2010 }, { 1802, 0x0010 }, { 1803, 0x1040 }, { 1805, 0x0000 }, { 1805, 0x0210 }, { 1807, 0x0402 }, { 1809, 0xa000 }, { 1811, 0x0000 }, { 1811, 0x4820 }, { 1814, 0x0000 }, { 1814, 0x0608 }, { 1817, 0x0000 }, { 1817, 0x0140 }, /* 0x7000 */ { 1819, 0x0008 }, { 1820, 0x4000 }, { 1821, 0x1000 }, { 1822, 0x0000 }, { 1822, 0x0800 }, { 1823, 0x1011 }, { 1826, 0x9080 }, { 1829, 0xc220 }, { 1833, 0x8a02 }, { 1837, 0x0000 }, { 1837, 0x00e9 }, { 1842, 0x3a00 }, { 1846, 0x1011 }, { 1849, 0x8061 }, { 1853, 0x0000 }, { 1853, 0x4022 }, /* 0x7100 */ { 1856, 0x0020 }, { 1857, 0x2000 }, { 1858, 0x1a00 }, { 1861, 0x4838 }, { 1866, 0x8421 }, { 1870, 0x0002 }, { 1871, 0x0800 }, { 1872, 0x54ea }, { 1880, 0x5100 }, { 1883, 0x0140 }, { 1885, 0x200c }, { 1888, 0x0490 }, { 1891, 0x0000 }, { 1891, 0x2002 }, { 1893, 0x0800 }, { 1894, 0x0060 }, /* 0x7200 */ { 1896, 0xc200 }, { 1899, 0x00e0 }, { 1902, 0x4810 }, { 1905, 0x0000 }, { 1905, 0x0001 }, { 1906, 0x10a1 }, { 1910, 0x0040 }, { 1911, 0x0000 }, { 1911, 0x8084 }, { 1914, 0x8010 }, { 1916, 0x2000 }, { 1917, 0x0004 }, { 1918, 0x2000 }, { 1919, 0x0000 }, { 1919, 0x0004 }, { 1920, 0x0000 }, /* 0x7300 */ { 1920, 0x0014 }, { 1922, 0x0001 }, { 1923, 0x5d00 }, { 1928, 0x0300 }, { 1930, 0x8102 }, { 1933, 0x0000 }, { 1933, 0x0000 }, { 1933, 0x0012 }, { 1935, 0x8000 }, { 1936, 0x5100 }, { 1939, 0x0480 }, { 1941, 0x0000 }, { 1941, 0xc200 }, { 1944, 0x0021 }, { 1946, 0x8056 }, { 1951, 0x0a88 }, /* 0x7400 */ { 1955, 0x0000 }, { 1955, 0xd2b6 }, { 1964, 0x0000 }, { 1964, 0x1380 }, { 1968, 0x03a8 }, { 1973, 0x2048 }, { 1976, 0x1921 }, { 1981, 0x0450 }, { 1984, 0x3004 }, { 1987, 0x0a00 }, { 1989, 0x0010 }, { 1990, 0x0010 }, { 1991, 0x1100 }, { 1993, 0x0009 }, { 1995, 0x0080 }, { 1996, 0x0107 }, /* 0x7500 */ { 2000, 0x4020 }, { 2002, 0x4200 }, { 2004, 0x0000 }, { 2004, 0x0830 }, { 2007, 0x2444 }, { 2011, 0x002a }, { 2014, 0x6081 }, { 2018, 0x0404 }, { 2020, 0x6008 }, { 2023, 0x4004 }, { 2025, 0x0000 }, { 2025, 0x0012 }, { 2027, 0x0108 }, { 2029, 0x1000 }, { 2030, 0x0000 }, { 2030, 0x0000 }, /* 0x7600 */ { 2030, 0x0084 }, { 2032, 0x0000 }, { 2032, 0x1000 }, { 2033, 0x0800 }, { 2034, 0xe001 }, { 2038, 0x0012 }, { 2040, 0x80c0 }, { 2043, 0x0458 }, { 2047, 0x0000 }, { 2047, 0x0001 }, { 2048, 0x0022 }, { 2050, 0x0080 }, { 2051, 0x1000 }, { 2052, 0x0040 }, { 2053, 0x0000 }, { 2053, 0x0000 }, /* 0x7700 */ { 2053, 0xd000 }, { 2056, 0x4000 }, { 2057, 0x0850 }, { 2060, 0x0000 }, { 2060, 0x0009 }, { 2062, 0x0100 }, { 2063, 0x0000 }, { 2063, 0x0d84 }, { 2068, 0x0000 }, { 2068, 0x0108 }, { 2070, 0x8000 }, { 2071, 0x4200 }, { 2073, 0x0828 }, { 2076, 0x0000 }, { 2076, 0x0040 }, { 2077, 0x4010 }, /* 0x7800 */ { 2079, 0x0100 }, { 2080, 0x5100 }, { 2083, 0x0000 }, { 2083, 0x3200 }, { 2086, 0x0894 }, { 2090, 0x001a }, { 2093, 0x0040 }, { 2094, 0x0400 }, { 2095, 0x2102 }, { 2098, 0x0000 }, { 2098, 0x8000 }, { 2099, 0x0342 }, { 2103, 0x0080 }, { 2104, 0x018c }, { 2108, 0x4000 }, { 2109, 0x0023 }, /* 0x7900 */ { 2112, 0x0040 }, { 2113, 0x0000 }, { 2113, 0x4000 }, { 2114, 0x185c }, { 2120, 0x0000 }, { 2120, 0x0300 }, { 2122, 0x0004 }, { 2123, 0x4002 }, { 2125, 0x00c9 }, { 2129, 0xa202 }, { 2133, 0x0220 }, { 2135, 0x0000 }, { 2135, 0x1050 }, { 2138, 0x0010 }, { 2139, 0x0004 }, { 2140, 0x0012 }, /* 0x7a00 */ { 2142, 0x0040 }, { 2143, 0x0000 }, { 2143, 0x2000 }, { 2144, 0x4400 }, { 2146, 0x0228 }, { 2149, 0x0000 }, { 2149, 0x0020 }, { 2150, 0x2000 }, { 2151, 0x0008 }, { 2152, 0x0002 }, { 2153, 0x0000 }, { 2153, 0x1801 }, { 2156, 0x830c }, { 2161, 0x3c08 }, { 2166, 0x0684 }, { 2170, 0x4000 }, /* 0x7b00 */ { 2171, 0x1800 }, { 2173, 0x8010 }, { 2175, 0x0280 }, { 2177, 0x0200 }, { 2178, 0x000c }, { 2180, 0x0020 }, { 2181, 0x9004 }, { 2184, 0x0800 }, { 2185, 0x0000 }, { 2185, 0x0004 }, { 2186, 0x000c }, { 2188, 0x0004 }, { 2189, 0x8000 }, { 2190, 0x0001 }, { 2191, 0x0000 }, { 2191, 0x1400 }, /* 0x7c00 */ { 2193, 0x0000 }, { 2193, 0x0824 }, { 2196, 0x0000 }, { 2196, 0x0020 }, { 2197, 0x0014 }, { 2199, 0x2042 }, { 2202, 0x2000 }, { 2203, 0x5811 }, { 2208, 0x4048 }, { 2211, 0x1000 }, { 2212, 0x50c0 }, { 2216, 0x0100 }, { 2217, 0x2284 }, { 2221, 0x0408 }, { 2223, 0x2040 }, { 2225, 0x1228 }, /* 0x7d00 */ { 2229, 0x0000 }, { 2229, 0x0000 }, { 2229, 0x0020 }, { 2230, 0x0000 }, { 2230, 0x2000 }, { 2231, 0x2400 }, { 2233, 0x0000 }, { 2233, 0x0000 }, { 2233, 0x0200 }, { 2234, 0x0080 }, { 2235, 0x0910 }, { 2238, 0x0008 }, { 2239, 0xa000 }, { 2241, 0x1019 }, { 2245, 0x0030 }, { 2247, 0x6020 }, /* 0x7e00 */ { 2250, 0x0080 }, { 2251, 0x0000 }, { 2251, 0x0080 }, { 2252, 0x0000 }, { 2252, 0x0000 }, { 2252, 0x0000 }, { 2252, 0x40a0 }, { 2255, 0x8000 }, { 2256, 0x4000 }, { 2257, 0x8004 }, { 2259, 0x1010 }, { 2261, 0x0400 }, { 2262, 0x8080 }, { 2264, 0x8000 }, { 2265, 0x0000 }, { 2265, 0x0000 }, /* 0x7f00 */ { 2265, 0x0040 }, { 2266, 0x0000 }, { 2266, 0x0000 }, { 2266, 0x0080 }, { 2267, 0x4283 }, { 2272, 0x000c }, { 2274, 0x0000 }, { 2274, 0x0102 }, { 2276, 0x8000 }, { 2277, 0x0088 }, { 2279, 0x4008 }, { 2281, 0x0010 }, { 2282, 0x0000 }, { 2282, 0x2000 }, { 2283, 0x0080 }, { 2284, 0x0400 }, /* 0x8000 */ { 2285, 0x0104 }, { 2287, 0x2000 }, { 2288, 0xc021 }, { 2292, 0x1802 }, { 2295, 0x0000 }, { 2295, 0x0810 }, { 2297, 0x004e }, { 2301, 0x0000 }, { 2301, 0x0001 }, { 2302, 0x8000 }, { 2303, 0x0080 }, { 2304, 0x30c0 }, { 2308, 0x0040 }, { 2309, 0x0000 }, { 2309, 0x1200 }, { 2311, 0x0040 }, /* 0x8100 */ { 2312, 0x5288 }, { 2317, 0x0494 }, { 2321, 0x0400 }, { 2322, 0x0094 }, { 2325, 0x0104 }, { 2327, 0x0640 }, { 2330, 0x2000 }, { 2331, 0x1000 }, { 2332, 0x0010 }, { 2333, 0x0008 }, { 2334, 0x0420 }, { 2336, 0x0040 }, { 2337, 0x0102 }, { 2339, 0x0000 }, { 2339, 0x8010 }, { 2341, 0x0040 }, /* 0x8200 */ { 2342, 0x0000 }, { 2342, 0x0500 }, { 2344, 0x2240 }, { 2347, 0x4000 }, { 2348, 0x0000 }, { 2348, 0x0010 }, { 2349, 0x0024 }, { 2351, 0x0e40 }, { 2355, 0x0080 }, { 2356, 0x0000 }, { 2356, 0x0440 }, { 2358, 0x0000 }, { 2358, 0x8410 }, { 2361, 0x0101 }, { 2363, 0x4004 }, { 2365, 0xb080 }, /* 0x8300 */ { 2369, 0x0800 }, { 2370, 0x2500 }, { 2373, 0x0000 }, { 2373, 0x2000 }, { 2374, 0x0000 }, { 2374, 0x0080 }, { 2375, 0x804c }, { 2379, 0x0000 }, { 2379, 0x0020 }, { 2380, 0x1002 }, { 2382, 0x1000 }, { 2383, 0x4200 }, { 2385, 0x2000 }, { 2386, 0x0008 }, { 2387, 0x2000 }, { 2388, 0x0000 }, /* 0x8400 */ { 2388, 0x0020 }, { 2389, 0x1150 }, { 2393, 0x4053 }, { 2398, 0x4000 }, { 2399, 0x0500 }, { 2401, 0x1128 }, { 2405, 0x0014 }, { 2407, 0x8006 }, { 2410, 0x0101 }, { 2412, 0x004c }, { 2415, 0x2008 }, { 2417, 0x6000 }, { 2419, 0x0000 }, { 2419, 0x4400 }, { 2421, 0x0036 }, { 2425, 0x0100 }, /* 0x8500 */ { 2426, 0x0028 }, { 2428, 0x0001 }, { 2429, 0x0000 }, { 2429, 0x0118 }, { 2432, 0x1804 }, { 2435, 0x0404 }, { 2437, 0x8000 }, { 2438, 0x0009 }, { 2440, 0x0000 }, { 2440, 0x0000 }, { 2440, 0x0000 }, { 2440, 0x0000 }, { 2440, 0x0002 }, { 2441, 0x0000 }, { 2441, 0x4001 }, { 2443, 0x1000 }, /* 0x8600 */ { 2444, 0x2004 }, { 2446, 0x0051 }, { 2449, 0x8100 }, { 2451, 0x0000 }, { 2451, 0x0024 }, { 2453, 0x0000 }, { 2453, 0x1000 }, { 2454, 0x4004 }, { 2456, 0x0000 }, { 2456, 0x0004 }, { 2457, 0x2001 }, { 2459, 0x0004 }, { 2460, 0x0000 }, { 2460, 0x0000 }, { 2460, 0x8000 }, { 2461, 0x0000 }, /* 0x8700 */ { 2461, 0x0000 }, { 2461, 0x0000 }, { 2461, 0x0000 }, { 2461, 0x0000 }, { 2461, 0x0000 }, { 2461, 0x0000 }, { 2461, 0x0000 }, { 2461, 0x2003 }, { 2464, 0x1840 }, { 2467, 0x0000 }, { 2467, 0x0220 }, { 2469, 0x0002 }, { 2470, 0x4002 }, { 2472, 0x0440 }, { 2474, 0x4000 }, { 2475, 0x0020 }, /* 0x8800 */ { 2476, 0x8010 }, { 2478, 0x0100 }, { 2479, 0x2080 }, { 2481, 0x0000 }, { 2481, 0x8064 }, { 2485, 0x4000 }, { 2486, 0x4031 }, { 2490, 0x0000 }, { 2490, 0x0090 }, { 2492, 0x1000 }, { 2493, 0x4001 }, { 2495, 0x8030 }, { 2498, 0x80a0 }, { 2501, 0x0000 }, { 2501, 0x0040 }, { 2502, 0x8020 }, /* 0x8900 */ { 2504, 0x0001 }, { 2505, 0x0000 }, { 2505, 0x0010 }, { 2506, 0x0000 }, { 2506, 0x2088 }, { 2509, 0x0010 }, { 2510, 0x0020 }, { 2511, 0x0080 }, { 2512, 0x0681 }, { 2516, 0x0012 }, { 2518, 0x02a0 }, { 2521, 0x1000 }, { 2522, 0x0042 }, { 2524, 0x0000 }, { 2524, 0x0080 }, { 2525, 0x0000 }, /* 0x8a00 */ { 2525, 0x0000 }, { 2525, 0x1000 }, { 2526, 0x0a00 }, { 2528, 0x2100 }, { 2530, 0x0200 }, { 2531, 0x0000 }, { 2531, 0x0080 }, { 2532, 0x4000 }, { 2533, 0x0000 }, { 2533, 0x1011 }, { 2536, 0x8200 }, { 2538, 0x0010 }, { 2539, 0x0000 }, { 2539, 0x0400 }, { 2540, 0x0400 }, { 2541, 0x0000 }, /* 0x8b00 */ { 2541, 0x1000 }, { 2542, 0x8000 }, { 2543, 0x2000 }, { 2544, 0x8000 }, { 2545, 0x3008 }, { 2548, 0x4000 }, { 2549, 0x0204 }, { 2551, 0x0000 }, { 2551, 0x0002 }, { 2552, 0x0801 }, { 2554, 0x0001 }, { 2555, 0x4000 }, { 2556, 0x0000 }, { 2556, 0x0000 }, { 2556, 0x0004 }, { 2557, 0x0000 }, /* 0x8c00 */ { 2557, 0x0000 }, { 2557, 0x0000 }, { 2557, 0x0000 }, { 2557, 0x0000 }, { 2557, 0x0000 }, { 2557, 0x0002 }, { 2558, 0x0000 }, { 2558, 0x0000 }, { 2558, 0x0000 }, { 2558, 0x8800 }, { 2560, 0x2000 }, { 2561, 0x0000 }, { 2561, 0x2000 }, { 2562, 0x0850 }, { 2565, 0x0a00 }, { 2567, 0x0084 }, /* 0x8d00 */ { 2569, 0x1808 }, { 2572, 0x3106 }, { 2577, 0x0000 }, { 2577, 0x0000 }, { 2577, 0x0000 }, { 2577, 0x0000 }, { 2577, 0x0000 }, { 2577, 0x0400 }, { 2578, 0x0004 }, { 2579, 0x0000 }, { 2579, 0x0240 }, { 2581, 0x0000 }, { 2581, 0x0009 }, { 2583, 0x0010 }, { 2584, 0x0000 }, { 2584, 0x0000 }, /* 0x8e00 */ { 2584, 0x4002 }, { 2586, 0x0000 }, { 2586, 0x2500 }, { 2589, 0x0400 }, { 2590, 0x8040 }, { 2592, 0x0000 }, { 2592, 0x0100 }, { 2593, 0x40a2 }, { 2597, 0x0001 }, { 2598, 0x0000 }, { 2598, 0x2080 }, { 2600, 0x1041 }, { 2603, 0x4008 }, { 2605, 0x0400 }, { 2606, 0x2014 }, { 2609, 0x0004 }, /* 0x8f00 */ { 2610, 0x0000 }, { 2610, 0x0200 }, { 2611, 0x2000 }, { 2612, 0x0001 }, { 2613, 0x0402 }, { 2615, 0x1000 }, { 2616, 0x40c0 }, { 2619, 0x0000 }, { 2619, 0x0000 }, { 2619, 0x0008 }, { 2620, 0x0021 }, { 2622, 0x5fe8 }, { 2632, 0x1402 }, { 2635, 0x0401 }, { 2637, 0x0000 }, { 2637, 0x0200 }, /* 0x9000 */ { 2638, 0x0100 }, { 2639, 0x0004 }, { 2640, 0x0000 }, { 2640, 0x0088 }, { 2642, 0x1000 }, { 2643, 0x0040 }, { 2644, 0x1012 }, { 2647, 0x0000 }, { 2647, 0x0000 }, { 2647, 0x0000 }, { 2647, 0x4100 }, { 2649, 0x0800 }, { 2650, 0x0010 }, { 2651, 0x0000 }, { 2651, 0x0000 }, { 2651, 0x0000 }, /* 0x9100 */ { 2651, 0x0000 }, { 2651, 0x0000 }, { 2651, 0x0000 }, { 2651, 0x0000 }, { 2651, 0x0000 }, { 2651, 0x5202 }, { 2655, 0x0080 }, { 2656, 0x1041 }, { 2659, 0x5000 }, { 2661, 0x0000 }, { 2661, 0x0200 }, { 2662, 0x0840 }, { 2664, 0x0010 }, { 2665, 0x8040 }, { 2667, 0x0020 }, { 2668, 0x4400 }, /* 0x9200 */ { 2670, 0x4100 }, { 2672, 0x0008 }, { 2673, 0x0d00 }, { 2676, 0x1020 }, { 2678, 0x0012 }, { 2680, 0xa120 }, { 2684, 0x4804 }, { 2687, 0x0080 }, { 2688, 0x8212 }, { 2692, 0x0000 }, { 2692, 0x4000 }, { 2693, 0xc602 }, { 2698, 0x0000 }, { 2698, 0x0810 }, { 2700, 0x1828 }, { 2704, 0x205c }, /* 0x9300 */ { 2709, 0x0088 }, { 2711, 0x0000 }, { 2711, 0x1000 }, { 2712, 0x0003 }, { 2714, 0x013f }, { 2721, 0x8000 }, { 2722, 0x4b44 }, { 2728, 0x2118 }, { 2732, 0x00f2 }, { 2737, 0x1001 }, { 2739, 0x2001 }, { 2741, 0xa900 }, { 2745, 0x0840 }, { 2747, 0x0808 }, { 2749, 0x0001 }, { 2750, 0x000b }, /* 0x9400 */ { 2753, 0x0112 }, { 2756, 0x2880 }, { 2759, 0x20f0 }, { 2764, 0x4000 }, { 2765, 0x200c }, { 2768, 0x0910 }, { 2771, 0x10a0 }, { 2774, 0x0a00 }, { 2776, 0x0020 }, { 2777, 0x8000 }, { 2778, 0x0004 }, { 2779, 0x0000 }, { 2779, 0x000a }, { 2781, 0x1000 }, { 2782, 0x0000 }, { 2782, 0x0040 }, /* 0x9500 */ { 2783, 0x0000 }, { 2783, 0x0000 }, { 2783, 0x2000 }, { 2784, 0x0000 }, { 2784, 0x0080 }, { 2785, 0x0000 }, { 2785, 0x0000 }, { 2785, 0x8100 }, { 2787, 0x0020 }, { 2788, 0x02c0 }, { 2791, 0x04c5 }, { 2796, 0x0000 }, { 2796, 0x0000 }, { 2796, 0x0000 }, { 2796, 0x0100 }, { 2797, 0x0010 }, /* 0x9600 */ { 2798, 0x0000 }, { 2798, 0x2000 }, { 2799, 0x0000 }, { 2799, 0x0108 }, { 2801, 0x0022 }, { 2803, 0x0040 }, { 2804, 0x0200 }, { 2805, 0x0800 }, { 2806, 0x8002 }, { 2808, 0x0040 }, { 2809, 0x0028 }, { 2811, 0x2040 }, { 2813, 0x0000 }, { 2813, 0x0000 }, { 2813, 0x0000 }, { 2813, 0x0010 }, /* 0x9700 */ { 2814, 0x0008 }, { 2815, 0x0800 }, { 2816, 0x0002 }, { 2817, 0x0042 }, { 2819, 0x0003 }, { 2821, 0xa082 }, { 2825, 0x2000 }, { 2826, 0x0002 }, { 2827, 0x0280 }, { 2829, 0x8800 }, { 2831, 0x0000 }, { 2831, 0x6516 }, { 2838, 0x0105 }, { 2841, 0x0004 }, { 2842, 0x4041 }, { 2845, 0x0024 }, /* 0x9800 */ { 2847, 0x0000 }, { 2847, 0x8030 }, { 2850, 0x4008 }, { 2852, 0x0018 }, { 2854, 0x0880 }, { 2856, 0x0000 }, { 2856, 0x1040 }, { 2858, 0x0020 }, { 2859, 0x0000 }, { 2859, 0x0000 }, { 2859, 0x0000 }, { 2859, 0x0290 }, { 2862, 0x4588 }, { 2867, 0x5000 }, { 2869, 0x1043 }, { 2873, 0x0022 }, /* 0x9900 */ { 2875, 0x4000 }, { 2876, 0x1200 }, { 2878, 0x0000 }, { 2878, 0x0b80 }, { 2882, 0x2405 }, { 2886, 0x2000 }, { 2887, 0x000c }, { 2889, 0x0000 }, { 2889, 0x0000 }, { 2889, 0x0800 }, { 2890, 0x0410 }, { 2892, 0x1100 }, { 2894, 0x0030 }, { 2896, 0x0400 }, { 2897, 0x0042 }, { 2899, 0x0020 }, /* 0x9a00 */ { 2900, 0x1000 }, { 2901, 0x8001 }, { 2903, 0x8042 }, { 2906, 0x1800 }, { 2908, 0x0000 }, { 2908, 0x1100 }, { 2910, 0x1008 }, { 2912, 0x0000 }, { 2912, 0x8000 }, { 2913, 0x0000 }, { 2913, 0x0000 }, { 2913, 0x2444 }, { 2917, 0x0000 }, { 2917, 0x0080 }, { 2918, 0x0005 }, { 2920, 0x8010 }, /* 0x9b00 */ { 2922, 0x8204 }, { 2925, 0x0010 }, { 2926, 0x2400 }, { 2928, 0x0210 }, { 2930, 0x0001 }, { 2931, 0x0001 }, { 2932, 0x0200 }, { 2933, 0x8000 }, { 2934, 0xe80a }, { 2940, 0xa080 }, { 2943, 0x0000 }, { 2943, 0x0001 }, { 2944, 0x8000 }, { 2945, 0x2000 }, { 2946, 0x2200 }, { 2948, 0x8012 }, /* 0x9c00 */ { 2951, 0x1404 }, { 2954, 0x8821 }, { 2958, 0x8041 }, { 2961, 0x0420 }, { 2963, 0x8020 }, { 2965, 0x2008 }, { 2967, 0x0000 }, { 2967, 0x1804 }, { 2970, 0x0000 }, { 2970, 0x0000 }, { 2970, 0x0000 }, { 2970, 0x0000 }, { 2970, 0x0000 }, { 2970, 0x0000 }, { 2970, 0x0000 }, { 2970, 0x0000 }, /* 0x9d00 */ { 2970, 0x1004 }, { 2972, 0x0040 }, { 2973, 0x0002 }, { 2974, 0x0210 }, { 2976, 0x4210 }, { 2979, 0x4001 }, { 2981, 0x6000 }, { 2983, 0x5000 }, { 2985, 0x0008 }, { 2986, 0x0008 }, { 2987, 0x0820 }, { 2989, 0x2000 }, { 2990, 0x0211 }, { 2993, 0x0010 }, { 2994, 0x0000 }, { 2994, 0x1000 }, /* 0x9e00 */ { 2995, 0x5400 }, { 2998, 0x9100 }, { 3001, 0x0000 }, { 3001, 0x0000 }, { 3001, 0x0000 }, { 3001, 0x0000 }, { 3001, 0x0000 }, { 3001, 0x0800 }, { 3002, 0x0032 }, { 3005, 0x4161 }, { 3010, 0x9d44 }, { 3017, 0xa002 }, { 3020, 0x00d2 }, { 3024, 0x0000 }, { 3024, 0x0004 }, { 3025, 0x4102 }, /* 0x9f00 */ { 3028, 0x0104 }, { 3030, 0x0080 }, { 3031, 0x00c0 }, { 3033, 0x0200 }, { 3034, 0x0030 }, { 3036, 0x0409 }, { 3039, 0x0204 }, { 3041, 0x8000 }, { 3042, 0x4000 }, { 3043, 0x9200 }, { 3046, 0x0020 }, }; static const Summary16 hkscs_uni2indx_pagee0[236] = { /* 0xe000 */ { 3047, 0x560d }, { 3054, 0x7d7c }, { 3065, 0x602d }, { 3071, 0x19fd }, { 3081, 0x1020 }, { 3083, 0x9400 }, { 3086, 0x1053 }, { 3091, 0x2132 }, { 3096, 0x1680 }, { 3100, 0x7618 }, { 3107, 0x4ac0 }, { 3112, 0x5400 }, { 3115, 0x05a8 }, { 3120, 0x9031 }, { 3125, 0x5bbc }, { 3135, 0x2b04 }, /* 0xe100 */ { 3140, 0x0e48 }, { 3145, 0x3031 }, { 3150, 0x01c2 }, { 3154, 0x0243 }, { 3158, 0x25a6 }, { 3165, 0x26f1 }, { 3173, 0x0704 }, { 3177, 0x9b26 }, { 3185, 0x8aa1 }, { 3191, 0x8069 }, { 3196, 0x4451 }, { 3201, 0xf95b }, { 3212, 0x3132 }, { 3218, 0x24b0 }, { 3223, 0x8844 }, { 3227, 0x4485 }, /* 0xe200 */ { 3232, 0x1ca7 }, { 3240, 0x9a7d }, { 3250, 0x85c3 }, { 3257, 0x688a }, { 3263, 0xfd20 }, { 3271, 0x001e }, { 3275, 0xe902 }, { 3281, 0x2402 }, { 3284, 0x0b04 }, { 3288, 0x8e73 }, { 3297, 0x0052 }, { 3300, 0xc5bc }, { 3309, 0x0282 }, { 3312, 0x4310 }, { 3316, 0x3a87 }, { 3324, 0x9103 }, /* 0xe300 */ { 3329, 0x9143 }, { 3335, 0x992a }, { 3342, 0x1020 }, { 3344, 0x2863 }, { 3350, 0x0124 }, { 3353, 0x1814 }, { 3357, 0x8035 }, { 3362, 0x0ab4 }, { 3368, 0x2746 }, { 3375, 0xcd5a }, { 3384, 0x13e5 }, { 3392, 0x3e36 }, { 3401, 0xb108 }, { 3406, 0x0720 }, { 3410, 0x608a }, { 3415, 0xa51d }, /* 0xe400 */ { 3423, 0x0e00 }, { 3426, 0x6810 }, { 3430, 0x3168 }, { 3436, 0x5c44 }, { 3442, 0x7113 }, { 3449, 0x6603 }, { 3455, 0xd7ae }, { 3466, 0xc056 }, { 3472, 0x67d0 }, { 3480, 0x00e6 }, { 3485, 0x881e }, { 3491, 0x07f8 }, { 3499, 0x6242 }, { 3504, 0x3240 }, { 3508, 0xc1d0 }, { 3514, 0x8340 }, /* 0xe500 */ { 3518, 0xa426 }, { 3524, 0xf454 }, { 3532, 0xdf13 }, { 3542, 0x4080 }, { 3544, 0x0808 }, { 3546, 0xdbb0 }, { 3555, 0x60c4 }, { 3560, 0x76ed }, { 3571, 0xf97d }, { 3583, 0xe41d }, { 3591, 0x85d3 }, { 3599, 0xcda6 }, { 3608, 0x0305 }, { 3612, 0x9b80 }, { 3618, 0xc26e }, { 3626, 0x180b }, /* 0xe600 */ { 3631, 0x8015 }, { 3635, 0x1e07 }, { 3642, 0x089a }, { 3647, 0x959c }, { 3655, 0xc967 }, { 3664, 0xe3bc }, { 3674, 0xc5ed }, { 3684, 0xbbc2 }, { 3693, 0xddf9 }, { 3705, 0xd6c5 }, { 3714, 0x3046 }, { 3719, 0x6604 }, { 3724, 0x04a3 }, { 3729, 0xed86 }, { 3738, 0x4073 }, { 3744, 0x9c8c }, /* 0xe700 */ { 3751, 0x16c6 }, { 3758, 0x2d8b }, { 3766, 0x8830 }, { 3770, 0x30f8 }, { 3777, 0xe097 }, { 3785, 0xb806 }, { 3791, 0x73b6 }, { 3801, 0x35a1 }, { 3808, 0x2a50 }, { 3813, 0x02d5 }, { 3819, 0x03f4 }, { 3826, 0x1112 }, { 3830, 0x4410 }, { 3833, 0x3502 }, { 3838, 0xeb90 }, { 3846, 0x990e }, /* 0xe800 */ { 3853, 0xd107 }, { 3860, 0x05ca }, { 3866, 0xa182 }, { 3871, 0x0da0 }, { 3876, 0x6806 }, { 3881, 0x39e2 }, { 3889, 0x16e7 }, { 3898, 0xe102 }, { 3903, 0x8080 }, { 3905, 0x2436 }, { 3911, 0xf6fb }, { 3924, 0xe161 }, { 3931, 0x68af }, { 3940, 0xa76b }, { 3950, 0x2763 }, { 3958, 0x4826 }, /* 0xe900 */ { 3963, 0x1189 }, { 3968, 0xd180 }, { 3973, 0xdfe7 }, { 3986, 0x7578 }, { 3995, 0x2132 }, { 4000, 0x75bd }, { 4011, 0xc193 }, { 4018, 0x2db8 }, { 4026, 0x4486 }, { 4031, 0x0002 }, { 4032, 0x0000 }, { 4032, 0x0001 }, { 4033, 0x0800 }, { 4034, 0x0000 }, { 4034, 0x8000 }, { 4035, 0x0000 }, /* 0xea00 */ { 4035, 0x0000 }, { 4035, 0x0000 }, { 4035, 0x0000 }, { 4035, 0x0000 }, { 4035, 0x0008 }, { 4036, 0x0000 }, { 4036, 0x0000 }, { 4036, 0x0000 }, { 4036, 0x0000 }, { 4036, 0x0000 }, { 4036, 0x0200 }, { 4037, 0x8000 }, { 4038, 0x9e23 }, { 4046, 0xd7db }, { 4058, 0x5f8f }, { 4069, 0xcf77 }, /* 0xeb00 */ { 4081, 0xff3d }, { 4094, 0xbf26 }, { 4104, 0xf4ab }, { 4114, 0xe3ff }, { 4127, 0xfc5a }, { 4137, 0xaff9 }, { 4149, 0xabae }, { 4159, 0xc5db }, { 4169, 0xf73b }, { 4181, 0x8fa9 }, { 4190, 0xed6d }, { 4201, 0xb25d }, { 4210, 0x75e4 }, { 4219, 0xada9 }, { 4228, 0xdb92 }, { 4237, 0x6e66 }, /* 0xec00 */ { 4246, 0xd360 }, { 4253, 0x3f99 }, { 4263, 0xfc55 }, { 4273, 0x98a6 }, { 4280, 0x9bff }, { 4293, 0xb5d4 }, { 4302, 0xff8d }, { 4314, 0x4a6f }, { 4323, 0x6051 }, { 4328, 0x6f7e }, { 4340, 0xa999 }, { 4348, 0x0e50 }, { 4353, 0x8000 }, { 4354, 0xd810 }, { 4359, 0x0023 }, { 4362, 0x1025 }, /* 0xed00 */ { 4366, 0xf490 }, { 4373, 0x75eb }, { 4384, 0x36f4 }, { 4393, 0x2800 }, { 4395, 0xeca6 }, { 4404, 0x819e }, { 4411, 0x0804 }, { 4413, 0x05a6 }, { 4419, 0x4f72 }, { 4428, 0x0002 }, { 4429, 0x0040 }, { 4430, 0x0000 }, { 4430, 0x8040 }, { 4432, 0x2c82 }, { 4437, 0x2002 }, { 4439, 0x0000 }, /* 0xee00 */ { 4439, 0x0100 }, { 4440, 0x0822 }, { 4443, 0x0405 }, { 4446, 0x0013 }, { 4449, 0x0100 }, { 4450, 0x2840 }, { 4453, 0x0411 }, { 4456, 0x5040 }, { 4459, 0x0000 }, { 4459, 0x1002 }, { 4461, 0xf7fe }, { 4475, 0x0093 }, }; static const Summary16 hkscs_uni2indx_pagef3[79] = { /* 0xf300 */ { 4479, 0xfff8 }, { 4492, 0x01ff }, { 4501, 0x00a0 }, { 4503, 0x0000 }, { 4503, 0x0c50 }, { 4507, 0x0000 }, { 4507, 0x0000 }, { 4507, 0x0000 }, { 4507, 0x0000 }, { 4507, 0x0000 }, { 4507, 0x1003 }, { 4510, 0x0000 }, { 4510, 0x0000 }, { 4510, 0x0000 }, { 4510, 0x0000 }, { 4510, 0x1601 }, /* 0xf400 */ { 4514, 0x0f00 }, { 4518, 0x0000 }, { 4518, 0x0000 }, { 4518, 0x2000 }, { 4519, 0x2b57 }, { 4528, 0xfcf7 }, { 4541, 0xf26e }, { 4551, 0x7b90 }, { 4559, 0xe93b }, { 4569, 0x4983 }, { 4575, 0xa6f0 }, { 4583, 0xfc9d }, { 4594, 0xf7bb }, { 4607, 0xfebe }, { 4620, 0x83fd }, { 4630, 0xd10c }, /* 0xf500 */ { 4636, 0xffab }, { 4649, 0xbf7b }, { 4662, 0x047f }, { 4670, 0x2c18 }, { 4675, 0x4000 }, { 4676, 0x4648 }, { 4681, 0x0820 }, { 4683, 0x0004 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, /* 0xf600 */ { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x0000 }, { 4684, 0x4010 }, { 4686, 0x2000 }, { 4687, 0x0001 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, /* 0xf700 */ { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x0000 }, { 4688, 0x6d60 }, }; static const Summary16 hkscs_uni2indx_pageff[15] = { /* 0xff00 */ { 4695, 0x0084 }, { 4697, 0x0000 }, { 4697, 0x0000 }, { 4697, 0x2800 }, { 4699, 0x0000 }, { 4699, 0x0000 }, { 4699, 0x0000 }, { 4699, 0x0000 }, { 4699, 0x0000 }, { 4699, 0x0000 }, { 4699, 0x0000 }, { 4699, 0x0000 }, { 4699, 0x0000 }, { 4699, 0x0000 }, { 4699, 0x2014 }, }; static int hkscs_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x02d0) summary = &hkscs_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0400 && wc < 0x0460) summary = &hkscs_uni2indx_page04[(wc>>4)-0x040]; else if (wc >= 0x1e00 && wc < 0x1ed0) summary = &hkscs_uni2indx_page1e[(wc>>4)-0x1e0]; else if (wc >= 0x2100 && wc < 0x21f0) summary = &hkscs_uni2indx_page21[(wc>>4)-0x210]; else if (wc >= 0x2400 && wc < 0x2580) summary = &hkscs_uni2indx_page24[(wc>>4)-0x240]; else if (wc >= 0x2700 && wc < 0x2740) summary = &hkscs_uni2indx_page27[(wc>>4)-0x270]; else if (wc >= 0x2e00 && wc < 0x3100) summary = &hkscs_uni2indx_page2e[(wc>>4)-0x2e0]; else if (wc >= 0x3200 && wc < 0x3240) summary = &hkscs_uni2indx_page32[(wc>>4)-0x320]; else if (wc >= 0x3400 && wc < 0x9fb0) summary = &hkscs_uni2indx_page34[(wc>>4)-0x340]; else if (wc >= 0xe000 && wc < 0xeec0) summary = &hkscs_uni2indx_pagee0[(wc>>4)-0xe00]; else if (wc >= 0xf300 && wc < 0xf7f0) summary = &hkscs_uni2indx_pagef3[(wc>>4)-0xf30]; else if (wc >= 0xff00 && wc < 0xfff0) summary = &hkscs_uni2indx_pageff[(wc>>4)-0xff0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = hkscs_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/hp_roman8.h0100644000000000000000000000671107206266437015214 0ustar rootroot /* * HP-ROMAN8 */ static const unsigned short hp_roman8_2uni[96] = { /* 0xa0 */ 0x00a0, 0x00c0, 0x00c2, 0x00c8, 0x00ca, 0x00cb, 0x00ce, 0x00cf, 0x00b4, 0x02cb, 0x02c6, 0x00a8, 0x02dc, 0x00d9, 0x00db, 0x20a4, /* 0xb0 */ 0x00af, 0x00dd, 0x00fd, 0x00b0, 0x00c7, 0x00e7, 0x00d1, 0x00f1, 0x00a1, 0x00bf, 0x00a4, 0x00a3, 0x00a5, 0x00a7, 0x0192, 0x00a2, /* 0xc0 */ 0x00e2, 0x00ea, 0x00f4, 0x00fb, 0x00e1, 0x00e9, 0x00f3, 0x00fa, 0x00e0, 0x00e8, 0x00f2, 0x00f9, 0x00e4, 0x00eb, 0x00f6, 0x00fc, /* 0xd0 */ 0x00c5, 0x00ee, 0x00d8, 0x00c6, 0x00e5, 0x00ed, 0x00f8, 0x00e6, 0x00c4, 0x00ec, 0x00d6, 0x00dc, 0x00c9, 0x00ef, 0x00df, 0x00d4, /* 0xe0 */ 0x00c1, 0x00c3, 0x00e3, 0x00d0, 0x00f0, 0x00cd, 0x00cc, 0x00d3, 0x00d2, 0x00d5, 0x00f5, 0x0160, 0x0161, 0x00da, 0x0178, 0x00ff, /* 0xf0 */ 0x00de, 0x00fe, 0x00b7, 0x00b5, 0x00b6, 0x00be, 0x2014, 0x00bc, 0x00bd, 0x00aa, 0x00ba, 0x00ab, 0x25a0, 0x00bb, 0x00b1, 0xfffd, }; static int hp_roman8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = hp_roman8_2uni[c-0xa0]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char hp_roman8_page00[96] = { 0xa0, 0xb8, 0xbf, 0xbb, 0xba, 0xbc, 0x00, 0xbd, /* 0xa0-0xa7 */ 0xab, 0x00, 0xf9, 0xfb, 0x00, 0x00, 0x00, 0xb0, /* 0xa8-0xaf */ 0xb3, 0xfe, 0x00, 0x00, 0xa8, 0xf3, 0xf4, 0xf2, /* 0xb0-0xb7 */ 0x00, 0x00, 0xfa, 0xfd, 0xf7, 0xf8, 0xf5, 0xb9, /* 0xb8-0xbf */ 0xa1, 0xe0, 0xa2, 0xe1, 0xd8, 0xd0, 0xd3, 0xb4, /* 0xc0-0xc7 */ 0xa3, 0xdc, 0xa4, 0xa5, 0xe6, 0xe5, 0xa6, 0xa7, /* 0xc8-0xcf */ 0xe3, 0xb6, 0xe8, 0xe7, 0xdf, 0xe9, 0xda, 0x00, /* 0xd0-0xd7 */ 0xd2, 0xad, 0xed, 0xae, 0xdb, 0xb1, 0xf0, 0xde, /* 0xd8-0xdf */ 0xc8, 0xc4, 0xc0, 0xe2, 0xcc, 0xd4, 0xd7, 0xb5, /* 0xe0-0xe7 */ 0xc9, 0xc5, 0xc1, 0xcd, 0xd9, 0xd5, 0xd1, 0xdd, /* 0xe8-0xef */ 0xe4, 0xb7, 0xca, 0xc6, 0xc2, 0xea, 0xce, 0x00, /* 0xf0-0xf7 */ 0xd6, 0xcb, 0xc7, 0xc3, 0xcf, 0xb2, 0xf1, 0xef, /* 0xf8-0xff */ }; static const unsigned char hp_roman8_page01[56] = { 0xeb, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char hp_roman8_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static int hp_roman8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = hp_roman8_page00[wc-0x00a0]; else if (wc >= 0x0160 && wc < 0x0198) c = hp_roman8_page01[wc-0x0160]; else if (wc >= 0x02c0 && wc < 0x02e0) c = hp_roman8_page02[wc-0x02c0]; else if (wc == 0x2014) c = 0xf6; else if (wc == 0x20a4) c = 0xaf; else if (wc == 0x25a0) c = 0xfc; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/hz.h0100644000000000000000000000525207206266437013741 0ustar rootroot /* * HZ */ /* Specification: RFC 1842, RFC 1843 */ /* * The state is 1 in GB mode, 0 in ASCII mode. */ static int hz_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; unsigned int count = 0; unsigned char c; for (;;) { c = *s; if (c == '~') { if (n < count+2) goto none; c = s[1]; if (state == 0) { if (c == '~') { *pwc = (ucs4_t) '~'; conv->istate = state; return count+2; } if (c == '{') { state = 1; s += 2; count += 2; if (n < count+1) goto none; continue; } if (c == '\n') { s += 2; count += 2; if (n < count+1) goto none; continue; } } else { if (c == '}') { state = 0; s += 2; count += 2; if (n < count+1) goto none; continue; } } return RET_ILSEQ; } break; } if (state == 0) { *pwc = (ucs4_t) c; conv->istate = state; return count+1; } else { int ret; if (n < count+2) goto none; ret = gb2312_mbtowc(conv,pwc,s,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); conv->istate = state; return count+2; } none: conv->istate = state; return RET_TOOFEW(count); } static int hz_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { state_t state = conv->ostate; unsigned char buf[2]; int ret; /* Code set 0 (ASCII or GB 1988-89) */ ret = ascii_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state ? 3 : 1); if (n < count) return RET_TOOSMALL; if (state) { r[0] = '~'; r[1] = '}'; r += 2; state = 0; } r[0] = buf[0]; conv->ostate = state; return count; } } /* Code set 1 (GB 2312-1980) */ ret = gb2312_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state ? 2 : 4); if (n < count) return RET_TOOSMALL; if (!state) { r[0] = '~'; r[1] = '{'; r += 2; state = 1; } r[0] = buf[0]; r[1] = buf[1]; conv->ostate = state; return count; } } return RET_ILSEQ; } static int hz_reset (conv_t conv, unsigned char *r, int n) { state_t state = conv->ostate; if (state) { if (n < 2) return RET_TOOSMALL; r[0] = '~'; r[1] = '}'; /* conv->ostate = 0; will be done by the caller */ return 2; } else return 0; } recode-3.6/libiconv/iso2022_cn.h0100644000000000000000000001607107206266437015101 0ustar rootroot /* * ISO-2022-CN */ /* Specification: RFC 1922 */ #define ESC 0x1b #define SO 0x0e #define SI 0x0f /* * The state is composed of one of the following values */ #define STATE_ASCII 0 #define STATE_TWOBYTE 1 /* * and one of the following values, << 8 */ #define STATE2_NONE 0 #define STATE2_DESIGNATED_GB2312 1 #define STATE2_DESIGNATED_CNS11643_1 2 /* * and one of the following values, << 16 */ #define STATE3_NONE 0 #define STATE3_DESIGNATED_CNS11643_2 1 #define SPLIT_STATE \ unsigned int state1 = state & 0xff, state2 = (state >> 8) & 0xff, state3 = state >> 16 #define COMBINE_STATE \ state = (state3 << 16) | (state2 << 8) | state1 static int iso2022_cn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; SPLIT_STATE; int count = 0; unsigned char c; for (;;) { c = *s; if (c == ESC) { if (n < count+4) goto none; if (s[1] == '$') { if (s[2] == ')') { if (s[3] == 'A') { state2 = STATE2_DESIGNATED_GB2312; s += 4; count += 4; if (n < count+1) goto none; continue; } if (s[3] == 'G') { state2 = STATE2_DESIGNATED_CNS11643_1; s += 4; count += 4; if (n < count+1) goto none; continue; } } if (s[2] == '*') { if (s[3] == 'H') { state3 = STATE3_DESIGNATED_CNS11643_2; s += 4; count += 4; if (n < count+1) goto none; continue; } } } if (s[1] == 'N') { switch (state3) { case STATE3_NONE: return RET_ILSEQ; case STATE3_DESIGNATED_CNS11643_2: if (s[2] < 0x80 && s[3] < 0x80) { int ret = cns11643_2_mbtowc(conv,pwc,s+2,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+4; } else return RET_ILSEQ; default: abort(); } } return RET_ILSEQ; } if (c == SO) { if (state2 != STATE2_DESIGNATED_GB2312 && state2 != STATE2_DESIGNATED_CNS11643_1) return RET_ILSEQ; state1 = STATE_TWOBYTE; s++; count++; if (n < count+1) goto none; continue; } if (c == SI) { state1 = STATE_ASCII; s++; count++; if (n < count+1) goto none; continue; } break; } switch (state1) { case STATE_ASCII: if (c < 0x80) { int ret = ascii_mbtowc(conv,pwc,s,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); if (*pwc == 0x000a || *pwc == 0x000d) { state2 = STATE2_NONE; state3 = STATE3_NONE; } COMBINE_STATE; conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_TWOBYTE: if (n < count+2) goto none; if (s[0] < 0x80 && s[1] < 0x80) { int ret; switch (state2) { case STATE2_NONE: return RET_ILSEQ; case STATE2_DESIGNATED_GB2312: ret = gb2312_mbtowc(conv,pwc,s,2); break; case STATE2_DESIGNATED_CNS11643_1: ret = cns11643_1_mbtowc(conv,pwc,s,2); break; default: abort(); } if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+2; } else return RET_ILSEQ; default: abort(); } none: COMBINE_STATE; conv->istate = state; return RET_TOOFEW(count); } static int iso2022_cn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { state_t state = conv->ostate; SPLIT_STATE; unsigned char buf[3]; int ret; /* Try ASCII. */ ret = ascii_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state1 == STATE_ASCII ? 1 : 2); if (n < count) return RET_TOOSMALL; if (state1 != STATE_ASCII) { r[0] = SI; r += 1; state1 = STATE_ASCII; } r[0] = buf[0]; if (wc == 0x000a || wc == 0x000d) { state2 = STATE2_NONE; state3 = STATE3_NONE; } COMBINE_STATE; conv->ostate = state; return count; } } /* Try GB 2312-1980. */ ret = gb2312_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state2 == STATE2_DESIGNATED_GB2312 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; if (n < count) return RET_TOOSMALL; if (state2 != STATE2_DESIGNATED_GB2312) { r[0] = ESC; r[1] = '$'; r[2] = ')'; r[3] = 'A'; r += 4; state2 = STATE2_DESIGNATED_GB2312; } if (state1 != STATE_TWOBYTE) { r[0] = SO; r += 1; state1 = STATE_TWOBYTE; } r[0] = buf[0]; r[1] = buf[1]; COMBINE_STATE; conv->ostate = state; return count; } } ret = cns11643_wctomb(conv,buf,wc,3); if (ret != RET_ILSEQ) { if (ret != 3) abort(); /* Try CNS 11643-1992 Plane 1. */ if (buf[0] == 0 && buf[1] < 0x80 && buf[2] < 0x80) { int count = (state2 == STATE2_DESIGNATED_CNS11643_1 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; if (n < count) return RET_TOOSMALL; if (state2 != STATE2_DESIGNATED_CNS11643_1) { r[0] = ESC; r[1] = '$'; r[2] = ')'; r[3] = 'G'; r += 4; state2 = STATE2_DESIGNATED_CNS11643_1; } if (state1 != STATE_TWOBYTE) { r[0] = SO; r += 1; state1 = STATE_TWOBYTE; } r[0] = buf[1]; r[1] = buf[2]; COMBINE_STATE; conv->ostate = state; return count; } /* Try CNS 11643-1992 Plane 2. */ if (buf[0] == 1 && buf[1] < 0x80 && buf[2] < 0x80) { int count = (state3 == STATE3_DESIGNATED_CNS11643_2 ? 0 : 4) + 4; if (n < count) return RET_TOOSMALL; if (state3 != STATE3_DESIGNATED_CNS11643_2) { r[0] = ESC; r[1] = '$'; r[2] = '*'; r[3] = 'H'; r += 4; state3 = STATE3_DESIGNATED_CNS11643_2; } r[0] = ESC; r[1] = 'N'; r[2] = buf[1]; r[3] = buf[2]; COMBINE_STATE; conv->ostate = state; return count; } } return RET_ILSEQ; } static int iso2022_cn_reset (conv_t conv, unsigned char *r, int n) { state_t state = conv->ostate; SPLIT_STATE; (void)state2; (void)state3; if (state1 != STATE_ASCII) { if (n < 1) return RET_TOOSMALL; r[0] = SI; /* conv->ostate = 0; will be done by the caller */ return 1; } else return 0; } #undef COMBINE_STATE #undef SPLIT_STATE #undef STATE3_DESIGNATED_CNS11643_2 #undef STATE3_NONE #undef STATE2_DESIGNATED_CNS11643_1 #undef STATE2_DESIGNATED_GB2312 #undef STATE2_NONE #undef STATE_TWOBYTE #undef STATE_ASCII recode-3.6/libiconv/iso2022_cnext.h0100644000000000000000000003011407206266437015614 0ustar rootroot /* * ISO-2022-CN-EXT */ /* Specification: RFC 1922 */ #define ESC 0x1b #define SO 0x0e #define SI 0x0f /* * The state is composed of one of the following values */ #define STATE_ASCII 0 #define STATE_TWOBYTE 1 /* * and one of the following values, << 8 */ #define STATE2_NONE 0 #define STATE2_DESIGNATED_GB2312 1 #define STATE2_DESIGNATED_CNS11643_1 2 #define STATE2_DESIGNATED_ISO_IR_165 3 /* * and one of the following values, << 16 */ #define STATE3_NONE 0 #define STATE3_DESIGNATED_CNS11643_2 1 /* * and one of the following values, << 24 */ #define STATE4_NONE 0 #define STATE4_DESIGNATED_CNS11643_3 1 #define STATE4_DESIGNATED_CNS11643_4 2 #define STATE4_DESIGNATED_CNS11643_5 3 #define STATE4_DESIGNATED_CNS11643_6 4 #define STATE4_DESIGNATED_CNS11643_7 5 #define SPLIT_STATE \ unsigned int state1 = state & 0xff, state2 = (state >> 8) & 0xff, state3 = (state >> 16) & 0xff, state4 = state >> 24 #define COMBINE_STATE \ state = (state4 << 24) | (state3 << 16) | (state2 << 8) | state1 static int iso2022_cn_ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; SPLIT_STATE; int count = 0; unsigned char c; for (;;) { c = *s; if (c == ESC) { if (n < count+4) goto none; if (s[1] == '$') { if (s[2] == ')') { if (s[3] == 'A') { state2 = STATE2_DESIGNATED_GB2312; s += 4; count += 4; if (n < count+1) goto none; continue; } if (s[3] == 'G') { state2 = STATE2_DESIGNATED_CNS11643_1; s += 4; count += 4; if (n < count+1) goto none; continue; } if (s[3] == 'E') { state2 = STATE2_DESIGNATED_ISO_IR_165; s += 4; count += 4; if (n < count+1) goto none; continue; } } if (s[2] == '*') { if (s[3] == 'H') { state3 = STATE3_DESIGNATED_CNS11643_2; s += 4; count += 4; if (n < count+1) goto none; continue; } } if (s[2] == '+') { if (s[3] == 'I') { state4 = STATE4_DESIGNATED_CNS11643_3; s += 4; count += 4; if (n < count+1) goto none; continue; } if (s[3] == 'J') { state4 = STATE4_DESIGNATED_CNS11643_4; s += 4; count += 4; if (n < count+1) goto none; continue; } if (s[3] == 'K') { state4 = STATE4_DESIGNATED_CNS11643_5; s += 4; count += 4; if (n < count+1) goto none; continue; } if (s[3] == 'L') { state4 = STATE4_DESIGNATED_CNS11643_6; s += 4; count += 4; if (n < count+1) goto none; continue; } if (s[3] == 'M') { state4 = STATE4_DESIGNATED_CNS11643_7; s += 4; count += 4; if (n < count+1) goto none; continue; } } } if (s[1] == 'N') { switch (state3) { case STATE3_NONE: return RET_ILSEQ; case STATE3_DESIGNATED_CNS11643_2: if (s[2] < 0x80 && s[3] < 0x80) { int ret = cns11643_2_mbtowc(conv,pwc,s+2,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+4; } else return RET_ILSEQ; default: abort(); } } if (s[1] == 'O') { switch (state4) { case STATE4_NONE: return RET_ILSEQ; case STATE4_DESIGNATED_CNS11643_3: if (s[2] < 0x80 && s[3] < 0x80) { int ret = cns11643_3_mbtowc(conv,pwc,s+2,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+4; } else return RET_ILSEQ; case STATE4_DESIGNATED_CNS11643_4: if (s[2] < 0x80 && s[3] < 0x80) { /* We don't have a CNS 11643-4 to Unicode table yet. */ return RET_ILSEQ; } else return RET_ILSEQ; case STATE4_DESIGNATED_CNS11643_5: if (s[2] < 0x80 && s[3] < 0x80) { /* We don't have a CNS 11643-5 to Unicode table yet. */ return RET_ILSEQ; } else return RET_ILSEQ; case STATE4_DESIGNATED_CNS11643_6: if (s[2] < 0x80 && s[3] < 0x80) { /* We don't have a CNS 11643-6 to Unicode table yet. */ return RET_ILSEQ; } else return RET_ILSEQ; case STATE4_DESIGNATED_CNS11643_7: if (s[2] < 0x80 && s[3] < 0x80) { /* We don't have a CNS 11643-7 to Unicode table yet. */ return RET_ILSEQ; } else return RET_ILSEQ; default: abort(); } } return RET_ILSEQ; } if (c == SO) { if (state2 != STATE2_DESIGNATED_GB2312 && state2 != STATE2_DESIGNATED_CNS11643_1 && state2 != STATE2_DESIGNATED_ISO_IR_165) return RET_ILSEQ; state1 = STATE_TWOBYTE; s++; count++; if (n < count+1) goto none; continue; } if (c == SI) { state1 = STATE_ASCII; s++; count++; if (n < count+1) goto none; continue; } break; } switch (state1) { case STATE_ASCII: if (c < 0x80) { int ret = ascii_mbtowc(conv,pwc,s,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); if (*pwc == 0x000a || *pwc == 0x000d) { state2 = STATE2_NONE; state3 = STATE3_NONE; state4 = STATE3_NONE; } COMBINE_STATE; conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_TWOBYTE: if (n < count+2) goto none; if (s[0] < 0x80 && s[1] < 0x80) { int ret; switch (state2) { case STATE2_NONE: return RET_ILSEQ; case STATE2_DESIGNATED_GB2312: ret = gb2312_mbtowc(conv,pwc,s,2); break; case STATE2_DESIGNATED_CNS11643_1: ret = cns11643_1_mbtowc(conv,pwc,s,2); break; case STATE2_DESIGNATED_ISO_IR_165: ret = isoir165_mbtowc(conv,pwc,s,2); break; default: abort(); } if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+2; } else return RET_ILSEQ; default: abort(); } none: COMBINE_STATE; conv->istate = state; return RET_TOOFEW(count); } static int iso2022_cn_ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { state_t state = conv->ostate; SPLIT_STATE; unsigned char buf[3]; int ret; /* Try ASCII. */ ret = ascii_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state1 == STATE_ASCII ? 1 : 2); if (n < count) return RET_TOOSMALL; if (state1 != STATE_ASCII) { r[0] = SI; r += 1; state1 = STATE_ASCII; } r[0] = buf[0]; if (wc == 0x000a || wc == 0x000d) { state2 = STATE2_NONE; state3 = STATE3_NONE; state4 = STATE3_NONE; } COMBINE_STATE; conv->ostate = state; return count; } } /* Try GB 2312-1980. */ ret = gb2312_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state2 == STATE2_DESIGNATED_GB2312 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; if (n < count) return RET_TOOSMALL; if (state2 != STATE2_DESIGNATED_GB2312) { r[0] = ESC; r[1] = '$'; r[2] = ')'; r[3] = 'A'; r += 4; state2 = STATE2_DESIGNATED_GB2312; } if (state1 != STATE_TWOBYTE) { r[0] = SO; r += 1; state1 = STATE_TWOBYTE; } r[0] = buf[0]; r[1] = buf[1]; COMBINE_STATE; conv->ostate = state; return count; } } ret = cns11643_wctomb(conv,buf,wc,3); if (ret != RET_ILSEQ) { if (ret != 3) abort(); /* Try CNS 11643-1992 Plane 1. */ if (buf[0] == 0 && buf[1] < 0x80 && buf[2] < 0x80) { int count = (state2 == STATE2_DESIGNATED_CNS11643_1 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; if (n < count) return RET_TOOSMALL; if (state2 != STATE2_DESIGNATED_CNS11643_1) { r[0] = ESC; r[1] = '$'; r[2] = ')'; r[3] = 'G'; r += 4; state2 = STATE2_DESIGNATED_CNS11643_1; } if (state1 != STATE_TWOBYTE) { r[0] = SO; r += 1; state1 = STATE_TWOBYTE; } r[0] = buf[1]; r[1] = buf[2]; COMBINE_STATE; conv->ostate = state; return count; } /* Try CNS 11643-1992 Plane 2. */ if (buf[0] == 1 && buf[1] < 0x80 && buf[2] < 0x80) { int count = (state3 == STATE3_DESIGNATED_CNS11643_2 ? 0 : 4) + 4; if (n < count) return RET_TOOSMALL; if (state3 != STATE3_DESIGNATED_CNS11643_2) { r[0] = ESC; r[1] = '$'; r[2] = '*'; r[3] = 'H'; r += 4; state3 = STATE3_DESIGNATED_CNS11643_2; } r[0] = ESC; r[1] = 'N'; r[2] = buf[1]; r[3] = buf[2]; COMBINE_STATE; conv->ostate = state; return count; } /* Try CNS 11643-1992 Plane 3. */ if (buf[0] == 2 && buf[1] < 0x80 && buf[2] < 0x80) { int count = (state4 == STATE4_DESIGNATED_CNS11643_3 ? 0 : 4) + 4; if (n < count) return RET_TOOSMALL; if (state4 != STATE4_DESIGNATED_CNS11643_3) { r[0] = ESC; r[1] = '$'; r[2] = '+'; r[3] = 'I'; r += 4; state4 = STATE4_DESIGNATED_CNS11643_3; } r[0] = ESC; r[1] = 'O'; r[2] = buf[1]; r[3] = buf[2]; COMBINE_STATE; conv->ostate = state; return count; } /* No table for CNS 11643-1992 Plane 4 yet. */ /* No table for CNS 11643-1992 Plane 5 yet. */ /* No table for CNS 11643-1992 Plane 6 yet. */ /* No table for CNS 11643-1992 Plane 7 yet. */ } /* Try ISO-IR-165. */ ret = isoir165_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state2 == STATE2_DESIGNATED_ISO_IR_165 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; if (n < count) return RET_TOOSMALL; if (state2 != STATE2_DESIGNATED_ISO_IR_165) { r[0] = ESC; r[1] = '$'; r[2] = ')'; r[3] = 'E'; r += 4; state2 = STATE2_DESIGNATED_ISO_IR_165; } if (state1 != STATE_TWOBYTE) { r[0] = SO; r += 1; state1 = STATE_TWOBYTE; } r[0] = buf[0]; r[1] = buf[1]; COMBINE_STATE; conv->ostate = state; return count; } } return RET_ILSEQ; } static int iso2022_cn_ext_reset (conv_t conv, unsigned char *r, int n) { state_t state = conv->ostate; SPLIT_STATE; (void)state2; (void)state3; (void)state4; if (state1 != STATE_ASCII) { if (n < 1) return RET_TOOSMALL; r[0] = SI; /* conv->ostate = 0; will be done by the caller */ return 1; } else return 0; } #undef COMBINE_STATE #undef SPLIT_STATE #undef STATE4_DESIGNATED_CNS11643_7 #undef STATE4_DESIGNATED_CNS11643_6 #undef STATE4_DESIGNATED_CNS11643_5 #undef STATE4_DESIGNATED_CNS11643_4 #undef STATE4_DESIGNATED_CNS11643_3 #undef STATE4_NONE #undef STATE3_DESIGNATED_CNS11643_2 #undef STATE3_NONE #undef STATE2_DESIGNATED_ISO_IR_165 #undef STATE2_DESIGNATED_CNS11643_1 #undef STATE2_DESIGNATED_GB2312 #undef STATE2_NONE #undef STATE_TWOBYTE #undef STATE_ASCII recode-3.6/libiconv/iso2022_jp.h0100644000000000000000000001034407206266437015107 0ustar rootroot /* * ISO-2022-JP */ /* Specification: RFC 1468 */ #define ESC 0x1b /* * The state can be one of the following values. */ #define STATE_ASCII 0 #define STATE_JISX0201ROMAN 1 #define STATE_JISX0208 2 static int iso2022_jp_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; int count = 0; unsigned char c; for (;;) { c = *s; if (c == ESC) { if (n < count+3) goto none; if (s[1] == '(') { if (s[2] == 'B') { state = STATE_ASCII; s += 3; count += 3; if (n < count+1) goto none; continue; } if (s[2] == 'J') { state = STATE_JISX0201ROMAN; s += 3; count += 3; if (n < count+1) goto none; continue; } return RET_ILSEQ; } if (s[1] == '$') { if (s[2] == '@' || s[2] == 'B') { /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ state = STATE_JISX0208; s += 3; count += 3; if (n < count+1) goto none; continue; } return RET_ILSEQ; } return RET_ILSEQ; } break; } switch (state) { case STATE_ASCII: if (c < 0x80) { int ret = ascii_mbtowc(conv,pwc,s,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_JISX0201ROMAN: if (c < 0x80) { int ret = jisx0201_mbtowc(conv,pwc,s,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_JISX0208: if (n < count+2) goto none; if (s[0] < 0x80 && s[1] < 0x80) { int ret = jisx0208_mbtowc(conv,pwc,s,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); conv->istate = state; return count+2; } else return RET_ILSEQ; default: abort(); } none: conv->istate = state; return RET_TOOFEW(count); } static int iso2022_jp_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { state_t state = conv->ostate; unsigned char buf[2]; int ret; /* Try ASCII. */ ret = ascii_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state == STATE_ASCII ? 1 : 4); if (n < count) return RET_TOOSMALL; if (state != STATE_ASCII) { r[0] = ESC; r[1] = '('; r[2] = 'B'; r += 3; state = STATE_ASCII; } r[0] = buf[0]; conv->ostate = state; return count; } } /* Try JIS X 0201-1976 Roman. */ ret = jisx0201_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state == STATE_JISX0201ROMAN ? 1 : 4); if (n < count) return RET_TOOSMALL; if (state != STATE_JISX0201ROMAN) { r[0] = ESC; r[1] = '('; r[2] = 'J'; r += 3; state = STATE_JISX0201ROMAN; } r[0] = buf[0]; conv->ostate = state; return count; } } /* Try JIS X 0208-1990 in place of JIS X 0208-1978 and JIS X 0208-1983. */ ret = jisx0208_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state == STATE_JISX0208 ? 2 : 5); if (n < count) return RET_TOOSMALL; if (state != STATE_JISX0208) { r[0] = ESC; r[1] = '$'; r[2] = 'B'; r += 3; state = STATE_JISX0208; } r[0] = buf[0]; r[1] = buf[1]; conv->ostate = state; return count; } } return RET_ILSEQ; } static int iso2022_jp_reset (conv_t conv, unsigned char *r, int n) { state_t state = conv->ostate; if (state != STATE_ASCII) { if (n < 3) return RET_TOOSMALL; r[0] = ESC; r[1] = '('; r[2] = 'B'; /* conv->ostate = 0; will be done by the caller */ return 3; } else return 0; } #undef STATE_JISX0208 #undef STATE_JISX0201ROMAN #undef STATE_ASCII recode-3.6/libiconv/iso2022_jp1.h0100644000000000000000000001263507206266437015175 0ustar rootroot /* * ISO-2022-JP-1 */ /* Specification: RFC 2237 */ #define ESC 0x1b /* * The state can be one of the following values. */ #define STATE_ASCII 0 #define STATE_JISX0201ROMAN 1 #define STATE_JISX0208 2 #define STATE_JISX0212 3 static int iso2022_jp1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; int count = 0; unsigned char c; for (;;) { c = *s; if (c == ESC) { if (n < count+3) goto none; if (s[1] == '(') { if (s[2] == 'B') { state = STATE_ASCII; s += 3; count += 3; if (n < count+1) goto none; continue; } if (s[2] == 'J') { state = STATE_JISX0201ROMAN; s += 3; count += 3; if (n < count+1) goto none; continue; } return RET_ILSEQ; } if (s[1] == '$') { if (s[2] == '@' || s[2] == 'B') { /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ state = STATE_JISX0208; s += 3; count += 3; if (n < count+1) goto none; continue; } if (s[2] == '(') { if (n < count+4) goto none; if (s[3] == 'D') { state = STATE_JISX0212; s += 4; count += 4; if (n < count+1) goto none; continue; } } return RET_ILSEQ; } return RET_ILSEQ; } break; } switch (state) { case STATE_ASCII: if (c < 0x80) { int ret = ascii_mbtowc(conv,pwc,s,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_JISX0201ROMAN: if (c < 0x80) { int ret = jisx0201_mbtowc(conv,pwc,s,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_JISX0208: if (n < count+2) goto none; if (s[0] < 0x80 && s[1] < 0x80) { int ret = jisx0208_mbtowc(conv,pwc,s,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); conv->istate = state; return count+2; } else return RET_ILSEQ; case STATE_JISX0212: if (n < count+2) goto none; if (s[0] < 0x80 && s[1] < 0x80) { int ret = jisx0212_mbtowc(conv,pwc,s,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); conv->istate = state; return count+2; } else return RET_ILSEQ; default: abort(); } none: conv->istate = state; return RET_TOOFEW(count); } static int iso2022_jp1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { state_t state = conv->ostate; unsigned char buf[2]; int ret; /* Try ASCII. */ ret = ascii_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state == STATE_ASCII ? 1 : 4); if (n < count) return RET_TOOSMALL; if (state != STATE_ASCII) { r[0] = ESC; r[1] = '('; r[2] = 'B'; r += 3; state = STATE_ASCII; } r[0] = buf[0]; conv->ostate = state; return count; } } /* Try JIS X 0201-1976 Roman. */ ret = jisx0201_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state == STATE_JISX0201ROMAN ? 1 : 4); if (n < count) return RET_TOOSMALL; if (state != STATE_JISX0201ROMAN) { r[0] = ESC; r[1] = '('; r[2] = 'J'; r += 3; state = STATE_JISX0201ROMAN; } r[0] = buf[0]; conv->ostate = state; return count; } } /* Try JIS X 0208-1990 in place of JIS X 0208-1978 and JIS X 0208-1983. */ ret = jisx0208_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state == STATE_JISX0208 ? 2 : 5); if (n < count) return RET_TOOSMALL; if (state != STATE_JISX0208) { r[0] = ESC; r[1] = '$'; r[2] = 'B'; r += 3; state = STATE_JISX0208; } r[0] = buf[0]; r[1] = buf[1]; conv->ostate = state; return count; } } /* Try JIS X 0212-1990. */ ret = jisx0212_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state == STATE_JISX0212 ? 2 : 6); if (n < count) return RET_TOOSMALL; if (state != STATE_JISX0212) { r[0] = ESC; r[1] = '$'; r[2] = '('; r[3] = 'D'; r += 4; state = STATE_JISX0212; } r[0] = buf[0]; r[1] = buf[1]; conv->ostate = state; return count; } } return RET_ILSEQ; } static int iso2022_jp1_reset (conv_t conv, unsigned char *r, int n) { state_t state = conv->ostate; if (state != STATE_ASCII) { if (n < 3) return RET_TOOSMALL; r[0] = ESC; r[1] = '('; r[2] = 'B'; /* conv->ostate = 0; will be done by the caller */ return 3; } else return 0; } #undef STATE_JISX0212 #undef STATE_JISX0208 #undef STATE_JISX0201ROMAN #undef STATE_ASCII recode-3.6/libiconv/iso2022_jp2.h0100644000000000000000000003036307206266437015174 0ustar rootroot /* * ISO-2022-JP-2 */ /* Specification: RFC 1554 */ /* ESC '(' 'I' for JISX0201 Katakana is an extension not found in RFC 1554 or CJK.INF, but implemented in glibc-2.1 and qt-2.0. */ #define ESC 0x1b /* * The state is composed of one of the following values */ #define STATE_ASCII 0 #define STATE_JISX0201ROMAN 1 #define STATE_JISX0201KATAKANA 2 #define STATE_JISX0208 3 #define STATE_JISX0212 4 #define STATE_GB2312 5 #define STATE_KSC5601 6 /* * and one of the following values, << 8 */ #define STATE_G2_NONE 0 #define STATE_G2_ISO8859_1 1 #define STATE_G2_ISO8859_7 2 #define SPLIT_STATE \ unsigned int state1 = state & 0xff, state2 = state >> 8 #define COMBINE_STATE \ state = (state2 << 8) | state1 static int iso2022_jp2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; SPLIT_STATE; int count = 0; unsigned char c; for (;;) { c = *s; if (c == ESC) { if (n < count+3) goto none; if (s[1] == '(') { if (s[2] == 'B') { state1 = STATE_ASCII; s += 3; count += 3; if (n < count+1) goto none; continue; } if (s[2] == 'J') { state1 = STATE_JISX0201ROMAN; s += 3; count += 3; if (n < count+1) goto none; continue; } if (s[2] == 'I') { state1 = STATE_JISX0201KATAKANA; s += 3; count += 3; if (n < count+1) goto none; continue; } return RET_ILSEQ; } if (s[1] == '$') { if (s[2] == '@' || s[2] == 'B') { /* We don't distinguish JIS X 0208-1978 and JIS X 0208-1983. */ state1 = STATE_JISX0208; s += 3; count += 3; if (n < count+1) goto none; continue; } if (s[2] == 'A') { state1 = STATE_GB2312; s += 3; count += 3; if (n < count+1) goto none; continue; } if (s[2] == '(') { if (n < count+4) goto none; if (s[3] == 'D') { state1 = STATE_JISX0212; s += 4; count += 4; if (n < count+1) goto none; continue; } if (s[3] == 'C') { state1 = STATE_KSC5601; s += 4; count += 4; if (n < count+1) goto none; continue; } return RET_ILSEQ; } return RET_ILSEQ; } if (s[1] == '.') { if (n < count+3) goto none; if (s[2] == 'A') { state2 = STATE_G2_ISO8859_1; s += 3; count += 3; if (n < count+1) goto none; continue; } if (s[2] == 'F') { state2 = STATE_G2_ISO8859_7; s += 3; count += 3; if (n < count+1) goto none; continue; } return RET_ILSEQ; } if (s[1] == 'N') { switch (state2) { case STATE_G2_NONE: return RET_ILSEQ; case STATE_G2_ISO8859_1: if (s[2] < 0x80) { unsigned char buf = s[2]+0x80; int ret = iso8859_1_mbtowc(conv,pwc,&buf,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); COMBINE_STATE; conv->istate = state; return count+3; } else return RET_ILSEQ; case STATE_G2_ISO8859_7: if (s[2] < 0x80) { unsigned char buf = s[2]+0x80; int ret = iso8859_7_mbtowc(conv,pwc,&buf,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); COMBINE_STATE; conv->istate = state; return count+3; } else return RET_ILSEQ; default: abort(); } } return RET_ILSEQ; } break; } switch (state1) { case STATE_ASCII: if (c < 0x80) { int ret = ascii_mbtowc(conv,pwc,s,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); if (*pwc == 0x000a || *pwc == 0x000d) state2 = STATE_G2_NONE; COMBINE_STATE; conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_JISX0201ROMAN: if (c < 0x80) { int ret = jisx0201_mbtowc(conv,pwc,s,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); if (*pwc == 0x000a || *pwc == 0x000d) state2 = STATE_G2_NONE; COMBINE_STATE; conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_JISX0201KATAKANA: if (c < 0x80) { unsigned char buf = c+0x80; int ret = jisx0201_mbtowc(conv,pwc,&buf,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); COMBINE_STATE; conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_JISX0208: if (n < count+2) goto none; if (s[0] < 0x80 && s[1] < 0x80) { int ret = jisx0208_mbtowc(conv,pwc,s,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+2; } else return RET_ILSEQ; case STATE_JISX0212: if (n < count+2) goto none; if (s[0] < 0x80 && s[1] < 0x80) { int ret = jisx0212_mbtowc(conv,pwc,s,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+2; } else return RET_ILSEQ; case STATE_GB2312: if (n < count+2) goto none; if (s[0] < 0x80 && s[1] < 0x80) { int ret = gb2312_mbtowc(conv,pwc,s,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+2; } else return RET_ILSEQ; case STATE_KSC5601: if (n < count+2) goto none; if (s[0] < 0x80 && s[1] < 0x80) { int ret = ksc5601_mbtowc(conv,pwc,s,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+2; } else return RET_ILSEQ; default: abort(); } none: COMBINE_STATE; conv->istate = state; return RET_TOOFEW(count); } static int iso2022_jp2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { state_t state = conv->ostate; SPLIT_STATE; unsigned char buf[2]; int ret; /* Try ASCII. */ ret = ascii_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state1 == STATE_ASCII ? 1 : 4); if (n < count) return RET_TOOSMALL; if (state1 != STATE_ASCII) { r[0] = ESC; r[1] = '('; r[2] = 'B'; r += 3; state1 = STATE_ASCII; } r[0] = buf[0]; if (wc == 0x000a || wc == 0x000d) state2 = STATE_G2_NONE; COMBINE_STATE; conv->ostate = state; return count; } } /* Try ISO-8859-1. */ ret = iso8859_1_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] >= 0x80) { int count = (state2 == STATE_G2_ISO8859_1 ? 3 : 6); if (n < count) return RET_TOOSMALL; if (state2 != STATE_G2_ISO8859_1) { r[0] = ESC; r[1] = '.'; r[2] = 'A'; r += 3; state2 = STATE_G2_ISO8859_1; } r[0] = ESC; r[1] = 'N'; r[2] = buf[0]-0x80; COMBINE_STATE; conv->ostate = state; return count; } } /* Try ISO-8859-7. */ ret = iso8859_7_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] >= 0x80) { int count = (state2 == STATE_G2_ISO8859_7 ? 3 : 6); if (n < count) return RET_TOOSMALL; if (state2 != STATE_G2_ISO8859_7) { r[0] = ESC; r[1] = '.'; r[2] = 'F'; r += 3; state2 = STATE_G2_ISO8859_7; } r[0] = ESC; r[1] = 'N'; r[2] = buf[0]-0x80; COMBINE_STATE; conv->ostate = state; return count; } } /* Try JIS X 0201-1976 Roman and Kana. */ ret = jisx0201_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state1 == STATE_JISX0201ROMAN ? 1 : 4); if (n < count) return RET_TOOSMALL; if (state1 != STATE_JISX0201ROMAN) { r[0] = ESC; r[1] = '('; r[2] = 'J'; r += 3; state1 = STATE_JISX0201ROMAN; } r[0] = buf[0]; if (wc == 0x000a || wc == 0x000d) state2 = STATE_G2_NONE; COMBINE_STATE; conv->ostate = state; return count; } else { int count = (state1 == STATE_JISX0201KATAKANA ? 1 : 4); if (n < count) return RET_TOOSMALL; if (state1 != STATE_JISX0201KATAKANA) { r[0] = ESC; r[1] = '('; r[2] = 'I'; r += 3; state1 = STATE_JISX0201KATAKANA; } r[0] = buf[0]-0x80; COMBINE_STATE; conv->ostate = state; return count; } } /* Try JIS X 0208-1990 in place of JIS X 0208-1978 and JIS X 0208-1983. */ ret = jisx0208_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state1 == STATE_JISX0208 ? 2 : 5); if (n < count) return RET_TOOSMALL; if (state1 != STATE_JISX0208) { r[0] = ESC; r[1] = '$'; r[2] = 'B'; r += 3; state1 = STATE_JISX0208; } r[0] = buf[0]; r[1] = buf[1]; COMBINE_STATE; conv->ostate = state; return count; } } /* Try JIS X 0212-1990. */ ret = jisx0212_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state1 == STATE_JISX0212 ? 2 : 6); if (n < count) return RET_TOOSMALL; if (state1 != STATE_JISX0212) { r[0] = ESC; r[1] = '$'; r[2] = '('; r[3] = 'D'; r += 4; state1 = STATE_JISX0212; } r[0] = buf[0]; r[1] = buf[1]; COMBINE_STATE; conv->ostate = state; return count; } } /* Try GB 2312-1980. */ ret = gb2312_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state1 == STATE_GB2312 ? 2 : 5); if (n < count) return RET_TOOSMALL; if (state1 != STATE_GB2312) { r[0] = ESC; r[1] = '$'; r[2] = 'A'; r += 3; state1 = STATE_GB2312; } r[0] = buf[0]; r[1] = buf[1]; COMBINE_STATE; conv->ostate = state; return count; } } /* Try KS C 5601-1992. */ ret = ksc5601_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state1 == STATE_KSC5601 ? 2 : 6); if (n < count) return RET_TOOSMALL; if (state1 != STATE_KSC5601) { r[0] = ESC; r[1] = '$'; r[2] = '('; r[3] = 'C'; r += 4; state1 = STATE_KSC5601; } r[0] = buf[0]; r[1] = buf[1]; COMBINE_STATE; conv->ostate = state; return count; } } return RET_ILSEQ; } static int iso2022_jp2_reset (conv_t conv, unsigned char *r, int n) { state_t state = conv->ostate; SPLIT_STATE; (void)state2; if (state1 != STATE_ASCII) { if (n < 3) return RET_TOOSMALL; r[0] = ESC; r[1] = '('; r[2] = 'B'; /* conv->ostate = 0; will be done by the caller */ return 3; } else return 0; } #undef COMBINE_STATE #undef SPLIT_STATE #undef STATE_G2_ISO8859_7 #undef STATE_G2_ISO8859_1 #undef STATE_G2_NONE #undef STATE_KSC5601 #undef STATE_GB2312 #undef STATE_JISX0212 #undef STATE_JISX0208 #undef STATE_JISX0201KATAKANA #undef STATE_JISX0201ROMAN #undef STATE_ASCII recode-3.6/libiconv/iso2022_kr.h0100644000000000000000000001067707206266437015123 0ustar rootroot /* * ISO-2022-KR */ /* Specification: RFC 1557 */ /* Note: CJK.INF says the SO designator needs to appear only once at the beginning of a text, but to decrease the risk of ambiguities, when producing ISO-2022-KR, we repeat the designator in every line containing SO characters. RFC 1557 does not mandate this. */ #define ESC 0x1b #define SO 0x0e #define SI 0x0f /* * The state is composed of one of the following values */ #define STATE_ASCII 0 #define STATE_TWOBYTE 1 /* * and one of the following values, << 8 */ #define STATE2_NONE 0 #define STATE2_DESIGNATED_KSC5601 1 #define SPLIT_STATE \ unsigned int state1 = state & 0xff, state2 = state >> 8 #define COMBINE_STATE \ state = (state2 << 8) | state1 static int iso2022_kr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; SPLIT_STATE; int count = 0; unsigned char c; for (;;) { c = *s; if (c == ESC) { if (n < count+4) goto none; if (s[1] == '$') { if (s[2] == ')') { if (s[3] == 'C') { state2 = STATE2_DESIGNATED_KSC5601; s += 4; count += 4; if (n < count+1) goto none; continue; } } } return RET_ILSEQ; } if (c == SO) { if (state2 != STATE2_DESIGNATED_KSC5601) return RET_ILSEQ; state1 = STATE_TWOBYTE; s++; count++; if (n < count+1) goto none; continue; } if (c == SI) { state1 = STATE_ASCII; s++; count++; if (n < count+1) goto none; continue; } break; } switch (state1) { case STATE_ASCII: if (c < 0x80) { int ret = ascii_mbtowc(conv,pwc,s,1); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 1) abort(); #if 0 /* Accept ISO-2022-KR according to CJK.INF. */ if (*pwc == 0x000a || *pwc == 0x000d) state2 = STATE2_NONE; #endif COMBINE_STATE; conv->istate = state; return count+1; } else return RET_ILSEQ; case STATE_TWOBYTE: if (n < count+2) goto none; if (state2 != STATE2_DESIGNATED_KSC5601) abort(); if (s[0] < 0x80 && s[1] < 0x80) { int ret = ksc5601_mbtowc(conv,pwc,s,2); if (ret == RET_ILSEQ) return RET_ILSEQ; if (ret != 2) abort(); COMBINE_STATE; conv->istate = state; return count+2; } else return RET_ILSEQ; default: abort(); } none: COMBINE_STATE; conv->istate = state; return RET_TOOFEW(count); } static int iso2022_kr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { state_t state = conv->ostate; SPLIT_STATE; unsigned char buf[2]; int ret; /* Try ASCII. */ ret = ascii_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] < 0x80) { int count = (state1 == STATE_ASCII ? 1 : 2); if (n < count) return RET_TOOSMALL; if (state1 != STATE_ASCII) { r[0] = SI; r += 1; state1 = STATE_ASCII; } r[0] = buf[0]; if (wc == 0x000a || wc == 0x000d) state2 = STATE2_NONE; COMBINE_STATE; conv->ostate = state; return count; } } /* Try KS C 5601-1992. */ ret = ksc5601_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (buf[0] < 0x80 && buf[1] < 0x80) { int count = (state2 == STATE2_DESIGNATED_KSC5601 ? 0 : 4) + (state1 == STATE_TWOBYTE ? 0 : 1) + 2; if (n < count) return RET_TOOSMALL; if (state2 != STATE2_DESIGNATED_KSC5601) { r[0] = ESC; r[1] = '$'; r[2] = ')'; r[3] = 'C'; r += 4; state2 = STATE2_DESIGNATED_KSC5601; } if (state1 != STATE_TWOBYTE) { r[0] = SO; r += 1; state1 = STATE_TWOBYTE; } r[0] = buf[0]; r[1] = buf[1]; COMBINE_STATE; conv->ostate = state; return count; } } return RET_ILSEQ; } static int iso2022_kr_reset (conv_t conv, unsigned char *r, int n) { state_t state = conv->ostate; SPLIT_STATE; (void)state2; if (state1 != STATE_ASCII) { if (n < 1) return RET_TOOSMALL; r[0] = SI; /* conv->ostate = 0; will be done by the caller */ return 1; } else return 0; } #undef COMBINE_STATE #undef SPLIT_STATE #undef STATE2_DESIGNATED_KSC5601 #undef STATE2_NONE #undef STATE_TWOBYTE #undef STATE_ASCII recode-3.6/libiconv/iso646_cn.h0100644000000000000000000000122107206266437015022 0ustar rootroot /* * ISO646-CN * also known as GB_1988-80 */ static int iso646_cn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { if (c == 0x24) *pwc = (ucs4_t) 0x00a5; else if (c == 0x7e) *pwc = (ucs4_t) 0x203e; else *pwc = (ucs4_t) c; return 1; } return RET_ILSEQ; } static int iso646_cn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x0080 && !(wc == 0x0024 || wc == 0x007e)) { *r = wc; return 1; } if (wc == 0x00a5) { *r = 0x24; return 1; } if (wc == 0x203e) { *r = 0x7e; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso646_jp.h0100644000000000000000000000130407206266437015035 0ustar rootroot /* * ISO646-JP * also known as JIS_C6220-1969-RO */ /* This is the lower half of JIS_X0201. */ static int iso646_jp_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { if (c == 0x5c) *pwc = (ucs4_t) 0x00a5; else if (c == 0x7e) *pwc = (ucs4_t) 0x203e; else *pwc = (ucs4_t) c; return 1; } return RET_ILSEQ; } static int iso646_jp_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) { *r = wc; return 1; } if (wc == 0x00a5) { *r = 0x5c; return 1; } if (wc == 0x203e) { *r = 0x7e; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_1.h0100644000000000000000000000050507206266437014664 0ustar rootroot /* * ISO-8859-1 */ static int iso8859_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; *pwc = (ucs4_t) c; return 1; } static int iso8859_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x0100) { *r = wc; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_10.h0100644000000000000000000000654707206266437014760 0ustar rootroot /* * ISO-8859-10 */ static const unsigned short iso8859_10_2uni[96] = { /* 0xa0 */ 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7, 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a, /* 0xb0 */ 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7, 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b, /* 0xc0 */ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf, /* 0xd0 */ 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168, 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, /* 0xe0 */ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef, /* 0xf0 */ 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169, 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138, }; static int iso8859_10_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) iso8859_10_2uni[c-0xa0]; return 1; } static const unsigned char iso8859_10_page00[224] = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */ 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */ 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */ 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */ 0xa9, 0xb9, 0xa2, 0xb2, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */ 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, /* 0x30-0x37 */ 0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb, /* 0x60-0x67 */ 0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00, /* 0x78-0x7f */ }; static int iso8859_10_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0180) c = iso8859_10_page00[wc-0x00a0]; else if (wc == 0x2015) c = 0xbd; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_13.h0100644000000000000000000000700707206266437014753 0ustar rootroot /* * ISO-8859-13 */ static const unsigned short iso8859_13_2uni[96] = { /* 0xa0 */ 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7, 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7, 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, /* 0xc0 */ 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, /* 0xd0 */ 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df, /* 0xe0 */ 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, /* 0xf0 */ 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019, }; static int iso8859_13_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) iso8859_13_2uni[c-0xa0]; return 1; } static const unsigned char iso8859_13_page00[224] = { 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, /* 0xc0-0xc7 */ 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 0xa8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */ 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, /* 0xe0-0xe7 */ 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 0xb8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, /* 0x10-0x17 */ 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xc1, 0xe1, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0x50-0x57 */ 0x00, 0x00, 0xda, 0xfa, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00, /* 0x78-0x7f */ }; static const unsigned char iso8859_13_page20[8] = { 0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00, /* 0x18-0x1f */ }; static int iso8859_13_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0180) c = iso8859_13_page00[wc-0x00a0]; else if (wc >= 0x2018 && wc < 0x2020) c = iso8859_13_page20[wc-0x2018]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_14.h0100644000000000000000000001055107206266437014752 0ustar rootroot /* * ISO-8859-14 */ static const unsigned short iso8859_14_2uni[96] = { /* 0xa0 */ 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, /* 0xb0 */ 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, /* 0xc0 */ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, /* 0xd0 */ 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, /* 0xe0 */ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, /* 0xf0 */ 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, }; static int iso8859_14_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c >= 0xa0) *pwc = (ucs4_t) iso8859_14_2uni[c-0xa0]; else *pwc = (ucs4_t) c; return 1; } static const unsigned char iso8859_14_page00[96] = { 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */ 0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff, /* 0xf8-0xff */ }; static const unsigned char iso8859_14_page01_0[32] = { 0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; static const unsigned char iso8859_14_page01_1[16] = { 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe, /* 0x70-0x77 */ 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ }; static const unsigned char iso8859_14_page1e_0[136] = { 0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00, /* 0x80-0x87 */ }; static const unsigned char iso8859_14_page1e_1[8] = { 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */ }; static int iso8859_14_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = iso8859_14_page00[wc-0x00a0]; else if (wc >= 0x0108 && wc < 0x0128) c = iso8859_14_page01_0[wc-0x0108]; else if (wc >= 0x0170 && wc < 0x0180) c = iso8859_14_page01_1[wc-0x0170]; else if (wc >= 0x1e00 && wc < 0x1e88) c = iso8859_14_page1e_0[wc-0x1e00]; else if (wc >= 0x1ef0 && wc < 0x1ef8) c = iso8859_14_page1e_1[wc-0x1ef0]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_15.h0100644000000000000000000000346607206266437014762 0ustar rootroot /* * ISO-8859-15 */ static const unsigned short iso8859_15_2uni[32] = { /* 0xa0 */ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, }; static int iso8859_15_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c >= 0xa0 && c < 0xc0) *pwc = (ucs4_t) iso8859_15_2uni[c-0xa0]; else *pwc = (ucs4_t) c; return 1; } static const unsigned char iso8859_15_page00[32] = { 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */ 0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0xb8-0xbf */ }; static const unsigned char iso8859_15_page01[48] = { 0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */ }; static int iso8859_15_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00c0) c = iso8859_15_page00[wc-0x00a0]; else if (wc >= 0x00c0 && wc < 0x0100) c = wc; else if (wc >= 0x0150 && wc < 0x0180) c = iso8859_15_page01[wc-0x0150]; else if (wc == 0x20ac) c = 0xa4; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_16.h0100644000000000000000000000736507206266437014765 0ustar rootroot /* * ISO-8859-16 */ static const unsigned short iso8859_16_2uni[96] = { /* 0xa0 */ 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x00ab, 0x0160, 0x00a7, 0x0161, 0x00a9, 0x0218, 0x201e, 0x0179, 0x00ad, 0x017a, 0x017b, /* 0xb0 */ 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7, 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c, /* 0xc0 */ 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, /* 0xd0 */ 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a, 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df, /* 0xe0 */ 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, /* 0xf0 */ 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b, 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff, }; static int iso8859_16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) iso8859_16_2uni[c-0xa0]; return 1; } static const unsigned char iso8859_16_page00[224] = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */ 0x00, 0xa9, 0x00, 0xa5, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0xc7, /* 0xc0-0xc7 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0x00, /* 0xd0-0xd7 */ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0xe6, 0xe7, /* 0xe0-0xe7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0x00, /* 0xf0-0xf7 */ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */ /* 0x0100 */ 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xb2, 0xb9, 0x00, 0x00, /* 0x08-0x0f */ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0xd5, 0xf5, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */ }; static const unsigned char iso8859_16_page02[8] = { 0xaa, 0xba, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ }; static const unsigned char iso8859_16_page20[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xab, 0x00, /* 0x18-0x1f */ }; static int iso8859_16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0180) c = iso8859_16_page00[wc-0x00a0]; else if (wc >= 0x0218 && wc < 0x0220) c = iso8859_16_page02[wc-0x0218]; else if (wc >= 0x2018 && wc < 0x2020) c = iso8859_16_page20[wc-0x2018]; else if (wc == 0x20ac) c = 0xa4; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_2.h0100644000000000000000000000730507206266437014672 0ustar rootroot /* * ISO-8859-2 */ static const unsigned short iso8859_2_2uni[96] = { /* 0xa0 */ 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, /* 0xb0 */ 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, /* 0xc0 */ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, /* 0xd0 */ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, /* 0xe0 */ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, /* 0xf0 */ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, }; static int iso8859_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) iso8859_2_2uni[c-0xa0]; return 1; } static const unsigned char iso8859_2_page00[224] = { 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */ 0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */ 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */ 0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, /* 0x08-0x0f */ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00, /* 0x38-0x3f */ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, /* 0x40-0x47 */ 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, /* 0x50-0x57 */ 0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba, /* 0x58-0x5f */ 0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, /* 0x68-0x6f */ 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00, /* 0x78-0x7f */ }; static const unsigned char iso8859_2_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0xd8-0xdf */ }; static int iso8859_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0180) c = iso8859_2_page00[wc-0x00a0]; else if (wc >= 0x02c0 && wc < 0x02e0) c = iso8859_2_page02[wc-0x02c0]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_3.h0100644000000000000000000000723707206266437014677 0ustar rootroot /* * ISO-8859-3 */ static const unsigned short iso8859_3_2uni[96] = { /* 0xa0 */ 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0xfffd, 0x0124, 0x00a7, 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0xfffd, 0x017b, /* 0xb0 */ 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0xfffd, 0x017c, /* 0xc0 */ 0x00c0, 0x00c1, 0x00c2, 0xfffd, 0x00c4, 0x010a, 0x0108, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, /* 0xd0 */ 0xfffd, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, /* 0xe0 */ 0x00e0, 0x00e1, 0x00e2, 0xfffd, 0x00e4, 0x010b, 0x0109, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, /* 0xf0 */ 0xfffd, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, }; static int iso8859_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = iso8859_3_2uni[c-0xa0]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char iso8859_3_page00[96] = { 0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */ 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */ 0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */ 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; static const unsigned char iso8859_3_page01[120] = { 0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb, /* 0x18-0x1f */ 0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, /* 0x78-0x7f */ }; static const unsigned char iso8859_3_page02[8] = { 0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static int iso8859_3_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = iso8859_3_page00[wc-0x00a0]; else if (wc >= 0x0108 && wc < 0x0180) c = iso8859_3_page01[wc-0x0108]; else if (wc >= 0x02d8 && wc < 0x02e0) c = iso8859_3_page02[wc-0x02d8]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_4.h0100644000000000000000000000730507206266437014674 0ustar rootroot /* * ISO-8859-4 */ static const unsigned short iso8859_4_2uni[96] = { /* 0xa0 */ 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, /* 0xb0 */ 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, /* 0xc0 */ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, /* 0xd0 */ 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, /* 0xe0 */ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, /* 0xf0 */ 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, }; static int iso8859_4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) iso8859_4_2uni[c-0xa0]; return 1; } static const unsigned char iso8859_4_page00[224] = { 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf, /* 0xa8-0xaf */ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */ 0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */ 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3, /* 0x30-0x37 */ 0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, /* 0x60-0x67 */ 0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00, /* 0x78-0x7f */ }; static const unsigned char iso8859_4_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static int iso8859_4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0180) c = iso8859_4_page00[wc-0x00a0]; else if (wc >= 0x02c0 && wc < 0x02e0) c = iso8859_4_page02[wc-0x02c0]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_5.h0100644000000000000000000000507007206266437014672 0ustar rootroot /* * ISO-8859-5 */ static const unsigned short iso8859_5_2uni[96] = { /* 0xa0 */ 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, /* 0xb0 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, /* 0xc0 */ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, /* 0xd0 */ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, /* 0xe0 */ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, /* 0xf0 */ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, }; static int iso8859_5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) iso8859_5_2uni[c-0xa0]; return 1; } static const unsigned char iso8859_5_page00[16] = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */ }; static const unsigned char iso8859_5_page04[96] = { 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x08-0x0f */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x38-0x3f */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff, /* 0x58-0x5f */ }; static int iso8859_5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00b0) c = iso8859_5_page00[wc-0x00a0]; else if (wc >= 0x0400 && wc < 0x0460) c = iso8859_5_page04[wc-0x0400]; else if (wc == 0x2116) c = 0xf0; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_6.h0100644000000000000000000000477307206266437014704 0ustar rootroot /* * ISO-8859-6 */ static const unsigned short iso8859_6_2uni[96] = { /* 0xa0 */ 0x00a0, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0x00ad, 0xfffd, 0xfffd, /* 0xb0 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f, /* 0xc0 */ 0xfffd, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, /* 0xd0 */ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, 0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xe0 */ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, /* 0xf0 */ 0x0650, 0x0651, 0x0652, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; static int iso8859_6_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = iso8859_6_2uni[c-0xa0]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char iso8859_6_page00[16] = { 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */ }; static const unsigned char iso8859_6_page06[80] = { 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */ 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ }; static int iso8859_6_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00b0) c = iso8859_6_page00[wc-0x00a0]; else if (wc >= 0x0608 && wc < 0x0658) c = iso8859_6_page06[wc-0x0608]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_7.h0100644000000000000000000000560707206266437014702 0ustar rootroot /* * ISO-8859-7 */ static const unsigned short iso8859_7_2uni[96] = { /* 0xa0 */ 0x00a0, 0x2018, 0x2019, 0x00a3, 0xfffd, 0xfffd, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0xfffd, 0x2015, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, /* 0xc0 */ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, /* 0xd0 */ 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, /* 0xe0 */ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, /* 0xf0 */ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd, }; static int iso8859_7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = iso8859_7_2uni[c-0xa0]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char iso8859_7_page00[32] = { 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */ }; static const unsigned char iso8859_7_page03[80] = { 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00, /* 0x80-0x87 */ 0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf, /* 0x88-0x8f */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x90-0x97 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x98-0x9f */ 0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xa0-0xa7 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xa8-0xaf */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xb0-0xb7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xb8-0xbf */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xc0-0xc7 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xc8-0xcf */ }; static const unsigned char iso8859_7_page20[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, /* 0x10-0x17 */ 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ }; static int iso8859_7_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00c0) c = iso8859_7_page00[wc-0x00a0]; else if (wc >= 0x0380 && wc < 0x03d0) c = iso8859_7_page03[wc-0x0380]; else if (wc >= 0x2010 && wc < 0x2020) c = iso8859_7_page20[wc-0x2010]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_8.h0100644000000000000000000000571207206266437014700 0ustar rootroot /* * ISO-8859-8 */ static const unsigned short iso8859_8_2uni[96] = { /* 0xa0 */ 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd, /* 0xc0 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xd0 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2017, /* 0xe0 */ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, /* 0xf0 */ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd, }; static int iso8859_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c >= 0xa0) { unsigned short wc = iso8859_8_2uni[c-0xa0]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } else { *pwc = (ucs4_t) c; return 1; } return RET_ILSEQ; } static const unsigned char iso8859_8_page00[88] = { 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */ }; static const unsigned char iso8859_8_page05[32] = { 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ }; static const unsigned char iso8859_8_page20[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x10-0x17 */ }; static int iso8859_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00f8) c = iso8859_8_page00[wc-0x00a0]; else if (wc >= 0x05d0 && wc < 0x05f0) c = iso8859_8_page05[wc-0x05d0]; else if (wc >= 0x2008 && wc < 0x2018) c = iso8859_8_page20[wc-0x2008]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/iso8859_9.h0100644000000000000000000000424107206266437014675 0ustar rootroot /* * ISO-8859-9 */ static const unsigned short iso8859_9_2uni[48] = { /* 0xd0 */ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, /* 0xe0 */ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, /* 0xf0 */ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, }; static int iso8859_9_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c >= 0xd0) *pwc = (ucs4_t) iso8859_9_2uni[c-0xd0]; else *pwc = (ucs4_t) c; return 1; } static const unsigned char iso8859_9_page00[48] = { 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */ }; static const unsigned char iso8859_9_page01[72] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */ }; static int iso8859_9_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00d0) { *r = wc; return 1; } else if (wc >= 0x00d0 && wc < 0x0100) c = iso8859_9_page00[wc-0x00d0]; else if (wc >= 0x0118 && wc < 0x0160) c = iso8859_9_page01[wc-0x0118]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/isoir165.h0100644000000000000000000001111207206266437014671 0ustar rootroot/* * ISO-IR-165 */ /* * ISO-IR-165 is an extension of GB 2312, consisting of: * 1. GB 6345.1-86 corrections: * Two corrections to GB 2312, at 0x2367 and 0x6F71. * 2. GB 6345.1-86 additions: * - 6 new full-width pinyin characters in row 0x28. * - ISO646-CN in row 0x2A. * - 32 half-width pinyin characters in row 0x2B. * 3. GB 8565.2-88 additions: * - 50 characters in row 0x2D. * - 92 characters in row 0x2E. * - 93 characters in row 0x2F. * - 470 characters in rows 0x7A-0x7E. * 4. ISO-IR-165 additions: * - 22 characters in row 0x26. * - 94 characters in row 0x2C. * - 44 new characters in row 0x2D. * - 1 new character in row 0x2F. * * The conversion table was created from the following sources: * Ad 1. The 0x2367 correction is already integrated in the unicode.org * GB2312.TXT table. The 0x6F71 mapping is the same in the unicode.org * GB2312.TXT and UNIHAN.TXT table and in Koichi Yasuoka's Uni2GB table, * so we assume it's correct. * The unicode.org UNIHAN.TXT table about GB 8565 is not usable: it has * extraneous code points at rows 0x28, 0x2C, 0x2D. Note also that it does * not list the 69 non-hanzi in row 0x2F. Moreover, it has the characters * 0x2F7A-0x2F7D shifted down by one to 0x2F79-0x2F7C. * Therefore we take the GB8565 and ISO-IR-165 data from Koichi Yasuoka's * Uni2GB table. * Ad 1. Yasuoka maps 0x2367 to U+0261 (small script g) and 0x2840 to U+FF47 * (full-width small normal g). While coherent with ISO-IR's 165.pdf, * this disagrees with Ken Lunde's book: He says that ISO-IR-165 * includes the GB6345 correction, i.e. maps 0x2367 to U+FF47 or U+0067 * and _not_ to U+0261 (small script g). * To overcome the confusion, we just map both 0x2367 and 0x2840 to * U+FF47. * Ad 2. Row 0x28: Add a mapping from 0x283F to U+01F9. * Row 0x2A: Mapping is well-known, also present in Koichi Yasuoka's * table. * Row 0x2B: Typed in by hand from appendix E in Ken Lunde's book. * When converting from Unicode to ISO-IR-165, prefer the half-width * range 0x2B{21..40} to the full-width range 0x28{21..40}. * Ad 3. Rows 0x2D, 0x2E: Both Koichi Yasuoka's Uni2GB table and the UNIHAN.TXT * data for GB 8565 agree here. * Row 0x2F: Taken from Koichi Yasuoka's Uni2GB table. * Rows 0x7A-0x7E: Koichi Yasuoka's Uni2GB table and the UNIHAN.TXT * data for GB 8565 agree here mostly. Differences: * 0x7C38 -> U+6F26 or U+527A ? We choose U+6F26. * 0x7C5A -> U+7A40 or U+6996 ? We choose U+6996. * Ad 4. Row 0x26: Mapping unknown. * Rows 0x2C, 0x2D: Both Koichi Yasuoka's Uni2GB table and the UNIHAN.TXT * data for GB 8565 (!) agree here. * Row 0x2F: Taken from Koichi Yasuoka's Uni2GB table. */ #include "isoir165ext.h" static int isoir165_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { int ret; /* Map full-width pinyin (row 0x28) like half-width pinyin (row 0x2B). */ if (s[0] == 0x28) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 <= 0x40) { unsigned char buf[2]; buf[0] = 0x2b; buf[1] = c2; ret = isoir165ext_mbtowc(conv,pwc,buf,2); if (ret != RET_ILSEQ) return ret; } } } /* Try the GB2312 -> Unicode table. */ ret = gb2312_mbtowc(conv,pwc,s,n); if (ret != RET_ILSEQ) return ret; /* Row 0x2A is GB_1988-80. */ if (s[0] == 0x2a) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { int ret = iso646_cn_mbtowc(conv,pwc,s+1,1); if (ret != 1) abort(); return 2; } return RET_ILSEQ; } return RET_TOOFEW(0); } /* Try the ISO-IR-165 extensions -> Unicode table. */ ret = isoir165ext_mbtowc(conv,pwc,s,n); return ret; } static int isoir165_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[1]; int ret; /* Try the Unicode -> GB2312 table table. */ ret = gb2312_wctomb(conv,r,wc,n); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (!(r[0] == 0x28 && r[1] >= 0x21 && r[1] <= 0x40)) return ret; } /* Row 0x2A is GB_1988-80. */ ret = iso646_cn_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { if (ret != 1) abort(); if (buf[0] >= 0x21 && buf[0] < 0x7f) { if (n >= 2) { r[0] = 0x2a; r[1] = buf[0]; return 2; } return RET_TOOSMALL; } } /* Try the Unicode -> ISO-IR-165 extensions table. */ ret = isoir165ext_wctomb(conv,r,wc,n); return ret; } recode-3.6/libiconv/isoir165ext.h0100644000000000000000000013021007206266437015413 0ustar rootroot /* * ISO-IR-165 extensions */ static const unsigned short isoir165ext_2uni_page2b[470] = { /* 0x2b */ 0x1fb1, 0x03ac, 0x1fb0, 0x1f70, 0x0113, 0x00e9, 0x011b, 0x00e8, 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2, 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc, 0x00fc, 0x00ea, 0x03b1, 0x1e3f, 0x0144, 0x0148, 0x01f9, 0xff47, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x2c */ 0x53be, 0x4eb8, 0x4f3e, 0x501e, 0x50c7, 0x9118, 0x6c98, 0x6cdc, 0x6cc3, 0x6e5d, 0x6ea6, 0x6eeb, 0x6fa5, 0x6165, 0x5ea4, 0x9618, 0x5848, 0x8453, 0x7cf5, 0x5f07, 0x6294, 0x647d, 0x725a, 0x5574, 0x55a4, 0x5640, 0x5684, 0x5d1f, 0x72c9, 0x998c, 0x59de, 0x59fd, 0x5a5e, 0x7ebb, 0x7ee4, 0x7ef9, 0x9a99, 0x71cf, 0x6245, 0x624a, 0x797c, 0x739a, 0x742b, 0x7488, 0x74aa, 0x74d8, 0x6767, 0x6ab5, 0x71ca, 0x6ba3, 0x8f80, 0x8f92, 0x8d5f, 0x9b36, 0x72a8, 0x87a3, 0x8152, 0x6b38, 0x98d0, 0x8897, 0x88af, 0x8955, 0x770a, 0x94da, 0x955a, 0x9560, 0x9e24, 0x9e40, 0x9e50, 0x9e5d, 0x9e60, 0x870e, 0x7b5c, 0x7fd9, 0x7fef, 0x7e44, 0x8e45, 0x8e36, 0x8e62, 0x8e5c, 0x9778, 0x9b46, 0x9f2b, 0x9f41, 0x7526, 0x4e26, 0x8bac, 0x8129, 0x5091, 0x50cd, 0x52b9, 0x89d4, 0x5557, 0x94c7, /* 0x2d */ 0x9496, 0x9498, 0x94cf, 0x94d3, 0x94d4, 0x94e6, 0x9533, 0x951c, 0x9520, 0x9527, 0x953d, 0x9543, 0x956e, 0x9574, 0x9c80, 0x9c84, 0x9c8a, 0x9c93, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9cbf, 0x9cc0, 0x9cc1, 0x9cd2, 0x9cdb, 0x9ce0, 0x9ce3, 0x9770, 0x977a, 0x97a1, 0x97ae, 0x97a8, 0x9964, 0x9966, 0x9978, 0x9979, 0x997b, 0x997e, 0x9982, 0x9983, 0x998e, 0x9b10, 0x9b18, 0x65a2, 0x9e80, 0x911c, 0x9e91, 0x9f12, 0x52f3, 0x6c96, 0x6d44, 0x6e1b, 0x6e67, 0x6f82, 0x6fec, 0x60ae, 0x5ec8, 0x8ffa, 0x577f, 0x5586, 0x849e, 0x8460, 0x5c05, 0x5e0b, 0x5d11, 0x5d19, 0x5dd6, 0x59b3, 0x5aae, 0x9a94, 0x658f, 0x709e, 0x7551, 0x71ff, 0x691d, 0x6a11, 0x68bf, 0x6607, 0x668e, 0x6673, 0x6c25, 0x7652, 0x778b, 0x76ea, 0x9895, 0x8780, 0x882d, 0x7b87, 0x7c50, 0x8ead, 0x9575, 0x65c2, /* 0x2e */ 0x5390, 0x79b8, 0x4f15, 0x4f21, 0x4f3b, 0x4fa2, 0x50a4, 0x5092, 0x530a, 0x51c3, 0x51a8, 0x8d20, 0x5787, 0x579a, 0x5795, 0x57eb, 0x585d, 0x585a, 0x5871, 0x5895, 0x5c30, 0x5f0c, 0x5f0d, 0x5f0e, 0x5c72, 0x5cc7, 0x5fac, 0x5f68, 0x5f5f, 0x5a12, 0x5a65, 0x5a84, 0x5ac4, 0x7394, 0x73ea, 0x73ee, 0x7437, 0x7415, 0x7454, 0x6799, 0x686c, 0x68f8, 0x69fe, 0x72e2, 0x6667, 0x8d52, 0x89c3, 0x89cd, 0x6427, 0x6477, 0x6c1d, 0x813f, 0x6b54, 0x98d6, 0x707a, 0x70f1, 0x7120, 0x6153, 0x6c87, 0x6dad, 0x6e81, 0x6eb5, 0x6f94, 0x6f9b, 0x793d, 0x794e, 0x7806, 0x7859, 0x7894, 0x78dc, 0x7903, 0x7a16, 0x7a5e, 0x75e0, 0x7adc, 0x7676, 0x9892, 0x7bf2, 0x7c30, 0x7c5d, 0x9c9d, 0x7cac, 0x8278, 0x83d1, 0x84ea, 0x7fc0, 0x7f1e, 0x8e21, 0x8e53, 0x9754, 0x9f0c, 0x94fb, 0xfffd, 0xfffd, /* 0x2f */ 0x32c0, 0x32c1, 0x32c2, 0x32c3, 0x32c4, 0x32c5, 0x32c6, 0x32c7, 0x32c8, 0x32c9, 0x32ca, 0x32cb, 0x33e0, 0x33e1, 0x33e2, 0x33e3, 0x33e4, 0x33e5, 0x33e6, 0x33e7, 0x33e8, 0x33e9, 0x33ea, 0x33eb, 0x33ec, 0x33ed, 0x33ee, 0x33ef, 0x33f0, 0x33f1, 0x33f2, 0x33f3, 0x33f4, 0x33f5, 0x33f6, 0x33f7, 0x33f8, 0x33f9, 0x33fa, 0x33fb, 0x33fc, 0x33fd, 0x33fe, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c, 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364, 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c, 0x336d, 0x336e, 0x336f, 0x3370, 0x3037, 0x90a8, 0x965e, 0x5842, 0x5803, 0x6c3e, 0x6d29, 0x6ee7, 0x8534, 0x84c6, 0x633c, 0x5d05, 0x7f10, 0x7eec, 0x7287, 0x712e, 0x8218, 0x8216, 0x756c, 0x75f3, 0x9b25, 0x8980, 0x7ca6, 0x4e85, 0x5570, 0x91c6, }; static const unsigned short isoir165ext_2uni_page7a[470] = { /* 0x7a */ 0x4e0f, 0x673f, 0x4e42, 0x752a, 0x592c, 0x9ee1, 0x8652, 0x531c, 0x5187, 0x518f, 0x50f0, 0x4f0b, 0x4f23, 0x4f03, 0x4f61, 0x4f7a, 0x4f6b, 0x4feb, 0x4ff5, 0x5034, 0x5022, 0x4ff6, 0x5072, 0x4eb6, 0x51ae, 0x5910, 0x6bda, 0x522c, 0x5232, 0x4fb4, 0x5298, 0x52bb, 0x52bc, 0x52cd, 0x52da, 0x52f7, 0x53c6, 0x53c7, 0x5770, 0x576c, 0x57b1, 0x579f, 0x579e, 0x57be, 0x57cc, 0x580e, 0x580c, 0x57f5, 0x5809, 0x583c, 0x5843, 0x5845, 0x5846, 0x583d, 0x5853, 0x5888, 0x5884, 0x58f8, 0x56ad, 0x5940, 0x5953, 0x596d, 0x5c2a, 0x54a5, 0x551d, 0x5536, 0x556f, 0x554d, 0x569a, 0x569c, 0x56f7, 0x5710, 0x5719, 0x5e17, 0x5e21, 0x5e28, 0x5e6a, 0x5c74, 0x5c7c, 0x5ca8, 0x5c9e, 0x5cc3, 0x5cd3, 0x5ce3, 0x5ce7, 0x5cff, 0x5d04, 0x5d00, 0x5d1a, 0x5d0c, 0x5d4e, 0x5d5a, 0x5d85, 0x5d93, /* 0x7b */ 0x5d92, 0x5dc2, 0x5dc9, 0x8852, 0x5faf, 0x5906, 0x65a8, 0x7241, 0x7242, 0x5ebc, 0x5ecb, 0x95ec, 0x95ff, 0x8a1a, 0x9607, 0x9613, 0x961b, 0x5bac, 0x5ba7, 0x5c5d, 0x5f22, 0x59ee, 0x5a7c, 0x5a96, 0x5a73, 0x5a9e, 0x5aad, 0x5ada, 0x5aea, 0x5b1b, 0x5b56, 0x9a72, 0x9a83, 0x9a89, 0x9a8d, 0x9a8e, 0x9a95, 0x9aa6, 0x7395, 0x7399, 0x73a0, 0x73b1, 0x73a5, 0x73a6, 0x73d6, 0x73f0, 0x73fd, 0x73e3, 0x7424, 0x740e, 0x7407, 0x73f6, 0x73fa, 0x7432, 0x742f, 0x7444, 0x7442, 0x7471, 0x7478, 0x7462, 0x7486, 0x749f, 0x74a0, 0x7498, 0x74b2, 0x97e8, 0x6745, 0x679f, 0x677b, 0x67c8, 0x67ee, 0x684b, 0x68a0, 0x6812, 0x681f, 0x686a, 0x68bc, 0x68fb, 0x686f, 0x68b1, 0x68c1, 0x68eb, 0x6913, 0x68d1, 0x6911, 0x68d3, 0x68ec, 0x692b, 0x68e8, 0x69be, 0x6969, 0x6940, 0x696f, 0x695f, /* 0x7c */ 0x6962, 0x6935, 0x6959, 0x69bc, 0x69c5, 0x69da, 0x69dc, 0x6a0b, 0x69e5, 0x6a66, 0x6a96, 0x6ab4, 0x72dd, 0x5cf1, 0x7314, 0x733a, 0x6b95, 0x5f67, 0x80fe, 0x74fb, 0x7503, 0x655c, 0x6569, 0x6f26, 0x65f8, 0x65fb, 0x6609, 0x663d, 0x6662, 0x665e, 0x666c, 0x668d, 0x668b, 0x8d51, 0x8d57, 0x7263, 0x7277, 0x63b1, 0x6261, 0x6260, 0x6283, 0x62e4, 0x62c3, 0x631c, 0x6326, 0x63af, 0x63fe, 0x6422, 0x6412, 0x64ed, 0x6713, 0x6718, 0x8158, 0x81d1, 0x98cf, 0x98d4, 0x98d7, 0x6996, 0x7098, 0x70dc, 0x70fa, 0x710c, 0x711c, 0x71cb, 0x721f, 0x70dd, 0x659d, 0x6246, 0x6017, 0x60c7, 0x60d3, 0x60b0, 0x60d9, 0x6114, 0x6c3f, 0x6c67, 0x6c84, 0x6c9a, 0x6c6d, 0x6ca8, 0x6cc6, 0x6cb5, 0x6d49, 0x6d38, 0x6d11, 0x6d3a, 0x6d28, 0x6d50, 0x6d34, 0x6d55, 0x6d61, 0x6da2, 0x6d65, 0x6d5b, /* 0x7d */ 0x6d64, 0x6db4, 0x6e9a, 0x6e5c, 0x6e72, 0x6ea0, 0x6e87, 0x6e8e, 0x6ec9, 0x6ec3, 0x6f37, 0x6ed8, 0x6eea, 0x6f56, 0x6f75, 0x6f5f, 0x6fb4, 0x6fbc, 0x7014, 0x700d, 0x700c, 0x703c, 0x7943, 0x7947, 0x794a, 0x7950, 0x7972, 0x7998, 0x79a0, 0x79a4, 0x77fc, 0x77fb, 0x7822, 0x7820, 0x7841, 0x785a, 0x7875, 0x78b6, 0x78e1, 0x7933, 0x8a5f, 0x76fb, 0x771b, 0x772c, 0x7786, 0x77ab, 0x77ad, 0x7564, 0x756f, 0x6983, 0x7f7d, 0x76dd, 0x76e6, 0x76ec, 0x7521, 0x79fe, 0x7a44, 0x767f, 0x769e, 0x9e27, 0x9e2e, 0x9e30, 0x9e34, 0x9e4d, 0x9e52, 0x9e53, 0x9e54, 0x9e56, 0x9e59, 0x9e61, 0x9e62, 0x9e65, 0x9e6f, 0x9e74, 0x75a2, 0x7604, 0x7608, 0x761d, 0x7ad1, 0x7a85, 0x7a8e, 0x7aa3, 0x7ab8, 0x7abe, 0x77de, 0x8030, 0x988b, 0x988e, 0x9899, 0x98a3, 0x8683, 0x8705, 0x8758, 0x87cf, /* 0x7e */ 0x87e2, 0x880b, 0x80d4, 0x7f4d, 0x7b4a, 0x7b4e, 0x7b7f, 0x7b93, 0x7bef, 0x7c09, 0x7bf0, 0x7c15, 0x7c03, 0x7c20, 0x823a, 0x8886, 0x88aa, 0x88c0, 0x88c8, 0x8926, 0x8976, 0x7f91, 0x8283, 0x82bc, 0x82a7, 0x8313, 0x82fe, 0x8300, 0x835d, 0x8345, 0x8344, 0x831d, 0x83a6, 0x8399, 0x83fe, 0x841a, 0x83fc, 0x8429, 0x8439, 0x84a8, 0x84cf, 0x849f, 0x84c2, 0x84f7, 0x8570, 0x85b3, 0x85a2, 0x96d8, 0x85b8, 0x85e0, 0x7fda, 0x7eae, 0x7eb4, 0x7ebc, 0x7ed6, 0x7f0a, 0x5b43, 0x8d6a, 0x5245, 0x8c68, 0x8c6e, 0x8c6d, 0x8e16, 0x8e26, 0x8e27, 0x8e50, 0x9098, 0x90a0, 0x90bd, 0x90c8, 0x90c3, 0x90da, 0x90ff, 0x911a, 0x910c, 0x9120, 0x9142, 0x8fb5, 0x90e4, 0x8c86, 0x89f1, 0x8bb1, 0x8bbb, 0x8bc7, 0x8bea, 0x8c09, 0x8c1e, 0x9702, 0x68d0, 0x7306, 0x9f81, 0x9f82, 0x92c6, 0x9491, }; static int isoir165ext_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x2b && c1 <= 0x2f) || (c1 >= 0x7a && c1 <= 0x7e)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; if (i < 8366) { if (i < 1410) wc = isoir165ext_2uni_page2b[i-940]; } else { if (i < 8836) wc = isoir165ext_2uni_page7a[i-8366]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short isoir165ext_2charset[876] = { 0x2b28, 0x2b26, 0x2b3a, 0x2b2c, 0x2b2a, 0x2b30, 0x2b2e, 0x2b34, 0x2b32, 0x2b39, 0x2b25, 0x2b27, 0x2b29, 0x2b3d, 0x2b3e, 0x2b2d, 0x2b31, 0x2b2b, 0x2b2f, 0x2b33, 0x2b35, 0x2b36, 0x2b37, 0x2b38, 0x2b3f, 0x2b22, 0x2b3b, 0x2b3c, 0x2b24, 0x2b23, 0x2b21, 0x2f65, 0x2f21, 0x2f22, 0x2f23, 0x2f24, 0x2f25, 0x2f26, 0x2f27, 0x2f28, 0x2f29, 0x2f2a, 0x2f2b, 0x2f2c, 0x2f4c, 0x2f4d, 0x2f4e, 0x2f4f, 0x2f50, 0x2f51, 0x2f52, 0x2f53, 0x2f54, 0x2f55, 0x2f56, 0x2f57, 0x2f58, 0x2f59, 0x2f5a, 0x2f5b, 0x2f5c, 0x2f5d, 0x2f5e, 0x2f5f, 0x2f60, 0x2f61, 0x2f62, 0x2f63, 0x2f64, 0x2f2d, 0x2f2e, 0x2f2f, 0x2f30, 0x2f31, 0x2f32, 0x2f33, 0x2f34, 0x2f35, 0x2f36, 0x2f37, 0x2f38, 0x2f39, 0x2f3a, 0x2f3b, 0x2f3c, 0x2f3d, 0x2f3e, 0x2f3f, 0x2f40, 0x2f41, 0x2f42, 0x2f43, 0x2f44, 0x2f45, 0x2f46, 0x2f47, 0x2f48, 0x2f49, 0x2f4a, 0x2f4b, 0x7a21, 0x2c76, 0x7a23, 0x2f7c, 0x7a38, 0x2c22, 0x7a2e, 0x7a2c, 0x2e23, 0x2e24, 0x7a2d, 0x2e25, 0x2c23, 0x7a2f, 0x7a31, 0x7a30, 0x2e26, 0x7a3e, 0x7a32, 0x7a33, 0x7a36, 0x2c24, 0x7a35, 0x7a34, 0x7a37, 0x2c79, 0x2e28, 0x2e27, 0x2c25, 0x2c7a, 0x7a2b, 0x7a29, 0x7a2a, 0x2e2b, 0x7a39, 0x2e2a, 0x7a3c, 0x7a3d, 0x7e5b, 0x7a3f, 0x2c7b, 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x2d53, 0x7a44, 0x2e29, 0x7a28, 0x2e21, 0x2c21, 0x7a45, 0x7a46, 0x7a60, 0x7a61, 0x7a62, 0x7a64, 0x2c7d, 0x7a63, 0x2f7d, 0x2c38, 0x2d5e, 0x2c39, 0x2c3a, 0x2c3b, 0x7a65, 0x7a66, 0x7a5b, 0x7a67, 0x7a68, 0x7a69, 0x7a48, 0x7a47, 0x2d5d, 0x2e2d, 0x2e2f, 0x2e2e, 0x7a4b, 0x7a4a, 0x7a49, 0x7a4c, 0x7a4d, 0x2e30, 0x7a50, 0x2f69, 0x7a51, 0x7a4f, 0x7a4e, 0x7a52, 0x7a56, 0x2f68, 0x7a53, 0x7a54, 0x7a55, 0x2c31, 0x7a57, 0x2e32, 0x2e31, 0x2e33, 0x7a59, 0x7a58, 0x2e34, 0x7a5a, 0x7b26, 0x7a3a, 0x7a25, 0x7a5c, 0x7a5d, 0x7a5e, 0x2d66, 0x2c3f, 0x7b36, 0x2c40, 0x2e3e, 0x2c41, 0x2e3f, 0x7b39, 0x7b37, 0x2e40, 0x7b38, 0x7b3a, 0x7b3b, 0x2d67, 0x2e41, 0x7b3c, 0x7b3d, 0x7b3e, 0x7e59, 0x7b3f, 0x7b33, 0x7b32, 0x2d61, 0x7a5f, 0x2e35, 0x7b34, 0x2e39, 0x7a6e, 0x7a6f, 0x7a71, 0x7a70, 0x7a72, 0x2e3a, 0x7a73, 0x7a74, 0x7a75, 0x7c2e, 0x7a76, 0x7a78, 0x7a77, 0x2f70, 0x7a7a, 0x2d63, 0x2d64, 0x7a79, 0x2c3c, 0x7a7b, 0x7a7c, 0x7a7d, 0x7b21, 0x7a7e, 0x7b22, 0x7b23, 0x2d65, 0x2d62, 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x2c2f, 0x7b2a, 0x2d5b, 0x7b2b, 0x2c34, 0x2e36, 0x2e37, 0x2e38, 0x7b35, 0x2e3d, 0x7c32, 0x2e3c, 0x2e3b, 0x7b25, 0x7c65, 0x2d5a, 0x7c68, 0x7c66, 0x7c67, 0x7c69, 0x7c6a, 0x2e5a, 0x2c2e, 0x2c47, 0x7c64, 0x2c48, 0x7c48, 0x7c47, 0x7c49, 0x2c35, 0x7c4b, 0x7c4a, 0x7c4c, 0x7c4d, 0x2f6f, 0x7c4e, 0x7c46, 0x7c4f, 0x7c51, 0x7c50, 0x2e51, 0x2e52, 0x2c36, 0x7c52, 0x7c36, 0x7c37, 0x2d69, 0x7c63, 0x2d4e, 0x7b27, 0x2d7e, 0x7c39, 0x7c3a, 0x2d70, 0x7c3b, 0x7c3c, 0x7c3e, 0x7c3d, 0x2e4d, 0x7c3f, 0x2d72, 0x7c41, 0x7c40, 0x2d71, 0x7c53, 0x7c54, 0x7a22, 0x7b63, 0x2c4f, 0x7b65, 0x2e48, 0x7b64, 0x7b66, 0x7b67, 0x7b6a, 0x7b6b, 0x7b68, 0x7b6c, 0x2e49, 0x7b6f, 0x7b69, 0x7b70, 0x7b6d, 0x2d6f, 0x7b71, 0x7e79, 0x7b74, 0x7b76, 0x7b79, 0x7b72, 0x7b77, 0x2e4a, 0x7b6e, 0x7b75, 0x7b73, 0x2d6d, 0x7b78, 0x7c22, 0x7b7c, 0x7c23, 0x7b7e, 0x7c21, 0x7b7b, 0x7b7d, 0x7d52, 0x7c5a, 0x7c24, 0x7b7a, 0x7c25, 0x7c26, 0x7c27, 0x7c29, 0x2e4b, 0x7c28, 0x2d6e, 0x7c2a, 0x7c2b, 0x7c2c, 0x2c50, 0x2c5a, 0x2e55, 0x7c31, 0x2c52, 0x7a3b, 0x2e53, 0x2d73, 0x2f6a, 0x7c6b, 0x7c6c, 0x7c6f, 0x7c6d, 0x2e5b, 0x2d54, 0x2c27, 0x7c6e, 0x7c70, 0x7c72, 0x2c29, 0x7c71, 0x2c28, 0x7c75, 0x7c77, 0x2f6b, 0x7c79, 0x7c74, 0x7c76, 0x2d55, 0x7c73, 0x7c78, 0x7c7a, 0x7c7e, 0x7c7b, 0x7d21, 0x7c7d, 0x7c7c, 0x2e5c, 0x7d22, 0x2d56, 0x7d24, 0x2c2a, 0x2d57, 0x7d25, 0x2e5d, 0x7d27, 0x7d28, 0x7d23, 0x7d26, 0x2c2b, 0x2e5e, 0x7d2a, 0x7d29, 0x7d2c, 0x2f6c, 0x7d2d, 0x2c2c, 0x7c38, 0x7d2b, 0x7d2e, 0x7d30, 0x7d2f, 0x2d58, 0x2e5f, 0x2e60, 0x2c2d, 0x7d31, 0x7d32, 0x2d59, 0x7d35, 0x7d34, 0x7d33, 0x7d36, 0x2e57, 0x7c5b, 0x2d6a, 0x7c5c, 0x7c62, 0x2e58, 0x7c5d, 0x7c5e, 0x7c5f, 0x2e59, 0x2f74, 0x2c51, 0x7c60, 0x2c46, 0x2d6c, 0x7c61, 0x7b28, 0x7b29, 0x2c37, 0x7c44, 0x7c45, 0x2f73, 0x2c57, 0x2c3d, 0x7c2d, 0x2e4c, 0x7e7a, 0x7c2f, 0x7c30, 0x2e42, 0x7b47, 0x7b48, 0x2c4a, 0x7b49, 0x7b4b, 0x7b4c, 0x7b4a, 0x7b4d, 0x7b50, 0x2e43, 0x2e44, 0x7b4e, 0x7b54, 0x7b55, 0x7b4f, 0x7b53, 0x7b52, 0x2e46, 0x7b51, 0x2c4b, 0x7b57, 0x7b56, 0x2e45, 0x7b59, 0x7b58, 0x2e47, 0x7b5c, 0x7b5a, 0x7b5b, 0x7b5d, 0x2c4c, 0x7b60, 0x7b5e, 0x7b5f, 0x2c4d, 0x7b61, 0x2c4e, 0x7c34, 0x7c35, 0x7d57, 0x2c75, 0x7a24, 0x2d6b, 0x7d50, 0x2f77, 0x7d51, 0x7d6b, 0x2e6a, 0x2f78, 0x7d6c, 0x7d6d, 0x7d6e, 0x2d74, 0x2e6c, 0x7d5a, 0x7d5b, 0x7d54, 0x7d55, 0x2d76, 0x7d56, 0x7d4a, 0x2c5f, 0x7d4b, 0x7d4c, 0x7d4d, 0x2d75, 0x7d4e, 0x7d4f, 0x7d75, 0x7d40, 0x7d3f, 0x2e63, 0x7d42, 0x7d41, 0x7d43, 0x2e64, 0x7d44, 0x7d45, 0x2e65, 0x7d46, 0x2e66, 0x7d47, 0x2e67, 0x7d48, 0x2e61, 0x7d37, 0x7d38, 0x7d39, 0x2e62, 0x7d3a, 0x7d3b, 0x2c49, 0x7d3c, 0x7d3d, 0x7d3e, 0x2e22, 0x7d58, 0x2e68, 0x7d59, 0x2e69, 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d6f, 0x2e6b, 0x7e25, 0x7e26, 0x2c69, 0x7e27, 0x2d7a, 0x7e28, 0x7e29, 0x7e2b, 0x2e6e, 0x7e2d, 0x7e2a, 0x7e2c, 0x7e2e, 0x2e6f, 0x2d7b, 0x2e70, 0x2f7b, 0x2e72, 0x2c33, 0x2c6c, 0x7e54, 0x7e55, 0x2c42, 0x7e56, 0x7e57, 0x2c43, 0x2f72, 0x2c44, 0x7e58, 0x2f71, 0x2e77, 0x7e24, 0x7d53, 0x7e36, 0x2e76, 0x2c6a, 0x7e53, 0x2c6b, 0x7d76, 0x7e23, 0x7c33, 0x2c78, 0x2e54, 0x2c59, 0x7c55, 0x7c56, 0x2f76, 0x2f75, 0x7e2f, 0x2e73, 0x7e37, 0x7e39, 0x7e38, 0x7e3b, 0x7e3c, 0x7e3a, 0x7e40, 0x7e3f, 0x7e3e, 0x7e3d, 0x7e42, 0x7e41, 0x2e74, 0x7e45, 0x7e43, 0x7e44, 0x7e46, 0x7e47, 0x2c32, 0x2d60, 0x2d5f, 0x7e4a, 0x7e48, 0x7e4b, 0x2f6e, 0x7e49, 0x2e75, 0x7e4c, 0x2f6d, 0x7e4d, 0x7e4f, 0x7e4e, 0x7e51, 0x7e52, 0x7a27, 0x7d7b, 0x7d7c, 0x2c68, 0x7d7d, 0x2d78, 0x2c58, 0x7d7e, 0x7e21, 0x7e22, 0x2d79, 0x7b24, 0x7e30, 0x2c5c, 0x7e31, 0x2c5d, 0x7e32, 0x7e33, 0x7e34, 0x2c5e, 0x7e35, 0x2f7a, 0x2e4f, 0x2e50, 0x2c7c, 0x7e71, 0x7b2e, 0x7d49, 0x2c77, 0x7e72, 0x7e73, 0x7e74, 0x7e75, 0x7e76, 0x7e77, 0x7e5c, 0x7e5e, 0x7e5d, 0x7e70, 0x2e2c, 0x7c42, 0x2e4e, 0x7c43, 0x2c55, 0x7e5a, 0x7e5f, 0x2e78, 0x7e60, 0x7e61, 0x2c6e, 0x2c6d, 0x7e62, 0x2e79, 0x2c70, 0x2c6f, 0x2d7c, 0x2c53, 0x2c54, 0x7e6e, 0x2d5c, 0x7e63, 0x7e64, 0x2f66, 0x7e65, 0x7e67, 0x7e66, 0x7e68, 0x7e6f, 0x7e69, 0x7e6b, 0x2c26, 0x7e6a, 0x2d50, 0x7e6c, 0x7e6d, 0x2f7e, 0x7e7d, 0x7e7e, 0x2d21, 0x2d22, 0x2c7e, 0x2d23, 0x2d24, 0x2d25, 0x2c60, 0x2d26, 0x2e7c, 0x2d28, 0x2d29, 0x2d2a, 0x2d27, 0x2d2b, 0x2d2c, 0x2c61, 0x2c62, 0x2d2d, 0x2d2e, 0x2d7d, 0x7b2c, 0x7b2d, 0x7b2f, 0x7b30, 0x2c30, 0x7b31, 0x2f67, 0x7e50, 0x7e78, 0x2e7a, 0x2d3e, 0x2c71, 0x2d3f, 0x2d40, 0x2d42, 0x2d41, 0x7b62, 0x7d77, 0x7d78, 0x2e6d, 0x2d77, 0x7d79, 0x7d7a, 0x7c57, 0x2c5b, 0x7c58, 0x2e56, 0x7c59, 0x2d43, 0x2d44, 0x2d45, 0x2d46, 0x2d47, 0x2d48, 0x2d49, 0x2d4a, 0x2c3e, 0x2d4b, 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44, 0x2d68, 0x7b45, 0x2c45, 0x7b46, 0x2d4c, 0x2d4d, 0x2f79, 0x2c56, 0x2c72, 0x2d2f, 0x2d30, 0x2d31, 0x2d32, 0x2d33, 0x2d34, 0x2d35, 0x2d36, 0x2e71, 0x2d37, 0x2d38, 0x2d39, 0x2d3a, 0x2d3b, 0x2d3c, 0x2d3d, 0x2c63, 0x7d5c, 0x7d5d, 0x7d5e, 0x7d5f, 0x2c64, 0x7d60, 0x2c65, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x2c66, 0x2c67, 0x7d66, 0x7d67, 0x7d68, 0x7d69, 0x7d6a, 0x2d4f, 0x2d51, 0x7a26, 0x2e7b, 0x2d52, 0x2c73, 0x2c74, 0x7e7b, 0x7e7c, 0x2b40, }; static const Summary16 isoir165ext_uni2indx_page00[32] = { /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x3700 }, { 5, 0x160c }, /* 0x0100 */ { 10, 0x0000 }, { 10, 0x0808 }, { 12, 0x0800 }, { 13, 0x0000 }, { 13, 0x2110 }, { 16, 0x0000 }, { 16, 0x0800 }, { 17, 0x0000 }, { 17, 0x0000 }, { 17, 0x0000 }, { 17, 0x0000 }, { 17, 0x0000 }, { 17, 0x0000 }, { 17, 0x1555 }, { 24, 0x0000 }, { 24, 0x0200 }, }; static const Summary16 isoir165ext_uni2indx_page03[12] = { /* 0x0300 */ { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x1000 }, { 26, 0x0002 }, }; static const Summary16 isoir165ext_uni2indx_page1e[28] = { /* 0x1e00 */ { 27, 0x0000 }, { 27, 0x0000 }, { 27, 0x0000 }, { 27, 0x8000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, /* 0x1f00 */ { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0000 }, { 28, 0x0001 }, { 29, 0x0000 }, { 29, 0x0000 }, { 29, 0x0000 }, { 29, 0x0003 }, }; static const Summary16 isoir165ext_uni2indx_page30[4] = { /* 0x3000 */ { 31, 0x0000 }, { 31, 0x0000 }, { 31, 0x0000 }, { 31, 0x0080 }, }; static const Summary16 isoir165ext_uni2indx_page32[32] = { /* 0x3200 */ { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0000 }, { 32, 0x0fff }, { 44, 0x0000 }, { 44, 0x0000 }, { 44, 0x0000 }, /* 0x3300 */ { 44, 0x0000 }, { 44, 0x0000 }, { 44, 0x0000 }, { 44, 0x0000 }, { 44, 0x0000 }, { 44, 0xff00 }, { 52, 0xffff }, { 68, 0x0001 }, { 69, 0x0000 }, { 69, 0x0000 }, { 69, 0x0000 }, { 69, 0x0000 }, { 69, 0x0000 }, { 69, 0x0000 }, { 69, 0xffff }, { 85, 0x7fff }, }; static const Summary16 isoir165ext_uni2indx_page4e[752] = { /* 0x4e00 */ { 100, 0x8000 }, { 101, 0x0000 }, { 101, 0x0040 }, { 102, 0x0000 }, { 102, 0x0004 }, { 103, 0x0000 }, { 103, 0x0000 }, { 103, 0x0000 }, { 103, 0x0020 }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x0140 }, { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x0000 }, { 106, 0x0000 }, /* 0x4f00 */ { 106, 0x0808 }, { 108, 0x0020 }, { 109, 0x000a }, { 111, 0x4800 }, { 113, 0x0000 }, { 113, 0x0000 }, { 113, 0x0802 }, { 115, 0x0400 }, { 116, 0x0000 }, { 116, 0x0000 }, { 116, 0x0004 }, { 117, 0x0010 }, { 118, 0x0000 }, { 118, 0x0000 }, { 118, 0x0800 }, { 119, 0x0060 }, /* 0x5000 */ { 121, 0x0000 }, { 121, 0x4000 }, { 122, 0x0004 }, { 123, 0x0010 }, { 124, 0x0000 }, { 124, 0x0000 }, { 124, 0x0000 }, { 124, 0x0004 }, { 125, 0x0000 }, { 125, 0x0006 }, { 127, 0x0010 }, { 128, 0x0000 }, { 128, 0x2080 }, { 130, 0x0000 }, { 130, 0x0000 }, { 130, 0x0001 }, /* 0x5100 */ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x8080 }, { 133, 0x0000 }, { 133, 0x4100 }, { 135, 0x0000 }, { 135, 0x0008 }, { 136, 0x0000 }, { 136, 0x0000 }, { 136, 0x0000 }, /* 0x5200 */ { 136, 0x0000 }, { 136, 0x0000 }, { 136, 0x1000 }, { 137, 0x0004 }, { 138, 0x0020 }, { 139, 0x0000 }, { 139, 0x0000 }, { 139, 0x0000 }, { 139, 0x0000 }, { 139, 0x0100 }, { 140, 0x0000 }, { 140, 0x1a00 }, { 143, 0x2000 }, { 144, 0x0400 }, { 145, 0x0000 }, { 145, 0x0088 }, /* 0x5300 */ { 147, 0x0400 }, { 148, 0x1000 }, { 149, 0x0000 }, { 149, 0x0000 }, { 149, 0x0000 }, { 149, 0x0000 }, { 149, 0x0000 }, { 149, 0x0000 }, { 149, 0x0000 }, { 149, 0x0001 }, { 150, 0x0000 }, { 150, 0x4000 }, { 151, 0x00c0 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, /* 0x5400 */ { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0000 }, { 153, 0x0020 }, { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0000 }, { 154, 0x0000 }, /* 0x5500 */ { 154, 0x0000 }, { 154, 0x2000 }, { 155, 0x0000 }, { 155, 0x0040 }, { 156, 0x2000 }, { 157, 0x0080 }, { 158, 0x8000 }, { 159, 0x0011 }, { 161, 0x0040 }, { 162, 0x0000 }, { 162, 0x0010 }, { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0000 }, /* 0x5600 */ { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0000 }, { 163, 0x0001 }, { 164, 0x0000 }, { 164, 0x0000 }, { 164, 0x0000 }, { 164, 0x0010 }, { 165, 0x1400 }, { 167, 0x2000 }, { 168, 0x0000 }, { 168, 0x0000 }, { 168, 0x0000 }, { 168, 0x0000 }, { 168, 0x0080 }, /* 0x5700 */ { 169, 0x0000 }, { 169, 0x0201 }, { 171, 0x0000 }, { 171, 0x0000 }, { 171, 0x0000 }, { 171, 0x0000 }, { 171, 0x1000 }, { 172, 0x8001 }, { 174, 0x0080 }, { 175, 0xc420 }, { 179, 0x0000 }, { 179, 0x4002 }, { 181, 0x1000 }, { 182, 0x0000 }, { 182, 0x0800 }, { 183, 0x0020 }, /* 0x5800 */ { 184, 0x5208 }, { 188, 0x0000 }, { 188, 0x0000 }, { 188, 0x3000 }, { 190, 0x016c }, { 195, 0x2408 }, { 198, 0x0000 }, { 198, 0x0002 }, { 199, 0x0110 }, { 201, 0x0020 }, { 202, 0x0000 }, { 202, 0x0000 }, { 202, 0x0000 }, { 202, 0x0000 }, { 202, 0x0000 }, { 202, 0x0100 }, /* 0x5900 */ { 203, 0x0040 }, { 204, 0x0001 }, { 205, 0x1000 }, { 206, 0x0000 }, { 206, 0x0001 }, { 207, 0x0008 }, { 208, 0x2000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0008 }, { 210, 0x0000 }, { 210, 0x4000 }, { 211, 0x4000 }, { 212, 0x2000 }, /* 0x5a00 */ { 213, 0x0000 }, { 213, 0x0004 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x4000 }, { 215, 0x0020 }, { 216, 0x1008 }, { 218, 0x0010 }, { 219, 0x4040 }, { 221, 0x6000 }, { 223, 0x0000 }, { 223, 0x0010 }, { 224, 0x0400 }, { 225, 0x0400 }, { 226, 0x0000 }, /* 0x5b00 */ { 226, 0x0000 }, { 226, 0x0800 }, { 227, 0x0000 }, { 227, 0x0000 }, { 227, 0x0008 }, { 228, 0x0040 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x0000 }, { 229, 0x1080 }, { 231, 0x0000 }, { 231, 0x0000 }, { 231, 0x0000 }, { 231, 0x0000 }, { 231, 0x0000 }, /* 0x5c00 */ { 231, 0x0020 }, { 232, 0x0000 }, { 232, 0x0400 }, { 233, 0x0001 }, { 234, 0x0000 }, { 234, 0x2000 }, { 235, 0x0000 }, { 235, 0x1014 }, { 238, 0x0000 }, { 238, 0x4000 }, { 239, 0x0100 }, { 240, 0x0000 }, { 240, 0x0088 }, { 242, 0x0008 }, { 243, 0x0088 }, { 245, 0x8002 }, /* 0x5d00 */ { 247, 0x1031 }, { 251, 0x8602 }, { 255, 0x0000 }, { 255, 0x0000 }, { 255, 0x4000 }, { 256, 0x0400 }, { 257, 0x0000 }, { 257, 0x0000 }, { 257, 0x0020 }, { 258, 0x000c }, { 260, 0x0000 }, { 260, 0x0000 }, { 260, 0x0204 }, { 262, 0x0040 }, { 263, 0x0000 }, { 263, 0x0000 }, /* 0x5e00 */ { 263, 0x0800 }, { 264, 0x0080 }, { 265, 0x0102 }, { 267, 0x0000 }, { 267, 0x0000 }, { 267, 0x0000 }, { 267, 0x0400 }, { 268, 0x0000 }, { 268, 0x0000 }, { 268, 0x0000 }, { 268, 0x0010 }, { 269, 0x1000 }, { 270, 0x0900 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, /* 0x5f00 */ { 272, 0x7080 }, { 276, 0x0000 }, { 276, 0x0004 }, { 277, 0x0000 }, { 277, 0x0000 }, { 277, 0x8000 }, { 278, 0x0180 }, { 280, 0x0000 }, { 280, 0x0000 }, { 280, 0x0000 }, { 280, 0x9000 }, { 282, 0x0000 }, { 282, 0x0000 }, { 282, 0x0000 }, { 282, 0x0000 }, { 282, 0x0000 }, /* 0x6000 */ { 282, 0x0000 }, { 282, 0x0080 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x0000 }, { 283, 0x4000 }, { 284, 0x0001 }, { 285, 0x0080 }, { 286, 0x0208 }, { 288, 0x0000 }, { 288, 0x0000 }, /* 0x6100 */ { 288, 0x0000 }, { 288, 0x0010 }, { 289, 0x0000 }, { 289, 0x0000 }, { 289, 0x0000 }, { 289, 0x0008 }, { 290, 0x0020 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, /* 0x6200 */ { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0000 }, { 291, 0x0460 }, { 294, 0x0000 }, { 294, 0x0003 }, { 296, 0x0000 }, { 296, 0x0008 }, { 297, 0x0010 }, { 298, 0x0000 }, { 298, 0x0000 }, { 298, 0x0008 }, { 299, 0x0000 }, { 299, 0x0010 }, { 300, 0x0000 }, /* 0x6300 */ { 300, 0x0000 }, { 300, 0x1000 }, { 301, 0x0040 }, { 302, 0x1000 }, { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x0000 }, { 303, 0x8000 }, { 304, 0x0002 }, { 305, 0x0000 }, { 305, 0x0000 }, { 305, 0x0000 }, { 305, 0x4000 }, /* 0x6400 */ { 306, 0x0000 }, { 306, 0x0004 }, { 307, 0x0084 }, { 309, 0x0000 }, { 309, 0x0000 }, { 309, 0x0000 }, { 309, 0x0000 }, { 309, 0x2080 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x0000 }, { 311, 0x2000 }, { 312, 0x0000 }, /* 0x6500 */ { 312, 0x0000 }, { 312, 0x0000 }, { 312, 0x0000 }, { 312, 0x0000 }, { 312, 0x0000 }, { 312, 0x1000 }, { 313, 0x0200 }, { 314, 0x0000 }, { 314, 0x8000 }, { 315, 0x2000 }, { 316, 0x0104 }, { 318, 0x0000 }, { 318, 0x0004 }, { 319, 0x0000 }, { 319, 0x0000 }, { 319, 0x0900 }, /* 0x6600 */ { 321, 0x0280 }, { 323, 0x0000 }, { 323, 0x0000 }, { 323, 0x2000 }, { 324, 0x0000 }, { 324, 0x4000 }, { 325, 0x1084 }, { 328, 0x0008 }, { 329, 0x6800 }, { 332, 0x0000 }, { 332, 0x0000 }, { 332, 0x0000 }, { 332, 0x0000 }, { 332, 0x0000 }, { 332, 0x0000 }, { 332, 0x0000 }, /* 0x6700 */ { 332, 0x0000 }, { 332, 0x0108 }, { 334, 0x0000 }, { 334, 0x8000 }, { 335, 0x0020 }, { 336, 0x0000 }, { 336, 0x0080 }, { 337, 0x0800 }, { 338, 0x0000 }, { 338, 0x8200 }, { 340, 0x0000 }, { 340, 0x0000 }, { 340, 0x0100 }, { 341, 0x0000 }, { 341, 0x4000 }, { 342, 0x0000 }, /* 0x6800 */ { 342, 0x0000 }, { 342, 0x8004 }, { 344, 0x0000 }, { 344, 0x0000 }, { 344, 0x0800 }, { 345, 0x0000 }, { 345, 0x9400 }, { 348, 0x0000 }, { 348, 0x0000 }, { 348, 0x0000 }, { 348, 0x0001 }, { 349, 0x9002 }, { 352, 0x0002 }, { 353, 0x000b }, { 356, 0x1900 }, { 359, 0x0900 }, /* 0x6900 */ { 361, 0x0000 }, { 361, 0x200a }, { 364, 0x0800 }, { 365, 0x0020 }, { 366, 0x0001 }, { 367, 0x8200 }, { 369, 0x8204 }, { 372, 0x0000 }, { 372, 0x0008 }, { 373, 0x0040 }, { 374, 0x0000 }, { 374, 0x5000 }, { 376, 0x0020 }, { 377, 0x1400 }, { 379, 0x0020 }, { 380, 0x4000 }, /* 0x6a00 */ { 381, 0x0800 }, { 382, 0x0002 }, { 383, 0x0000 }, { 383, 0x0000 }, { 383, 0x0000 }, { 383, 0x0000 }, { 383, 0x0040 }, { 384, 0x0000 }, { 384, 0x0000 }, { 384, 0x0040 }, { 385, 0x0000 }, { 385, 0x0030 }, { 387, 0x0000 }, { 387, 0x0000 }, { 387, 0x0000 }, { 387, 0x0000 }, /* 0x6b00 */ { 387, 0x0000 }, { 387, 0x0000 }, { 387, 0x0000 }, { 387, 0x0100 }, { 388, 0x0000 }, { 388, 0x0010 }, { 389, 0x0000 }, { 389, 0x0000 }, { 389, 0x0000 }, { 389, 0x0020 }, { 390, 0x0008 }, { 391, 0x0000 }, { 391, 0x0000 }, { 391, 0x0400 }, { 392, 0x0000 }, { 392, 0x0000 }, /* 0x6c00 */ { 392, 0x0000 }, { 392, 0x2000 }, { 393, 0x0020 }, { 394, 0xc000 }, { 396, 0x0000 }, { 396, 0x0000 }, { 396, 0x2080 }, { 398, 0x0000 }, { 398, 0x0090 }, { 400, 0x0540 }, { 403, 0x0100 }, { 404, 0x0020 }, { 405, 0x0048 }, { 407, 0x1000 }, { 408, 0x0000 }, { 408, 0x0000 }, /* 0x6d00 */ { 408, 0x0000 }, { 408, 0x0002 }, { 409, 0x0300 }, { 411, 0x0510 }, { 414, 0x0210 }, { 416, 0x0821 }, { 419, 0x0032 }, { 422, 0x0000 }, { 422, 0x0000 }, { 422, 0x0000 }, { 422, 0x2004 }, { 424, 0x0010 }, { 425, 0x0000 }, { 425, 0x0000 }, { 425, 0x0000 }, { 425, 0x0000 }, /* 0x6e00 */ { 425, 0x0000 }, { 425, 0x0800 }, { 426, 0x0000 }, { 426, 0x0000 }, { 426, 0x0000 }, { 426, 0x3000 }, { 428, 0x0080 }, { 429, 0x0004 }, { 430, 0x4082 }, { 433, 0x0400 }, { 434, 0x0041 }, { 436, 0x0020 }, { 437, 0x0208 }, { 439, 0x0100 }, { 440, 0x0c80 }, { 443, 0x0000 }, /* 0x6f00 */ { 443, 0x0000 }, { 443, 0x0000 }, { 443, 0x0040 }, { 444, 0x0080 }, { 445, 0x0000 }, { 445, 0x8040 }, { 447, 0x0000 }, { 447, 0x0020 }, { 448, 0x0004 }, { 449, 0x0810 }, { 451, 0x0020 }, { 452, 0x1010 }, { 454, 0x0000 }, { 454, 0x0000 }, { 454, 0x1000 }, { 455, 0x0000 }, /* 0x7000 */ { 455, 0x3000 }, { 457, 0x0010 }, { 458, 0x0000 }, { 458, 0x1000 }, { 459, 0x0000 }, { 459, 0x0000 }, { 459, 0x0000 }, { 459, 0x0400 }, { 460, 0x0000 }, { 460, 0x4100 }, { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x3000 }, { 464, 0x0000 }, { 464, 0x0402 }, /* 0x7100 */ { 466, 0x1000 }, { 467, 0x1000 }, { 468, 0x4001 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x0000 }, { 470, 0x8c00 }, { 473, 0x0000 }, { 473, 0x0000 }, { 473, 0x8000 }, /* 0x7200 */ { 474, 0x0000 }, { 474, 0x8000 }, { 475, 0x0000 }, { 475, 0x0000 }, { 475, 0x0006 }, { 477, 0x0400 }, { 478, 0x0008 }, { 479, 0x0080 }, { 480, 0x0080 }, { 481, 0x0000 }, { 481, 0x0100 }, { 482, 0x0000 }, { 482, 0x0200 }, { 483, 0x2000 }, { 484, 0x0004 }, { 485, 0x0000 }, /* 0x7300 */ { 485, 0x0040 }, { 486, 0x0010 }, { 487, 0x0000 }, { 487, 0x0400 }, { 488, 0x0000 }, { 488, 0x0000 }, { 488, 0x0000 }, { 488, 0x0000 }, { 488, 0x0000 }, { 488, 0x0630 }, { 492, 0x0061 }, { 495, 0x0002 }, { 496, 0x0000 }, { 496, 0x0040 }, { 497, 0x4408 }, { 500, 0x2441 }, /* 0x7400 */ { 504, 0x4080 }, { 506, 0x0020 }, { 507, 0x8810 }, { 510, 0x0084 }, { 512, 0x0014 }, { 514, 0x0010 }, { 515, 0x0004 }, { 516, 0x0102 }, { 518, 0x0140 }, { 520, 0x8100 }, { 522, 0x0401 }, { 524, 0x0004 }, { 525, 0x0000 }, { 525, 0x0100 }, { 526, 0x0000 }, { 526, 0x0800 }, /* 0x7500 */ { 527, 0x0008 }, { 528, 0x0000 }, { 528, 0x0442 }, { 531, 0x0000 }, { 531, 0x0000 }, { 531, 0x0002 }, { 532, 0x9010 }, { 535, 0x0000 }, { 535, 0x0000 }, { 535, 0x0000 }, { 535, 0x0004 }, { 536, 0x0000 }, { 536, 0x0000 }, { 536, 0x0000 }, { 536, 0x0001 }, { 537, 0x0008 }, /* 0x7600 */ { 538, 0x0110 }, { 540, 0x2000 }, { 541, 0x0000 }, { 541, 0x0000 }, { 541, 0x0000 }, { 541, 0x0004 }, { 542, 0x0000 }, { 542, 0x8040 }, { 544, 0x0000 }, { 544, 0x4000 }, { 545, 0x0000 }, { 545, 0x0000 }, { 545, 0x0000 }, { 545, 0x2000 }, { 546, 0x1440 }, { 549, 0x0800 }, /* 0x7700 */ { 550, 0x0400 }, { 551, 0x0800 }, { 552, 0x1000 }, { 553, 0x0000 }, { 553, 0x0000 }, { 553, 0x0000 }, { 553, 0x0000 }, { 553, 0x0000 }, { 553, 0x0840 }, { 555, 0x0000 }, { 555, 0x2800 }, { 557, 0x0000 }, { 557, 0x0000 }, { 557, 0x4000 }, { 558, 0x0000 }, { 558, 0x1800 }, /* 0x7800 */ { 560, 0x0040 }, { 561, 0x0000 }, { 561, 0x0005 }, { 563, 0x0000 }, { 563, 0x0002 }, { 564, 0x0600 }, { 566, 0x0000 }, { 566, 0x0020 }, { 567, 0x0000 }, { 567, 0x0010 }, { 568, 0x0000 }, { 568, 0x0040 }, { 569, 0x0000 }, { 569, 0x1000 }, { 570, 0x0002 }, { 571, 0x0000 }, /* 0x7900 */ { 571, 0x0008 }, { 572, 0x0000 }, { 572, 0x0000 }, { 572, 0x2008 }, { 574, 0x4488 }, { 578, 0x0001 }, { 579, 0x0000 }, { 579, 0x1004 }, { 581, 0x0000 }, { 581, 0x0100 }, { 582, 0x0011 }, { 584, 0x0100 }, { 585, 0x0000 }, { 585, 0x0000 }, { 585, 0x0000 }, { 585, 0x4000 }, /* 0x7a00 */ { 586, 0x0000 }, { 586, 0x0040 }, { 587, 0x0000 }, { 587, 0x0000 }, { 587, 0x0010 }, { 588, 0x4000 }, { 589, 0x0000 }, { 589, 0x0000 }, { 589, 0x4020 }, { 591, 0x0000 }, { 591, 0x0008 }, { 592, 0x4100 }, { 594, 0x0000 }, { 594, 0x1002 }, { 596, 0x0000 }, { 596, 0x0000 }, /* 0x7b00 */ { 596, 0x0000 }, { 596, 0x0000 }, { 596, 0x0000 }, { 596, 0x0000 }, { 596, 0x4400 }, { 598, 0x1000 }, { 599, 0x0000 }, { 599, 0x8000 }, { 600, 0x0080 }, { 601, 0x0008 }, { 602, 0x0000 }, { 602, 0x0000 }, { 602, 0x0000 }, { 602, 0x0000 }, { 602, 0x8000 }, { 603, 0x0005 }, /* 0x7c00 */ { 605, 0x0208 }, { 607, 0x0020 }, { 608, 0x0001 }, { 609, 0x0001 }, { 610, 0x0000 }, { 610, 0x2001 }, { 612, 0x0000 }, { 612, 0x0000 }, { 612, 0x0000 }, { 612, 0x0000 }, { 612, 0x1040 }, { 614, 0x0000 }, { 614, 0x0000 }, { 614, 0x0000 }, { 614, 0x0000 }, { 614, 0x0020 }, }; static const Summary16 isoir165ext_uni2indx_page7e[333] = { /* 0x7e00 */ { 615, 0x0000 }, { 615, 0x0000 }, { 615, 0x0000 }, { 615, 0x0000 }, { 615, 0x0010 }, { 616, 0x0000 }, { 616, 0x0000 }, { 616, 0x0000 }, { 616, 0x0000 }, { 616, 0x0000 }, { 616, 0x4000 }, { 617, 0x1810 }, { 620, 0x0000 }, { 620, 0x0040 }, { 621, 0x1010 }, { 623, 0x0200 }, /* 0x7f00 */ { 624, 0x0400 }, { 625, 0x4001 }, { 627, 0x0000 }, { 627, 0x0000 }, { 627, 0x2000 }, { 628, 0x0000 }, { 628, 0x0000 }, { 628, 0x2000 }, { 629, 0x0000 }, { 629, 0x0002 }, { 630, 0x0000 }, { 630, 0x0000 }, { 630, 0x0001 }, { 631, 0x0600 }, { 633, 0x8000 }, { 634, 0x0000 }, /* 0x8000 */ { 634, 0x0000 }, { 634, 0x0000 }, { 634, 0x0000 }, { 634, 0x0001 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0000 }, { 635, 0x0010 }, { 636, 0x0000 }, { 636, 0x4000 }, /* 0x8100 */ { 637, 0x0000 }, { 637, 0x0000 }, { 637, 0x0200 }, { 638, 0x8000 }, { 639, 0x0000 }, { 639, 0x0104 }, { 641, 0x0000 }, { 641, 0x0000 }, { 641, 0x0000 }, { 641, 0x0000 }, { 641, 0x0000 }, { 641, 0x0000 }, { 641, 0x0000 }, { 641, 0x0002 }, { 642, 0x0000 }, { 642, 0x0000 }, /* 0x8200 */ { 642, 0x0000 }, { 642, 0x0140 }, { 644, 0x0000 }, { 644, 0x0400 }, { 645, 0x0000 }, { 645, 0x0000 }, { 645, 0x0000 }, { 645, 0x0100 }, { 646, 0x0008 }, { 647, 0x0000 }, { 647, 0x0080 }, { 648, 0x1000 }, { 649, 0x0000 }, { 649, 0x0000 }, { 649, 0x0000 }, { 649, 0x4000 }, /* 0x8300 */ { 650, 0x0001 }, { 651, 0x2008 }, { 653, 0x0000 }, { 653, 0x0000 }, { 653, 0x0030 }, { 655, 0x2000 }, { 656, 0x0000 }, { 656, 0x0000 }, { 656, 0x0000 }, { 656, 0x0200 }, { 657, 0x0040 }, { 658, 0x0000 }, { 658, 0x0000 }, { 658, 0x0002 }, { 659, 0x0000 }, { 659, 0x5000 }, /* 0x8400 */ { 661, 0x0000 }, { 661, 0x0400 }, { 662, 0x0200 }, { 663, 0x0200 }, { 664, 0x0000 }, { 664, 0x0008 }, { 665, 0x0001 }, { 666, 0x0000 }, { 666, 0x0000 }, { 666, 0xc000 }, { 668, 0x0100 }, { 669, 0x0000 }, { 669, 0x8044 }, { 672, 0x0000 }, { 672, 0x0400 }, { 673, 0x0080 }, /* 0x8500 */ { 674, 0x0000 }, { 674, 0x0000 }, { 674, 0x0000 }, { 674, 0x0010 }, { 675, 0x0000 }, { 675, 0x0000 }, { 675, 0x0000 }, { 675, 0x0001 }, { 676, 0x0000 }, { 676, 0x0000 }, { 676, 0x0004 }, { 677, 0x0108 }, { 679, 0x0000 }, { 679, 0x0000 }, { 679, 0x0001 }, { 680, 0x0000 }, /* 0x8600 */ { 680, 0x0000 }, { 680, 0x0000 }, { 680, 0x0000 }, { 680, 0x0000 }, { 680, 0x0000 }, { 680, 0x0004 }, { 681, 0x0000 }, { 681, 0x0000 }, { 681, 0x0008 }, { 682, 0x0000 }, { 682, 0x0000 }, { 682, 0x0000 }, { 682, 0x0000 }, { 682, 0x0000 }, { 682, 0x0000 }, { 682, 0x0000 }, /* 0x8700 */ { 682, 0x4020 }, { 684, 0x0000 }, { 684, 0x0000 }, { 684, 0x0000 }, { 684, 0x0000 }, { 684, 0x0100 }, { 685, 0x0000 }, { 685, 0x0000 }, { 685, 0x0001 }, { 686, 0x0000 }, { 686, 0x0008 }, { 687, 0x0000 }, { 687, 0x8000 }, { 688, 0x0000 }, { 688, 0x0004 }, { 689, 0x0000 }, /* 0x8800 */ { 689, 0x0800 }, { 690, 0x0000 }, { 690, 0x2000 }, { 691, 0x0000 }, { 691, 0x0000 }, { 691, 0x0004 }, { 692, 0x0000 }, { 692, 0x0000 }, { 692, 0x0040 }, { 693, 0x0080 }, { 694, 0x8400 }, { 696, 0x0000 }, { 696, 0x0101 }, { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0000 }, /* 0x8900 */ { 698, 0x0000 }, { 698, 0x0000 }, { 698, 0x0040 }, { 699, 0x0000 }, { 699, 0x0000 }, { 699, 0x0020 }, { 700, 0x0000 }, { 700, 0x0040 }, { 701, 0x0001 }, { 702, 0x0000 }, { 702, 0x0000 }, { 702, 0x0000 }, { 702, 0x2008 }, { 704, 0x0010 }, { 705, 0x0000 }, { 705, 0x0002 }, /* 0x8a00 */ { 706, 0x0000 }, { 706, 0x0400 }, { 707, 0x0000 }, { 707, 0x0000 }, { 707, 0x0000 }, { 707, 0x8000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, /* 0x8b00 */ { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x1000 }, { 709, 0x0802 }, { 711, 0x0080 }, { 712, 0x0000 }, { 712, 0x0400 }, { 713, 0x0000 }, /* 0x8c00 */ { 713, 0x0200 }, { 714, 0x4000 }, { 715, 0x0000 }, { 715, 0x0000 }, { 715, 0x0000 }, { 715, 0x0000 }, { 715, 0x6100 }, { 718, 0x0000 }, { 718, 0x0040 }, { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0000 }, /* 0x8d00 */ { 719, 0x0000 }, { 719, 0x0000 }, { 719, 0x0001 }, { 720, 0x0000 }, { 720, 0x0000 }, { 720, 0x8086 }, { 724, 0x0400 }, { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, { 725, 0x0000 }, /* 0x8e00 */ { 725, 0x0000 }, { 725, 0x0040 }, { 726, 0x00c2 }, { 729, 0x0040 }, { 730, 0x0020 }, { 731, 0x1009 }, { 734, 0x0004 }, { 735, 0x0000 }, { 735, 0x0000 }, { 735, 0x0000 }, { 735, 0x2000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, /* 0x8f00 */ { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0000 }, { 736, 0x0001 }, { 737, 0x0004 }, { 738, 0x0000 }, { 738, 0x0020 }, { 739, 0x0000 }, { 739, 0x0000 }, { 739, 0x0000 }, { 739, 0x0400 }, /* 0x9000 */ { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0000 }, { 740, 0x0100 }, { 741, 0x0101 }, { 743, 0x2000 }, { 744, 0x0108 }, { 746, 0x0400 }, { 747, 0x0010 }, { 748, 0x8000 }, /* 0x9100 */ { 749, 0x1000 }, { 750, 0x1500 }, { 753, 0x0001 }, { 754, 0x0000 }, { 754, 0x0004 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0000 }, { 755, 0x0040 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, /* 0x9200 */ { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0000 }, { 756, 0x0040 }, }; static const Summary16 isoir165ext_uni2indx_page94[143] = { /* 0x9400 */ { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0000 }, { 757, 0x0142 }, { 760, 0x0000 }, { 760, 0x0000 }, { 760, 0x8080 }, { 762, 0x0418 }, { 765, 0x0040 }, { 766, 0x0800 }, /* 0x9500 */ { 767, 0x0000 }, { 767, 0x1000 }, { 768, 0x0081 }, { 770, 0x2008 }, { 772, 0x0008 }, { 773, 0x0400 }, { 774, 0x4001 }, { 776, 0x0030 }, { 778, 0x0000 }, { 778, 0x0000 }, { 778, 0x0000 }, { 778, 0x0000 }, { 778, 0x0000 }, { 778, 0x0000 }, { 778, 0x1000 }, { 779, 0x8000 }, /* 0x9600 */ { 780, 0x0080 }, { 781, 0x0908 }, { 784, 0x0000 }, { 784, 0x0000 }, { 784, 0x0000 }, { 784, 0x4000 }, { 785, 0x0000 }, { 785, 0x0000 }, { 785, 0x0000 }, { 785, 0x0000 }, { 785, 0x0000 }, { 785, 0x0000 }, { 785, 0x0000 }, { 785, 0x0100 }, { 786, 0x0000 }, { 786, 0x0000 }, /* 0x9700 */ { 786, 0x0004 }, { 787, 0x0000 }, { 787, 0x0000 }, { 787, 0x0000 }, { 787, 0x0000 }, { 787, 0x0010 }, { 788, 0x0000 }, { 788, 0x0501 }, { 791, 0x0000 }, { 791, 0x0000 }, { 791, 0x4102 }, { 794, 0x0000 }, { 794, 0x0000 }, { 794, 0x0000 }, { 794, 0x0100 }, { 795, 0x0000 }, /* 0x9800 */ { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x0000 }, { 795, 0x4800 }, { 797, 0x0224 }, { 800, 0x0008 }, { 801, 0x0000 }, { 801, 0x8000 }, { 802, 0x00d1 }, { 806, 0x0000 }, { 806, 0x0000 }, /* 0x9900 */ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0050 }, { 808, 0x4b00 }, { 812, 0x500c }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, /* 0x9a00 */ { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0000 }, { 816, 0x0004 }, { 817, 0x6208 }, { 821, 0x0230 }, { 824, 0x0040 }, { 825, 0x0000 }, { 825, 0x0000 }, { 825, 0x0000 }, { 825, 0x0000 }, { 825, 0x0000 }, /* 0x9b00 */ { 825, 0x0000 }, { 825, 0x0101 }, { 827, 0x0020 }, { 828, 0x0040 }, { 829, 0x0040 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, /* 0x9c00 */ { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0000 }, { 830, 0x0411 }, { 833, 0x23c8 }, { 839, 0x0000 }, { 839, 0x8000 }, { 840, 0x0003 }, { 842, 0x0804 }, { 844, 0x0009 }, }; static const Summary16 isoir165ext_uni2indx_page9e[25] = { /* 0x9e00 */ { 846, 0x0000 }, { 846, 0x0000 }, { 846, 0x4090 }, { 849, 0x0011 }, { 851, 0x2001 }, { 853, 0x225d }, { 860, 0x8027 }, { 865, 0x0010 }, { 866, 0x0001 }, { 867, 0x0002 }, { 868, 0x0000 }, { 868, 0x0000 }, { 868, 0x0000 }, { 868, 0x0000 }, { 868, 0x0002 }, { 869, 0x0000 }, /* 0x9f00 */ { 869, 0x1000 }, { 870, 0x0004 }, { 871, 0x0800 }, { 872, 0x0000 }, { 872, 0x0002 }, { 873, 0x0000 }, { 873, 0x0000 }, { 873, 0x0000 }, { 873, 0x0006 }, }; static const Summary16 isoir165ext_uni2indx_pageff[5] = { /* 0xff00 */ { 875, 0x0000 }, { 875, 0x0000 }, { 875, 0x0000 }, { 875, 0x0000 }, { 875, 0x0080 }, }; static int isoir165ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0200) summary = &isoir165ext_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0300 && wc < 0x03c0) summary = &isoir165ext_uni2indx_page03[(wc>>4)-0x030]; else if (wc >= 0x1e00 && wc < 0x1fc0) summary = &isoir165ext_uni2indx_page1e[(wc>>4)-0x1e0]; else if (wc >= 0x3000 && wc < 0x3040) summary = &isoir165ext_uni2indx_page30[(wc>>4)-0x300]; else if (wc >= 0x3200 && wc < 0x3400) summary = &isoir165ext_uni2indx_page32[(wc>>4)-0x320]; else if (wc >= 0x4e00 && wc < 0x7d00) summary = &isoir165ext_uni2indx_page4e[(wc>>4)-0x4e0]; else if (wc >= 0x7e00 && wc < 0x92d0) summary = &isoir165ext_uni2indx_page7e[(wc>>4)-0x7e0]; else if (wc >= 0x9400 && wc < 0x9cf0) summary = &isoir165ext_uni2indx_page94[(wc>>4)-0x940]; else if (wc >= 0x9e00 && wc < 0x9f90) summary = &isoir165ext_uni2indx_page9e[(wc>>4)-0x9e0]; else if (wc >= 0xff00 && wc < 0xff50) summary = &isoir165ext_uni2indx_pageff[(wc>>4)-0xff0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = isoir165ext_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/java.h0100644000000000000000000000242507206266437014240 0ustar rootroot/* * JAVA * This is ISO 8859-1 with \uXXXX escape sequences, denoting Unicode characters. */ static int java_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c; ucs4_t wc; int i; c = s[0]; if (c != '\\') { *pwc = c; return 1; } if (n < 2) return RET_TOOFEW(0); if (s[1] != 'u') goto simply_backslash; wc = 0; for (i = 2; i < 6; i++) { if (n <= i) return RET_TOOFEW(0); c = s[i]; if (c >= '0' && c <= '9') c -= '0'; else if (c >= 'A' && c <= 'Z') c -= 'A'-10; else if (c >= 'a' && c <= 'z') c -= 'a'-10; else goto simply_backslash; wc |= (ucs4_t) c << (4 * (5-i)); } *pwc = wc; return 6; simply_backslash: *pwc = '\\'; return 1; } static int java_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x80) { *r = wc; return 1; } else { if (n >= 6) { unsigned int i; r[0] = '\\'; r[1] = 'u'; i = (wc >> 12) & 0x0f; r[2] = (i < 10 ? '0'+i : 'a'-10+i); i = (wc >> 8) & 0x0f; r[3] = (i < 10 ? '0'+i : 'a'-10+i); i = (wc >> 4) & 0x0f; r[4] = (i < 10 ? '0'+i : 'a'-10+i); i = wc & 0x0f; r[5] = (i < 10 ? '0'+i : 'a'-10+i); return 6; } else return RET_TOOSMALL; } } recode-3.6/libiconv/jisx0201.h0100644000000000000000000000145207206266437014576 0ustar rootroot /* * JISX0201.1976-0 */ static int jisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { if (c == 0x5c) *pwc = (ucs4_t) 0x00a5; else if (c == 0x7e) *pwc = (ucs4_t) 0x203e; else *pwc = (ucs4_t) c; return 1; } else { if (c >= 0xa1 && c < 0xe0) { *pwc = (ucs4_t) c + 0xfec0; return 1; } } return RET_ILSEQ; } static int jisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) { *r = wc; return 1; } if (wc == 0x00a5) { *r = 0x5c; return 1; } if (wc == 0x203e) { *r = 0x7e; return 1; } if (wc >= 0xff61 && wc < 0xffa0) { *r = wc - 0xfec0; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/jisx0208.h0100644000000000000000000043766507206266437014630 0ustar rootroot /* * JISX0208.1990-0 */ static const unsigned short jisx0208_2uni_page21[690] = { /* 0x21 */ 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b, 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e, 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd, 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0x005c, 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c, 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b, 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0xff0b, 0x2212, 0x00b1, 0x00d7, 0x00f7, 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234, 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04, 0x00a2, 0x00a3, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, /* 0x22 */ 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2227, 0x2228, 0x00ac, 0x21d2, 0x21d4, 0x2200, 0x2203, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021, 0x00b6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x25ef, /* 0x23 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x24 */ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x25 */ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x26 */ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x27 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x28 */ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542, }; static const unsigned short jisx0208_2uni_page30[6398] = { /* 0x30 */ 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328, 0x59f6, 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25, 0x65ed, 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271, 0x5b9b, 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216, 0x7c9f, 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7, 0x978d, 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2, 0x5937, 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613, 0x6905, 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3, 0x840e, 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5, 0x57df, 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038, 0x7a32, 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1, 0x56e0, 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d, /* 0x31 */ 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87, 0x70cf, 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11, 0x7893, 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b, 0x59e5, 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b, 0x96f2, 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620, 0x66f3, 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e, 0x9834, 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca, 0x99c5, 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186, 0x5712, 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4, 0x6cbf, 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01, 0x8276, 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc, 0x6c5a, 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc, /* 0x32 */ 0x62bc, 0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1, 0x8956, 0x9d2c, 0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104, 0x5c4b, 0x61b6, 0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378, 0x6069, 0x6e29, 0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55, 0x4f3d, 0x4fa1, 0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1, 0x5bb6, 0x5be1, 0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3, 0x706b, 0x73c2, 0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db, 0x8304, 0x8377, 0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8, 0x8fe6, 0x904e, 0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259, 0x753b, 0x81e5, 0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5, 0x4ecb, 0x4f1a, 0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb, 0x602a, 0x6094, 0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539, /* 0x33 */ 0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686, 0x7d75, 0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be, 0x5916, 0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d, 0x84cb, 0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9, 0x57a3, 0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3, 0x62e1, 0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b, 0x899a, 0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769, 0x5b66, 0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b, 0x6a7f, 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec, 0x6d3b, 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39, 0x53f6, 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2, 0x91dc, 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431, /* 0x34 */ 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0, 0x5bd2, 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6, 0x5b8c, 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163, 0x61be, 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53, 0x6c57, 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b, 0x7aff, 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266, 0x839e, 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591, 0x95a2, 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8, 0x5dcc, 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1, 0x9811, 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668, 0x57fa, 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc, 0x63ee, 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4, /* 0x35 */ 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948, 0x5b63, 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77, 0x8ecc, 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100, 0x5993, 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591, 0x7947, 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0, 0x5409, 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775, 0x9ecd, 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45, 0x4ec7, 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551, 0x673d, 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae, 0x7b08, 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd, 0x92f8, 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac, /* 0x36 */ 0x4f9b, 0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6, 0x5354, 0x5321, 0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37, 0x5f4a, 0x602f, 0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1, 0x72c2, 0x72ed, 0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7, 0x93e1, 0x97ff, 0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681, 0x696d, 0x5c40, 0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5, 0x52e4, 0x5747, 0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434, 0x7981, 0x79bd, 0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f, 0x8b39, 0x8fd1, 0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5, 0x533a, 0x72d7, 0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8, 0x99d2, 0x5177, 0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3, 0x9047, 0x9685, 0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48, /* 0x37 */ 0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a, 0x9688, 0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b, 0x85ab, 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941, 0x4fc2, 0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b, 0x5951, 0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2, 0x643a, 0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb, 0x7d4c, 0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08, 0x8a63, 0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8, 0x5287, 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20, 0x6c7a, 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6, 0x5039, 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f, 0x5805, 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372, /* 0x38 */ 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f, 0x7d79, 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063, 0x9375, 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3, 0x5e7b, 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237, 0x8a00, 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa, 0x59d1, 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af, 0x6e56, 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e, 0x8a87, 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92, 0x4f0d, 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f, 0x68a7, 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190, 0x4e5e, 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149, 0x516c, 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411, /* 0x39 */ 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d, 0x5b8f, 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7, 0x5f18, 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602, 0x6643, 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a, 0x6d69, 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0, 0x7d05, 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1, 0x8154, 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2, 0x8cfc, 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d, 0x9805, 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408, 0x58d5, 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b, 0x544a, 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09, 0x8170, 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc, /* 0x3a */ 0x6b64, 0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a, 0x6068, 0x61c7, 0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5, 0x7d3a, 0x826e, 0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f, 0x5de6, 0x5dee, 0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396, 0x88df, 0x5750, 0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700, 0x54c9, 0x585e, 0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d, 0x6b73, 0x6e08, 0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d, 0x658e, 0x7d30, 0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728, 0x6750, 0x7f6a, 0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a, 0x80b4, 0x54b2, 0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a, 0x548b, 0x643e, 0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22, 0x932f, 0x685c, 0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237, /* 0x3b */ 0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9, 0x96d1, 0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652, 0x4e09, 0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f, 0x71e6, 0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb, 0x9178, 0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a, 0x4f7f, 0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb, 0x59c9, 0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d, 0x6307, 0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62, 0x6b7b, 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b, 0x80a2, 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c, 0x8aee, 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c, 0x4f8d, 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642, /* 0x3c */ 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1, 0x793a, 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f, 0x5f0f, 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03, 0x53f1, 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06, 0x75be, 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d, 0x5c61, 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66, 0x659c, 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e, 0x86c7, 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235, 0x914c, 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b, 0x53d6, 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e, 0x816b, 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff, 0x6388, 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468, /* 0x3d */ 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32, 0x79c0, 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490, 0x8846, 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c, 0x96c6, 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e, 0x67d4, 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4, 0x5919, 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f, 0x51fa, 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3, 0x821c, 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3, 0x6e96, 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806, 0x51e6, 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2, 0x7f72, 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973, 0x5e8f, 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f, /* 0x3e */ 0x52dd, 0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531, 0x5617, 0x5968, 0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11, 0x5c1a, 0x5e84, 0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db, 0x638c, 0x6377, 0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2, 0x6a1f, 0x6a35, 0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126, 0x7167, 0x75c7, 0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0, 0x7b11, 0x7ca7, 0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d, 0x88f3, 0x8a1f, 0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4, 0x9266, 0x937e, 0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e, 0x4e57, 0x5197, 0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38, 0x60c5, 0x64fe, 0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63, 0x84b8, 0x8b72, 0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe, /* 0x3f */ 0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272, 0x89e6, 0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5, 0x5507, 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0, 0x664b, 0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f, 0x795e, 0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a, 0x8eab, 0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203, 0x5875, 0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5, 0x9663, 0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8, 0x9017, 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761, 0x7c8b, 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f, 0x745e, 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db, 0x636e, 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe, /* 0x40 */ 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f, 0x51c4, 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f, 0x6574, 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272, 0x751f, 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0, 0x8a93, 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e, 0x8106, 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790, 0x77f3, 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1, 0x8e5f, 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d, 0x7a83, 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9, 0x5148, 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226, 0x6247, 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3, 0x6f5c, 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda, /* 0x41 */ 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e, 0x8cce, 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae, 0x524d, 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3, 0x7cce, 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a, 0x72d9, 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20, 0x7d44, 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275, 0x53cc, 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b, 0x5c64, 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb, 0x64cd, 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5, 0x4e89, 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061, 0x8349, 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001, 0x906d, 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e, /* 0x42 */ 0x81d3, 0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247, 0x5373, 0x606f, 0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7, 0x5c5e, 0x8cca, 0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3, 0x5b58, 0x5b6b, 0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a, 0x592a, 0x6c70, 0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253, 0x67c1, 0x8235, 0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806, 0x5bfe, 0x8010, 0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234, 0x66ff, 0x6cf0, 0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8, 0x9000, 0x902e, 0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927, 0x7b2c, 0x918d, 0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544, 0x5b85, 0x6258, 0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17, 0x9438, 0x6fc1, 0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea, /* 0x43 */ 0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd, 0x7aea, 0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0, 0x4e39, 0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e, 0x6de1, 0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d, 0x80c6, 0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad, 0x6696, 0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730, 0x5f1b, 0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4, 0x8718, 0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4, 0x9010, 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2, 0x5b99, 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877, 0x8a3b, 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7, 0x8457, 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5, /* 0x44 */ 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4, 0x61f2, 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a, 0x8074, 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3, 0x929a, 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715, 0x6c88, 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e, 0x69cc, 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4, 0x69fb, 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354, 0x693f, 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a, 0x91e3, 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e, 0x5448, 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f, 0x608c, 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e, 0x7a0b, 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013, /* 0x45 */ 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2, 0x6575, 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2, 0x5fb9, 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929, 0x5c55, 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b, 0x70b9, 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410, 0x5835, 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21, 0x767b, 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a, 0x52aa, 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac, 0x51cd, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6, 0x5d8b, 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df, 0x76d7, 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8, 0x7977, 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230, /* 0x46 */ 0x8463, 0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f, 0x9003, 0x900f, 0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd, 0x52d5, 0x540c, 0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3, 0x7ae5, 0x80f4, 0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f, 0x5f97, 0x5fb3, 0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2, 0x72ec, 0x8aad, 0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a, 0x9cf6, 0x82eb, 0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7, 0x6566, 0x6c8c, 0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d, 0x5948, 0x90a3, 0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058, 0x637a, 0x934b, 0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960, 0x8edf, 0x96e3, 0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302, 0x8cd1, 0x8089, 0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165, /* 0x47 */ 0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d, 0x6fe1, 0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74, 0x5ff5, 0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b, 0x57dc, 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf, 0x8fb2, 0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777, 0x6ce2, 0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac, 0x4ff3, 0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c, 0x80cc, 0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885, 0x6973, 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019, 0x877f, 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd, 0x67cf, 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb, 0x66dd, 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6, /* 0x48 */ 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8, 0x5e61, 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a, 0x9197, 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9, 0x567a, 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd, 0x53db, 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248, 0x72af, 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4, 0x91c6, 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4, 0x78d0, 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87, 0x5f7c, 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc, 0x75b2, 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab, 0x8ab9, 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099, 0x5c3e, 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e, /* 0x49 */ 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66, 0x819d, 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c, 0x6867, 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a, 0x6a19, 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79, 0x5edf, 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c, 0x86ed, 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7, 0x8cd3, 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b, 0x5a66, 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577, 0x65a7, 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299, 0x8b5c, 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab, 0x6b66, 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8, 0x847a, 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d, /* 0x4a */ 0x798f, 0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255, 0x6cb8, 0x4ecf, 0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3, 0x61a4, 0x626e, 0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0, 0x6587, 0x805e, 0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73, 0x5f0a, 0x67c4, 0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801, 0x50fb, 0x58c1, 0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86, 0x504f, 0x5909, 0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d, 0x4fbf, 0x52c9, 0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea, 0x5703, 0x6355, 0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df, 0x5893, 0x6155, 0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023, 0x4ff8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef, 0x5d29, 0x5e96, 0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b, /* 0x4b */ 0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3, 0x840c, 0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2, 0x98fd, 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a, 0x59a8, 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0, 0x68d2, 0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf, 0x927e, 0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8, 0x64b2, 0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1, 0x6b86, 0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6, 0x6469, 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a, 0x6bce, 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe, 0x9c52, 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab, 0x8fc4, 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80, /* 0x4c */ 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95, 0x5cac, 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999, 0x7c8d, 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db, 0x9727, 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d, 0x660e, 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5, 0x514d, 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21, 0x8302, 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905, 0x5c24, 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580, 0x5301, 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25, 0x77e2, 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756, 0x67f3, 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652, /* 0x4d */ 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb, 0x5ba5, 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67, 0x6d8c, 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a, 0x9091, 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e, 0x8a89, 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8, 0x63da, 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6, 0x7194, 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981, 0x8b21, 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32, 0x6c83, 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8, 0x6765, 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a, 0x4e71, 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7, 0x5229, 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483, /* 0x4e */ 0x75e2, 0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b, 0x7387, 0x7acb, 0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c, 0x7409, 0x7559, 0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6, 0x616e, 0x65c5, 0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc, 0x5bee, 0x6599, 0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c, 0x7ce7, 0x826f, 0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b, 0x7dd1, 0x502b, 0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8, 0x8f2a, 0x96a3, 0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f, 0x985e, 0x4ee4, 0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c, 0x73b2, 0x793c, 0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97, 0x9f62, 0x66a6, 0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9, 0x604b, 0x6190, 0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f, /* 0x4f */ 0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089, 0x8cc2, 0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717, 0x697c, 0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001, 0x807e, 0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332, 0x8ad6, 0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1, 0x67a0, 0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568, 0x6900, 0x6e7e, 0x7897, 0x8155, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x50 */ 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c, 0x4e3f, 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a, 0x8212, 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0, 0x4eb3, 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7, 0x4ede, 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b, 0x4f5d, 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b, 0x4f69, 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4, 0x4fdf, 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4, 0x4fe5, 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c, 0x4ff6, 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056, 0x506c, 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2, /* 0x51 */ 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5, 0x50ed, 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102, 0x5116, 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c, 0x513b, 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8, 0x5169, 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189, 0x518f, 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2, 0x51a9, 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5, 0x51bd, 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed, 0x51f0, 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227, 0x522a, 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c, 0x525e, 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d, 0x528d, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8, /* 0x52 */ 0x8fa7, 0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd, 0x52d7, 0x52de, 0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5, 0x52f8, 0x52f9, 0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f, 0x5315, 0x531a, 0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, 0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369, 0x536e, 0x5918, 0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6, 0x53a5, 0x53ae, 0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df, 0x66fc, 0x71ee, 0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d, 0x5440, 0x542c, 0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d, 0x544e, 0x548f, 0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470, 0x5492, 0x547b, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7, 0x54a2, 0x54b8, 0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8, /* 0x53 */ 0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5, 0x54e6, 0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2, 0x5539, 0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a, 0x559f, 0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583, 0x55a9, 0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc, 0x55e4, 0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b, 0x55f9, 0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638, 0x566b, 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a, 0x56a0, 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2, 0x56bc, 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3, 0x56d7, 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709, /* 0x54 */ 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7, 0x571c, 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f, 0x5769, 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0, 0x57b3, 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2, 0x57d3, 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872, 0x5821, 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879, 0x5885, 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8, 0x58ae, 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5, 0x58dc, 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc, 0x58fd, 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c, 0x592d, 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e, 0x595a, 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969, /* 0x55 */ 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2, 0x59c6, 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f, 0x5a11, 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35, 0x5a36, 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2, 0x5abd, 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb, 0x5b0c, 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e, 0x5b43, 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65, 0x5b69, 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80, 0x5b83, 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0, 0x5be4, 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6, 0x5bf3, 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22, 0x5c28, 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53, /* 0x56 */ 0x5c50, 0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76, 0x5c79, 0x5c8c, 0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6, 0x5cbc, 0x5cb7, 0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd, 0x5cfa, 0x5ced, 0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c, 0x5d1f, 0x5d1b, 0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18, 0x5d4c, 0x5d52, 0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87, 0x5d84, 0x5d82, 0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90, 0x5db7, 0x5dbc, 0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb, 0x5deb, 0x5df2, 0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b, 0x5e36, 0x5e37, 0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54, 0x5e5f, 0x5e62, 0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc, 0x5e7f, 0x5ea0, 0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf, /* 0x57 */ 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1, 0x5ee8, 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8, 0x5efe, 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16, 0x5f29, 0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f, 0x5f51, 0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77, 0x5f83, 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e, 0x5f99, 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb, 0x5fe4, 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b, 0x6026, 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f, 0x604a, 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c, 0x606b, 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a, /* 0x58 */ 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b, 0x60e1, 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6, 0x60b5, 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100, 0x60f4, 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e, 0x6147, 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c, 0x6134, 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615a, 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a, 0x618a, 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7, 0x61c8, 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6, 0x61e3, 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe, 0x6200, 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b, /* 0x59 */ 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233, 0x6241, 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c, 0x6282, 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283, 0x6294, 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4, 0x62c8, 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9, 0x630c, 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5, 0x6350, 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380, 0x63ab, 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b, 0x6369, 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2, 0x63f6, 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651d, 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e, 0x652a, 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc, /* 0x5a */ 0x64da, 0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2, 0x64f1, 0x64e7, 0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef, 0x652c, 0x64f6, 0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518, 0x651c, 0x6505, 0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558, 0x655e, 0x655d, 0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b, 0x659f, 0x65ab, 0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc, 0x65d2, 0x65db, 0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a, 0x6603, 0x65fb, 0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f, 0x6644, 0x6649, 0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668, 0x665f, 0x6662, 0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684, 0x6698, 0x669d, 0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc, /* 0x5b */ 0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6, 0x66e9, 0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726, 0x6727, 0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, 0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67a9, 0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785, 0x67b7, 0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4, 0x67de, 0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7, 0x6a9c, 0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e, 0x68b3, 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f, 0x68ad, 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874, 0x68b5, 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca, 0x6908, 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd, /* 0x5c */ 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7, 0x68e3, 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a, 0x6923, 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b, 0x6954, 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930, 0x6961, 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0, 0x69bf, 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd, 0x69bb, 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995, 0x69b4, 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9, 0x69f2, 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb, 0x6a0a, 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72, 0x6a36, 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38, 0x6a22, 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3, /* 0x5d */ 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3, 0x6aac, 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb, 0x6b05, 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38, 0x6b37, 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50, 0x6b59, 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f, 0x6b80, 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4, 0x6baa, 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc, 0x6bc6, 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef, 0x9ebe, 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e, 0x6c55, 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b, 0x6c7e, 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3, 0x6cbd, 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe, /* 0x5e */ 0x6cba, 0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d, 0x6d36, 0x6d2b, 0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12, 0x6d0c, 0x6d63, 0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e, 0x6d95, 0x6fe4, 0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7, 0x6de6, 0x6db8, 0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2, 0x6dc5, 0x6dfa, 0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d, 0x6e6e, 0x6e2e, 0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b, 0x6e2b, 0x6e76, 0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24, 0x6eff, 0x6e1d, 0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7, 0x6ed3, 0x6ebd, 0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f, 0x6ea5, 0x6ec2, 0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8, 0x6efe, 0x6f3f, 0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc, /* 0x5f */ 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81, 0x6f80, 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58, 0x6f8e, 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4, 0x6fb9, 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8, 0x6ff1, 0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001, 0x700f, 0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f, 0x7030, 0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af, 0x70f1, 0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd, 0x70d9, 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166, 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184, 0x7195, 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9, 0x71d4, 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc, /* 0x60 */ 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d, 0x722c, 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246, 0x724b, 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296, 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4, 0x72ce, 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f, 0x7317, 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329, 0x7325, 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368, 0x7370, 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce, 0x73bb, 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f, 0x7425, 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459, 0x7441, 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e, 0x748b, 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1, /* 0x61 */ 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0, 0x74f1, 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e, 0x750d, 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544, 0x754d, 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564, 0x7567, 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758a, 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3, 0x75c2, 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1, 0x75cd, 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff, 0x75fc, 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d, 0x7609, 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661, 0x7662, 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670, /* 0x62 */ 0x7672, 0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688, 0x768b, 0x768e, 0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4, 0x76b8, 0x76b9, 0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de, 0x76e1, 0x76e5, 0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707, 0x7704, 0x7729, 0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737, 0x7738, 0x7747, 0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f, 0x777e, 0x7779, 0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0, 0x77b6, 0x77b9, 0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd, 0x77d7, 0x77da, 0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812, 0x7926, 0x7820, 0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c, 0x789a, 0x788c, 0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6, 0x78cb, 0x78d4, 0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec, /* 0x63 */ 0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a, 0x7955, 0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b, 0x79aa, 0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7, 0x79ec, 0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20, 0x7a1f, 0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57, 0x7a49, 0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d, 0x7a88, 0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0, 0x7ab6, 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd, 0x7acf, 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2, 0x7ae6, 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33, 0x7b18, 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50, /* 0x64 */ 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75, 0x7b65, 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d, 0x7b98, 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f, 0x7b5d, 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6, 0x7bdd, 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00, 0x7c07, 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23, 0x7c27, 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43, 0x7c54, 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56, 0x7c65, 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2, 0x7cab, 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9, 0x7cbd, 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2, 0x9b3b, 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06, /* 0x65 */ 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e, 0x7d32, 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72, 0x7d68, 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f, 0x7d7d, 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd, 0x7dab, 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0, 0x7dd8, 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05, 0x7e0a, 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b, 0x7e22, 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37, 0x7e32, 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a, 0x7e79, 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d, 0x8fae, 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93, 0x7e94, 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a, /* 0x66 */ 0x7f45, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55, 0x7f54, 0x7f58, 0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78, 0x7f82, 0x7f86, 0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e, 0x7f9d, 0x7f9a, 0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6, 0x7fb8, 0x8b71, 0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1, 0x7fe6, 0x7fe9, 0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b, 0x8012, 0x8018, 0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b, 0x804a, 0x8046, 0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068, 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084, 0x8086, 0x8085, 0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac, 0x80db, 0x80e5, 0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109, 0x80ef, 0x80f1, 0x811b, 0x8129, 0x8123, 0x812f, 0x814b, /* 0x67 */ 0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171, 0x816e, 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180, 0x8182, 0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9, 0x81b0, 0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba, 0x81c9, 0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df, 0x81e0, 0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205, 0x8207, 0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238, 0x8233, 0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264, 0x8262, 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278, 0x827e, 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1, 0x82e3, 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303, 0x82fb, 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9, /* 0x68 */ 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a, 0x83aa, 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a, 0x837c, 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4, 0x8413, 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1, 0x83f7, 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd, 0x8438, 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484, 0x8477, 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c, 0x846f, 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f, 0x84d9, 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6, 0x84a1, 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f, 0x8515, 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548, /* 0x69 */ 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588, 0x8591, 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587, 0x859c, 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9, 0x85d0, 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613, 0x860b, 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f, 0x864d, 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3, 0x86a9, 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6, 0x86b0, 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec, 0x86df, 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86fb, 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f, 0x8737, 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778, 0x874c, 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759, /* 0x6a */ 0x8753, 0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782, 0x87af, 0x87cb, 0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4, 0x87b3, 0x87c7, 0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f, 0x880d, 0x87fe, 0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b, 0x8844, 0x8842, 0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881, 0x887e, 0x889e, 0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897, 0x8892, 0x88ae, 0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf, 0x88b1, 0x88c3, 0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9, 0x8902, 0x88fc, 0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a, 0x8913, 0x8943, 0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944, 0x893b, 0x8936, 0x8938, 0x894c, 0x891d, 0x8960, 0x895e, /* 0x6b */ 0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977, 0x897e, 0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9, 0x89a6, 0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0, 0x89da, 0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16, 0x8a10, 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b, 0x8a52, 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85, 0x8a82, 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a, 0x8aa3, 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7, 0x8ae4, 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb, 0x8b0c, 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20, 0x8b33, 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c, 0x8b4f, 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b, /* 0x6c */ 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c, 0x8b8e, 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41, 0x8c3f, 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c, 0x8c78, 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e, 0x8c94, 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2, 0x8cb3, 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda, 0x8cfd, 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f, 0x8d0d, 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67, 0x8d6d, 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba, 0x8dcf, 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb, 0x8ddf, 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e, 0x8e10, 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a, /* 0x6d */ 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64, 0x8e60, 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81, 0x8e87, 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94, 0x8e99, 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe, 0x8ec5, 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb, 0x8efe, 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c, 0x8f1f, 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45, 0x8f42, 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c, 0x8f62, 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf, 0x8fb7, 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4, 0x9005, 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e, 0x9016, 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8, /* 0x6e */ 0x904f, 0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e, 0x9056, 0x9058, 0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072, 0x9082, 0x907d, 0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8, 0x90af, 0x90b1, 0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102, 0x9112, 0x9119, 0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2, 0x91ab, 0x91af, 0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1, 0x91c9, 0x91cb, 0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc, 0x91f5, 0x91f6, 0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211, 0x925e, 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f, 0x924b, 0x9250, 0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf, 0x92b9, 0x92b7, 0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e, /* 0x6f */ 0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b, 0x935c, 0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad, 0x9394, 0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3, 0x93dd, 0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441, 0x9452, 0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229, 0x9470, 0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481, 0x947f, 0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599, 0x95a0, 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be, 0x95ca, 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6, 0x95dc, 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f, 0x9642, 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e, /* 0x70 */ 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698, 0x9695, 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4, 0x96b6, 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d, 0x96dc, 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970e, 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730, 0x9739, 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975c, 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771, 0x9779, 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f, 0x9790, 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3, 0x97c6, 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf, 0x97f6, 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837, 0x983d, 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870, /* 0x71 */ 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6, 0x98c4, 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912, 0x9914, 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c, 0x992e, 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b, 0x9951, 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad, 0x99ae, 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed, 0x99ee, 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05, 0x99e2, 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43, 0x9a3e, 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65, 0x9a64, 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0, 0x9acf, 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3, 0x9ae6, 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7, /* 0x72 */ 0x9afb, 0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23, 0x9b25, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32, 0x9b44, 0x9b43, 0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74, 0x9b93, 0x9b83, 0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9bb4, 0x9bc0, 0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2, 0x9be3, 0x9be2, 0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1, 0x9bf0, 0x9c15, 0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08, 0x9c12, 0x9c0a, 0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21, 0x9c30, 0x9c47, 0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67, 0x9c76, 0x9c78, 0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb, 0x9d03, 0x9d06, 0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44, 0x9d15, 0x9d12, 0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48, /* 0x73 */ 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72, 0x9d89, 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9, 0x9db2, 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf, 0x9dc2, 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd, 0x9e1a, 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88, 0x9e8b, 0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9, 0x9eb8, 0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed4, 0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef, 0x9ef4, 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07, 0x9f08, 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52, 0x9f54, 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c, 0x9f6a, 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0, /* 0x74 */ 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199, }; static int jisx0208_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x21 && c1 <= 0x28) || (c1 >= 0x30 && c1 <= 0x74)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; if (i < 1410) { if (i < 690) wc = jisx0208_2uni_page21[i]; } else { if (i < 7808) wc = jisx0208_2uni_page30[i-1410]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short jisx0208_2charset[6879] = { 0x2140, 0x2171, 0x2172, 0x2178, 0x212f, 0x224c, 0x216b, 0x215e, 0x212d, 0x2279, 0x215f, 0x2160, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x213e, 0x213d, 0x2142, 0x2146, 0x2147, 0x2148, 0x2149, 0x2277, 0x2278, 0x2145, 0x2144, 0x2273, 0x216c, 0x216d, 0x2228, 0x216e, 0x2272, 0x222b, 0x222c, 0x222a, 0x222d, 0x224d, 0x224e, 0x224f, 0x225f, 0x2250, 0x2260, 0x223a, 0x223b, 0x215d, 0x2265, 0x2267, 0x2167, 0x225c, 0x224a, 0x224b, 0x2241, 0x2240, 0x2269, 0x226a, 0x2168, 0x2268, 0x2266, 0x2262, 0x2162, 0x2261, 0x2165, 0x2166, 0x2263, 0x2264, 0x223e, 0x223f, 0x223c, 0x223d, 0x225d, 0x225e, 0x2821, 0x282c, 0x2822, 0x282d, 0x2823, 0x282e, 0x2824, 0x282f, 0x2826, 0x2831, 0x2825, 0x2830, 0x2827, 0x283c, 0x2837, 0x2832, 0x2829, 0x283e, 0x2839, 0x2834, 0x2828, 0x2838, 0x283d, 0x2833, 0x282a, 0x283a, 0x283f, 0x2835, 0x282b, 0x283b, 0x2840, 0x2836, 0x2223, 0x2222, 0x2225, 0x2224, 0x2227, 0x2226, 0x2221, 0x217e, 0x217b, 0x217d, 0x217c, 0x227e, 0x217a, 0x2179, 0x216a, 0x2169, 0x2276, 0x2275, 0x2274, 0x2121, 0x2122, 0x2123, 0x2137, 0x2139, 0x213a, 0x213b, 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215a, 0x215b, 0x2229, 0x222e, 0x214c, 0x214d, 0x2141, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472, 0x2473, 0x212b, 0x212c, 0x2135, 0x2136, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2126, 0x213c, 0x2133, 0x2134, 0x306c, 0x437a, 0x3c37, 0x4b7c, 0x3e66, 0x3b30, 0x3e65, 0x323c, 0x4954, 0x4d3f, 0x5022, 0x312f, 0x336e, 0x5023, 0x4024, 0x5242, 0x3556, 0x4a3a, 0x3e67, 0x4e3e, 0x4a42, 0x5024, 0x4366, 0x5025, 0x367a, 0x5026, 0x345d, 0x4330, 0x3c67, 0x5027, 0x5028, 0x5029, 0x4735, 0x3557, 0x4737, 0x4663, 0x3843, 0x4b33, 0x6949, 0x502a, 0x3e68, 0x502b, 0x3235, 0x3665, 0x3870, 0x4c69, 0x5626, 0x4d70, 0x467d, 0x3425, 0x3535, 0x502c, 0x502d, 0x4e3b, 0x4d3d, 0x4168, 0x502f, 0x3b76, 0x4673, 0x5032, 0x313e, 0x385f, 0x385e, 0x3066, 0x4f4b, 0x4f4a, 0x3a33, 0x3021, 0x5033, 0x5034, 0x5035, 0x4b34, 0x5036, 0x3872, 0x3067, 0x4b72, 0x357c, 0x357d, 0x357e, 0x4462, 0x4e3c, 0x5037, 0x5038, 0x5039, 0x3f4d, 0x3d3a, 0x3f4e, 0x503e, 0x503c, 0x503d, 0x3558, 0x3a23, 0x3270, 0x503b, 0x503a, 0x4a29, 0x3b46, 0x3b45, 0x423e, 0x503f, 0x4955, 0x4067, 0x2138, 0x5040, 0x5042, 0x4265, 0x4e61, 0x304a, 0x5041, 0x323e, 0x3644, 0x4367, 0x376f, 0x5043, 0x4724, 0x346b, 0x5044, 0x304b, 0x3860, 0x346c, 0x497a, 0x4832, 0x3559, 0x3271, 0x5067, 0x4541, 0x476c, 0x5046, 0x483c, 0x4e62, 0x3f2d, 0x3b47, 0x3b77, 0x3240, 0x4451, 0x4322, 0x504a, 0x304c, 0x4463, 0x3d3b, 0x3a34, 0x4d24, 0x424e, 0x323f, 0x5049, 0x4d3e, 0x5045, 0x5047, 0x3a6e, 0x5048, 0x5524, 0x5050, 0x5053, 0x5051, 0x3242, 0x4a3b, 0x504b, 0x504f, 0x3873, 0x3b48, 0x3426, 0x5054, 0x504c, 0x4e63, 0x3b78, 0x504d, 0x5052, 0x5055, 0x504e, 0x3621, 0x304d, 0x3622, 0x3241, 0x5525, 0x4b79, 0x496e, 0x3874, 0x3f2f, 0x4e37, 0x4a58, 0x3738, 0x4225, 0x3264, 0x3d53, 0x5059, 0x505e, 0x505c, 0x5057, 0x422f, 0x505a, 0x505d, 0x505b, 0x4a5d, 0x5058, 0x3f2e, 0x4b73, 0x505f, 0x5060, 0x3d24, 0x506d, 0x4750, 0x4936, 0x5068, 0x4a70, 0x3236, 0x506c, 0x5066, 0x506f, 0x4152, 0x3844, 0x475c, 0x6047, 0x506e, 0x455d, 0x5063, 0x3876, 0x3875, 0x5061, 0x3c5a, 0x5069, 0x4a6f, 0x434d, 0x5065, 0x3771, 0x5062, 0x506a, 0x5064, 0x4e51, 0x506b, 0x4f41, 0x3666, 0x3770, 0x5070, 0x5071, 0x5075, 0x304e, 0x4a50, 0x5074, 0x5073, 0x5077, 0x5076, 0x4464, 0x3772, 0x5078, 0x3c45, 0x4226, 0x4465, 0x3676, 0x5079, 0x3536, 0x507a, 0x507c, 0x4b35, 0x3766, 0x3b31, 0x4877, 0x507b, 0x3a45, 0x4d43, 0x507e, 0x5123, 0x507d, 0x3a44, 0x3d7d, 0x3739, 0x5124, 0x364f, 0x5121, 0x5122, 0x462f, 0x417c, 0x3623, 0x4b4d, 0x5125, 0x4e3d, 0x5126, 0x5129, 0x5127, 0x414e, 0x5128, 0x512a, 0x512c, 0x512b, 0x4a48, 0x3537, 0x512e, 0x512f, 0x322f, 0x512d, 0x3c74, 0x5132, 0x5131, 0x5130, 0x5056, 0x5133, 0x3d7e, 0x5134, 0x4d25, 0x4c59, 0x5136, 0x5135, 0x5138, 0x5137, 0x5139, 0x513a, 0x3074, 0x3835, 0x373b, 0x3d3c, 0x437b, 0x3624, 0x4068, 0x3877, 0x396e, 0x513c, 0x4c48, 0x4546, 0x3b79, 0x513b, 0x513d, 0x455e, 0x3375, 0x513e, 0x467e, 0x4134, 0x5140, 0x5141, 0x482c, 0x3878, 0x4f3b, 0x5142, 0x3626, 0x4a3c, 0x4236, 0x3671, 0x4535, 0x3773, 0x5143, 0x5144, 0x4662, 0x315f, 0x5147, 0x3a7d, 0x5146, 0x3a46, 0x5148, 0x666e, 0x5149, 0x4b41, 0x514a, 0x514b, 0x514c, 0x3e69, 0x3c4c, 0x3427, 0x514f, 0x514d, 0x4c3d, 0x514e, 0x495a, 0x5150, 0x5151, 0x5152, 0x455f, 0x5156, 0x5154, 0x5155, 0x5153, 0x3a63, 0x5157, 0x4c6a, 0x4e64, 0x5158, 0x4028, 0x5159, 0x3d5a, 0x515a, 0x437c, 0x4e3f, 0x4560, 0x5245, 0x515b, 0x7425, 0x3645, 0x515c, 0x4b5e, 0x3d68, 0x427c, 0x515e, 0x4664, 0x515f, 0x5160, 0x332e, 0x5161, 0x3627, 0x464c, 0x317a, 0x3d50, 0x4821, 0x5162, 0x4561, 0x3f4f, 0x5163, 0x4a2c, 0x405a, 0x3422, 0x3429, 0x5164, 0x5166, 0x373a, 0x5165, 0x4e73, 0x3d69, 0x483d, 0x4a4c, 0x5167, 0x4d78, 0x5168, 0x5169, 0x457e, 0x516a, 0x4029, 0x3a7e, 0x3774, 0x516b, 0x3b49, 0x396f, 0x4466, 0x516d, 0x4227, 0x3a6f, 0x516e, 0x516f, 0x4130, 0x516c, 0x5171, 0x4b36, 0x3964, 0x5170, 0x3775, 0x3a5e, 0x476d, 0x5174, 0x5172, 0x497b, 0x3e6a, 0x517b, 0x3364, 0x5175, 0x5173, 0x414f, 0x5177, 0x5176, 0x3344, 0x3760, 0x517c, 0x4e2d, 0x5178, 0x517d, 0x517a, 0x5179, 0x4e4f, 0x3879, 0x3243, 0x4e74, 0x3d75, 0x4558, 0x3965, 0x5222, 0x5223, 0x4e65, 0x4f2b, 0x5225, 0x387a, 0x5224, 0x332f, 0x5226, 0x4b56, 0x443c, 0x4d26, 0x4a59, 0x5227, 0x7055, 0x4630, 0x5228, 0x342a, 0x4c33, 0x3e21, 0x5229, 0x4a67, 0x522d, 0x402a, 0x522a, 0x3650, 0x522b, 0x342b, 0x372e, 0x522e, 0x522f, 0x5230, 0x5231, 0x3c5b, 0x387b, 0x4c5e, 0x4c68, 0x4677, 0x4a71, 0x5232, 0x5233, 0x5235, 0x5237, 0x5236, 0x5238, 0x323d, 0x4b4c, 0x3a7c, 0x5239, 0x4159, 0x3e22, 0x3629, 0x523a, 0x485b, 0x523b, 0x523c, 0x523d, 0x523e, 0x4924, 0x3668, 0x3065, 0x463f, 0x523f, 0x3d3d, 0x4069, 0x5241, 0x5240, 0x3e23, 0x3861, 0x5243, 0x483e, 0x5244, 0x485c, 0x4234, 0x426e, 0x3628, 0x466e, 0x4331, 0x476e, 0x4b4e, 0x5246, 0x406a, 0x3735, 0x5247, 0x5248, 0x312c, 0x3075, 0x346d, 0x4228, 0x3551, 0x4d71, 0x524b, 0x3237, 0x524a, 0x362a, 0x524c, 0x4c71, 0x524d, 0x4e52, 0x387c, 0x3836, 0x524e, 0x5250, 0x524f, 0x3f5f, 0x3139, 0x315e, 0x5251, 0x5252, 0x3837, 0x5253, 0x356e, 0x3b32, 0x5254, 0x4b74, 0x3a35, 0x355a, 0x4d27, 0x4150, 0x483f, 0x3c7d, 0x3d47, 0x3c68, 0x3c75, 0x3d76, 0x4840, 0x5257, 0x3143, 0x4151, 0x387d, 0x3845, 0x3667, 0x525b, 0x4321, 0x427e, 0x362b, 0x3e24, 0x525c, 0x525a, 0x3244, 0x4266, 0x3c38, 0x3b4b, 0x3126, 0x3370, 0x3966, 0x3b4a, 0x525d, 0x525e, 0x3549, 0x3346, 0x3967, 0x3548, 0x445f, 0x3125, 0x4631, 0x4c3e, 0x3921, 0x4d79, 0x4547, 0x387e, 0x372f, 0x5267, 0x3663, 0x4b4a, 0x485d, 0x5266, 0x345e, 0x5261, 0x5262, 0x5264, 0x5265, 0x355b, 0x3f61, 0x4a2d, 0x5263, 0x525f, 0x3863, 0x5260, 0x4f24, 0x4a72, 0x4468, 0x3862, 0x3970, 0x5268, 0x465d, 0x526c, 0x3c7e, 0x3c76, 0x526f, 0x526d, 0x4c23, 0x526a, 0x5273, 0x526e, 0x5271, 0x3846, 0x4c3f, 0x5272, 0x5274, 0x5276, 0x3a70, 0x4f42, 0x526b, 0x5269, 0x5275, 0x5270, 0x5278, 0x5323, 0x527a, 0x527e, 0x5321, 0x527b, 0x533e, 0x3a69, 0x3331, 0x5279, 0x5325, 0x3076, 0x5324, 0x3025, 0x494a, 0x5322, 0x527c, 0x5277, 0x527d, 0x3a48, 0x5326, 0x3077, 0x532f, 0x5327, 0x5328, 0x3e25, 0x4b69, 0x532d, 0x532c, 0x452f, 0x532e, 0x532b, 0x3134, 0x3a36, 0x3f30, 0x5329, 0x4562, 0x532a, 0x3022, 0x5334, 0x4d23, 0x3e27, 0x533a, 0x5339, 0x5330, 0x4243, 0x5331, 0x426f, 0x5336, 0x3e26, 0x5333, 0x4c64, 0x373c, 0x5337, 0x5338, 0x5335, 0x533b, 0x5332, 0x5341, 0x5346, 0x5342, 0x533d, 0x5347, 0x4131, 0x5349, 0x3922, 0x533f, 0x437d, 0x5343, 0x533c, 0x342d, 0x346e, 0x3365, 0x5344, 0x5340, 0x3776, 0x534a, 0x5348, 0x4153, 0x354a, 0x362c, 0x5345, 0x3674, 0x3144, 0x534e, 0x534c, 0x5427, 0x5351, 0x534b, 0x534f, 0x534d, 0x3b4c, 0x5350, 0x5353, 0x5358, 0x5356, 0x5355, 0x4332, 0x3245, 0x5352, 0x5354, 0x3e28, 0x3133, 0x5357, 0x325e, 0x5362, 0x3e7c, 0x535e, 0x535c, 0x535d, 0x535f, 0x313d, 0x4139, 0x5359, 0x535a, 0x337a, 0x5361, 0x346f, 0x5364, 0x5360, 0x5363, 0x4a2e, 0x4655, 0x4838, 0x5366, 0x5365, 0x3345, 0x5367, 0x536a, 0x5369, 0x5368, 0x4739, 0x536b, 0x536c, 0x536e, 0x536d, 0x5370, 0x5373, 0x5371, 0x536f, 0x5372, 0x5374, 0x5375, 0x5376, 0x5377, 0x5378, 0x5145, 0x3c7c, 0x3b4d, 0x3273, 0x3078, 0x4344, 0x5379, 0x3a24, 0x304f, 0x3f5e, 0x537a, 0x3847, 0x3971, 0x537c, 0x537b, 0x4a60, 0x537d, 0x5421, 0x537e, 0x5422, 0x5423, 0x3777, 0x3160, 0x5424, 0x5426, 0x5425, 0x5428, 0x455a, 0x5429, 0x3035, 0x3a5f, 0x373d, 0x434f, 0x542a, 0x542b, 0x542d, 0x542e, 0x3a64, 0x3651, 0x4b37, 0x542c, 0x542f, 0x3a41, 0x3923, 0x5433, 0x3a25, 0x4333, 0x5430, 0x445a, 0x5434, 0x3f62, 0x5432, 0x5435, 0x373f, 0x5436, 0x5437, 0x3924, 0x3340, 0x5439, 0x543a, 0x543b, 0x5438, 0x5431, 0x543c, 0x543d, 0x4b64, 0x3e6b, 0x543f, 0x5440, 0x543e, 0x5442, 0x4738, 0x3068, 0x4956, 0x5443, 0x3e7d, 0x3c39, 0x475d, 0x3470, 0x3a6b, 0x4b59, 0x4632, 0x3778, 0x424f, 0x5441, 0x5444, 0x4244, 0x5445, 0x5446, 0x5448, 0x4469, 0x342e, 0x7421, 0x3161, 0x4a73, 0x3e6c, 0x4548, 0x3a66, 0x544e, 0x4a3d, 0x4e5d, 0x3274, 0x544a, 0x413a, 0x544d, 0x4563, 0x4549, 0x4564, 0x4839, 0x444d, 0x3a49, 0x5449, 0x3176, 0x4536, 0x544b, 0x5447, 0x3f50, 0x544f, 0x3d4e, 0x362d, 0x5450, 0x4a68, 0x417d, 0x4446, 0x5452, 0x4b4f, 0x5453, 0x5458, 0x4a2f, 0x5457, 0x5451, 0x5454, 0x5456, 0x3a26, 0x4a49, 0x5459, 0x4345, 0x3275, 0x3e6d, 0x545b, 0x545a, 0x3968, 0x545c, 0x545e, 0x545d, 0x5460, 0x5455, 0x5462, 0x5461, 0x545f, 0x3b4e, 0x3f51, 0x4154, 0x5463, 0x403c, 0x306d, 0x4764, 0x445b, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468, 0x5469, 0x4a51, 0x546a, 0x3246, 0x546b, 0x4d3c, 0x3330, 0x5249, 0x3d48, 0x423f, 0x546c, 0x4c6b, 0x4c34, 0x546e, 0x4267, 0x4537, 0x4240, 0x4957, 0x546f, 0x5470, 0x317b, 0x3c3a, 0x5471, 0x3050, 0x5472, 0x5473, 0x3162, 0x3471, 0x4660, 0x4a74, 0x5477, 0x4155, 0x5476, 0x3740, 0x4b5b, 0x5475, 0x4565, 0x5479, 0x5478, 0x547b, 0x547a, 0x317c, 0x547c, 0x3e29, 0x547e, 0x4325, 0x547d, 0x4a33, 0x3d77, 0x455b, 0x5521, 0x3925, 0x5522, 0x4721, 0x485e, 0x4c51, 0x4725, 0x552b, 0x3538, 0x4d45, 0x4c2f, 0x562c, 0x5523, 0x5526, 0x4245, 0x4b38, 0x454a, 0x5527, 0x4b65, 0x3a4a, 0x3e2a, 0x5528, 0x3b50, 0x3b4f, 0x3039, 0x3848, 0x402b, 0x3051, 0x552c, 0x552d, 0x552a, 0x3138, 0x342f, 0x5529, 0x4c45, 0x4931, 0x3028, 0x3079, 0x3b51, 0x3052, 0x3023, 0x5532, 0x5530, 0x4c3c, 0x5533, 0x5531, 0x552f, 0x3f31, 0x552e, 0x4a5a, 0x3864, 0x5537, 0x5538, 0x3e2b, 0x5534, 0x4f2c, 0x474c, 0x5536, 0x3a27, 0x5539, 0x4958, 0x553a, 0x5535, 0x4c3b, 0x475e, 0x553b, 0x4932, 0x553c, 0x5540, 0x553d, 0x3247, 0x553f, 0x3c3b, 0x553e, 0x3779, 0x554c, 0x5545, 0x5542, 0x4364, 0x5541, 0x5543, 0x5544, 0x5546, 0x5547, 0x3472, 0x5549, 0x5548, 0x554a, 0x3e6e, 0x554d, 0x445c, 0x3145, 0x554b, 0x554e, 0x554f, 0x5552, 0x5550, 0x5551, 0x3b52, 0x5553, 0x3926, 0x5554, 0x3b7a, 0x4238, 0x5555, 0x5556, 0x3b5a, 0x3927, 0x4c52, 0x3528, 0x3849, 0x5557, 0x3358, 0x5558, 0x4239, 0x5559, 0x5623, 0x555a, 0x555b, 0x555c, 0x555e, 0x555f, 0x5560, 0x4270, 0x3127, 0x3c69, 0x3042, 0x4157, 0x3430, 0x3c35, 0x3928, 0x4566, 0x3d21, 0x3431, 0x4368, 0x446a, 0x3038, 0x3539, 0x4a75, 0x3c42, 0x3552, 0x406b, 0x3c3c, 0x4d28, 0x5561, 0x355c, 0x3a4b, 0x3332, 0x3163, 0x3e2c, 0x3248, 0x5562, 0x4d46, 0x3d49, 0x3c64, 0x5563, 0x3473, 0x4652, 0x4c29, 0x5564, 0x5565, 0x4959, 0x5567, 0x3428, 0x3677, 0x5566, 0x3432, 0x3f32, 0x556b, 0x3b21, 0x3249, 0x556a, 0x5568, 0x556c, 0x5569, 0x472b, 0x5c4d, 0x3f33, 0x556d, 0x4e40, 0x556e, 0x5570, 0x437e, 0x556f, 0x4023, 0x3b7b, 0x4250, 0x3c77, 0x4975, 0x406c, 0x3c4d, 0x5571, 0x3e2d, 0x5572, 0x5573, 0x3053, 0x423a, 0x3f52, 0x5574, 0x4633, 0x3e2e, 0x3e2f, 0x5575, 0x406d, 0x3e30, 0x5576, 0x5577, 0x4c60, 0x5578, 0x3646, 0x3d22, 0x5579, 0x557a, 0x3c5c, 0x3f2c, 0x4674, 0x3f54, 0x4878, 0x4722, 0x3649, 0x557b, 0x356f, 0x557c, 0x367e, 0x464f, 0x3230, 0x3b53, 0x557d, 0x5622, 0x5621, 0x367d, 0x557e, 0x4538, 0x4230, 0x454b, 0x3c48, 0x4158, 0x4d7a, 0x5624, 0x5625, 0x4656, 0x3b33, 0x5627, 0x5628, 0x5629, 0x3474, 0x562a, 0x562b, 0x322c, 0x413b, 0x3464, 0x562d, 0x4c28, 0x4252, 0x3359, 0x562f, 0x5631, 0x345f, 0x562e, 0x5630, 0x5633, 0x5632, 0x5634, 0x5635, 0x463d, 0x362e, 0x3265, 0x5636, 0x563b, 0x5639, 0x4a77, 0x4a76, 0x4567, 0x5638, 0x3d54, 0x5637, 0x3f72, 0x563c, 0x3a6a, 0x5642, 0x5643, 0x563d, 0x3333, 0x563e, 0x5647, 0x5646, 0x5645, 0x5641, 0x5640, 0x5644, 0x4a78, 0x564b, 0x5648, 0x564a, 0x4d72, 0x5649, 0x563f, 0x3f73, 0x564c, 0x3a37, 0x564d, 0x564e, 0x5651, 0x5650, 0x564f, 0x4568, 0x563a, 0x5657, 0x5653, 0x5652, 0x5654, 0x5655, 0x5658, 0x4e66, 0x5659, 0x5656, 0x565a, 0x3460, 0x565b, 0x565d, 0x565c, 0x565e, 0x565f, 0x406e, 0x3d23, 0x3d64, 0x4163, 0x3929, 0x3a38, 0x392a, 0x3570, 0x5660, 0x3a39, 0x384a, 0x5661, 0x4c26, 0x4743, 0x5662, 0x392b, 0x342c, 0x4327, 0x3652, 0x3b54, 0x495b, 0x4841, 0x5663, 0x3475, 0x5666, 0x4421, 0x5665, 0x5664, 0x5667, 0x446b, 0x3f63, 0x3b55, 0x404a, 0x4253, 0x3522, 0x4422, 0x5668, 0x5669, 0x3e6f, 0x4b39, 0x566c, 0x566b, 0x566a, 0x497d, 0x5673, 0x4b5a, 0x566d, 0x566f, 0x4b6b, 0x566e, 0x5670, 0x4828, 0x5671, 0x4a3e, 0x5672, 0x3433, 0x4a3f, 0x472f, 0x5674, 0x5675, 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476, 0x5678, 0x4423, 0x392d, 0x3e31, 0x485f, 0x3e32, 0x3d78, 0x446c, 0x4a79, 0x4539, 0x392e, 0x495c, 0x5679, 0x4559, 0x3a42, 0x384b, 0x446d, 0x3043, 0x3d6e, 0x392f, 0x4d47, 0x567a, 0x567b, 0x4751, 0x567c, 0x4e77, 0x4f2d, 0x567e, 0x567d, 0x3347, 0x5721, 0x5724, 0x5725, 0x5723, 0x4940, 0x3e33, 0x5727, 0x5726, 0x5722, 0x5728, 0x5729, 0x572a, 0x572d, 0x572b, 0x572c, 0x572e, 0x3164, 0x446e, 0x572f, 0x377a, 0x3276, 0x4736, 0x5730, 0x467b, 0x4a5b, 0x5731, 0x4f2e, 0x5732, 0x4a40, 0x5735, 0x5021, 0x5031, 0x3c30, 0x4675, 0x5736, 0x355d, 0x4424, 0x307a, 0x5737, 0x4a26, 0x3930, 0x4350, 0x446f, 0x4c6f, 0x3839, 0x384c, 0x5738, 0x5739, 0x573f, 0x3c65, 0x4425, 0x362f, 0x573a, 0x492b, 0x4346, 0x573b, 0x573c, 0x3630, 0x573d, 0x573e, 0x5740, 0x4576, 0x5741, 0x5742, 0x5743, 0x5734, 0x5733, 0x5744, 0x3741, 0x4927, 0x3a4c, 0x4937, 0x4426, 0x494b, 0x5745, 0x3e34, 0x3146, 0x5746, 0x5747, 0x4c72, 0x4860, 0x574a, 0x317d, 0x402c, 0x5749, 0x5748, 0x3742, 0x4254, 0x574e, 0x574c, 0x574b, 0x4e27, 0x3865, 0x3d79, 0x574d, 0x454c, 0x3d3e, 0x4640, 0x5751, 0x5750, 0x574f, 0x5752, 0x3866, 0x5753, 0x497c, 0x3d5b, 0x5754, 0x4879, 0x4641, 0x4427, 0x4530, 0x5755, 0x352b, 0x3f34, 0x492c, 0x3477, 0x4726, 0x5756, 0x3b56, 0x4b3a, 0x4b3b, 0x317e, 0x575b, 0x4369, 0x5758, 0x3277, 0x582d, 0x575a, 0x4730, 0x5759, 0x5757, 0x397a, 0x575d, 0x5763, 0x5769, 0x5761, 0x455c, 0x5766, 0x495d, 0x5760, 0x5765, 0x4e67, 0x3b57, 0x4255, 0x575e, 0x355e, 0x5768, 0x402d, 0x3165, 0x5762, 0x3278, 0x5767, 0x3631, 0x5764, 0x576a, 0x576c, 0x5776, 0x5774, 0x5771, 0x5770, 0x4e78, 0x5772, 0x3632, 0x3931, 0x3d7a, 0x5779, 0x576b, 0x576f, 0x575f, 0x327a, 0x5773, 0x5775, 0x4351, 0x3a28, 0x3238, 0x576d, 0x5778, 0x5777, 0x3633, 0x4229, 0x3366, 0x3743, 0x576e, 0x577a, 0x577d, 0x5821, 0x3c3d, 0x5827, 0x4470, 0x577b, 0x5825, 0x3279, 0x5823, 0x5824, 0x577e, 0x5822, 0x3867, 0x4d2a, 0x3435, 0x3159, 0x5826, 0x473a, 0x302d, 0x4861, 0x575c, 0x582c, 0x5830, 0x4c65, 0x5829, 0x4569, 0x582e, 0x3e70, 0x582f, 0x4657, 0x4f47, 0x582b, 0x5831, 0x397b, 0x404b, 0x3054, 0x582a, 0x5828, 0x415a, 0x577c, 0x3b34, 0x4246, 0x583d, 0x415b, 0x5838, 0x5835, 0x5836, 0x3c66, 0x5839, 0x583c, 0x5837, 0x3d25, 0x583a, 0x5834, 0x4c7c, 0x4c7b, 0x583e, 0x583f, 0x3055, 0x5833, 0x3672, 0x3026, 0x3436, 0x583b, 0x5843, 0x5842, 0x5847, 0x5848, 0x5846, 0x5849, 0x5841, 0x5845, 0x584a, 0x584b, 0x5840, 0x3b7c, 0x5844, 0x4256, 0x3932, 0x5832, 0x3f35, 0x5858, 0x4a69, 0x584e, 0x584f, 0x5850, 0x5857, 0x5856, 0x4b7d, 0x3437, 0x5854, 0x3745, 0x3334, 0x5851, 0x4e38, 0x5853, 0x3056, 0x5855, 0x584c, 0x5852, 0x5859, 0x3744, 0x584d, 0x4d5d, 0x4d2b, 0x585c, 0x5860, 0x417e, 0x4e79, 0x5861, 0x585e, 0x585b, 0x585a, 0x585f, 0x4a30, 0x4634, 0x3746, 0x5862, 0x585d, 0x5863, 0x377b, 0x3231, 0x586b, 0x3438, 0x5869, 0x586a, 0x3a29, 0x5868, 0x5866, 0x5865, 0x586c, 0x5864, 0x586e, 0x327b, 0x5870, 0x586f, 0x4428, 0x5873, 0x5871, 0x5867, 0x377c, 0x5872, 0x5876, 0x5875, 0x5877, 0x5874, 0x5878, 0x5879, 0x587a, 0x4a6a, 0x587c, 0x587b, 0x3d3f, 0x402e, 0x3266, 0x327c, 0x587d, 0x303f, 0x404c, 0x587e, 0x6c43, 0x5921, 0x3761, 0x5922, 0x406f, 0x5923, 0x5924, 0x353a, 0x5925, 0x5926, 0x5927, 0x4257, 0x384d, 0x4c61, 0x4b3c, 0x3d6a, 0x5928, 0x4070, 0x6e3d, 0x4862, 0x3c6a, 0x3a4d, 0x5929, 0x4247, 0x4a27, 0x4271, 0x592c, 0x592a, 0x592d, 0x592b, 0x592e, 0x4a31, 0x3037, 0x495e, 0x4863, 0x592f, 0x5932, 0x3e35, 0x353b, 0x5930, 0x5937, 0x3e36, 0x5931, 0x4744, 0x4d5e, 0x5933, 0x5934, 0x5938, 0x456a, 0x5935, 0x3933, 0x405e, 0x5946, 0x4834, 0x4272, 0x4864, 0x5a2d, 0x4a7a, 0x4471, 0x4b75, 0x593b, 0x3221, 0x436a, 0x5944, 0x4334, 0x593e, 0x5945, 0x5940, 0x5947, 0x5943, 0x5942, 0x476f, 0x593c, 0x327d, 0x593a, 0x3571, 0x4273, 0x5936, 0x5939, 0x3934, 0x405b, 0x3e37, 0x5941, 0x4752, 0x3572, 0x3348, 0x3367, 0x3f21, 0x5949, 0x594e, 0x594a, 0x377d, 0x594f, 0x3b22, 0x3969, 0x3d26, 0x593d, 0x3b7d, 0x594c, 0x3b58, 0x594d, 0x3044, 0x5948, 0x4429, 0x3573, 0x3634, 0x594b, 0x3027, 0x3a43, 0x3f36, 0x4472, 0x4854, 0x5951, 0x415e, 0x422a, 0x3b2b, 0x5952, 0x5954, 0x5950, 0x4a61, 0x443d, 0x415c, 0x4a7b, 0x3c4e, 0x5960, 0x595f, 0x3f78, 0x377e, 0x5959, 0x3e39, 0x4668, 0x4731, 0x5957, 0x415d, 0x3c78, 0x595c, 0x3e38, 0x5956, 0x595b, 0x4753, 0x5955, 0x3721, 0x335d, 0x595d, 0x4e2b, 0x3a4e, 0x4335, 0x595a, 0x405c, 0x3935, 0x3f64, 0x3166, 0x413c, 0x5958, 0x3545, 0x3747, 0x444f, 0x595e, 0x415f, 0x5961, 0x5963, 0x4237, 0x5969, 0x5964, 0x5966, 0x4941, 0x4473, 0x5967, 0x4d2c, 0x4d48, 0x3439, 0x302e, 0x5965, 0x5962, 0x3478, 0x3167, 0x5968, 0x4d49, 0x596c, 0x423b, 0x5973, 0x596d, 0x596a, 0x5971, 0x5953, 0x596e, 0x5972, 0x4842, 0x456b, 0x596b, 0x596f, 0x3748, 0x3a71, 0x405d, 0x5977, 0x4526, 0x5974, 0x4b60, 0x5975, 0x5976, 0x4c4e, 0x4022, 0x3762, 0x597d, 0x3b35, 0x597a, 0x5979, 0x4732, 0x4635, 0x4531, 0x597b, 0x597c, 0x496f, 0x4745, 0x3b23, 0x4071, 0x4b50, 0x3349, 0x5a25, 0x597e, 0x4d4a, 0x5a27, 0x5a23, 0x5a24, 0x4160, 0x5a22, 0x593f, 0x5a26, 0x5a21, 0x5a2b, 0x5a2c, 0x4527, 0x5a2e, 0x3b24, 0x5a29, 0x353c, 0x5a2f, 0x5a28, 0x5a33, 0x5a32, 0x5a31, 0x5a34, 0x5a36, 0x3e71, 0x5a35, 0x5a39, 0x5a37, 0x5a38, 0x5970, 0x5a3b, 0x5a3a, 0x5978, 0x5a3c, 0x5a30, 0x3b59, 0x5a3d, 0x5a3e, 0x5a40, 0x5a3f, 0x5a41, 0x327e, 0x3936, 0x4a7c, 0x402f, 0x384e, 0x5a43, 0x5a46, 0x4952, 0x355f, 0x5a45, 0x5a44, 0x4754, 0x5a47, 0x3635, 0x5a49, 0x5a48, 0x343a, 0x3b36, 0x4658, 0x3749, 0x3f74, 0x5a4a, 0x4030, 0x4528, 0x495f, 0x5a4b, 0x5a4c, 0x5a4d, 0x4a38, 0x555d, 0x4046, 0x494c, 0x3a58, 0x4865, 0x4843, 0x454d, 0x4e41, 0x5a4f, 0x3c50, 0x5a50, 0x3036, 0x3654, 0x404d, 0x4960, 0x5a51, 0x3b42, 0x4347, 0x3b5b, 0x3f37, 0x5a52, 0x4a7d, 0x3177, 0x3b5c, 0x5a55, 0x5a53, 0x5a56, 0x4e39, 0x5a54, 0x407b, 0x5a57, 0x4232, 0x5a58, 0x347a, 0x5a5a, 0x5a59, 0x5a5b, 0x5a5c, 0x347b, 0x467c, 0x4336, 0x356c, 0x3b5d, 0x4161, 0x3d5c, 0x3030, 0x5a5d, 0x3222, 0x5a61, 0x3937, 0x5a60, 0x3a2b, 0x3e3a, 0x5a5f, 0x3e3b, 0x4c40, 0x3a2a, 0x3057, 0x404e, 0x5a66, 0x4031, 0x3147, 0x3d55, 0x4b66, 0x3a72, 0x3e3c, 0x4027, 0x5a65, 0x5a63, 0x5a64, 0x436b, 0x5b26, 0x5a6a, 0x3b7e, 0x3938, 0x5a68, 0x5a69, 0x3f38, 0x5a67, 0x3b2f, 0x5a6c, 0x5a6b, 0x5a70, 0x5a71, 0x5a6d, 0x3322, 0x5a6e, 0x5a6f, 0x4855, 0x4961, 0x374a, 0x5a72, 0x4032, 0x3e3d, 0x4352, 0x3647, 0x5a73, 0x5a77, 0x324b, 0x5a74, 0x5a76, 0x5a75, 0x3d6b, 0x4348, 0x3045, 0x5a78, 0x5a79, 0x442a, 0x4e71, 0x3b43, 0x4a6b, 0x4b3d, 0x5b22, 0x5a7b, 0x5a7e, 0x5a7d, 0x5a7a, 0x5b21, 0x465e, 0x5a7c, 0x5b23, 0x3d6c, 0x5b24, 0x4d4b, 0x4778, 0x5b25, 0x5b27, 0x5b28, 0x5b29, 0x364a, 0x3148, 0x3939, 0x5b2a, 0x5b2b, 0x3d71, 0x4162, 0x5258, 0x413e, 0x413d, 0x4258, 0x3a47, 0x5072, 0x376e, 0x4d2d, 0x4a7e, 0x497e, 0x5b2c, 0x3a73, 0x443f, 0x5b2d, 0x4f2f, 0x4b3e, 0x442b, 0x5b2e, 0x347c, 0x5b2f, 0x5b30, 0x4c5a, 0x4c24, 0x4b76, 0x4b5c, 0x3b25, 0x5b32, 0x3c6b, 0x4b51, 0x5b34, 0x5b37, 0x5b36, 0x3479, 0x3560, 0x5b33, 0x5b35, 0x5b38, 0x3f79, 0x4d7b, 0x3049, 0x3a60, 0x423c, 0x3c5d, 0x3e73, 0x5b3b, 0x454e, 0x5b39, 0x422b, 0x5b3a, 0x3e72, 0x4c5d, 0x5b3c, 0x5b3d, 0x4d68, 0x5b42, 0x393a, 0x4755, 0x5b3f, 0x456c, 0x5a5e, 0x5a62, 0x354f, 0x4747, 0x5b41, 0x3e3e, 0x4844, 0x5b47, 0x487a, 0x5b3e, 0x5b44, 0x5b43, 0x404f, 0x4b6d, 0x4e53, 0x4b67, 0x324c, 0x3b5e, 0x4f48, 0x5b46, 0x3f75, 0x5b45, 0x5b40, 0x384f, 0x5b4c, 0x5b4a, 0x324d, 0x5b48, 0x5b4e, 0x5b54, 0x4248, 0x4a41, 0x5b56, 0x4922, 0x5b55, 0x4770, 0x4b3f, 0x343b, 0x4077, 0x3d40, 0x4453, 0x4d2e, 0x5b51, 0x5b50, 0x5b52, 0x5b4f, 0x5b57, 0x5b4d, 0x5b4b, 0x5b53, 0x5b49, 0x436c, 0x4c78, 0x3c46, 0x3a74, 0x3a3a, 0x4b6f, 0x3341, 0x444e, 0x464a, 0x3149, 0x4072, 0x4034, 0x372a, 0x5b59, 0x393b, 0x337c, 0x5b5b, 0x3374, 0x5b61, 0x5b5e, 0x4073, 0x334b, 0x3a2c, 0x334a, 0x3a4f, 0x5b5c, 0x3765, 0x374b, 0x456d, 0x5b5a, 0x3046, 0x5b5d, 0x5b5f, 0x364d, 0x372c, 0x343c, 0x354b, 0x5b62, 0x3a79, 0x4b71, 0x3b37, 0x5b63, 0x4930, 0x5b6f, 0x3233, 0x5b64, 0x5b75, 0x5b65, 0x4e42, 0x5b6c, 0x475f, 0x5b74, 0x5b67, 0x3034, 0x5b69, 0x393c, 0x5b6b, 0x5b6a, 0x5b66, 0x5b71, 0x3e3f, 0x546d, 0x3868, 0x4d7c, 0x5b68, 0x4474, 0x3323, 0x3a2d, 0x5b60, 0x5b70, 0x3361, 0x5b6e, 0x5b72, 0x456e, 0x347e, 0x5c32, 0x4c49, 0x5b77, 0x347d, 0x5b7e, 0x4b40, 0x5c21, 0x5c23, 0x5c27, 0x5b79, 0x432a, 0x456f, 0x5c2b, 0x5b7c, 0x5c28, 0x5c22, 0x3f39, 0x5c2c, 0x4033, 0x5c2a, 0x343d, 0x4f50, 0x5b76, 0x5c26, 0x3058, 0x5b78, 0x4c3a, 0x5b7d, 0x3f22, 0x4447, 0x5b73, 0x5c25, 0x3f7a, 0x5c2f, 0x3371, 0x3821, 0x5c31, 0x5b7a, 0x5c30, 0x5c29, 0x5b7b, 0x5c2d, 0x5c2e, 0x5c3f, 0x464e, 0x5c24, 0x5c3b, 0x5c3d, 0x4458, 0x4d4c, 0x4976, 0x5c38, 0x424a, 0x5c3e, 0x413f, 0x5c35, 0x5c42, 0x5c41, 0x466f, 0x5c40, 0x466a, 0x5c44, 0x5c37, 0x3648, 0x5c3a, 0x3d5d, 0x4760, 0x5c3c, 0x364b, 0x5c34, 0x5c36, 0x5c33, 0x4f30, 0x335a, 0x5c39, 0x5c43, 0x3335, 0x3a67, 0x315d, 0x5c54, 0x4f31, 0x5c57, 0x3f3a, 0x5c56, 0x5c55, 0x5c52, 0x5c46, 0x5c63, 0x5c45, 0x5c58, 0x5c50, 0x5c4b, 0x5c48, 0x5c49, 0x5c51, 0x7422, 0x5c4e, 0x393d, 0x4448, 0x4164, 0x5c4c, 0x5c47, 0x5c4a, 0x4d4d, 0x4b6a, 0x5c4f, 0x5c59, 0x5c61, 0x5c5a, 0x5c67, 0x5c65, 0x5c60, 0x5c5f, 0x4450, 0x4165, 0x5c5d, 0x5c5b, 0x5c62, 0x5c68, 0x4875, 0x5c6e, 0x5c69, 0x5c6c, 0x5c66, 0x4374, 0x4938, 0x5c5c, 0x5c64, 0x3e40, 0x4c4f, 0x5c78, 0x5c6b, 0x3822, 0x3223, 0x335f, 0x5c53, 0x3e41, 0x5c70, 0x5c77, 0x3c79, 0x3372, 0x432e, 0x5c6d, 0x5c72, 0x5c76, 0x3636, 0x354c, 0x5c74, 0x3521, 0x464b, 0x5c73, 0x5c75, 0x5c6f, 0x5c71, 0x3360, 0x4349, 0x5c7c, 0x5c7a, 0x3869, 0x5c79, 0x5d21, 0x5b58, 0x5c7b, 0x5c7d, 0x5c7e, 0x5d2c, 0x5d28, 0x5b6d, 0x5d27, 0x5d26, 0x5d23, 0x5c6a, 0x5d25, 0x5d24, 0x5d2a, 0x4f26, 0x5d2d, 0x367b, 0x5d29, 0x5d2b, 0x4827, 0x5d2e, 0x5d32, 0x5d2f, 0x4d73, 0x5d30, 0x5c5e, 0x5d33, 0x5d34, 0x3135, 0x5d36, 0x3767, 0x3c21, 0x3655, 0x3224, 0x4d5f, 0x5d38, 0x5d37, 0x5d3a, 0x353d, 0x3656, 0x343e, 0x5d3d, 0x5d3c, 0x5d3e, 0x324e, 0x4337, 0x5d3f, 0x343f, 0x5d41, 0x5d40, 0x5d42, 0x5d43, 0x5d44, 0x3b5f, 0x4035, 0x3a21, 0x4970, 0x4a62, 0x4f44, 0x3b75, 0x3a50, 0x4e72, 0x5d45, 0x5d46, 0x3b60, 0x5d47, 0x5d48, 0x5d4a, 0x5d49, 0x4b58, 0x3d5e, 0x3c6c, 0x3b44, 0x5d4b, 0x5d4d, 0x3f23, 0x5d4c, 0x5d4e, 0x5d4f, 0x5d50, 0x5d51, 0x5d52, 0x5d54, 0x5d53, 0x5d55, 0x3225, 0x434a, 0x5d56, 0x3b26, 0x334c, 0x5d57, 0x4542, 0x544c, 0x3523, 0x5d58, 0x5d59, 0x4a6c, 0x4b68, 0x4647, 0x5d5a, 0x4866, 0x487b, 0x4c53, 0x5d5b, 0x5d5d, 0x5d5c, 0x5d5f, 0x5d5e, 0x5d61, 0x3b61, 0x4c31, 0x5d62, 0x5d63, 0x3524, 0x5d64, 0x5d66, 0x5d65, 0x3f65, 0x4939, 0x314a, 0x4845, 0x4475, 0x3d41, 0x3561, 0x4846, 0x3c2e, 0x5d68, 0x3440, 0x3178, 0x4672, 0x5d67, 0x393e, 0x4353, 0x5d69, 0x5d71, 0x5d6a, 0x4241, 0x3562, 0x5d72, 0x3768, 0x3525, 0x5d70, 0x5d6e, 0x5d6b, 0x4d60, 0x4440, 0x4659, 0x5d6c, 0x5d74, 0x5d73, 0x3723, 0x322d, 0x3a3b, 0x5d6d, 0x5d6f, 0x4b57, 0x4274, 0x4b77, 0x5d7c, 0x5d7d, 0x324f, 0x4a28, 0x4c7d, 0x5e21, 0x3c23, 0x3e42, 0x5d78, 0x5d7e, 0x3168, 0x3637, 0x5d75, 0x5d7a, 0x4074, 0x4771, 0x4867, 0x5d77, 0x4b21, 0x5d79, 0x5e24, 0x5e22, 0x5d7b, 0x4b22, 0x4748, 0x3563, 0x4525, 0x436d, 0x5e25, 0x5e23, 0x4259, 0x5d76, 0x314b, 0x4d4e, 0x5e30, 0x5e2f, 0x4076, 0x5e2c, 0x4d6c, 0x4636, 0x5e26, 0x4445, 0x314c, 0x393f, 0x5e29, 0x3d27, 0x5e2e, 0x5e2d, 0x5e28, 0x5e2b, 0x3368, 0x5e2a, 0x4749, 0x4e2e, 0x3e74, 0x4075, 0x5e36, 0x5e34, 0x494d, 0x5e31, 0x5e33, 0x313a, 0x3940, 0x4f32, 0x333d, 0x4962, 0x4d61, 0x3324, 0x3f3b, 0x5e35, 0x5e3a, 0x3e43, 0x4d30, 0x5e37, 0x5e32, 0x5e38, 0x4e5e, 0x4573, 0x4642, 0x3336, 0x3155, 0x5e3e, 0x5e41, 0x4e43, 0x4d64, 0x5e48, 0x5e42, 0x5e3f, 0x4e54, 0x5e45, 0x3d4a, 0x5e47, 0x5e4c, 0x4571, 0x5e4a, 0x5e44, 0x4338, 0x5e4b, 0x5e40, 0x5e46, 0x5e4d, 0x307c, 0x5e43, 0x5e4e, 0x3f3c, 0x3d5f, 0x4a25, 0x3a2e, 0x5e3b, 0x5e49, 0x453a, 0x4036, 0x3369, 0x3a51, 0x3e44, 0x5e3d, 0x3d42, 0x374c, 0x5e3c, 0x5e52, 0x3d6d, 0x383a, 0x5e61, 0x5e5b, 0x3574, 0x454f, 0x5e56, 0x5e5f, 0x302f, 0x3132, 0x3239, 0x5e58, 0x422c, 0x5e4f, 0x5e51, 0x3941, 0x5e62, 0x5e5d, 0x5e55, 0x5e5c, 0x4c2b, 0x5e5a, 0x5e5e, 0x3850, 0x3e45, 0x4339, 0x5e54, 0x4d2f, 0x5e57, 0x5e50, 0x4572, 0x5e53, 0x5e59, 0x4f51, 0x3c3e, 0x4b7e, 0x5e63, 0x482e, 0x5e6f, 0x383b, 0x3d60, 0x5e65, 0x4e2f, 0x3942, 0x5e72, 0x306e, 0x5e70, 0x5e64, 0x5e6a, 0x5e6c, 0x4d4f, 0x5e67, 0x452e, 0x5e69, 0x5e71, 0x5e6b, 0x4c47, 0x5e66, 0x3c22, 0x5e7e, 0x336a, 0x5e68, 0x5e6d, 0x5e6e, 0x426c, 0x425a, 0x5e76, 0x5e7c, 0x5e7a, 0x4529, 0x5f23, 0x5e77, 0x5e78, 0x5e60, 0x3579, 0x493a, 0x3c3f, 0x3977, 0x4f33, 0x5e74, 0x5f22, 0x3169, 0x4166, 0x4779, 0x3441, 0x4e7a, 0x4c21, 0x4452, 0x5e7b, 0x5e7d, 0x4132, 0x5f21, 0x5e79, 0x5e73, 0x3443, 0x3769, 0x5f2f, 0x5f2a, 0x4078, 0x3363, 0x3d61, 0x5f33, 0x5f2c, 0x442c, 0x5f29, 0x4459, 0x5f4c, 0x5f26, 0x5f25, 0x5f2e, 0x5f28, 0x5f27, 0x5f2d, 0x4021, 0x5f24, 0x5f30, 0x5f31, 0x3442, 0x5f36, 0x5f35, 0x5f37, 0x5f3a, 0x4543, 0x5f34, 0x5f38, 0x3763, 0x4279, 0x5f32, 0x473b, 0x5f39, 0x5f3e, 0x5f3c, 0x5f3f, 0x5f42, 0x5f3b, 0x396a, 0x4728, 0x5e39, 0x4d74, 0x5f3d, 0x5f41, 0x4275, 0x5f40, 0x5f2b, 0x6f69, 0x5f45, 0x5f49, 0x5f47, 0x5f43, 0x5f44, 0x5f48, 0x5f46, 0x494e, 0x5f4e, 0x5f4b, 0x5f4a, 0x5f4d, 0x4654, 0x5f4f, 0x4375, 0x426d, 0x4025, 0x5f50, 0x5f52, 0x5f51, 0x5e75, 0x5f53, 0x4667, 0x5f54, 0x3250, 0x4574, 0x3325, 0x3564, 0x3c5e, 0x3a52, 0x4f27, 0x3f66, 0x316a, 0x5f56, 0x5f55, 0x5f59, 0x433a, 0x5f5c, 0x5f57, 0x5f5b, 0x5f5a, 0x4540, 0x3059, 0x4e75, 0x5f5e, 0x3128, 0x5f60, 0x5f5f, 0x5f5d, 0x5f58, 0x4b23, 0x5f62, 0x5f61, 0x316b, 0x5f64, 0x4a32, 0x5f63, 0x4c35, 0x3e47, 0x4133, 0x3e46, 0x4e7b, 0x5f6a, 0x4079, 0x5f66, 0x5f6b, 0x316c, 0x5f69, 0x4761, 0x5f65, 0x5f68, 0x3e48, 0x4851, 0x5f6c, 0x3c51, 0x407a, 0x5f6f, 0x5f67, 0x3727, 0x5f6d, 0x4d50, 0x5f70, 0x7426, 0x3d4f, 0x5f71, 0x5f72, 0x472e, 0x5f74, 0x5f75, 0x4733, 0x4575, 0x5f77, 0x5f79, 0x4e55, 0x5f76, 0x5f78, 0x316d, 0x5f73, 0x535b, 0x5f7a, 0x4167, 0x3b38, 0x5f7c, 0x5f7b, 0x3f24, 0x5259, 0x5f7d, 0x6021, 0x5f6e, 0x5f7e, 0x6022, 0x477a, 0x6023, 0x6024, 0x6025, 0x6026, 0x445e, 0x6028, 0x6027, 0x6029, 0x602a, 0x3c5f, 0x4963, 0x4c6c, 0x602b, 0x602c, 0x4156, 0x3c24, 0x602d, 0x602e, 0x602f, 0x4a52, 0x4847, 0x6030, 0x4757, 0x442d, 0x6031, 0x3267, 0x356d, 0x4c46, 0x4c36, 0x3234, 0x4f34, 0x4b52, 0x4a2a, 0x4037, 0x6032, 0x4643, 0x3823, 0x6033, 0x3a54, 0x6035, 0x6034, 0x6036, 0x6037, 0x6038, 0x353e, 0x6039, 0x603a, 0x3824, 0x4848, 0x603c, 0x3e75, 0x603b, 0x3638, 0x603d, 0x603f, 0x603e, 0x6040, 0x3851, 0x6041, 0x3669, 0x4140, 0x397d, 0x6043, 0x6044, 0x6042, 0x3c6d, 0x4648, 0x3639, 0x6046, 0x432c, 0x6045, 0x4f35, 0x4762, 0x6049, 0x604b, 0x6048, 0x4c54, 0x604a, 0x604c, 0x4e44, 0x6050, 0x604f, 0x4376, 0x472d, 0x3825, 0x604e, 0x604d, 0x4d31, 0x4d32, 0x6051, 0x316e, 0x3976, 0x3b62, 0x6052, 0x6053, 0x6055, 0x3d43, 0x6057, 0x6056, 0x6058, 0x334d, 0x605a, 0x6059, 0x605c, 0x605b, 0x383c, 0x4e28, 0x364c, 0x3226, 0x366a, 0x3461, 0x4e68, 0x605e, 0x6060, 0x6061, 0x3251, 0x605d, 0x3b39, 0x4441, 0x605f, 0x6064, 0x3c6e, 0x6062, 0x373e, 0x4849, 0x6063, 0x607e, 0x6069, 0x383d, 0x3565, 0x6066, 0x4d7d, 0x4e30, 0x4276, 0x6068, 0x606a, 0x4e56, 0x3657, 0x487c, 0x474a, 0x606b, 0x606d, 0x6070, 0x606c, 0x606f, 0x386a, 0x314d, 0x6071, 0x3f70, 0x606e, 0x4e5c, 0x6074, 0x7424, 0x6072, 0x6075, 0x6067, 0x6073, 0x3a3c, 0x6076, 0x6077, 0x4d7e, 0x6078, 0x6079, 0x6065, 0x607a, 0x3444, 0x3c25, 0x607b, 0x607c, 0x607d, 0x313b, 0x6121, 0x493b, 0x6122, 0x3424, 0x6123, 0x6124, 0x6125, 0x6127, 0x6128, 0x6126, 0x4953, 0x612a, 0x6129, 0x612c, 0x612b, 0x612d, 0x612e, 0x6130, 0x612f, 0x3979, 0x6132, 0x6131, 0x3445, 0x3f53, 0x453c, 0x6133, 0x4038, 0x3b3a, 0x3179, 0x6134, 0x4d51, 0x4a63, 0x6135, 0x4544, 0x4d33, 0x3943, 0x3f3d, 0x434b, 0x5234, 0x442e, 0x3268, 0x6136, 0x6137, 0x613c, 0x613a, 0x6139, 0x5a42, 0x3326, 0x6138, 0x305a, 0x482a, 0x484a, 0x4e31, 0x613d, 0x613b, 0x435c, 0x4026, 0x482b, 0x492d, 0x613f, 0x4e2c, 0x374d, 0x6140, 0x613e, 0x4856, 0x6141, 0x6142, 0x305b, 0x3e76, 0x6147, 0x6144, 0x466d, 0x6143, 0x3526, 0x614a, 0x6145, 0x6146, 0x6149, 0x6148, 0x4925, 0x4142, 0x4141, 0x353f, 0x614b, 0x614c, 0x614d, 0x614f, 0x614e, 0x3156, 0x6157, 0x4868, 0x6151, 0x6153, 0x6155, 0x3f3e, 0x6156, 0x6154, 0x3c40, 0x6150, 0x6152, 0x4942, 0x3e49, 0x6159, 0x6158, 0x615a, 0x3c26, 0x3a2f, 0x4577, 0x615b, 0x444b, 0x615d, 0x4e21, 0x615c, 0x4169, 0x6162, 0x6164, 0x6165, 0x4354, 0x6163, 0x6160, 0x615e, 0x615f, 0x6161, 0x6168, 0x6166, 0x6167, 0x6169, 0x616b, 0x616c, 0x616d, 0x616e, 0x616a, 0x6170, 0x616f, 0x6171, 0x4e45, 0x6174, 0x6172, 0x6173, 0x3462, 0x4c7e, 0x4a4a, 0x6176, 0x6175, 0x6177, 0x6178, 0x617c, 0x6179, 0x617a, 0x617b, 0x617d, 0x617e, 0x6221, 0x6222, 0x6223, 0x482f, 0x4550, 0x6224, 0x4772, 0x4934, 0x6225, 0x6226, 0x452a, 0x3327, 0x3944, 0x6227, 0x6228, 0x6229, 0x3b29, 0x622b, 0x622a, 0x622c, 0x622d, 0x4869, 0x622e, 0x622f, 0x7369, 0x6230, 0x6231, 0x6232, 0x3b2e, 0x6233, 0x4756, 0x4b5f, 0x314e, 0x3157, 0x6234, 0x6236, 0x6235, 0x4570, 0x4039, 0x5d39, 0x6237, 0x4c41, 0x6238, 0x3446, 0x4857, 0x6239, 0x623a, 0x623b, 0x4c5c, 0x4c55, 0x443e, 0x416a, 0x623d, 0x3d62, 0x3e4a, 0x6240, 0x623f, 0x623e, 0x487d, 0x3447, 0x3829, 0x6246, 0x6243, 0x3f3f, 0x4c32, 0x6242, 0x6244, 0x6245, 0x6241, 0x6247, 0x6248, 0x442f, 0x3463, 0x4365, 0x6249, 0x624a, 0x624d, 0x3f67, 0x4644, 0x624e, 0x4b53, 0x624b, 0x624c, 0x6251, 0x6250, 0x624f, 0x6253, 0x6252, 0x6254, 0x6256, 0x6255, 0x4a4d, 0x3d56, 0x4e46, 0x6257, 0x4637, 0x6258, 0x6259, 0x625d, 0x625b, 0x625c, 0x625a, 0x625e, 0x625f, 0x6260, 0x6261, 0x4c37, 0x6262, 0x4c70, 0x6263, 0x434e, 0x476a, 0x366b, 0x433b, 0x6264, 0x363a, 0x4050, 0x6265, 0x3a3d, 0x6266, 0x6267, 0x3826, 0x3a55, 0x6269, 0x4556, 0x3a56, 0x354e, 0x4b24, 0x474b, 0x4557, 0x395c, 0x626b, 0x3e4b, 0x4e32, 0x3945, 0x3827, 0x4823, 0x626d, 0x626f, 0x386b, 0x626e, 0x4476, 0x6271, 0x3337, 0x626c, 0x486a, 0x3130, 0x3a6c, 0x4f52, 0x6270, 0x6272, 0x4a4b, 0x4059, 0x6274, 0x6275, 0x6273, 0x334e, 0x627b, 0x627a, 0x3c27, 0x627c, 0x6277, 0x627d, 0x6278, 0x4858, 0x6276, 0x6279, 0x6322, 0x6321, 0x4b61, 0x627e, 0x306b, 0x6324, 0x6323, 0x3e4c, 0x6325, 0x4143, 0x6327, 0x6326, 0x6328, 0x6268, 0x626a, 0x632a, 0x6329, 0x3c28, 0x4e69, 0x3c52, 0x632b, 0x3737, 0x3540, 0x3527, 0x3b63, 0x4d34, 0x6331, 0x6330, 0x4144, 0x632d, 0x632f, 0x3d4b, 0x3f40, 0x632e, 0x632c, 0x472a, 0x3e4d, 0x493c, 0x3a57, 0x4578, 0x6332, 0x6333, 0x6349, 0x3658, 0x4f3d, 0x4135, 0x6334, 0x3252, 0x4477, 0x4a21, 0x6335, 0x357a, 0x6336, 0x6338, 0x6339, 0x4729, 0x633a, 0x633b, 0x633c, 0x3659, 0x3253, 0x4645, 0x3d28, 0x3b64, 0x633d, 0x3d29, 0x324a, 0x4943, 0x633e, 0x486b, 0x4145, 0x6341, 0x6342, 0x4769, 0x3f41, 0x633f, 0x4361, 0x6340, 0x3e4e, 0x305c, 0x3529, 0x6343, 0x4478, 0x6344, 0x4047, 0x4c2d, 0x4923, 0x6345, 0x6346, 0x4355, 0x4e47, 0x6348, 0x6347, 0x3c6f, 0x634a, 0x3070, 0x634d, 0x634b, 0x3254, 0x374e, 0x634c, 0x3946, 0x3972, 0x4a66, 0x634e, 0x4b54, 0x6350, 0x4051, 0x314f, 0x323a, 0x302c, 0x634f, 0x6351, 0x6352, 0x3e77, 0x6353, 0x334f, 0x6355, 0x376a, 0x3566, 0x6356, 0x3675, 0x6357, 0x407c, 0x464d, 0x4060, 0x3a75, 0x6358, 0x4362, 0x416b, 0x635a, 0x635c, 0x6359, 0x635b, 0x3722, 0x635d, 0x3726, 0x3567, 0x4d52, 0x635f, 0x6360, 0x312e, 0x6363, 0x3376, 0x6362, 0x6361, 0x6365, 0x635e, 0x6366, 0x4e29, 0x6367, 0x6368, 0x5474, 0x636a, 0x6369, 0x636b, 0x636c, 0x4e35, 0x636d, 0x706f, 0x3e4f, 0x636e, 0x636f, 0x3d57, 0x4638, 0x6370, 0x4328, 0x6371, 0x433c, 0x6372, 0x3625, 0x513f, 0x435d, 0x3c33, 0x3448, 0x6373, 0x6422, 0x6376, 0x3568, 0x6375, 0x6424, 0x6374, 0x3e50, 0x6378, 0x6379, 0x452b, 0x637a, 0x335e, 0x3f5a, 0x4964, 0x637c, 0x4268, 0x6377, 0x637b, 0x637d, 0x3a7b, 0x6426, 0x492e, 0x4826, 0x4579, 0x365a, 0x6425, 0x6423, 0x4835, 0x637e, 0x435e, 0x457b, 0x457a, 0x3a76, 0x6438, 0x6428, 0x642a, 0x642d, 0x642e, 0x642b, 0x642c, 0x6429, 0x6427, 0x6421, 0x4a4f, 0x3255, 0x6435, 0x6432, 0x6437, 0x6436, 0x4773, 0x4c27, 0x3b3b, 0x6430, 0x6439, 0x6434, 0x6433, 0x642f, 0x6431, 0x3449, 0x433d, 0x407d, 0x4822, 0x643e, 0x4824, 0x4061, 0x643b, 0x484f, 0x643f, 0x4a53, 0x435b, 0x643a, 0x643c, 0x643d, 0x6440, 0x3c44, 0x4646, 0x6445, 0x6444, 0x6441, 0x4f36, 0x644a, 0x644e, 0x644b, 0x6447, 0x6448, 0x644d, 0x6442, 0x5255, 0x6449, 0x6443, 0x644c, 0x6452, 0x344a, 0x644f, 0x6450, 0x6451, 0x6454, 0x6453, 0x4876, 0x6455, 0x4e7c, 0x4a6d, 0x645a, 0x6457, 0x6456, 0x4052, 0x6459, 0x645b, 0x6458, 0x645f, 0x645c, 0x645d, 0x6446, 0x645e, 0x6460, 0x6461, 0x4a46, 0x6462, 0x4c62, 0x364e, 0x3729, 0x6463, 0x4a34, 0x3f68, 0x4c30, 0x6464, 0x4e33, 0x4774, 0x4146, 0x4734, 0x3d4d, 0x3040, 0x6469, 0x6467, 0x6465, 0x3421, 0x3e51, 0x646a, 0x6468, 0x6466, 0x646e, 0x646d, 0x646c, 0x646b, 0x646f, 0x6470, 0x403a, 0x6471, 0x6473, 0x6472, 0x3852, 0x4138, 0x6475, 0x457c, 0x6474, 0x6476, 0x4a35, 0x416c, 0x3947, 0x6477, 0x4e48, 0x6479, 0x647a, 0x647b, 0x647c, 0x3b65, 0x647d, 0x374f, 0x356a, 0x352a, 0x6521, 0x4c73, 0x3948, 0x647e, 0x6524, 0x4c66, 0x473c, 0x4933, 0x3d63, 0x6523, 0x3c53, 0x3949, 0x3b66, 0x3569, 0x4a36, 0x6522, 0x4147, 0x4b42, 0x3a77, 0x3b67, 0x445d, 0x6527, 0x4e5f, 0x3a59, 0x6528, 0x3f42, 0x652a, 0x3e52, 0x3a30, 0x6529, 0x3d2a, 0x383e, 0x4148, 0x6525, 0x652b, 0x6526, 0x3750, 0x652e, 0x6532, 0x376b, 0x652d, 0x6536, 0x394a, 0x4d6d, 0x303c, 0x6533, 0x356b, 0x6530, 0x6531, 0x457d, 0x652f, 0x652c, 0x3328, 0x4064, 0x3828, 0x6538, 0x6535, 0x6537, 0x6534, 0x3751, 0x4233, 0x6539, 0x416e, 0x6546, 0x6542, 0x653c, 0x6540, 0x3c7a, 0x305d, 0x653b, 0x6543, 0x6547, 0x394b, 0x4c56, 0x4456, 0x653d, 0x6545, 0x653a, 0x433e, 0x653f, 0x303d, 0x4c4a, 0x653e, 0x365b, 0x486c, 0x416d, 0x4e50, 0x3d6f, 0x656e, 0x6548, 0x407e, 0x6544, 0x6549, 0x654b, 0x4479, 0x654e, 0x654a, 0x4a54, 0x344b, 0x4c4b, 0x305e, 0x654d, 0x4e7d, 0x654c, 0x316f, 0x466c, 0x654f, 0x6556, 0x6550, 0x6557, 0x6553, 0x477b, 0x3c4a, 0x6555, 0x6552, 0x6558, 0x6551, 0x3d44, 0x4b25, 0x3d4c, 0x6554, 0x6560, 0x655c, 0x655f, 0x655d, 0x6561, 0x655b, 0x6541, 0x4053, 0x484b, 0x655e, 0x6559, 0x4121, 0x3752, 0x3d2b, 0x3f25, 0x4136, 0x6564, 0x6566, 0x6567, 0x6563, 0x6565, 0x655a, 0x6562, 0x656a, 0x6569, 0x4b7a, 0x372b, 0x6568, 0x656c, 0x656b, 0x656f, 0x6571, 0x3b3c, 0x656d, 0x6572, 0x6573, 0x6574, 0x657a, 0x453b, 0x6576, 0x6575, 0x6577, 0x6578, 0x6579, 0x657b, 0x657c, 0x344c, 0x657d, 0x657e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6625, 0x6626, 0x6628, 0x6627, 0x6629, 0x662a, 0x662b, 0x662e, 0x662c, 0x662d, 0x3a61, 0x3753, 0x4356, 0x4833, 0x3d70, 0x474d, 0x486d, 0x662f, 0x586d, 0x6630, 0x6632, 0x4d65, 0x6631, 0x6634, 0x6633, 0x4d53, 0x6635, 0x487e, 0x6636, 0x6639, 0x6638, 0x6637, 0x663a, 0x3732, 0x4122, 0x3541, 0x663e, 0x663b, 0x663c, 0x663f, 0x6640, 0x663d, 0x3129, 0x3227, 0x6642, 0x6643, 0x6644, 0x4d62, 0x3d2c, 0x6646, 0x6645, 0x3f69, 0x6647, 0x6648, 0x6649, 0x3465, 0x344d, 0x664a, 0x664b, 0x4b5d, 0x4d63, 0x4d54, 0x4f37, 0x394d, 0x664e, 0x3c54, 0x664d, 0x664f, 0x3c29, 0x4251, 0x6650, 0x394c, 0x4c57, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655, 0x3c2a, 0x4c6d, 0x6657, 0x433f, 0x6656, 0x6659, 0x6658, 0x665a, 0x403b, 0x665b, 0x665c, 0x4a39, 0x665d, 0x416f, 0x665e, 0x665f, 0x4e7e, 0x6662, 0x6661, 0x6660, 0x4430, 0x6663, 0x3f26, 0x6664, 0x6665, 0x4f38, 0x6666, 0x6667, 0x6669, 0x6668, 0x4825, 0x4679, 0x4f3e, 0x4829, 0x666b, 0x3e53, 0x492a, 0x666c, 0x666a, 0x344e, 0x3854, 0x3b68, 0x486e, 0x382a, 0x4b43, 0x666f, 0x666d, 0x394e, 0x394f, 0x3069, 0x3a68, 0x4759, 0x305f, 0x6674, 0x4340, 0x4758, 0x425b, 0x6676, 0x6672, 0x6675, 0x6670, 0x6673, 0x4b26, 0x3855, 0x307d, 0x6671, 0x6678, 0x6679, 0x4639, 0x363b, 0x6726, 0x473d, 0x3b69, 0x363c, 0x4048, 0x4f46, 0x4c2e, 0x6677, 0x4054, 0x3553, 0x667a, 0x667c, 0x667b, 0x667d, 0x4326, 0x473e, 0x4431, 0x6723, 0x6722, 0x667e, 0x3f55, 0x4965, 0x6725, 0x6724, 0x3950, 0x4f53, 0x6735, 0x6729, 0x672a, 0x3c70, 0x6728, 0x3978, 0x6727, 0x672b, 0x4432, 0x4a22, 0x4123, 0x425c, 0x672f, 0x6730, 0x672c, 0x672d, 0x672e, 0x3951, 0x6736, 0x6732, 0x4966, 0x4b6c, 0x4928, 0x6731, 0x6734, 0x6733, 0x4b44, 0x6737, 0x6738, 0x4137, 0x6739, 0x673b, 0x673f, 0x673c, 0x673a, 0x473f, 0x673d, 0x673e, 0x3232, 0x6745, 0x6740, 0x6741, 0x6742, 0x4221, 0x6744, 0x6743, 0x6746, 0x6747, 0x6748, 0x3f43, 0x3269, 0x6749, 0x4e57, 0x3c2b, 0x3d2d, 0x3b6a, 0x4357, 0x674a, 0x674b, 0x3131, 0x674c, 0x674d, 0x674e, 0x674f, 0x6750, 0x363d, 0x5a2a, 0x6751, 0x4065, 0x6752, 0x3c4b, 0x6753, 0x5030, 0x6754, 0x4a5e, 0x345c, 0x4124, 0x3d58, 0x4971, 0x3d2e, 0x6755, 0x3952, 0x6756, 0x484c, 0x6764, 0x6758, 0x4249, 0x4775, 0x383f, 0x6757, 0x4125, 0x6759, 0x447a, 0x675b, 0x675a, 0x675d, 0x675c, 0x675e, 0x6760, 0x675f, 0x344f, 0x6761, 0x6762, 0x6763, 0x3a31, 0x4e49, 0x6765, 0x3f27, 0x3170, 0x6766, 0x6767, 0x6768, 0x3072, 0x6769, 0x676a, 0x4967, 0x3c47, 0x676c, 0x3329, 0x3032, 0x676b, 0x676e, 0x474e, 0x3f44, 0x3256, 0x4b27, 0x375d, 0x365c, 0x676d, 0x326a, 0x3423, 0x3171, 0x6772, 0x4e6a, 0x425d, 0x4944, 0x677e, 0x3257, 0x677c, 0x677a, 0x6771, 0x676f, 0x6770, 0x3c63, 0x366c, 0x4377, 0x4651, 0x3151, 0x6774, 0x6773, 0x6779, 0x6775, 0x6778, 0x4c50, 0x6777, 0x3258, 0x337d, 0x677b, 0x677d, 0x3754, 0x6823, 0x682c, 0x682d, 0x302b, 0x6834, 0x3071, 0x682b, 0x682a, 0x6825, 0x6824, 0x6822, 0x6821, 0x4363, 0x427b, 0x6827, 0x6826, 0x6829, 0x4170, 0x3755, 0x3141, 0x6828, 0x3953, 0x4171, 0x683a, 0x683b, 0x3259, 0x322e, 0x6838, 0x682e, 0x6836, 0x683d, 0x6837, 0x6835, 0x6776, 0x6833, 0x682f, 0x3450, 0x6831, 0x683c, 0x6832, 0x683e, 0x6830, 0x477c, 0x4d69, 0x6839, 0x684f, 0x6847, 0x3f7b, 0x3546, 0x365d, 0x6842, 0x325b, 0x3e54, 0x6845, 0x3a5a, 0x4551, 0x684a, 0x4a6e, 0x6841, 0x325a, 0x3856, 0x4929, 0x684b, 0x683f, 0x6848, 0x6852, 0x6843, 0x6844, 0x463a, 0x6849, 0x6846, 0x4b28, 0x684c, 0x3060, 0x6840, 0x684e, 0x684d, 0x476b, 0x6854, 0x685f, 0x337e, 0x6862, 0x6850, 0x6855, 0x4d6e, 0x685e, 0x4d55, 0x4e2a, 0x4378, 0x336b, 0x4972, 0x6864, 0x4621, 0x3031, 0x685d, 0x6859, 0x4172, 0x6853, 0x685b, 0x6860, 0x472c, 0x302a, 0x6858, 0x6861, 0x4978, 0x685c, 0x6857, 0x3e55, 0x3d2f, 0x3c2c, 0x4c58, 0x4947, 0x6867, 0x6870, 0x685a, 0x3377, 0x3e78, 0x6865, 0x686a, 0x4173, 0x6866, 0x686d, 0x435f, 0x686e, 0x4d56, 0x6863, 0x3338, 0x6869, 0x686c, 0x4c2c, 0x686f, 0x6868, 0x686b, 0x4b29, 0x4f21, 0x6873, 0x687a, 0x6872, 0x3c43, 0x6851, 0x4a4e, 0x4c22, 0x6879, 0x6878, 0x6874, 0x6875, 0x3136, 0x6877, 0x6871, 0x4455, 0x6876, 0x307e, 0x4222, 0x4a43, 0x687b, 0x6921, 0x4859, 0x687e, 0x3e56, 0x3c49, 0x6923, 0x363e, 0x6924, 0x4979, 0x687d, 0x6856, 0x687c, 0x4f4f, 0x4622, 0x4973, 0x692b, 0x6931, 0x6932, 0x6925, 0x4776, 0x692f, 0x6927, 0x6929, 0x6933, 0x6928, 0x692c, 0x3172, 0x4665, 0x692d, 0x6930, 0x6926, 0x4126, 0x692a, 0x3b27, 0x3f45, 0x3730, 0x4c74, 0x4c79, 0x3d72, 0x6937, 0x6935, 0x4f4e, 0x6934, 0x4d75, 0x6936, 0x6938, 0x6939, 0x693c, 0x693a, 0x4623, 0x693b, 0x484d, 0x692e, 0x3d73, 0x693d, 0x6942, 0x4174, 0x6941, 0x6922, 0x6943, 0x4149, 0x693e, 0x6940, 0x693f, 0x5d31, 0x5d22, 0x6945, 0x6944, 0x4d76, 0x623c, 0x6946, 0x6947, 0x6948, 0x3857, 0x3554, 0x694a, 0x515d, 0x3575, 0x4e3a, 0x3673, 0x694b, 0x694c, 0x436e, 0x694d, 0x467a, 0x303a, 0x3263, 0x6952, 0x6953, 0x694e, 0x3b3d, 0x694f, 0x4742, 0x6950, 0x6951, 0x695b, 0x6955, 0x6958, 0x6954, 0x6956, 0x6957, 0x3c58, 0x6959, 0x4341, 0x3756, 0x3342, 0x695c, 0x333f, 0x6961, 0x695d, 0x6960, 0x483a, 0x695e, 0x695f, 0x4948, 0x485a, 0x6962, 0x427d, 0x696c, 0x6968, 0x326b, 0x6966, 0x4b2a, 0x6967, 0x6964, 0x6965, 0x696a, 0x696d, 0x696b, 0x6969, 0x6963, 0x4358, 0x6974, 0x4c2a, 0x6972, 0x6973, 0x696e, 0x6970, 0x6971, 0x696f, 0x4066, 0x4f39, 0x6978, 0x6979, 0x6a21, 0x3f2a, 0x697b, 0x697e, 0x6976, 0x6975, 0x6a22, 0x325c, 0x697c, 0x6a23, 0x697d, 0x697a, 0x4433, 0x6977, 0x4768, 0x6a27, 0x4d3b, 0x6a26, 0x6a25, 0x6a2e, 0x6a28, 0x6a30, 0x4d66, 0x6a33, 0x6a2a, 0x6a2b, 0x6a2f, 0x6a32, 0x6a31, 0x6a29, 0x6a2c, 0x6a3d, 0x6a36, 0x6a34, 0x6a35, 0x6a3a, 0x6a3b, 0x332a, 0x3542, 0x6a39, 0x6a24, 0x6a38, 0x6a3c, 0x6a37, 0x6a3e, 0x6a40, 0x6a3f, 0x6a42, 0x6a41, 0x695a, 0x6a46, 0x6a43, 0x6a44, 0x6a45, 0x6a47, 0x376c, 0x6a49, 0x6a48, 0x3d30, 0x3954, 0x5e27, 0x6a4a, 0x3d51, 0x3339, 0x6a4b, 0x3152, 0x3e57, 0x6a4c, 0x3955, 0x6a4d, 0x3061, 0x493d, 0x6a4e, 0x3f6a, 0x6a55, 0x6a52, 0x436f, 0x6a53, 0x6a50, 0x365e, 0x6a4f, 0x6a56, 0x3736, 0x425e, 0x6a5c, 0x6a58, 0x4235, 0x6a57, 0x6a5a, 0x6a51, 0x6a5b, 0x6a5d, 0x486f, 0x6a59, 0x6a5e, 0x6a60, 0x3853, 0x6a54, 0x3041, 0x6a5f, 0x3a5b, 0x4e76, 0x6a61, 0x6a62, 0x4175, 0x4e22, 0x6a63, 0x4d35, 0x6a64, 0x6a65, 0x4a64, 0x6a66, 0x3a40, 0x4e23, 0x6a6b, 0x6a6c, 0x3e58, 0x6a6a, 0x4d67, 0x6a67, 0x6a69, 0x403d, 0x3f7e, 0x6a68, 0x6a6d, 0x4a23, 0x6a6f, 0x6a6e, 0x336c, 0x4b2b, 0x6a70, 0x6a7c, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a79, 0x6a7a, 0x6a78, 0x6a76, 0x6a71, 0x6a77, 0x6a7b, 0x7037, 0x3228, 0x6a7e, 0x365f, 0x6a7d, 0x6b22, 0x6b21, 0x6b24, 0x6b23, 0x6b25, 0x3d31, 0x6b26, 0x6b27, 0x6b28, 0x403e, 0x4d57, 0x6b29, 0x4a24, 0x4746, 0x6b2a, 0x6b2b, 0x382b, 0x352c, 0x6b2c, 0x3b6b, 0x4741, 0x6b2d, 0x3350, 0x6b2e, 0x6b30, 0x4d77, 0x6b2f, 0x3f46, 0x6b31, 0x6b32, 0x6b33, 0x3451, 0x6b34, 0x6b35, 0x6b36, 0x6b37, 0x3351, 0x6b38, 0x6b39, 0x6b3a, 0x3272, 0x3f28, 0x6b3b, 0x6b3c, 0x6b3d, 0x3840, 0x447b, 0x6b3e, 0x3757, 0x3f56, 0x6b41, 0x4624, 0x6b40, 0x3731, 0x6b3f, 0x4277, 0x352d, 0x6b42, 0x6b43, 0x3e59, 0x376d, 0x6b44, 0x4b2c, 0x405f, 0x3576, 0x4c75, 0x414a, 0x6b45, 0x3f47, 0x4370, 0x3e5a, 0x6b46, 0x6b49, 0x6b4a, 0x3a3e, 0x4242, 0x6b48, 0x3e5b, 0x493e, 0x6b47, 0x3b6c, 0x3153, 0x6b4e, 0x3758, 0x3b6e, 0x3b6d, 0x4f4d, 0x6b4d, 0x6b4c, 0x4127, 0x354d, 0x4f43, 0x333a, 0x3e5c, 0x6b4b, 0x6b50, 0x6b51, 0x6b4f, 0x3858, 0x4d40, 0x3b6f, 0x4727, 0x6b54, 0x4040, 0x4342, 0x4d36, 0x6b57, 0x386c, 0x403f, 0x6b53, 0x6b58, 0x386d, 0x6b55, 0x6b56, 0x6b52, 0x4062, 0x4649, 0x432f, 0x325d, 0x4870, 0x3543, 0x4434, 0x6b5b, 0x6b59, 0x434c, 0x4041, 0x3452, 0x6b5a, 0x3f5b, 0x4e4a, 0x4f40, 0x6b5c, 0x6b67, 0x4435, 0x6b66, 0x6b63, 0x6b6b, 0x6b64, 0x6b60, 0x447c, 0x6b5f, 0x6b5d, 0x4d21, 0x3b70, 0x6b61, 0x6b5e, 0x6b65, 0x3d74, 0x3841, 0x427a, 0x4b45, 0x315a, 0x3062, 0x4625, 0x6b69, 0x6b68, 0x4666, 0x6b6d, 0x6b62, 0x6b6c, 0x6b6e, 0x382c, 0x6b6a, 0x3956, 0x3c55, 0x6b6f, 0x4d58, 0x6b72, 0x6b75, 0x6b73, 0x4935, 0x6b70, 0x3660, 0x6b74, 0x6b76, 0x6b7a, 0x6b77, 0x6b79, 0x6b78, 0x6b7b, 0x3c31, 0x6b7d, 0x6b7c, 0x4968, 0x6c21, 0x3759, 0x6b7e, 0x6c22, 0x6c23, 0x3544, 0x6641, 0x3e79, 0x6c24, 0x386e, 0x6c25, 0x6c26, 0x3b3e, 0x5a4e, 0x6c27, 0x6c28, 0x3d32, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x432b, 0x6c2e, 0x6c30, 0x6c2f, 0x4626, 0x6c31, 0x4b2d, 0x6c32, 0x6c33, 0x6c34, 0x6c35, 0x465a, 0x3e5d, 0x6c36, 0x396b, 0x502e, 0x6c37, 0x6c38, 0x493f, 0x6c39, 0x6c41, 0x6c3a, 0x6c3c, 0x6c3b, 0x6c3d, 0x4b46, 0x6c3e, 0x6c3f, 0x6c40, 0x6c42, 0x332d, 0x4467, 0x4969, 0x3a62, 0x3957, 0x494f, 0x325f, 0x484e, 0x6c45, 0x3453, 0x4055, 0x6c44, 0x6c49, 0x4379, 0x4c63, 0x6c47, 0x6c48, 0x352e, 0x6c4a, 0x4763, 0x425f, 0x4871, 0x453d, 0x6c46, 0x4b47, 0x326c, 0x6c4c, 0x4f28, 0x4442, 0x4f45, 0x3b71, 0x6c4b, 0x4231, 0x6c5c, 0x4128, 0x4678, 0x4950, 0x6c4f, 0x3b3f, 0x3b72, 0x3e5e, 0x4765, 0x382d, 0x6c4e, 0x6c4d, 0x496a, 0x3c41, 0x4552, 0x6c51, 0x6c52, 0x3958, 0x6c50, 0x6c53, 0x6c54, 0x6c56, 0x4223, 0x6c55, 0x3466, 0x6c58, 0x6c57, 0x6c59, 0x6c5b, 0x6c5d, 0x6c5e, 0x4056, 0x3c4f, 0x6c5f, 0x3352, 0x6c60, 0x4176, 0x6c61, 0x6c62, 0x496b, 0x352f, 0x6c63, 0x4436, 0x315b, 0x6c64, 0x3c71, 0x3f76, 0x422d, 0x6c67, 0x6c66, 0x6c65, 0x6c6d, 0x6c6b, 0x6c68, 0x6c6a, 0x6c69, 0x6c6c, 0x3577, 0x6c70, 0x4057, 0x6c71, 0x3859, 0x6c6e, 0x6c6f, 0x4f29, 0x4437, 0x4129, 0x6c72, 0x6c75, 0x6c73, 0x6c74, 0x4d59, 0x4627, 0x6c78, 0x6c76, 0x6c77, 0x6c79, 0x6d29, 0x6c7c, 0x6c7d, 0x6c7b, 0x6c7a, 0x447d, 0x6d21, 0x6d25, 0x6d22, 0x6c7e, 0x6d23, 0x6d24, 0x6d2b, 0x6d26, 0x4058, 0x6d28, 0x6d2a, 0x6d27, 0x6d2d, 0x3d33, 0x6d2c, 0x6d2e, 0x6d2f, 0x6d32, 0x6d31, 0x6d30, 0x6d34, 0x6d33, 0x4c76, 0x6d36, 0x6d35, 0x6d37, 0x6d38, 0x6d3a, 0x6d39, 0x3f48, 0x6d3b, 0x366d, 0x6d3c, 0x6d3e, 0x6d3f, 0x6d40, 0x6d3d, 0x6d41, 0x3c56, 0x6d42, 0x3530, 0x3733, 0x382e, 0x6d43, 0x4670, 0x453e, 0x6d44, 0x6d47, 0x3c34, 0x6d46, 0x6d45, 0x375a, 0x6d48, 0x3353, 0x6d4a, 0x3a5c, 0x6d49, 0x6d52, 0x6d4c, 0x6d4e, 0x4a65, 0x6d4b, 0x6d4d, 0x6d51, 0x6d4f, 0x3531, 0x6d50, 0x6d53, 0x475a, 0x4e58, 0x3d34, 0x6d54, 0x4d22, 0x6d56, 0x6d55, 0x6d59, 0x4d41, 0x6d58, 0x336d, 0x6d57, 0x6d5c, 0x6d5b, 0x6d5a, 0x4532, 0x6d5d, 0x6d5e, 0x6d5f, 0x396c, 0x3725, 0x6d60, 0x6d61, 0x6d62, 0x3f49, 0x6d63, 0x3c2d, 0x6d64, 0x6d65, 0x5221, 0x517e, 0x6d66, 0x6570, 0x6d67, 0x4324, 0x3f2b, 0x4740, 0x6d68, 0x4a55, 0x4454, 0x397e, 0x4329, 0x312a, 0x4b78, 0x3f57, 0x375e, 0x3661, 0x4a56, 0x6d69, 0x6d6b, 0x6d6a, 0x3260, 0x4676, 0x6d6c, 0x4777, 0x4533, 0x6d6d, 0x3d52, 0x6d6f, 0x4c42, 0x6d7e, 0x6d71, 0x6d72, 0x4449, 0x4260, 0x4177, 0x4628, 0x6d70, 0x3555, 0x6d79, 0x6d76, 0x6e25, 0x4629, 0x4360, 0x6d73, 0x447e, 0x4553, 0x6d74, 0x6d78, 0x3f60, 0x4767, 0x444c, 0x4042, 0x6d77, 0x422e, 0x4224, 0x6d75, 0x3029, 0x4f22, 0x6d7a, 0x4261, 0x3d35, 0x3f4a, 0x6d7c, 0x6d7b, 0x306f, 0x6d7d, 0x492f, 0x6e27, 0x465b, 0x3f6b, 0x4359, 0x3678, 0x6e26, 0x4d37, 0x313f, 0x4a57, 0x3261, 0x6e21, 0x6e22, 0x6e23, 0x6e24, 0x463b, 0x4323, 0x3063, 0x6e28, 0x6e29, 0x7423, 0x423d, 0x6e2a, 0x3173, 0x414c, 0x382f, 0x4d5a, 0x6e2b, 0x452c, 0x4178, 0x3c57, 0x6e2c, 0x6e2f, 0x3d65, 0x6e2d, 0x412b, 0x412a, 0x3064, 0x4e4b, 0x6e31, 0x4872, 0x6e33, 0x6e32, 0x6e30, 0x6364, 0x3454, 0x6d6e, 0x6e35, 0x6e34, 0x6e36, 0x4d38, 0x4661, 0x4b2e, 0x6e37, 0x3c59, 0x6e38, 0x6e39, 0x6e3a, 0x4521, 0x306a, 0x3959, 0x4f3a, 0x6e3e, 0x3734, 0x6e3b, 0x6e3c, 0x4974, 0x3354, 0x4d39, 0x363f, 0x4554, 0x6e3f, 0x6e40, 0x6e41, 0x4522, 0x6e43, 0x6e42, 0x4653, 0x6e44, 0x3d36, 0x3c60, 0x475b, 0x4371, 0x3c72, 0x3f6c, 0x6e45, 0x6e46, 0x3f5d, 0x6e47, 0x6e48, 0x6e49, 0x4d6f, 0x3d37, 0x6e4b, 0x6e4a, 0x395a, 0x3973, 0x3b40, 0x6e4e, 0x3d66, 0x6e4d, 0x6e4c, 0x4269, 0x386f, 0x4043, 0x4830, 0x3d39, 0x6e4f, 0x3e5f, 0x6e52, 0x6e50, 0x6e51, 0x6e54, 0x6e53, 0x3e7a, 0x6e55, 0x6e56, 0x6e57, 0x4850, 0x3a53, 0x3c61, 0x6e58, 0x6e59, 0x4e24, 0x3d45, 0x4c6e, 0x4e4c, 0x6e5a, 0x3662, 0x6e5b, 0x4523, 0x6e5e, 0x3378, 0x3f4b, 0x6e5c, 0x6e5d, 0x4460, 0x4b55, 0x367c, 0x6e60, 0x6e61, 0x6e5f, 0x6e63, 0x465f, 0x3343, 0x6e67, 0x6e64, 0x6e66, 0x6e62, 0x6f4f, 0x6e65, 0x4e6b, 0x385a, 0x6e6f, 0x4534, 0x6e6a, 0x6e6d, 0x6e6b, 0x6e70, 0x6e71, 0x6e69, 0x6e76, 0x3174, 0x6e68, 0x482d, 0x6e6c, 0x3e60, 0x395b, 0x4b48, 0x3664, 0x3d46, 0x463c, 0x412d, 0x6e74, 0x6e6e, 0x6e73, 0x4c43, 0x4438, 0x6e75, 0x6e72, 0x412c, 0x6e79, 0x6e78, 0x6e77, 0x4b2f, 0x3d7b, 0x6e7a, 0x4a5f, 0x3154, 0x4946, 0x4372, 0x3578, 0x6e7c, 0x395d, 0x3b2c, 0x6e7b, 0x3f6d, 0x3f6e, 0x6f21, 0x6f23, 0x3e7b, 0x6f22, 0x6f24, 0x3653, 0x4945, 0x3c62, 0x4f23, 0x6e7e, 0x3a78, 0x4f3f, 0x6f26, 0x6f25, 0x6f27, 0x6e7d, 0x4669, 0x4555, 0x4457, 0x6f2c, 0x4343, 0x6f28, 0x6f29, 0x372d, 0x6f2b, 0x3830, 0x6f2a, 0x3e61, 0x3379, 0x6f30, 0x3a3f, 0x4179, 0x444a, 0x333b, 0x6f2e, 0x6f2f, 0x4443, 0x6f2d, 0x6f31, 0x6f37, 0x6f3a, 0x6f39, 0x452d, 0x6f32, 0x6f33, 0x6f36, 0x6f38, 0x3640, 0x6f3b, 0x6f35, 0x6f34, 0x6f3f, 0x6f40, 0x6f41, 0x6f3e, 0x6f3d, 0x3e62, 0x462a, 0x6f3c, 0x6f45, 0x6f43, 0x6f44, 0x6f42, 0x4278, 0x6f46, 0x6f47, 0x6f49, 0x3455, 0x6f48, 0x4c7a, 0x6f54, 0x6f4a, 0x6f4d, 0x6f4b, 0x6f4c, 0x6f4e, 0x6f50, 0x6f51, 0x6f52, 0x6f55, 0x6f53, 0x6f56, 0x6f58, 0x6f57, 0x4439, 0x4c67, 0x6f59, 0x412e, 0x6f5a, 0x4a44, 0x6f5b, 0x332b, 0x313c, 0x3457, 0x3456, 0x6f5c, 0x6f5d, 0x6f5e, 0x6f5f, 0x6f60, 0x3458, 0x3355, 0x395e, 0x4836, 0x6f62, 0x6f61, 0x6f63, 0x315c, 0x6f66, 0x6f65, 0x6f64, 0x6f67, 0x6f6a, 0x3047, 0x6f68, 0x6f6c, 0x6f6b, 0x6f6e, 0x6f6d, 0x6f6f, 0x462e, 0x6f70, 0x6f71, 0x6f73, 0x6f72, 0x496c, 0x6f74, 0x6f75, 0x3a65, 0x6f76, 0x6f77, 0x4b49, 0x414b, 0x3024, 0x424b, 0x6f78, 0x496d, 0x6f7b, 0x6f79, 0x395f, 0x6f7a, 0x3842, 0x4a45, 0x6f7d, 0x7021, 0x6f7e, 0x7022, 0x3121, 0x3f58, 0x3d7c, 0x3459, 0x7023, 0x4766, 0x7025, 0x3122, 0x7024, 0x4444, 0x4e4d, 0x462b, 0x6f7c, 0x4e26, 0x3831, 0x4d5b, 0x3679, 0x4e34, 0x3728, 0x4262, 0x6721, 0x7026, 0x332c, 0x3f6f, 0x3356, 0x7028, 0x7029, 0x7027, 0x3764, 0x3a5d, 0x3e63, 0x3123, 0x4e59, 0x702b, 0x6e2e, 0x702a, 0x702e, 0x702c, 0x702d, 0x702f, 0x7030, 0x4e6c, 0x7031, 0x7032, 0x4049, 0x483b, 0x3f7d, 0x3467, 0x4d3a, 0x326d, 0x3d38, 0x385b, 0x7035, 0x7034, 0x3b73, 0x7036, 0x7033, 0x3b28, 0x703a, 0x6a2d, 0x5256, 0x3f77, 0x7038, 0x4e25, 0x4671, 0x312b, 0x4063, 0x3c36, 0x4a37, 0x3140, 0x4e6d, 0x4d6b, 0x703b, 0x4545, 0x3c7b, 0x703c, 0x703d, 0x3f4c, 0x703e, 0x4e6e, 0x7039, 0x7040, 0x7042, 0x7041, 0x703f, 0x7043, 0x7044, 0x417a, 0x3262, 0x7045, 0x4c38, 0x7046, 0x7047, 0x4f2a, 0x5b31, 0x7048, 0x7049, 0x704a, 0x704e, 0x704b, 0x704c, 0x704d, 0x704f, 0x4044, 0x4c77, 0x4045, 0x7050, 0x4873, 0x7051, 0x7353, 0x4c4c, 0x7052, 0x7053, 0x7054, 0x3357, 0x7056, 0x3f59, 0x7057, 0x3724, 0x7058, 0x705c, 0x705a, 0x705b, 0x3373, 0x7059, 0x705d, 0x705e, 0x3048, 0x705f, 0x7060, 0x3e64, 0x7061, 0x3547, 0x7064, 0x7063, 0x7062, 0x6b71, 0x4a5c, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069, 0x706a, 0x345a, 0x706b, 0x706c, 0x4723, 0x706e, 0x323b, 0x7071, 0x7070, 0x3124, 0x3641, 0x4a47, 0x443a, 0x3a22, 0x3960, 0x3d67, 0x3f5c, 0x7073, 0x7072, 0x4d42, 0x3468, 0x4852, 0x465c, 0x3f7c, 0x4e4e, 0x375b, 0x7076, 0x7075, 0x4b4b, 0x462c, 0x3150, 0x7077, 0x7074, 0x4951, 0x4d6a, 0x7078, 0x7079, 0x707b, 0x426a, 0x335b, 0x335c, 0x707a, 0x3469, 0x3832, 0x346a, 0x453f, 0x4e60, 0x385c, 0x707c, 0x707d, 0x707e, 0x7121, 0x7123, 0x7122, 0x4977, 0x7124, 0x7125, 0x7126, 0x7127, 0x7129, 0x7128, 0x712a, 0x4874, 0x664c, 0x3f29, 0x3532, 0x712b, 0x712c, 0x522c, 0x5d3b, 0x4853, 0x307b, 0x303b, 0x3b74, 0x4b30, 0x3e7e, 0x712d, 0x4c5f, 0x712e, 0x4d5c, 0x3142, 0x3b41, 0x712f, 0x326e, 0x7130, 0x7131, 0x7133, 0x7134, 0x7136, 0x7132, 0x7135, 0x345b, 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713d, 0x713c, 0x713f, 0x7142, 0x713e, 0x7140, 0x7141, 0x7143, 0x3642, 0x3c73, 0x7144, 0x7145, 0x3961, 0x7146, 0x333e, 0x474f, 0x7147, 0x7148, 0x435a, 0x466b, 0x7149, 0x477d, 0x424c, 0x3158, 0x366e, 0x366f, 0x4373, 0x714e, 0x3670, 0x326f, 0x714d, 0x714b, 0x714c, 0x714a, 0x7158, 0x714f, 0x7150, 0x7151, 0x7152, 0x7154, 0x7153, 0x3d59, 0x7155, 0x7157, 0x3533, 0x7156, 0x417b, 0x3833, 0x7159, 0x424d, 0x715a, 0x462d, 0x715b, 0x7160, 0x715e, 0x715d, 0x715f, 0x715c, 0x7162, 0x7161, 0x7164, 0x3643, 0x7163, 0x7165, 0x7166, 0x7168, 0x7167, 0x7169, 0x716b, 0x716a, 0x397c, 0x716c, 0x716d, 0x333c, 0x716e, 0x716f, 0x3f71, 0x7170, 0x7171, 0x7172, 0x7173, 0x3962, 0x7174, 0x7175, 0x7176, 0x7177, 0x7178, 0x4831, 0x717a, 0x4926, 0x717b, 0x7179, 0x717d, 0x717c, 0x717e, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, 0x7228, 0x7229, 0x722a, 0x722b, 0x722c, 0x722d, 0x722e, 0x5d35, 0x722f, 0x6478, 0x3534, 0x3321, 0x3a32, 0x7231, 0x7230, 0x4c25, 0x7233, 0x7234, 0x7232, 0x7235, 0x4b62, 0x7236, 0x357b, 0x4f25, 0x7237, 0x7239, 0x303e, 0x723a, 0x4a2b, 0x7238, 0x723b, 0x723c, 0x723d, 0x723e, 0x723f, 0x4b6e, 0x3b2d, 0x3a7a, 0x412f, 0x7240, 0x7243, 0x7241, 0x7244, 0x3871, 0x7242, 0x7245, 0x7246, 0x7247, 0x724b, 0x3b2a, 0x4264, 0x724c, 0x7249, 0x7248, 0x724a, 0x375f, 0x7250, 0x724f, 0x724e, 0x3033, 0x725a, 0x7256, 0x7257, 0x7253, 0x7259, 0x7255, 0x3362, 0x4f4c, 0x7258, 0x7254, 0x7252, 0x7251, 0x725c, 0x725f, 0x725e, 0x725d, 0x4949, 0x725b, 0x3073, 0x7260, 0x7262, 0x336f, 0x724d, 0x3137, 0x7264, 0x7263, 0x7261, 0x432d, 0x4b70, 0x4e5a, 0x7265, 0x7266, 0x7267, 0x7268, 0x7269, 0x443b, 0x726a, 0x4837, 0x726f, 0x726b, 0x726c, 0x4b31, 0x4c44, 0x4650, 0x7270, 0x7271, 0x463e, 0x726e, 0x726d, 0x322a, 0x7279, 0x7278, 0x3175, 0x7276, 0x7275, 0x7273, 0x337b, 0x7272, 0x3c32, 0x3229, 0x3963, 0x727c, 0x727b, 0x727a, 0x7277, 0x727d, 0x727e, 0x7325, 0x7324, 0x7326, 0x312d, 0x7321, 0x7322, 0x3974, 0x4c39, 0x7323, 0x4b32, 0x732b, 0x7327, 0x732c, 0x7329, 0x7328, 0x375c, 0x732d, 0x732e, 0x732f, 0x732a, 0x7274, 0x7330, 0x4461, 0x7334, 0x7335, 0x7333, 0x7332, 0x7338, 0x7331, 0x7336, 0x7337, 0x733a, 0x7339, 0x733c, 0x733d, 0x733e, 0x4f49, 0x733b, 0x426b, 0x3a6d, 0x733f, 0x7340, 0x7341, 0x7342, 0x7343, 0x3834, 0x7344, 0x7345, 0x3c2f, 0x7346, 0x7347, 0x7348, 0x7349, 0x734c, 0x734a, 0x4f3c, 0x734b, 0x4e6f, 0x734d, 0x4e5b, 0x734e, 0x477e, 0x734f, 0x7351, 0x7352, 0x7350, 0x396d, 0x4c4d, 0x4b63, 0x5677, 0x5d60, 0x4b7b, 0x322b, 0x7354, 0x3550, 0x7355, 0x7356, 0x7357, 0x3975, 0x7358, 0x6054, 0x4c5b, 0x4263, 0x7359, 0x735b, 0x735a, 0x735c, 0x735d, 0x735e, 0x735f, 0x7360, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, 0x4524, 0x385d, 0x736a, 0x414d, 0x736b, 0x736c, 0x4921, 0x736d, 0x736e, 0x6337, 0x6c5a, 0x706d, 0x736f, 0x7370, 0x7372, 0x7373, 0x7374, 0x4e70, 0x7371, 0x7375, 0x7376, 0x7378, 0x7377, 0x737a, 0x737b, 0x7379, 0x4e36, 0x737c, 0x737d, 0x6354, 0x737e, 0x212a, 0x2174, 0x2170, 0x2173, 0x2175, 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x2125, 0x213f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129, 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x214e, 0x214f, 0x2130, 0x2132, 0x212e, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2131, 0x216f, }; static const Summary16 jisx0208_uni2indx_page00[16] = { /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x1000 }, { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0x118c }, { 6, 0x0053 }, { 10, 0x0000 }, { 10, 0x0080 }, { 11, 0x0000 }, { 11, 0x0080 }, }; static const Summary16 jisx0208_uni2indx_page03[22] = { /* 0x0300 */ { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0xfffe }, { 27, 0x03fb }, { 36, 0xfffe }, { 51, 0x03fb }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 }, /* 0x0400 */ { 60, 0x0002 }, { 61, 0xffff }, { 77, 0xffff }, { 93, 0xffff }, { 109, 0xffff }, { 125, 0x0002 }, }; static const Summary16 jisx0208_uni2indx_page20[50] = { /* 0x2000 */ { 126, 0x0000 }, { 126, 0x3361 }, { 133, 0x0063 }, { 137, 0x080d }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, /* 0x2100 */ { 141, 0x0008 }, { 142, 0x0000 }, { 142, 0x0800 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x000f }, { 147, 0x0000 }, { 147, 0x0000 }, { 147, 0x0000 }, { 147, 0x0014 }, { 149, 0x0000 }, { 149, 0x0000 }, /* 0x2200 */ { 149, 0x098d }, { 155, 0x6404 }, { 159, 0x1f81 }, { 166, 0x2030 }, { 169, 0x0000 }, { 169, 0x0004 }, { 170, 0x0cc3 }, { 176, 0x0000 }, { 176, 0x00cc }, { 180, 0x0000 }, { 180, 0x0020 }, { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 }, /* 0x2300 */ { 181, 0x0000 }, { 181, 0x0004 }, }; static const Summary16 jisx0208_uni2indx_page25[23] = { /* 0x2500 */ { 182, 0x900f }, { 188, 0x3999 }, { 196, 0x9939 }, { 204, 0x9999 }, { 212, 0x0804 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0003 }, { 216, 0x300c }, { 220, 0xc8c0 }, { 225, 0x0000 }, { 225, 0x8000 }, { 226, 0x0000 }, /* 0x2600 */ { 226, 0x0060 }, { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0005 }, { 230, 0x0000 }, { 230, 0xa400 }, }; static const Summary16 jisx0208_uni2indx_page30[16] = { /* 0x3000 */ { 233, 0xffef }, { 248, 0x103f }, { 255, 0x0000 }, { 255, 0x0000 }, { 255, 0xfffe }, { 270, 0xffff }, { 286, 0xffff }, { 302, 0xffff }, { 318, 0xffff }, { 334, 0x780f }, { 342, 0xfffe }, { 357, 0xffff }, { 373, 0xffff }, { 389, 0xffff }, { 405, 0xffff }, { 421, 0x787f }, }; static const Summary16 jisx0208_uni2indx_page4e[1307] = { /* 0x4e00 */ { 432, 0x6f8b }, { 442, 0x43f3 }, { 451, 0x2442 }, { 455, 0x9b46 }, { 463, 0xe82c }, { 470, 0xe3e0 }, { 478, 0x0004 }, { 479, 0x400a }, { 482, 0x5f65 }, { 492, 0xdb36 }, { 502, 0x7977 }, { 513, 0x0449 }, { 517, 0xecd7 }, { 528, 0xe3f0 }, { 537, 0x6038 }, { 542, 0x08c5 }, /* 0x4f00 */ { 547, 0xe602 }, { 553, 0x3403 }, { 558, 0x8000 }, { 559, 0x3551 }, { 566, 0xe0c8 }, { 572, 0x7eab }, { 583, 0x8200 }, { 585, 0x9869 }, { 592, 0xa948 }, { 598, 0x2942 }, { 603, 0xe803 }, { 609, 0x8060 }, { 612, 0x441c }, { 617, 0xad93 }, { 626, 0xc03a }, { 632, 0x4568 }, /* 0x5000 */ { 638, 0xaa60 }, { 644, 0x8656 }, { 651, 0x3f7a }, { 662, 0x0240 }, { 664, 0x8388 }, { 669, 0x1461 }, { 674, 0x1020 }, { 676, 0x2174 }, { 682, 0x2021 }, { 685, 0x0702 }, { 689, 0x3000 }, { 691, 0x40bc }, { 697, 0xa624 }, { 703, 0x4462 }, { 708, 0x60a8 }, { 713, 0x0a20 }, /* 0x5100 */ { 716, 0x0217 }, { 721, 0x8574 }, { 728, 0x0402 }, { 730, 0x9c84 }, { 736, 0x7bfb }, { 749, 0x1415 }, { 754, 0x7f24 }, { 763, 0x11e2 }, { 769, 0xb665 }, { 778, 0x02ef }, { 786, 0x1f75 }, { 796, 0x20ff }, { 805, 0x3a70 }, { 812, 0x3840 }, { 816, 0x26c3 }, { 823, 0x6763 }, /* 0x5200 */ { 832, 0x4dd9 }, { 841, 0x2092 }, { 845, 0x46b0 }, { 851, 0x0fc9 }, { 859, 0xbc98 }, { 867, 0x4850 }, { 871, 0x8638 }, { 877, 0xa03f }, { 885, 0x2388 }, { 890, 0x8816 }, { 895, 0x3e09 }, { 902, 0x5232 }, { 908, 0x22aa }, { 914, 0xe3a4 }, { 922, 0x00dd }, { 928, 0xc72c }, /* 0x5300 */ { 936, 0xa166 }, { 943, 0x26e1 }, { 950, 0x840b }, { 955, 0x8f0a }, { 962, 0x27eb }, { 972, 0x559e }, { 981, 0xc241 }, { 986, 0x89bb }, { 995, 0x0014 }, { 997, 0x8540 }, { 1001, 0x6361 }, { 1008, 0x0849 }, { 1012, 0x7f0c }, { 1021, 0x8ad0 }, { 1027, 0xff3e }, { 1040, 0x05cf }, /* 0x5400 */ { 1048, 0xff1a }, { 1059, 0xa803 }, { 1064, 0x7a41 }, { 1071, 0x7b40 }, { 1078, 0x4745 }, { 1085, 0x8002 }, { 1087, 0x0500 }, { 1089, 0x38eb }, { 1098, 0xd851 }, { 1105, 0x0005 }, { 1107, 0x9934 }, { 1114, 0x710c }, { 1120, 0x0397 }, { 1127, 0x0100 }, { 1128, 0x6366 }, { 1136, 0x2404 }, /* 0x5500 */ { 1139, 0x80d0 }, { 1143, 0x0051 }, { 1146, 0xc000 }, { 1148, 0x430a }, { 1153, 0x9071 }, { 1159, 0x30c8 }, { 1164, 0x0008 }, { 1165, 0x5800 }, { 1168, 0x0e99 }, { 1175, 0xf700 }, { 1182, 0x5f80 }, { 1189, 0x0041 }, { 1191, 0x00b0 }, { 1194, 0x9410 }, { 1198, 0x0018 }, { 1200, 0x6280 }, /* 0x5600 */ { 1204, 0x0240 }, { 1206, 0x09d0 }, { 1211, 0x8200 }, { 1213, 0x0156 }, { 1218, 0x5004 }, { 1221, 0x0801 }, { 1223, 0x1d10 }, { 1228, 0x0510 }, { 1231, 0x84c1 }, { 1236, 0x0010 }, { 1237, 0x4025 }, { 1241, 0x1050 }, { 1244, 0x410f }, { 1250, 0x4d8a }, { 1257, 0x4009 }, { 1260, 0xa60d }, /* 0x5700 */ { 1267, 0xab19 }, { 1275, 0x914c }, { 1281, 0x21c0 }, { 1285, 0x0981 }, { 1289, 0xc485 }, { 1295, 0x0003 }, { 1297, 0x0652 }, { 1302, 0x8000 }, { 1303, 0x0b04 }, { 1307, 0x0008 }, { 1308, 0x041d }, { 1313, 0x0009 }, { 1315, 0x4849 }, { 1320, 0x905c }, { 1326, 0x0009 }, { 1328, 0x1690 }, /* 0x5800 */ { 1333, 0x0c65 }, { 1339, 0x2220 }, { 1342, 0x8412 }, { 1346, 0x2433 }, { 1352, 0x0c03 }, { 1356, 0x4796 }, { 1364, 0x0a04 }, { 1367, 0x4225 }, { 1372, 0x0028 }, { 1374, 0x9088 }, { 1378, 0x4900 }, { 1381, 0x4f08 }, { 1387, 0x14a2 }, { 1392, 0xd3aa }, { 1401, 0xd830 }, { 1407, 0x3e87 }, /* 0x5900 */ { 1416, 0x8604 }, { 1420, 0x1f61 }, { 1428, 0x7ea4 }, { 1437, 0x4186 }, { 1442, 0xc390 }, { 1448, 0x05b3 }, { 1455, 0x57a5 }, { 1464, 0x2118 }, { 1468, 0x241e }, { 1474, 0x2a48 }, { 1479, 0x1128 }, { 1483, 0x4a04 }, { 1487, 0x0a40 }, { 1490, 0x161b }, { 1497, 0x0d60 }, { 1502, 0x8840 }, /* 0x5a00 */ { 1505, 0x020a }, { 1508, 0x9502 }, { 1513, 0x8221 }, { 1517, 0x1060 }, { 1520, 0x0243 }, { 1524, 0x0400 }, { 1525, 0x1444 }, { 1529, 0x8000 }, { 1530, 0x0000 }, { 1530, 0x0c04 }, { 1533, 0x0000 }, { 1533, 0x7000 }, { 1536, 0x1a06 }, { 1541, 0x00c1 }, { 1544, 0x024a }, { 1548, 0x0c00 }, /* 0x5b00 */ { 1550, 0x1a00 }, { 1553, 0x0040 }, { 1554, 0x1404 }, { 1557, 0x4045 }, { 1561, 0x0029 }, { 1564, 0xbdb3 }, { 1575, 0x0a78 }, { 1581, 0x052b }, { 1587, 0xbba9 }, { 1597, 0xbfa0 }, { 1606, 0x407c }, { 1612, 0x8379 }, { 1620, 0x12fc }, { 1628, 0xe81d }, { 1636, 0x4bf6 }, { 1646, 0xc569 }, /* 0x5c00 */ { 1654, 0xeff6 }, { 1667, 0x044a }, { 1671, 0x2115 }, { 1676, 0xff02 }, { 1685, 0xed63 }, { 1695, 0x402b }, { 1700, 0xd033 }, { 1707, 0x0242 }, { 1710, 0x1000 }, { 1711, 0x0013 }, { 1714, 0x1b02 }, { 1719, 0x59ca }, { 1727, 0x00a0 }, { 1729, 0x0200 }, { 1730, 0xa703 }, { 1737, 0x2c41 }, /* 0x5d00 */ { 1742, 0x4880 }, { 1745, 0x8ff2 }, { 1755, 0x0204 }, { 1757, 0x0000 }, { 1757, 0x5800 }, { 1760, 0x1005 }, { 1763, 0x9200 }, { 1766, 0x0048 }, { 1768, 0x1894 }, { 1773, 0x2001 }, { 1775, 0x5004 }, { 1778, 0x3480 }, { 1782, 0x3200 }, { 1785, 0x684c }, { 1791, 0x49ea }, { 1799, 0x68be }, /* 0x5e00 */ { 1808, 0x184c }, { 1813, 0x2e42 }, { 1819, 0xa820 }, { 1823, 0x21c9 }, { 1829, 0x50b9 }, { 1836, 0x80b0 }, { 1840, 0x001e }, { 1844, 0xff7c }, { 1857, 0x849a }, { 1863, 0x14e0 }, { 1868, 0x28c1 }, { 1873, 0x01e0 }, { 1877, 0x870e }, { 1884, 0xac49 }, { 1891, 0x130f }, { 1898, 0xdddb }, /* 0x5f00 */ { 1910, 0xbe1a }, { 1919, 0x89fb }, { 1929, 0xa2e0 }, { 1935, 0x51a2 }, { 1941, 0x5502 }, { 1946, 0x32ca }, { 1953, 0x3e46 }, { 1961, 0x928b }, { 1968, 0x1dbf }, { 1979, 0x438f }, { 1987, 0x6703 }, { 1994, 0x3218 }, { 1999, 0x3028 }, { 2003, 0x33c0 }, { 2009, 0x0811 }, { 2012, 0xa923 }, /* 0x6000 */ { 2019, 0xc000 }, { 2021, 0x3a65 }, { 2029, 0x8fe3 }, { 2039, 0x0402 }, { 2041, 0x2c4e }, { 2048, 0x8625 }, { 2054, 0xbf3d }, { 2066, 0x00a1 }, { 2069, 0x3a1a }, { 2076, 0x8cd4 }, { 2083, 0x06c9 }, { 2089, 0x317c }, { 2097, 0x00e0 }, { 2100, 0x950a }, { 2106, 0x018b }, { 2111, 0x0edb }, /* 0x6100 */ { 2120, 0xe34b }, { 2129, 0x8c20 }, { 2133, 0x1182 }, { 2137, 0xf010 }, { 2142, 0x7d94 }, { 2151, 0xa728 }, { 2158, 0xc9ac }, { 2166, 0x40fb }, { 2174, 0x4484 }, { 2178, 0x0653 }, { 2184, 0x5a90 }, { 2190, 0x4444 }, { 2194, 0x3fc8 }, { 2203, 0x0001 }, { 2204, 0x0048 }, { 2206, 0xf5d4 }, /* 0x6200 */ { 2216, 0x7701 }, { 2223, 0xec57 }, { 2233, 0xc442 }, { 2238, 0x891d }, { 2245, 0x6b83 }, { 2253, 0x4928 }, { 2258, 0x4109 }, { 2262, 0xd242 }, { 2268, 0x061d }, { 2274, 0x59fe }, { 2285, 0x1800 }, { 2287, 0x3a22 }, { 2293, 0xb7e4 }, { 2303, 0x3b9f }, { 2314, 0xf003 }, { 2320, 0xc0ea }, /* 0x6300 */ { 2327, 0x1386 }, { 2333, 0x8202 }, { 2336, 0x8980 }, { 2340, 0xe400 }, { 2344, 0xb200 }, { 2348, 0x10a1 }, { 2352, 0x4b80 }, { 2357, 0x0cc4 }, { 2362, 0xd309 }, { 2369, 0x8944 }, { 2374, 0x1faf }, { 2385, 0x4834 }, { 2390, 0x8259 }, { 2396, 0x0c45 }, { 2401, 0x420a }, { 2405, 0x0450 }, /* 0x6400 */ { 2408, 0xa040 }, { 2411, 0x10c8 }, { 2415, 0x3140 }, { 2419, 0x4450 }, { 2423, 0x4004 }, { 2425, 0x0100 }, { 2426, 0x8280 }, { 2429, 0x0540 }, { 2432, 0x0108 }, { 2434, 0x442c }, { 2439, 0x6a30 }, { 2445, 0x1a05 }, { 2450, 0x20a6 }, { 2455, 0x0514 }, { 2459, 0x90cf }, { 2467, 0x6456 }, /* 0x6500 */ { 2474, 0x0021 }, { 2476, 0x3100 }, { 2479, 0x9c18 }, { 2485, 0xcbf0 }, { 2494, 0xa120 }, { 2498, 0x63e2 }, { 2506, 0x104c }, { 2510, 0x01b5 }, { 2516, 0x538c }, { 2523, 0x9a83 }, { 2530, 0xb8b2 }, { 2538, 0x3281 }, { 2543, 0x987a }, { 2551, 0x0a84 }, { 2555, 0x33e7 }, { 2565, 0x0c02 }, /* 0x6600 */ { 2568, 0xd4cc }, { 2576, 0x9018 }, { 2580, 0xa1a1 }, { 2586, 0x9070 }, { 2591, 0x8a1e }, { 2598, 0xe004 }, { 2602, 0xc3d4 }, { 2610, 0x0451 }, { 2614, 0x439a }, { 2621, 0x21c2 }, { 2626, 0x4844 }, { 2630, 0x5310 }, { 2635, 0x0292 }, { 2639, 0x3640 }, { 2644, 0x0241 }, { 2647, 0xf3bd }, /* 0x6700 */ { 2659, 0xab09 }, { 2666, 0xe8f0 }, { 2674, 0x7dc0 }, { 2682, 0xa5d2 }, { 2690, 0xc242 }, { 2695, 0xd24b }, { 2703, 0xa43f }, { 2712, 0xd0af }, { 2721, 0x1aa0 }, { 2726, 0x34a1 }, { 2732, 0x8247 }, { 2738, 0x03d8 }, { 2744, 0xc452 }, { 2750, 0x651b }, { 2758, 0xd294 }, { 2765, 0xc83a }, /* 0x6800 */ { 2772, 0x001c }, { 2775, 0x40c8 }, { 2779, 0x0e06 }, { 2784, 0x3314 }, { 2790, 0x614f }, { 2798, 0xb21b }, { 2806, 0x0088 }, { 2808, 0xc0d0 }, { 2813, 0xa02a }, { 2818, 0xa898 }, { 2824, 0xa1c5 }, { 2831, 0x166b }, { 2839, 0x2e50 }, { 2845, 0x85b4 }, { 2852, 0xc08b }, { 2858, 0x0604 }, /* 0x6900 */ { 2861, 0xf933 }, { 2871, 0x1e04 }, { 2876, 0x056e }, { 2883, 0xa251 }, { 2889, 0x0400 }, { 2890, 0x7638 }, { 2898, 0xec07 }, { 2906, 0x73b8 }, { 2915, 0x4406 }, { 2919, 0x1832 }, { 2924, 0x4081 }, { 2927, 0xc816 }, { 2933, 0x7c8a }, { 2941, 0x6309 }, { 2947, 0x2980 }, { 2951, 0xaa04 }, /* 0x6a00 */ { 2956, 0x1c24 }, { 2961, 0xca9c }, { 2969, 0x4e0e }, { 2976, 0x2760 }, { 2982, 0x0990 }, { 2986, 0x8300 }, { 2989, 0x0046 }, { 2992, 0x8104 }, { 2995, 0x6011 }, { 2999, 0x1081 }, { 3002, 0x540d }, { 3008, 0x0908 }, { 3011, 0x000e }, { 3014, 0xcc0a }, { 3020, 0x0500 }, { 3022, 0x0c00 }, /* 0x6b00 */ { 3024, 0x0430 }, { 3027, 0xa044 }, { 3031, 0x008b }, { 3035, 0x6784 }, { 3042, 0x5288 }, { 3047, 0x8a19 }, { 3053, 0x865e }, { 3061, 0x8b18 }, { 3067, 0x2e59 }, { 3075, 0x4160 }, { 3079, 0x8c10 }, { 3083, 0x9cbe }, { 3093, 0x6861 }, { 3099, 0x891c }, { 3105, 0x9800 }, { 3108, 0x0008 }, /* 0x6c00 */ { 3109, 0x8100 }, { 3111, 0x089a }, { 3116, 0x0018 }, { 3118, 0x4190 }, { 3122, 0x4007 }, { 3126, 0xe4a1 }, { 3133, 0x0505 }, { 3137, 0x640d }, { 3143, 0x310e }, { 3149, 0x0e4d }, { 3156, 0x4806 }, { 3160, 0xff0a }, { 3170, 0x1632 }, { 3176, 0x2aa8 }, { 3182, 0x852e }, { 3189, 0x000b }, /* 0x6d00 */ { 3192, 0x1800 }, { 3194, 0xca84 }, { 3200, 0x0e20 }, { 3204, 0x696c }, { 3212, 0x0032 }, { 3215, 0x1600 }, { 3218, 0x5658 }, { 3225, 0x0390 }, { 3229, 0x5120 }, { 3233, 0x1a28 }, { 3238, 0x8000 }, { 3239, 0x1124 }, { 3243, 0x18e1 }, { 3249, 0x4326 }, { 3255, 0x5d52 }, { 3263, 0x0eaa }, /* 0x6e00 */ { 3270, 0x0fa0 }, { 3276, 0xae28 }, { 3283, 0xfa7b }, { 3295, 0x4500 }, { 3298, 0x6408 }, { 3302, 0x8940 }, { 3306, 0xc880 }, { 3310, 0xc044 }, { 3314, 0x9005 }, { 3318, 0xb141 }, { 3324, 0x8424 }, { 3328, 0x24c4 }, { 3333, 0x1a34 }, { 3339, 0x603a }, { 3345, 0x9000 }, { 3347, 0xc194 }, /* 0x6f00 */ { 3353, 0x8246 }, { 3358, 0x003a }, { 3362, 0x180d }, { 3367, 0xc106 }, { 3372, 0x0022 }, { 3374, 0x9910 }, { 3379, 0xe050 }, { 3384, 0x1511 }, { 3389, 0x4057 }, { 3395, 0x0082 }, { 3397, 0x041a }, { 3401, 0x020a }, { 3404, 0x004f }, { 3409, 0x8930 }, { 3414, 0xd813 }, { 3421, 0x444a }, /* 0x7000 */ { 3426, 0x8a02 }, { 3430, 0xed22 }, { 3438, 0x10c0 }, { 3441, 0x4005 }, { 3444, 0x1000 }, { 3445, 0x0102 }, { 3447, 0x8808 }, { 3450, 0x3101 }, { 3454, 0x4600 }, { 3457, 0x0204 }, { 3459, 0xf000 }, { 3463, 0x0708 }, { 3467, 0x8900 }, { 3470, 0xa200 }, { 3473, 0x0000 }, { 3473, 0x2202 }, /* 0x7100 */ { 3476, 0x0200 }, { 3477, 0x1610 }, { 3481, 0x0042 }, { 3483, 0x1040 }, { 3485, 0x5200 }, { 3488, 0x0260 }, { 3491, 0x52f4 }, { 3499, 0x2000 }, { 3500, 0x8510 }, { 3504, 0x8230 }, { 3508, 0x1100 }, { 3510, 0x4202 }, { 3513, 0x4308 }, { 3517, 0x80b5 }, { 3523, 0x70e1 }, { 3530, 0x9a20 }, /* 0x7200 */ { 3535, 0x2040 }, { 3537, 0x0801 }, { 3539, 0x3500 }, { 3543, 0xfc65 }, { 3553, 0x19c1 }, { 3559, 0xab04 }, { 3565, 0x0286 }, { 3569, 0x6214 }, { 3574, 0x0087 }, { 3578, 0x0044 }, { 3580, 0x9085 }, { 3585, 0x0244 }, { 3588, 0x405c }, { 3593, 0x0a85 }, { 3598, 0x3207 }, { 3604, 0x3380 }, /* 0x7300 */ { 3609, 0x0400 }, { 3610, 0xb8c0 }, { 3616, 0xce20 }, { 3622, 0xc0d0 }, { 3627, 0xc030 }, { 3631, 0x0080 }, { 3632, 0x0508 }, { 3635, 0x0d25 }, { 3641, 0x0a90 }, { 3645, 0x0040 }, { 3646, 0x0200 }, { 3647, 0x080c }, { 3650, 0x6505 }, { 3656, 0x4000 }, { 3657, 0x6421 }, { 3662, 0x4102 }, /* 0x7400 */ { 3665, 0x0268 }, { 3669, 0x0000 }, { 3669, 0x0024 }, { 3671, 0x847c }, { 3678, 0x0002 }, { 3679, 0xde20 }, { 3686, 0x8619 }, { 3692, 0x4049 }, { 3696, 0x0808 }, { 3698, 0x4000 }, { 3699, 0x0084 }, { 3701, 0x2001 }, { 3703, 0x8400 }, { 3705, 0x1010 }, { 3707, 0x42cd }, { 3714, 0x01c7 }, /* 0x7500 */ { 3720, 0x7038 }, { 3726, 0xd52a }, { 3734, 0x1968 }, { 3740, 0x1d8f }, { 3749, 0xbe50 }, { 3757, 0x3e12 }, { 3764, 0x2ef5 }, { 3774, 0x81d9 }, { 3781, 0xcec4 }, { 3789, 0x2412 }, { 3793, 0x0828 }, { 3796, 0x732e }, { 3805, 0x24ac }, { 3811, 0x4b34 }, { 3818, 0x020c }, { 3821, 0xd41d }, /* 0x7600 */ { 3829, 0x2a02 }, { 3833, 0x8000 }, { 3834, 0x0097 }, { 3839, 0x0811 }, { 3842, 0x11c4 }, { 3847, 0x1144 }, { 3851, 0x1786 }, { 3858, 0x7d45 }, { 3867, 0x49d9 }, { 3875, 0x0649 }, { 3880, 0x4000 }, { 3881, 0x8791 }, { 3888, 0x254c }, { 3894, 0xd8c4 }, { 3901, 0x44ba }, { 3908, 0x4914 }, /* 0x7700 */ { 3913, 0x1b92 }, { 3920, 0xc800 }, { 3923, 0x0271 }, { 3928, 0x1580 }, { 3932, 0x0081 }, { 3934, 0x0c00 }, { 3936, 0x096a }, { 3942, 0xc200 }, { 3945, 0x4800 }, { 3947, 0x4002 }, { 3949, 0x3021 }, { 3953, 0xba49 }, { 3961, 0x2080 }, { 3963, 0x1c80 }, { 3967, 0xe2ac }, { 3975, 0x1008 }, /* 0x7800 */ { 3977, 0x1004 }, { 3979, 0x0034 }, { 3982, 0x00e1 }, { 3986, 0x8414 }, { 3990, 0x0020 }, { 3991, 0x2000 }, { 3992, 0x9800 }, { 3995, 0x1014 }, { 3998, 0x70c2 }, { 4004, 0x04aa }, { 4009, 0x8688 }, { 4014, 0x5420 }, { 4018, 0x0c62 }, { 4023, 0x0413 }, { 4027, 0x9180 }, { 4031, 0x2010 }, /* 0x7900 */ { 4033, 0x4082 }, { 4036, 0x0206 }, { 4039, 0x1c40 }, { 4043, 0x5400 }, { 4046, 0x0383 }, { 4051, 0xe4e9 }, { 4060, 0x2125 }, { 4065, 0x8480 }, { 4068, 0xe433 }, { 4076, 0x2000 }, { 4077, 0x44c0 }, { 4081, 0xe609 }, { 4088, 0x0a03 }, { 4092, 0x8126 }, { 4097, 0x12da }, { 4104, 0x0801 }, /* 0x7a00 */ { 4106, 0x6901 }, { 4111, 0x9790 }, { 4118, 0x4001 }, { 4120, 0xf886 }, { 4128, 0xe24d }, { 4136, 0x0081 }, { 4138, 0x0a0e }, { 4143, 0xa651 }, { 4150, 0x011a }, { 4154, 0x81ec }, { 4161, 0xc600 }, { 4165, 0x8441 }, { 4169, 0xadb8 }, { 4178, 0xb62c }, { 4186, 0xa46f }, { 4195, 0x8741 }, /* 0x7b00 */ { 4201, 0x8d54 }, { 4208, 0x4b02 }, { 4213, 0x1161 }, { 4218, 0x0268 }, { 4222, 0xbb60 }, { 4230, 0x2057 }, { 4236, 0x50a0 }, { 4240, 0x0433 }, { 4245, 0xa8c0 }, { 4250, 0xb7b4 }, { 4260, 0x2402 }, { 4263, 0x0112 }, { 4266, 0x9ad3 }, { 4275, 0x2000 }, { 4276, 0x2271 }, { 4282, 0x00c8 }, /* 0x7c00 */ { 4285, 0x2081 }, { 4288, 0x809e }, { 4294, 0x0c8a }, { 4299, 0xe180 }, { 4304, 0xb009 }, { 4309, 0x8151 }, { 4314, 0x1031 }, { 4318, 0x4028 }, { 4321, 0x2a0e }, { 4327, 0x89a5 }, { 4334, 0x69b6 }, { 4343, 0x620e }, { 4349, 0x4425 }, { 4354, 0xd144 }, { 4360, 0x8085 }, { 4364, 0x4d54 }, /* 0x7d00 */ { 4371, 0x2c75 }, { 4379, 0x1fb1 }, { 4388, 0xd807 }, { 4395, 0x862d }, { 4402, 0xd87c }, { 4411, 0x4841 }, { 4415, 0x414e }, { 4421, 0x226e }, { 4428, 0x8200 }, { 4430, 0x9e08 }, { 4436, 0xf80c }, { 4443, 0xed37 }, { 4454, 0x8c80 }, { 4458, 0x7526 }, { 4466, 0x9313 }, { 4473, 0x0814 }, /* 0x7e00 */ { 4476, 0x0e32 }, { 4482, 0xc804 }, { 4486, 0x484e }, { 4492, 0x6ea6 }, { 4501, 0x2c4a }, { 4507, 0x6670 }, { 4514, 0x26c0 }, { 4519, 0xba01 }, { 4525, 0xd30c }, { 4532, 0x185d }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, /* 0x7f00 */ { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0540 }, { 4542, 0x7020 }, { 4546, 0x8133 }, { 4552, 0x4f81 }, { 4559, 0x03a5 }, { 4565, 0x55ec }, { 4574, 0x6410 }, { 4578, 0xc318 }, { 4584, 0x2344 }, { 4589, 0x1462 }, { 4594, 0x0034 }, { 4597, 0x0a43 }, { 4602, 0x1a09 }, /* 0x8000 */ { 4607, 0x187b }, { 4615, 0x13a5 }, { 4622, 0x0102 }, { 4624, 0xa848 }, { 4629, 0x0440 }, { 4631, 0xc544 }, { 4637, 0x8106 }, { 4641, 0xe2dd }, { 4651, 0x1af0 }, { 4658, 0x2d48 }, { 4664, 0xb626 }, { 4672, 0x0416 }, { 4676, 0x5058 }, { 4681, 0x6e40 }, { 4687, 0x8032 }, { 4691, 0x3112 }, /* 0x8100 */ { 4696, 0x07e4 }, { 4703, 0x0c00 }, { 4705, 0x8208 }, { 4708, 0x420a }, { 4712, 0x4840 }, { 4715, 0x803b }, { 4721, 0x4860 }, { 4725, 0x8713 }, { 4732, 0x850d }, { 4738, 0x3428 }, { 4743, 0x0319 }, { 4748, 0xe529 }, { 4756, 0x2345 }, { 4762, 0x870a }, { 4768, 0x25a9 }, { 4775, 0x5c18 }, /* 0x8200 */ { 4781, 0x77a6 }, { 4791, 0xd9c5 }, { 4800, 0x5e00 }, { 4805, 0x03e8 }, { 4811, 0x0081 }, { 4813, 0xa700 }, { 4818, 0xcd54 }, { 4826, 0x41c6 }, { 4832, 0x2800 }, { 4834, 0xa204 }, { 4838, 0xb860 }, { 4844, 0x2b0a }, { 4850, 0x0020 }, { 4851, 0xda9e }, { 4861, 0x08ea }, { 4867, 0x0e1a }, /* 0x8300 */ { 4873, 0x427c }, { 4880, 0x11c0 }, { 4884, 0x8908 }, { 4888, 0x0376 }, { 4895, 0x8621 }, { 4900, 0x0105 }, { 4903, 0x0000 }, { 4903, 0x18a8 }, { 4908, 0x46a0 }, { 4913, 0xc448 }, { 4918, 0x0d05 }, { 4923, 0x2022 }, { 4926, 0x5422 }, { 4931, 0x9148 }, { 4936, 0x8a01 }, { 4940, 0x2897 }, /* 0x8400 */ { 4947, 0x7898 }, { 4954, 0x0008 }, { 4955, 0x1605 }, { 4960, 0x3122 }, { 4965, 0x4240 }, { 4968, 0x0880 }, { 4970, 0xfa4e }, { 4980, 0x06a2 }, { 4985, 0x0814 }, { 4988, 0x9211 }, { 4993, 0x2002 }, { 4995, 0x9b04 }, { 5001, 0x2e52 }, { 5008, 0x0643 }, { 5013, 0x5000 }, { 5015, 0x9010 }, /* 0x8500 */ { 5018, 0x0041 }, { 5020, 0x85ba }, { 5028, 0x3042 }, { 5032, 0x2020 }, { 5034, 0x4f0b }, { 5042, 0x05a0 }, { 5046, 0x2708 }, { 5051, 0x4080 }, { 5053, 0x0591 }, { 5058, 0x1a93 }, { 5065, 0xdf50 }, { 5074, 0x0600 }, { 5076, 0xa202 }, { 5080, 0x3021 }, { 5084, 0x0630 }, { 5088, 0x4e80 }, /* 0x8600 */ { 5093, 0x0cc4 }, { 5098, 0x04c8 }, { 5102, 0xa004 }, { 5105, 0x8001 }, { 5107, 0x6000 }, { 5109, 0xd431 }, { 5116, 0x0880 }, { 5118, 0x0a02 }, { 5121, 0x1c00 }, { 5124, 0x0028 }, { 5126, 0x8e18 }, { 5132, 0x0041 }, { 5134, 0x6ad0 }, { 5141, 0xca10 }, { 5146, 0xf210 }, { 5152, 0x4b00 }, /* 0x8700 */ { 5156, 0x274d }, { 5164, 0x1506 }, { 5169, 0x0220 }, { 5171, 0x8890 }, { 5175, 0x5a00 }, { 5179, 0x82a8 }, { 5184, 0x4549 }, { 5190, 0x8150 }, { 5194, 0x2004 }, { 5196, 0x8000 }, { 5197, 0x8804 }, { 5200, 0x2c08 }, { 5204, 0x08d1 }, { 5209, 0x0005 }, { 5211, 0x8001 }, { 5213, 0x4ac4 }, /* 0x8800 */ { 5219, 0xe020 }, { 5223, 0x0062 }, { 5226, 0x008e }, { 5230, 0x0a42 }, { 5234, 0x3055 }, { 5240, 0x6a8c }, { 5247, 0x090e }, { 5252, 0xe0a5 }, { 5259, 0x2906 }, { 5264, 0x42c4 }, { 5269, 0x4814 }, { 5273, 0x80b3 }, { 5279, 0x803e }, { 5285, 0xb330 }, { 5292, 0x0102 }, { 5294, 0x731c }, /* 0x8900 */ { 5302, 0x1494 }, { 5307, 0x600d }, { 5312, 0x0c20 }, { 5315, 0x0940 }, { 5318, 0x301a }, { 5323, 0xc040 }, { 5326, 0xa451 }, { 5332, 0xc094 }, { 5337, 0x8dca }, { 5345, 0x05c8 }, { 5350, 0x96c2 }, { 5357, 0xa40c }, { 5362, 0x0001 }, { 5363, 0x3404 }, { 5367, 0x00c8 }, { 5370, 0x0110 }, /* 0x8a00 */ { 5372, 0x550d }, { 5379, 0xa9c9 }, { 5387, 0x2428 }, { 5391, 0x1c5a }, { 5398, 0x0142 }, { 5401, 0x4837 }, { 5408, 0x7a4d }, { 5417, 0x100f }, { 5422, 0x32b4 }, { 5429, 0x452a }, { 5435, 0x317b }, { 5444, 0x9205 }, { 5449, 0xb894 }, { 5456, 0x5c44 }, { 5462, 0x68d7 }, { 5471, 0x458a }, /* 0x8b00 */ { 5477, 0x5097 }, { 5484, 0x2ed1 }, { 5492, 0x1943 }, { 5498, 0x4208 }, { 5501, 0xd202 }, { 5506, 0x9d40 }, { 5512, 0x9840 }, { 5516, 0x2097 }, { 5522, 0x5409 }, { 5527, 0x064d }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, /* 0x8c00 */ { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x8480 }, { 5536, 0x5542 }, { 5542, 0x0421 }, { 5545, 0x1c06 }, { 5550, 0x1700 }, { 5554, 0x7624 }, { 5561, 0x6110 }, { 5565, 0xff87 }, { 5577, 0xb9dd }, { 5588, 0x659f }, { 5598, 0x5c0a }, { 5604, 0x245d }, { 5611, 0x3c00 }, /* 0x8d00 */ { 5615, 0xadb0 }, { 5623, 0x0059 }, { 5627, 0x0000 }, { 5627, 0x0000 }, { 5627, 0x0000 }, { 5627, 0x0000 }, { 5627, 0x28d0 }, { 5632, 0x009b }, { 5637, 0x0422 }, { 5640, 0x0200 }, { 5641, 0x0108 }, { 5643, 0x4408 }, { 5646, 0x9804 }, { 5650, 0xac40 }, { 5655, 0x8d0a }, { 5661, 0x9028 }, /* 0x8e00 */ { 5665, 0x8700 }, { 5669, 0xe001 }, { 5673, 0x0400 }, { 5674, 0x0031 }, { 5677, 0x1794 }, { 5684, 0x8221 }, { 5688, 0x0019 }, { 5691, 0x1054 }, { 5695, 0x2cb2 }, { 5702, 0x021a }, { 5706, 0x9c02 }, { 5711, 0x4003 }, { 5714, 0x3d60 }, { 5721, 0x8804 }, { 5724, 0x080c }, { 5727, 0x7900 }, /* 0x8f00 */ { 5732, 0x1628 }, { 5737, 0xba3c }, { 5746, 0x8640 }, { 5750, 0xcb08 }, { 5756, 0x7274 }, { 5764, 0x9080 }, { 5767, 0x001e }, { 5771, 0x0000 }, { 5771, 0x0000 }, { 5771, 0xd800 }, { 5775, 0xe188 }, { 5781, 0x9c87 }, { 5789, 0x4034 }, { 5793, 0x0412 }, { 5796, 0xae64 }, { 5804, 0x2791 }, /* 0x9000 */ { 5811, 0xe86b }, { 5820, 0xe6fb }, { 5832, 0x408f }, { 5838, 0x5366 }, { 5846, 0xeea6 }, { 5856, 0x537f }, { 5867, 0xe32b }, { 5876, 0xb5e4 }, { 5885, 0x869f }, { 5894, 0x0002 }, { 5895, 0x8548 }, { 5900, 0x0122 }, { 5903, 0x4402 }, { 5906, 0x0800 }, { 5907, 0x2116 }, { 5912, 0x20a0 }, /* 0x9100 */ { 5915, 0x0004 }, { 5916, 0x0204 }, { 5918, 0x2000 }, { 5919, 0x0005 }, { 5921, 0x7e00 }, { 5927, 0x0154 }, { 5931, 0x162c }, { 5937, 0x01ac }, { 5942, 0x2a84 }, { 5947, 0x1085 }, { 5951, 0x8c14 }, { 5956, 0x0530 }, { 5960, 0xfbc3 }, { 5971, 0xb943 }, { 5979, 0x00ca }, { 5983, 0x9060 }, /* 0x9200 */ { 5987, 0x6000 }, { 5989, 0x4032 }, { 5993, 0x1200 }, { 5995, 0x8090 }, { 5998, 0x0b30 }, { 6003, 0x4c81 }, { 6008, 0x0054 }, { 6011, 0x4002 }, { 6013, 0x0029 }, { 6016, 0x1d6a }, { 6024, 0x2000 }, { 6025, 0x0280 }, { 6027, 0x8000 }, { 6028, 0x0004 }, { 6029, 0x2610 }, { 6033, 0x150c }, /* 0x9300 */ { 6038, 0x8040 }, { 6040, 0x0701 }, { 6044, 0xd94d }, { 6053, 0x0c24 }, { 6057, 0x2810 }, { 6060, 0x1850 }, { 6064, 0x5001 }, { 6067, 0x5020 }, { 6070, 0x1000 }, { 6071, 0x04d0 }, { 6075, 0x7080 }, { 6079, 0x0201 }, { 6081, 0x0108 }, { 6083, 0x21c3 }, { 6089, 0x0132 }, { 6093, 0x0000 }, /* 0x9400 */ { 6093, 0x0088 }, { 6095, 0x0719 }, { 6101, 0x0802 }, { 6103, 0x0560 }, { 6107, 0x0012 }, { 6109, 0x4c0e }, { 6115, 0x0405 }, { 6118, 0xf0a1 }, { 6125, 0x0002 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, /* 0x9500 */ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0080 }, { 6127, 0x8e8d }, { 6135, 0x035a }, { 6141, 0x21bd }, { 6149, 0x5a04 }, { 6154, 0x3488 }, { 6159, 0x1170 }, { 6164, 0x0026 }, { 6167, 0x0000 }, /* 0x9600 */ { 6167, 0x0000 }, { 6167, 0x1000 }, { 6168, 0xc502 }, { 6173, 0x8804 }, { 6176, 0xb815 }, { 6183, 0xf801 }, { 6189, 0x147c }, { 6196, 0x25ed }, { 6205, 0xed60 }, { 6213, 0x1bb0 }, { 6220, 0x0589 }, { 6225, 0x1bd7 }, { 6235, 0x7af3 }, { 6246, 0x1a62 }, { 6252, 0x0d0c }, { 6257, 0x0ac5 }, /* 0x9700 */ { 6263, 0xe5d1 }, { 6272, 0x524a }, { 6278, 0x0490 }, { 6281, 0x6305 }, { 6287, 0x0354 }, { 6292, 0x5244 }, { 6297, 0x2b57 }, { 6306, 0x1612 }, { 6311, 0xa872 }, { 6318, 0x1101 }, { 6321, 0x2949 }, { 6327, 0x0018 }, { 6329, 0x0948 }, { 6333, 0x1008 }, { 6335, 0x6000 }, { 6337, 0x886c }, /* 0x9800 */ { 6343, 0x916e }, { 6351, 0x058f }, { 6358, 0x3012 }, { 6362, 0x3990 }, { 6368, 0xf840 }, { 6374, 0x4930 }, { 6379, 0x8880 }, { 6382, 0x001b }, { 6386, 0x0000 }, { 6386, 0x0000 }, { 6386, 0x8500 }, { 6389, 0x0042 }, { 6391, 0x0058 }, { 6394, 0x9800 }, { 6397, 0xea04 }, { 6403, 0x7014 }, /* 0x9900 */ { 6408, 0x1628 }, { 6413, 0x611d }, { 6420, 0x5113 }, { 6426, 0x6000 }, { 6428, 0x1a24 }, { 6433, 0x00a7 }, { 6438, 0x0000 }, { 6438, 0x0000 }, { 6438, 0x0000 }, { 6438, 0x03c0 }, { 6442, 0x7120 }, { 6447, 0x1018 }, { 6450, 0x0172 }, { 6455, 0xa927 }, { 6463, 0x6004 }, { 6466, 0x8906 }, /* 0x9a00 */ { 6471, 0xc022 }, { 6475, 0x020c }, { 6478, 0x0900 }, { 6480, 0x4081 }, { 6483, 0x202d }, { 6488, 0x8ca0 }, { 6493, 0x0e34 }, { 6499, 0x0000 }, { 6499, 0x0000 }, { 6499, 0x0000 }, { 6499, 0x2100 }, { 6501, 0x1101 }, { 6504, 0x8011 }, { 6507, 0xc11a }, { 6513, 0xec4c }, { 6521, 0x0892 }, /* 0x9b00 */ { 6525, 0x0040 }, { 6526, 0x8500 }, { 6529, 0xc7ac }, { 6538, 0x1806 }, { 6542, 0xe03e }, { 6550, 0x0512 }, { 6554, 0x8000 }, { 6555, 0x0010 }, { 6556, 0x4008 }, { 6558, 0x80ce }, { 6564, 0x6d01 }, { 6570, 0x0210 }, { 6572, 0x8641 }, { 6577, 0x0856 }, { 6582, 0x011e }, { 6587, 0x0027 }, /* 0x9c00 */ { 6591, 0x3750 }, { 6598, 0x083d }, { 6604, 0xe032 }, { 6610, 0x4e05 }, { 6616, 0x01c0 }, { 6619, 0x0484 }, { 6622, 0x0081 }, { 6624, 0x0140 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x1aa0 }, { 6631, 0x0059 }, /* 0x9d00 */ { 6635, 0x43c8 }, { 6641, 0x8824 }, { 6645, 0x1d48 }, { 6651, 0xc800 }, { 6654, 0x0152 }, { 6658, 0x7203 }, { 6664, 0x9013 }, { 6669, 0x0404 }, { 6671, 0x8280 }, { 6674, 0x0400 }, { 6675, 0x8a10 }, { 6679, 0x0d14 }, { 6684, 0x8056 }, { 6689, 0x0208 }, { 6691, 0xa040 }, { 6694, 0x2704 }, /* 0x9e00 */ { 6699, 0x0000 }, { 6699, 0x4c00 }, { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0xa320 }, { 6707, 0x1902 }, { 6711, 0xa0ae }, { 6718, 0x2660 }, { 6723, 0xdf00 }, { 6730, 0xf010 }, { 6735, 0x7b15 }, { 6744, 0x8121 }, { 6748, 0x3ad0 }, /* 0x9f00 */ { 6755, 0x4180 }, { 6758, 0x0028 }, { 6760, 0x1003 }, { 6763, 0x4800 }, { 6765, 0xcc00 }, { 6769, 0x8014 }, { 6772, 0x14cf }, { 6780, 0x00c4 }, { 6783, 0x2000 }, { 6784, 0x3020 }, { 6787, 0x0001 }, }; static const Summary16 jisx0208_uni2indx_pageff[15] = { /* 0xff00 */ { 6788, 0xdf7a }, { 6800, 0xffff }, { 6816, 0xffff }, { 6832, 0xefff }, { 6847, 0xffff }, { 6863, 0x3fff }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0028 }, }; static int jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0100) summary = &jisx0208_uni2indx_page00[(wc>>4)]; else if (wc >= 0x0300 && wc < 0x0460) summary = &jisx0208_uni2indx_page03[(wc>>4)-0x030]; else if (wc >= 0x2000 && wc < 0x2320) summary = &jisx0208_uni2indx_page20[(wc>>4)-0x200]; else if (wc >= 0x2500 && wc < 0x2670) summary = &jisx0208_uni2indx_page25[(wc>>4)-0x250]; else if (wc >= 0x3000 && wc < 0x3100) summary = &jisx0208_uni2indx_page30[(wc>>4)-0x300]; else if (wc >= 0x4e00 && wc < 0x9fb0) summary = &jisx0208_uni2indx_page4e[(wc>>4)-0x4e0]; else if (wc >= 0xff00 && wc < 0xfff0) summary = &jisx0208_uni2indx_pageff[(wc>>4)-0xff0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = jisx0208_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/jisx0212.h0100644000000000000000000040331507206266437014604 0ustar rootroot /* * JISX0212.1990-0 */ static const unsigned short jisx0212_2uni_page22[81] = { /* 0x22 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x02d8, 0x02c7, 0x00b8, 0x02d9, 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e, 0x0384, 0x0385, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00a1, 0x00a6, 0x00bf, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122, 0x00a4, 0x2116, }; static const unsigned short jisx0212_2uni_page26[188] = { /* 0x26 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0xfffd, 0x038c, 0xfffd, 0x038e, 0x03ab, 0xfffd, 0x038f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03c2, 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0xfffd, 0xfffd, /* 0x27 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f, }; static const unsigned short jisx0212_2uni_page29[275] = { /* 0x29 */ 0x00c6, 0x0110, 0xfffd, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x0141, 0x013f, 0xfffd, 0x014a, 0x00d8, 0x0152, 0xfffd, 0x0166, 0x00de, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0142, 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167, 0x00fe, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x2a */ 0x00c1, 0x00c0, 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100, 0x0104, 0x00c5, 0x00c3, 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a, 0x010e, 0x00c9, 0x00c8, 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112, 0x0118, 0xfffd, 0x011c, 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd, 0x00cc, 0x00cf, 0x00ce, 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128, 0x0134, 0x0136, 0x0139, 0x013d, 0x013b, 0x0143, 0x0147, 0x0145, 0x00d1, 0x00d3, 0x00d2, 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c, 0x00d5, 0x0154, 0x0158, 0x0156, 0x015a, 0x015c, 0x0160, 0x015e, 0x0164, 0x0162, 0x00da, 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3, 0x0170, 0x016a, 0x0172, 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9, 0x01d5, 0x0174, 0x00dd, 0x0178, 0x0176, 0x0179, 0x017d, 0x017b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x2b */ 0x00e1, 0x00e0, 0x00e4, 0x00e2, 0x0103, 0x01ce, 0x0101, 0x0105, 0x00e5, 0x00e3, 0x0107, 0x0109, 0x010d, 0x00e7, 0x010b, 0x010f, 0x00e9, 0x00e8, 0x00eb, 0x00ea, 0x011b, 0x0117, 0x0113, 0x0119, 0x01f5, 0x011d, 0x011f, 0xfffd, 0x0121, 0x0125, 0x00ed, 0x00ec, 0x00ef, 0x00ee, 0x01d0, 0xfffd, 0x012b, 0x012f, 0x0129, 0x0135, 0x0137, 0x013a, 0x013e, 0x013c, 0x0144, 0x0148, 0x0146, 0x00f1, 0x00f3, 0x00f2, 0x00f6, 0x00f4, 0x01d2, 0x0151, 0x014d, 0x00f5, 0x0155, 0x0159, 0x0157, 0x015b, 0x015d, 0x0161, 0x015f, 0x0165, 0x0163, 0x00fa, 0x00f9, 0x00fc, 0x00fb, 0x016d, 0x01d4, 0x0171, 0x016b, 0x0173, 0x016f, 0x0169, 0x01d8, 0x01dc, 0x01da, 0x01d6, 0x0175, 0x00fd, 0x00ff, 0x0177, 0x017a, 0x017e, 0x017c, }; static const unsigned short jisx0212_2uni_page30[5801] = { /* 0x30 */ 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f, 0x4e23, 0x4e24, 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35, 0x4e40, 0x4e41, 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63, 0x4e68, 0x4e69, 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96, 0x4e97, 0x4e9d, 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb, 0x4ee0, 0x4ee1, 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5, 0x4efd, 0x4efe, 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12, 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31, 0x4f60, 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40, 0x4f42, 0x4f48, 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f58, 0x4f5f, 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84, /* 0x31 */ 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93, 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2, 0x4fb7, 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc5, 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf, 0x4fd2, 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd, 0x4fff, 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e, 0x5010, 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e, 0x5022, 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040, 0x5041, 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051, 0x5052, 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063, 0x5066, 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081, 0x5083, 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090, /* 0x32 */ 0x5092, 0x5093, 0x5094, 0x5096, 0x509b, 0x509c, 0x509e, 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9, 0x50ba, 0x50bd, 0x50c0, 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce, 0x50d0, 0x50d3, 0x50d4, 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2, 0x50e4, 0x50e6, 0x50e8, 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa, 0x50fe, 0x5103, 0x5106, 0x5107, 0x5108, 0x510b, 0x510c, 0x510d, 0x510e, 0x50f2, 0x5110, 0x5117, 0x5119, 0x511b, 0x511c, 0x511d, 0x511e, 0x5123, 0x5127, 0x5128, 0x512c, 0x512d, 0x512f, 0x5131, 0x5133, 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514a, 0x514f, 0x5153, 0x5155, 0x5157, 0x5158, 0x515f, 0x5164, 0x5166, 0x517e, 0x5183, 0x5184, 0x518b, 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3, 0x51ad, 0x51b8, 0x51ba, 0x51bc, 0x51be, 0x51bf, 0x51c2, /* 0x33 */ 0x51c8, 0x51cf, 0x51d1, 0x51d2, 0x51d3, 0x51d5, 0x51d8, 0x51de, 0x51e2, 0x51e5, 0x51ee, 0x51f2, 0x51f3, 0x51f4, 0x51f7, 0x5201, 0x5202, 0x5205, 0x5212, 0x5213, 0x5215, 0x5216, 0x5218, 0x5222, 0x5228, 0x5231, 0x5232, 0x5235, 0x523c, 0x5245, 0x5249, 0x5255, 0x5257, 0x5258, 0x525a, 0x525c, 0x525f, 0x5260, 0x5261, 0x5266, 0x526e, 0x5277, 0x5278, 0x5279, 0x5280, 0x5282, 0x5285, 0x528a, 0x528c, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298, 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52af, 0x52b0, 0x52b6, 0x52b7, 0x52b8, 0x52ba, 0x52bb, 0x52bd, 0x52c0, 0x52c4, 0x52c6, 0x52c8, 0x52cc, 0x52cf, 0x52d1, 0x52d4, 0x52d6, 0x52db, 0x52dc, 0x52e1, 0x52e5, 0x52e8, 0x52e9, 0x52ea, 0x52ec, 0x52f0, 0x52f1, 0x52f4, 0x52f6, 0x52f7, 0x5300, 0x5303, 0x530a, 0x530b, /* 0x34 */ 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c, 0x531e, 0x531f, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d, 0x5330, 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342, 0x534c, 0x534b, 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c, 0x536d, 0x5372, 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e, 0x5393, 0x5394, 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab, 0x53af, 0x53b2, 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd, 0x53c0, 0x53c5, 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd, 0x53de, 0x53e0, 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a, 0x5421, 0x5427, 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435, 0x5443, 0x5444, 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464, 0x5466, 0x5467, 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f, /* 0x35 */ 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491, 0x5495, 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9, 0x54aa, 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb, 0x54bf, 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec, 0x54ef, 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505, 0x5508, 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b, 0x5532, 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547, 0x5549, 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b, 0x555e, 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582, 0x5586, 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594, 0x5597, 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3, 0x55c6, 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2, /* 0x36 */ 0x55d3, 0x55d7, 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9, 0x55f6, 0x55ff, 0x5605, 0x5608, 0x560a, 0x560d, 0x560e, 0x560f, 0x5610, 0x5611, 0x5612, 0x5619, 0x562c, 0x5630, 0x5633, 0x5635, 0x5637, 0x5639, 0x563b, 0x563c, 0x563d, 0x563f, 0x5640, 0x5641, 0x5643, 0x5644, 0x5646, 0x5649, 0x564b, 0x564d, 0x564f, 0x5654, 0x565e, 0x5660, 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566d, 0x566f, 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568b, 0x568c, 0x5695, 0x5699, 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6, 0x56a7, 0x56a8, 0x56a9, 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3, 0x56b7, 0x56be, 0x56c5, 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0, 0x56cc, 0x56cd, 0x56d9, 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4, 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56f1, 0x56eb, 0x56ed, /* 0x37 */ 0x56f6, 0x56f7, 0x5701, 0x5702, 0x5707, 0x570a, 0x570c, 0x5711, 0x5715, 0x571a, 0x571b, 0x571d, 0x5720, 0x5722, 0x5723, 0x5724, 0x5725, 0x5729, 0x572a, 0x572c, 0x572e, 0x572f, 0x5733, 0x5734, 0x573d, 0x573e, 0x573f, 0x5745, 0x5746, 0x574c, 0x574d, 0x5752, 0x5762, 0x5765, 0x5767, 0x5768, 0x576b, 0x576d, 0x576e, 0x576f, 0x5770, 0x5771, 0x5773, 0x5774, 0x5775, 0x5777, 0x5779, 0x577a, 0x577b, 0x577c, 0x577e, 0x5781, 0x5783, 0x578c, 0x5794, 0x5797, 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a1, 0x5795, 0x57a7, 0x57a8, 0x57a9, 0x57ac, 0x57b8, 0x57bd, 0x57c7, 0x57c8, 0x57cc, 0x57cf, 0x57d5, 0x57dd, 0x57de, 0x57e4, 0x57e6, 0x57e7, 0x57e9, 0x57ed, 0x57f0, 0x57f5, 0x57f6, 0x57f8, 0x57fd, 0x57fe, 0x57ff, 0x5803, 0x5804, 0x5808, 0x5809, 0x57e1, /* 0x38 */ 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820, 0x5826, 0x5827, 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c, 0x584d, 0x584f, 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867, 0x5868, 0x5878, 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888, 0x5889, 0x588a, 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896, 0x589d, 0x58a0, 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2, 0x58c4, 0x58bc, 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2, 0x58d4, 0x58d6, 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3, 0x5905, 0x5906, 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641, 0x591d, 0x5921, 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933, 0x5935, 0x5936, 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595b, 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d, /* 0x39 */ 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c, 0x598b, 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4, 0x59a7, 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba, 0x59bc, 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2, 0x59dd, 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef, 0x59f1, 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d, 0x5a0e, 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28, 0x5a2a, 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c, 0x5a50, 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77, 0x5a7a, 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99, 0x5a9c, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1, 0x5ab2, 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf, /* 0x3a */ 0x5ac4, 0x5ac6, 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0, 0x5ae5, 0x5aea, 0x5aee, 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01, 0x5b08, 0x5b17, 0x5b34, 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25, 0x5b2d, 0x5b38, 0x5b41, 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e, 0x5b68, 0x5b6e, 0x5b6f, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81, 0x5b84, 0x5b86, 0x5b8a, 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94, 0x5b96, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7, 0x5bba, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4, 0x5bfd, 0x5c0c, 0x5c17, 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29, 0x5c2b, 0x5c2c, 0x5c2e, 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59, 0x5c5a, 0x5c5c, 0x5c62, 0x5c63, 0x5c67, 0x5c68, 0x5c69, /* 0x3b */ 0x5c6d, 0x5c70, 0x5c74, 0x5c75, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c87, 0x5c88, 0x5c8a, 0x5c8f, 0x5c92, 0x5c9d, 0x5c9f, 0x5ca0, 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa, 0x5cb2, 0x5cb4, 0x5cb5, 0x5cba, 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd, 0x5cd7, 0x5cee, 0x5cf1, 0x5cf2, 0x5cf4, 0x5d01, 0x5d06, 0x5d0d, 0x5d12, 0x5d2b, 0x5d23, 0x5d24, 0x5d26, 0x5d27, 0x5d31, 0x5d34, 0x5d39, 0x5d3d, 0x5d3f, 0x5d42, 0x5d43, 0x5d46, 0x5d48, 0x5d55, 0x5d51, 0x5d59, 0x5d4a, 0x5d5f, 0x5d60, 0x5d61, 0x5d62, 0x5d64, 0x5d6a, 0x5d6d, 0x5d70, 0x5d79, 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81, 0x5d83, 0x5d88, 0x5d8a, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d99, 0x5d9b, 0x5d9f, 0x5da0, 0x5da7, 0x5dab, 0x5db0, 0x5db4, 0x5db8, 0x5db9, 0x5dc3, 0x5dc7, 0x5dcb, 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9, 0x5de0, 0x5de4, /* 0x3c */ 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d, 0x5e12, 0x5e14, 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28, 0x5e32, 0x5e35, 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56, 0x5e58, 0x5e5b, 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4, 0x5ea5, 0x5ea8, 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec6, 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4, 0x5ed5, 0x5edc, 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07, 0x5f08, 0x5f0e, 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28, 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36, 0x5f3b, 0x5f3d, 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d, 0x5f50, 0x5f54, 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67, /* 0x3d */ 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e, 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2, 0x5fa7, 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8, 0x5fc4, 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3, 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea, 0x5fec, 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa, 0x5ffc, 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018, 0x601a, 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047, 0x6048, 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d, 0x6061, 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088, 0x608a, 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e, 0x60a2, 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7, /* 0x3e */ 0x60bb, 0x60be, 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca, 0x60cb, 0x60ce, 0x60cf, 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd, 0x60de, 0x60e2, 0x60e5, 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd, 0x6102, 0x6107, 0x610a, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6119, 0x611c, 0x611e, 0x6122, 0x612a, 0x612b, 0x6130, 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141, 0x6145, 0x6146, 0x6149, 0x615e, 0x6160, 0x616c, 0x6172, 0x6178, 0x617b, 0x617c, 0x617f, 0x6180, 0x6181, 0x6183, 0x6184, 0x618b, 0x618d, 0x6192, 0x6193, 0x6197, 0x6198, 0x619c, 0x619d, 0x619f, 0x61a0, 0x61a5, 0x61a8, 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc, 0x61c0, 0x61c1, 0x61c2, 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd, 0x61de, 0x61df, 0x61e1, 0x61e2, 0x61e7, 0x61e9, 0x61e5, /* 0x3f */ 0x61ec, 0x61ed, 0x61ef, 0x6201, 0x6203, 0x6204, 0x6207, 0x6213, 0x6215, 0x621c, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229, 0x622b, 0x6239, 0x623d, 0x6242, 0x6243, 0x6244, 0x6246, 0x624c, 0x6250, 0x6251, 0x6252, 0x6254, 0x6256, 0x625a, 0x625c, 0x6264, 0x626d, 0x626f, 0x6273, 0x627a, 0x627d, 0x628d, 0x628e, 0x628f, 0x6290, 0x62a6, 0x62a8, 0x62b3, 0x62b6, 0x62b7, 0x62ba, 0x62be, 0x62bf, 0x62c4, 0x62ce, 0x62d5, 0x62d6, 0x62da, 0x62ea, 0x62f2, 0x62f4, 0x62fc, 0x62fd, 0x6303, 0x6304, 0x630a, 0x630b, 0x630d, 0x6310, 0x6313, 0x6316, 0x6318, 0x6329, 0x632a, 0x632d, 0x6335, 0x6336, 0x6339, 0x633c, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346, 0x634a, 0x634b, 0x634e, 0x6352, 0x6353, 0x6354, 0x6358, 0x635b, 0x6365, 0x6366, 0x636c, 0x636d, 0x6371, 0x6374, 0x6375, /* 0x40 */ 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384, 0x6387, 0x638a, 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e, 0x63a4, 0x63a6, 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5, 0x63c8, 0x63ce, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0, 0x63e5, 0x63ea, 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9, 0x6409, 0x640a, 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420, 0x6422, 0x6424, 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435, 0x643d, 0x643f, 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454, 0x645a, 0x645b, 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463, 0x646d, 0x6473, 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f, 0x6490, 0x6491, 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1, 0x64a3, 0x64a6, 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf, /* 0x41 */ 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0, 0x64d1, 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed, 0x64f0, 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508, 0x6509, 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b, 0x651e, 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a, 0x653c, 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554, 0x655f, 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585, 0x658a, 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6, 0x65ae, 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9, 0x65ce, 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2, 0x65f4, 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608, 0x6609, 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d, /* 0x42 */ 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c, 0x662e, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637, 0x6640, 0x6645, 0x6646, 0x664a, 0x664c, 0x6651, 0x664e, 0x6657, 0x6658, 0x6659, 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb, 0x666a, 0x666b, 0x666c, 0x667e, 0x6673, 0x6675, 0x667f, 0x6677, 0x6678, 0x6679, 0x667b, 0x6680, 0x667c, 0x668b, 0x668c, 0x668d, 0x6690, 0x6692, 0x6699, 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0, 0x66a4, 0x66ad, 0x66b1, 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0, 0x66c2, 0x66c3, 0x66c8, 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db, 0x66df, 0x66e8, 0x66eb, 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707, 0x670e, 0x6713, 0x6719, 0x671c, 0x6720, 0x6722, 0x6733, 0x673e, 0x6745, 0x6747, 0x6748, 0x674c, 0x6754, 0x6755, 0x675d, /* 0x43 */ 0x6766, 0x676c, 0x676e, 0x6774, 0x6776, 0x677b, 0x6781, 0x6784, 0x678e, 0x678f, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799, 0x679b, 0x67b0, 0x67b1, 0x67b2, 0x67b5, 0x67bb, 0x67bc, 0x67bd, 0x67f9, 0x67c0, 0x67c2, 0x67c3, 0x67c5, 0x67c8, 0x67c9, 0x67d2, 0x67d7, 0x67d9, 0x67dc, 0x67e1, 0x67e6, 0x67f0, 0x67f2, 0x67f6, 0x67f7, 0x6852, 0x6814, 0x6819, 0x681d, 0x681f, 0x6828, 0x6827, 0x682c, 0x682d, 0x682f, 0x6830, 0x6831, 0x6833, 0x683b, 0x683f, 0x6844, 0x6845, 0x684a, 0x684c, 0x6855, 0x6857, 0x6858, 0x685b, 0x686b, 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879, 0x687a, 0x687b, 0x687c, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896, 0x6898, 0x689a, 0x689c, 0x68a1, 0x68a3, 0x68a5, 0x68a9, 0x68aa, 0x68ae, 0x68b2, 0x68bb, 0x68c5, 0x68c8, 0x68cc, 0x68cf, /* 0x44 */ 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc, 0x68dd, 0x68e5, 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0, 0x68f1, 0x68f5, 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909, 0x690a, 0x6910, 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, 0x6935, 0x6938, 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957, 0x695b, 0x6963, 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c, 0x6970, 0x6971, 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d, 0x6992, 0x6996, 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab, 0x69ad, 0x69af, 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8, 0x69d1, 0x69d6, 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1, 0x69f3, 0x69f5, 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11, 0x6a15, 0x6a1a, 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32, /* 0x45 */ 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46, 0x6a49, 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56, 0x6a5b, 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81, 0x6a83, 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d, 0x6a9e, 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4, 0x6abd, 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0, 0x6ad4, 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec, 0x6af0, 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06, 0x6b07, 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e, 0x6b24, 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b, 0x6b3f, 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d, 0x6b60, 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d, /* 0x46 */ 0x6b7e, 0x6b82, 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0, 0x6ba2, 0x6ba3, 0x6ba8, 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0, 0x6bb8, 0x6bb9, 0x6bbd, 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc, 0x6bd6, 0x6bda, 0x6be1, 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1, 0x6bf7, 0x6bf9, 0x6bff, 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d, 0x6c0e, 0x6c10, 0x6c12, 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28, 0x6c2c, 0x6c2e, 0x6c33, 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f, 0x6c4a, 0x6c4b, 0x6c4d, 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b, 0x6c5c, 0x6c6b, 0x6c6d, 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79, 0x6c7b, 0x6c85, 0x6c86, 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97, 0x6c98, 0x6c9c, 0x6c9f, 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6, 0x6ccd, 0x6ccf, 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6, /* 0x47 */ 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7, 0x6ce9, 0x6ceb, 0x6cec, 0x6cee, 0x6cf2, 0x6cf4, 0x6d04, 0x6d07, 0x6d0a, 0x6d0e, 0x6d0f, 0x6d11, 0x6d13, 0x6d1a, 0x6d26, 0x6d27, 0x6d28, 0x6c67, 0x6d2e, 0x6d2f, 0x6d31, 0x6d39, 0x6d3c, 0x6d3f, 0x6d57, 0x6d5e, 0x6d5f, 0x6d61, 0x6d65, 0x6d67, 0x6d6f, 0x6d70, 0x6d7c, 0x6d82, 0x6d87, 0x6d91, 0x6d92, 0x6d94, 0x6d96, 0x6d97, 0x6d98, 0x6daa, 0x6dac, 0x6db4, 0x6db7, 0x6db9, 0x6dbd, 0x6dbf, 0x6dc4, 0x6dc8, 0x6dca, 0x6dce, 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd, 0x6ddf, 0x6de0, 0x6de2, 0x6de5, 0x6de9, 0x6def, 0x6df0, 0x6df4, 0x6df6, 0x6dfc, 0x6e00, 0x6e04, 0x6e1e, 0x6e22, 0x6e27, 0x6e32, 0x6e36, 0x6e39, 0x6e3b, 0x6e3c, 0x6e44, 0x6e45, 0x6e48, 0x6e49, 0x6e4b, 0x6e4f, 0x6e51, 0x6e52, 0x6e53, 0x6e54, 0x6e57, 0x6e5c, 0x6e5d, 0x6e5e, /* 0x48 */ 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d, 0x6e8d, 0x6e93, 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1, 0x6eb3, 0x6ebb, 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8, 0x6eca, 0x6ecd, 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9, 0x6efb, 0x6efd, 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16, 0x6f18, 0x6f1a, 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30, 0x6f33, 0x6f36, 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52, 0x6f53, 0x6f57, 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62, 0x6f68, 0x6f6c, 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b, 0x6f8c, 0x6f8d, 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a, 0x6f9f, 0x6fa0, 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf, 0x6fb0, 0x6fb5, 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca, /* 0x49 */ 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9, 0x6ffc, 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017, 0x7020, 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043, 0x7044, 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d, 0x705e, 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076, 0x707e, 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097, 0x7098, 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7, 0x70ca, 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc, 0x70e4, 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b, 0x710c, 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130, 0x7131, 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b, 0x7150, 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160, /* 0x4a */ 0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718c, 0x7192, 0x719a, 0x719b, 0x71a0, 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3, 0x71ba, 0x71bf, 0x71c0, 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3, 0x71d6, 0x71d9, 0x71da, 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207, 0x7208, 0x7209, 0x7213, 0x7217, 0x721a, 0x721d, 0x721f, 0x7224, 0x722b, 0x722f, 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243, 0x7245, 0x724e, 0x724f, 0x7250, 0x7253, 0x7255, 0x7256, 0x725a, 0x725c, 0x725e, 0x7260, 0x7263, 0x7268, 0x726b, 0x726e, 0x726f, 0x7271, 0x7277, 0x7278, 0x727b, 0x727c, 0x727f, 0x7284, 0x7289, 0x728d, 0x728e, 0x7293, 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1, 0x72b4, 0x72be, 0x72c1, 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6, 0x72d8, 0x72df, 0x72e5, 0x72f3, 0x72f4, 0x72fa, 0x72fb, /* 0x4b */ 0x72fe, 0x7302, 0x7304, 0x7305, 0x7307, 0x730b, 0x730d, 0x7312, 0x7313, 0x7318, 0x7319, 0x731e, 0x7322, 0x7324, 0x7327, 0x7328, 0x732c, 0x7331, 0x7332, 0x7335, 0x733a, 0x733b, 0x733d, 0x7343, 0x734d, 0x7350, 0x7352, 0x7356, 0x7358, 0x735d, 0x735e, 0x735f, 0x7360, 0x7366, 0x7367, 0x7369, 0x736b, 0x736c, 0x736e, 0x736f, 0x7371, 0x7377, 0x7379, 0x737c, 0x7380, 0x7381, 0x7383, 0x7385, 0x7386, 0x738e, 0x7390, 0x7393, 0x7395, 0x7397, 0x7398, 0x739c, 0x739e, 0x739f, 0x73a0, 0x73a2, 0x73a5, 0x73a6, 0x73aa, 0x73ab, 0x73ad, 0x73b5, 0x73b7, 0x73b9, 0x73bc, 0x73bd, 0x73bf, 0x73c5, 0x73c6, 0x73c9, 0x73cb, 0x73cc, 0x73cf, 0x73d2, 0x73d3, 0x73d6, 0x73d9, 0x73dd, 0x73e1, 0x73e3, 0x73e6, 0x73e7, 0x73e9, 0x73f4, 0x73f5, 0x73f7, 0x73f9, 0x73fa, 0x73fb, 0x73fd, /* 0x4c */ 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a, 0x7411, 0x741a, 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a, 0x742b, 0x742c, 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439, 0x7440, 0x7443, 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451, 0x7452, 0x7457, 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b, 0x746d, 0x746e, 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, 0x7487, 0x7489, 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, 0x749a, 0x749c, 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8, 0x74a9, 0x74aa, 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5, 0x74b9, 0x74bb, 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3, 0x74d8, 0x74da, 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea, 0x74eb, 0x74ef, 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506, /* 0x4d */ 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, 0x7529, 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f, 0x7540, 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557, 0x755e, 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b, 0x757c, 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593, 0x7595, 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf, 0x75c0, 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7, 0x75dc, 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee, 0x75ef, 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, 0x7608, 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616, 0x7619, 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626, 0x7629, 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639, /* 0x4e */ 0x763a, 0x763c, 0x764a, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645, 0x7649, 0x764b, 0x7655, 0x7659, 0x765f, 0x7664, 0x7665, 0x766d, 0x766e, 0x766f, 0x7671, 0x7674, 0x7681, 0x7685, 0x768c, 0x768d, 0x7695, 0x769b, 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2, 0x76a3, 0x76a4, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad, 0x76bd, 0x76c1, 0x76c5, 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4, 0x76d9, 0x76e0, 0x76e6, 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6, 0x76f9, 0x76fc, 0x7700, 0x7706, 0x770a, 0x770e, 0x7712, 0x7714, 0x7715, 0x7717, 0x7719, 0x771a, 0x771c, 0x7722, 0x7728, 0x772d, 0x772e, 0x772f, 0x7734, 0x7735, 0x7736, 0x7739, 0x773d, 0x773e, 0x7742, 0x7745, 0x7746, 0x774a, 0x774d, 0x774e, 0x774f, 0x7752, 0x7756, 0x7757, 0x775c, 0x775e, 0x775f, 0x7760, 0x7762, /* 0x4f */ 0x7764, 0x7767, 0x776a, 0x776c, 0x7770, 0x7772, 0x7773, 0x7774, 0x777a, 0x777d, 0x7780, 0x7784, 0x778c, 0x778d, 0x7794, 0x7795, 0x7796, 0x779a, 0x779f, 0x77a2, 0x77a7, 0x77aa, 0x77ae, 0x77af, 0x77b1, 0x77b5, 0x77be, 0x77c3, 0x77c9, 0x77d1, 0x77d2, 0x77d5, 0x77d9, 0x77de, 0x77df, 0x77e0, 0x77e4, 0x77e6, 0x77ea, 0x77ec, 0x77f0, 0x77f1, 0x77f4, 0x77f8, 0x77fb, 0x7805, 0x7806, 0x7809, 0x780d, 0x780e, 0x7811, 0x781d, 0x7821, 0x7822, 0x7823, 0x782d, 0x782e, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847, 0x7848, 0x784c, 0x784e, 0x7852, 0x785c, 0x785e, 0x7860, 0x7861, 0x7863, 0x7864, 0x7868, 0x786a, 0x786e, 0x787a, 0x787e, 0x788a, 0x788f, 0x7894, 0x7898, 0x78a1, 0x789d, 0x789e, 0x789f, 0x78a4, 0x78a8, 0x78ac, 0x78ad, 0x78b0, 0x78b1, 0x78b2, 0x78b3, /* 0x50 */ 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9, 0x78cc, 0x78ce, 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db, 0x78df, 0x78e0, 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900, 0x78f6, 0x78f7, 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910, 0x791a, 0x791c, 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929, 0x792d, 0x7931, 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944, 0x7945, 0x7946, 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958, 0x795b, 0x795c, 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b, 0x797c, 0x797e, 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996, 0x7998, 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab, 0x79af, 0x79b1, 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7, 0x79c8, 0x79ca, 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de, /* 0x51 */ 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1, 0x79f8, 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c, 0x7a11, 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d, 0x7a2f, 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44, 0x7a45, 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c, 0x7a5d, 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75, 0x7a78, 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b, 0x7a90, 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3, 0x7ab5, 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace, 0x7ad1, 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4, 0x7afb, 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27, 0x7b29, 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30, /* 0x52 */ 0x7b31, 0x7b34, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47, 0x7b4e, 0x7b55, 0x7b60, 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d, 0x7b6f, 0x7b72, 0x7b73, 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90, 0x7b91, 0x7b96, 0x7b9b, 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf, 0x7bb0, 0x7bb2, 0x7bb5, 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bc2, 0x7bc5, 0x7bc8, 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9, 0x7bda, 0x7bdb, 0x7be8, 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfc, 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c06, 0x7c09, 0x7c0b, 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b, 0x7c20, 0x7c25, 0x7c26, 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34, 0x7c36, 0x7c39, 0x7c3a, 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52, 0x7c53, 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e, /* 0x53 */ 0x7c61, 0x7c63, 0x7c67, 0x7c69, 0x7c6d, 0x7c6e, 0x7c70, 0x7c72, 0x7c79, 0x7c7c, 0x7c7d, 0x7c86, 0x7c87, 0x7c8f, 0x7c94, 0x7c9e, 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6, 0x7cb7, 0x7cba, 0x7cbb, 0x7cbc, 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8, 0x7cc9, 0x7ccd, 0x7ccf, 0x7cd3, 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9, 0x7cda, 0x7cdd, 0x7ce6, 0x7ce9, 0x7ceb, 0x7cf5, 0x7d03, 0x7d07, 0x7d08, 0x7d09, 0x7d0f, 0x7d11, 0x7d12, 0x7d13, 0x7d16, 0x7d1d, 0x7d1e, 0x7d23, 0x7d26, 0x7d2a, 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d40, 0x7d41, 0x7d47, 0x7d48, 0x7d4d, 0x7d51, 0x7d53, 0x7d57, 0x7d59, 0x7d5a, 0x7d5c, 0x7d5d, 0x7d65, 0x7d67, 0x7d6a, 0x7d70, 0x7d78, 0x7d7a, 0x7d7b, 0x7d7f, 0x7d81, 0x7d82, 0x7d83, 0x7d85, 0x7d86, 0x7d88, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d91, 0x7d96, 0x7d97, 0x7d9d, /* 0x54 */ 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6, 0x7db7, 0x7db9, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc, 0x7dcd, 0x7dce, 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6, 0x7dea, 0x7deb, 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa, 0x7e08, 0x7e10, 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20, 0x7e27, 0x7e28, 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f, 0x7e44, 0x7e45, 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f, 0x7e61, 0x7e62, 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78, 0x7e7e, 0x7e81, 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95, 0x7e98, 0x7e9a, 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e, 0x7f3f, 0x7f43, 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d, /* 0x55 */ 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d, 0x7f8f, 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2, 0x7fa6, 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3, 0x7fc8, 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8, 0x7fec, 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8007, 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013, 0x8014, 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026, 0x802c, 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a, 0x803c, 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d, 0x8071, 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6, 0x80a7, 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2, 0x80d4, 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee, /* 0x56 */ 0x80f0, 0x80f2, 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe, 0x8103, 0x810b, 0x8116, 0x8117, 0x8118, 0x811c, 0x811e, 0x8120, 0x8124, 0x8127, 0x812c, 0x8130, 0x8135, 0x813a, 0x813c, 0x8145, 0x8147, 0x814a, 0x814c, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167, 0x8168, 0x8169, 0x816d, 0x816f, 0x8177, 0x8181, 0x8190, 0x8184, 0x8185, 0x8186, 0x818b, 0x818e, 0x8196, 0x8198, 0x819b, 0x819e, 0x81a2, 0x81ae, 0x81b2, 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5, 0x81ca, 0x81ce, 0x81cf, 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de, 0x81e1, 0x81e4, 0x81eb, 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f8, 0x81f9, 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f, 0x8213, 0x8214, 0x8219, 0x821a, 0x821d, 0x8221, 0x8222, 0x8228, 0x8232, 0x8234, 0x823a, 0x8243, 0x8244, 0x8245, 0x8246, /* 0x57 */ 0x824b, 0x824e, 0x824f, 0x8251, 0x8256, 0x825c, 0x8260, 0x8263, 0x8267, 0x826d, 0x8274, 0x827b, 0x827d, 0x827f, 0x8280, 0x8281, 0x8283, 0x8284, 0x8287, 0x8289, 0x828a, 0x828e, 0x8291, 0x8294, 0x8296, 0x8298, 0x829a, 0x829b, 0x82a0, 0x82a1, 0x82a3, 0x82a4, 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ae, 0x82b0, 0x82b2, 0x82b4, 0x82b7, 0x82ba, 0x82bc, 0x82be, 0x82bf, 0x82c6, 0x82d0, 0x82d5, 0x82da, 0x82e0, 0x82e2, 0x82e4, 0x82e8, 0x82ea, 0x82ed, 0x82ef, 0x82f6, 0x82f7, 0x82fd, 0x82fe, 0x8300, 0x8301, 0x8307, 0x8308, 0x830a, 0x830b, 0x8354, 0x831b, 0x831d, 0x831e, 0x831f, 0x8321, 0x8322, 0x832c, 0x832d, 0x832e, 0x8330, 0x8333, 0x8337, 0x833a, 0x833c, 0x833d, 0x8342, 0x8343, 0x8344, 0x8347, 0x834d, 0x834e, 0x8351, 0x8355, 0x8356, 0x8357, 0x8370, 0x8378, /* 0x58 */ 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386, 0x838d, 0x8392, 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c, 0x839d, 0x83a6, 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0, 0x83c7, 0x83c9, 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353, 0x83e8, 0x83ea, 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406, 0x840a, 0x840f, 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439, 0x8445, 0x8447, 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452, 0x8456, 0x8458, 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465, 0x8467, 0x846a, 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c, 0x847d, 0x8481, 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6, 0x84a8, 0x84a9, 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd, 0x84be, 0x84c0, 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3, /* 0x59 */ 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f7, 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507, 0x850c, 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524, 0x8525, 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536, 0x853f, 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556, 0x8559, 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8564, 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f, 0x8581, 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593, 0x8598, 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4, 0x85b6, 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2, 0x85c7, 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df, 0x85e0, 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc, /* 0x5a */ 0x85ff, 0x8600, 0x8604, 0x8605, 0x860d, 0x860e, 0x8610, 0x8611, 0x8612, 0x8618, 0x8619, 0x861b, 0x861e, 0x8621, 0x8627, 0x8629, 0x8636, 0x8638, 0x863a, 0x863c, 0x863d, 0x8640, 0x8642, 0x8646, 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865d, 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866c, 0x866f, 0x8675, 0x8676, 0x8677, 0x867a, 0x868d, 0x8691, 0x8696, 0x8698, 0x869a, 0x869c, 0x86a1, 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1, 0x86b3, 0x86b4, 0x86b5, 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0, 0x86c1, 0x86c3, 0x86c5, 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da, 0x86dc, 0x86e0, 0x86e3, 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc, 0x86fd, 0x8704, 0x8705, 0x8707, 0x870b, 0x870e, 0x870f, 0x8710, 0x8713, 0x8714, 0x8719, 0x871e, 0x871f, 0x8721, 0x8723, /* 0x5b */ 0x8728, 0x872e, 0x872f, 0x8731, 0x8732, 0x8739, 0x873a, 0x873c, 0x873d, 0x873e, 0x8740, 0x8743, 0x8745, 0x874d, 0x8758, 0x875d, 0x8761, 0x8764, 0x8765, 0x876f, 0x8771, 0x8772, 0x877b, 0x8783, 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878b, 0x878c, 0x8790, 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879e, 0x87a0, 0x87a3, 0x87a7, 0x87ac, 0x87ad, 0x87ae, 0x87b1, 0x87b5, 0x87be, 0x87bf, 0x87c1, 0x87c8, 0x87c9, 0x87ca, 0x87ce, 0x87d5, 0x87d6, 0x87d9, 0x87da, 0x87dc, 0x87df, 0x87e2, 0x87e3, 0x87e4, 0x87ea, 0x87eb, 0x87ed, 0x87f1, 0x87f3, 0x87f8, 0x87fa, 0x87ff, 0x8801, 0x8803, 0x8806, 0x8809, 0x880a, 0x880b, 0x8810, 0x8819, 0x8812, 0x8813, 0x8814, 0x8818, 0x881a, 0x881b, 0x881c, 0x881e, 0x881f, 0x8828, 0x882d, 0x882e, 0x8830, 0x8832, 0x8835, /* 0x5c */ 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849, 0x884a, 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858, 0x885a, 0x885c, 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, 0x887b, 0x8880, 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0, 0x88a8, 0x88aa, 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de, 0x88e7, 0x88ef, 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906, 0x890d, 0x890e, 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a, 0x891c, 0x8920, 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935, 0x8939, 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949, 0x894f, 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961, 0x8962, 0x8963, 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a, /* 0x5d */ 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994, 0x8995, 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8, 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6, 0x89f9, 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11, 0x8a12, 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26, 0x8a2b, 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40, 0x8a43, 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56, 0x8a57, 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75, 0x8a76, 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80, 0x8a83, 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97, 0x8a99, 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3, /* 0x5e */ 0x8ab6, 0x8ab7, 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8, 0x8ac9, 0x8aca, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add, 0x8adf, 0x8aec, 0x8af0, 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff, 0x8b05, 0x8b06, 0x8b0b, 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a, 0x8b2d, 0x8b30, 0x8b37, 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b48, 0x8b52, 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e, 0x8b63, 0x8b6d, 0x8b76, 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81, 0x8b84, 0x8b85, 0x8b8b, 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c, 0x8b9e, 0x8b9f, 0x8c38, 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47, 0x8c49, 0x8c4b, 0x8c4f, 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58, 0x8c5b, 0x8c5d, 0x8c59, 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69, 0x8c6d, 0x8c73, 0x8c75, 0x8c76, 0x8c7b, 0x8c7e, 0x8c86, /* 0x5f */ 0x8c87, 0x8c8b, 0x8c90, 0x8c92, 0x8c93, 0x8c99, 0x8c9b, 0x8c9c, 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5, 0x8cc6, 0x8cc9, 0x8ccb, 0x8ccf, 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd, 0x8ce1, 0x8ce8, 0x8cec, 0x8cef, 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7, 0x8cf8, 0x8cfe, 0x8cff, 0x8d01, 0x8d03, 0x8d09, 0x8d12, 0x8d17, 0x8d1b, 0x8d65, 0x8d69, 0x8d6c, 0x8d6e, 0x8d7f, 0x8d82, 0x8d84, 0x8d88, 0x8d8d, 0x8d90, 0x8d91, 0x8d95, 0x8d9e, 0x8d9f, 0x8da0, 0x8da6, 0x8dab, 0x8dac, 0x8daf, 0x8db2, 0x8db5, 0x8db7, 0x8db9, 0x8dbb, 0x8dc0, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, 0x8dca, 0x8dce, 0x8dd1, 0x8dd4, 0x8dd5, 0x8dd7, 0x8dd9, 0x8de4, 0x8de5, 0x8de7, 0x8dec, 0x8df0, 0x8dbc, 0x8df1, 0x8df2, 0x8df4, 0x8dfd, 0x8e01, 0x8e04, 0x8e05, 0x8e06, 0x8e0b, 0x8e11, 0x8e14, 0x8e16, 0x8e20, 0x8e21, 0x8e22, /* 0x60 */ 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36, 0x8e37, 0x8e38, 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61, 0x8e62, 0x8e69, 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79, 0x8e7a, 0x8e7b, 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95, 0x8e9a, 0x8e9b, 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead, 0x8eae, 0x8eb3, 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3, 0x8ec4, 0x8ec7, 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee, 0x8ef0, 0x8ef1, 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02, 0x8f07, 0x8f08, 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e, 0x8f20, 0x8f21, 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f34, 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41, /* 0x61 */ 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55, 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0, 0x8fc1, 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3, 0x8fd5, 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5, 0x8ff6, 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018, 0x901b, 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033, 0x9034, 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d, 0x9062, 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085, 0x9088, 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098, 0x9099, 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2, 0x90b3, 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3, /* 0x62 */ 0x90c4, 0x90c5, 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8, 0x90d9, 0x90dc, 0x90dd, 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb, 0x90ef, 0x90f0, 0x90f4, 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105, 0x9106, 0x9108, 0x910d, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118, 0x911a, 0x911c, 0x911e, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127, 0x9129, 0x912e, 0x912f, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139, 0x913a, 0x913c, 0x913d, 0x9143, 0x9147, 0x9148, 0x914f, 0x9153, 0x9157, 0x9159, 0x915a, 0x915b, 0x9161, 0x9164, 0x9167, 0x916d, 0x9174, 0x9179, 0x917a, 0x917b, 0x9181, 0x9183, 0x9185, 0x9186, 0x918a, 0x918e, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919e, 0x91a1, 0x91a6, 0x91a8, 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b6, 0x91bb, 0x91bc, 0x91bd, 0x91bf, /* 0x63 */ 0x91c2, 0x91c3, 0x91c5, 0x91d3, 0x91d4, 0x91d7, 0x91d9, 0x91da, 0x91de, 0x91e4, 0x91e5, 0x91e9, 0x91ea, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f7, 0x91f9, 0x91fb, 0x91fd, 0x9200, 0x9201, 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920a, 0x920c, 0x9210, 0x9212, 0x9213, 0x9216, 0x9218, 0x921c, 0x921d, 0x9223, 0x9224, 0x9225, 0x9226, 0x9228, 0x922e, 0x922f, 0x9230, 0x9233, 0x9235, 0x9236, 0x9238, 0x9239, 0x923a, 0x923c, 0x923e, 0x9240, 0x9242, 0x9243, 0x9246, 0x9247, 0x924a, 0x924d, 0x924e, 0x924f, 0x9251, 0x9258, 0x9259, 0x925c, 0x925d, 0x9260, 0x9261, 0x9265, 0x9267, 0x9268, 0x9269, 0x926e, 0x926f, 0x9270, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, 0x927b, 0x927c, 0x927d, 0x927f, 0x9288, 0x9289, 0x928a, 0x928d, 0x928e, 0x9292, 0x9297, /* 0x64 */ 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7, 0x92a8, 0x92ab, 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, 0x92d3, 0x92d5, 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df, 0x92e0, 0x92e1, 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee, 0x92f0, 0x92f9, 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d, 0x9311, 0x9314, 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321, 0x9324, 0x9325, 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336, 0x9337, 0x9347, 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357, 0x9358, 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369, 0x936a, 0x936d, 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376, /* 0x65 */ 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388, 0x938a, 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b, 0x939e, 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4, 0x93b5, 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9, 0x93dc, 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7, 0x93f8, 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408, 0x9409, 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f, 0x942e, 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f, 0x943d, 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459, 0x945c, 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e, 0x946f, 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579, /* 0x66 */ 0x957e, 0x9584, 0x9588, 0x958c, 0x958d, 0x958e, 0x959d, 0x959e, 0x959f, 0x95a1, 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4, 0x95b6, 0x95ba, 0x95bd, 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb, 0x95d0, 0x95d1, 0x95d2, 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e4, 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624, 0x9625, 0x9626, 0x962c, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639, 0x963a, 0x963c, 0x963d, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657, 0x9658, 0x9661, 0x966e, 0x9674, 0x967b, 0x967c, 0x967e, 0x967f, 0x9681, 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969a, 0x969d, 0x969f, 0x96a4, 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af, 0x96b3, 0x96ba, 0x96ca, 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd, 0x96de, 0x96df, 0x96e9, 0x96ef, 0x96f1, 0x96fa, 0x9702, /* 0x67 */ 0x9703, 0x9705, 0x9709, 0x971a, 0x971b, 0x971d, 0x9721, 0x9722, 0x9723, 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974a, 0x974e, 0x974f, 0x9755, 0x9757, 0x9758, 0x975a, 0x975b, 0x9763, 0x9767, 0x976a, 0x976e, 0x9773, 0x9776, 0x9777, 0x9778, 0x977b, 0x977d, 0x977f, 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799, 0x979a, 0x979e, 0x979f, 0x97a2, 0x97ac, 0x97ae, 0x97b1, 0x97b2, 0x97b5, 0x97b6, 0x97b8, 0x97b9, 0x97ba, 0x97bc, 0x97be, 0x97bf, 0x97c1, 0x97c4, 0x97c5, 0x97c7, 0x97c9, 0x97ca, 0x97cc, 0x97cd, 0x97ce, 0x97d0, 0x97d1, 0x97d4, 0x97d7, 0x97d8, 0x97d9, 0x97dd, 0x97de, 0x97e0, 0x97db, 0x97e1, 0x97e4, 0x97ef, 0x97f1, 0x97f4, 0x97f7, 0x97f8, 0x97fa, 0x9807, 0x980a, 0x9819, 0x980d, 0x980e, 0x9814, 0x9816, 0x981c, 0x981e, 0x9820, 0x9823, 0x9826, /* 0x68 */ 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833, 0x9835, 0x9825, 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852, 0x9853, 0x9856, 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865, 0x9866, 0x986a, 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4, 0x98b7, 0x98b8, 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8, 0x98cc, 0x98e1, 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3, 0x98f6, 0x9902, 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, 0x991a, 0x991b, 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b, 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b, 0x993c, 0x9940, 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e, 0x9954, 0x9958, 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960, 0x999b, 0x999d, 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5, /* 0x69 */ 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3, 0x99d4, 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb, 0x99ec, 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02, 0x9a03, 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e, 0x9a20, 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33, 0x9a35, 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac, 0x9aae, 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb, 0x9abe, 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0, 0x9ad2, 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4, 0x9ae5, 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9, 0x9afa, 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03, /* 0x6a */ 0x9b04, 0x9b05, 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10, 0x9b12, 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20, 0x9b26, 0x9b2b, 0x9b2d, 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39, 0x9b3a, 0x9b3d, 0x9b48, 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57, 0x9b5b, 0x9b5e, 0x9b61, 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78, 0x9b79, 0x9b7f, 0x9b80, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8d, 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d, 0x9b9e, 0x9ba6, 0x9ba7, 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb7, 0x9bb8, 0x9bbb, 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7, 0x9bc8, 0x9bce, 0x9bd0, 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5, 0x9be7, 0x9bea, 0x9beb, 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8, /* 0x6b */ 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff, 0x9c00, 0x9c02, 0x9c0b, 0x9c0f, 0x9c11, 0x9c16, 0x9c18, 0x9c19, 0x9c1a, 0x9c1c, 0x9c1e, 0x9c22, 0x9c23, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c31, 0x9c35, 0x9c36, 0x9c37, 0x9c3d, 0x9c41, 0x9c43, 0x9c44, 0x9c45, 0x9c49, 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50, 0x9c53, 0x9c54, 0x9c56, 0x9c58, 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c63, 0x9c69, 0x9c6a, 0x9c5c, 0x9c6b, 0x9c68, 0x9c6e, 0x9c70, 0x9c72, 0x9c75, 0x9c77, 0x9c7b, 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9, 0x9d0b, 0x9d02, 0x9d11, 0x9d17, 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d2f, 0x9d30, 0x9d32, 0x9d33, 0x9d34, 0x9d3a, 0x9d3c, 0x9d45, 0x9d3d, 0x9d42, 0x9d43, 0x9d47, 0x9d4a, 0x9d53, 0x9d54, 0x9d5f, 0x9d63, 0x9d62, 0x9d65, 0x9d69, 0x9d6a, 0x9d6b, 0x9d70, 0x9d76, 0x9d77, 0x9d7b, /* 0x6c */ 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a, 0x9d8d, 0x9d8e, 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9da1, 0x9daa, 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc, 0x9dbf, 0x9dc3, 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dda, 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9, 0x9deb, 0x9dee, 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02, 0x9e07, 0x9e0e, 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19, 0x9e1c, 0x9e1d, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83, 0x9e84, 0x9e85, 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b, 0x9e9e, 0x9ea4, 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3, 0x9eb4, 0x9eb5, 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4, 0x9ee7, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5, /* 0x6d */ 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10, 0x9f11, 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1f, 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32, 0x9f34, 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41, 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d, 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa5, }; static int jisx0212_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 == 0x22) || (c1 >= 0x26 && c1 <= 0x27) || (c1 >= 0x29 && c1 <= 0x2b) || (c1 >= 0x30 && c1 <= 0x6d)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; if (i < 470) { if (i < 175) wc = jisx0212_2uni_page22[i-94]; } else if (i < 752) { if (i < 658) wc = jisx0212_2uni_page26[i-470]; } else if (i < 1410) { if (i < 1027) wc = jisx0212_2uni_page29[i-752]; } else { if (i < 7211) wc = jisx0212_2uni_page30[i-1410]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short jisx0212_2charset[6067] = { 0x2237, 0x2242, 0x2270, 0x2243, 0x226d, 0x226c, 0x226e, 0x2234, 0x2231, 0x226b, 0x2244, 0x2a22, 0x2a21, 0x2a24, 0x2a2a, 0x2a23, 0x2a29, 0x2921, 0x2a2e, 0x2a32, 0x2a31, 0x2a34, 0x2a33, 0x2a40, 0x2a3f, 0x2a42, 0x2a41, 0x2a50, 0x2a52, 0x2a51, 0x2a54, 0x2a58, 0x2a53, 0x292c, 0x2a63, 0x2a62, 0x2a65, 0x2a64, 0x2a72, 0x2930, 0x294e, 0x2b22, 0x2b21, 0x2b24, 0x2b2a, 0x2b23, 0x2b29, 0x2941, 0x2b2e, 0x2b32, 0x2b31, 0x2b34, 0x2b33, 0x2b40, 0x2b3f, 0x2b42, 0x2b41, 0x2943, 0x2b50, 0x2b52, 0x2b51, 0x2b54, 0x2b58, 0x2b53, 0x294c, 0x2b63, 0x2b62, 0x2b65, 0x2b64, 0x2b72, 0x2950, 0x2b73, 0x2a27, 0x2b27, 0x2a25, 0x2b25, 0x2a28, 0x2b28, 0x2a2b, 0x2b2b, 0x2a2c, 0x2b2c, 0x2a2f, 0x2b2f, 0x2a2d, 0x2b2d, 0x2a30, 0x2b30, 0x2922, 0x2942, 0x2a37, 0x2b37, 0x2a36, 0x2b36, 0x2a38, 0x2b38, 0x2a35, 0x2b35, 0x2a3a, 0x2b3a, 0x2a3b, 0x2b3b, 0x2a3d, 0x2b3d, 0x2a3c, 0x2a3e, 0x2b3e, 0x2924, 0x2944, 0x2a47, 0x2b47, 0x2a45, 0x2b45, 0x2a46, 0x2b46, 0x2a44, 0x2945, 0x2926, 0x2946, 0x2a48, 0x2b48, 0x2a49, 0x2b49, 0x2947, 0x2a4a, 0x2b4a, 0x2a4c, 0x2b4c, 0x2a4b, 0x2b4b, 0x2929, 0x2949, 0x2928, 0x2948, 0x2a4d, 0x2b4d, 0x2a4f, 0x2b4f, 0x2a4e, 0x2b4e, 0x294a, 0x292b, 0x294b, 0x2a57, 0x2b57, 0x2a56, 0x2b56, 0x292d, 0x294d, 0x2a59, 0x2b59, 0x2a5b, 0x2b5b, 0x2a5a, 0x2b5a, 0x2a5c, 0x2b5c, 0x2a5d, 0x2b5d, 0x2a5f, 0x2b5f, 0x2a5e, 0x2b5e, 0x2a61, 0x2b61, 0x2a60, 0x2b60, 0x292f, 0x294f, 0x2a6c, 0x2b6c, 0x2a69, 0x2b69, 0x2a66, 0x2b66, 0x2a6b, 0x2b6b, 0x2a68, 0x2b68, 0x2a6a, 0x2b6a, 0x2a71, 0x2b71, 0x2a74, 0x2b74, 0x2a73, 0x2a75, 0x2b75, 0x2a77, 0x2b77, 0x2a76, 0x2b76, 0x2a26, 0x2b26, 0x2a43, 0x2b43, 0x2a55, 0x2b55, 0x2a67, 0x2b67, 0x2a70, 0x2b70, 0x2a6d, 0x2b6d, 0x2a6f, 0x2b6f, 0x2a6e, 0x2b6e, 0x2b39, 0x2230, 0x222f, 0x2232, 0x2236, 0x2235, 0x2233, 0x2238, 0x2239, 0x2661, 0x2662, 0x2663, 0x2664, 0x2667, 0x2669, 0x266c, 0x2676, 0x2665, 0x266a, 0x2671, 0x2672, 0x2673, 0x2674, 0x267b, 0x2678, 0x2675, 0x267a, 0x2677, 0x2679, 0x267c, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274a, 0x274b, 0x274c, 0x274d, 0x274e, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e, 0x2271, 0x226f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e, 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e, 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x305f, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x3176, 0x315f, 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3177, 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a, 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242, 0x3243, 0x3244, 0x3245, 0x3251, 0x3246, 0x3247, 0x3248, 0x3249, 0x324a, 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3252, 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a, 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324, 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c, 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334, 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c, 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344, 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c, 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354, 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c, 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364, 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c, 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374, 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426, 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e, 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436, 0x3438, 0x3437, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e, 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446, 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e, 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456, 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e, 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466, 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e, 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476, 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e, 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528, 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530, 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538, 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540, 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548, 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558, 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570, 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578, 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622, 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a, 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632, 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a, 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642, 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a, 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652, 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a, 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662, 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a, 0x366b, 0x366c, 0x366d, 0x3670, 0x3671, 0x366e, 0x366f, 0x3672, 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a, 0x367b, 0x367d, 0x367e, 0x367c, 0x3721, 0x3722, 0x3723, 0x3724, 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c, 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734, 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c, 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c, 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756, 0x3757, 0x3760, 0x3758, 0x3759, 0x375a, 0x375b, 0x375c, 0x375d, 0x375e, 0x375f, 0x3761, 0x3762, 0x3763, 0x3764, 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c, 0x376d, 0x377e, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773, 0x3774, 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b, 0x377c, 0x377d, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e, 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836, 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e, 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846, 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e, 0x3850, 0x3851, 0x384f, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856, 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e, 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3867, 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f, 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877, 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928, 0x3929, 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930, 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938, 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940, 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950, 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958, 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960, 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968, 0x3969, 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970, 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978, 0x3979, 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22, 0x3a23, 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a, 0x3a2b, 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a33, 0x3a34, 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a32, 0x3a39, 0x3a3a, 0x3a3b, 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42, 0x3a43, 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a, 0x3a4b, 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52, 0x3a53, 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a, 0x3a5b, 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62, 0x3a63, 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a, 0x3a6b, 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72, 0x3a73, 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a, 0x3a7b, 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24, 0x3b25, 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2d, 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34, 0x3b35, 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3d, 0x3b3c, 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45, 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b46, 0x3b4b, 0x3b4c, 0x3b4d, 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b57, 0x3b55, 0x3b54, 0x3b56, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c, 0x3b5d, 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64, 0x3b65, 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c, 0x3b6d, 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x6674, 0x3b73, 0x3b74, 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b7a, 0x3b79, 0x3b7b, 0x3b7c, 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26, 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2e, 0x3c2d, 0x3c2f, 0x3c30, 0x3c31, 0x3c34, 0x3c32, 0x3c33, 0x3c35, 0x3c36, 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e, 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46, 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e, 0x3c4f, 0x3c50, 0x3c52, 0x3c51, 0x3c53, 0x3c54, 0x3c55, 0x3c56, 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e, 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66, 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e, 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76, 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e, 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28, 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d32, 0x3d30, 0x3d31, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38, 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40, 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48, 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50, 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58, 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60, 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68, 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70, 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78, 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22, 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a, 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32, 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a, 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42, 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a, 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52, 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a, 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62, 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a, 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72, 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a, 0x3e7b, 0x3e7e, 0x3e7c, 0x3e7d, 0x3f21, 0x3f22, 0x3f23, 0x3f24, 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c, 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34, 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c, 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44, 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c, 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54, 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c, 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64, 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c, 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74, 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c, 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026, 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e, 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036, 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e, 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046, 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e, 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056, 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e, 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066, 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e, 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076, 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e, 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128, 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130, 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138, 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140, 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148, 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150, 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158, 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160, 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168, 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170, 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178, 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a, 0x422b, 0x422c, 0x422d, 0x422e, 0x4230, 0x422f, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, 0x4237, 0x4236, 0x4238, 0x4239, 0x423a, 0x423b, 0x423c, 0x423d, 0x423e, 0x4240, 0x4241, 0x4242, 0x4244, 0x4245, 0x4247, 0x4248, 0x4249, 0x424a, 0x424c, 0x4243, 0x4246, 0x424b, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252, 0x4253, 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a, 0x425b, 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262, 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a, 0x426b, 0x426c, 0x426d, 0x423f, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272, 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a, 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324, 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c, 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334, 0x4335, 0x4336, 0x4337, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d, 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347, 0x4348, 0x4338, 0x434a, 0x434b, 0x434c, 0x434d, 0x434f, 0x434e, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355, 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x4349, 0x435c, 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364, 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c, 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374, 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c, 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426, 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e, 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436, 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e, 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e, 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456, 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e, 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466, 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e, 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476, 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e, 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528, 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530, 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538, 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540, 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548, 0x4549, 0x454a, 0x454b, 0x454d, 0x454c, 0x454e, 0x454f, 0x4550, 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558, 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560, 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568, 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570, 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578, 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622, 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a, 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632, 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a, 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642, 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a, 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652, 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a, 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4736, 0x4661, 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669, 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671, 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679, 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723, 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b, 0x472c, 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734, 0x4735, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c, 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744, 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c, 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754, 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c, 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764, 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c, 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774, 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c, 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826, 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e, 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836, 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e, 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x4853, 0x484d, 0x484e, 0x484f, 0x4850, 0x4851, 0x4852, 0x4854, 0x4855, 0x4856, 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e, 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866, 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e, 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876, 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e, 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, 0x4928, 0x4929, 0x492a, 0x492b, 0x492c, 0x492d, 0x492e, 0x492f, 0x4930, 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938, 0x4939, 0x493a, 0x493b, 0x493c, 0x4941, 0x493d, 0x493e, 0x493f, 0x4940, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946, 0x4947, 0x4948, 0x4949, 0x494a, 0x494b, 0x494c, 0x494d, 0x494e, 0x494f, 0x4950, 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, 0x4956, 0x4957, 0x4958, 0x4959, 0x495a, 0x495b, 0x495c, 0x495d, 0x495e, 0x495f, 0x4960, 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, 0x4968, 0x4969, 0x496a, 0x496b, 0x496c, 0x496d, 0x496e, 0x496f, 0x4970, 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978, 0x4979, 0x497a, 0x497b, 0x497c, 0x497d, 0x497e, 0x4a21, 0x4a22, 0x4a23, 0x4a24, 0x4a25, 0x4a26, 0x4a27, 0x4a28, 0x4a29, 0x4a2a, 0x4a2b, 0x4a2c, 0x4a2d, 0x4a2e, 0x4a2f, 0x4a30, 0x4a31, 0x4a32, 0x4a33, 0x4a34, 0x4a35, 0x4a36, 0x4a37, 0x4a38, 0x4a39, 0x4a3a, 0x4a3b, 0x4a3c, 0x4a3d, 0x4a3e, 0x4a3f, 0x4a40, 0x4a41, 0x4a42, 0x4a43, 0x4a44, 0x4a45, 0x4a46, 0x4a47, 0x4a48, 0x4a49, 0x4a4a, 0x4a4b, 0x4a4c, 0x4a4d, 0x4a4e, 0x4a4f, 0x4a50, 0x4a51, 0x4a52, 0x4a53, 0x4a54, 0x4a55, 0x4a56, 0x4a57, 0x4a58, 0x4a59, 0x4a5a, 0x4a5b, 0x4a5c, 0x4a5d, 0x4a5e, 0x4a5f, 0x4a60, 0x4a61, 0x4a62, 0x4a63, 0x4a64, 0x4a65, 0x4a66, 0x4a67, 0x4a68, 0x4a69, 0x4a6a, 0x4a6b, 0x4a6c, 0x4a6d, 0x4a6e, 0x4a6f, 0x4a70, 0x4a71, 0x4a72, 0x4a73, 0x4a74, 0x4a75, 0x4a76, 0x4a77, 0x4a78, 0x4a79, 0x4a7a, 0x4a7b, 0x4a7c, 0x4a7d, 0x4a7e, 0x4b21, 0x4b22, 0x4b23, 0x4b24, 0x4b25, 0x4b26, 0x4b27, 0x4b28, 0x4b29, 0x4b2a, 0x4b2b, 0x4b2c, 0x4b2d, 0x4b2e, 0x4b2f, 0x4b30, 0x4b31, 0x4b32, 0x4b33, 0x4b34, 0x4b35, 0x4b36, 0x4b37, 0x4b38, 0x4b39, 0x4b3a, 0x4b3b, 0x4b3c, 0x4b3d, 0x4b3e, 0x4b3f, 0x4b40, 0x4b41, 0x4b42, 0x4b43, 0x4b44, 0x4b45, 0x4b46, 0x4b47, 0x4b48, 0x4b49, 0x4b4a, 0x4b4b, 0x4b4c, 0x4b4d, 0x4b4e, 0x4b4f, 0x4b50, 0x4b51, 0x4b52, 0x4b53, 0x4b54, 0x4b55, 0x4b56, 0x4b57, 0x4b58, 0x4b59, 0x4b5a, 0x4b5b, 0x4b5c, 0x4b5d, 0x4b5e, 0x4b5f, 0x4b60, 0x4b61, 0x4b62, 0x4b63, 0x4b64, 0x4b65, 0x4b66, 0x4b67, 0x4b68, 0x4b69, 0x4b6a, 0x4b6b, 0x4b6c, 0x4b6d, 0x4b6e, 0x4b6f, 0x4b70, 0x4b71, 0x4b72, 0x4b73, 0x4b74, 0x4b75, 0x4b76, 0x4b77, 0x4b78, 0x4b79, 0x4b7a, 0x4b7b, 0x4b7c, 0x4b7d, 0x4b7e, 0x4c21, 0x4c22, 0x4c23, 0x4c24, 0x4c25, 0x4c26, 0x4c27, 0x4c28, 0x4c29, 0x4c2a, 0x4c2b, 0x4c2c, 0x4c2d, 0x4c2e, 0x4c2f, 0x4c30, 0x4c31, 0x4c32, 0x4c33, 0x4c34, 0x4c35, 0x4c36, 0x4c37, 0x4c38, 0x4c39, 0x4c3a, 0x4c3b, 0x4c3c, 0x4c3d, 0x4c3e, 0x4c3f, 0x4c40, 0x4c41, 0x4c42, 0x4c43, 0x4c44, 0x4c45, 0x4c46, 0x4c47, 0x4c48, 0x4c49, 0x4c4a, 0x4c4b, 0x4c4c, 0x4c4d, 0x4c4e, 0x4c4f, 0x4c50, 0x4c51, 0x4c52, 0x4c53, 0x4c54, 0x4c55, 0x4c56, 0x4c57, 0x4c58, 0x4c59, 0x4c5a, 0x4c5b, 0x4c5c, 0x4c5d, 0x4c5e, 0x4c5f, 0x4c60, 0x4c61, 0x4c62, 0x4c63, 0x4c64, 0x4c65, 0x4c66, 0x4c67, 0x4c68, 0x4c69, 0x4c6a, 0x4c6b, 0x4c6c, 0x4c6d, 0x4c6e, 0x4c6f, 0x4c70, 0x4c71, 0x4c72, 0x4c73, 0x4c74, 0x4c75, 0x4c76, 0x4c77, 0x4c78, 0x4c79, 0x4c7a, 0x4c7b, 0x4c7c, 0x4c7d, 0x4c7e, 0x4d21, 0x4d22, 0x4d23, 0x4d24, 0x4d25, 0x4d26, 0x4d27, 0x4d28, 0x4d29, 0x4d2a, 0x4d2b, 0x4d2c, 0x4d2d, 0x4d2e, 0x4d2f, 0x4d30, 0x4d31, 0x4d32, 0x4d33, 0x4d34, 0x4d35, 0x4d36, 0x4d37, 0x4d38, 0x4d39, 0x4d3a, 0x4d3b, 0x4d3c, 0x4d3d, 0x4d3e, 0x4d3f, 0x4d40, 0x4d41, 0x4d42, 0x4d43, 0x4d44, 0x4d45, 0x4d46, 0x4d47, 0x4d48, 0x4d49, 0x4d4a, 0x4d4b, 0x4d4c, 0x4d4d, 0x4d4e, 0x4d4f, 0x4d50, 0x4d51, 0x4d52, 0x4d53, 0x4d54, 0x4d55, 0x4d56, 0x4d57, 0x4d58, 0x4d59, 0x4d5a, 0x4d5b, 0x4d5c, 0x4d5d, 0x4d5e, 0x4d5f, 0x4d60, 0x4d61, 0x4d62, 0x4d63, 0x4d64, 0x4d65, 0x4d66, 0x4d67, 0x4d68, 0x4d69, 0x4d6a, 0x4d6b, 0x4d6c, 0x4d6d, 0x4d6e, 0x4d6f, 0x4d70, 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x4d75, 0x4d76, 0x4d77, 0x4d78, 0x4d79, 0x4d7a, 0x4d7b, 0x4d7c, 0x4d7d, 0x4d7e, 0x4e21, 0x4e22, 0x4e24, 0x4e25, 0x4e26, 0x4e27, 0x4e28, 0x4e29, 0x4e23, 0x4e2a, 0x4e2b, 0x4e2c, 0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34, 0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c, 0x4e3d, 0x4e3e, 0x4e3f, 0x4e40, 0x4e41, 0x4e42, 0x4e43, 0x4e44, 0x4e45, 0x4e46, 0x4e47, 0x4e48, 0x4e49, 0x4e4a, 0x4e4b, 0x4e4c, 0x4e4d, 0x4e4e, 0x4e4f, 0x4e50, 0x4e51, 0x4e52, 0x4e53, 0x4e54, 0x4e55, 0x4e56, 0x4e57, 0x4e58, 0x4e59, 0x4e5a, 0x4e5b, 0x4e5c, 0x4e5d, 0x4e5e, 0x4e5f, 0x4e60, 0x4e61, 0x4e62, 0x4e63, 0x4e64, 0x4e65, 0x4e66, 0x4e67, 0x4e68, 0x4e69, 0x4e6a, 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f, 0x4e70, 0x4e71, 0x4e72, 0x4e73, 0x4e74, 0x4e75, 0x4e76, 0x4e77, 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7e, 0x4f21, 0x4f22, 0x4f23, 0x4f24, 0x4f25, 0x4f26, 0x4f27, 0x4f28, 0x4f29, 0x4f2a, 0x4f2b, 0x4f2c, 0x4f2d, 0x4f2e, 0x4f2f, 0x4f30, 0x4f31, 0x4f32, 0x4f33, 0x4f34, 0x4f35, 0x4f36, 0x4f37, 0x4f38, 0x4f39, 0x4f3a, 0x4f3b, 0x4f3c, 0x4f3d, 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f43, 0x4f44, 0x4f45, 0x4f46, 0x4f47, 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f4d, 0x4f4e, 0x4f4f, 0x4f50, 0x4f51, 0x4f52, 0x4f53, 0x4f54, 0x4f55, 0x4f56, 0x4f57, 0x4f58, 0x4f59, 0x4f5a, 0x4f5b, 0x4f5c, 0x4f5d, 0x4f5e, 0x4f5f, 0x4f60, 0x4f61, 0x4f62, 0x4f63, 0x4f64, 0x4f65, 0x4f66, 0x4f67, 0x4f68, 0x4f69, 0x4f6a, 0x4f6b, 0x4f6c, 0x4f6d, 0x4f6e, 0x4f6f, 0x4f70, 0x4f71, 0x4f72, 0x4f74, 0x4f75, 0x4f76, 0x4f73, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7b, 0x4f7c, 0x4f7d, 0x4f7e, 0x5021, 0x5022, 0x5023, 0x5024, 0x5025, 0x5026, 0x5027, 0x5028, 0x5029, 0x502a, 0x502b, 0x502c, 0x502e, 0x502f, 0x5030, 0x5031, 0x502d, 0x5032, 0x5033, 0x5034, 0x5035, 0x5037, 0x5038, 0x5039, 0x503a, 0x503b, 0x5036, 0x503c, 0x503d, 0x503e, 0x503f, 0x5040, 0x5041, 0x5042, 0x5043, 0x5044, 0x5045, 0x5046, 0x5047, 0x5048, 0x5049, 0x504a, 0x504b, 0x504c, 0x504d, 0x504e, 0x504f, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5055, 0x5056, 0x5057, 0x5058, 0x5059, 0x505a, 0x505b, 0x505c, 0x505d, 0x505e, 0x505f, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5065, 0x5066, 0x5067, 0x5068, 0x5069, 0x506a, 0x506b, 0x506c, 0x506d, 0x506e, 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5076, 0x5077, 0x5078, 0x5079, 0x507a, 0x507b, 0x507c, 0x507d, 0x507e, 0x5121, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f, 0x5130, 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x513f, 0x5140, 0x5141, 0x5142, 0x5143, 0x5144, 0x5145, 0x5146, 0x5147, 0x5148, 0x5149, 0x514a, 0x514b, 0x514c, 0x514d, 0x514e, 0x514f, 0x5150, 0x5151, 0x5152, 0x5153, 0x5154, 0x5155, 0x5156, 0x5157, 0x5158, 0x5159, 0x515a, 0x515b, 0x515c, 0x515d, 0x515e, 0x515f, 0x5160, 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5167, 0x5168, 0x5169, 0x516a, 0x516b, 0x516c, 0x516d, 0x516e, 0x516f, 0x5170, 0x5171, 0x5172, 0x5173, 0x5174, 0x5175, 0x5176, 0x5177, 0x5178, 0x5179, 0x517a, 0x517b, 0x517c, 0x517d, 0x517e, 0x5221, 0x5222, 0x5223, 0x5224, 0x5225, 0x5226, 0x5227, 0x5228, 0x5229, 0x522a, 0x522b, 0x522c, 0x522d, 0x522e, 0x522f, 0x5230, 0x5231, 0x5232, 0x5233, 0x5234, 0x5235, 0x5236, 0x5237, 0x5238, 0x5239, 0x523a, 0x523b, 0x523c, 0x523d, 0x523e, 0x523f, 0x5240, 0x5241, 0x5242, 0x5243, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a, 0x524b, 0x524c, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252, 0x5253, 0x5254, 0x5255, 0x5256, 0x5257, 0x5258, 0x5259, 0x525a, 0x525b, 0x525c, 0x525d, 0x525e, 0x525f, 0x5260, 0x5261, 0x5262, 0x5263, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269, 0x526a, 0x526b, 0x526c, 0x526d, 0x526e, 0x526f, 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5276, 0x5277, 0x5278, 0x5275, 0x5279, 0x527a, 0x527b, 0x527c, 0x527d, 0x527e, 0x5321, 0x5322, 0x5323, 0x5324, 0x5325, 0x5326, 0x5327, 0x5328, 0x5329, 0x532a, 0x532b, 0x532c, 0x532d, 0x532e, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, 0x5335, 0x5336, 0x5337, 0x5338, 0x5339, 0x533a, 0x533b, 0x533c, 0x533d, 0x533e, 0x533f, 0x5340, 0x5341, 0x5342, 0x5343, 0x5344, 0x5345, 0x5346, 0x5347, 0x5348, 0x5349, 0x534a, 0x534b, 0x534c, 0x534d, 0x534e, 0x534f, 0x5350, 0x5351, 0x5352, 0x5353, 0x5354, 0x5355, 0x5356, 0x5357, 0x5358, 0x5359, 0x535a, 0x535b, 0x535c, 0x535d, 0x535e, 0x535f, 0x5360, 0x5361, 0x5362, 0x5363, 0x5364, 0x5365, 0x5366, 0x5367, 0x5368, 0x5369, 0x536a, 0x536b, 0x536c, 0x536d, 0x536e, 0x536f, 0x5370, 0x5371, 0x5372, 0x5373, 0x5374, 0x5375, 0x5376, 0x5377, 0x5378, 0x5379, 0x537a, 0x537b, 0x537c, 0x537d, 0x537e, 0x5421, 0x5422, 0x5423, 0x5424, 0x5425, 0x5426, 0x5427, 0x5428, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x542e, 0x542f, 0x5430, 0x5431, 0x5432, 0x5434, 0x5435, 0x5436, 0x5437, 0x5438, 0x5439, 0x543a, 0x543b, 0x543c, 0x543d, 0x543e, 0x5433, 0x543f, 0x5440, 0x5441, 0x5442, 0x5443, 0x5444, 0x5445, 0x5446, 0x5447, 0x5448, 0x5449, 0x544a, 0x544b, 0x544c, 0x544d, 0x544e, 0x544f, 0x5450, 0x5451, 0x5452, 0x5453, 0x5454, 0x5455, 0x5456, 0x5457, 0x5458, 0x5459, 0x545a, 0x545b, 0x545c, 0x545d, 0x545e, 0x545f, 0x5460, 0x5461, 0x5462, 0x5463, 0x5464, 0x5465, 0x5466, 0x5467, 0x5468, 0x5469, 0x546a, 0x546c, 0x546b, 0x546d, 0x546e, 0x546f, 0x5470, 0x5471, 0x5472, 0x5473, 0x5474, 0x5475, 0x5476, 0x5477, 0x5478, 0x5479, 0x547a, 0x547b, 0x547c, 0x547d, 0x547e, 0x5521, 0x5522, 0x5523, 0x5524, 0x5525, 0x5526, 0x5527, 0x5528, 0x5529, 0x552a, 0x552b, 0x552c, 0x552d, 0x552e, 0x552f, 0x5530, 0x5531, 0x5532, 0x5533, 0x5534, 0x5535, 0x5536, 0x5537, 0x5538, 0x5539, 0x553a, 0x553b, 0x553c, 0x553d, 0x553e, 0x553f, 0x5540, 0x5541, 0x5542, 0x5543, 0x5544, 0x5545, 0x5546, 0x5547, 0x5548, 0x5549, 0x554a, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5550, 0x5551, 0x5552, 0x5553, 0x5554, 0x5555, 0x5556, 0x5557, 0x5558, 0x5559, 0x555a, 0x555b, 0x555c, 0x555d, 0x555e, 0x555f, 0x5560, 0x5561, 0x5562, 0x5563, 0x5564, 0x5565, 0x5566, 0x5567, 0x5568, 0x5569, 0x556a, 0x556b, 0x556c, 0x556d, 0x556e, 0x556f, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5575, 0x5576, 0x5577, 0x5578, 0x5579, 0x557a, 0x557b, 0x557c, 0x557d, 0x557e, 0x5621, 0x5622, 0x5623, 0x5624, 0x5625, 0x5626, 0x5627, 0x5628, 0x5629, 0x562a, 0x562b, 0x562c, 0x562d, 0x562e, 0x562f, 0x5630, 0x5631, 0x5632, 0x5633, 0x5634, 0x5635, 0x5636, 0x5637, 0x5638, 0x5639, 0x563a, 0x563b, 0x563c, 0x563d, 0x563e, 0x563f, 0x5640, 0x5641, 0x5642, 0x5643, 0x5644, 0x5645, 0x5647, 0x5648, 0x5649, 0x564a, 0x564b, 0x5646, 0x564c, 0x564d, 0x564e, 0x564f, 0x5650, 0x5651, 0x5652, 0x5653, 0x5654, 0x5656, 0x5657, 0x5658, 0x5655, 0x5659, 0x565a, 0x565b, 0x565c, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5662, 0x5663, 0x5664, 0x5665, 0x5666, 0x5667, 0x5668, 0x5669, 0x566a, 0x566b, 0x566c, 0x566d, 0x566e, 0x566f, 0x5670, 0x5671, 0x5672, 0x5673, 0x5674, 0x5675, 0x5676, 0x5677, 0x5678, 0x5679, 0x567a, 0x567b, 0x567c, 0x567d, 0x567e, 0x5721, 0x5722, 0x5723, 0x5724, 0x5725, 0x5726, 0x5727, 0x5728, 0x5729, 0x572a, 0x572b, 0x572c, 0x572d, 0x572e, 0x572f, 0x5730, 0x5731, 0x5732, 0x5733, 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x5739, 0x573a, 0x573b, 0x573c, 0x573d, 0x573e, 0x573f, 0x5740, 0x5741, 0x5742, 0x5743, 0x5744, 0x5745, 0x5746, 0x5747, 0x5748, 0x5749, 0x574a, 0x574b, 0x574c, 0x574d, 0x574e, 0x574f, 0x5750, 0x5751, 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5757, 0x5758, 0x5759, 0x575a, 0x575b, 0x575c, 0x575d, 0x575e, 0x575f, 0x5760, 0x5761, 0x5762, 0x5764, 0x5765, 0x5766, 0x5767, 0x5768, 0x5769, 0x576a, 0x576b, 0x576c, 0x576d, 0x576e, 0x576f, 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775, 0x5776, 0x5777, 0x5778, 0x5779, 0x583e, 0x5763, 0x577a, 0x577b, 0x577c, 0x577d, 0x577e, 0x5821, 0x5822, 0x5823, 0x5824, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582a, 0x582b, 0x582c, 0x582d, 0x582e, 0x582f, 0x5830, 0x5831, 0x5832, 0x5833, 0x584c, 0x5834, 0x5835, 0x5836, 0x5837, 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845, 0x5846, 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584d, 0x584e, 0x584f, 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855, 0x5856, 0x5857, 0x5858, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585e, 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5865, 0x5866, 0x5867, 0x5868, 0x5869, 0x586a, 0x586b, 0x586c, 0x586d, 0x586e, 0x586f, 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587e, 0x5921, 0x5922, 0x5923, 0x5924, 0x5925, 0x5926, 0x5927, 0x5928, 0x592a, 0x592b, 0x592c, 0x592d, 0x592e, 0x592f, 0x5930, 0x5931, 0x5932, 0x5933, 0x5934, 0x5935, 0x5936, 0x5937, 0x5938, 0x5939, 0x593a, 0x593b, 0x593c, 0x5929, 0x593d, 0x593e, 0x593f, 0x5940, 0x5941, 0x5942, 0x5943, 0x5944, 0x5945, 0x5946, 0x5947, 0x5948, 0x5949, 0x594a, 0x594b, 0x594c, 0x594d, 0x594e, 0x594f, 0x5950, 0x5951, 0x5952, 0x5953, 0x5954, 0x5955, 0x5956, 0x5957, 0x5958, 0x5959, 0x595a, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f, 0x5960, 0x5961, 0x5962, 0x5963, 0x5964, 0x5965, 0x5966, 0x5974, 0x5967, 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f, 0x5970, 0x5971, 0x5972, 0x5973, 0x5975, 0x5976, 0x5977, 0x5978, 0x5979, 0x597a, 0x597b, 0x597c, 0x597d, 0x597e, 0x5a21, 0x5a22, 0x5a23, 0x5a24, 0x5a25, 0x5a26, 0x5a27, 0x5a28, 0x5a29, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, 0x5a30, 0x5a31, 0x5a32, 0x5a33, 0x5a34, 0x5a35, 0x5a36, 0x3866, 0x5a37, 0x5a38, 0x5a39, 0x5a3a, 0x5a3b, 0x5a3c, 0x5a3d, 0x5a3e, 0x5a3f, 0x5a40, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a46, 0x5a47, 0x5a48, 0x5a49, 0x5a4a, 0x5a4b, 0x5a6d, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50, 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a55, 0x5a56, 0x5a57, 0x5a58, 0x5a59, 0x5a5a, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60, 0x5a61, 0x5a62, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a67, 0x5a68, 0x5a69, 0x5a6a, 0x5a6b, 0x5a6c, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71, 0x5a72, 0x5a73, 0x5a74, 0x5a75, 0x5a76, 0x5a77, 0x5a78, 0x5a79, 0x5a7a, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25, 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b32, 0x5b33, 0x5b34, 0x5b35, 0x5b36, 0x5b37, 0x5b38, 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b40, 0x5b41, 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47, 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f, 0x5b50, 0x5b51, 0x5b52, 0x5b53, 0x5b54, 0x5b55, 0x5b56, 0x5b57, 0x5b58, 0x5b59, 0x5b5a, 0x5b5b, 0x5b5c, 0x5b5d, 0x5b5e, 0x5b5f, 0x5b60, 0x5b61, 0x5b62, 0x5b63, 0x5b64, 0x5b65, 0x5b66, 0x5b67, 0x5b68, 0x5b69, 0x5b6a, 0x5b6b, 0x5b6c, 0x5b6d, 0x5b6e, 0x5b70, 0x5b71, 0x5b72, 0x5b73, 0x5b6f, 0x5b74, 0x5b75, 0x5b76, 0x5b77, 0x5b78, 0x5b79, 0x5b7a, 0x5b7b, 0x5b7c, 0x5b7d, 0x5b7e, 0x5c21, 0x5c22, 0x5c23, 0x5c24, 0x5c25, 0x5c26, 0x5c27, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2c, 0x5c2d, 0x5c2e, 0x5c2f, 0x5c30, 0x5c31, 0x5c32, 0x5c33, 0x5c34, 0x5c35, 0x5c36, 0x5c37, 0x5c38, 0x5c39, 0x5c3a, 0x5c3b, 0x5c3c, 0x5c3d, 0x5c3e, 0x5c3f, 0x5c40, 0x5c41, 0x5c42, 0x5c43, 0x5c44, 0x5c45, 0x5c46, 0x5c47, 0x5c48, 0x5c49, 0x5c4a, 0x5c4b, 0x5c4c, 0x5c4d, 0x5c4e, 0x5c4f, 0x5c50, 0x5c51, 0x5c52, 0x5c53, 0x5c54, 0x5c55, 0x5c56, 0x5c57, 0x5c58, 0x5c59, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d, 0x5c5e, 0x5c5f, 0x5c60, 0x5c61, 0x5c62, 0x5c63, 0x5c64, 0x5c65, 0x5c66, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d, 0x5c6e, 0x5c6f, 0x5c70, 0x5c71, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76, 0x5c77, 0x5c78, 0x5c79, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5d21, 0x5d22, 0x5d23, 0x5d24, 0x5d25, 0x5d26, 0x5d27, 0x5d28, 0x5d29, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2d, 0x5d2e, 0x5d2f, 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d34, 0x5d35, 0x5d36, 0x5d37, 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3d, 0x5d3e, 0x5d3f, 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d47, 0x5d48, 0x5d49, 0x5d4a, 0x5d4b, 0x5d4c, 0x5d4d, 0x5d4e, 0x5d4f, 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57, 0x5d58, 0x5d59, 0x5d5a, 0x5d5b, 0x5d5c, 0x5d5d, 0x5d5e, 0x5d5f, 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, 0x5d68, 0x5d69, 0x5d6a, 0x5d6b, 0x5d6c, 0x5d6d, 0x5d6e, 0x5d6f, 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d74, 0x5d75, 0x5d76, 0x5d77, 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5e21, 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e26, 0x5e27, 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2d, 0x5e2e, 0x5e2f, 0x5e30, 0x5e31, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e37, 0x5e38, 0x5e39, 0x5e3f, 0x5e3a, 0x5e3b, 0x5e3c, 0x5e3d, 0x5e3e, 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44, 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4e, 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4d, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54, 0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c, 0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f, 0x5e72, 0x5e70, 0x5e71, 0x5e73, 0x5e74, 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c, 0x5e7d, 0x5e7e, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f25, 0x5f26, 0x5f27, 0x5f28, 0x5f29, 0x5f2a, 0x5f2b, 0x5f2c, 0x5f2d, 0x5f2e, 0x5f2f, 0x5f30, 0x5f32, 0x5f31, 0x5f33, 0x5f34, 0x5f35, 0x5f36, 0x5f37, 0x5f38, 0x5f39, 0x5f3a, 0x5f3b, 0x5f3c, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f40, 0x5f41, 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49, 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f50, 0x5f51, 0x5f52, 0x5f53, 0x5f54, 0x5f55, 0x5f56, 0x5f57, 0x5f58, 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5d, 0x5f6f, 0x5f5e, 0x5f5f, 0x5f60, 0x5f61, 0x5f62, 0x5f63, 0x5f64, 0x5f65, 0x5f66, 0x5f67, 0x5f68, 0x5f69, 0x5f6a, 0x5f6b, 0x5f6c, 0x5f6d, 0x5f6e, 0x5f70, 0x5f71, 0x5f72, 0x5f73, 0x5f74, 0x5f75, 0x5f76, 0x5f77, 0x5f78, 0x5f79, 0x5f7a, 0x5f7b, 0x5f7c, 0x5f7d, 0x5f7e, 0x6021, 0x6022, 0x6023, 0x6024, 0x6025, 0x6026, 0x6027, 0x6028, 0x6029, 0x602a, 0x602b, 0x602c, 0x602d, 0x602e, 0x602f, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6035, 0x6036, 0x6037, 0x6038, 0x6039, 0x603a, 0x603b, 0x603c, 0x603d, 0x603e, 0x603f, 0x6040, 0x6041, 0x6042, 0x6043, 0x6044, 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604b, 0x604c, 0x604d, 0x604e, 0x604f, 0x6050, 0x6051, 0x6052, 0x6053, 0x6054, 0x6055, 0x6056, 0x6057, 0x6058, 0x6059, 0x605a, 0x605b, 0x605c, 0x605d, 0x6064, 0x605e, 0x605f, 0x6060, 0x6061, 0x6062, 0x6063, 0x6065, 0x6066, 0x6067, 0x6068, 0x6069, 0x606a, 0x606b, 0x606c, 0x606d, 0x606e, 0x606f, 0x6070, 0x6071, 0x6072, 0x6073, 0x6074, 0x6075, 0x6076, 0x6077, 0x6078, 0x6079, 0x607a, 0x607b, 0x607c, 0x607d, 0x607e, 0x6121, 0x6122, 0x6123, 0x6124, 0x6125, 0x6126, 0x6127, 0x6128, 0x6129, 0x612a, 0x612b, 0x612c, 0x612d, 0x612e, 0x612f, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137, 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x613f, 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0x6147, 0x6148, 0x6149, 0x614a, 0x614b, 0x614c, 0x614d, 0x614e, 0x614f, 0x6150, 0x6151, 0x6152, 0x6154, 0x6155, 0x6156, 0x6153, 0x6157, 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615d, 0x615e, 0x615f, 0x6160, 0x6161, 0x6162, 0x6163, 0x6164, 0x6165, 0x6166, 0x6167, 0x6168, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, 0x6170, 0x6171, 0x6172, 0x6173, 0x6174, 0x6175, 0x6176, 0x6177, 0x6178, 0x6179, 0x617a, 0x617b, 0x617d, 0x617e, 0x6221, 0x6222, 0x6223, 0x6224, 0x617c, 0x622d, 0x6225, 0x6226, 0x6227, 0x6228, 0x6229, 0x622a, 0x622b, 0x622c, 0x622f, 0x6230, 0x6231, 0x6232, 0x622e, 0x6233, 0x6234, 0x6235, 0x6236, 0x6237, 0x6238, 0x6239, 0x623a, 0x623b, 0x623c, 0x623d, 0x623e, 0x623f, 0x6240, 0x6241, 0x6242, 0x6243, 0x6245, 0x6246, 0x6244, 0x6247, 0x6248, 0x6249, 0x624a, 0x624b, 0x624c, 0x624d, 0x624e, 0x624f, 0x6250, 0x6251, 0x6252, 0x6253, 0x6254, 0x6255, 0x6256, 0x6257, 0x6258, 0x6259, 0x625a, 0x625b, 0x625c, 0x625d, 0x625e, 0x625f, 0x6260, 0x6261, 0x6262, 0x6263, 0x6264, 0x6265, 0x6266, 0x6267, 0x6268, 0x6269, 0x626a, 0x626b, 0x626c, 0x626d, 0x626e, 0x626f, 0x6270, 0x6271, 0x6272, 0x6273, 0x6274, 0x6275, 0x6276, 0x6277, 0x6278, 0x6279, 0x627a, 0x627b, 0x627c, 0x627d, 0x627e, 0x6321, 0x6322, 0x6323, 0x6324, 0x6325, 0x6326, 0x6327, 0x6328, 0x6329, 0x632a, 0x632b, 0x632c, 0x632d, 0x632e, 0x632f, 0x6330, 0x6331, 0x6332, 0x6333, 0x6334, 0x6335, 0x6336, 0x6337, 0x6338, 0x6339, 0x633a, 0x633b, 0x633c, 0x633d, 0x633e, 0x633f, 0x6340, 0x6341, 0x6342, 0x6343, 0x6344, 0x6345, 0x6346, 0x6347, 0x6348, 0x6349, 0x634a, 0x634b, 0x634c, 0x634d, 0x634e, 0x634f, 0x6350, 0x6351, 0x6352, 0x6353, 0x6354, 0x6355, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b, 0x635c, 0x635d, 0x635e, 0x635f, 0x6360, 0x6361, 0x6362, 0x6363, 0x6364, 0x6365, 0x6366, 0x6367, 0x6368, 0x6369, 0x636a, 0x636b, 0x636c, 0x636d, 0x636e, 0x636f, 0x6370, 0x6371, 0x6372, 0x6373, 0x6374, 0x6375, 0x6376, 0x6377, 0x6378, 0x6379, 0x637a, 0x637b, 0x637c, 0x637d, 0x637e, 0x6421, 0x6422, 0x6423, 0x6424, 0x6425, 0x6426, 0x6427, 0x6428, 0x6429, 0x642a, 0x642b, 0x642c, 0x642d, 0x642e, 0x642f, 0x6430, 0x6431, 0x6432, 0x6433, 0x6434, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643a, 0x643b, 0x643c, 0x643d, 0x643e, 0x643f, 0x6440, 0x6441, 0x6442, 0x6443, 0x6444, 0x6445, 0x6446, 0x6447, 0x6448, 0x6449, 0x644a, 0x644b, 0x644c, 0x644d, 0x644e, 0x644f, 0x6450, 0x6451, 0x6452, 0x6453, 0x6454, 0x6455, 0x6456, 0x6457, 0x6458, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645e, 0x645f, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6467, 0x6468, 0x6469, 0x646a, 0x646b, 0x646c, 0x646d, 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x6478, 0x6479, 0x647a, 0x647b, 0x647c, 0x647d, 0x647e, 0x6521, 0x6522, 0x6523, 0x6524, 0x6525, 0x6526, 0x6527, 0x6528, 0x6529, 0x652a, 0x652b, 0x652c, 0x652d, 0x652e, 0x652f, 0x6530, 0x6531, 0x6532, 0x6533, 0x6534, 0x6535, 0x653b, 0x6536, 0x6537, 0x6538, 0x6539, 0x653a, 0x653c, 0x653d, 0x653e, 0x653f, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x6546, 0x6547, 0x6548, 0x6549, 0x654a, 0x654b, 0x654c, 0x654d, 0x654f, 0x6550, 0x654e, 0x6551, 0x6552, 0x6553, 0x6554, 0x6555, 0x6556, 0x6557, 0x6558, 0x6559, 0x655a, 0x655b, 0x655c, 0x655d, 0x655e, 0x655f, 0x6560, 0x6561, 0x6562, 0x6563, 0x6564, 0x6565, 0x6566, 0x6568, 0x6567, 0x6569, 0x656a, 0x656b, 0x656c, 0x656d, 0x656e, 0x656f, 0x6570, 0x6571, 0x6572, 0x6573, 0x6574, 0x6575, 0x6576, 0x6577, 0x6578, 0x6579, 0x657a, 0x657c, 0x657b, 0x657d, 0x657e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6625, 0x6626, 0x6627, 0x6628, 0x6629, 0x662a, 0x662b, 0x662c, 0x662d, 0x662e, 0x662f, 0x6630, 0x6631, 0x6632, 0x6633, 0x6634, 0x6635, 0x6636, 0x6637, 0x6638, 0x6639, 0x663a, 0x663b, 0x663c, 0x663d, 0x663e, 0x663f, 0x6640, 0x6641, 0x6642, 0x6643, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, 0x6649, 0x664a, 0x664b, 0x664c, 0x664d, 0x664e, 0x664f, 0x6650, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655, 0x6656, 0x6657, 0x6658, 0x6659, 0x665a, 0x665b, 0x665c, 0x665d, 0x665e, 0x665f, 0x6660, 0x6661, 0x6662, 0x6663, 0x6664, 0x6665, 0x6666, 0x6667, 0x6668, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x666e, 0x666f, 0x6670, 0x6671, 0x6672, 0x6673, 0x6675, 0x6676, 0x6677, 0x6678, 0x6679, 0x667a, 0x667b, 0x667c, 0x667d, 0x667e, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6726, 0x6727, 0x6728, 0x6729, 0x672a, 0x672b, 0x672c, 0x672d, 0x672e, 0x672f, 0x6730, 0x6731, 0x6732, 0x6733, 0x6734, 0x6735, 0x6736, 0x6737, 0x6738, 0x6739, 0x673a, 0x673b, 0x673c, 0x673d, 0x673e, 0x673f, 0x6740, 0x6741, 0x6742, 0x6743, 0x6744, 0x6745, 0x6746, 0x6747, 0x6748, 0x6749, 0x674a, 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, 0x6750, 0x6751, 0x6752, 0x6753, 0x6754, 0x6755, 0x6756, 0x6757, 0x6758, 0x6759, 0x675a, 0x675b, 0x675c, 0x675d, 0x675e, 0x675f, 0x6760, 0x6761, 0x6762, 0x6763, 0x6764, 0x6765, 0x6766, 0x676a, 0x6767, 0x6768, 0x6769, 0x676b, 0x676c, 0x676d, 0x676e, 0x676f, 0x6770, 0x6771, 0x6772, 0x6773, 0x6774, 0x6776, 0x6777, 0x6778, 0x6779, 0x6775, 0x677a, 0x677b, 0x677c, 0x677d, 0x6828, 0x677e, 0x6821, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6829, 0x682a, 0x682b, 0x682c, 0x682d, 0x682e, 0x682f, 0x6830, 0x6831, 0x6832, 0x6833, 0x6834, 0x6835, 0x6836, 0x6837, 0x6838, 0x6839, 0x683a, 0x683b, 0x683c, 0x683d, 0x683e, 0x683f, 0x6840, 0x6841, 0x6842, 0x6843, 0x6844, 0x6845, 0x6846, 0x6847, 0x6848, 0x6849, 0x684a, 0x684b, 0x684c, 0x684d, 0x684e, 0x684f, 0x6850, 0x6851, 0x6852, 0x6853, 0x6854, 0x6855, 0x6856, 0x6857, 0x6858, 0x6859, 0x685a, 0x685b, 0x685c, 0x685d, 0x685e, 0x685f, 0x6860, 0x6861, 0x6862, 0x6863, 0x6864, 0x6865, 0x6866, 0x6867, 0x6868, 0x6869, 0x686a, 0x686b, 0x686c, 0x686d, 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6874, 0x6875, 0x6876, 0x6877, 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x6921, 0x6922, 0x6923, 0x6924, 0x6925, 0x6926, 0x6927, 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692d, 0x692e, 0x692f, 0x6930, 0x6931, 0x6932, 0x6933, 0x6934, 0x6935, 0x6936, 0x6937, 0x6938, 0x6939, 0x693a, 0x693b, 0x693c, 0x693d, 0x693e, 0x693f, 0x6940, 0x6941, 0x6942, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694a, 0x694c, 0x694d, 0x694b, 0x694e, 0x694f, 0x6950, 0x6951, 0x6952, 0x6953, 0x6954, 0x6955, 0x6956, 0x6957, 0x6958, 0x6959, 0x695a, 0x695b, 0x695c, 0x695d, 0x695e, 0x695f, 0x6960, 0x6961, 0x6962, 0x6963, 0x6964, 0x6965, 0x6966, 0x6967, 0x6968, 0x6969, 0x696a, 0x696b, 0x696c, 0x696d, 0x696e, 0x696f, 0x6970, 0x6971, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x6977, 0x6978, 0x6979, 0x697a, 0x697b, 0x697c, 0x697d, 0x697e, 0x6a21, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a28, 0x6a29, 0x6a2a, 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a2f, 0x6a30, 0x6a31, 0x6a32, 0x6a33, 0x6a34, 0x6a35, 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3d, 0x6a3e, 0x6a3f, 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a44, 0x6a45, 0x6a46, 0x6a47, 0x6a48, 0x6a49, 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a50, 0x6a51, 0x6a52, 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a58, 0x6a59, 0x6a5a, 0x6a5b, 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a61, 0x6a62, 0x6a63, 0x6a64, 0x6a65, 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, 0x6a70, 0x6a71, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77, 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a7c, 0x6a7d, 0x6a7e, 0x6b21, 0x6b22, 0x6b23, 0x6b24, 0x6b25, 0x6b26, 0x6b27, 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e, 0x6b2f, 0x6b30, 0x6b31, 0x6b32, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b37, 0x6b38, 0x6b39, 0x6b3a, 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3e, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b43, 0x6b44, 0x6b45, 0x6b46, 0x6b47, 0x6b48, 0x6b49, 0x6b50, 0x6b4a, 0x6b4b, 0x6b4c, 0x6b4d, 0x6b52, 0x6b4e, 0x6b4f, 0x6b51, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, 0x6b58, 0x6b59, 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5e, 0x6b5d, 0x6b5f, 0x6b60, 0x6b61, 0x6b62, 0x6b63, 0x6b64, 0x6b65, 0x6b66, 0x6b67, 0x6b68, 0x6b69, 0x6b6a, 0x6b6b, 0x6b6d, 0x6b6e, 0x6b6f, 0x6b6c, 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b76, 0x6b75, 0x6b77, 0x6b78, 0x6b79, 0x6b7a, 0x6b7b, 0x6b7c, 0x6b7d, 0x6b7e, 0x6c21, 0x6c22, 0x6c23, 0x6c24, 0x6c25, 0x6c26, 0x6c27, 0x6c28, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c2e, 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c33, 0x6c34, 0x6c35, 0x6c36, 0x6c37, 0x6c38, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3d, 0x6c3e, 0x6c3f, 0x6c40, 0x6c41, 0x6c42, 0x6c43, 0x6c44, 0x6c45, 0x6c46, 0x6c47, 0x6c48, 0x6c49, 0x6c4a, 0x6c4b, 0x6c4c, 0x6c4e, 0x6c4f, 0x6c4d, 0x6c50, 0x6c51, 0x6c52, 0x6c53, 0x6c54, 0x6c55, 0x6c56, 0x6c57, 0x6c58, 0x6c59, 0x6c5a, 0x6c5b, 0x6c5c, 0x6c5d, 0x6c5e, 0x6c5f, 0x6c60, 0x6c61, 0x6c62, 0x6c63, 0x6c64, 0x6c65, 0x6c66, 0x6c67, 0x6c68, 0x6c69, 0x6c6a, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, 0x6c70, 0x6c71, 0x6c72, 0x6c73, 0x6c74, 0x6c75, 0x6c76, 0x6c77, 0x6c78, 0x6c79, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7d, 0x6c7e, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d25, 0x6d26, 0x6d27, 0x6d28, 0x6d29, 0x6d2a, 0x6d2b, 0x6d2c, 0x6d2d, 0x6d2e, 0x6d2f, 0x6d30, 0x6d31, 0x6d32, 0x6d33, 0x6d34, 0x6d35, 0x6d36, 0x6d37, 0x6d38, 0x6d39, 0x6d3a, 0x6d3b, 0x6d3c, 0x6d3d, 0x6d3e, 0x6d3f, 0x6d40, 0x6d41, 0x6d42, 0x6d43, 0x6d44, 0x6d45, 0x6d46, 0x6d47, 0x6d48, 0x6d49, 0x6d4a, 0x6d4b, 0x6d4c, 0x6d4d, 0x6d4e, 0x6d4f, 0x6d50, 0x6d51, 0x6d52, 0x6d53, 0x6d54, 0x6d55, 0x6d56, 0x6d57, 0x6d58, 0x6d59, 0x6d5a, 0x6d5b, 0x6d5c, 0x6d5d, 0x6d5e, 0x6d5f, 0x6d60, 0x6d61, 0x6d62, 0x6d63, }; static const Summary16 jisx0212_uni2indx_page00[70] = { /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x4000 }, { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0xc652 }, { 8, 0x8500 }, { 11, 0xffff }, { 27, 0xff7e }, { 41, 0xffff }, { 57, 0xff7f }, /* 0x0100 */ { 72, 0xffff }, { 88, 0xffcf }, { 102, 0xcff7 }, { 115, 0xffff }, { 131, 0x3fff }, { 145, 0xffff }, { 161, 0xffff }, { 177, 0x7fff }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0xe000 }, { 195, 0x1fff }, { 208, 0x0000 }, { 208, 0x0020 }, /* 0x0200 */ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0080 }, { 210, 0x2f00 }, { 215, 0x0000 }, { 215, 0x0000 }, /* 0x0300 */ { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0xd770 }, { 224, 0x0001 }, { 225, 0xfc00 }, { 231, 0x0001 }, { 232, 0x7c04 }, { 238, 0x0000 }, { 238, 0x0000 }, { 238, 0x0000 }, /* 0x0400 */ { 238, 0xdffc }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0xdffc }, }; static const Summary16 jisx0212_uni2indx_page21[3] = { /* 0x2100 */ { 264, 0x0000 }, { 264, 0x0040 }, { 265, 0x0004 }, }; static const Summary16 jisx0212_uni2indx_page4e[1307] = { /* 0x4e00 */ { 266, 0x1034 }, { 270, 0x8004 }, { 272, 0xc918 }, { 278, 0x0021 }, { 280, 0x0093 }, { 284, 0x1402 }, { 287, 0x0308 }, { 290, 0x8230 }, { 294, 0x2000 }, { 295, 0x20c0 }, { 298, 0x8000 }, { 299, 0x0200 }, { 300, 0x0008 }, { 301, 0x0c01 }, { 304, 0x8107 }, { 309, 0xe02a }, /* 0x4f00 */ { 315, 0x190d }, { 321, 0x02e4 }, { 326, 0x4000 }, { 327, 0x4aaa }, { 334, 0x1b05 }, { 340, 0x8154 }, { 345, 0x5409 }, { 350, 0x6782 }, { 357, 0x5636 }, { 365, 0xc69d }, { 374, 0x0000 }, { 374, 0x7a84 }, { 381, 0xbb63 }, { 391, 0x1004 }, { 393, 0x0005 }, { 395, 0xb005 }, /* 0x5000 */ { 400, 0x5493 }, { 407, 0x7989 }, { 415, 0x4084 }, { 418, 0x082d }, { 423, 0x5467 }, { 431, 0x828e }, { 437, 0x24cd }, { 444, 0x0003 }, { 446, 0xc45a }, { 453, 0xd85d }, { 462, 0x8407 }, { 467, 0x2601 }, { 471, 0x5099 }, { 477, 0xb119 }, { 484, 0x8354 }, { 490, 0x4446 }, /* 0x5100 */ { 495, 0x79c8 }, { 503, 0x7a81 }, { 510, 0xb188 }, { 516, 0x033a }, { 522, 0x8404 }, { 525, 0x81a8 }, { 530, 0x0050 }, { 532, 0x4000 }, { 533, 0x4818 }, { 537, 0x2100 }, { 539, 0x200a }, { 542, 0xd500 }, { 547, 0x8104 }, { 550, 0x412e }, { 556, 0x4024 }, { 559, 0x009c }, /* 0x5200 */ { 563, 0x0026 }, { 566, 0x016c }, { 571, 0x0104 }, { 573, 0x1026 }, { 577, 0x0220 }, { 579, 0x95a0 }, { 585, 0x4043 }, { 589, 0x0380 }, { 592, 0x1425 }, { 597, 0x15e8 }, { 604, 0x80f0 }, { 609, 0x2dc1 }, { 616, 0x9151 }, { 622, 0x1852 }, { 627, 0x1722 }, { 633, 0x00d3 }, /* 0x5300 */ { 638, 0x1c09 }, { 643, 0xd90a }, { 650, 0x3ba0 }, { 657, 0x7025 }, { 663, 0x1804 }, { 666, 0x0a00 }, { 668, 0x302a }, { 673, 0x4204 }, { 676, 0x4188 }, { 680, 0x2218 }, { 684, 0x8c12 }, { 689, 0x25b4 }, { 696, 0x8021 }, { 699, 0x642c }, { 705, 0x00c1 }, { 708, 0x0020 }, /* 0x5400 */ { 709, 0x0004 }, { 710, 0x0408 }, { 712, 0x8582 }, { 717, 0x0032 }, { 720, 0xa098 }, { 725, 0x4000 }, { 726, 0x6ad4 }, { 734, 0x8010 }, { 736, 0x232a }, { 742, 0x9062 }, { 747, 0x66c2 }, { 754, 0x8e82 }, { 760, 0x6440 }, { 764, 0x0000 }, { 764, 0x9401 }, { 768, 0xd040 }, /* 0x5500 */ { 772, 0x7323 }, { 780, 0x0020 }, { 781, 0x0c00 }, { 783, 0x3864 }, { 789, 0x2682 }, { 794, 0x4d03 }, { 800, 0x0053 }, { 804, 0x8000 }, { 805, 0xc146 }, { 811, 0x009e }, { 816, 0x2018 }, { 819, 0x8004 }, { 821, 0x5a4a }, { 828, 0x498e }, { 835, 0x0204 }, { 837, 0x8040 }, /* 0x5600 */ { 839, 0xe520 }, { 845, 0x0207 }, { 849, 0x1000 }, { 850, 0xbaa9 }, { 859, 0xaa5b }, { 868, 0x4010 }, { 870, 0xa24f }, { 878, 0x0026 }, { 881, 0x1930 }, { 886, 0xe620 }, { 892, 0x3bc0 }, { 899, 0x408a }, { 903, 0xbe20 }, { 910, 0xb201 }, { 915, 0x29f2 }, { 923, 0x00c2 }, /* 0x5700 */ { 926, 0x1486 }, { 931, 0x2c22 }, { 936, 0xd63d }, { 946, 0xe018 }, { 951, 0x3060 }, { 955, 0x0004 }, { 956, 0xe9a4 }, { 964, 0x5ebb }, { 975, 0x100a }, { 978, 0xf6b0 }, { 987, 0x1382 }, { 992, 0x2100 }, { 994, 0x9180 }, { 998, 0x6020 }, { 1001, 0x22d2 }, { 1007, 0xe161 }, /* 0x5800 */ { 1014, 0x3318 }, { 1020, 0xc800 }, { 1023, 0x20c1 }, { 1027, 0x8204 }, { 1030, 0xb200 }, { 1034, 0x8021 }, { 1037, 0x0192 }, { 1041, 0x9100 }, { 1044, 0xb783 }, { 1053, 0x2051 }, { 1057, 0x0247 }, { 1062, 0x1006 }, { 1065, 0x6114 }, { 1070, 0x2455 }, { 1076, 0x0206 }, { 1079, 0x0008 }, /* 0x5900 */ { 1080, 0x1860 }, { 1084, 0x201c }, { 1088, 0x811a }, { 1093, 0x8069 }, { 1098, 0x0048 }, { 1100, 0xea0c }, { 1107, 0xa80a }, { 1112, 0x1a64 }, { 1118, 0x5800 }, { 1121, 0x80a4 }, { 1125, 0xe090 }, { 1130, 0x1489 }, { 1135, 0x251a }, { 1141, 0xe004 }, { 1145, 0xc098 }, { 1150, 0x0096 }, /* 0x5a00 */ { 1154, 0x7011 }, { 1159, 0x400c }, { 1162, 0x2598 }, { 1168, 0x0001 }, { 1169, 0x11b0 }, { 1174, 0x4021 }, { 1177, 0x20a8 }, { 1181, 0x4c80 }, { 1185, 0x0800 }, { 1186, 0xd249 }, { 1193, 0x1085 }, { 1197, 0x8d2e }, { 1205, 0x8150 }, { 1209, 0x1400 }, { 1211, 0x4421 }, { 1215, 0x2060 }, /* 0x5b00 */ { 1218, 0x0103 }, { 1221, 0x2a80 }, { 1225, 0x2022 }, { 1228, 0x0110 }, { 1230, 0x1802 }, { 1233, 0x4044 }, { 1236, 0xc100 }, { 1239, 0xf000 }, { 1243, 0x4452 }, { 1248, 0x005b }, { 1253, 0xb300 }, { 1258, 0x1486 }, { 1263, 0xa003 }, { 1267, 0x07c0 }, { 1272, 0x8001 }, { 1274, 0x2012 }, /* 0x5c00 */ { 1277, 0x1000 }, { 1278, 0xc080 }, { 1281, 0x5a48 }, { 1287, 0x0065 }, { 1291, 0x0000 }, { 1291, 0x1600 }, { 1294, 0x238c }, { 1300, 0x3c31 }, { 1307, 0x8580 }, { 1311, 0xa004 }, { 1314, 0x044d }, { 1319, 0x0434 }, { 1323, 0x0a00 }, { 1325, 0x2084 }, { 1328, 0x4000 }, { 1329, 0x0016 }, /* 0x5d00 */ { 1332, 0x2042 }, { 1335, 0x0004 }, { 1336, 0x08d8 }, { 1341, 0xa212 }, { 1346, 0x054c }, { 1351, 0x8222 }, { 1355, 0x2417 }, { 1361, 0xc601 }, { 1366, 0x050a }, { 1370, 0x8a3c }, { 1377, 0x0881 }, { 1380, 0x0315 }, { 1385, 0x4888 }, { 1389, 0x0301 }, { 1392, 0x0211 }, { 1395, 0x0300 }, /* 0x5e00 */ { 1397, 0x2081 }, { 1400, 0x8134 }, { 1405, 0x4101 }, { 1408, 0x4024 }, { 1411, 0x0a00 }, { 1413, 0x5943 }, { 1420, 0x7d00 }, { 1426, 0x0001 }, { 1427, 0x4801 }, { 1430, 0x0000 }, { 1430, 0x1534 }, { 1436, 0xe00a }, { 1441, 0x5840 }, { 1445, 0x5036 }, { 1451, 0x0820 }, { 1453, 0x0000 }, /* 0x5f00 */ { 1453, 0x41c4 }, { 1458, 0x3200 }, { 1461, 0x591e }, { 1469, 0xa851 }, { 1475, 0x20b1 }, { 1480, 0x0911 }, { 1484, 0x8099 }, { 1489, 0x6534 }, { 1496, 0xa200 }, { 1499, 0x3040 }, { 1502, 0x9894 }, { 1508, 0x0103 }, { 1511, 0x0b90 }, { 1516, 0x401f }, { 1522, 0xf706 }, { 1531, 0x144c }, /* 0x6000 */ { 1536, 0x2480 }, { 1539, 0x8598 }, { 1545, 0x2010 }, { 1547, 0x0028 }, { 1549, 0x1381 }, { 1554, 0x20d2 }, { 1559, 0x0082 }, { 1561, 0xc002 }, { 1564, 0x4544 }, { 1569, 0x612a }, { 1575, 0x0134 }, { 1579, 0x4883 }, { 1584, 0xcf14 }, { 1592, 0x6a30 }, { 1598, 0x0024 }, { 1600, 0x3124 }, /* 0x6100 */ { 1605, 0x1484 }, { 1609, 0x52df }, { 1619, 0x0c04 }, { 1622, 0x02e3 }, { 1628, 0x0262 }, { 1632, 0x4000 }, { 1633, 0x1001 }, { 1635, 0x9904 }, { 1640, 0x281b }, { 1646, 0xb18c }, { 1653, 0x2521 }, { 1658, 0x1300 }, { 1661, 0xc007 }, { 1666, 0xf020 }, { 1671, 0xb2a6 }, { 1679, 0x0000 }, /* 0x6200 */ { 1679, 0x009a }, { 1683, 0x1028 }, { 1686, 0x0a8d }, { 1692, 0x2200 }, { 1694, 0x105c }, { 1699, 0x1457 }, { 1706, 0xa010 }, { 1709, 0x2408 }, { 1712, 0xe000 }, { 1715, 0x0001 }, { 1716, 0x0140 }, { 1718, 0xc4c8 }, { 1724, 0x4010 }, { 1726, 0x0460 }, { 1729, 0x0400 }, { 1730, 0x3014 }, /* 0x6300 */ { 1734, 0x2c18 }, { 1739, 0x0149 }, { 1743, 0x2600 }, { 1746, 0x1260 }, { 1750, 0x4c5e }, { 1758, 0x091c }, { 1763, 0x3060 }, { 1767, 0xb132 }, { 1774, 0x0494 }, { 1778, 0x4631 }, { 1784, 0xe050 }, { 1789, 0x2000 }, { 1790, 0x4122 }, { 1794, 0x103a }, { 1799, 0x1421 }, { 1803, 0x032c }, /* 0x6400 */ { 1808, 0x0600 }, { 1810, 0x4115 }, { 1815, 0x8635 }, { 1822, 0xa021 }, { 1826, 0x8800 }, { 1828, 0xbc1e }, { 1837, 0x200b }, { 1841, 0x2818 }, { 1845, 0x80a0 }, { 1848, 0xab03 }, { 1855, 0x114a }, { 1860, 0xe008 }, { 1864, 0x5e10 }, { 1870, 0x00a3 }, { 1874, 0x2630 }, { 1879, 0x88a1 }, /* 0x6500 */ { 1884, 0x8712 }, { 1890, 0xca58 }, { 1897, 0x4244 }, { 1901, 0x3402 }, { 1905, 0x0288 }, { 1908, 0x8015 }, { 1912, 0x0881 }, { 1915, 0x2400 }, { 1917, 0x0422 }, { 1920, 0x2124 }, { 1924, 0x4049 }, { 1928, 0x801c }, { 1932, 0x4304 }, { 1936, 0x8151 }, { 1941, 0x0000 }, { 1941, 0xc235 }, /* 0x6600 */ { 1948, 0x2311 }, { 1953, 0x6066 }, { 1959, 0x5e5e }, { 1969, 0x028b }, { 1974, 0x5461 }, { 1980, 0x1b82 }, { 1986, 0x1c03 }, { 1991, 0xdba8 }, { 2000, 0x3801 }, { 2004, 0x9e05 }, { 2011, 0x2011 }, { 2014, 0x8826 }, { 2019, 0xd10d }, { 2026, 0x8810 }, { 2029, 0x5900 }, { 2033, 0x0c00 }, /* 0x6700 */ { 2035, 0x40a0 }, { 2038, 0x1208 }, { 2041, 0x0005 }, { 2043, 0x4008 }, { 2045, 0x11a0 }, { 2049, 0x2030 }, { 2052, 0x5040 }, { 2055, 0x0850 }, { 2058, 0xc012 }, { 2062, 0x0b4a }, { 2068, 0x0000 }, { 2068, 0x3827 }, { 2075, 0x032d }, { 2081, 0x1284 }, { 2085, 0x0042 }, { 2087, 0x02c5 }, /* 0x6800 */ { 2092, 0x0000 }, { 2092, 0xa210 }, { 2096, 0xb180 }, { 2101, 0x880b }, { 2106, 0x1430 }, { 2110, 0x09a4 }, { 2115, 0xc800 }, { 2118, 0x1e27 }, { 2126, 0x0154 }, { 2130, 0x1540 }, { 2134, 0x462a }, { 2140, 0x0804 }, { 2142, 0x9120 }, { 2146, 0x324b }, { 2153, 0x3d20 }, { 2159, 0x3863 }, /* 0x6900 */ { 2166, 0x0640 }, { 2169, 0x00cb }, { 2174, 0x0000 }, { 2174, 0x092a }, { 2179, 0x4224 }, { 2183, 0x0880 }, { 2185, 0x1378 }, { 2192, 0x8c07 }, { 2198, 0x2001 }, { 2200, 0x0144 }, { 2203, 0xa962 }, { 2210, 0x1580 }, { 2214, 0x0120 }, { 2216, 0x00c2 }, { 2219, 0xc024 }, { 2223, 0x402a }, /* 0x6a00 */ { 2227, 0x800b }, { 2231, 0x2422 }, { 2235, 0x0111 }, { 2238, 0xc895 }, { 2245, 0x4660 }, { 2250, 0x0867 }, { 2256, 0x0490 }, { 2259, 0x400a }, { 2262, 0x0aca }, { 2268, 0xe802 }, { 2273, 0x8820 }, { 2276, 0xe013 }, { 2282, 0x1340 }, { 2286, 0x3071 }, { 2292, 0x1090 }, { 2295, 0x3007 }, /* 0x6b00 */ { 2300, 0x82cc }, { 2306, 0x4883 }, { 2311, 0x9910 }, { 2316, 0x8860 }, { 2320, 0x2440 }, { 2323, 0x2144 }, { 2327, 0x4881 }, { 2331, 0x6021 }, { 2335, 0x0024 }, { 2337, 0x8880 }, { 2340, 0x730d }, { 2348, 0x6301 }, { 2353, 0x1218 }, { 2357, 0x0440 }, { 2359, 0x40ca }, { 2364, 0x8282 }, /* 0x6c00 */ { 2368, 0x6234 }, { 2374, 0x8205 }, { 2378, 0x51c0 }, { 2383, 0x8c68 }, { 2389, 0xac00 }, { 2393, 0x1a14 }, { 2398, 0xa880 }, { 2402, 0x0b50 }, { 2407, 0x02e0 }, { 2411, 0x91b0 }, { 2417, 0x0000 }, { 2417, 0x0015 }, { 2420, 0xa044 }, { 2424, 0x1457 }, { 2431, 0x5a81 }, { 2437, 0x0014 }, /* 0x6d00 */ { 2439, 0xc490 }, { 2444, 0x040a }, { 2447, 0xc1c0 }, { 2452, 0x9202 }, { 2456, 0x0000 }, { 2456, 0xc080 }, { 2459, 0x80a2 }, { 2463, 0x1001 }, { 2465, 0x0084 }, { 2467, 0x01d6 }, { 2473, 0x1400 }, { 2475, 0xa290 }, { 2480, 0xc510 }, { 2485, 0xa840 }, { 2489, 0x8225 }, { 2494, 0x1051 }, /* 0x6e00 */ { 2498, 0x0011 }, { 2500, 0x4000 }, { 2501, 0x0084 }, { 2503, 0x1a44 }, { 2508, 0x8b30 }, { 2514, 0x709e }, { 2522, 0x010c }, { 2525, 0x2808 }, { 2528, 0x2000 }, { 2529, 0x0208 }, { 2531, 0x6081 }, { 2535, 0x880a }, { 2539, 0xe58b }, { 2548, 0x0000 }, { 2548, 0x6800 }, { 2551, 0x2a00 }, /* 0x6f00 */ { 2554, 0x3510 }, { 2559, 0x0d40 }, { 2563, 0xa640 }, { 2568, 0x1849 }, { 2573, 0x8000 }, { 2574, 0x668e }, { 2582, 0x1106 }, { 2586, 0x6000 }, { 2588, 0x3988 }, { 2594, 0x845d }, { 2601, 0xc1e1 }, { 2608, 0x1061 }, { 2612, 0x05a0 }, { 2616, 0x4400 }, { 2618, 0x0300 }, { 2620, 0x3221 }, /* 0x7000 */ { 2625, 0x20e1 }, { 2630, 0x0080 }, { 2631, 0x8009 }, { 2634, 0x1290 }, { 2638, 0x4f18 }, { 2645, 0x6030 }, { 2649, 0x5030 }, { 2653, 0x4060 }, { 2656, 0x0062 }, { 2659, 0x09f0 }, { 2665, 0x0810 }, { 2667, 0x0093 }, { 2671, 0x0400 }, { 2672, 0x117a }, { 2679, 0x0010 }, { 2680, 0x0400 }, /* 0x7100 */ { 2681, 0x98f8 }, { 2689, 0x4000 }, { 2690, 0xa801 }, { 2694, 0x0103 }, { 2697, 0x0ce2 }, { 2703, 0x5485 }, { 2709, 0x0101 }, { 2711, 0x0200 }, { 2712, 0x10a1 }, { 2716, 0x0c04 }, { 2719, 0x8005 }, { 2722, 0x840d }, { 2727, 0x1813 }, { 2732, 0x1648 }, { 2737, 0x0000 }, { 2737, 0x4100 }, /* 0x7200 */ { 2739, 0x0381 }, { 2743, 0xa488 }, { 2748, 0x8810 }, { 2751, 0x0310 }, { 2754, 0xc02e }, { 2760, 0x5469 }, { 2767, 0xc909 }, { 2773, 0x9982 }, { 2779, 0x6210 }, { 2783, 0x0808 }, { 2785, 0x6100 }, { 2788, 0x4012 }, { 2791, 0x1282 }, { 2795, 0x8160 }, { 2799, 0x0020 }, { 2800, 0x4c18 }, /* 0x7300 */ { 2805, 0x28b4 }, { 2811, 0x430c }, { 2816, 0x1194 }, { 2821, 0x2c26 }, { 2827, 0x2008 }, { 2829, 0xe145 }, { 2836, 0xdac1 }, { 2844, 0x1282 }, { 2848, 0x406b }, { 2854, 0xd1a9 }, { 2862, 0x2c65 }, { 2869, 0xb2a0 }, { 2875, 0x9a60 }, { 2881, 0x224c }, { 2886, 0x02ca }, { 2891, 0xaeb0 }, /* 0x7400 */ { 2899, 0x0493 }, { 2904, 0x0c02 }, { 2907, 0xff50 }, { 2917, 0x0203 }, { 2920, 0x28d9 }, { 2927, 0x2086 }, { 2931, 0x69c4 }, { 2938, 0x0006 }, { 2940, 0x82e3 }, { 2947, 0x9707 }, { 2955, 0xcf4b }, { 2965, 0x8a26 }, { 2971, 0x1300 }, { 2974, 0xcd09 }, { 2981, 0x8d10 }, { 2986, 0x9c10 }, /* 0x7500 */ { 2991, 0x0040 }, { 2992, 0x00c4 }, { 2995, 0x8693 }, { 3002, 0xe240 }, { 3007, 0x4189 }, { 3012, 0xc085 }, { 3017, 0x8002 }, { 3019, 0x7e02 }, { 3026, 0x0022 }, { 3028, 0x122d }, { 3034, 0x0014 }, { 3036, 0x8410 }, { 3039, 0xd053 }, { 3046, 0x9080 }, { 3049, 0xd093 }, { 3056, 0x0202 }, /* 0x7600 */ { 3058, 0x959d }, { 3067, 0x7a6c }, { 3076, 0x2268 }, { 3081, 0x172c }, { 3088, 0x0e3b }, { 3096, 0x8220 }, { 3099, 0xe030 }, { 3104, 0x0012 }, { 3106, 0x3022 }, { 3110, 0xb820 }, { 3115, 0x25fd }, { 3125, 0x2000 }, { 3126, 0x5a22 }, { 3132, 0x0210 }, { 3134, 0x1141 }, { 3138, 0x1243 }, /* 0x7700 */ { 3143, 0x4441 }, { 3147, 0x16b4 }, { 3154, 0xe104 }, { 3159, 0x6270 }, { 3165, 0xe464 }, { 3172, 0xd0c4 }, { 3178, 0x1495 }, { 3184, 0x241d }, { 3190, 0x3011 }, { 3194, 0x8470 }, { 3199, 0xc484 }, { 3204, 0x4022 }, { 3207, 0x0208 }, { 3209, 0xc226 }, { 3215, 0x1451 }, { 3220, 0x0913 }, /* 0x7800 */ { 3225, 0x6260 }, { 3230, 0x2002 }, { 3232, 0x600e }, { 3237, 0x00a1 }, { 3240, 0x5198 }, { 3246, 0x5004 }, { 3249, 0x451b }, { 3256, 0x4400 }, { 3258, 0x8400 }, { 3260, 0xe110 }, { 3265, 0x3112 }, { 3270, 0xa80f }, { 3277, 0x5380 }, { 3282, 0x886c }, { 3288, 0x0453 }, { 3293, 0x8ccc }, /* 0x7900 */ { 3300, 0x1041 }, { 3303, 0xd401 }, { 3308, 0x22a1 }, { 3313, 0xa832 }, { 3319, 0x8c70 }, { 3325, 0x1912 }, { 3330, 0x0a80 }, { 3333, 0x5a04 }, { 3338, 0x1800 }, { 3340, 0x197a }, { 3348, 0x8b02 }, { 3353, 0x0912 }, { 3357, 0x8594 }, { 3363, 0x6450 }, { 3368, 0x2c25 }, { 3374, 0x1102 }, /* 0x7a00 */ { 3377, 0x168c }, { 3383, 0x4822 }, { 3387, 0xa882 }, { 3392, 0x0731 }, { 3398, 0x11b0 }, { 3403, 0xb260 }, { 3409, 0x24a1 }, { 3414, 0x4120 }, { 3417, 0x0c65 }, { 3423, 0x4013 }, { 3427, 0x1009 }, { 3430, 0x1a28 }, { 3435, 0x5240 }, { 3439, 0x0802 }, { 3441, 0x1b00 }, { 3445, 0x6812 }, /* 0x7b00 */ { 3450, 0x0080 }, { 3451, 0x8010 }, { 3453, 0xee88 }, { 3461, 0xa013 }, { 3466, 0x4083 }, { 3470, 0x0020 }, { 3471, 0xa651 }, { 3478, 0x008c }, { 3481, 0x4210 }, { 3484, 0x4843 }, { 3489, 0x9021 }, { 3493, 0x3c65 }, { 3501, 0x0524 }, { 3505, 0x0ed0 }, { 3511, 0x0500 }, { 3513, 0x5734 }, /* 0x7c00 */ { 3521, 0xda5e }, { 3531, 0x0a00 }, { 3533, 0x1161 }, { 3538, 0x065a }, { 3544, 0x0440 }, { 3546, 0x7e2e }, { 3556, 0x628a }, { 3562, 0x3205 }, { 3567, 0x80c0 }, { 3570, 0x4010 }, { 3572, 0x0041 }, { 3574, 0x9cc1 }, { 3581, 0xa390 }, { 3587, 0x26b8 }, { 3594, 0x0a40 }, { 3597, 0x0020 }, /* 0x7d00 */ { 3598, 0x8388 }, { 3603, 0x604e }, { 3609, 0x2448 }, { 3613, 0x7002 }, { 3617, 0x2183 }, { 3622, 0x368a }, { 3629, 0x04a0 }, { 3632, 0x8d01 }, { 3637, 0x396e }, { 3646, 0x60c2 }, { 3651, 0x04c0 }, { 3654, 0x02c8 }, { 3658, 0x707c }, { 3666, 0x0280 }, { 3668, 0x2c64 }, { 3674, 0x0662 }, /* 0x7e00 */ { 3679, 0x0101 }, { 3681, 0x30a3 }, { 3687, 0xb181 }, { 3693, 0x8048 }, { 3696, 0x40b0 }, { 3700, 0x8105 }, { 3704, 0xc826 }, { 3710, 0x4108 }, { 3713, 0x24c2 }, { 3718, 0x6522 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, /* 0x7f00 */ { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0xf800 }, { 3729, 0x8098 }, { 3733, 0x380c }, { 3738, 0x207a }, { 3744, 0xe002 }, { 3748, 0xa801 }, { 3752, 0x10c3 }, { 3757, 0x2446 }, { 3762, 0x9010 }, { 3765, 0xc109 }, { 3770, 0x8800 }, { 3772, 0xd128 }, { 3778, 0xe404 }, /* 0x8000 */ { 3783, 0xe580 }, { 3789, 0xe05a }, { 3796, 0x5051 }, { 3801, 0x56b1 }, { 3809, 0x0011 }, { 3811, 0x0000 }, { 3811, 0x2051 }, { 3815, 0x0022 }, { 3817, 0x4102 }, { 3820, 0x5000 }, { 3822, 0x08c0 }, { 3825, 0x0300 }, { 3827, 0xa100 }, { 3830, 0x01b4 }, { 3835, 0x6001 }, { 3838, 0x464d }, /* 0x8100 */ { 3845, 0x0808 }, { 3847, 0x51c0 }, { 3852, 0x1091 }, { 3856, 0x1421 }, { 3860, 0x14a0 }, { 3864, 0x0084 }, { 3866, 0xa383 }, { 3873, 0x0080 }, { 3874, 0x4872 }, { 3880, 0x4941 }, { 3885, 0x4004 }, { 3887, 0x0814 }, { 3890, 0xcc28 }, { 3896, 0x68a0 }, { 3901, 0x1812 }, { 3905, 0xa367 }, /* 0x8200 */ { 3914, 0x8009 }, { 3917, 0x2618 }, { 3922, 0x0106 }, { 3925, 0x0414 }, { 3928, 0xc878 }, { 3935, 0x1042 }, { 3938, 0x2089 }, { 3942, 0xa810 }, { 3946, 0x469b }, { 3954, 0x0d52 }, { 3960, 0x479b }, { 3969, 0xd495 }, { 3977, 0x0040 }, { 3978, 0x0421 }, { 3981, 0xa515 }, { 3988, 0x60c0 }, /* 0x8300 */ { 3992, 0x0d83 }, { 3998, 0xe800 }, { 4002, 0x7006 }, { 4007, 0x3489 }, { 4013, 0x609c }, { 4019, 0x00fa }, { 4025, 0x0000 }, { 4025, 0xa101 }, { 4029, 0x2055 }, { 4034, 0x3b34 }, { 4042, 0x32c0 }, { 4047, 0xc000 }, { 4049, 0x8281 }, { 4053, 0x2013 }, { 4057, 0x0500 }, { 4059, 0x1340 }, /* 0x8400 */ { 4063, 0x8442 }, { 4067, 0x0222 }, { 4070, 0x8000 }, { 4071, 0x0200 }, { 4072, 0xa5a0 }, { 4078, 0x1746 }, { 4085, 0x04b1 }, { 4090, 0x3159 }, { 4097, 0x0022 }, { 4099, 0x402c }, { 4103, 0x8740 }, { 4108, 0x6412 }, { 4113, 0x9185 }, { 4119, 0x1008 }, { 4121, 0x8480 }, { 4124, 0x2c87 }, /* 0x8500 */ { 4131, 0x508c }, { 4136, 0x5001 }, { 4139, 0x8cbc }, { 4147, 0x805c }, { 4152, 0x8040 }, { 4154, 0xf24f }, { 4164, 0x8817 }, { 4170, 0xae00 }, { 4175, 0x9a62 }, { 4182, 0xa108 }, { 4186, 0x20a5 }, { 4191, 0xf1d0 }, { 4199, 0x4c84 }, { 4204, 0x8500 }, { 4207, 0x2141 }, { 4211, 0x9048 }, /* 0x8600 */ { 4215, 0x6031 }, { 4220, 0x4b07 }, { 4227, 0x0282 }, { 4230, 0x3540 }, { 4235, 0x0047 }, { 4239, 0x23cc }, { 4246, 0x921f }, { 4254, 0x04e0 }, { 4258, 0x2100 }, { 4260, 0x1542 }, { 4265, 0x21c2 }, { 4270, 0x83ba }, { 4278, 0x002b }, { 4282, 0x14a6 }, { 4288, 0x00a9 }, { 4292, 0x3400 }, /* 0x8700 */ { 4295, 0xc8b0 }, { 4301, 0xc219 }, { 4307, 0xc10a }, { 4312, 0x7606 }, { 4319, 0x2029 }, { 4323, 0x2100 }, { 4325, 0x8032 }, { 4329, 0x0806 }, { 4332, 0x1bf8 }, { 4341, 0x43a9 }, { 4348, 0x7089 }, { 4354, 0xc022 }, { 4358, 0x4702 }, { 4363, 0x9660 }, { 4369, 0x2c1c }, { 4375, 0x850a }, /* 0x8800 */ { 4380, 0x0e4a }, { 4386, 0xdf1d }, { 4397, 0x6100 }, { 4400, 0x1425 }, { 4405, 0x4f2a }, { 4413, 0x9562 }, { 4420, 0x0211 }, { 4423, 0x0a02 }, { 4426, 0x0001 }, { 4427, 0x9d00 }, { 4432, 0x0501 }, { 4435, 0x6400 }, { 4438, 0x7c01 }, { 4444, 0x480e }, { 4449, 0x8080 }, { 4451, 0x00a3 }, /* 0x8900 */ { 4455, 0xe042 }, { 4460, 0x1760 }, { 4466, 0x01c1 }, { 4470, 0x4627 }, { 4477, 0x8265 }, { 4483, 0x1c84 }, { 4488, 0x480e }, { 4493, 0x3c29 }, { 4500, 0x2200 }, { 4502, 0x9831 }, { 4508, 0x0021 }, { 4510, 0x10f1 }, { 4516, 0x0000 }, { 4516, 0x01f0 }, { 4521, 0x2a20 }, { 4525, 0xa24a }, /* 0x8a00 */ { 4531, 0x80b0 }, { 4535, 0x4036 }, { 4540, 0x9855 }, { 4547, 0x60a0 }, { 4551, 0x62a9 }, { 4558, 0x31c8 }, { 4564, 0x00a2 }, { 4567, 0xcee0 }, { 4575, 0x8849 }, { 4580, 0x82c5 }, { 4586, 0xc280 }, { 4590, 0x48c8 }, { 4595, 0x0748 }, { 4600, 0xa0ba }, { 4607, 0x1000 }, { 4608, 0x9071 }, /* 0x8b00 */ { 4614, 0x0c60 }, { 4618, 0xd002 }, { 4622, 0x2000 }, { 4623, 0x1081 }, { 4626, 0x217c }, { 4633, 0x421c }, { 4638, 0x2008 }, { 4640, 0x5340 }, { 4645, 0xa832 }, { 4651, 0xd030 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, /* 0x8c00 */ { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x6300 }, { 4660, 0x8aa0 }, { 4665, 0x2b9a }, { 4673, 0x2358 }, { 4679, 0x4868 }, { 4684, 0x08c0 }, { 4687, 0x1a0d }, { 4693, 0x0010 }, { 4694, 0x0600 }, { 4696, 0x8a60 }, { 4701, 0x2260 }, { 4705, 0x9102 }, { 4709, 0xc1a5 }, /* 0x8d00 */ { 4716, 0x020a }, { 4719, 0x0884 }, { 4722, 0x0000 }, { 4722, 0x0000 }, { 4722, 0x0000 }, { 4722, 0x0000 }, { 4722, 0x5220 }, { 4726, 0x8000 }, { 4727, 0x2114 }, { 4731, 0xc023 }, { 4736, 0x9841 }, { 4741, 0x1aa4 }, { 4747, 0x45e1 }, { 4754, 0x02b2 }, { 4759, 0x10b0 }, { 4763, 0x2017 }, /* 0x8e00 */ { 4768, 0x0872 }, { 4773, 0x0052 }, { 4776, 0x00cf }, { 4782, 0x23ca }, { 4789, 0xe803 }, { 4795, 0x7810 }, { 4800, 0xb206 }, { 4806, 0x0e03 }, { 4811, 0x020c }, { 4814, 0x6c25 }, { 4821, 0x6284 }, { 4826, 0x0c28 }, { 4830, 0x809b }, { 4836, 0x1012 }, { 4839, 0x6100 }, { 4842, 0x0683 }, /* 0x8f00 */ { 4847, 0x8185 }, { 4852, 0x41c1 }, { 4857, 0x71ab }, { 4866, 0x04f0 }, { 4871, 0x808b }, { 4876, 0x613e }, { 4884, 0x0020 }, { 4885, 0x0000 }, { 4885, 0x0000 }, { 4885, 0x2000 }, { 4886, 0x0073 }, { 4891, 0x4160 }, { 4895, 0x2c43 }, { 4901, 0x002d }, { 4905, 0x4119 }, { 4910, 0x4862 }, /* 0x9000 */ { 4915, 0x1114 }, { 4919, 0x0900 }, { 4921, 0xb700 }, { 4927, 0x8098 }, { 4931, 0x1018 }, { 4934, 0x2800 }, { 4936, 0x10c4 }, { 4940, 0x0211 }, { 4943, 0x5920 }, { 4948, 0x0ba1 }, { 4954, 0x0027 }, { 4958, 0x605d }, { 4965, 0x11b8 }, { 4971, 0xb3a4 }, { 4979, 0x8820 }, { 4982, 0xc051 }, /* 0x9100 */ { 4987, 0x2171 }, { 4993, 0x55d1 }, { 5001, 0xc2ad }, { 5009, 0x36d2 }, { 5017, 0x8188 }, { 5021, 0x0e88 }, { 5026, 0x2092 }, { 5030, 0x0e10 }, { 5034, 0x446a }, { 5040, 0x413a }, { 5046, 0x7142 }, { 5052, 0xb84f }, { 5061, 0x002c }, { 5064, 0x4698 }, { 5070, 0xf630 }, { 5078, 0x2a83 }, /* 0x9200 */ { 5084, 0x16f3 }, { 5093, 0x314d }, { 5100, 0xc178 }, { 5107, 0x5769 }, { 5116, 0xe4cd }, { 5125, 0x3302 }, { 5130, 0xc3a3 }, { 5138, 0xbbe1 }, { 5148, 0x6700 }, { 5153, 0x8284 }, { 5157, 0x89b1 }, { 5164, 0xbd44 }, { 5172, 0x79ef }, { 5184, 0xb3a9 }, { 5193, 0x51ab }, { 5201, 0x8a01 }, /* 0x9300 */ { 5205, 0x2105 }, { 5209, 0xf032 }, { 5216, 0x06b2 }, { 5222, 0x00d8 }, { 5226, 0x0380 }, { 5229, 0x45a7 }, { 5237, 0xa6b0 }, { 5244, 0xa45b }, { 5252, 0xad07 }, { 5260, 0x4924 }, { 5265, 0x0b5a }, { 5272, 0x0470 }, { 5276, 0x3ef2 }, { 5286, 0xd208 }, { 5291, 0x00c4 }, { 5294, 0x2f80 }, /* 0x9400 */ { 5300, 0xe316 }, { 5308, 0x80e0 }, { 5312, 0xc000 }, { 5314, 0xa81e }, { 5321, 0x1528 }, { 5326, 0x9220 }, { 5330, 0xe90a }, { 5337, 0x0006 }, { 5339, 0x0018 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, /* 0x9500 */ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x4300 }, { 5344, 0x7110 }, { 5349, 0xe000 }, { 5352, 0x1a42 }, { 5357, 0xa450 }, { 5362, 0x0b40 }, { 5366, 0xe60f }, { 5375, 0x0051 }, { 5378, 0x0000 }, /* 0x9600 */ { 5378, 0x0000 }, { 5378, 0x6000 }, { 5380, 0x1074 }, { 5385, 0x378a }, { 5393, 0x0002 }, { 5394, 0x01d4 }, { 5399, 0x4002 }, { 5401, 0xd810 }, { 5406, 0x021e }, { 5411, 0xa442 }, { 5416, 0xc270 }, { 5422, 0x0408 }, { 5424, 0x0400 }, { 5425, 0xe504 }, { 5431, 0x8200 }, { 5433, 0x0402 }, /* 0x9700 */ { 5435, 0x022c }, { 5439, 0x2c00 }, { 5442, 0x010e }, { 5446, 0x000a }, { 5448, 0xc40a }, { 5453, 0x0da0 }, { 5458, 0x4488 }, { 5462, 0xa9c8 }, { 5469, 0x0201 }, { 5471, 0xc6e0 }, { 5478, 0x5004 }, { 5481, 0xd766 }, { 5491, 0x76b2 }, { 5500, 0x6b93 }, { 5509, 0x8013 }, { 5513, 0x0592 }, /* 0x9800 */ { 5518, 0x6480 }, { 5522, 0x5250 }, { 5527, 0xc869 }, { 5534, 0x402d }, { 5539, 0x0490 }, { 5542, 0x06ce }, { 5549, 0x146c }, { 5555, 0x0000 }, { 5555, 0x0000 }, { 5555, 0x0000 }, { 5555, 0x6800 }, { 5558, 0x8d91 }, { 5565, 0x1124 }, { 5569, 0x0000 }, { 5569, 0x04ea }, { 5575, 0x0048 }, /* 0x9900 */ { 5577, 0x0184 }, { 5580, 0x9ce2 }, { 5588, 0x08c4 }, { 5592, 0x1e3e }, { 5601, 0x61c3 }, { 5608, 0xdb10 }, { 5615, 0x0001 }, { 5616, 0x0000 }, { 5616, 0x0000 }, { 5616, 0xa800 }, { 5619, 0x0040 }, { 5620, 0xa627 }, { 5628, 0x0208 }, { 5630, 0x5618 }, { 5636, 0x1c80 }, { 5640, 0x6231 }, /* 0x9a00 */ { 5646, 0x181c }, { 5651, 0x4043 }, { 5655, 0x609d }, { 5662, 0x0168 }, { 5666, 0x5c92 }, { 5673, 0x2052 }, { 5677, 0x0000 }, { 5677, 0x0000 }, { 5677, 0x0000 }, { 5677, 0x0000 }, { 5677, 0xd400 }, { 5681, 0xca74 }, { 5689, 0x414a }, { 5694, 0x18e5 }, { 5701, 0x12b1 }, { 5707, 0xa62c }, /* 0x9b00 */ { 5714, 0x7b3f }, { 5726, 0x1a45 }, { 5732, 0x2841 }, { 5736, 0x26b8 }, { 5743, 0x1900 }, { 5746, 0x48e0 }, { 5751, 0x7d6a }, { 5761, 0x83a8 }, { 5767, 0xaef1 }, { 5777, 0x6411 }, { 5782, 0x12c0 }, { 5786, 0xd987 }, { 5795, 0x4182 }, { 5799, 0xa181 }, { 5804, 0x8ca0 }, { 5809, 0xa788 }, /* 0x9c00 */ { 5816, 0x8805 }, { 5820, 0x5742 }, { 5827, 0x07cc }, { 5834, 0x20e2 }, { 5839, 0xc63a }, { 5847, 0xf959 }, { 5857, 0x4f08 }, { 5863, 0x08a5 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0040 }, { 5869, 0x0284 }, /* 0x9d00 */ { 5872, 0x0804 }, { 5874, 0x7182 }, { 5880, 0x8000 }, { 5881, 0x341d }, { 5888, 0x04ac }, { 5893, 0x8018 }, { 5896, 0x0e2c }, { 5902, 0x58c1 }, { 5908, 0x6458 }, { 5914, 0x01ec }, { 5920, 0x5402 }, { 5924, 0x9222 }, { 5929, 0x0688 }, { 5933, 0xc4f0 }, { 5940, 0x4aa1 }, { 5946, 0x4019 }, /* 0x9e00 */ { 5950, 0x4484 }, { 5954, 0x3267 }, { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x1c00 }, { 5965, 0xc0bd }, { 5973, 0x4940 }, { 5977, 0xd110 }, { 5982, 0x0039 }, { 5986, 0x0940 }, { 5989, 0x8020 }, { 5991, 0x7090 }, { 5996, 0x8127 }, /* 0x9f00 */ { 6002, 0x820c }, { 6006, 0x8ed7 }, { 6016, 0x8c44 }, { 6021, 0xb696 }, { 6030, 0x00fa }, { 6036, 0x65e8 }, { 6044, 0xe300 }, { 6049, 0x242b }, { 6055, 0x8000 }, { 6056, 0x40d7 }, { 6063, 0x002e }, }; static int jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0460) summary = &jisx0212_uni2indx_page00[(wc>>4)]; else if (wc >= 0x2100 && wc < 0x2130) summary = &jisx0212_uni2indx_page21[(wc>>4)-0x210]; else if (wc >= 0x4e00 && wc < 0x9fb0) summary = &jisx0212_uni2indx_page4e[(wc>>4)-0x4e0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = jisx0212_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/johab.h0100644000000000000000000000660607206266437014407 0ustar rootroot /* * JOHAB */ /* Conversion between JOHAB codes (s1,s2) and KSX1001 codes (c1,c2): Example. (s1,s2) = 0xD931, (c1,c2) = 0x2121. (s1,s2) = 0xDEF1, (c1,c2) = 0x2C71. (s1,s2) = 0xE031, (c1,c2) = 0x4A21. (s1,s2) = 0xF9FE, (c1,c2) = 0x7D7E. 0xD9 <= s1 <= 0xDE || 0xE0 <= s1 <= 0xF9, 0x31 <= s2 <= 0x7E || 0x91 <= s2 <= 0xFE, 0x21 <= c1 <= 0x2C || 0x4A <= c1 <= 0x7D, 0x21 <= c2 <= 0x7E. Invariant: 94*(s1 < 0xE0 ? 2*s1-0x1B2 : 2*s1-0x197) + (s2 < 0x91 ? s2-0x31 : s2-0x43) = 94*(c1-0x21)+(c2-0x21) Conversion (s1,s2) -> (c1,c2): t1 := (s1 < 0xE0 ? 2*s1-0x1B2 : 2*s1-0x197) t2 := (s2 < 0x91 ? s2-0x31 : s2-0x43) c1 := t1 + (t2 < 0x5E ? 0 : 1) + 0x21 c2 := (t2 < 0x5E ? t2 : t2-0x5E) + 0x21 Conversion (c1,c2) -> (s1,s2): t := (c1 < 0x4A ? (c1-0x21+0x1B2) : (c1-0x21+0x197)) s1 := t >> 1 t2 := (t & 1) * 0x5E + (c2 - 0x21) s2 := (t2 < 0x4E ? t2+0x31 : t2+0x43) */ static int johab_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { if (c == 0x5c) *pwc = (ucs4_t) 0x20a9; else *pwc = (ucs4_t) c; return 1; } else if (c < 0xd8) { return johab_hangul_mbtowc(conv,pwc,s,n); } else { unsigned char s1, s2; s1 = c; if ((s1 >= 0xd9 && s1 <= 0xde) || (s1 >= 0xe0 && s1 <= 0xf9)) { if (n < 2) return RET_TOOFEW(0); s2 = s[1]; if ((s2 >= 0x31 && s2 <= 0x7e) || (s2 >= 0x91 && s2 <= 0xfe)) { /* In KSC 5601, the region s1 = 0xDA, 0xA1 <= s2 <= 0xD3 contains the 51 Jamo (Hangul letters). But in the Johab encoding, they have been moved to the Hangul section, see johab_hangul_page31. */ if (!(s1 == 0xda && (s2 >= 0xa1 && s2 <= 0xd3))) { unsigned char t1 = (s1 < 0xe0 ? 2*(s1-0xd9) : 2*s1-0x197); unsigned char t2 = (s2 < 0x91 ? s2-0x31 : s2-0x43); unsigned char buf[2]; buf[0] = t1 + (t2 < 0x5e ? 0 : 1) + 0x21; buf[1] = (t2 < 0x5e ? t2 : t2-0x5e) + 0x21; return ksc5601_mbtowc(conv,pwc,buf,2); } } } return RET_ILSEQ; } } static int johab_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Try ASCII variation. */ if (wc < 0x0080 && wc != 0x005c) { *r = wc; return 1; } if (wc == 0x20a9) { *r = 0x5c; return 1; } /* Try JOHAB Hangul table before KSC5601 table, because the KSC5601 table contains some (2350 out of 11172) Hangul syllables (rows 0x30XX..0x48XX), and we want the search to return the JOHAB Hangul table entry. */ /* Try JOHAB Hangul. */ ret = johab_hangul_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; r[0] = buf[0]; r[1] = buf[1]; return 2; } /* Try KSC5601. */ ret = ksc5601_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { unsigned char c1, c2; if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; c1 = buf[0]; c2 = buf[1]; if (((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x4a && c1 <= 0x7d)) && (c2 >= 0x21 && c2 <= 0x7e)) { unsigned int t = (c1 < 0x4A ? (c1-0x21+0x1B2) : (c1-0x21+0x197)); unsigned char t2 = ((t & 1) ? 0x5e : 0) + (c2 - 0x21); r[0] = t >> 1; r[1] = (t2 < 0x4e ? t2+0x31 : t2+0x43); return 2; } } return RET_ILSEQ; } recode-3.6/libiconv/johab_hangul.h0100644000000000000000000002221007206266437015732 0ustar rootroot /* * JOHAB Hangul * * Ken Lunde writes in his "CJKV Information Processing" book, p. 114: * "Hangul can be composed of two or three jamo (some jamo are considered * compound). Johab uses 19 initial jamo (consonants), 21 medial jamo (vowels) * and 27 final jamo (consonants; 28 when you include the "fill" character * for Hangul containing only two jamo). Multiplying these numbers results in * 11172." * * Structure of the Johab encoding (see p. 181-184): * bit 15 = 1 * bit 14..10 = initial jamo, only 19+1 out of 32 possible values are used * bit 9..5 = medial jamo, only 21+1 out of 32 possible values are used * bit 4..0 = final jamo, only 27+1 out of 32 possible values are used * * Structure of the Unicode encoding: * grep '^0x\([8-C]...\|D[0-7]..\)' unicode.org-mappings/EASTASIA/KSC/JOHAB.TXT * You see that all characters there are marked "HANGUL LETTER" or "HANGUL * SYLLABLE". If you eliminate the "HANGUL LETTER"s, the table is sorted * in ascending order according to Johab encoding and according to the Unicode * encoding. Now look a little more carefully, and you see that the following * formula holds: * unicode == 0xAC00 * + 21 * 28 * (jamo_initial_index[(johab >> 10) & 31] - 1) * + 28 * (jamo_medial_index[(johab >> 5) & 31] - 1) * + jamo_final_index[johab & 31] * where the index tables are defined as below. */ /* Tables mapping 5-bit groups to jamo letters. */ /* Note that Jamo XX = UHC 0xA4A0+XX = Unicode 0x3130+XX */ #define NONE 0xfd #define FILL 0xff static const unsigned char jamo_initial[32] = { NONE, FILL, 0x01, 0x02, 0x04, 0x07, 0x08, 0x09, 0x11, 0x12, 0x13, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, }; static const unsigned char jamo_medial[32] = { NONE, NONE, FILL, 0x1f, 0x20, 0x21, 0x22, 0x23, NONE, NONE, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, NONE, NONE, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, NONE, NONE, 0x30, 0x31, 0x32, 0x33, NONE, NONE, }; static const unsigned char jamo_final[32] = { NONE, FILL, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, NONE, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, NONE, NONE, }; /* Same as jamo_final, except that it excludes characters already contained in jamo_initial. 11 characters instead of 27. */ static const unsigned char jamo_final_notinitial[32] = { NONE, NONE, NONE, NONE, 0x03, NONE, 0x05, 0x06, NONE, NONE, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, NONE, NONE, NONE, 0x14, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, }; /* Tables mapping 5-bit groups to packed indices. */ #define none -1 #define fill 0 static const signed char jamo_initial_index[32] = { none, fill, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, none, none, none, none, none, none, none, none, none, none, none, }; static const signed char jamo_medial_index[32] = { none, none, fill, 0x01, 0x02, 0x03, 0x04, 0x05, none, none, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, none, none, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, none, none, 0x12, 0x13, 0x14, 0x15, none, none, }; static const signed char jamo_final_index[32] = { none, fill, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, none, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, none, none, }; static int johab_hangul_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x84 && c1 <= 0xd3)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x41 && c2 < 0x7f) || (c2 >= 0x81 && c2 < 0xff)) { unsigned int johab = (c1 << 8) | c2; unsigned int bitspart1 = (johab >> 10) & 31; unsigned int bitspart2 = (johab >> 5) & 31; unsigned int bitspart3 = johab & 31; int index1 = jamo_initial_index[bitspart1]; int index2 = jamo_medial_index[bitspart2]; int index3 = jamo_final_index[bitspart3]; /* Exclude "none" values. */ if (index1 >= 0 && index2 >= 0 && index3 >= 0) { /* Deal with "fill" values in initial or medial position. */ if (index1 == fill) { if (index2 == fill) { unsigned char jamo3 = jamo_final_notinitial[bitspart3]; if (jamo3 != NONE) { *pwc = (ucs4_t) 0x3130 + jamo3; return 2; } } else if (index3 == fill) { unsigned char jamo2 = jamo_medial[bitspart2]; if (jamo2 != NONE && jamo2 != FILL) { *pwc = (ucs4_t) 0x3130 + jamo2; return 2; } } /* Syllables composed only of medial and final don't exist. */ } else if (index2 == fill) { if (index3 == fill) { unsigned char jamo1 = jamo_initial[bitspart1]; if (jamo1 != NONE && jamo1 != FILL) { *pwc = (ucs4_t) 0x3130 + jamo1; return 2; } } /* Syllables composed only of initial and final don't exist. */ } else { /* index1 and index2 are not fill, but index3 may be fill. */ /* Nothing more to exclude. All 11172 code points are valid. */ *pwc = 0xac00 + ((index1 - 1) * 21 + (index2 - 1)) * 28 + index3; return 2; } } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } /* 51 Jamo: 19 initial, 21 medial, 11 final not initial. */ static const unsigned short johab_hangul_page31[51] = { 0x8841, 0x8c41, 0x8444, 0x9041, 0x8446, 0x8447, 0x9441, /*0x30-0x37*/ 0x9841, 0x9c41, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, /*0x38-0x3f*/ 0x8450, 0xa041, 0xa441, 0xa841, 0x8454, 0xac41, 0xb041, 0xb441, /*0x40-0x47*/ 0xb841, 0xbc41, 0xc041, 0xc441, 0xc841, 0xcc41, 0xd041, 0x8461, /*0x48-0x4f*/ 0x8481, 0x84a1, 0x84c1, 0x84e1, 0x8541, 0x8561, 0x8581, 0x85a1, /*0x50-0x57*/ 0x85c1, 0x85e1, 0x8641, 0x8661, 0x8681, 0x86a1, 0x86c1, 0x86e1, /*0x58-0x5f*/ 0x8741, 0x8761, 0x8781, 0x87a1, /*0x60-0x67*/ }; /* Tables mapping packed indices to 5-bit groups. */ /* index1+1 = jamo_initial_index[bitspart1] <==> bitspart1 = jamo_initial_index_inverse[index1] */ static const char jamo_initial_index_inverse[19] = { 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, }; /* index2+1 = jamo_medial_index[bitspart2] <==> bitspart2 = jamo_medial_index_inverse[index2] */ static const char jamo_medial_index_inverse[21] = { 0x03, 0x04, 0x05, 0x06, 0x07, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1d, }; /* index3 = jamo_final_index[bitspart3] <==> bitspart3 = jamo_final_index_inverse[index3] */ static const char jamo_final_index_inverse[28] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, }; static int johab_hangul_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { if (wc >= 0x3131 && wc < 0x3164) { unsigned short c = johab_hangul_page31[wc-0x3131]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } else if (wc >= 0xac00 && wc < 0xd7a4) { unsigned int index1; unsigned int index2; unsigned int index3; unsigned short c; unsigned int tmp = wc - 0xac00; index3 = tmp % 28; tmp = tmp / 28; index2 = tmp % 21; tmp = tmp / 21; index1 = tmp; c = (((((1 << 5) | jamo_initial_index_inverse[index1]) << 5) | jamo_medial_index_inverse[index2]) << 5) | jamo_final_index_inverse[index3]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } return RET_ILSEQ; } return RET_TOOSMALL; } /* * Decomposition of JOHAB Hangul in one to three Johab Jamo elements. */ /* Decompose wc into r[0..2], and return the number of resulting Jamo elements. Return RET_ILSEQ if decomposition is not possible. */ static int johab_hangul_decompose (conv_t conv, ucs4_t* r, ucs4_t wc) { unsigned char buf[2]; int ret = johab_hangul_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { unsigned int hangul = (buf[0] << 8) | buf[1]; unsigned char jamo1 = jamo_initial[(hangul >> 10) & 31]; unsigned char jamo2 = jamo_medial[(hangul >> 5) & 31]; unsigned char jamo3 = jamo_final[hangul & 31]; if ((hangul >> 15) != 1) abort(); if (jamo1 != NONE && jamo2 != NONE && jamo3 != NONE) { /* They are not all three == FILL because that would correspond to johab = 0x8441, which doesn't exist. */ ucs4_t* p = r; if (jamo1 != FILL) *p++ = 0x3130 + jamo1; if (jamo2 != FILL) *p++ = 0x3130 + jamo2; if (jamo3 != FILL) *p++ = 0x3130 + jamo3; return p-r; } } return RET_ILSEQ; } #undef fill #undef none #undef FILL #undef NONE recode-3.6/libiconv/koi8_r.h0100644000000000000000000001340107206266437014506 0ustar rootroot /* * KOI8-R */ /* Specification: RFC 1489 */ static const unsigned short koi8_r_2uni[128] = { /* 0x80 */ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, /* 0x90 */ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, /* 0xa0 */ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, /* 0xb0 */ 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, /* 0xc0 */ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, /* 0xd0 */ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, /* 0xe0 */ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, /* 0xf0 */ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, }; static int koi8_r_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) koi8_r_2uni[c-0x80]; return 1; } static const unsigned char koi8_r_page00[88] = { 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */ }; static const unsigned char koi8_r_page04[88] = { 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */ 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ }; static const unsigned char koi8_r_page22[80] = { 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */ }; static const unsigned char koi8_r_page23[8] = { 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; static const unsigned char koi8_r_page25[168] = { 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, /* 0x50-0x57 */ 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */ 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, /* 0x60-0x67 */ 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; static int koi8_r_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00f8) c = koi8_r_page00[wc-0x00a0]; else if (wc >= 0x0400 && wc < 0x0458) c = koi8_r_page04[wc-0x0400]; else if (wc >= 0x2218 && wc < 0x2268) c = koi8_r_page22[wc-0x2218]; else if (wc >= 0x2320 && wc < 0x2328) c = koi8_r_page23[wc-0x2320]; else if (wc >= 0x2500 && wc < 0x25a8) c = koi8_r_page25[wc-0x2500]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/koi8_ru.h0100644000000000000000000001440207206266437014675 0ustar rootroot /* * KOI8-RU */ static const unsigned short koi8_ru_2uni[128] = { /* 0x80 */ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, /* 0x90 */ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, /* 0xa0 */ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x045e, 0x255e, /* 0xb0 */ 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x040e, 0x00a9, /* 0xc0 */ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, /* 0xd0 */ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, /* 0xe0 */ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, /* 0xf0 */ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, }; static int koi8_ru_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) koi8_ru_2uni[c-0x80]; return 1; } static const unsigned char koi8_ru_page00[88] = { 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */ }; static const unsigned char koi8_ru_page04[152] = { 0x00, 0xb3, 0x00, 0x00, 0xb4, 0x00, 0xb6, 0xb7, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, /* 0x08-0x0f */ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */ 0x00, 0xa3, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0xbd, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char koi8_ru_page22[80] = { 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */ }; static const unsigned char koi8_ru_page23[8] = { 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; static const unsigned char koi8_ru_page25[168] = { 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0xa0, 0xa1, 0xa2, 0x00, 0xa5, 0x00, 0x00, 0xa8, /* 0x50-0x57 */ 0xa9, 0xaa, 0xab, 0xac, 0x00, 0x00, 0xaf, 0xb0, /* 0x58-0x5f */ 0xb1, 0xb2, 0x00, 0xb5, 0x00, 0x00, 0xb8, 0xb9, /* 0x60-0x67 */ 0xba, 0xbb, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; static int koi8_ru_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00f8) c = koi8_ru_page00[wc-0x00a0]; else if (wc >= 0x0400 && wc < 0x0498) c = koi8_ru_page04[wc-0x0400]; else if (wc >= 0x2218 && wc < 0x2268) c = koi8_ru_page22[wc-0x2218]; else if (wc >= 0x2320 && wc < 0x2328) c = koi8_ru_page23[wc-0x2320]; else if (wc >= 0x2500 && wc < 0x25a8) c = koi8_ru_page25[wc-0x2500]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/koi8_u.h0100644000000000000000000001442207206266437014515 0ustar rootroot /* * KOI8-U */ /* Specification: RFC 2319 */ static const unsigned short koi8_u_2uni[128] = { /* 0x80 */ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, /* 0x90 */ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, /* 0xa0 */ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e, /* 0xb0 */ 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9, /* 0xc0 */ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, /* 0xd0 */ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, /* 0xe0 */ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, /* 0xf0 */ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, }; static int koi8_u_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) koi8_u_2uni[c-0x80]; return 1; } static const unsigned char koi8_u_page00[88] = { 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */ }; static const unsigned char koi8_u_page04[152] = { 0x00, 0xb3, 0x00, 0x00, 0xb4, 0x00, 0xb6, 0xb7, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */ 0x00, 0xa3, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0xbd, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char koi8_u_page22[80] = { 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */ }; static const unsigned char koi8_u_page23[8] = { 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; static const unsigned char koi8_u_page25[168] = { 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0xa0, 0xa1, 0xa2, 0x00, 0xa5, 0x00, 0x00, 0xa8, /* 0x50-0x57 */ 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */ 0xb1, 0xb2, 0x00, 0xb5, 0x00, 0x00, 0xb8, 0xb9, /* 0x60-0x67 */ 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ }; static int koi8_u_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00f8) c = koi8_u_page00[wc-0x00a0]; else if (wc >= 0x0400 && wc < 0x0498) c = koi8_u_page04[wc-0x0400]; else if (wc >= 0x2218 && wc < 0x2268) c = koi8_u_page22[wc-0x2218]; else if (wc >= 0x2320 && wc < 0x2328) c = koi8_u_page23[wc-0x2320]; else if (wc >= 0x2500 && wc < 0x25a8) c = koi8_u_page25[wc-0x2500]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/ksc5601.h0100644000000000000000000055163007206266437014422 0ustar rootroot /* * KSC5601.1987-0 */ static const unsigned short ksc5601_2uni_page21[1115] = { /* 0x21 */ 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8, 0x3003, 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019, 0x201c, 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7, 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033, 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191, 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2, /* 0x22 */ 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7, 0x02d8, 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x02d0, 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0, 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663, 0x2299, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5, 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c, 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116, 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x23 */ 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3, /* 0x24 */ 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187, 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e, /* 0x25 */ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x26 */ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542, 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d, 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a, 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a, 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x27 */ 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3, 0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e, 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e, 0x338f, 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0, 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8, 0x33b9, 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb, 0x33bc, 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6, 0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab, 0x33ac, 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x33c6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x28 */ 0x00c6, 0x00d0, 0x00aa, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0xfffd, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153, 0x2154, 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e, /* 0x29 */ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140, 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149, 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207, 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f, 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217, 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f, 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7, 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af, 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084, /* 0x2a */ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x2b */ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0x2c */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, }; static const unsigned short ksc5601_2uni_page30[2350] = { /* 0x30 */ 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19, 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d, 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b, 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77, 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86, 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d, 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf, 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4, 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7, 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5, 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06, /* 0x31 */ 0xad0c, 0xad0d, 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29, 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45, 0xad47, 0xad49, 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c, 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c, 0xad7d, 0xad7f, 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90, 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8, 0xadd0, 0xadd1, 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9, 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d, 0xae14, 0xae30, 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40, 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e, 0xae50, 0xae54, 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61, 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78, /* 0x32 */ 0xae79, 0xae7b, 0xae7c, 0xae7d, 0xae84, 0xae85, 0xae8c, 0xaebc, 0xaebd, 0xaebe, 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf, 0xaed0, 0xaed1, 0xaed8, 0xaed9, 0xaedc, 0xaee8, 0xaeeb, 0xaeed, 0xaef4, 0xaef8, 0xaefc, 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d, 0xaf30, 0xaf32, 0xaf34, 0xaf3c, 0xaf3d, 0xaf3f, 0xaf41, 0xaf42, 0xaf43, 0xaf48, 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64, 0xaf65, 0xaf79, 0xaf80, 0xaf84, 0xaf88, 0xaf90, 0xaf91, 0xaf95, 0xaf9c, 0xafb8, 0xafb9, 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9, 0xafcb, 0xafcd, 0xafce, 0xafd4, 0xafdc, 0xafe8, 0xafe9, 0xaff0, 0xaff1, 0xaff4, 0xaff8, 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010, 0xb014, 0xb01c, 0xb01d, 0xb028, 0xb044, 0xb045, 0xb048, 0xb04a, 0xb04c, 0xb04e, 0xb053, 0xb054, 0xb055, 0xb057, 0xb059, /* 0x33 */ 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c, 0xb08d, 0xb08f, 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f, 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc, 0xb0c4, 0xb0c5, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4, 0xb0d8, 0xb0e0, 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110, 0xb112, 0xb113, 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123, 0xb124, 0xb125, 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138, 0xb139, 0xb140, 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154, 0xb155, 0xb158, 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180, 0xb182, 0xb188, 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194, 0xb198, 0xb19c, 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd, /* 0x34 */ 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd, 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217, 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268, 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290, 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3, 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9, 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa, 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311, 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358, 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365, /* 0x35 */ 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378, 0xb380, 0xb381, 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394, 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb, 0xb3cc, 0xb3ce, 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db, 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c, 0xb420, 0xb428, 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454, 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488, 0xb49d, 0xb4a4, 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0, 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3, 0xb4e4, 0xb4e6, 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514, 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528, 0xb529, 0xb52a, 0xb530, 0xb531, 0xb534, 0xb538, /* 0x36 */ 0xb540, 0xb541, 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c, 0xb54d, 0xb550, 0xb554, 0xb55c, 0xb55d, 0xb55f, 0xb560, 0xb561, 0xb5a0, 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc, 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610, 0xb611, 0xb614, 0xb618, 0xb625, 0xb62c, 0xb634, 0xb648, 0xb664, 0xb668, 0xb69c, 0xb69d, 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4, 0xb6f0, 0xb6f4, 0xb6f8, 0xb700, 0xb701, 0xb705, 0xb728, 0xb729, 0xb72c, 0xb72f, 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744, 0xb748, 0xb74c, 0xb754, 0xb755, 0xb760, 0xb764, 0xb768, 0xb770, 0xb771, 0xb773, 0xb775, 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c, 0xb78d, 0xb78f, 0xb790, 0xb791, 0xb792, 0xb796, 0xb797, /* 0x37 */ 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9, 0xb7ab, 0xb7ac, 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9, 0xb7ec, 0xb7ed, 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800, 0xb801, 0xb807, 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819, 0xb81b, 0xb81d, 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835, 0xb837, 0xb838, 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c, 0xb85d, 0xb860, 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878, 0xb87c, 0xb88d, 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1, 0xb8c3, 0xb8c5, 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1, 0xb8e8, 0xb8e9, 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd, 0xb904, 0xb918, 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c, 0xb94f, 0xb951, 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969, /* 0x38 */ 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985, 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0, 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db, 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec, 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01, 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48, 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58, 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71, 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8, 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb, 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc, /* 0x39 */ 0xbb00, 0xbb04, 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20, 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e, 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f, 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c, 0xbb90, 0xbba4, 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4, 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00, 0xbc02, 0xbc08, 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11, 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f, 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30, 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45, 0xbc49, 0xbc4c, 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88, 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97, /* 0x3a */ 0xbc99, 0xbc9a, 0xbca0, 0xbca1, 0xbca4, 0xbca7, 0xbca8, 0xbcb0, 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4, 0xbccd, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07, 0xbd09, 0xbd10, 0xbd14, 0xbd24, 0xbd2c, 0xbd40, 0xbd48, 0xbd49, 0xbd4c, 0xbd50, 0xbd58, 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81, 0xbd84, 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd90, 0xbd91, 0xbd93, 0xbd95, 0xbd99, 0xbd9a, 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5, 0xbdd8, 0xbddc, 0xbde9, 0xbdf0, 0xbdf4, 0xbdf8, 0xbe00, 0xbe03, 0xbe05, 0xbe0c, 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f, 0xbe44, 0xbe45, 0xbe48, 0xbe4c, 0xbe4e, 0xbe54, 0xbe55, 0xbe57, 0xbe59, 0xbe5a, 0xbe5b, 0xbe60, 0xbe61, 0xbe64, /* 0x3b */ 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d, 0xbe8f, 0xbe90, 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1, 0xbed4, 0xbed7, 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec, 0xbf01, 0xbf08, 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf40, 0xbf41, 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94, 0xbfb0, 0xbfc5, 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf, 0xbfe1, 0xc03c, 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069, 0xc090, 0xc091, 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5, 0xc0ac, 0xc0ad, 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0bc, 0xc0bd, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9, 0xc0cc, 0xc0d0, 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4, /* 0x3c */ 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100, 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f, 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f, 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148, 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c, 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178, 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c, 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0, 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0, 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200, 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c, 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d, /* 0x3d */ 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254, 0xc258, 0xc260, 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c, 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b, 0xc29d, 0xc2a4, 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5, 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb, 0xc2ec, 0xc2ed, 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb, 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314, 0xc315, 0xc318, 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345, 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c, 0xc37d, 0xc384, 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc, 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5, 0xc3f8, 0xc408, 0xc410, 0xc424, 0xc42c, 0xc430, /* 0x3e */ 0xc434, 0xc43c, 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468, 0xc46c, 0xc474, 0xc475, 0xc479, 0xc480, 0xc494, 0xc49c, 0xc4b8, 0xc4bc, 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff, 0xc500, 0xc501, 0xc50c, 0xc510, 0xc514, 0xc51c, 0xc528, 0xc529, 0xc52c, 0xc530, 0xc538, 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545, 0xc548, 0xc549, 0xc54a, 0xc54c, 0xc54d, 0xc54e, 0xc553, 0xc554, 0xc555, 0xc557, 0xc558, 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561, 0xc564, 0xc568, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575, 0xc57c, 0xc57d, 0xc580, 0xc584, 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591, 0xc595, 0xc597, 0xc598, 0xc59c, 0xc5a0, 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8, 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cc, 0xc5ce, /* 0x3f */ 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1, 0xc5e3, 0xc5e5, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6, 0xc5f7, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605, 0xc606, 0xc607, 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b, 0xc61c, 0xc624, 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630, 0xc633, 0xc634, 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641, 0xc644, 0xc648, 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c, 0xc65d, 0xc660, 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c, 0xc680, 0xc688, 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698, 0xc69c, 0xc6a4, 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc, 0xc6cd, 0xc6d0, 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8, /* 0x40 */ 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705, 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721, 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c, 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c, 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d, 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a, 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a, 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad, 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8, 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8, 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a, /* 0x41 */ 0xc810, 0xc811, 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820, 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840, 0xc848, 0xc849, 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874, 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887, 0xc88b, 0xc88c, 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8, 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7, 0xc8d9, 0xc8e0, 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900, 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918, 0xc92c, 0xc934, 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961, 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c, 0xc990, 0xc998, 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4, 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3, /* 0x42 */ 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da, 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2, 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8, 0xc9f9, 0xc9fc, 0xca00, 0xca08, 0xca09, 0xca0b, 0xca0c, 0xca0d, 0xca14, 0xca18, 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54, 0xca5c, 0xca5d, 0xca5f, 0xca60, 0xca61, 0xca68, 0xca7d, 0xca84, 0xca98, 0xcabc, 0xcabd, 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf, 0xcad1, 0xcad3, 0xcad8, 0xcad9, 0xcae0, 0xcaec, 0xcaf4, 0xcb08, 0xcb10, 0xcb14, 0xcb18, 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49, 0xcb4c, 0xcb50, 0xcb58, 0xcb59, 0xcb5d, 0xcb64, 0xcb78, 0xcb79, 0xcb9c, 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10, 0xcc14, 0xcc1c, 0xcc1d, 0xcc21, 0xcc22, 0xcc27, 0xcc28, 0xcc29, 0xcc2c, 0xcc2e, 0xcc30, 0xcc38, 0xcc39, 0xcc3b, /* 0x43 */ 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48, 0xcc4c, 0xcc54, 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64, 0xcc66, 0xcc68, 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0, 0xcca8, 0xcca9, 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8, 0xccbc, 0xccc4, 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4, 0xccec, 0xccf0, 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18, 0xcd19, 0xcd1b, 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c, 0xcd60, 0xcd64, 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88, 0xcd94, 0xcd95, 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9, 0xcdb0, 0xcdc4, 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8, 0xcdf9, 0xcdfb, 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19, 0xce20, 0xce21, 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35, /* 0x44 */ 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69, 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85, 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1, 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5, 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9, 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15, 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31, 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67, 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c, 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8, 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011, 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c, /* 0x45 */ 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060, 0xd06c, 0xd06d, 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4, 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0, 0xd0c1, 0xd0c4, 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4, 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef, 0xd0f0, 0xd0f1, 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138, 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d, 0xd150, 0xd154, 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c, 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0, 0xd1b1, 0xd1b3, 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4, 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234, 0xd23c, 0xd23d, 0xd23f, 0xd241, 0xd248, 0xd25c, /* 0x46 */ 0xd264, 0xd280, 0xd281, 0xd284, 0xd288, 0xd290, 0xd291, 0xd295, 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac, 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc, 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8, 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0, 0xd2f1, 0xd2f4, 0xd2f8, 0xd300, 0xd301, 0xd303, 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310, 0xd314, 0xd316, 0xd31c, 0xd31d, 0xd31f, 0xd320, 0xd321, 0xd325, 0xd328, 0xd329, 0xd32c, 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c, 0xd33d, 0xd344, 0xd345, 0xd37c, 0xd37d, 0xd380, 0xd384, 0xd38c, 0xd38d, 0xd38f, 0xd390, 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0, 0xd3a8, 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4, 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5, 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed, 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd, 0xd3ff, 0xd401, /* 0x47 */ 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460, 0xd464, 0xd46d, 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480, 0xd482, 0xd488, 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc, 0xd4d0, 0xd4d4, 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8, 0xd4fb, 0xd4fd, 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517, 0xd53c, 0xd53d, 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551, 0xd558, 0xd559, 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b, 0xd56d, 0xd574, 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587, 0xd588, 0xd589, 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0, 0xd5d2, 0xd5d8, 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8, 0xd5ec, 0xd5f4, 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604, 0xd608, 0xd610, 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620, /* 0x48 */ 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648, 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c, 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c, 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac, 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1, 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5, 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c, 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738, 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756, 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769, 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789, 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d, }; static const unsigned short ksc5601_2uni_page4a[4888] = { /* 0x4a */ 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5, 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c, 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36, 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404, 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3, 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7, 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5, 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593, 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910, 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be, 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3, 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, 0x9f95, /* 0x4b */ 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b, 0x5808, 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177, 0x6c5f, 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154, 0x8221, 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb, 0x4ef7, 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539, 0x69ea, 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb, 0xf900, 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3, 0x7fb9, 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e, 0x64da, 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902, 0x907d, 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa, 0x6106, 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e, 0x5091, 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2, /* 0x4c */ 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048, 0x61a9, 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1, 0x9694, 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9, 0x898b, 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50, 0x7f3a, 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c, 0x4eac, 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f, 0x5770, 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c, 0x666f, 0x66bb, 0x66f4, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f, 0x74a5, 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45, 0x7d93, 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x9015, 0x93e1, 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, 0x5553, 0x583a, 0x5951, 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, 0x68b0, /* 0x4d */ 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb, 0x7e6b, 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4, 0x53e9, 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab, 0x62f7, 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd, 0x75fc, 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f, 0x82e6, 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0xf903, 0x8f9c, 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b, 0x66f2, 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11, 0x6606, 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68, 0xf904, 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5, 0x6050, 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3, 0x8ca2, 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc, /* 0x4e */ 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846, 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98, 0x5bec, 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50, 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec, 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38, 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b, 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0, 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1, 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821, 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e, 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18, 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, 0x52fe, /* 0x4f */ 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2, 0x5bc7, 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9, 0x69cb, 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7, 0x7396, 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc, 0x8205, 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011, 0x90b1, 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c, 0x570b, 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98, 0x7fa4, 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f, 0x5bae, 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238, 0x52f8, 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737, 0x53a5, 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70, 0x8a6d, 0x8ecc, 0x994b, 0xf906, 0x6677, 0x6b78, 0x8cb4, /* 0x50 */ 0x9b3c, 0xf907, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb, 0x73ea, 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73, 0x9035, 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e, 0xf908, 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975, 0x9699, 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff, 0x747e, 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949, 0xf909, 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981, 0x79bd, 0x82a9, 0x887e, 0x887f, 0x895f, 0xf90a, 0x9326, 0x4f0b, 0x53ca, 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162, 0x77dc, 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x5668, 0x573b, 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, 0x5bc4, 0x5c90, 0x5d0e, 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, 0x65e3, /* 0x51 */ 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a, 0x6c23, 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482, 0x74a3, 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948, 0x797a, 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c, 0x8a18, 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951, 0x9a0e, 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee, 0x6854, 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c, 0x61e6, 0xf90d, 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911, 0xf912, 0xf913, 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918, 0x8afe, 0xf919, 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156, 0xf91e, 0xf91f, 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921, 0x678f, 0x6960, 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925, /* 0x52 */ 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928, 0xf929, 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948, 0x67f0, 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c, 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974, 0x5f29, 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934, 0xf935, 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b, 0xf93c, 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943, 0x6fc3, 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947, 0x8166, 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e, 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0xf952, 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0x80fd, 0xf958, 0xf959, 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, 0x8336, /* 0x53 */ 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56, 0x65b7, 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e, 0x7dde, 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a, 0x75b8, 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1, 0x6e5b, 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983, 0x8ac7, 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d, 0x5510, 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576, 0x7cd6, 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d, 0x5cb1, 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b, 0x8cb8, 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200, 0x5230, 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6, 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843, /* 0x54 */ 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe, 0x76dc, 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3, 0x8e48, 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc, 0x6bd2, 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4, 0x7e9b, 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c, 0x711e, 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac, 0x51cd, 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e, 0x6f7c, 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c, 0x6597, 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0xf95a, 0x8c46, 0x9017, 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x920d, 0x5f97, 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, 0x85e4, 0x8b04, 0x9127, 0x9a30, 0x5587, 0x61f6, 0xf95b, 0x7669, 0x7f85, /* 0x55 */ 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b, 0x70d9, 0x73de, 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e, 0x4e82, 0x5375, 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e, 0x524c, 0x8fa3, 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43, 0x7e9c, 0x85cd, 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca, 0x6717, 0x6d6a, 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86, 0x5d0d, 0x5fa0, 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169, 0x51c9, 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2, 0x8f1b, 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e, 0x623e, 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad, 0x9a62, 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d, 0x792b, 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23, /* 0x56 */ 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a, 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582, 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0xf95f, 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046, 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7, 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4, 0x6ad3, 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def, 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f, 0x7da0, 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04, 0x6727, 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x7262, 0x78ca, 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86, 0x50da, 0x5bee, 0x5ed6, 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, 0x84fc, /* 0x57 */ 0x907c, 0x9b27, 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13, 0x6dda, 0x6f0f, 0x763b, 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4, 0x964b, 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f, 0x7409, 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d, 0x622e, 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a, 0x5f8b, 0x6144, 0x6817, 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc, 0x51cc, 0x695e, 0x7a1c, 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229, 0x5398, 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c, 0x7281, 0x72f8, 0x7406, 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79, 0x7fb8, 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9, 0x541d, 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57, 0x9e9f, 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c, /* 0x58 */ 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc, 0x78e8, 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c, 0x83ab, 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162, 0x633d, 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c, 0x8513, 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b, 0x6cab, 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9, 0x671b, 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099, 0x57cb, 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf, 0x7164, 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a, 0x964c, 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x76df, 0x840c, 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, 0x68c9, 0x6c94, 0x7704, 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, 0x6ec5, /* 0x59 */ 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927, 0x6e9f, 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298, 0x9cf4, 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155, 0x6478, 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f, 0x7261, 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00, 0x8b28, 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46, 0x9da9, 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893, 0x5999, 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7, 0x82d7, 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7, 0x64ab, 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d, 0x7e46, 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61, 0x58a8, 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587, /* 0x5a */ 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff, 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae, 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e, 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d, 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9, 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd, 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94, 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1, 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591, 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc, 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812, 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, 0x6f51, /* 0x5b */ 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023, 0x508d, 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e, 0x65b9, 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21, 0x80aa, 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17, 0x90a6, 0x9632, 0x9f90, 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98, 0x62dc, 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da, 0x88f4, 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f, 0x4f70, 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61, 0x6a0a, 0x7169, 0x71d4, 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9, 0x98dc, 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5, 0x6c3e, 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a, 0x50fb, 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656, /* 0x5c */ 0x78a7, 0x8617, 0x95e2, 0x9739, 0xf965, 0x535e, 0x5f01, 0x8b8a, 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08, 0x4e19, 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4, 0x68c5, 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920, 0x9a08, 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11, 0x6e7a, 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c, 0x8f14, 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d, 0x798f, 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b, 0x99a5, 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef, 0x5cf0, 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x84ec, 0x8702, 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, 0x4fef, 0x5085, 0x5256, 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, 0x5a66, /* 0x5d */ 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276, 0x6577, 0x65a7, 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150, 0x8151, 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6, 0x8cfb, 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9, 0x9ce7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e, 0x5fff, 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89, 0x7cde, 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b, 0x5f17, 0x5f7f, 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c, 0x4e15, 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87, 0x60b2, 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4, 0x6bd6, 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa, 0x7812, 0x7891, 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5, /* 0x5e */ 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb, 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c, 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7, 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b, 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2, 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb, 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c, 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23, 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9, 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df, 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc, 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714, 0xf96a, /* 0x5f */ 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523, 0x759d, 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba, 0x715e, 0x85a9, 0x4e09, 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f, 0x8518, 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7, 0x50cf, 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0, 0x5e38, 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58, 0x723d, 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3, 0x89f4, 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd, 0x55c7, 0xf96c, 0x7a61, 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525, 0xf96d, 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90, 0x6055, 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816, 0x68f2, 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72, /* 0x60 */ 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4, 0x9ecd, 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673, 0x6790, 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb, 0x932b, 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247, 0x657e, 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf, 0x766c, 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239, 0x861a, 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d, 0x9bae, 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c, 0x859b, 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9, 0x6bb2, 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x6d89, 0x71ee, 0xf96e, 0x57ce, 0x59d3, 0x5bac, 0x6027, 0x60fa, 0x6210, 0x661f, 0x665f, 0x7329, 0x73f9, 0x76db, 0x7701, 0x7b6c, /* 0x61 */ 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2, 0x6b72, 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0, 0x53ec, 0x562f, 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383, 0x6414, 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4, 0x71d2, 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b, 0x7d20, 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061, 0x90b5, 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91, 0x7c9f, 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d, 0x84c0, 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e, 0x6dde, 0x8a1f, 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051, 0x788e, 0x9396, 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782, 0x58fd, 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101, /* 0x62 */ 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39, 0x6b8a, 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2, 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac, 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896, 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9, 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3, 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a, 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa, 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3, 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340, 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4, 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, 0x5d27, /* 0x63 */ 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2, 0x8936, 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f, 0x6607, 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb, 0x5aa4, 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd, 0x662f, 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5, 0x8494, 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a, 0x57f4, 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c, 0x7184, 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38, 0x4f81, 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668, 0x71fc, 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa, 0x85ce, 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931, 0x5ba4, 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81, /* 0x64 */ 0xf972, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0, 0x5341, 0xf973, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e, 0x5a25, 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859, 0x8a1d, 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3, 0x5dbd, 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x6a02, 0x6e25, 0x9102, 0x9354, 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f, 0x6848, 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01, 0x8ecb, 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c, 0x83f4, 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e, 0x600f, 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x57c3, 0x5d16, 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, 0x9698, 0x9744, 0x5384, 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, 0x984d, /* 0x65 */ 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6, 0x591c, 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974, 0x91ce, 0x5f31, 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb, 0x85e5, 0x8e8d, 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43, 0x6059, 0x63da, 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23, 0x6d0b, 0x7001, 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b, 0x7f8a, 0xf97c, 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e, 0x990a, 0x5704, 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad, 0x9b5a, 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043, 0x5830, 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa, 0x513c, 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186, 0x4e88, 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982, /* 0x66 */ 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985, 0x8207, 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987, 0xf988, 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b, 0xf98c, 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5, 0x5827, 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990, 0x6350, 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5, 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3, 0x71d5, 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996, 0x7e2f, 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b, 0xf99b, 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0xf99f, 0x71b1, 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2, 0xf9a3, 0xf9a4, 0x67d3, 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276, 0x82d2, /* 0x67 */ 0xf9a6, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1, 0x8449, 0xf9a8, 0xf9a9, 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71, 0xf9ac, 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36, 0x6f41, 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad, 0x745b, 0xf9ae, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0, 0x82f1, 0x8a60, 0x8fce, 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3, 0xf9b4, 0x4e42, 0x502a, 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d, 0x6fca, 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6, 0x88d4, 0x8a63, 0x8b7d, 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713, 0x9810, 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433, 0x55da, 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9, 0x61ca, 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3, /* 0x68 */ 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32, 0x9f07, 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465, 0x761f, 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee, 0x7515, 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6, 0x7aa9, 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c, 0x5b9b, 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897, 0x7de9, 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811, 0x66f0, 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03, 0x6b6a, 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0xf9ba, 0xf9bb, 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x5be5, 0xf9bc, 0xf9bd, 0x5da2, 0x62d7, 0x6416, 0x6493, 0x64fe, 0xf9be, 0x66dc, 0xf9bf, 0x6a48, 0xf9c0, 0x71ff, 0x7464, 0xf9c1, /* 0x69 */ 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0xf9c2, 0x87ef, 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952, 0x617e, 0x6b32, 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197, 0x52c7, 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c, 0x6e67, 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338, 0x84c9, 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51, 0x5076, 0x512a, 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a, 0x6182, 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991, 0x79b9, 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047, 0x90f5, 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed, 0x6631, 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0xf9c5, 0x6a52, 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553, /* 0x6a */ 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a, 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b, 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72, 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060, 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d, 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170, 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466, 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f, 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9, 0x5b7a, 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109, 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4, 0x67da, 0xf9c9, 0x6961, 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38, 0xf9cb, /* 0x6b */ 0x6fe1, 0x7336, 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd, 0x7652, 0xf9ce, 0xf9cf, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98, 0x8adb, 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149, 0x91c9, 0x936e, 0xf9d0, 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089, 0x80b2, 0xf9d3, 0xf9d4, 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6, 0x6f64, 0x73a7, 0x80e4, 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8, 0xf9d9, 0xf9da, 0xf9db, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d, 0xf9dc, 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1, 0x4e59, 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6, 0x6ce3, 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a, 0x5100, 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591, 0x77e3, 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc, /* 0x6c */ 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0xf9dd, 0xf9de, 0x5937, 0x59e8, 0xf9df, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0xf9e0, 0xf9e1, 0xf9e2, 0xf9e3, 0x723e, 0x73e5, 0xf9e4, 0x7570, 0x75cd, 0xf9e5, 0x79fb, 0xf9e6, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351, 0xf9e7, 0xf9e8, 0x8cbd, 0x8cb3, 0x9087, 0xf9e9, 0xf9ea, 0x98f4, 0x990c, 0xf9eb, 0xf9ec, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc, 0x8b1a, 0x4eba, 0x4ec1, 0x5203, 0x5370, 0xf9ed, 0x54bd, 0x56e0, 0x59fb, 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0xf9ee, 0xf9ef, 0x7d6a, 0x8335, 0xf9f0, 0x8693, 0x8a8d, 0xf9f1, 0x976d, 0x9777, 0xf9f2, 0xf9f3, 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x9038, 0x93b0, 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, 0x6041, 0xf9f4, 0xf9f5, 0x7a14, 0xf9f6, 0x834f, 0x8cc3, 0x5165, 0x5344, /* 0x6d */ 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55, 0x82bf, 0x4ed4, 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c, 0x6063, 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5, 0x78c1, 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee, 0x8cc7, 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c, 0x70b8, 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71, 0x68e7, 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4, 0x7c2a, 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb, 0x58ef, 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2, 0x6756, 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa, 0x7350, 0x748b, 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c, 0x8523, 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577, /* 0x6e */ 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d, 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09, 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e, 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17, 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7, 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8, 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575, 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e, 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea, 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178, 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb, 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, 0x6fb1, /* 0x6f */ 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c, 0x7b8b, 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f, 0x9293, 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207, 0x622a, 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360, 0x5cbe, 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede, 0x63a5, 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075, 0x5448, 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5, 0x633a, 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968, 0x6a89, 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e, 0x70a1, 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b, 0x7a7d, 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d, 0x914a, 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756, /* 0x70 */ 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824, 0x5e1d, 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c, 0x81cd, 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b, 0x973d, 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632, 0x5f14, 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9, 0x671d, 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5, 0x722a, 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95, 0x7c97, 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54, 0x8abf, 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5, 0x9ce5, 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x5352, 0x62d9, 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, 0x616b, 0x68d5, 0x6dd9, 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, 0x816b, /* 0x71 */ 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6, 0x5ea7, 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd, 0x80c4, 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda, 0x665d, 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d, 0x70b7, 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f, 0x86db, 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e, 0x9152, 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6, 0x57c8, 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec, 0x710c, 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff, 0x8301, 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b, 0x6c41, 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511, 0x75c7, 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea, /* 0x72 */ 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f, 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c, 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3, 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe, 0x9072, 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875, 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25, 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e, 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a, 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707, 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be, 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f, 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd, 0x8f2f, /* 0x73 */ 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98, 0x501f, 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb, 0x7b9a, 0xf9fe, 0x8e49, 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740, 0x7a84, 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8, 0x74da, 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a, 0x947d, 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e, 0x50ed, 0x53c3, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9, 0x8b92, 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0, 0x5f70, 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4, 0x6f32, 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc, 0x50b5, 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5, 0x83dc, 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56, /* 0x74 */ 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0xf9ff, 0x5254, 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc, 0x7620, 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598, 0x5929, 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b, 0x85a6, 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6, 0x51f8, 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f, 0x8f4d, 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb, 0x7c3d, 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377, 0x7252, 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674, 0x6df8, 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0xfa00, 0x5243, 0x66ff, 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, 0x905e, 0x9ad4, 0x521d, 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, 0x68a2, /* 0x75 */ 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901, 0x790e, 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549, 0x8c82, 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed, 0x77d7, 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2, 0x585a, 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525, 0x9283, 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8, 0x690e, 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429, 0x8acf, 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318, 0x939a, 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa, 0x7b51, 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010, 0x6625, 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0, 0x6c96, 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403, /* 0x76 */ 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0, 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074, 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4, 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4, 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4, 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed, 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x6c88, 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31, 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253, 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c, 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258, 0xfa02, 0x64e2, 0x666b, 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, 0x8a17, /* 0x77 */ 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e, 0x7058, 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708, 0x803d, 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f, 0xfa03, 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86, 0x6c70, 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1, 0xfa04, 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f, 0x8a0e, 0x615f, 0x6876, 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a, 0x5806, 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957, 0x59ac, 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761, 0x5a46, 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e, 0x722c, 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224, 0x5742, 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211, /* 0x78 */ 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096, 0x6557, 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d, 0x5f6d, 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x4fbf, 0x504f, 0x6241, 0x7247, 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6, 0x576a, 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63, 0x5ee2, 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48, 0x5305, 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016, 0x629b, 0x62b1, 0x6355, 0xfa06, 0x6ce1, 0x6d66, 0x75b1, 0x7832, 0x80de, 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b, 0x92ea, 0x98fd, 0x9b91, 0x5e45, 0x66b4, 0x66dd, 0x7011, 0x7206, 0xfa07, 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, 0x6a19, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, 0x9a43, /* 0x79 */ 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae, 0x5f7c, 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339, 0x5f3c, 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe, 0x999d, 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8, 0x6630, 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e, 0x9c15, 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068, 0x608d, 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0, 0x9591, 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b, 0x54b8, 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c, 0x9677, 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4, 0x965c, 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297, 0x676d, 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a, /* 0x7a */ 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a, 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3, 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016, 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae, 0x73e6, 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b, 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57, 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8, 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d, 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2, 0x9249, 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354, 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2, 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, 0x578b, /* 0x7b */ 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192, 0x73e9, 0x7469, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3, 0x99a8, 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a, 0x91af, 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d, 0x5cb5, 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69, 0x6dcf, 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0, 0x7425, 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1, 0x82a6, 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a, 0x93ac, 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f, 0x6df7, 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4, 0x5f18, 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c, 0x9d3b, 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575, /* 0x7c */ 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8, 0x9774, 0xfa0b, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38, 0x559a, 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665, 0x6853, 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25, 0x6d3b, 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8, 0x604d, 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1, 0x6e5f, 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27, 0x8352, 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb, 0x5f8a, 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee, 0x6fae, 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x8aa8, 0x8cc4, 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, 0x54ee, 0x5686, 0x5b5d, 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, 0x6dc6, /* 0x7d */ 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a, 0x540e, 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166, 0x73dd, 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f, 0x71fb, 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684, 0x714a, 0x8431, 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689, 0x7147, 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566, 0x8667, 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36, 0x80f8, 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79, 0x7d07, 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d, 0x7fd5, 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec, 0x5b09, 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199, 0x71b9, 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70, }; static int ksc5601_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) { if (n >= 2) { unsigned char c2 = s[1]; if (c2 >= 0x21 && c2 < 0x7f) { unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21); unsigned short wc = 0xfffd; if (i < 1410) { if (i < 1115) wc = ksc5601_2uni_page21[i]; } else if (i < 3854) { if (i < 3760) wc = ksc5601_2uni_page30[i-1410]; } else { if (i < 8742) wc = ksc5601_2uni_page4a[i-3854]; } if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short ksc5601_2charset[8224] = { 0x222e, 0x2234, 0x2157, 0x2127, 0x2823, 0x2129, 0x2146, 0x213e, 0x2977, 0x2978, 0x2225, 0x2252, 0x2124, 0x222c, 0x2976, 0x282c, 0x2879, 0x2876, 0x287a, 0x222f, 0x2821, 0x2822, 0x213f, 0x282a, 0x282d, 0x292c, 0x2921, 0x2923, 0x2140, 0x292a, 0x292d, 0x2922, 0x2824, 0x2924, 0x2925, 0x2826, 0x2926, 0x2927, 0x2828, 0x2928, 0x2829, 0x2929, 0x2930, 0x282f, 0x292f, 0x282b, 0x292b, 0x282e, 0x292e, 0x2227, 0x2230, 0x2228, 0x222b, 0x222a, 0x222d, 0x2229, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577, 0x2578, 0x2c27, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38, 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40, 0x2c41, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x2c5f, 0x2c60, 0x2c61, 0x2c62, 0x2c63, 0x2c64, 0x2c65, 0x2c66, 0x2c67, 0x2c68, 0x2c69, 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70, 0x2c71, 0x2c57, 0x212a, 0x212e, 0x212f, 0x2130, 0x2131, 0x2253, 0x2254, 0x2125, 0x2126, 0x2236, 0x2147, 0x2148, 0x2158, 0x2979, 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x2149, 0x2235, 0x2724, 0x2260, 0x2265, 0x2262, 0x2759, 0x214a, 0x2877, 0x2878, 0x287b, 0x287c, 0x287d, 0x287e, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x2167, 0x2168, 0x2166, 0x2169, 0x216a, 0x2255, 0x2258, 0x2256, 0x2259, 0x2257, 0x2221, 0x2222, 0x2223, 0x2153, 0x2224, 0x2154, 0x2174, 0x2175, 0x2233, 0x2232, 0x216e, 0x2170, 0x2144, 0x2150, 0x212b, 0x217c, 0x217d, 0x217b, 0x217a, 0x2172, 0x2173, 0x2231, 0x2145, 0x2171, 0x212d, 0x216f, 0x2156, 0x2141, 0x2155, 0x2142, 0x2143, 0x216c, 0x216d, 0x2178, 0x2179, 0x2176, 0x2177, 0x2241, 0x2151, 0x2152, 0x2867, 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d, 0x286e, 0x286f, 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 0x294d, 0x294e, 0x294f, 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853, 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b, 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863, 0x2864, 0x2865, 0x2866, 0x2621, 0x262c, 0x2622, 0x262d, 0x2623, 0x2648, 0x2647, 0x262e, 0x2624, 0x2642, 0x2641, 0x262f, 0x2626, 0x2646, 0x2645, 0x2631, 0x2625, 0x2644, 0x2643, 0x2630, 0x2627, 0x263c, 0x2649, 0x264a, 0x2637, 0x264b, 0x264c, 0x2632, 0x2629, 0x263e, 0x264d, 0x264e, 0x2639, 0x264f, 0x2650, 0x2634, 0x2628, 0x2651, 0x2652, 0x2638, 0x263d, 0x2653, 0x2654, 0x2633, 0x262a, 0x2655, 0x2656, 0x263a, 0x263f, 0x2657, 0x2658, 0x2635, 0x262b, 0x2659, 0x265a, 0x263b, 0x265b, 0x265c, 0x2640, 0x265d, 0x265e, 0x265f, 0x2660, 0x2661, 0x2662, 0x2663, 0x2664, 0x2636, 0x2246, 0x2161, 0x2160, 0x2243, 0x2247, 0x2248, 0x224b, 0x224a, 0x2249, 0x224c, 0x2163, 0x2162, 0x223a, 0x2239, 0x2165, 0x2164, 0x2238, 0x2237, 0x215f, 0x215e, 0x2242, 0x215b, 0x215d, 0x215c, 0x2244, 0x2245, 0x215a, 0x2159, 0x224f, 0x224e, 0x2250, 0x2251, 0x214f, 0x214e, 0x223c, 0x223d, 0x2240, 0x223b, 0x223e, 0x223f, 0x224d, 0x225b, 0x225c, 0x225d, 0x225a, 0x2121, 0x2122, 0x2123, 0x2128, 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b, 0x213c, 0x213d, 0x216b, 0x2132, 0x2133, 0x2a21, 0x2a22, 0x2a23, 0x2a24, 0x2a25, 0x2a26, 0x2a27, 0x2a28, 0x2a29, 0x2a2a, 0x2a2b, 0x2a2c, 0x2a2d, 0x2a2e, 0x2a2f, 0x2a30, 0x2a31, 0x2a32, 0x2a33, 0x2a34, 0x2a35, 0x2a36, 0x2a37, 0x2a38, 0x2a39, 0x2a3a, 0x2a3b, 0x2a3c, 0x2a3d, 0x2a3e, 0x2a3f, 0x2a40, 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48, 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50, 0x2a51, 0x2a52, 0x2a53, 0x2a54, 0x2a55, 0x2a56, 0x2a57, 0x2a58, 0x2a59, 0x2a5a, 0x2a5b, 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f, 0x2a60, 0x2a61, 0x2a62, 0x2a63, 0x2a64, 0x2a65, 0x2a66, 0x2a67, 0x2a68, 0x2a69, 0x2a6a, 0x2a6b, 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f, 0x2a70, 0x2a71, 0x2a72, 0x2a73, 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27, 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f, 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37, 0x2b38, 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f, 0x2b40, 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, 0x2b48, 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x2b4d, 0x2b4e, 0x2b4f, 0x2b50, 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x2b55, 0x2b56, 0x2b57, 0x2b58, 0x2b59, 0x2b5a, 0x2b5b, 0x2b5c, 0x2b5d, 0x2b5e, 0x2b5f, 0x2b60, 0x2b61, 0x2b62, 0x2b63, 0x2b64, 0x2b65, 0x2b66, 0x2b67, 0x2b68, 0x2b69, 0x2b6a, 0x2b6b, 0x2b6c, 0x2b6d, 0x2b6e, 0x2b6f, 0x2b70, 0x2b71, 0x2b72, 0x2b73, 0x2b74, 0x2b75, 0x2b76, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x2931, 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, 0x2940, 0x2941, 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949, 0x294a, 0x294b, 0x294c, 0x225f, 0x2831, 0x2832, 0x2833, 0x2834, 0x2835, 0x2836, 0x2837, 0x2838, 0x2839, 0x283a, 0x283b, 0x283c, 0x283d, 0x283e, 0x283f, 0x2840, 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x225e, 0x2749, 0x274a, 0x274b, 0x274c, 0x274d, 0x273a, 0x273b, 0x275c, 0x275d, 0x275e, 0x2736, 0x2737, 0x2738, 0x2754, 0x2755, 0x2756, 0x2757, 0x2758, 0x2721, 0x2722, 0x2723, 0x2725, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2727, 0x2728, 0x2729, 0x272a, 0x273d, 0x273e, 0x2765, 0x2766, 0x2767, 0x2768, 0x2761, 0x2762, 0x2763, 0x273f, 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x274e, 0x274f, 0x2750, 0x2751, 0x2752, 0x2753, 0x275a, 0x275b, 0x2263, 0x276c, 0x2726, 0x2760, 0x276f, 0x2261, 0x273c, 0x276d, 0x2735, 0x2739, 0x276a, 0x276b, 0x275f, 0x2264, 0x2764, 0x276e, 0x2769, 0x6c69, 0x6f4b, 0x7652, 0x5832, 0x6d5b, 0x5f32, 0x5f3e, 0x793b, 0x5c74, 0x7564, 0x7326, 0x5d60, 0x6126, 0x4e78, 0x5c30, 0x632a, 0x7169, 0x4d7a, 0x7c2f, 0x5321, 0x712b, 0x6751, 0x522c, 0x4e79, 0x717d, 0x5e3f, 0x7b3a, 0x7939, 0x4e52, 0x632b, 0x6b60, 0x4e7a, 0x4b77, 0x6525, 0x4a61, 0x544c, 0x6a61, 0x5c63, 0x5f2d, 0x4b6b, 0x552f, 0x5675, 0x6578, 0x5e40, 0x6c23, 0x694d, 0x6a27, 0x6976, 0x7b3b, 0x6769, 0x6f4c, 0x5066, 0x5e41, 0x642c, 0x584c, 0x7971, 0x4e5f, 0x7a24, 0x6632, 0x7a7b, 0x7a3d, 0x4c48, 0x6f4d, 0x5555, 0x5322, 0x6c51, 0x6427, 0x6c52, 0x7631, 0x4e7b, 0x5051, 0x4b3f, 0x6d24, 0x6d28, 0x5e42, 0x7662, 0x6d5c, 0x5c75, 0x6039, 0x544e, 0x7435, 0x535b, 0x5635, 0x6c24, 0x6466, 0x716a, 0x4b6c, 0x4b40, 0x6c72, 0x506a, 0x7972, 0x6c25, 0x505f, 0x676a, 0x506b, 0x5c51, 0x5b69, 0x7d4c, 0x5b57, 0x5a61, 0x5636, 0x635f, 0x5e43, 0x5e44, 0x4a21, 0x6e6c, 0x5323, 0x6e37, 0x784f, 0x6a48, 0x6e38, 0x712c, 0x7125, 0x694e, 0x793c, 0x6579, 0x6c6a, 0x5d56, 0x6d42, 0x7825, 0x653a, 0x5b58, 0x4a22, 0x514d, 0x6e6d, 0x6c6b, 0x5e45, 0x6360, 0x4a49, 0x7269, 0x554e, 0x7636, 0x4e42, 0x5647, 0x6334, 0x712d, 0x6a62, 0x5742, 0x7327, 0x4d6a, 0x6b6e, 0x5932, 0x7d25, 0x7655, 0x5562, 0x7835, 0x4c75, 0x7535, 0x642d, 0x676b, 0x7155, 0x703b, 0x6935, 0x4c49, 0x7a55, 0x6154, 0x5756, 0x5c41, 0x5e46, 0x7a6f, 0x6361, 0x6173, 0x5c76, 0x4e7c, 0x5b44, 0x7871, 0x5c64, 0x656f, 0x5c31, 0x5556, 0x735a, 0x4b41, 0x5b43, 0x597a, 0x536e, 0x7a38, 0x7d26, 0x6b6f, 0x7426, 0x4c4a, 0x7328, 0x735b, 0x5b27, 0x7637, 0x4f66, 0x7072, 0x4b5a, 0x6752, 0x5743, 0x7670, 0x685e, 0x6526, 0x6567, 0x4a23, 0x4c27, 0x6a49, 0x7836, 0x7a25, 0x712e, 0x6f4e, 0x4b6d, 0x7630, 0x6f4f, 0x694f, 0x775e, 0x4e53, 0x5c77, 0x5b28, 0x4b78, 0x5f21, 0x5d61, 0x754a, 0x6936, 0x676c, 0x6e6e, 0x7370, 0x5f3f, 0x4c4b, 0x5041, 0x7452, 0x603a, 0x5f40, 0x4e60, 0x5c52, 0x7d6a, 0x5676, 0x6a4a, 0x6869, 0x632c, 0x7350, 0x4a24, 0x5b78, 0x5e47, 0x6b70, 0x7156, 0x6562, 0x4c4c, 0x4b7b, 0x6a63, 0x5f41, 0x566d, 0x6950, 0x6e39, 0x5563, 0x5153, 0x6570, 0x6834, 0x6b43, 0x6a2a, 0x7a7c, 0x7576, 0x703c, 0x7d54, 0x603b, 0x4e43, 0x503a, 0x773a, 0x5873, 0x774d, 0x642e, 0x545f, 0x5067, 0x6c7d, 0x522e, 0x6e6f, 0x5557, 0x6a64, 0x7822, 0x4d6b, 0x573f, 0x7b31, 0x4d6c, 0x5c32, 0x506c, 0x4e7d, 0x6e70, 0x4c42, 0x506d, 0x6577, 0x737c, 0x6e22, 0x5933, 0x5874, 0x6937, 0x4e2e, 0x5922, 0x5871, 0x544f, 0x6527, 0x5552, 0x5629, 0x7422, 0x7157, 0x5558, 0x703d, 0x5750, 0x5450, 0x574f, 0x6b6a, 0x7d6b, 0x5b6d, 0x7c45, 0x4b42, 0x7d55, 0x7448, 0x686a, 0x7573, 0x795e, 0x536f, 0x6c53, 0x5d42, 0x6f37, 0x6754, 0x4a4a, 0x597b, 0x7a7d, 0x562a, 0x7478, 0x7777, 0x5c2c, 0x5757, 0x5f22, 0x4e3e, 0x5370, 0x7024, 0x616c, 0x4f67, 0x734b, 0x6d29, 0x4a3e, 0x746f, 0x764e, 0x5e7b, 0x503b, 0x5537, 0x6e71, 0x7428, 0x5c78, 0x4b27, 0x5a4e, 0x6066, 0x6d25, 0x6e72, 0x5c79, 0x795c, 0x735c, 0x7872, 0x7479, 0x7c71, 0x503c, 0x5b79, 0x5731, 0x4b7c, 0x7025, 0x4b7d, 0x5574, 0x4d6d, 0x4a25, 0x562b, 0x5042, 0x703e, 0x523d, 0x4c24, 0x7a36, 0x4c4d, 0x5a7a, 0x764f, 0x6938, 0x5875, 0x4c4e, 0x574d, 0x5451, 0x696d, 0x4a6b, 0x5962, 0x7d32, 0x632d, 0x564c, 0x5934, 0x6127, 0x6e53, 0x5043, 0x7d33, 0x5564, 0x4f68, 0x6d43, 0x5032, 0x4e7e, 0x5a28, 0x7850, 0x7d56, 0x7851, 0x7852, 0x5c53, 0x5d62, 0x7b79, 0x5d41, 0x6335, 0x6d5d, 0x4e44, 0x4b21, 0x5d63, 0x7c5d, 0x792f, 0x527b, 0x4f21, 0x6428, 0x7436, 0x6c7e, 0x632e, 0x676d, 0x7d41, 0x5a62, 0x5833, 0x5d64, 0x706f, 0x7671, 0x7a70, 0x5175, 0x5a4f, 0x5c54, 0x5c26, 0x6f3f, 0x4e4f, 0x6059, 0x5956, 0x6c54, 0x6a4b, 0x4a3f, 0x5530, 0x4f69, 0x716d, 0x4c4f, 0x6478, 0x646d, 0x5758, 0x7d27, 0x6a2b, 0x7632, 0x4f70, 0x793d, 0x6674, 0x4b5b, 0x7351, 0x6951, 0x7329, 0x5060, 0x6952, 0x5a63, 0x6252, 0x7622, 0x6174, 0x5a64, 0x6755, 0x753f, 0x4f22, 0x4d2f, 0x4f23, 0x4d30, 0x717e, 0x5023, 0x612f, 0x7823, 0x4a26, 0x773b, 0x726a, 0x5e48, 0x6953, 0x5e49, 0x7d5e, 0x4a40, 0x796a, 0x514e, 0x6e54, 0x5452, 0x5923, 0x7d28, 0x5759, 0x774e, 0x7a3e, 0x4f56, 0x5770, 0x6b61, 0x7845, 0x5c7a, 0x5d43, 0x795f, 0x676f, 0x7d65, 0x7623, 0x597c, 0x7d29, 0x676e, 0x5565, 0x6f50, 0x4d31, 0x7722, 0x7132, 0x7131, 0x4d32, 0x5a2b, 0x4a27, 0x6362, 0x7b3c, 0x5924, 0x6e3a, 0x7853, 0x7b7a, 0x4f24, 0x5c7b, 0x7663, 0x6d2a, 0x7221, 0x4e61, 0x7a26, 0x7960, 0x6c56, 0x646e, 0x7921, 0x7b6f, 0x796b, 0x6e23, 0x6a2c, 0x4a28, 0x747a, 0x4d56, 0x7c76, 0x7449, 0x7854, 0x7826, 0x5e4a, 0x7246, 0x575a, 0x5350, 0x5845, 0x6a66, 0x735d, 0x645a, 0x7664, 0x7672, 0x5f42, 0x597d, 0x4c76, 0x533a, 0x642f, 0x7961, 0x7026, 0x4b53, 0x603c, 0x744a, 0x547a, 0x7d2a, 0x7962, 0x7437, 0x7d42, 0x7c30, 0x7d6c, 0x4a62, 0x7d3d, 0x6a67, 0x5f43, 0x5152, 0x4e62, 0x5324, 0x7d2b, 0x5f60, 0x7247, 0x6770, 0x506e, 0x732a, 0x5e4b, 0x7638, 0x6175, 0x7133, 0x7723, 0x4a29, 0x4f25, 0x5f44, 0x6130, 0x703f, 0x7624, 0x6336, 0x7a46, 0x506f, 0x7d6d, 0x5d44, 0x7c77, 0x663f, 0x5e2d, 0x7a3f, 0x6571, 0x6d44, 0x5225, 0x7d6e, 0x7536, 0x6176, 0x5e4c, 0x7c5e, 0x6c57, 0x4d5d, 0x5637, 0x4d33, 0x7855, 0x6558, 0x4f6a, 0x4f50, 0x6a4c, 0x6a2e, 0x6a2d, 0x5371, 0x5325, 0x774f, 0x6e24, 0x5024, 0x7222, 0x5070, 0x7223, 0x7778, 0x5033, 0x5b29, 0x533b, 0x4a6c, 0x7126, 0x4b55, 0x7767, 0x4d5e, 0x7724, 0x7840, 0x535d, 0x4c50, 0x4f26, 0x7673, 0x6177, 0x535c, 0x7a7e, 0x7a27, 0x6b59, 0x4f27, 0x6a2f, 0x646f, 0x6939, 0x7158, 0x5858, 0x6072, 0x6634, 0x5c7c, 0x7371, 0x6350, 0x727b, 0x5b46, 0x5071, 0x5072, 0x4f5c, 0x5351, 0x4c31, 0x7758, 0x4b28, 0x6b3c, 0x643e, 0x745c, 0x5c42, 0x7027, 0x6640, 0x4a6d, 0x686b, 0x6568, 0x5c43, 0x6d5e, 0x5372, 0x4c77, 0x4e54, 0x672b, 0x4b43, 0x6131, 0x7732, 0x5373, 0x5352, 0x7540, 0x5f5d, 0x6e73, 0x6771, 0x7d34, 0x7248, 0x7352, 0x6e74, 0x6253, 0x4c51, 0x5f6a, 0x693a, 0x5957, 0x754d, 0x7172, 0x7a47, 0x5978, 0x5442, 0x7665, 0x5d45, 0x6772, 0x6d5f, 0x4a4b, 0x5b7a, 0x6835, 0x5326, 0x7d35, 0x7949, 0x6462, 0x7b3d, 0x5724, 0x4e45, 0x4e55, 0x5666, 0x653d, 0x5e4d, 0x6c73, 0x6d60, 0x6c6c, 0x7b3e, 0x5f6b, 0x6178, 0x793e, 0x5073, 0x602a, 0x6862, 0x6254, 0x527d, 0x6528, 0x5953, 0x535e, 0x7438, 0x773c, 0x5c7d, 0x686c, 0x6467, 0x6377, 0x6c28, 0x7a71, 0x6572, 0x5074, 0x522f, 0x5c65, 0x5025, 0x7134, 0x7c31, 0x4c78, 0x5d46, 0x7a51, 0x775f, 0x7a28, 0x6e75, 0x5e4e, 0x6773, 0x772c, 0x6b44, 0x6d61, 0x602b, 0x5d47, 0x5233, 0x523f, 0x4a4c, 0x7b3f, 0x657d, 0x5d65, 0x584d, 0x6c74, 0x5075, 0x686d, 0x5052, 0x5958, 0x7666, 0x5b2a, 0x7760, 0x5859, 0x7423, 0x745d, 0x6f51, 0x5935, 0x6d2b, 0x6337, 0x6e3b, 0x4d34, 0x6073, 0x6a4d, 0x6c75, 0x686e, 0x4b29, 0x712f, 0x4a4d, 0x6c29, 0x726b, 0x7d6f, 0x7973, 0x6641, 0x6c58, 0x6d2c, 0x6a4e, 0x685f, 0x5e4f, 0x5226, 0x6774, 0x5156, 0x6642, 0x6363, 0x6430, 0x5834, 0x7625, 0x735e, 0x5725, 0x7768, 0x6846, 0x7b66, 0x5d66, 0x5c7e, 0x585a, 0x5a2c, 0x6a30, 0x6338, 0x4a2a, 0x6179, 0x6a31, 0x726c, 0x7a6e, 0x6e55, 0x7974, 0x526c, 0x7b7b, 0x7d70, 0x603d, 0x4e63, 0x7846, 0x5e2e, 0x5f45, 0x653e, 0x6d2d, 0x7a6a, 0x4d6e, 0x6d26, 0x6d2e, 0x706d, 0x5d21, 0x6d2f, 0x7c78, 0x586b, 0x4c79, 0x4d35, 0x7a29, 0x615d, 0x6255, 0x6d4f, 0x5d22, 0x794a, 0x6a68, 0x656d, 0x536b, 0x6954, 0x617a, 0x644c, 0x6164, 0x6847, 0x4e5b, 0x5c55, 0x7735, 0x7c73, 0x7073, 0x4e2f, 0x7135, 0x6f52, 0x6848, 0x6b71, 0x4b54, 0x603e, 0x6378, 0x6a69, 0x7c32, 0x6074, 0x4f60, 0x6e25, 0x7a2a, 0x6643, 0x6132, 0x4a2b, 0x6364, 0x693b, 0x6256, 0x7372, 0x6e56, 0x6a32, 0x5076, 0x6c59, 0x5a4b, 0x4f28, 0x5d23, 0x585b, 0x794e, 0x6955, 0x6351, 0x523c, 0x582c, 0x734c, 0x4d7b, 0x7656, 0x6775, 0x686f, 0x6379, 0x523b, 0x7373, 0x637b, 0x5e50, 0x4e30, 0x5677, 0x7159, 0x7541, 0x5c44, 0x753b, 0x5e51, 0x5c66, 0x5e52, 0x6d62, 0x6e76, 0x6a4f, 0x706e, 0x637c, 0x535f, 0x5374, 0x6133, 0x6134, 0x7453, 0x5f46, 0x6956, 0x5b2b, 0x7626, 0x6339, 0x6b45, 0x7429, 0x4d36, 0x5279, 0x5a2d, 0x5263, 0x4f51, 0x4b5c, 0x4c7a, 0x4f5d, 0x6829, 0x633b, 0x633a, 0x605a, 0x6e77, 0x5c33, 0x5375, 0x5726, 0x7635, 0x575b, 0x6155, 0x546a, 0x5f23, 0x7d5f, 0x5077, 0x6d54, 0x4b2a, 0x645b, 0x617b, 0x4b22, 0x5360, 0x643f, 0x7b40, 0x5a3e, 0x644d, 0x5639, 0x6f40, 0x617c, 0x7639, 0x5f47, 0x6431, 0x5c67, 0x5c68, 0x7a56, 0x5376, 0x715a, 0x7a72, 0x627d, 0x554f, 0x5078, 0x4d5f, 0x754b, 0x6470, 0x4b2b, 0x5744, 0x627e, 0x5d5a, 0x5a2e, 0x4a6e, 0x5539, 0x6321, 0x6863, 0x732b, 0x4f29, 0x5377, 0x5471, 0x4e64, 0x6872, 0x6575, 0x672e, 0x563a, 0x5f6c, 0x6440, 0x6864, 0x5835, 0x645c, 0x7439, 0x7136, 0x625e, 0x6135, 0x4d6f, 0x7127, 0x4e65, 0x4b5d, 0x5963, 0x732c, 0x5079, 0x6c2b, 0x5e53, 0x7769, 0x7975, 0x615e, 0x4b6e, 0x633c, 0x7856, 0x5b6e, 0x7d71, 0x7736, 0x745e, 0x726d, 0x5b59, 0x7028, 0x617d, 0x5e54, 0x602c, 0x6d63, 0x5361, 0x5f48, 0x5936, 0x7d2c, 0x6f53, 0x6441, 0x786b, 0x5b2c, 0x7c46, 0x582d, 0x763a, 0x5b5f, 0x5353, 0x7847, 0x4a4e, 0x7841, 0x5234, 0x5c34, 0x7a39, 0x4a4f, 0x7c33, 0x6a6a, 0x6a6b, 0x507a, 0x6d64, 0x5d67, 0x5f49, 0x5f6d, 0x6e3c, 0x6f41, 0x4c52, 0x5d24, 0x5f4a, 0x5378, 0x7128, 0x4d37, 0x6f54, 0x645d, 0x5f6e, 0x4b2c, 0x693c, 0x6a6c, 0x5f4b, 0x793f, 0x562f, 0x5546, 0x4f2a, 0x4e29, 0x5678, 0x7137, 0x6e78, 0x5959, 0x735f, 0x7848, 0x4e46, 0x5566, 0x7466, 0x6645, 0x6f55, 0x4b6f, 0x7c5f, 0x5c27, 0x5667, 0x7849, 0x6352, 0x633d, 0x4f61, 0x7040, 0x6c5a, 0x5d57, 0x7b70, 0x6c2c, 0x7029, 0x7a57, 0x7b41, 0x5240, 0x6530, 0x6d65, 0x4b2d, 0x7930, 0x7725, 0x4b2e, 0x5a2f, 0x5836, 0x5327, 0x7b32, 0x7d44, 0x6c2d, 0x7b21, 0x6569, 0x696e, 0x7374, 0x7873, 0x7041, 0x5e2f, 0x7830, 0x7360, 0x672f, 0x5b2d, 0x6635, 0x7928, 0x5d58, 0x6859, 0x6f56, 0x5362, 0x625f, 0x7c60, 0x5748, 0x7d2d, 0x5f6f, 0x4c53, 0x5379, 0x5470, 0x5b47, 0x5e55, 0x7074, 0x5550, 0x6559, 0x7c47, 0x5c56, 0x6260, 0x5a30, 0x7323, 0x536c, 0x744b, 0x7d45, 0x637d, 0x7931, 0x507b, 0x6c5b, 0x753c, 0x7224, 0x584e, 0x584f, 0x7577, 0x7661, 0x5237, 0x7b6c, 0x5d48, 0x6468, 0x5241, 0x7857, 0x563b, 0x5e56, 0x773d, 0x6c2e, 0x5061, 0x6075, 0x6a33, 0x4e56, 0x4c25, 0x6c76, 0x6261, 0x633e, 0x7c48, 0x4d70, 0x7976, 0x5f70, 0x653f, 0x4e3f, 0x7c61, 0x6d30, 0x7d51, 0x763b, 0x794f, 0x6b5a, 0x4a41, 0x5238, 0x4d71, 0x6353, 0x7d66, 0x666d, 0x637a, 0x702a, 0x7950, 0x7c62, 0x7827, 0x6165, 0x6e79, 0x6776, 0x6a6d, 0x7c34, 0x7542, 0x575c, 0x7075, 0x5d68, 0x536d, 0x757c, 0x5a3f, 0x4c7b, 0x537a, 0x7424, 0x6f57, 0x5443, 0x7b63, 0x7b6d, 0x602d, 0x6a6e, 0x7b33, 0x6442, 0x7667, 0x525d, 0x5f4c, 0x7c49, 0x6529, 0x6076, 0x7633, 0x617e, 0x4b70, 0x6a6f, 0x6a70, 0x5a40, 0x7834, 0x6b72, 0x6443, 0x6957, 0x6471, 0x4a6f, 0x4e57, 0x7c4a, 0x7361, 0x4b44, 0x6365, 0x4b45, 0x6a34, 0x693d, 0x5749, 0x6b5b, 0x6d31, 0x4c43, 0x773e, 0x7c4b, 0x7874, 0x5937, 0x7353, 0x7354, 0x7764, 0x7751, 0x5837, 0x4e31, 0x4a42, 0x7b34, 0x4b46, 0x7076, 0x5567, 0x6a50, 0x4c54, 0x4b2f, 0x742a, 0x692f, 0x7543, 0x6958, 0x5d69, 0x7173, 0x557b, 0x5e3b, 0x747b, 0x7d73, 0x7d72, 0x7726, 0x5d49, 0x5453, 0x4c28, 0x5a41, 0x4c55, 0x5964, 0x7a4a, 0x6563, 0x533c, 0x4a70, 0x5044, 0x4a50, 0x7a2b, 0x6b6b, 0x6778, 0x5965, 0x5157, 0x7324, 0x547b, 0x7c63, 0x7a58, 0x7355, 0x4f2b, 0x6b73, 0x557c, 0x5354, 0x4d7c, 0x5966, 0x6279, 0x6221, 0x6b54, 0x6077, 0x6432, 0x4c7c, 0x7b64, 0x742b, 0x503d, 0x4a71, 0x6f38, 0x5740, 0x6e7a, 0x7d74, 0x5363, 0x7b42, 0x5568, 0x5b2e, 0x6136, 0x7837, 0x603f, 0x7b43, 0x5d6a, 0x6222, 0x6e26, 0x7668, 0x7675, 0x5d4a, 0x5062, 0x5d26, 0x5d6b, 0x6479, 0x632f, 0x507c, 0x747c, 0x4c3c, 0x776a, 0x6564, 0x5f71, 0x7761, 0x7977, 0x6f39, 0x7858, 0x7929, 0x7859, 0x6e3d, 0x5846, 0x6463, 0x754e, 0x5d59, 0x5967, 0x5239, 0x5543, 0x5a65, 0x5a50, 0x5159, 0x4e58, 0x4b5e, 0x742c, 0x5a7b, 0x7669, 0x6873, 0x4f2c, 0x7070, 0x747d, 0x5b48, 0x4e40, 0x6354, 0x514f, 0x7175, 0x4d72, 0x4f6b, 0x4d38, 0x6326, 0x515a, 0x7225, 0x7226, 0x644e, 0x537b, 0x7129, 0x7249, 0x6f58, 0x6649, 0x5838, 0x7a73, 0x7335, 0x7824, 0x5173, 0x6648, 0x785a, 0x5c69, 0x5e57, 0x4b5f, 0x4f6c, 0x745f, 0x5174, 0x523a, 0x5f72, 0x6137, 0x6223, 0x537c, 0x6d66, 0x5b49, 0x647a, 0x4f5e, 0x4e50, 0x5553, 0x7375, 0x772e, 0x6f48, 0x4d73, 0x754f, 0x6573, 0x7042, 0x4a51, 0x6a71, 0x5026, 0x595a, 0x702b, 0x6b67, 0x6540, 0x7c35, 0x6444, 0x4c29, 0x7d46, 0x6a35, 0x652a, 0x5f3a, 0x615f, 0x5a51, 0x6138, 0x6874, 0x537d, 0x6224, 0x724a, 0x5a66, 0x7733, 0x7d4d, 0x7336, 0x6e57, 0x7544, 0x5824, 0x7227, 0x5938, 0x5939, 0x6f49, 0x564e, 0x774b, 0x5f2e, 0x6875, 0x5235, 0x5355, 0x744c, 0x5a7c, 0x5968, 0x776b, 0x7549, 0x733c, 0x5a52, 0x5335, 0x6836, 0x564f, 0x743a, 0x7749, 0x4c2a, 0x7043, 0x4c56, 0x5053, 0x533d, 0x5b7b, 0x4b60, 0x5364, 0x7677, 0x553a, 0x734d, 0x4b61, 0x6b74, 0x742d, 0x7c2a, 0x776c, 0x6876, 0x5a67, 0x774c, 0x6541, 0x606e, 0x557d, 0x4e66, 0x7c2b, 0x553b, 0x7228, 0x6225, 0x4d39, 0x6a72, 0x4b47, 0x4d74, 0x5b2f, 0x6f59, 0x4d3a, 0x7c79, 0x5f73, 0x4e67, 0x5a42, 0x4f2d, 0x6779, 0x7828, 0x7362, 0x4a72, 0x5f24, 0x5444, 0x4c57, 0x6542, 0x4d3b, 0x6f5a, 0x6e58, 0x5d27, 0x6226, 0x6040, 0x5630, 0x784a, 0x7c7a, 0x597e, 0x5e30, 0x5d6c, 0x5a68, 0x5460, 0x5679, 0x4d57, 0x5e58, 0x7278, 0x6456, 0x5045, 0x742e, 0x5d28, 0x6d45, 0x7356, 0x5e59, 0x6366, 0x5328, 0x5b30, 0x655a, 0x633f, 0x5b31, 0x5569, 0x6041, 0x6f5b, 0x7069, 0x5732, 0x507d, 0x5969, 0x507e, 0x6c6d, 0x5329, 0x7229, 0x7044, 0x6262, 0x696f, 0x7951, 0x6959, 0x685a, 0x5a43, 0x5a44, 0x5445, 0x677a, 0x4d60, 0x6330, 0x5b32, 0x7b44, 0x7363, 0x5925, 0x7b67, 0x5d4b, 0x5054, 0x6636, 0x602e, 0x7d5a, 0x5c35, 0x6078, 0x6731, 0x7570, 0x585c, 0x6d46, 0x6139, 0x6340, 0x7940, 0x6970, 0x595b, 0x7364, 0x5c36, 0x6469, 0x7045, 0x6341, 0x7c4c, 0x7c4d, 0x724b, 0x724c, 0x644f, 0x715b, 0x7a59, 0x7138, 0x7d75, 0x6079, 0x677b, 0x7c37, 0x7c64, 0x7b45, 0x6367, 0x5839, 0x7678, 0x5c45, 0x4c58, 0x602f, 0x7467, 0x6f5c, 0x4f7c, 0x6f5d, 0x722a, 0x7d3e, 0x4a2c, 0x7d3b, 0x7d47, 0x6732, 0x6a51, 0x5f74, 0x516c, 0x645e, 0x6543, 0x5926, 0x4d3c, 0x7365, 0x6d55, 0x593a, 0x6d67, 0x7b35, 0x786c, 0x6067, 0x4c59, 0x5446, 0x6725, 0x5575, 0x533e, 0x7c7b, 0x6472, 0x5f75, 0x6878, 0x786d, 0x4e47, 0x7d76, 0x6858, 0x4d58, 0x6756, 0x4c5a, 0x4a63, 0x5f76, 0x7047, 0x7046, 0x583a, 0x7174, 0x7470, 0x754c, 0x7c65, 0x6a45, 0x6a73, 0x5d5b, 0x5c57, 0x5e7d, 0x7279, 0x5547, 0x5850, 0x7048, 0x5121, 0x5122, 0x5954, 0x5668, 0x594a, 0x5a31, 0x5847, 0x5c62, 0x734e, 0x7574, 0x7139, 0x5a53, 0x766a, 0x4f75, 0x7d2e, 0x4a52, 0x5f34, 0x575d, 0x7a3a, 0x6e27, 0x753d, 0x7875, 0x6d68, 0x5461, 0x5123, 0x6156, 0x7978, 0x5b4a, 0x4b79, 0x5454, 0x595c, 0x6e3e, 0x776d, 0x526e, 0x6166, 0x7779, 0x5d6d, 0x685b, 0x5b33, 0x5177, 0x6030, 0x5462, 0x7657, 0x5779, 0x585d, 0x4d7d, 0x722b, 0x4d3d, 0x7842, 0x722c, 0x4a2d, 0x4a2e, 0x4f2e, 0x6342, 0x5c37, 0x5b5a, 0x593b, 0x4a73, 0x7653, 0x6678, 0x6a75, 0x6a76, 0x7679, 0x4f2f, 0x4a53, 0x4a2f, 0x5230, 0x713a, 0x5733, 0x6343, 0x737d, 0x5e5a, 0x5e5b, 0x6f5e, 0x6263, 0x6e7b, 0x5f77, 0x574a, 0x4e68, 0x5b5b, 0x713b, 0x6971, 0x7a37, 0x5046, 0x4c2b, 0x6e28, 0x4b7a, 0x7979, 0x4c7d, 0x537e, 0x6450, 0x726e, 0x5455, 0x5f4d, 0x7c38, 0x5150, 0x724d, 0x7752, 0x4a54, 0x5559, 0x585e, 0x4d59, 0x6e29, 0x763c, 0x4c5b, 0x7049, 0x7c7c, 0x6849, 0x747e, 0x677c, 0x575e, 0x5e5c, 0x702c, 0x4c7e, 0x4d61, 0x613a, 0x5b6f, 0x5a32, 0x5125, 0x5c38, 0x5876, 0x5124, 0x4d62, 0x5c6a, 0x7077, 0x704a, 0x503e, 0x5d5c, 0x5456, 0x5356, 0x6d50, 0x4d21, 0x5f35, 0x5f78, 0x5421, 0x4e32, 0x684a, 0x6b75, 0x6355, 0x7550, 0x7521, 0x5927, 0x652b, 0x664b, 0x7571, 0x6545, 0x7923, 0x605b, 0x766b, 0x4b71, 0x596a, 0x7522, 0x5751, 0x5178, 0x6a78, 0x6a79, 0x5a33, 0x6f5f, 0x716f, 0x6576, 0x6e3f, 0x6264, 0x503f, 0x7a2c, 0x7551, 0x6733, 0x693e, 0x724e, 0x5b34, 0x7c4e, 0x5d6e, 0x6734, 0x5734, 0x7734, 0x4d3e, 0x5a69, 0x4f30, 0x7759, 0x7366, 0x4e59, 0x4e2a, 0x4b48, 0x5027, 0x704b, 0x5047, 0x6445, 0x5b60, 0x555a, 0x5727, 0x6e40, 0x7876, 0x7552, 0x6d69, 0x593c, 0x6546, 0x7523, 0x5a54, 0x6227, 0x7b7c, 0x715c, 0x4a74, 0x687a, 0x4e69, 0x6978, 0x6265, 0x5039, 0x5472, 0x5126, 0x5f4e, 0x7c74, 0x532a, 0x4c2c, 0x6f60, 0x6565, 0x5055, 0x5b7c, 0x7c66, 0x4b7e, 0x6d6a, 0x5e31, 0x7963, 0x5422, 0x4f76, 0x5650, 0x556a, 0x716e, 0x7a4b, 0x6521, 0x5531, 0x4f6d, 0x6d6b, 0x5532, 0x553c, 0x7d62, 0x732d, 0x7d5b, 0x6930, 0x5127, 0x7d63, 0x4e33, 0x7d64, 0x7a4e, 0x4a30, 0x7727, 0x4f31, 0x6622, 0x7c36, 0x722d, 0x6f61, 0x732e, 0x5c46, 0x596b, 0x6860, 0x6128, 0x5576, 0x4f7d, 0x5e5d, 0x5951, 0x646a, 0x724f, 0x773f, 0x6266, 0x6228, 0x6356, 0x6d51, 0x6979, 0x5631, 0x5e32, 0x6068, 0x532b, 0x6b5c, 0x5f2f, 0x4a43, 0x6e7c, 0x7d43, 0x6b76, 0x4f32, 0x596c, 0x593d, 0x585f, 0x5438, 0x6b3e, 0x5d6f, 0x5d70, 0x5d71, 0x5d72, 0x593e, 0x7b46, 0x4f33, 0x6e7d, 0x642b, 0x5a45, 0x586c, 0x5128, 0x6229, 0x5e3c, 0x6735, 0x5b70, 0x6f62, 0x7170, 0x4f34, 0x5b71, 0x6031, 0x5f25, 0x7952, 0x677d, 0x6623, 0x7b71, 0x4b30, 0x722e, 0x4d67, 0x685c, 0x6757, 0x7740, 0x5063, 0x5a21, 0x4c3d, 0x5129, 0x5d4c, 0x637e, 0x512a, 0x682a, 0x6a36, 0x797a, 0x664c, 0x7658, 0x5447, 0x594b, 0x5952, 0x534b, 0x5877, 0x5a29, 0x7578, 0x5e5e, 0x722f, 0x7829, 0x5848, 0x6e41, 0x7941, 0x5d73, 0x6a7a, 0x763d, 0x613b, 0x4d3f, 0x7454, 0x664d, 0x7c4f, 0x7b22, 0x605c, 0x743b, 0x5a55, 0x7932, 0x7b72, 0x5b76, 0x5e5f, 0x5b72, 0x785c, 0x776e, 0x6b68, 0x527a, 0x713c, 0x7a5a, 0x5a6a, 0x5a46, 0x7741, 0x6736, 0x6547, 0x562c, 0x5c47, 0x6129, 0x622a, 0x5526, 0x5457, 0x7250, 0x6a7b, 0x605d, 0x7b73, 0x713d, 0x6267, 0x7d57, 0x4e48, 0x6a37, 0x7c40, 0x7d67, 0x776f, 0x5735, 0x6f3a, 0x715d, 0x5e33, 0x684b, 0x785d, 0x7b47, 0x5548, 0x575f, 0x5d29, 0x6931, 0x7a2d, 0x7659, 0x7a74, 0x782a, 0x666e, 0x4c5c, 0x613c, 0x606f, 0x693f, 0x7c7d, 0x664e, 0x6157, 0x664f, 0x7471, 0x6473, 0x647b, 0x7964, 0x6f63, 0x4f6e, 0x763e, 0x6032, 0x7c7e, 0x512b, 0x577a, 0x7b48, 0x6257, 0x5423, 0x7078, 0x5728, 0x6167, 0x533f, 0x6f64, 0x5745, 0x6b62, 0x7c67, 0x6422, 0x6268, 0x6650, 0x7b68, 0x7468, 0x6574, 0x743c, 0x7455, 0x5f36, 0x7c39, 0x6e42, 0x4a75, 0x6f65, 0x4b62, 0x5424, 0x5e60, 0x5a7d, 0x6446, 0x683e, 0x605e, 0x7634, 0x6a52, 0x797b, 0x6042, 0x4a64, 0x6737, 0x6a7d, 0x595d, 0x5a34, 0x6e2a, 0x7b69, 0x5b4b, 0x5a35, 0x713e, 0x532c, 0x7b49, 0x5f4f, 0x5340, 0x6357, 0x6f66, 0x7c50, 0x6940, 0x7553, 0x6c5c, 0x7737, 0x6a38, 0x5179, 0x5c48, 0x6a39, 0x715e, 0x5736, 0x4f35, 0x5928, 0x6c6e, 0x5d2a, 0x4d22, 0x682e, 0x613d, 0x7251, 0x6941, 0x527c, 0x5b35, 0x7367, 0x587e, 0x7c51, 0x6d32, 0x742f, 0x7b23, 0x7c41, 0x6e2b, 0x5425, 0x7472, 0x6e59, 0x7b4a, 0x4d63, 0x583b, 0x655b, 0x7877, 0x7654, 0x5729, 0x4b49, 0x6651, 0x704c, 0x582e, 0x7953, 0x557e, 0x583c, 0x7230, 0x622b, 0x7368, 0x6f42, 0x6d6c, 0x6738, 0x5a7e, 0x4c3e, 0x727c, 0x5a6b, 0x6258, 0x6d56, 0x5651, 0x6033, 0x7c52, 0x6b48, 0x5341, 0x704d, 0x4f77, 0x6d52, 0x5458, 0x5c49, 0x5771, 0x5f3b, 0x7325, 0x744d, 0x713f, 0x7831, 0x697a, 0x7b4b, 0x4a55, 0x7954, 0x774a, 0x5648, 0x7c68, 0x733d, 0x6e7e, 0x677e, 0x5342, 0x5336, 0x4c2d, 0x767a, 0x5632, 0x5258, 0x6758, 0x6325, 0x6739, 0x702d, 0x7b4c, 0x6b21, 0x5426, 0x7b4d, 0x553d, 0x715f, 0x767b, 0x5e34, 0x556b, 0x6548, 0x7b24, 0x5439, 0x5e61, 0x6423, 0x5737, 0x786e, 0x5e35, 0x5652, 0x7955, 0x673a, 0x6b55, 0x5577, 0x6f67, 0x613e, 0x7a2e, 0x5669, 0x566e, 0x673b, 0x6c4b, 0x5533, 0x4e34, 0x7b25, 0x616e, 0x7728, 0x7b4e, 0x583d, 0x7b7d, 0x7c69, 0x4f36, 0x6d47, 0x6e2c, 0x4c5d, 0x7627, 0x667a, 0x7524, 0x7d5c, 0x6d33, 0x4e49, 0x6f68, 0x613f, 0x7a5b, 0x4b63, 0x7729, 0x7b26, 0x5c39, 0x7140, 0x6d48, 0x6f43, 0x562d, 0x7d4e, 0x6821, 0x7b74, 0x5527, 0x7176, 0x6653, 0x4c5e, 0x7832, 0x5c6b, 0x7d36, 0x656a, 0x7160, 0x5b4c, 0x5d4d, 0x5448, 0x596d, 0x7525, 0x667b, 0x6654, 0x7d48, 0x5621, 0x7d3f, 0x7c53, 0x6f21, 0x673c, 0x516e, 0x6655, 0x6972, 0x5f30, 0x5860, 0x7c3a, 0x7d2f, 0x704e, 0x5b61, 0x6549, 0x6d34, 0x6043, 0x6358, 0x697b, 0x6a28, 0x7d37, 0x7b27, 0x6942, 0x7d77, 0x6259, 0x5c6c, 0x6822, 0x6670, 0x7d78, 0x7d79, 0x763f, 0x6727, 0x6657, 0x5473, 0x5449, 0x567a, 0x5772, 0x6140, 0x5b62, 0x6658, 0x673d, 0x704f, 0x733e, 0x622c, 0x7537, 0x6070, 0x7d38, 0x6368, 0x5427, 0x687c, 0x7a52, 0x786f, 0x5653, 0x5534, 0x7050, 0x7770, 0x6e33, 0x6a3a, 0x6a53, 0x6d49, 0x5d2b, 0x652c, 0x7d21, 0x5f50, 0x6c33, 0x5f51, 0x6d6d, 0x7838, 0x777a, 0x782b, 0x7460, 0x543a, 0x6433, 0x695a, 0x5e36, 0x593f, 0x5940, 0x566f, 0x594c, 0x5a2a, 0x5f65, 0x7765, 0x4c32, 0x5f79, 0x5760, 0x543b, 0x7d7a, 0x4c33, 0x5b73, 0x5f52, 0x4e4a, 0x6e5a, 0x6464, 0x7b4f, 0x4f37, 0x6e43, 0x4e6a, 0x622d, 0x5761, 0x7a75, 0x5549, 0x782c, 0x6759, 0x7369, 0x586d, 0x6344, 0x7071, 0x6865, 0x607a, 0x6e44, 0x595e, 0x6b22, 0x6b23, 0x7c42, 0x6a3b, 0x682b, 0x5e62, 0x6d6f, 0x6823, 0x4f71, 0x543c, 0x7c6a, 0x673e, 0x7c72, 0x5634, 0x622e, 0x5337, 0x7a4c, 0x7a5c, 0x6d35, 0x6163, 0x682c, 0x685d, 0x6f69, 0x743d, 0x4f38, 0x695b, 0x512c, 0x5a47, 0x6b49, 0x684c, 0x5e37, 0x563c, 0x5365, 0x7a5d, 0x5a56, 0x4a31, 0x5a48, 0x5f26, 0x7933, 0x7252, 0x4a44, 0x4e4b, 0x4d75, 0x7d30, 0x5528, 0x7141, 0x6269, 0x5c4a, 0x6c34, 0x7a40, 0x7b28, 0x5028, 0x5a6c, 0x596e, 0x607b, 0x6f6a, 0x7a5e, 0x6044, 0x4f39, 0x554a, 0x5762, 0x622f, 0x5738, 0x684d, 0x765a, 0x6f22, 0x625a, 0x767c, 0x7b50, 0x512d, 0x4d64, 0x512e, 0x5c6d, 0x684e, 0x7079, 0x4e35, 0x667c, 0x577b, 0x5056, 0x5d75, 0x7771, 0x767d, 0x5b77, 0x7b6a, 0x695c, 0x5941, 0x7572, 0x6045, 0x6a54, 0x7942, 0x6a3c, 0x5245, 0x7b51, 0x6740, 0x6b25, 0x5f7a, 0x6322, 0x5739, 0x6943, 0x687d, 0x682f, 0x7253, 0x7b29, 0x5825, 0x554b, 0x5048, 0x512f, 0x5763, 0x6046, 0x5622, 0x6d70, 0x5773, 0x7c54, 0x5a57, 0x4c5f, 0x7254, 0x5130, 0x4c60, 0x5b7d, 0x733f, 0x7051, 0x7c3b, 0x6230, 0x6625, 0x625b, 0x5f5e, 0x6047, 0x726f, 0x4c61, 0x566a, 0x6742, 0x4e36, 0x7340, 0x4d7e, 0x7b52, 0x7878, 0x777b, 0x683f, 0x6837, 0x6d36, 0x5c3a, 0x4c34, 0x7177, 0x6838, 0x4a76, 0x6424, 0x7456, 0x5f66, 0x5f27, 0x5f67, 0x6141, 0x6944, 0x5c4b, 0x6945, 0x6f23, 0x6b26, 0x4b23, 0x6369, 0x517b, 0x6f24, 0x6f6b, 0x5034, 0x4d23, 0x6866, 0x6f25, 0x534c, 0x5a6d, 0x573a, 0x7255, 0x7565, 0x596f, 0x7934, 0x5554, 0x7d4f, 0x5b63, 0x7161, 0x6c36, 0x7b7e, 0x5357, 0x5131, 0x4b31, 0x5132, 0x4b32, 0x7142, 0x7461, 0x7935, 0x6143, 0x6142, 0x6b77, 0x5f28, 0x4b4a, 0x6639, 0x785e, 0x792a, 0x4a77, 0x6d37, 0x5338, 0x7256, 0x5459, 0x6e45, 0x7270, 0x4a32, 0x5c3b, 0x7178, 0x6c37, 0x654a, 0x7640, 0x7d5d, 0x5463, 0x4c62, 0x7754, 0x5765, 0x5343, 0x5826, 0x7641, 0x5d76, 0x4d40, 0x655c, 0x654b, 0x6144, 0x6830, 0x7430, 0x736a, 0x5a6e, 0x573b, 0x6231, 0x572a, 0x567b, 0x645f, 0x4a56, 0x6b28, 0x5b7e, 0x7642, 0x6f3b, 0x547d, 0x6048, 0x6839, 0x6f26, 0x4d24, 0x5474, 0x5b21, 0x5b5c, 0x5b5d, 0x6e5c, 0x4b4b, 0x7c55, 0x4e6b, 0x4d41, 0x7b53, 0x792b, 0x7554, 0x5929, 0x695d, 0x5b4d, 0x5d4e, 0x6743, 0x6c4c, 0x796c, 0x4b4c, 0x607c, 0x5428, 0x6d53, 0x586f, 0x7257, 0x4a78, 0x5a6f, 0x5654, 0x594d, 0x586e, 0x7241, 0x5f53, 0x5a70, 0x626a, 0x607d, 0x5878, 0x772f, 0x5a36, 0x4a57, 0x7258, 0x5879, 0x7a5f, 0x4f6f, 0x5942, 0x7052, 0x6451, 0x7337, 0x7a60, 0x6f6c, 0x6232, 0x543d, 0x594e, 0x7462, 0x5429, 0x4d42, 0x675a, 0x7259, 0x592a, 0x583e, 0x5c2d, 0x626b, 0x567c, 0x4a79, 0x545a, 0x7457, 0x4c21, 0x4f3a, 0x7538, 0x5943, 0x5068, 0x6345, 0x6b78, 0x7231, 0x4f3b, 0x532d, 0x6861, 0x4e6c, 0x6034, 0x5e63, 0x5d77, 0x7232, 0x7376, 0x765b, 0x577e, 0x785f, 0x7772, 0x5029, 0x665a, 0x7526, 0x573c, 0x4c63, 0x665b, 0x5d5d, 0x5133, 0x6f6d, 0x565e, 0x6474, 0x616f, 0x5d78, 0x684f, 0x4a65, 0x5c21, 0x6035, 0x7c2c, 0x7c2d, 0x5827, 0x6d38, 0x5b36, 0x5670, 0x732f, 0x4d25, 0x5a71, 0x5828, 0x4c64, 0x5134, 0x4a58, 0x5a72, 0x7527, 0x7528, 0x6626, 0x556c, 0x5578, 0x5a73, 0x6346, 0x5e64, 0x5e65, 0x5135, 0x5136, 0x5137, 0x7233, 0x695e, 0x7053, 0x7234, 0x7054, 0x4b64, 0x7b54, 0x7566, 0x636a, 0x5e66, 0x5f54, 0x7879, 0x702e, 0x5138, 0x565f, 0x5057, 0x7c21, 0x6f6e, 0x5c58, 0x695f, 0x655d, 0x7d7b, 0x6049, 0x5649, 0x542a, 0x654c, 0x6960, 0x5058, 0x7c22, 0x543e, 0x6233, 0x5e67, 0x5c3c, 0x5236, 0x7555, 0x4e21, 0x7529, 0x5d79, 0x5d7a, 0x7055, 0x765f, 0x725a, 0x646b, 0x7271, 0x6c39, 0x7d7c, 0x612a, 0x4a59, 0x6f6f, 0x752a, 0x6c79, 0x782d, 0x7242, 0x7643, 0x5752, 0x7922, 0x7056, 0x707a, 0x7660, 0x6973, 0x7243, 0x542b, 0x4a33, 0x4d26, 0x4d43, 0x4d5a, 0x594f, 0x7644, 0x6e5d, 0x6744, 0x6234, 0x5f62, 0x675b, 0x6831, 0x7c2e, 0x654d, 0x7a6b, 0x4f3c, 0x4f62, 0x4d76, 0x6f70, 0x743e, 0x544d, 0x7338, 0x6921, 0x7272, 0x736b, 0x7057, 0x4f57, 0x4f5f, 0x6840, 0x6841, 0x4f63, 0x6922, 0x502a, 0x7341, 0x502b, 0x5464, 0x6f3c, 0x5821, 0x595f, 0x7357, 0x5c3d, 0x4c65, 0x6d71, 0x7162, 0x545b, 0x6235, 0x4a66, 0x532e, 0x4c66, 0x7153, 0x7567, 0x4a5a, 0x7b6e, 0x6145, 0x5f69, 0x6e5e, 0x7742, 0x5822, 0x5d2c, 0x702f, 0x563d, 0x612b, 0x7936, 0x5475, 0x5049, 0x6f27, 0x626c, 0x5b6a, 0x4e4c, 0x7568, 0x7755, 0x534d, 0x737e, 0x5035, 0x607e, 0x5f7b, 0x665d, 0x6824, 0x4b4d, 0x6f28, 0x6e34, 0x5a58, 0x5139, 0x5f29, 0x7330, 0x4c44, 0x4e37, 0x6f29, 0x5f55, 0x6d57, 0x6e46, 0x6f3d, 0x7c56, 0x5b74, 0x6f2a, 0x7839, 0x7569, 0x6359, 0x6146, 0x543f, 0x5e68, 0x706a, 0x7342, 0x532f, 0x4a5b, 0x7c57, 0x6d58, 0x6147, 0x7458, 0x5633, 0x5d2d, 0x553e, 0x7143, 0x6e5f, 0x566b, 0x7459, 0x5766, 0x5a37, 0x5d7b, 0x5d4f, 0x5823, 0x5a59, 0x7058, 0x6f44, 0x6158, 0x7154, 0x6d72, 0x555b, 0x555c, 0x7344, 0x4b57, 0x6236, 0x6f71, 0x7b55, 0x5358, 0x5d50, 0x7059, 0x4b33, 0x555d, 0x4d27, 0x502c, 0x513a, 0x7144, 0x6533, 0x7b75, 0x6961, 0x7d60, 0x7c3c, 0x5a22, 0x5a23, 0x5221, 0x526f, 0x626d, 0x5e69, 0x4e5c, 0x7235, 0x5064, 0x5d51, 0x6148, 0x5b37, 0x5f63, 0x6d39, 0x7145, 0x734f, 0x572b, 0x612c, 0x636b, 0x6e47, 0x6149, 0x4a7a, 0x707b, 0x7a61, 0x705a, 0x4c67, 0x5a74, 0x4c3f, 0x4e6d, 0x5529, 0x7a62, 0x5065, 0x6b56, 0x6c5f, 0x5f7c, 0x7756, 0x5e6a, 0x4b34, 0x6f3e, 0x4c35, 0x4f3d, 0x6f72, 0x6237, 0x4c68, 0x707c, 0x5660, 0x7146, 0x6238, 0x6b2b, 0x4b35, 0x5851, 0x744e, 0x7377, 0x5746, 0x513b, 0x772a, 0x6d4a, 0x5753, 0x587a, 0x7645, 0x514c, 0x5d7c, 0x5f7d, 0x7965, 0x604a, 0x727d, 0x5330, 0x7473, 0x5a49, 0x665e, 0x783a, 0x6850, 0x587b, 0x6a55, 0x5623, 0x7646, 0x725b, 0x647c, 0x6832, 0x5a5a, 0x725c, 0x7b56, 0x6932, 0x6e2d, 0x7a63, 0x5c6e, 0x756a, 0x6660, 0x707d, 0x572c, 0x7545, 0x6e60, 0x5b65, 0x5d5e, 0x5970, 0x6923, 0x7179, 0x7244, 0x604b, 0x6924, 0x6239, 0x6331, 0x7c6b, 0x4d28, 0x4c36, 0x705b, 0x663a, 0x4d29, 0x7343, 0x6159, 0x6f2b, 0x6745, 0x6069, 0x7345, 0x5440, 0x553f, 0x5d2e, 0x797c, 0x4c40, 0x6522, 0x4e38, 0x5852, 0x7956, 0x712a, 0x4e51, 0x7647, 0x5b6b, 0x5f7e, 0x5861, 0x7773, 0x5767, 0x547e, 0x513c, 0x654f, 0x4b36, 0x5a38, 0x4d44, 0x563e, 0x623a, 0x4f58, 0x604c, 0x6b79, 0x7d7d, 0x5768, 0x4b58, 0x6962, 0x683a, 0x6347, 0x6c4d, 0x6c4e, 0x563f, 0x6327, 0x5f56, 0x7d68, 0x6e61, 0x7628, 0x5d7d, 0x783b, 0x6851, 0x7957, 0x4e6e, 0x6c4f, 0x6925, 0x5655, 0x4d45, 0x6d3a, 0x513d, 0x4f3e, 0x6c3b, 0x5231, 0x4c69, 0x5944, 0x697c, 0x513e, 0x6c3c, 0x652d, 0x7730, 0x4c6a, 0x5344, 0x5640, 0x567d, 0x6121, 0x5e3d, 0x7629, 0x5a24, 0x5624, 0x7546, 0x6122, 0x6946, 0x7245, 0x7469, 0x566c, 0x6b53, 0x6c3d, 0x625c, 0x5e6b, 0x705c, 0x6b3f, 0x574e, 0x513f, 0x752b, 0x797d, 0x4a5c, 0x4d46, 0x7236, 0x5d7e, 0x4c37, 0x5b38, 0x5069, 0x4e5d, 0x6b40, 0x7d22, 0x784b, 0x6a56, 0x7130, 0x5b4e, 0x7743, 0x5b4f, 0x4b24, 0x7860, 0x7b57, 0x6b4a, 0x6021, 0x4e4d, 0x545c, 0x7d58, 0x5276, 0x7237, 0x7a76, 0x762a, 0x7a77, 0x5866, 0x7431, 0x6852, 0x4a45, 0x4c6b, 0x626e, 0x623b, 0x772d, 0x7861, 0x736c, 0x5e21, 0x647d, 0x636c, 0x5d2f, 0x5d30, 0x4b37, 0x6853, 0x6123, 0x5260, 0x707e, 0x6926, 0x4b72, 0x6d73, 0x5c59, 0x604d, 0x775a, 0x5b39, 0x4c2e, 0x5a5b, 0x4d47, 0x5d31, 0x582f, 0x6323, 0x4e6f, 0x7273, 0x7833, 0x604e, 0x757d, 0x6b6c, 0x5345, 0x7c6c, 0x525b, 0x546b, 0x5e22, 0x6566, 0x7030, 0x5544, 0x6d74, 0x636d, 0x6842, 0x6d75, 0x577c, 0x6d3b, 0x762b, 0x7238, 0x7648, 0x5366, 0x725d, 0x4f3f, 0x6b2c, 0x4f40, 0x6628, 0x7d69, 0x4f41, 0x605f, 0x5e6c, 0x6022, 0x743f, 0x626f, 0x5971, 0x7147, 0x4b38, 0x797e, 0x5b3a, 0x5a75, 0x766c, 0x5a5c, 0x7a64, 0x604f, 0x5d32, 0x6629, 0x6f73, 0x736d, 0x6b7a, 0x7966, 0x4a5d, 0x555e, 0x4a5e, 0x5f64, 0x667d, 0x752c, 0x6475, 0x6963, 0x6d4b, 0x4f64, 0x5853, 0x5d33, 0x546c, 0x7239, 0x5f37, 0x4b4e, 0x7b58, 0x5059, 0x5d52, 0x7774, 0x675c, 0x6425, 0x7c23, 0x5b3b, 0x723a, 0x697d, 0x504a, 0x7556, 0x5945, 0x6434, 0x6d27, 0x6a3d, 0x667e, 0x7744, 0x752d, 0x5960, 0x4a34, 0x7862, 0x4f42, 0x6c3e, 0x6534, 0x4d48, 0x6e48, 0x6748, 0x4d49, 0x7937, 0x7168, 0x5972, 0x5b75, 0x4a35, 0x5946, 0x5849, 0x592b, 0x6d3c, 0x5854, 0x5c5a, 0x623c, 0x7c6d, 0x6c60, 0x527e, 0x6947, 0x662a, 0x6270, 0x7a3b, 0x752e, 0x7b2a, 0x6c7b, 0x6c3f, 0x7c58, 0x5465, 0x7943, 0x6e62, 0x5769, 0x6d76, 0x5e6d, 0x4c6c, 0x636e, 0x6854, 0x7a78, 0x5d34, 0x6435, 0x5830, 0x5855, 0x746a, 0x4e39, 0x5661, 0x4f52, 0x5036, 0x4e22, 0x736e, 0x7378, 0x5c4c, 0x504b, 0x7c24, 0x4d4a, 0x5754, 0x5e23, 0x6460, 0x6e49, 0x625d, 0x757e, 0x542c, 0x5551, 0x5870, 0x7843, 0x6a57, 0x7557, 0x583f, 0x7d40, 0x6b2d, 0x552a, 0x6728, 0x6e4a, 0x4a67, 0x7863, 0x545d, 0x6a58, 0x7b59, 0x6d77, 0x6535, 0x502d, 0x7171, 0x623d, 0x6348, 0x5955, 0x5f2a, 0x5b3c, 0x7864, 0x717a, 0x6536, 0x736f, 0x7b5a, 0x6160, 0x592c, 0x756b, 0x6036, 0x6948, 0x4b4f, 0x6349, 0x5e6e, 0x623e, 0x5c6f, 0x5625, 0x6271, 0x567e, 0x5921, 0x5840, 0x5c5b, 0x6d3d, 0x5f38, 0x6a25, 0x572d, 0x7379, 0x6d78, 0x7547, 0x614a, 0x6b63, 0x725e, 0x784c, 0x6a59, 0x5346, 0x5b66, 0x752f, 0x4e70, 0x697e, 0x7b36, 0x6272, 0x4f72, 0x7739, 0x5973, 0x614b, 0x5a5d, 0x5a39, 0x6b7b, 0x4b39, 0x6d79, 0x6060, 0x7440, 0x7d3c, 0x5f31, 0x636f, 0x6023, 0x7d39, 0x7031, 0x4d4b, 0x6d3e, 0x5540, 0x6370, 0x6d7a, 0x6964, 0x556d, 0x675d, 0x5476, 0x6537, 0x5b67, 0x623f, 0x6e4b, 0x5774, 0x705d, 0x4e2b, 0x675e, 0x5656, 0x614c, 0x6833, 0x656e, 0x5c22, 0x6050, 0x5535, 0x5521, 0x7b5b, 0x794b, 0x4b73, 0x7425, 0x7a48, 0x5657, 0x6965, 0x7b5c, 0x7d50, 0x7b76, 0x5a25, 0x5b3d, 0x6c62, 0x4d77, 0x705e, 0x7649, 0x5e6f, 0x5331, 0x7c6e, 0x6843, 0x7148, 0x4e71, 0x796d, 0x7274, 0x6436, 0x7539, 0x5c70, 0x6371, 0x6825, 0x723b, 0x5e24, 0x5a4c, 0x4a69, 0x635a, 0x7c59, 0x6a5a, 0x7944, 0x6324, 0x7b5d, 0x6f4a, 0x6844, 0x554c, 0x6b57, 0x592d, 0x7b2b, 0x5359, 0x5522, 0x765e, 0x5a76, 0x6051, 0x6928, 0x7579, 0x7a2f, 0x6b7c, 0x606a, 0x6332, 0x5545, 0x7163, 0x556e, 0x4d4c, 0x6d59, 0x5841, 0x7a6c, 0x716b, 0x7a3c, 0x6662, 0x7a65, 0x627a, 0x4a36, 0x6437, 0x6a5b, 0x757a, 0x7b2c, 0x4f43, 0x6b7d, 0x787a, 0x5f39, 0x6171, 0x5224, 0x757b, 0x505a, 0x505b, 0x6a3e, 0x5931, 0x4a37, 0x5367, 0x7865, 0x5332, 0x6240, 0x725f, 0x4d65, 0x792c, 0x4d4d, 0x6e2e, 0x562e, 0x576a, 0x6760, 0x6b2e, 0x4f59, 0x5c4d, 0x6d7b, 0x5e70, 0x576b, 0x5e25, 0x5f57, 0x5b50, 0x5b51, 0x5523, 0x7032, 0x5c5c, 0x4a68, 0x7866, 0x5c4e, 0x6a5c, 0x5b52, 0x6933, 0x775b, 0x6328, 0x572e, 0x6061, 0x4b3a, 0x6551, 0x505c, 0x5541, 0x584a, 0x6329, 0x6024, 0x6929, 0x5347, 0x5c5d, 0x782e, 0x4c38, 0x502e, 0x5872, 0x634a, 0x4c2f, 0x542d, 0x7651, 0x504c, 0x4a46, 0x5542, 0x4e3a, 0x4a47, 0x7a30, 0x5f58, 0x753a, 0x656b, 0x6f74, 0x5d35, 0x4d2a, 0x6372, 0x7b77, 0x7750, 0x7d3a, 0x7d61, 0x767e, 0x5140, 0x6845, 0x6438, 0x6168, 0x4c41, 0x526d, 0x5b3e, 0x6062, 0x7a49, 0x614d, 0x4a38, 0x7260, 0x7149, 0x5e71, 0x705f, 0x7844, 0x6e4c, 0x5e72, 0x6749, 0x6273, 0x6761, 0x634b, 0x634c, 0x4f78, 0x6f2c, 0x7d7e, 0x7c25, 0x7a31, 0x5f59, 0x6052, 0x745a, 0x714a, 0x4e23, 0x723c, 0x6c63, 0x6025, 0x772b, 0x6b2f, 0x655e, 0x6124, 0x4d2b, 0x5974, 0x6826, 0x4d4e, 0x6169, 0x7c6f, 0x6063, 0x6241, 0x4e24, 0x5e26, 0x6b7e, 0x6b5d, 0x7060, 0x745b, 0x6274, 0x5348, 0x746b, 0x6e35, 0x7558, 0x555f, 0x5665, 0x6b30, 0x7463, 0x634d, 0x7474, 0x7a32, 0x6f75, 0x4a5f, 0x6b31, 0x6d3f, 0x7d49, 0x6426, 0x7924, 0x7033, 0x656c, 0x5167, 0x5947, 0x6457, 0x6a5d, 0x5477, 0x5a3a, 0x5a4d, 0x794c, 0x615a, 0x5b3f, 0x4c45, 0x6c50, 0x4b3b, 0x5e73, 0x692a, 0x5948, 0x6e63, 0x573d, 0x4f44, 0x504d, 0x7c26, 0x717b, 0x7d52, 0x5141, 0x635b, 0x5349, 0x5c4f, 0x4c6d, 0x5e27, 0x663b, 0x6c21, 0x4c39, 0x7b5e, 0x6762, 0x5441, 0x5c28, 0x6242, 0x7358, 0x6553, 0x7359, 0x7346, 0x4d5b, 0x4d2c, 0x7c43, 0x5467, 0x5142, 0x7925, 0x6855, 0x634e, 0x544a, 0x5f5a, 0x7b5f, 0x6763, 0x787b, 0x634f, 0x7530, 0x5867, 0x5949, 0x782f, 0x6f76, 0x5d36, 0x6e2f, 0x4d78, 0x5e38, 0x7c27, 0x777c, 0x7731, 0x4e3b, 0x7421, 0x6e4d, 0x612e, 0x6c43, 0x4f7e, 0x783f, 0x5862, 0x5368, 0x5e28, 0x7464, 0x6c42, 0x5975, 0x7945, 0x5d53, 0x5671, 0x6c7c, 0x7c70, 0x6d40, 0x4a39, 0x6e64, 0x7261, 0x5e39, 0x5672, 0x5e74, 0x5f5b, 0x5b53, 0x7a67, 0x5863, 0x7441, 0x5d37, 0x7275, 0x542e, 0x5673, 0x5d38, 0x4f45, 0x5f5f, 0x723e, 0x7621, 0x6b4b, 0x717c, 0x7347, 0x606b, 0x6d7c, 0x615b, 0x6e65, 0x5e75, 0x7a53, 0x714b, 0x502f, 0x5d39, 0x5143, 0x7531, 0x6a46, 0x7061, 0x762c, 0x7559, 0x706b, 0x5d3a, 0x723f, 0x7745, 0x5b22, 0x7276, 0x4a3a, 0x7775, 0x4b65, 0x6e66, 0x6053, 0x4e25, 0x5658, 0x542f, 0x6949, 0x534e, 0x7442, 0x4b66, 0x7121, 0x6b32, 0x7122, 0x6b33, 0x7034, 0x4b74, 0x5430, 0x7332, 0x7b37, 0x756c, 0x6e67, 0x7432, 0x756d, 0x4f73, 0x7062, 0x6e4e, 0x714c, 0x6538, 0x5775, 0x6373, 0x4f65, 0x4f46, 0x7333, 0x6458, 0x4f79, 0x4f5a, 0x7a4d, 0x6663, 0x7262, 0x756e, 0x4a3b, 0x635c, 0x4e72, 0x5659, 0x6e30, 0x7465, 0x5842, 0x5c50, 0x4c6e, 0x5560, 0x764a, 0x7d4a, 0x5856, 0x744f, 0x5626, 0x5c3e, 0x5b54, 0x5747, 0x727e, 0x714d, 0x6243, 0x5c5e, 0x5c5f, 0x6f2d, 0x662b, 0x795d, 0x6a3f, 0x6f2e, 0x7450, 0x4e73, 0x662c, 0x4e5e, 0x5579, 0x6374, 0x4d50, 0x5538, 0x777d, 0x5c29, 0x5e76, 0x5c2a, 0x7263, 0x6934, 0x525c, 0x6966, 0x6376, 0x674a, 0x504e, 0x5a77, 0x4a3c, 0x6e68, 0x5a5e, 0x7277, 0x627b, 0x4c26, 0x5a3b, 0x6e69, 0x755a, 0x775c, 0x616a, 0x4e41, 0x5431, 0x7d31, 0x663d, 0x7b2d, 0x7867, 0x614e, 0x7762, 0x756f, 0x4f47, 0x5432, 0x4c6f, 0x5468, 0x6e4f, 0x7757, 0x6026, 0x5641, 0x615c, 0x7063, 0x7164, 0x5c71, 0x5627, 0x7475, 0x714e, 0x7264, 0x5030, 0x6c6f, 0x793a, 0x6b35, 0x546d, 0x6244, 0x6967, 0x6b34, 0x6a21, 0x783c, 0x4e26, 0x7946, 0x7c5a, 0x5433, 0x5339, 0x6a5e, 0x692b, 0x6161, 0x534f, 0x7476, 0x6a40, 0x614f, 0x4c3a, 0x6e6a, 0x7064, 0x7334, 0x546e, 0x7240, 0x7165, 0x7443, 0x6054, 0x6b36, 0x5721, 0x4b68, 0x792d, 0x692d, 0x5864, 0x7a33, 0x6245, 0x7c3d, 0x6c44, 0x5831, 0x5c2b, 0x5524, 0x6b69, 0x683b, 0x5857, 0x7b2e, 0x5161, 0x5b40, 0x753e, 0x5e77, 0x4a7b, 0x7746, 0x4f48, 0x6150, 0x6e50, 0x6974, 0x4e74, 0x554d, 0x4f5b, 0x5d3b, 0x4e2c, 0x6968, 0x5434, 0x6447, 0x755b, 0x7a41, 0x5e29, 0x5478, 0x6f77, 0x5333, 0x6b37, 0x6f78, 0x755c, 0x6d4c, 0x5b55, 0x714f, 0x7150, 0x7532, 0x592e, 0x552c, 0x6246, 0x7d23, 0x7b65, 0x5f2b, 0x6275, 0x762d, 0x7533, 0x7035, 0x6125, 0x755d, 0x6c22, 0x6d7d, 0x7534, 0x7b38, 0x5b23, 0x564a, 0x4b59, 0x6554, 0x737a, 0x6b38, 0x6037, 0x576c, 0x716c, 0x652f, 0x5561, 0x576d, 0x5151, 0x6172, 0x6f79, 0x5d3c, 0x765c, 0x7065, 0x7444, 0x6969, 0x737b, 0x546f, 0x4c22, 0x777e, 0x5f3c, 0x6b4d, 0x5037, 0x5642, 0x682d, 0x6f2f, 0x4b25, 0x4b69, 0x7a68, 0x4c46, 0x6667, 0x6a47, 0x5b24, 0x4f49, 0x627c, 0x6f7a, 0x6b5e, 0x7548, 0x545e, 0x6055, 0x6f30, 0x6247, 0x592f, 0x7967, 0x6765, 0x4f4a, 0x6151, 0x6248, 0x6f7b, 0x7a79, 0x5c72, 0x6027, 0x7868, 0x4b6a, 0x4b3c, 0x5662, 0x755e, 0x755f, 0x6e36, 0x6276, 0x534a, 0x6f7c, 0x5144, 0x6f31, 0x5145, 0x505e, 0x5961, 0x6038, 0x4d51, 0x7339, 0x674c, 0x5628, 0x4e27, 0x5435, 0x6448, 0x5334, 0x6b39, 0x4b75, 0x765d, 0x7123, 0x4c47, 0x694a, 0x6170, 0x7560, 0x7b2f, 0x4b51, 0x7b60, 0x7265, 0x6c70, 0x706c, 0x6e6b, 0x694b, 0x4c70, 0x572f, 0x7321, 0x7c75, 0x7124, 0x6056, 0x6f32, 0x7451, 0x7721, 0x7151, 0x4a7c, 0x4a7d, 0x4e4e, 0x7348, 0x733a, 0x6d7e, 0x5a26, 0x606c, 0x784d, 0x4b52, 0x6b4e, 0x7958, 0x7959, 0x4a60, 0x5a4a, 0x4b26, 0x4a48, 0x796e, 0x5b6c, 0x5031, 0x556f, 0x6673, 0x6722, 0x6459, 0x6461, 0x7c44, 0x796f, 0x4f74, 0x7766, 0x4e3c, 0x7445, 0x5c23, 0x5d3d, 0x7446, 0x7821, 0x6856, 0x5b41, 0x7066, 0x6439, 0x766d, 0x792e, 0x5d3e, 0x5730, 0x5868, 0x4b3d, 0x795a, 0x784e, 0x7970, 0x606d, 0x6333, 0x7433, 0x6a42, 0x7266, 0x7036, 0x5b56, 0x6b64, 0x7267, 0x5755, 0x5436, 0x7968, 0x5741, 0x6555, 0x696a, 0x574c, 0x5369, 0x6249, 0x7c5b, 0x4d2d, 0x4c30, 0x6a22, 0x6476, 0x5040, 0x7037, 0x6e21, 0x5776, 0x624a, 0x624b, 0x7a4f, 0x6b5f, 0x564b, 0x7434, 0x6d4d, 0x6452, 0x6a29, 0x643a, 0x7322, 0x4d52, 0x764b, 0x7166, 0x6d41, 0x683c, 0x6e51, 0x7067, 0x624c, 0x642a, 0x7561, 0x6d5a, 0x576e, 0x5171, 0x696b, 0x696c, 0x6064, 0x5a27, 0x5d54, 0x6a23, 0x5643, 0x5674, 0x5a5f, 0x6f33, 0x624d, 0x6f7d, 0x7268, 0x6f45, 0x6767, 0x577d, 0x674e, 0x5f5c, 0x7947, 0x5976, 0x5f2c, 0x565a, 0x5c24, 0x7038, 0x557a, 0x6477, 0x5644, 0x746c, 0x6f7e, 0x7021, 0x5e2a, 0x5a3c, 0x587c, 0x7a54, 0x6c65, 0x7c28, 0x6c66, 0x584b, 0x7b39, 0x6453, 0x4d79, 0x4f53, 0x4a6a, 0x4f54, 0x783d, 0x7447, 0x6a5f, 0x795b, 0x5437, 0x6b65, 0x6152, 0x6a24, 0x7a42, 0x7b61, 0x7a6d, 0x7022, 0x4c71, 0x7a23, 0x6277, 0x624e, 0x6975, 0x616b, 0x6768, 0x6857, 0x5a78, 0x544b, 0x7776, 0x5645, 0x5469, 0x7a7a, 0x4c72, 0x775d, 0x5e3a, 0x4e28, 0x7039, 0x647e, 0x6449, 0x6454, 0x6a43, 0x6f34, 0x573e, 0x7b62, 0x4d53, 0x6f35, 0x7a69, 0x7926, 0x5f3d, 0x7747, 0x787d, 0x787c, 0x5e2b, 0x5b68, 0x635d, 0x6162, 0x5146, 0x7650, 0x6b66, 0x5a79, 0x6c47, 0x5e78, 0x7869, 0x635e, 0x4e75, 0x7a43, 0x6557, 0x6c48, 0x7349, 0x643b, 0x662e, 0x6f36, 0x5c3f, 0x4e3d, 0x5843, 0x504f, 0x4f7a, 0x734a, 0x6057, 0x5147, 0x692e, 0x683d, 0x7a44, 0x624f, 0x7a45, 0x7938, 0x5c60, 0x7b30, 0x5829, 0x655f, 0x7927, 0x766e, 0x764c, 0x6278, 0x6c71, 0x5a60, 0x7152, 0x524c, 0x4f4b, 0x4a3d, 0x5d3f, 0x766f, 0x5e79, 0x7a34, 0x552d, 0x7167, 0x5e3e, 0x5c40, 0x5148, 0x5149, 0x783e, 0x4b76, 0x5479, 0x7562, 0x6153, 0x5869, 0x787e, 0x4f4c, 0x7d24, 0x4e76, 0x7a50, 0x4c73, 0x663e, 0x762e, 0x5570, 0x514a, 0x7c3e, 0x5571, 0x4d69, 0x7a35, 0x6250, 0x7477, 0x4d54, 0x6723, 0x5b25, 0x6251, 0x5722, 0x7763, 0x6a26, 0x5021, 0x4e5a, 0x7b6b, 0x5b26, 0x5b5e, 0x5865, 0x6a60, 0x582a, 0x6560, 0x565b, 0x6f46, 0x786a, 0x6455, 0x4e77, 0x6058, 0x576f, 0x746d, 0x4d66, 0x4c74, 0x7563, 0x644a, 0x5c61, 0x7948, 0x7c3f, 0x6827, 0x5844, 0x4b3e, 0x5c2e, 0x5777, 0x7068, 0x5d40, 0x4f4d, 0x5c73, 0x5930, 0x6669, 0x643c, 0x6a44, 0x646c, 0x6465, 0x7b78, 0x4c3b, 0x643d, 0x4d5c, 0x5977, 0x5d5f, 0x6d4e, 0x5950, 0x6523, 0x794d, 0x4d2e, 0x4f4e, 0x762f, 0x7d53, 0x6b6d, 0x565c, 0x6524, 0x5536, 0x565d, 0x7969, 0x6724, 0x5663, 0x514b, 0x5664, 0x5572, 0x5e7a, 0x5778, 0x586a, 0x4f55, 0x587d, 0x582b, 0x7d4b, 0x7c5c, 0x6028, 0x5573, 0x7d59, 0x4c23, 0x5979, 0x536a, 0x7575, 0x6f47, 0x535a, 0x5a3d, 0x6828, 0x5c2f, 0x7023, 0x4d55, 0x6029, 0x5e2c, 0x703a, 0x6e31, 0x6e32, 0x764d, 0x6e52, 0x5646, 0x6065, 0x733b, 0x6561, 0x644b, 0x5723, 0x5b42, 0x4a7e, 0x4f4f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e, 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e, 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a, 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242, 0x3243, 0x3244, 0x3245, 0x3246, 0x3247, 0x3248, 0x3249, 0x324a, 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3251, 0x3252, 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a, 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324, 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c, 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334, 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c, 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344, 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c, 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354, 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c, 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364, 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c, 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374, 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426, 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e, 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436, 0x3437, 0x3438, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e, 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446, 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e, 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456, 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e, 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466, 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e, 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476, 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e, 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528, 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530, 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538, 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540, 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548, 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558, 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570, 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578, 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622, 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a, 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632, 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a, 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642, 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a, 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652, 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a, 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662, 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a, 0x366b, 0x366c, 0x366d, 0x366e, 0x366f, 0x3670, 0x3671, 0x3672, 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a, 0x367b, 0x367c, 0x367d, 0x367e, 0x3721, 0x3722, 0x3723, 0x3724, 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c, 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734, 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c, 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c, 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756, 0x3757, 0x3758, 0x3759, 0x375a, 0x375b, 0x375c, 0x375d, 0x375e, 0x375f, 0x3760, 0x3761, 0x3762, 0x3763, 0x3764, 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c, 0x376d, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773, 0x3774, 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b, 0x377c, 0x377d, 0x377e, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e, 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836, 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e, 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846, 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e, 0x384f, 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856, 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e, 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866, 0x3867, 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f, 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877, 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928, 0x3929, 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930, 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938, 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940, 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950, 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958, 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960, 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968, 0x3969, 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970, 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978, 0x3979, 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22, 0x3a23, 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a, 0x3a2b, 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a32, 0x3a33, 0x3a34, 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a39, 0x3a3a, 0x3a3b, 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42, 0x3a43, 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a, 0x3a4b, 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52, 0x3a53, 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a, 0x3a5b, 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62, 0x3a63, 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a, 0x3a6b, 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72, 0x3a73, 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a, 0x3a7b, 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24, 0x3b25, 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2d, 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34, 0x3b35, 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3c, 0x3b3d, 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45, 0x3b46, 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b4b, 0x3b4c, 0x3b4d, 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b54, 0x3b55, 0x3b56, 0x3b57, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c, 0x3b5d, 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64, 0x3b65, 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c, 0x3b6d, 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x3b73, 0x3b74, 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b79, 0x3b7a, 0x3b7b, 0x3b7c, 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26, 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2d, 0x3c2e, 0x3c2f, 0x3c30, 0x3c31, 0x3c32, 0x3c33, 0x3c34, 0x3c35, 0x3c36, 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e, 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46, 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e, 0x3c4f, 0x3c50, 0x3c51, 0x3c52, 0x3c53, 0x3c54, 0x3c55, 0x3c56, 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e, 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66, 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e, 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76, 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e, 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28, 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d30, 0x3d31, 0x3d32, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38, 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40, 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48, 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50, 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58, 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60, 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68, 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70, 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78, 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22, 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a, 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32, 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a, 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42, 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a, 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52, 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a, 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62, 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a, 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72, 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a, 0x3e7b, 0x3e7c, 0x3e7d, 0x3e7e, 0x3f21, 0x3f22, 0x3f23, 0x3f24, 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c, 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34, 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c, 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44, 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c, 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54, 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c, 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64, 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c, 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74, 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c, 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026, 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e, 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036, 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e, 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046, 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e, 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056, 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e, 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066, 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e, 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076, 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e, 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128, 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130, 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138, 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140, 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148, 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150, 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158, 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160, 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168, 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170, 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178, 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a, 0x422b, 0x422c, 0x422d, 0x422e, 0x422f, 0x4230, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238, 0x4239, 0x423a, 0x423b, 0x423c, 0x423d, 0x423e, 0x423f, 0x4240, 0x4241, 0x4242, 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249, 0x424a, 0x424b, 0x424c, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252, 0x4253, 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a, 0x425b, 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262, 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a, 0x426b, 0x426c, 0x426d, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272, 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a, 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324, 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c, 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334, 0x4335, 0x4336, 0x4337, 0x4338, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d, 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347, 0x4348, 0x4349, 0x434a, 0x434b, 0x434c, 0x434d, 0x434e, 0x434f, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355, 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x435c, 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364, 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c, 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374, 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c, 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426, 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e, 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436, 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e, 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e, 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456, 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e, 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466, 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e, 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476, 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e, 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528, 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530, 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538, 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540, 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548, 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f, 0x4550, 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558, 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560, 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568, 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570, 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578, 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622, 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a, 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632, 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a, 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642, 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a, 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652, 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a, 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4661, 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669, 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671, 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679, 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723, 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b, 0x472c, 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734, 0x4735, 0x4736, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c, 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744, 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c, 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754, 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c, 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764, 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c, 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774, 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c, 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826, 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e, 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836, 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e, 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, 0x484e, 0x484f, 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856, 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e, 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866, 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e, 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876, 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e, 0x4b50, 0x4b56, 0x4b67, 0x4d4f, 0x4d68, 0x4e2d, 0x4f7b, 0x5022, 0x5038, 0x5050, 0x505d, 0x5154, 0x5155, 0x5158, 0x515b, 0x515c, 0x515d, 0x515e, 0x515f, 0x5160, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5168, 0x5169, 0x516a, 0x516b, 0x516d, 0x516f, 0x5170, 0x5172, 0x5176, 0x517a, 0x517c, 0x517d, 0x517e, 0x5222, 0x5223, 0x5227, 0x5228, 0x5229, 0x522a, 0x522b, 0x522d, 0x5232, 0x523e, 0x5242, 0x5243, 0x5244, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a, 0x524b, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252, 0x5253, 0x5254, 0x5255, 0x5256, 0x5257, 0x5259, 0x525a, 0x525e, 0x525f, 0x5261, 0x5262, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269, 0x526a, 0x526b, 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275, 0x5277, 0x5278, 0x5466, 0x547c, 0x5525, 0x552b, 0x552e, 0x5638, 0x564d, 0x574b, 0x5764, 0x5b45, 0x5b64, 0x5c25, 0x5d25, 0x5d55, 0x5d74, 0x5e7c, 0x5e7e, 0x5f33, 0x5f61, 0x5f68, 0x6071, 0x612d, 0x616d, 0x6375, 0x6421, 0x6429, 0x652e, 0x6531, 0x6532, 0x6539, 0x653b, 0x653c, 0x6544, 0x654e, 0x6550, 0x6552, 0x6556, 0x657a, 0x657b, 0x657c, 0x657e, 0x6621, 0x6624, 0x6627, 0x662d, 0x662f, 0x6630, 0x6631, 0x6633, 0x6637, 0x6638, 0x663c, 0x6644, 0x6646, 0x6647, 0x664a, 0x6652, 0x6656, 0x6659, 0x665c, 0x665f, 0x6661, 0x6664, 0x6665, 0x6666, 0x6668, 0x666a, 0x666b, 0x666c, 0x666f, 0x6671, 0x6672, 0x6675, 0x6676, 0x6677, 0x6679, 0x6721, 0x6726, 0x6729, 0x672a, 0x672c, 0x672d, 0x6730, 0x673f, 0x6741, 0x6746, 0x6747, 0x674b, 0x674d, 0x674f, 0x6750, 0x6753, 0x675f, 0x6764, 0x6766, 0x6777, 0x6867, 0x6868, 0x6870, 0x6871, 0x6877, 0x6879, 0x687b, 0x687e, 0x6927, 0x692c, 0x694c, 0x6977, 0x6a41, 0x6a65, 0x6a74, 0x6a77, 0x6a7c, 0x6a7e, 0x6b24, 0x6b27, 0x6b29, 0x6b2a, 0x6b3a, 0x6b3b, 0x6b3d, 0x6b41, 0x6b42, 0x6b46, 0x6b47, 0x6b4c, 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b58, 0x6c26, 0x6c27, 0x6c2a, 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c35, 0x6c38, 0x6c3a, 0x6c40, 0x6c41, 0x6c45, 0x6c46, 0x6c49, 0x6c4a, 0x6c55, 0x6c5d, 0x6c5e, 0x6c61, 0x6c64, 0x6c67, 0x6c68, 0x6c77, 0x6c78, 0x6c7a, 0x6d21, 0x6d22, 0x6d23, 0x6d6e, 0x6e5b, 0x723d, 0x727a, 0x7331, 0x7427, 0x746e, 0x7674, 0x7676, 0x7738, 0x7748, 0x7753, 0x785b, 0x7870, 0x7a21, 0x7a22, 0x7a66, 0x7c29, 0x2321, 0x2322, 0x2323, 0x2324, 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x212c, 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d, 0x2226, 0x214b, 0x214c, 0x217e, 0x237e, 0x214d, 0x235c, }; static const Summary16 ksc5601_uni2indx_page00[70] = { /* 0x0000 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x2592 }, { 6, 0xf7df }, { 20, 0x0040 }, { 21, 0xc181 }, { 26, 0x0040 }, { 27, 0x4181 }, /* 0x0100 */ { 31, 0x0000 }, { 31, 0x0002 }, { 32, 0x00c0 }, { 34, 0x810e }, { 39, 0x0e07 }, { 45, 0x000c }, { 47, 0x00c0 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, /* 0x0200 */ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0080 }, { 50, 0x2f01 }, { 56, 0x0000 }, { 56, 0x0000 }, /* 0x0300 */ { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0xfffe }, { 71, 0x03fb }, { 80, 0xfffe }, { 95, 0x03fb }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x0000 }, /* 0x0400 */ { 104, 0x0002 }, { 105, 0xffff }, { 121, 0xffff }, { 137, 0xffff }, { 153, 0xffff }, { 169, 0x0002 }, }; static const Summary16 ksc5601_uni2indx_page20[103] = { /* 0x2000 */ { 170, 0x0000 }, { 170, 0x3320 }, { 175, 0x0063 }, { 179, 0x080d }, { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x8010 }, { 185, 0x001e }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, /* 0x2100 */ { 189, 0x0208 }, { 191, 0x0048 }, { 193, 0x0846 }, { 197, 0x0000 }, { 197, 0x0000 }, { 197, 0x7818 }, { 203, 0x03ff }, { 213, 0x03ff }, { 223, 0x0000 }, { 223, 0x03ff }, { 233, 0x0000 }, { 233, 0x0000 }, { 233, 0x0000 }, { 233, 0x0014 }, { 235, 0x0000 }, { 235, 0x0000 }, /* 0x2200 */ { 235, 0x898d }, { 242, 0x6402 }, { 246, 0x5fa1 }, { 255, 0x3030 }, { 259, 0x0000 }, { 259, 0x0004 }, { 260, 0x0c33 }, { 266, 0x0000 }, { 266, 0x00cc }, { 270, 0x0200 }, { 271, 0x0020 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, /* 0x2300 */ { 272, 0x0000 }, { 272, 0x0004 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, /* 0x2400 */ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x7fff }, { 288, 0xfff0 }, { 300, 0x0007 }, { 303, 0xf000 }, { 307, 0xffff }, { 323, 0x003f }, { 329, 0x0000 }, { 329, 0xffff }, { 345, 0x03ff }, { 355, 0x0000 }, /* 0x2500 */ { 355, 0xf00f }, { 363, 0xffff }, { 379, 0xffff }, { 395, 0xffff }, { 411, 0x0fff }, { 423, 0x0000 }, { 423, 0x0000 }, { 423, 0x0000 }, { 423, 0x0000 }, { 423, 0x0004 }, { 424, 0x03fb }, { 433, 0x30cc }, { 439, 0xc9c3 }, { 447, 0x0003 }, { 449, 0x0000 }, { 449, 0x0000 }, /* 0x2600 */ { 449, 0xc060 }, { 453, 0x5000 }, { 455, 0x0000 }, { 455, 0x0000 }, { 455, 0x0005 }, { 457, 0x0000 }, { 457, 0x37bb }, }; static const Summary16 ksc5601_uni2indx_page30[62] = { /* 0x3000 */ { 468, 0xff0f }, { 480, 0x003b }, { 485, 0x0000 }, { 485, 0x0000 }, { 485, 0xfffe }, { 500, 0xffff }, { 516, 0xffff }, { 532, 0xffff }, { 548, 0xffff }, { 564, 0x000f }, { 568, 0xfffe }, { 583, 0xffff }, { 599, 0xffff }, { 615, 0xffff }, { 631, 0xffff }, { 647, 0x007f }, /* 0x3100 */ { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0xfffe }, { 669, 0xffff }, { 685, 0xffff }, { 701, 0xffff }, { 717, 0xffff }, { 733, 0x7fff }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, /* 0x3200 */ { 748, 0xffff }, { 764, 0x1fff }, { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0xffff }, { 793, 0x8fff }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, /* 0x3300 */ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0xff1f }, { 819, 0xffff }, { 835, 0xffff }, { 851, 0xffff }, { 867, 0x87ff }, { 879, 0x3949 }, }; static const Summary16 ksc5601_uni2indx_page4e[1306] = { /* 0x4e00 */ { 886, 0x2f8b }, { 895, 0x4372 }, { 902, 0x2000 }, { 903, 0x0b04 }, { 907, 0xe82c }, { 914, 0xe340 }, { 920, 0x2800 }, { 922, 0x40c8 }, { 926, 0x5944 }, { 932, 0x4937 }, { 940, 0x7976 }, { 950, 0x0440 }, { 952, 0x2c93 }, { 959, 0xa3f0 }, { 967, 0x0038 }, { 970, 0x08c5 }, /* 0x4f00 */ { 975, 0xee02 }, { 982, 0x0003 }, { 984, 0x8000 }, { 985, 0x3550 }, { 991, 0xe1c8 }, { 998, 0x1e23 }, { 1005, 0x8200 }, { 1007, 0xc449 }, { 1013, 0xad5a }, { 1022, 0x2942 }, { 1027, 0xc000 }, { 1029, 0x8060 }, { 1032, 0x461c }, { 1038, 0xa49a }, { 1045, 0xc003 }, { 1049, 0x052a }, /* 0x5000 */ { 1054, 0x2a44 }, { 1059, 0xd646 }, { 1067, 0x3dda }, { 1077, 0x0800 }, { 1078, 0x8388 }, { 1083, 0x1420 }, { 1086, 0x0020 }, { 1087, 0x0170 }, { 1091, 0x2021 }, { 1094, 0x0302 }, { 1097, 0x3000 }, { 1099, 0x40ac }, { 1104, 0x8620 }, { 1108, 0x4462 }, { 1113, 0x20a0 }, { 1116, 0x8a00 }, /* 0x5100 */ { 1119, 0x0253 }, { 1124, 0x8004 }, { 1126, 0x0402 }, { 1128, 0x1484 }, { 1132, 0x7bfb }, { 1145, 0x1004 }, { 1147, 0x7fa4 }, { 1157, 0x11e2 }, { 1163, 0x2441 }, { 1167, 0x00a4 }, { 1170, 0x1421 }, { 1174, 0x20c0 }, { 1177, 0x3a50 }, { 1183, 0x7000 }, { 1186, 0x0002 }, { 1187, 0x2743 }, /* 0x5200 */ { 1194, 0x45c9 }, { 1201, 0x2082 }, { 1204, 0x4630 }, { 1209, 0x0fc1 }, { 1216, 0x3c88 }, { 1222, 0x2850 }, { 1226, 0x8602 }, { 1230, 0xa024 }, { 1234, 0x2388 }, { 1239, 0x8806 }, { 1243, 0x0e19 }, { 1249, 0x4000 }, { 1250, 0x22aa }, { 1256, 0xeb64 }, { 1265, 0x001c }, { 1268, 0xcd28 }, /* 0x5300 */ { 1275, 0xa120 }, { 1279, 0x02e1 }, { 1284, 0x840b }, { 1289, 0x8200 }, { 1291, 0x279b }, { 1300, 0x549e }, { 1308, 0x8141 }, { 1312, 0xa0b3 }, { 1319, 0x0010 }, { 1320, 0x8508 }, { 1324, 0x2061 }, { 1328, 0x0800 }, { 1329, 0x2f08 }, { 1335, 0x08d0 }, { 1339, 0xbe3e }, { 1350, 0x010f }, /* 0x5400 */ { 1355, 0xf718 }, { 1364, 0xa803 }, { 1369, 0x0a41 }, { 1373, 0x5b08 }, { 1379, 0x0504 }, { 1382, 0x0002 }, { 1383, 0x0500 }, { 1385, 0x382a }, { 1391, 0x5041 }, { 1395, 0x0001 }, { 1396, 0x1910 }, { 1400, 0x2108 }, { 1403, 0x0313 }, { 1408, 0x0000 }, { 1408, 0x6122 }, { 1413, 0x0404 }, /* 0x5500 */ { 1415, 0x40d0 }, { 1419, 0x1001 }, { 1421, 0x8000 }, { 1422, 0x4022 }, { 1425, 0x8050 }, { 1428, 0x4048 }, { 1431, 0x0008 }, { 1432, 0x1000 }, { 1433, 0x06d1 }, { 1439, 0x3700 }, { 1444, 0x5e80 }, { 1450, 0x0000 }, { 1450, 0x00a0 }, { 1452, 0x9410 }, { 1456, 0x0018 }, { 1458, 0x6000 }, /* 0x5600 */ { 1460, 0x0240 }, { 1462, 0x0090 }, { 1464, 0x8000 }, { 1465, 0x0054 }, { 1468, 0x0000 }, { 1468, 0x0008 }, { 1469, 0x0900 }, { 1471, 0x0010 }, { 1472, 0x0040 }, { 1473, 0x0000 }, { 1473, 0x5020 }, { 1476, 0x1010 }, { 1478, 0x2400 }, { 1480, 0x4c02 }, { 1484, 0x0001 }, { 1485, 0x0601 }, /* 0x5700 */ { 1488, 0x2918 }, { 1493, 0x814c }, { 1498, 0x2100 }, { 1500, 0x0801 }, { 1502, 0x6485 }, { 1508, 0x0003 }, { 1510, 0x4452 }, { 1515, 0x1021 }, { 1518, 0x0904 }, { 1521, 0x0008 }, { 1522, 0x000d }, { 1525, 0x0000 }, { 1525, 0x4988 }, { 1530, 0x8000 }, { 1531, 0x0001 }, { 1532, 0x1691 }, /* 0x5800 */ { 1538, 0x0765 }, { 1545, 0x4000 }, { 1546, 0x8492 }, { 1551, 0x0433 }, { 1556, 0x8c00 }, { 1559, 0x4592 }, { 1565, 0x0016 }, { 1568, 0x5220 }, { 1572, 0x0228 }, { 1575, 0xd008 }, { 1579, 0x4300 }, { 1582, 0x4c08 }, { 1586, 0x40a2 }, { 1590, 0xc32a }, { 1597, 0x9810 }, { 1601, 0x2e00 }, /* 0x5900 */ { 1605, 0x8000 }, { 1606, 0x1670 }, { 1612, 0x6e84 }, { 1619, 0x4082 }, { 1622, 0xc390 }, { 1628, 0x04b3 }, { 1634, 0x7c85 }, { 1642, 0x2118 }, { 1646, 0x041c }, { 1650, 0x02c8 }, { 1654, 0x1120 }, { 1657, 0x4a00 }, { 1660, 0x0a48 }, { 1664, 0x361b }, { 1672, 0x5540 }, { 1677, 0x8900 }, /* 0x5a00 */ { 1680, 0x000a }, { 1682, 0x9902 }, { 1687, 0x0221 }, { 1690, 0x1040 }, { 1692, 0x0242 }, { 1695, 0x0400 }, { 1696, 0x0044 }, { 1698, 0x0000 }, { 1698, 0x0000 }, { 1698, 0x0c04 }, { 1701, 0x0010 }, { 1702, 0x0000 }, { 1702, 0x1216 }, { 1707, 0x0000 }, { 1707, 0x0242 }, { 1710, 0x0000 }, /* 0x5b00 */ { 1710, 0x1a20 }, { 1714, 0x0040 }, { 1715, 0x0400 }, { 1716, 0x0000 }, { 1716, 0x0009 }, { 1718, 0xb5b3 }, { 1728, 0x0a18 }, { 1732, 0x1523 }, { 1738, 0x9ba0 }, { 1745, 0x1fe8 }, { 1754, 0x507c }, { 1761, 0x8379 }, { 1769, 0x10fd }, { 1777, 0xc09d }, { 1784, 0xdbf6 }, { 1796, 0x0560 }, /* 0x5c00 */ { 1800, 0xef92 }, { 1810, 0x0242 }, { 1813, 0x0110 }, { 1815, 0xdf02 }, { 1823, 0x6961 }, { 1830, 0x0822 }, { 1833, 0x9035 }, { 1839, 0x0202 }, { 1841, 0x0000 }, { 1841, 0x0003 }, { 1843, 0x1a02 }, { 1847, 0x45aa }, { 1854, 0x0001 }, { 1855, 0x0200 }, { 1856, 0x8101 }, { 1859, 0x2851 }, /* 0x5d00 */ { 1864, 0x6080 }, { 1867, 0x02d2 }, { 1872, 0x0280 }, { 1874, 0x0000 }, { 1874, 0x1800 }, { 1876, 0x0001 }, { 1877, 0x9200 }, { 1880, 0x0000 }, { 1880, 0x0880 }, { 1882, 0x2000 }, { 1883, 0x0405 }, { 1886, 0x3500 }, { 1890, 0x2000 }, { 1891, 0x6044 }, { 1895, 0x49e6 }, { 1903, 0x609e }, /* 0x5e00 */ { 1910, 0x104c }, { 1914, 0x2a42 }, { 1919, 0x2820 }, { 1922, 0xa148 }, { 1927, 0x10b1 }, { 1932, 0x8020 }, { 1934, 0x000e }, { 1937, 0x7b9c }, { 1947, 0x8490 }, { 1951, 0x14a0 }, { 1955, 0x28c1 }, { 1960, 0x41e0 }, { 1965, 0x0704 }, { 1969, 0x8c49 }, { 1975, 0x100d }, { 1979, 0x0cc8 }, /* 0x5f00 */ { 1984, 0x8412 }, { 1988, 0x89ba }, { 1996, 0x02c0 }, { 1999, 0x1422 }, { 2003, 0x5500 }, { 2007, 0x0ac0 }, { 2011, 0x3ec4 }, { 2019, 0x9283 }, { 2025, 0x1ca3 }, { 2032, 0x4387 }, { 2039, 0x4703 }, { 2045, 0x22a0 }, { 2049, 0x3028 }, { 2053, 0x03c0 }, { 2057, 0x0801 }, { 2059, 0xa020 }, /* 0x6000 */ { 2062, 0x8000 }, { 2063, 0x3044 }, { 2067, 0x85a3 }, { 2074, 0x0000 }, { 2074, 0x200e }, { 2078, 0x2225 }, { 2083, 0xb73c }, { 2093, 0x0001 }, { 2094, 0x3220 }, { 2098, 0x8c50 }, { 2103, 0x0099 }, { 2107, 0x315d }, { 2115, 0x00a0 }, { 2117, 0x9402 }, { 2121, 0x0003 }, { 2123, 0x0e4b }, /* 0x6100 */ { 2130, 0xe342 }, { 2137, 0x8c20 }, { 2141, 0x0080 }, { 2142, 0xd091 }, { 2148, 0x1d94 }, { 2155, 0xa328 }, { 2161, 0x499c }, { 2168, 0x60c1 }, { 2173, 0x4406 }, { 2177, 0x0713 }, { 2183, 0x5a90 }, { 2189, 0x4444 }, { 2193, 0x0f88 }, { 2199, 0x0000 }, { 2199, 0x0040 }, { 2200, 0x95c4 }, /* 0x6200 */ { 2207, 0x7581 }, { 2214, 0x8447 }, { 2220, 0x4402 }, { 2223, 0xc053 }, { 2229, 0x2b83 }, { 2236, 0x0108 }, { 2238, 0x4000 }, { 2239, 0x9242 }, { 2244, 0x0611 }, { 2248, 0x09a6 }, { 2254, 0x0800 }, { 2255, 0x3222 }, { 2260, 0xb384 }, { 2267, 0x1bdd }, { 2277, 0xf000 }, { 2281, 0xc08a }, /* 0x6300 */ { 2286, 0x0282 }, { 2289, 0x0002 }, { 2290, 0x8800 }, { 2292, 0x6c00 }, { 2296, 0x9200 }, { 2299, 0x0021 }, { 2301, 0x4180 }, { 2304, 0x8c84 }, { 2309, 0x1308 }, { 2313, 0x0944 }, { 2317, 0x07a7 }, { 2325, 0x0000 }, { 2325, 0x8051 }, { 2329, 0x0c41 }, { 2333, 0x6002 }, { 2336, 0x00d0 }, /* 0x6400 */ { 2339, 0xa000 }, { 2341, 0x10d0 }, { 2345, 0x3004 }, { 2348, 0x4400 }, { 2350, 0x0000 }, { 2350, 0x0100 }, { 2351, 0x8201 }, { 2354, 0x0700 }, { 2357, 0x0100 }, { 2358, 0x440e }, { 2363, 0x6830 }, { 2368, 0x0805 }, { 2371, 0x64b2 }, { 2378, 0x0514 }, { 2382, 0x10e6 }, { 2388, 0x4414 }, /* 0x6500 */ { 2392, 0x0011 }, { 2394, 0x2100 }, { 2396, 0x9c08 }, { 2401, 0xcbc0 }, { 2408, 0xe120 }, { 2413, 0x40c2 }, { 2417, 0x304c }, { 2422, 0x41b4 }, { 2428, 0x10ac }, { 2433, 0x9a83 }, { 2440, 0x98b2 }, { 2447, 0x3281 }, { 2452, 0x9822 }, { 2457, 0x0084 }, { 2459, 0x3369 }, { 2467, 0xbc12 }, /* 0x6600 */ { 2474, 0xd6c0 }, { 2481, 0xc03b }, { 2488, 0xa1a1 }, { 2494, 0x0c53 }, { 2500, 0x8a1e }, { 2507, 0xea00 }, { 2512, 0xcbf0 }, { 2521, 0x05d8 }, { 2527, 0x4390 }, { 2532, 0x21c3 }, { 2538, 0x4805 }, { 2542, 0x4a1c }, { 2548, 0x02d0 }, { 2552, 0x3240 }, { 2556, 0x0041 }, { 2558, 0xd79d }, /* 0x6700 */ { 2569, 0x2b09 }, { 2575, 0xe8b0 }, { 2582, 0x7dc0 }, { 2590, 0x2452 }, { 2595, 0xc240 }, { 2599, 0xd04b }, { 2606, 0xa000 }, { 2608, 0xc8ab }, { 2616, 0x8a80 }, { 2620, 0x34a9 }, { 2627, 0x8000 }, { 2628, 0x41c9 }, { 2634, 0x8010 }, { 2636, 0x241f }, { 2643, 0x9200 }, { 2646, 0x487b }, /* 0x6800 */ { 2654, 0x0000 }, { 2654, 0x00cc }, { 2658, 0x8406 }, { 2662, 0x3300 }, { 2666, 0x410f }, { 2672, 0x001b }, { 2676, 0x2000 }, { 2677, 0x8040 }, { 2679, 0x8022 }, { 2682, 0xa098 }, { 2687, 0xa186 }, { 2693, 0x006b }, { 2698, 0x2a30 }, { 2703, 0x85a4 }, { 2709, 0x4181 }, { 2713, 0x0604 }, /* 0x6900 */ { 2716, 0x6021 }, { 2720, 0x0004 }, { 2721, 0x0080 }, { 2722, 0xa001 }, { 2725, 0x0400 }, { 2726, 0x46b8 }, { 2733, 0xe90f }, { 2742, 0x03a0 }, { 2746, 0x0000 }, { 2746, 0x1820 }, { 2749, 0x40a0 }, { 2752, 0x0810 }, { 2754, 0x380a }, { 2759, 0x0001 }, { 2760, 0x0500 }, { 2762, 0xa800 }, /* 0x6a00 */ { 2765, 0x0404 }, { 2767, 0xc28a }, { 2773, 0x000a }, { 2775, 0x2720 }, { 2780, 0x0910 }, { 2783, 0x830c }, { 2788, 0x0802 }, { 2790, 0x0000 }, { 2790, 0x6211 }, { 2795, 0x1080 }, { 2797, 0x000c }, { 2799, 0x0808 }, { 2801, 0x000c }, { 2803, 0x0c08 }, { 2806, 0x0000 }, { 2806, 0x0840 }, /* 0x6b00 */ { 2808, 0x1410 }, { 2811, 0x0044 }, { 2813, 0x000b }, { 2816, 0x6404 }, { 2820, 0x50c0 }, { 2824, 0x8001 }, { 2826, 0x047e }, { 2833, 0x8984 }, { 2838, 0x0658 }, { 2843, 0x4140 }, { 2846, 0xc000 }, { 2848, 0x94a4 }, { 2854, 0xa862 }, { 2860, 0x09dc }, { 2867, 0x1800 }, { 2869, 0x0000 }, /* 0x6c00 */ { 2869, 0x8100 }, { 2871, 0x000a }, { 2873, 0x0008 }, { 2874, 0x4190 }, { 2878, 0x4007 }, { 2882, 0xe4a1 }, { 2889, 0x2501 }, { 2893, 0x6445 }, { 2899, 0x11ee }, { 2907, 0x0e7d }, { 2916, 0x4800 }, { 2918, 0xfb08 }, { 2926, 0x1616 }, { 2932, 0x08a8 }, { 2936, 0xc92e }, { 2944, 0x0009 }, /* 0x6d00 */ { 2946, 0x1800 }, { 2948, 0x4a82 }, { 2953, 0x06a0 }, { 2957, 0x6b64 }, { 2965, 0x0002 }, { 2966, 0x1600 }, { 2969, 0x5648 }, { 2975, 0x8390 }, { 2980, 0x73a0 }, { 2987, 0x002a }, { 2990, 0x8000 }, { 2991, 0x0024 }, { 2993, 0x88f9 }, { 3001, 0x4702 }, { 3006, 0x4d02 }, { 3011, 0x0faa }, /* 0x6e00 */ { 3019, 0x0000 }, { 3019, 0x8e80 }, { 3024, 0xb87b }, { 3034, 0x7554 }, { 3042, 0x2418 }, { 3046, 0xd940 }, { 3052, 0xc880 }, { 3056, 0x040c }, { 3059, 0x0000 }, { 3059, 0xb041 }, { 3064, 0x8c24 }, { 3069, 0x0442 }, { 3072, 0x5a34 }, { 3079, 0x001a }, { 3082, 0x8000 }, { 3083, 0xc110 }, /* 0x6f00 */ { 3087, 0x8046 }, { 3091, 0x0032 }, { 3094, 0x180d }, { 3099, 0x8106 }, { 3103, 0x0002 }, { 3104, 0xcd92 }, { 3112, 0x6014 }, { 3116, 0x7401 }, { 3121, 0x6112 }, { 3126, 0x0091 }, { 3129, 0xc098 }, { 3134, 0x420a }, { 3138, 0x040f }, { 3143, 0x8420 }, { 3146, 0x9a13 }, { 3153, 0x4002 }, /* 0x7000 */ { 3155, 0x8a62 }, { 3161, 0xfd22 }, { 3170, 0x8188 }, { 3174, 0x4080 }, { 3176, 0x1000 }, { 3177, 0x2103 }, { 3181, 0x0808 }, { 3183, 0x3101 }, { 3187, 0x4420 }, { 3190, 0x0704 }, { 3194, 0xb812 }, { 3200, 0x0388 }, { 3204, 0x8900 }, { 3207, 0xa300 }, { 3211, 0x0000 }, { 3211, 0x2202 }, /* 0x7100 */ { 3214, 0x1210 }, { 3217, 0x4600 }, { 3220, 0x0042 }, { 3222, 0x0041 }, { 3224, 0x5680 }, { 3229, 0x5241 }, { 3234, 0x52f0 }, { 3241, 0x2000 }, { 3242, 0x8610 }, { 3246, 0x8214 }, { 3250, 0x1004 }, { 3252, 0x4602 }, { 3256, 0x430a }, { 3261, 0x8035 }, { 3266, 0x60e0 }, { 3271, 0xd800 }, /* 0x7200 */ { 3275, 0x0041 }, { 3277, 0x0801 }, { 3279, 0x3400 }, { 3282, 0x6c65 }, { 3290, 0x11c1 }, { 3295, 0xab04 }, { 3301, 0x0286 }, { 3305, 0x2204 }, { 3308, 0x0003 }, { 3310, 0x0000 }, { 3310, 0x9084 }, { 3314, 0x0000 }, { 3314, 0x4015 }, { 3318, 0x0281 }, { 3321, 0x0202 }, { 3323, 0x3300 }, /* 0x7300 */ { 3327, 0x0400 }, { 3328, 0x3840 }, { 3332, 0x0e20 }, { 3336, 0xc0c0 }, { 3340, 0x0030 }, { 3342, 0x0085 }, { 3345, 0x0500 }, { 3347, 0x0d25 }, { 3353, 0x4ad0 }, { 3359, 0x81d0 }, { 3364, 0x2280 }, { 3367, 0x020c }, { 3370, 0xb605 }, { 3377, 0x6240 }, { 3381, 0x2679 }, { 3389, 0x6280 }, /* 0x7400 */ { 3393, 0x02ea }, { 3399, 0x0808 }, { 3401, 0xdd67 }, { 3412, 0x8579 }, { 3420, 0x081b }, { 3425, 0xdea0 }, { 3433, 0x8735 }, { 3441, 0x4000 }, { 3442, 0x0a8c }, { 3447, 0xd100 }, { 3451, 0x05aa }, { 3457, 0xa225 }, { 3463, 0x8440 }, { 3466, 0x1510 }, { 3470, 0x404d }, { 3475, 0x0080 }, /* 0x7500 */ { 3476, 0x0012 }, { 3478, 0x8d22 }, { 3484, 0x1968 }, { 3490, 0x058f }, { 3497, 0x9080 }, { 3500, 0x3a1a }, { 3507, 0x8464 }, { 3512, 0x8561 }, { 3518, 0xccc0 }, { 3524, 0x2002 }, { 3526, 0x0820 }, { 3528, 0x732e }, { 3537, 0x20a4 }, { 3541, 0x0b34 }, { 3547, 0x0004 }, { 3548, 0x1415 }, /* 0x7600 */ { 3553, 0x2001 }, { 3555, 0x8200 }, { 3557, 0x0057 }, { 3562, 0x0800 }, { 3563, 0x5004 }, { 3566, 0x0044 }, { 3568, 0x1212 }, { 3572, 0x7905 }, { 3579, 0x40d0 }, { 3583, 0x0009 }, { 3585, 0x4000 }, { 3586, 0x8400 }, { 3588, 0x054c }, { 3593, 0xd844 }, { 3599, 0x409a }, { 3604, 0x5114 }, /* 0x7700 */ { 3609, 0x0b12 }, { 3614, 0x4000 }, { 3615, 0x0201 }, { 3617, 0x1580 }, { 3621, 0x2001 }, { 3623, 0x0800 }, { 3624, 0x084a }, { 3628, 0xc200 }, { 3631, 0x0800 }, { 3632, 0x4002 }, { 3634, 0x3020 }, { 3637, 0x9809 }, { 3642, 0x0000 }, { 3642, 0x1880 }, { 3645, 0xe22c }, { 3652, 0x0008 }, /* 0x7800 */ { 3653, 0x0004 }, { 3654, 0x0004 }, { 3655, 0x10e0 }, { 3659, 0x0014 }, { 3661, 0x8020 }, { 3663, 0x2000 }, { 3664, 0x9800 }, { 3667, 0x1000 }, { 3668, 0x7082 }, { 3673, 0x0082 }, { 3675, 0x0288 }, { 3678, 0x1c00 }, { 3681, 0x4c22 }, { 3686, 0x0001 }, { 3687, 0x9100 }, { 3690, 0x0820 }, /* 0x7900 */ { 3692, 0x4002 }, { 3694, 0x0040 }, { 3695, 0x1c00 }, { 3698, 0x4400 }, { 3700, 0x0383 }, { 3705, 0x7cc1 }, { 3713, 0x2121 }, { 3717, 0x8400 }, { 3719, 0xe002 }, { 3723, 0x0002 }, { 3724, 0x44c0 }, { 3728, 0xe20a }, { 3734, 0x0e03 }, { 3739, 0x8126 }, { 3744, 0x02d0 }, { 3748, 0x0800 }, /* 0x7a00 */ { 3749, 0x2921 }, { 3754, 0x9690 }, { 3760, 0x4001 }, { 3762, 0xb8c2 }, { 3769, 0x6241 }, { 3774, 0x0080 }, { 3775, 0x0a06 }, { 3779, 0xa651 }, { 3786, 0x0112 }, { 3789, 0x812c }, { 3794, 0xc600 }, { 3798, 0x0400 }, { 3799, 0x0cb0 }, { 3804, 0xa280 }, { 3808, 0xa429 }, { 3814, 0x8640 }, /* 0x7b00 */ { 3818, 0x8000 }, { 3819, 0x4a02 }, { 3823, 0x3041 }, { 3827, 0x0200 }, { 3828, 0xba40 }, { 3834, 0x0057 }, { 3839, 0x5001 }, { 3842, 0x2020 }, { 3844, 0x8880 }, { 3847, 0x24b0 }, { 3852, 0x2002 }, { 3854, 0x0112 }, { 3857, 0x02d3 }, { 3863, 0x0004 }, { 3864, 0x0211 }, { 3867, 0x0000 }, /* 0x7c00 */ { 3867, 0x0080 }, { 3868, 0x4004 }, { 3870, 0x0c82 }, { 3874, 0xe000 }, { 3877, 0x3008 }, { 3880, 0x0000 }, { 3880, 0x1011 }, { 3883, 0x0008 }, { 3884, 0x0208 }, { 3886, 0x81a4 }, { 3891, 0x40a0 }, { 3894, 0x420e }, { 3899, 0x0400 }, { 3900, 0xc040 }, { 3903, 0x0081 }, { 3905, 0x4800 }, /* 0x7d00 */ { 3907, 0x2df5 }, { 3917, 0x0f91 }, { 3924, 0xd807 }, { 3931, 0x0629 }, { 3936, 0x007c }, { 3941, 0x4001 }, { 3943, 0x4546 }, { 3949, 0x824e }, { 3955, 0xc000 }, { 3957, 0x1008 }, { 3959, 0x3005 }, { 3963, 0xed36 }, { 3973, 0x0c80 }, { 3976, 0x6540 }, { 3981, 0x930b }, { 3988, 0x0810 }, /* 0x7e00 */ { 3990, 0x0600 }, { 3992, 0xe820 }, { 3997, 0xc80a }, { 4002, 0x6082 }, { 4006, 0x00ca }, { 4010, 0x4034 }, { 4014, 0x2e02 }, { 4019, 0x1201 }, { 4022, 0x9004 }, { 4025, 0x1948 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, /* 0x7f00 */ { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0540 }, { 4033, 0x1000 }, { 4034, 0x0031 }, { 4037, 0x4c00 }, { 4040, 0x02a5 }, { 4045, 0x5520 }, { 4050, 0x4410 }, { 4053, 0x0310 }, { 4056, 0x2304 }, { 4060, 0x5422 }, { 4065, 0x8034 }, { 4069, 0x0a03 }, { 4073, 0x1201 }, /* 0x8000 */ { 4076, 0x126b }, { 4083, 0x01a1 }, { 4087, 0x2000 }, { 4088, 0xa048 }, { 4092, 0x0448 }, { 4095, 0x4540 }, { 4099, 0x8000 }, { 4100, 0xe08d }, { 4107, 0x1af0 }, { 4114, 0x2840 }, { 4117, 0x8626 }, { 4123, 0x0416 }, { 4127, 0x5018 }, { 4131, 0x4c00 }, { 4134, 0x0032 }, { 4137, 0x2112 }, /* 0x8100 */ { 4141, 0x05e4 }, { 4147, 0x0d00 }, { 4150, 0x8a08 }, { 4154, 0x4200 }, { 4156, 0x4800 }, { 4158, 0x0033 }, { 4162, 0x0860 }, { 4165, 0x8703 }, { 4171, 0x8501 }, { 4175, 0x3400 }, { 4178, 0x0109 }, { 4181, 0xe428 }, { 4187, 0x2045 }, { 4191, 0x8100 }, { 4193, 0x25a8 }, { 4199, 0x5c18 }, /* 0x8200 */ { 4205, 0x35a0 }, { 4211, 0xd804 }, { 4216, 0x1c02 }, { 4220, 0x02e0 }, { 4224, 0x00a1 }, { 4227, 0x0200 }, { 4228, 0xc050 }, { 4232, 0x4146 }, { 4237, 0x6800 }, { 4240, 0xa604 }, { 4245, 0xf260 }, { 4252, 0xbb8a }, { 4261, 0x0000 }, { 4261, 0xc8b6 }, { 4269, 0x00e2 }, { 4273, 0x6002 }, /* 0x8300 */ { 4276, 0x023e }, { 4282, 0x0080 }, { 4283, 0x8900 }, { 4286, 0x0372 }, { 4292, 0x8681 }, { 4297, 0x0006 }, { 4299, 0x0000 }, { 4299, 0x0888 }, { 4302, 0x4600 }, { 4305, 0x4140 }, { 4308, 0x0e04 }, { 4312, 0x2000 }, { 4313, 0x1622 }, { 4318, 0x1048 }, { 4321, 0x8a00 }, { 4324, 0x2217 }, /* 0x8400 */ { 4330, 0x7418 }, { 4336, 0x0000 }, { 4336, 0x1200 }, { 4338, 0x2102 }, { 4341, 0x0200 }, { 4342, 0x0880 }, { 4344, 0x984a }, { 4350, 0x0420 }, { 4352, 0x0000 }, { 4352, 0x1211 }, { 4356, 0x0002 }, { 4357, 0x9904 }, { 4362, 0x2a55 }, { 4369, 0x0402 }, { 4371, 0x5000 }, { 4373, 0x1010 }, /* 0x8500 */ { 4375, 0x0000 }, { 4375, 0x459a }, { 4382, 0xb02a }, { 4388, 0xa000 }, { 4390, 0x420a }, { 4394, 0x0208 }, { 4396, 0x2708 }, { 4401, 0x0000 }, { 4401, 0x8090 }, { 4404, 0x0812 }, { 4407, 0x8740 }, { 4412, 0x0401 }, { 4414, 0xe202 }, { 4419, 0x3020 }, { 4422, 0x0630 }, { 4426, 0x8c80 }, /* 0x8600 */ { 4430, 0x04c4 }, { 4434, 0x04c0 }, { 4437, 0x2000 }, { 4438, 0x8000 }, { 4439, 0x4000 }, { 4440, 0xd831 }, { 4447, 0x0080 }, { 4448, 0x0200 }, { 4449, 0x1400 }, { 4451, 0x0008 }, { 4452, 0x0218 }, { 4455, 0x0000 }, { 4455, 0x0880 }, { 4457, 0x8a10 }, { 4461, 0x2010 }, { 4463, 0x4000 }, /* 0x8700 */ { 4464, 0x010d }, { 4468, 0x1500 }, { 4471, 0x0000 }, { 4471, 0x0000 }, { 4471, 0x4000 }, { 4472, 0x80a0 }, { 4475, 0x0140 }, { 4477, 0x0150 }, { 4480, 0x2004 }, { 4482, 0x8000 }, { 4483, 0x0004 }, { 4484, 0x0408 }, { 4486, 0x0010 }, { 4487, 0x0000 }, { 4487, 0x9001 }, { 4490, 0x4a04 }, /* 0x8800 */ { 4494, 0x0020 }, { 4495, 0x8000 }, { 4496, 0x000c }, { 4498, 0x0842 }, { 4501, 0x3041 }, { 4505, 0x2a8c }, { 4511, 0x090e }, { 4516, 0xc085 }, { 4521, 0x2906 }, { 4526, 0x40c4 }, { 4530, 0x0800 }, { 4531, 0x0010 }, { 4532, 0x8006 }, { 4535, 0xb230 }, { 4541, 0x0102 }, { 4543, 0x2138 }, /* 0x8900 */ { 4548, 0x0080 }, { 4549, 0x030d }, { 4554, 0x0420 }, { 4556, 0x0940 }, { 4559, 0x0012 }, { 4561, 0x8000 }, { 4562, 0x0410 }, { 4564, 0x8004 }, { 4566, 0x88ca }, { 4572, 0x0048 }, { 4574, 0x0602 }, { 4577, 0x2404 }, { 4580, 0x0001 }, { 4581, 0x0004 }, { 4582, 0x0008 }, { 4583, 0x0110 }, /* 0x8a00 */ { 4585, 0x550d }, { 4592, 0xa9c8 }, { 4599, 0x2428 }, { 4603, 0x0c52 }, { 4608, 0x0000 }, { 4608, 0x4831 }, { 4613, 0x624d }, { 4620, 0x022f }, { 4626, 0x30a0 }, { 4630, 0x4128 }, { 4634, 0x057b }, { 4642, 0xd205 }, { 4648, 0xa894 }, { 4654, 0x1844 }, { 4658, 0x6cc2 }, { 4665, 0x45c2 }, /* 0x8b00 */ { 4671, 0x4017 }, { 4676, 0x2ed1 }, { 4684, 0x1901 }, { 4688, 0x0208 }, { 4690, 0xc202 }, { 4694, 0x1500 }, { 4697, 0x9040 }, { 4700, 0x2091 }, { 4704, 0x0401 }, { 4706, 0x044d }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, /* 0x8c00 */ { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x8080 }, { 4713, 0x1542 }, { 4718, 0x0420 }, { 4720, 0x0c02 }, { 4723, 0x0600 }, { 4725, 0x1404 }, { 4728, 0x6000 }, { 4730, 0x9f87 }, { 4740, 0xb9d9 }, { 4750, 0x059f }, { 4758, 0x540a }, { 4763, 0x245d }, { 4770, 0x3810 }, /* 0x8d00 */ { 4774, 0x25b0 }, { 4780, 0x0048 }, { 4782, 0x0000 }, { 4782, 0x0000 }, { 4782, 0x0000 }, { 4782, 0x0000 }, { 4782, 0x0850 }, { 4785, 0x0099 }, { 4789, 0x0420 }, { 4791, 0x0200 }, { 4792, 0x0108 }, { 4794, 0x4408 }, { 4797, 0x9840 }, { 4801, 0x2800 }, { 4803, 0x810a }, { 4807, 0x0008 }, /* 0x8e00 */ { 4808, 0x8400 }, { 4810, 0x4001 }, { 4812, 0x0400 }, { 4813, 0x0021 }, { 4815, 0x0794 }, { 4821, 0x8200 }, { 4823, 0x0001 }, { 4824, 0x0050 }, { 4826, 0x2482 }, { 4830, 0x0000 }, { 4830, 0x1c00 }, { 4833, 0x0000 }, { 4833, 0x3c01 }, { 4838, 0x8004 }, { 4840, 0x0800 }, { 4841, 0x4900 }, /* 0x8f00 */ { 4844, 0x0228 }, { 4847, 0xf83c }, { 4856, 0x86c0 }, { 4861, 0xcb08 }, { 4867, 0x6230 }, { 4872, 0xa000 }, { 4874, 0x0004 }, { 4875, 0x0000 }, { 4875, 0x0000 }, { 4875, 0x1800 }, { 4877, 0xa148 }, { 4882, 0x0007 }, { 4885, 0x4024 }, { 4888, 0x0012 }, { 4890, 0x2c40 }, { 4894, 0x2285 }, /* 0x9000 */ { 4899, 0xa96f }, { 4909, 0xe6b3 }, { 4919, 0x400f }, { 4924, 0x5126 }, { 4930, 0x6c86 }, { 4937, 0x723b }, { 4946, 0xe20b }, { 4953, 0xb5a4 }, { 4961, 0x859f }, { 4970, 0x0222 }, { 4973, 0x854c }, { 4979, 0x0123 }, { 4983, 0x0402 }, { 4985, 0x4000 }, { 4986, 0x2102 }, { 4989, 0x2020 }, /* 0x9100 */ { 4991, 0x0004 }, { 4992, 0x0224 }, { 4995, 0x2080 }, { 4997, 0x0004 }, { 4998, 0x7e00 }, { 5004, 0x0004 }, { 5005, 0x1604 }, { 5009, 0x01a0 }, { 5012, 0x2a80 }, { 5016, 0x1004 }, { 5018, 0xd800 }, { 5022, 0x0032 }, { 5025, 0xfa81 }, { 5033, 0x3183 }, { 5039, 0x0488 }, { 5042, 0x0020 }, /* 0x9200 */ { 5043, 0x2000 }, { 5044, 0x4087 }, { 5049, 0x0000 }, { 5049, 0x8410 }, { 5052, 0x0221 }, { 5055, 0x4880 }, { 5058, 0x0074 }, { 5062, 0x0000 }, { 5062, 0x0029 }, { 5065, 0x114a }, { 5070, 0x0000 }, { 5070, 0x02c8 }, { 5074, 0x9000 }, { 5076, 0x0004 }, { 5077, 0x0410 }, { 5079, 0x1100 }, /* 0x9300 */ { 5081, 0x0010 }, { 5082, 0xc501 }, { 5087, 0xc957 }, { 5096, 0x0000 }, { 5096, 0x2d00 }, { 5100, 0x0810 }, { 5102, 0x4000 }, { 5103, 0x5020 }, { 5106, 0x1000 }, { 5107, 0x0450 }, { 5110, 0x3088 }, { 5114, 0x0001 }, { 5115, 0x0008 }, { 5116, 0x4002 }, { 5118, 0x0012 }, { 5120, 0x0040 }, /* 0x9400 */ { 5121, 0x0010 }, { 5122, 0x0100 }, { 5123, 0x0820 }, { 5125, 0x0120 }, { 5127, 0x0010 }, { 5128, 0x0806 }, { 5131, 0x0000 }, { 5131, 0xa000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, /* 0x9500 */ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0080 }, { 5134, 0x8a09 }, { 5139, 0x011e }, { 5144, 0x2138 }, { 5149, 0x1802 }, { 5152, 0x0480 }, { 5154, 0x1070 }, { 5158, 0x0006 }, { 5160, 0x0000 }, /* 0x9600 */ { 5160, 0x0000 }, { 5160, 0x1000 }, { 5161, 0x4402 }, { 5164, 0x8804 }, { 5167, 0x3815 }, { 5173, 0xf801 }, { 5179, 0x041c }, { 5183, 0x21e9 }, { 5190, 0x6c60 }, { 5196, 0x1b30 }, { 5202, 0x0588 }, { 5206, 0x0882 }, { 5209, 0x7af3 }, { 5220, 0x1a60 }, { 5225, 0x870c }, { 5231, 0x0ac5 }, /* 0x9700 */ { 5237, 0x00c1 }, { 5240, 0x524a }, { 5246, 0x0080 }, { 5247, 0x2205 }, { 5251, 0x0114 }, { 5254, 0x5042 }, { 5258, 0x2206 }, { 5262, 0x0490 }, { 5265, 0xa800 }, { 5268, 0x0000 }, { 5268, 0x2901 }, { 5272, 0x0000 }, { 5272, 0x0840 }, { 5274, 0x1008 }, { 5276, 0x0000 }, { 5276, 0x8848 }, /* 0x9800 */ { 5280, 0x156f }, { 5289, 0x018f }, { 5295, 0x2000 }, { 5296, 0x0b01 }, { 5300, 0x7040 }, { 5304, 0x4510 }, { 5308, 0x88a0 }, { 5312, 0x0000 }, { 5312, 0x0000 }, { 5312, 0x0000 }, { 5312, 0x8100 }, { 5314, 0x0002 }, { 5315, 0x0090 }, { 5317, 0x9800 }, { 5320, 0xe006 }, { 5325, 0x7010 }, /* 0x9900 */ { 5329, 0x1608 }, { 5333, 0x4109 }, { 5337, 0x0101 }, { 5339, 0x0000 }, { 5339, 0x3a20 }, { 5344, 0x0096 }, { 5348, 0x0000 }, { 5348, 0x0000 }, { 5348, 0x0000 }, { 5348, 0x2240 }, { 5351, 0x7120 }, { 5356, 0x021a }, { 5360, 0x0002 }, { 5361, 0xa227 }, { 5368, 0x2000 }, { 5369, 0x8002 }, /* 0x9a00 */ { 5371, 0xc102 }, { 5375, 0x0200 }, { 5376, 0x0800 }, { 5377, 0x00c1 }, { 5380, 0x2029 }, { 5384, 0x8ca0 }, { 5389, 0x0624 }, { 5393, 0x0000 }, { 5393, 0x0000 }, { 5393, 0x0000 }, { 5393, 0x0100 }, { 5394, 0x0100 }, { 5395, 0x0000 }, { 5395, 0x0118 }, { 5398, 0x4020 }, { 5400, 0x0000 }, /* 0x9b00 */ { 5400, 0x0000 }, { 5400, 0x0400 }, { 5401, 0x0480 }, { 5403, 0x1002 }, { 5405, 0x803e }, { 5411, 0x0410 }, { 5413, 0x8000 }, { 5414, 0x0000 }, { 5414, 0x4000 }, { 5415, 0x8002 }, { 5417, 0x4800 }, { 5419, 0x0000 }, { 5419, 0x0200 }, { 5420, 0x0040 }, { 5421, 0x0110 }, { 5423, 0x0000 }, /* 0x9c00 */ { 5423, 0x2000 }, { 5424, 0x0025 }, { 5427, 0x0020 }, { 5428, 0x0804 }, { 5430, 0x0280 }, { 5432, 0x0080 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x02a0 }, { 5436, 0x0058 }, /* 0x9d00 */ { 5439, 0x0200 }, { 5440, 0x0800 }, { 5441, 0x0140 }, { 5443, 0x0800 }, { 5444, 0x0000 }, { 5444, 0x2002 }, { 5446, 0x1003 }, { 5449, 0x0004 }, { 5450, 0x0000 }, { 5450, 0x0000 }, { 5450, 0x8200 }, { 5452, 0x0010 }, { 5453, 0x0010 }, { 5454, 0x0080 }, { 5455, 0x0000 }, { 5455, 0x0704 }, /* 0x9e00 */ { 5459, 0x0000 }, { 5459, 0x4400 }, { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0xa220 }, { 5465, 0x0000 }, { 5465, 0xa08c }, { 5470, 0x0020 }, { 5471, 0x4830 }, { 5475, 0x6008 }, { 5478, 0x5912 }, { 5484, 0x0100 }, { 5485, 0x0010 }, /* 0x9f00 */ { 5486, 0x4180 }, { 5489, 0x0008 }, { 5490, 0x0001 }, { 5491, 0x0800 }, { 5492, 0x4c00 }, { 5495, 0x8004 }, { 5497, 0x1482 }, { 5501, 0x0080 }, { 5502, 0x2000 }, { 5503, 0x1021 }, }; static const Summary16 ksc5601_uni2indx_pageac[698] = { /* 0xac00 */ { 5506, 0x0793 }, { 5513, 0x3eff }, { 5526, 0xb011 }, { 5531, 0x1303 }, { 5536, 0x2801 }, { 5539, 0x1110 }, { 5542, 0x0000 }, { 5542, 0x0593 }, { 5548, 0x1e7b }, { 5558, 0xb011 }, { 5563, 0x9703 }, { 5570, 0x3b01 }, { 5576, 0x1112 }, { 5580, 0x00a0 }, { 5582, 0x9593 }, { 5590, 0x306b }, /* 0xad00 */ { 5597, 0xb051 }, { 5603, 0x1102 }, { 5606, 0x3201 }, { 5610, 0x1130 }, { 5614, 0x02b0 }, { 5618, 0x0111 }, { 5621, 0x300a }, { 5625, 0xb879 }, { 5634, 0x1306 }, { 5639, 0x3001 }, { 5642, 0x0010 }, { 5643, 0x0080 }, { 5644, 0x0113 }, { 5648, 0x100b }, { 5652, 0x0011 }, { 5654, 0x9300 }, /* 0xae00 */ { 5658, 0x2b03 }, { 5664, 0x0010 }, { 5665, 0x0000 }, { 5665, 0x0593 }, { 5671, 0x746b }, { 5680, 0xb051 }, { 5686, 0x1323 }, { 5692, 0x3b01 }, { 5698, 0x1030 }, { 5701, 0x0000 }, { 5701, 0x0000 }, { 5701, 0x7000 }, { 5704, 0xb011 }, { 5709, 0x1303 }, { 5714, 0x2900 }, { 5717, 0x1110 }, /* 0xaf00 */ { 5720, 0x2180 }, { 5723, 0x0001 }, { 5724, 0x3000 }, { 5726, 0xb015 }, { 5732, 0x030e }, { 5737, 0x3001 }, { 5740, 0x0030 }, { 5742, 0x0200 }, { 5743, 0x0111 }, { 5746, 0x1023 }, { 5750, 0x0000 }, { 5750, 0x1300 }, { 5753, 0x6b81 }, { 5760, 0x1010 }, { 5762, 0x0300 }, { 5764, 0x0113 }, /* 0xb000 */ { 5768, 0x1013 }, { 5772, 0x3011 }, { 5776, 0x0100 }, { 5777, 0x0000 }, { 5777, 0x5530 }, { 5783, 0x22b8 }, { 5789, 0x0000 }, { 5789, 0x3000 }, { 5791, 0xb011 }, { 5796, 0x9702 }, { 5802, 0xfb07 }, { 5812, 0x113a }, { 5818, 0x03b0 }, { 5823, 0x0113 }, { 5827, 0x0021 }, { 5829, 0x0000 }, /* 0xb100 */ { 5829, 0x1b00 }, { 5833, 0x3b0d }, { 5841, 0x1138 }, { 5846, 0x03b0 }, { 5851, 0x0113 }, { 5855, 0x1133 }, { 5861, 0x0001 }, { 5862, 0x1300 }, { 5865, 0x2b05 }, { 5871, 0x111c }, { 5876, 0x0100 }, { 5877, 0x0000 }, { 5877, 0x1000 }, { 5878, 0xb011 }, { 5883, 0x1300 }, { 5886, 0x2a01 }, /* 0xb200 */ { 5890, 0x1930 }, { 5895, 0x02b0 }, { 5899, 0x0001 }, { 5900, 0x1010 }, { 5902, 0x0000 }, { 5902, 0x1100 }, { 5904, 0x0301 }, { 5907, 0x1030 }, { 5910, 0x0230 }, { 5913, 0x0713 }, { 5919, 0x146b }, { 5926, 0x0011 }, { 5928, 0x1300 }, { 5931, 0x2b05 }, { 5937, 0xf974 }, { 5947, 0x8fb8 }, /* 0xb300 */ { 5956, 0x0113 }, { 5960, 0x103b }, { 5966, 0x0000 }, { 5966, 0x0000 }, { 5966, 0x0000 }, { 5966, 0xd970 }, { 5974, 0x4ab0 }, { 5980, 0x0113 }, { 5984, 0x103b }, { 5990, 0x0011 }, { 5992, 0x1103 }, { 5996, 0x0000 }, { 5996, 0x5930 }, { 6002, 0x2ab1 }, { 6009, 0x0111 }, { 6012, 0x1000 }, /* 0xb400 */ { 6013, 0x0000 }, { 6013, 0x1101 }, { 6016, 0x0b01 }, { 6020, 0x0010 }, { 6021, 0x0000 }, { 6021, 0x0113 }, { 6025, 0x102b }, { 6030, 0x0000 }, { 6030, 0x0101 }, { 6032, 0x2000 }, { 6033, 0x1110 }, { 6036, 0x02a0 }, { 6039, 0x0111 }, { 6042, 0x3021 }, { 6046, 0xb059 }, { 6053, 0x0102 }, /* 0xb500 */ { 6055, 0x0000 }, { 6055, 0x1930 }, { 6060, 0x07b0 }, { 6066, 0x0113 }, { 6070, 0x383b }, { 6078, 0xb011 }, { 6083, 0x0003 }, { 6085, 0x0000 }, { 6085, 0x0000 }, { 6085, 0x0000 }, { 6085, 0x0d13 }, { 6091, 0x383b }, { 6099, 0xb011 }, { 6104, 0x0103 }, { 6107, 0x1000 }, { 6108, 0x0000 }, /* 0xb600 */ { 6108, 0x0000 }, { 6108, 0x0113 }, { 6112, 0x1020 }, { 6114, 0x0010 }, { 6115, 0x0100 }, { 6116, 0x0000 }, { 6116, 0x0110 }, { 6118, 0x0000 }, { 6118, 0x0000 }, { 6118, 0x3000 }, { 6120, 0x1811 }, { 6124, 0x0002 }, { 6125, 0x0000 }, { 6125, 0x0010 }, { 6126, 0x0000 }, { 6126, 0x0111 }, /* 0xb700 */ { 6129, 0x0023 }, { 6132, 0x0000 }, { 6132, 0x9300 }, { 6136, 0x0b01 }, { 6140, 0x1110 }, { 6143, 0x0030 }, { 6145, 0x0111 }, { 6148, 0x302b }, { 6154, 0xb011 }, { 6159, 0x13c7 }, { 6167, 0x3b01 }, { 6173, 0x0130 }, { 6176, 0x0280 }, { 6178, 0x0000 }, { 6178, 0x3000 }, { 6180, 0xb011 }, /* 0xb800 */ { 6185, 0x1383 }, { 6191, 0x2b01 }, { 6196, 0x1130 }, { 6200, 0x03b0 }, { 6205, 0x0011 }, { 6207, 0x300a }, { 6211, 0xb011 }, { 6216, 0x1102 }, { 6219, 0x2000 }, { 6220, 0x0000 }, { 6220, 0x0100 }, { 6221, 0x0111 }, { 6224, 0x102b }, { 6229, 0xa011 }, { 6233, 0x1302 }, { 6237, 0x2b01 }, /* 0xb900 */ { 6242, 0x0010 }, { 6243, 0x0100 }, { 6244, 0x0001 }, { 6245, 0x3000 }, { 6247, 0x9011 }, { 6251, 0x1302 }, { 6255, 0x2b01 }, { 6260, 0x1130 }, { 6264, 0x66b0 }, { 6271, 0x0000 }, { 6271, 0x3000 }, { 6273, 0xb011 }, { 6278, 0xd302 }, { 6284, 0x6b07 }, { 6292, 0x113a }, { 6298, 0x07b0 }, /* 0xba00 */ { 6304, 0x0103 }, { 6307, 0x0020 }, { 6308, 0x0000 }, { 6308, 0x1300 }, { 6311, 0x6b05 }, { 6318, 0x1138 }, { 6323, 0x03b0 }, { 6328, 0x0113 }, { 6332, 0x10b8 }, { 6337, 0x0000 }, { 6337, 0x1b00 }, { 6341, 0x2b05 }, { 6347, 0x0110 }, { 6349, 0x0300 }, { 6351, 0x0000 }, { 6351, 0x1000 }, /* 0xbb00 */ { 6352, 0xa011 }, { 6356, 0x1102 }, { 6359, 0x0a01 }, { 6362, 0x7970 }, { 6370, 0xa2b0 }, { 6376, 0x0111 }, { 6379, 0x100a }, { 6382, 0x0000 }, { 6382, 0x1100 }, { 6384, 0x0001 }, { 6385, 0x1110 }, { 6388, 0x0090 }, { 6390, 0x0111 }, { 6393, 0x0009 }, { 6395, 0x0000 }, { 6395, 0x9300 }, /* 0xbc00 */ { 6399, 0xbb05 }, { 6407, 0xf9f2 }, { 6418, 0x22b0 }, { 6423, 0x0113 }, { 6427, 0x323b }, { 6435, 0x2001 }, { 6437, 0x0000 }, { 6437, 0x0000 }, { 6437, 0x5930 }, { 6443, 0x06b0 }, { 6448, 0x0193 }, { 6453, 0x303b }, { 6460, 0xa011 }, { 6464, 0x1123 }, { 6469, 0x0000 }, { 6469, 0x1170 }, /* 0xbd00 */ { 6474, 0x02b0 }, { 6478, 0x0011 }, { 6480, 0x1010 }, { 6482, 0x0000 }, { 6482, 0x1301 }, { 6486, 0x0301 }, { 6489, 0x0110 }, { 6491, 0x0000 }, { 6491, 0x0793 }, { 6498, 0x162b }, { 6505, 0x0010 }, { 6506, 0x0101 }, { 6508, 0x0000 }, { 6508, 0x1130 }, { 6512, 0x0200 }, { 6513, 0x0111 }, /* 0xbe00 */ { 6516, 0x3029 }, { 6521, 0xb011 }, { 6526, 0x0000 }, { 6526, 0x0000 }, { 6526, 0x5130 }, { 6531, 0x0eb0 }, { 6537, 0x0513 }, { 6542, 0x383b }, { 6550, 0xb011 }, { 6555, 0x0303 }, { 6559, 0x0100 }, { 6560, 0x0000 }, { 6560, 0x0000 }, { 6560, 0x0193 }, { 6565, 0x1039 }, { 6570, 0x0000 }, /* 0xbf00 */ { 6570, 0x0302 }, { 6573, 0x3b00 }, { 6578, 0x0000 }, { 6578, 0x0000 }, { 6578, 0x0113 }, { 6582, 0x0023 }, { 6585, 0x0000 }, { 6585, 0x0000 }, { 6585, 0x0000 }, { 6585, 0x0010 }, { 6586, 0x0000 }, { 6586, 0x0001 }, { 6587, 0x3020 }, { 6590, 0x9011 }, { 6594, 0x0002 }, { 6595, 0x0000 }, /* 0xc000 */ { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x1000 }, { 6596, 0x0000 }, { 6596, 0x1102 }, { 6599, 0x0301 }, { 6602, 0x0000 }, { 6602, 0x0000 }, { 6602, 0x0113 }, { 6606, 0xb02b }, { 6613, 0xb079 }, { 6621, 0x1323 }, { 6627, 0x3b01 }, { 6633, 0x1130 }, { 6637, 0x02b0 }, /* 0xc100 */ { 6641, 0x0111 }, { 6644, 0xf021 }, { 6650, 0xb0d9 }, { 6658, 0x1343 }, { 6664, 0x3b01 }, { 6670, 0x1130 }, { 6674, 0x03b0 }, { 6679, 0x0111 }, { 6682, 0x7020 }, { 6686, 0xb051 }, { 6692, 0x1322 }, { 6697, 0x2001 }, { 6699, 0x1110 }, { 6702, 0x0190 }, { 6705, 0x0111 }, { 6708, 0x300b }, /* 0xc200 */ { 6713, 0xb011 }, { 6718, 0x9302 }, { 6723, 0xab01 }, { 6729, 0x0016 }, { 6732, 0x0100 }, { 6733, 0x0113 }, { 6737, 0x3021 }, { 6741, 0xb011 }, { 6746, 0x0302 }, { 6749, 0x2901 }, { 6753, 0x3130 }, { 6758, 0x02b0 }, { 6762, 0x0000 }, { 6762, 0x3000 }, { 6764, 0xb819 }, { 6771, 0x1b42 }, /* 0xc300 */ { 6777, 0x3301 }, { 6782, 0x1138 }, { 6787, 0x0330 }, { 6791, 0x0000 }, { 6791, 0x0020 }, { 6792, 0x0000 }, { 6792, 0x1300 }, { 6795, 0x3305 }, { 6801, 0x1110 }, { 6804, 0x0000 }, { 6804, 0x0000 }, { 6804, 0x0000 }, { 6804, 0x0001 }, { 6805, 0x9300 }, { 6809, 0x2305 }, { 6814, 0x0130 }, /* 0xc400 */ { 6817, 0x0100 }, { 6818, 0x0001 }, { 6819, 0x1010 }, { 6821, 0x3011 }, { 6825, 0x0100 }, { 6826, 0x0000 }, { 6826, 0x1130 }, { 6830, 0x0230 }, { 6833, 0x0001 }, { 6834, 0x1010 }, { 6836, 0x0000 }, { 6836, 0x1100 }, { 6838, 0x0000 }, { 6838, 0x0000 }, { 6838, 0x0200 }, { 6839, 0x8513 }, /* 0xc500 */ { 6845, 0x1003 }, { 6848, 0x1011 }, { 6851, 0x1300 }, { 6854, 0x2b01 }, { 6859, 0x7730 }, { 6867, 0x63b8 }, { 6875, 0x0113 }, { 6879, 0x303b }, { 6886, 0xb091 }, { 6892, 0x11a2 }, { 6897, 0x0201 }, { 6899, 0x7b30 }, { 6907, 0x57f0 }, { 6916, 0x0113 }, { 6920, 0x702b }, { 6927, 0xf0d1 }, /* 0xc600 */ { 6935, 0x11e3 }, { 6942, 0x1b01 }, { 6947, 0x7130 }, { 6953, 0x0ab9 }, { 6960, 0x0113 }, { 6964, 0x303b }, { 6971, 0x9001 }, { 6974, 0x1302 }, { 6978, 0x2b01 }, { 6983, 0x1130 }, { 6987, 0x02b0 }, { 6991, 0x0713 }, { 6997, 0x302b }, { 7003, 0x3011 }, { 7007, 0x1303 }, { 7012, 0x2301 }, /* 0xc700 */ { 7016, 0x1130 }, { 7020, 0x02b0 }, { 7024, 0x0113 }, { 7028, 0x30ab }, { 7035, 0xb411 }, { 7041, 0x11fe }, { 7050, 0x0901 }, { 7053, 0x7130 }, { 7059, 0x47b8 }, { 7067, 0x05d3 }, { 7074, 0x307b }, { 7082, 0xb011 }, { 7087, 0x5303 }, { 7093, 0x2101 }, { 7096, 0x1110 }, { 7099, 0x0000 }, /* 0xc800 */ { 7099, 0x0513 }, { 7104, 0x306b }, { 7111, 0xb011 }, { 7116, 0x1102 }, { 7119, 0x3301 }, { 7124, 0x0010 }, { 7125, 0x0000 }, { 7125, 0x0513 }, { 7130, 0x38eb }, { 7139, 0xa010 }, { 7142, 0x0102 }, { 7144, 0x3000 }, { 7146, 0x1110 }, { 7149, 0x02b0 }, { 7153, 0x0013 }, { 7156, 0x3020 }, /* 0xc900 */ { 7159, 0xb071 }, { 7166, 0x0102 }, { 7168, 0x1000 }, { 7169, 0x0010 }, { 7170, 0x0000 }, { 7170, 0x0113 }, { 7174, 0x100b }, { 7178, 0x1011 }, { 7181, 0x1300 }, { 7184, 0x2b01 }, { 7189, 0x0000 }, { 7189, 0x0000 }, { 7189, 0x0593 }, { 7195, 0x366b }, { 7204, 0xb095 }, { 7211, 0x1303 }, /* 0xca00 */ { 7216, 0x3b01 }, { 7222, 0x0110 }, { 7224, 0x0200 }, { 7225, 0x0000 }, { 7225, 0x3000 }, { 7227, 0xb011 }, { 7232, 0x0103 }, { 7235, 0x2000 }, { 7236, 0x0010 }, { 7237, 0x0100 }, { 7238, 0x0000 }, { 7238, 0x3000 }, { 7240, 0xb011 }, { 7245, 0x030a }, { 7249, 0x1001 }, { 7251, 0x0010 }, /* 0xcb00 */ { 7252, 0x0100 }, { 7253, 0x0111 }, { 7256, 0x0003 }, { 7258, 0x0000 }, { 7258, 0x1302 }, { 7262, 0x2301 }, { 7266, 0x0010 }, { 7267, 0x0300 }, { 7269, 0x0000 }, { 7269, 0x1000 }, { 7270, 0x0000 }, { 7270, 0x0100 }, { 7271, 0x0000 }, { 7271, 0x0010 }, { 7272, 0x0290 }, { 7275, 0x0000 }, /* 0xcc00 */ { 7275, 0x3000 }, { 7277, 0x3011 }, { 7281, 0x5386 }, { 7288, 0x7b01 }, { 7295, 0x1130 }, { 7299, 0x03b0 }, { 7304, 0x0151 }, { 7308, 0x0021 }, { 7310, 0x0000 }, { 7310, 0x1300 }, { 7313, 0x3b01 }, { 7319, 0x1130 }, { 7323, 0x02b0 }, { 7327, 0x0011 }, { 7329, 0x1010 }, { 7331, 0x0001 }, /* 0xcd00 */ { 7332, 0x1302 }, { 7336, 0x2b01 }, { 7341, 0x1110 }, { 7344, 0x0200 }, { 7345, 0x0000 }, { 7345, 0x1000 }, { 7346, 0xb011 }, { 7351, 0x0102 }, { 7353, 0x0100 }, { 7354, 0x1130 }, { 7358, 0x02b0 }, { 7362, 0x0001 }, { 7363, 0x1010 }, { 7365, 0x0001 }, { 7366, 0x1100 }, { 7368, 0x2b01 }, /* 0xce00 */ { 7373, 0x1110 }, { 7376, 0x0210 }, { 7378, 0x0113 }, { 7382, 0x002b }, { 7386, 0x0000 }, { 7386, 0x9300 }, { 7390, 0x2b03 }, { 7396, 0x1130 }, { 7400, 0x02b0 }, { 7404, 0x0113 }, { 7408, 0x303b }, { 7415, 0x0000 }, { 7415, 0x0002 }, { 7416, 0x0000 }, { 7416, 0x1930 }, { 7421, 0x03b0 }, /* 0xcf00 */ { 7426, 0x0113 }, { 7430, 0x102b }, { 7435, 0xb011 }, { 7440, 0x0103 }, { 7443, 0x0000 }, { 7443, 0x1130 }, { 7447, 0x02b0 }, { 7451, 0x0113 }, { 7455, 0x1021 }, { 7458, 0x0000 }, { 7458, 0x0102 }, { 7460, 0x0001 }, { 7461, 0x0010 }, { 7462, 0x0000 }, { 7462, 0x0113 }, { 7466, 0x102b }, /* 0xd000 */ { 7471, 0x0011 }, { 7473, 0x0102 }, { 7475, 0x2000 }, { 7476, 0x1130 }, { 7480, 0x02b0 }, { 7484, 0x0111 }, { 7487, 0x3001 }, { 7490, 0x3011 }, { 7494, 0x0002 }, { 7495, 0x0000 }, { 7495, 0x1130 }, { 7499, 0x02b0 }, { 7503, 0x0313 }, { 7508, 0x303b }, { 7515, 0xb011 }, { 7520, 0x0103 }, /* 0xd100 */ { 7523, 0x2000 }, { 7524, 0x0000 }, { 7524, 0x0000 }, { 7524, 0x0513 }, { 7529, 0x303b }, { 7536, 0xb011 }, { 7541, 0x1102 }, { 7544, 0x1000 }, { 7545, 0x0110 }, { 7547, 0x0000 }, { 7547, 0x0113 }, { 7551, 0x142b }, { 7557, 0x0001 }, { 7558, 0x0100 }, { 7559, 0x0000 }, { 7559, 0x0110 }, /* 0xd200 */ { 7561, 0x0280 }, { 7563, 0x0001 }, { 7564, 0x3000 }, { 7566, 0xb011 }, { 7571, 0x0102 }, { 7573, 0x1000 }, { 7574, 0x0010 }, { 7575, 0x0000 }, { 7575, 0x0113 }, { 7579, 0x1023 }, { 7583, 0x1011 }, { 7586, 0x9302 }, { 7591, 0x0b05 }, { 7596, 0x1110 }, { 7599, 0x0030 }, { 7601, 0x0113 }, /* 0xd300 */ { 7605, 0x702b }, { 7612, 0xb051 }, { 7618, 0x1323 }, { 7624, 0x3b01 }, { 7630, 0x0030 }, { 7632, 0x0000 }, { 7632, 0x0000 }, { 7632, 0x3000 }, { 7634, 0xb011 }, { 7639, 0x1303 }, { 7644, 0x2b01 }, { 7649, 0x1110 }, { 7652, 0x0330 }, { 7656, 0x0101 }, { 7658, 0x300a }, { 7662, 0xb011 }, /* 0xd400 */ { 7667, 0x0102 }, { 7669, 0x2000 }, { 7670, 0x0000 }, { 7670, 0x0000 }, { 7670, 0x0011 }, { 7672, 0x1000 }, { 7673, 0xa011 }, { 7677, 0x9300 }, { 7681, 0x2b05 }, { 7687, 0x0010 }, { 7688, 0x0200 }, { 7689, 0x0000 }, { 7689, 0x1000 }, { 7690, 0x9011 }, { 7694, 0x1100 }, { 7696, 0x2901 }, /* 0xd500 */ { 7700, 0x1110 }, { 7703, 0x00b0 }, { 7706, 0x0000 }, { 7706, 0x3000 }, { 7708, 0xb011 }, { 7713, 0x1302 }, { 7717, 0x2b21 }, { 7723, 0x1130 }, { 7727, 0x03b0 }, { 7732, 0x0001 }, { 7733, 0x0020 }, { 7734, 0x0000 }, { 7734, 0x1300 }, { 7737, 0x2b05 }, { 7743, 0x1130 }, { 7747, 0x02b0 }, /* 0xd600 */ { 7751, 0x0113 }, { 7755, 0x103b }, { 7761, 0x2011 }, { 7764, 0x1300 }, { 7767, 0x2b21 }, { 7773, 0x1132 }, { 7778, 0x0280 }, { 7780, 0x0013 }, { 7783, 0x3028 }, { 7787, 0xa011 }, { 7791, 0x1102 }, { 7794, 0x0a01 }, { 7797, 0x1130 }, { 7801, 0x0292 }, { 7805, 0x0111 }, { 7808, 0x3021 }, /* 0xd700 */ { 7812, 0x0011 }, { 7814, 0x1302 }, { 7818, 0x2b01 }, { 7823, 0x1130 }, { 7827, 0x0290 }, { 7830, 0x03d3 }, { 7837, 0x122b }, { 7843, 0x3011 }, { 7847, 0x1302 }, { 7851, 0x2b01 }, }; static const Summary16 ksc5601_uni2indx_pagef9[17] = { /* 0xf900 */ { 7856, 0xffff }, { 7872, 0xffff }, { 7888, 0xffff }, { 7904, 0xffff }, { 7920, 0xffff }, { 7936, 0xffff }, { 7952, 0xffff }, { 7968, 0xffff }, { 7984, 0xffff }, { 8000, 0xffff }, { 8016, 0xffff }, { 8032, 0xffff }, { 8048, 0xffff }, { 8064, 0xffff }, { 8080, 0xffff }, { 8096, 0xffff }, /* 0xfa00 */ { 8112, 0x0fff }, }; static const Summary16 ksc5601_uni2indx_pageff[15] = { /* 0xff00 */ { 8124, 0xfffe }, { 8139, 0xffff }, { 8155, 0xffff }, { 8171, 0xffff }, { 8187, 0xffff }, { 8203, 0x7fff }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x006f }, }; static int ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { const Summary16 *summary = NULL; if (wc >= 0x0000 && wc < 0x0460) summary = &ksc5601_uni2indx_page00[(wc>>4)]; else if (wc >= 0x2000 && wc < 0x2670) summary = &ksc5601_uni2indx_page20[(wc>>4)-0x200]; else if (wc >= 0x3000 && wc < 0x33e0) summary = &ksc5601_uni2indx_page30[(wc>>4)-0x300]; else if (wc >= 0x4e00 && wc < 0x9fa0) summary = &ksc5601_uni2indx_page4e[(wc>>4)-0x4e0]; else if (wc >= 0xac00 && wc < 0xd7a0) summary = &ksc5601_uni2indx_pageac[(wc>>4)-0xac0]; else if (wc >= 0xf900 && wc < 0xfa10) summary = &ksc5601_uni2indx_pagef9[(wc>>4)-0xf90]; else if (wc >= 0xff00 && wc < 0xfff0) summary = &ksc5601_uni2indx_pageff[(wc>>4)-0xff0]; if (summary) { unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); c = ksc5601_2charset[summary->indx + used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/loops.h0100644000000000000000000000173407206266736014457 0ustar rootroot/* Copyright (C) 2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU ICONV Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This file defines all the loops. */ #include "loop_unicode.h" #include "loop_wchar.h" recode-3.6/libiconv/loop_unicode.h0100644000000000000000000002066207206266736016003 0ustar rootroot/* Copyright (C) 1999-2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU ICONV Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This file defines the conversion loop via Unicode as a pivot encoding. */ static size_t unicode_loop_convert (iconv_t icd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft) { conv_t cd = (conv_t) icd; size_t result = 0; const unsigned char* inptr = (const unsigned char*) *inbuf; size_t inleft = *inbytesleft; unsigned char* outptr = (unsigned char*) *outbuf; size_t outleft = *outbytesleft; while (inleft > 0) { ucs4_t wc; int incount; int outcount; incount = cd->ifuncs.xxx_mbtowc(cd,&wc,inptr,inleft); if (incount <= 0) { if (incount == 0) { /* Case 1: invalid input */ errno = EILSEQ; result = -1; break; } if (incount == -1) { /* Case 2: not enough bytes available to detect anything */ errno = EINVAL; result = -1; break; } /* Case 3: k bytes read, but only a shift sequence */ incount = -1-incount; } else { /* Case 4: k bytes read, making up a wide character */ if (outleft == 0) { errno = E2BIG; result = -1; break; } outcount = cd->ofuncs.xxx_wctomb(cd,outptr,wc,outleft); if (outcount != 0) goto outcount_ok; /* Try transliteration. */ result++; if (cd->transliterate) { if (cd->oflags & HAVE_HANGUL_JAMO) { /* Decompose Hangul into Jamo. Use double-width Jamo (contained in all Korean encodings and ISO-2022-JP-2), not half-width Jamo (contained in Unicode only). */ ucs4_t buf[3]; int ret = johab_hangul_decompose(cd,buf,wc); if (ret != RET_ILSEQ) { /* we know 1 <= ret <= 3 */ state_t backup_state = cd->ostate; unsigned char* backup_outptr = outptr; size_t backup_outleft = outleft; int i, sub_outcount; for (i = 0; i < ret; i++) { if (outleft == 0) { sub_outcount = RET_TOOSMALL; goto johab_hangul_failed; } sub_outcount = cd->ofuncs.xxx_wctomb(cd,outptr,buf[i],outleft); if (sub_outcount <= 0) goto johab_hangul_failed; if (!(sub_outcount <= outleft)) abort(); outptr += sub_outcount; outleft -= sub_outcount; } goto char_done; johab_hangul_failed: cd->ostate = backup_state; outptr = backup_outptr; outleft = backup_outleft; if (sub_outcount < 0) { errno = E2BIG; result = -1; break; } } } { /* Try to use a variant, but postfix it with U+303E IDEOGRAPHIC VARIATION INDICATOR (cf. Ken Lunde's "CJKV information processing", p. 188). */ int indx = -1; if (wc == 0x3006) indx = 0; else if (wc == 0x30f6) indx = 1; else if (wc >= 0x4e00 && wc < 0xa000) indx = cjk_variants_indx[wc-0x4e00]; if (indx >= 0) { for (;; indx++) { ucs4_t buf[2]; unsigned short variant = cjk_variants[indx]; unsigned short last = variant & 0x8000; variant &= 0x7fff; variant += 0x3000; buf[0] = variant; buf[1] = 0x303e; { state_t backup_state = cd->ostate; unsigned char* backup_outptr = outptr; size_t backup_outleft = outleft; int i, sub_outcount; for (i = 0; i < 2; i++) { if (outleft == 0) { sub_outcount = RET_TOOSMALL; goto variant_failed; } sub_outcount = cd->ofuncs.xxx_wctomb(cd,outptr,buf[i],outleft); if (sub_outcount <= 0) goto variant_failed; if (!(sub_outcount <= outleft)) abort(); outptr += sub_outcount; outleft -= sub_outcount; } goto char_done; variant_failed: cd->ostate = backup_state; outptr = backup_outptr; outleft = backup_outleft; if (sub_outcount < 0) { errno = E2BIG; result = -1; break; } } if (last) break; } } } if (wc >= 0x2018 && wc <= 0x201a) { /* Special case for quotation marks 0x2018, 0x2019, 0x201a */ ucs4_t substitute = (cd->oflags & HAVE_QUOTATION_MARKS ? (wc == 0x201a ? 0x2018 : wc) : (cd->oflags & HAVE_ACCENTS ? (wc==0x2019 ? 0x00b4 : 0x0060) /* use accents */ : 0x0027 /* use apostrophe */ ) ); outcount = cd->ofuncs.xxx_wctomb(cd,outptr,substitute,outleft); if (outcount != 0) goto outcount_ok; } { /* Use the transliteration table. */ int indx = translit_index(wc); if (indx >= 0) { const unsigned char * cp = &translit_data[indx]; unsigned int num = *cp++; state_t backup_state = cd->ostate; unsigned char* backup_outptr = outptr; size_t backup_outleft = outleft; unsigned int i; int sub_outcount; for (i = 0; i < num; i++) { if (outleft == 0) { sub_outcount = RET_TOOSMALL; goto translit_failed; } sub_outcount = cd->ofuncs.xxx_wctomb(cd,outptr,cp[i],outleft); if (sub_outcount <= 0) goto translit_failed; if (!(sub_outcount <= outleft)) abort(); outptr += sub_outcount; outleft -= sub_outcount; } goto char_done; translit_failed: cd->ostate = backup_state; outptr = backup_outptr; outleft = backup_outleft; if (sub_outcount < 0) { errno = E2BIG; result = -1; break; } } } } outcount = cd->ofuncs.xxx_wctomb(cd,outptr,0xFFFD,outleft); if (outcount != 0) goto outcount_ok; errno = EILSEQ; result = -1; break; outcount_ok: if (outcount < 0) { errno = E2BIG; result = -1; break; } if (!(outcount <= outleft)) abort(); outptr += outcount; outleft -= outcount; char_done: ; } if (!(incount <= inleft)) abort(); inptr += incount; inleft -= incount; } *inbuf = (const char*) inptr; *inbytesleft = inleft; *outbuf = (char*) outptr; *outbytesleft = outleft; return result; } static size_t unicode_loop_reset (iconv_t icd, char* * outbuf, size_t *outbytesleft) { conv_t cd = (conv_t) icd; if (outbuf == NULL || *outbuf == NULL) { /* Reset the states. */ memset(&cd->istate,'\0',sizeof(state_t)); memset(&cd->ostate,'\0',sizeof(state_t)); return 0; } else { if (cd->ofuncs.xxx_reset) { int outcount = cd->ofuncs.xxx_reset(cd, (unsigned char *) *outbuf, *outbytesleft); if (outcount < 0) { errno = E2BIG; return -1; } *outbuf += outcount; *outbytesleft -= outcount; } memset(&cd->istate,'\0',sizeof(state_t)); memset(&cd->ostate,'\0',sizeof(state_t)); return 0; } } recode-3.6/libiconv/loop_wchar.h0100644000000000000000000001774207206266736015466 0ustar rootroot/* Copyright (C) 2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU ICONV Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This file defines three conversion loops: - from wchar_t to anything else, - from anything else to wchar_t, - from wchar_t to wchar_t. */ #if HAVE_WCRTOMB || HAVE_MBRTOWC #include #define BUF_SIZE 64 /* assume MB_LEN_MAX <= 64 */ #else typedef int mbstate_t; #endif /* * The first two conversion loops have an extended conversion descriptor. */ struct wchar_conv_struct { struct conv_struct parent; mbstate_t state; }; #if HAVE_WCRTOMB /* From wchar_t to anything else. */ static size_t wchar_from_loop_convert (iconv_t icd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft) { struct wchar_conv_struct * wcd = (struct wchar_conv_struct *) icd; size_t result = 0; while (*inbytesleft >= sizeof(wchar_t)) { const wchar_t * inptr = (const wchar_t *) *inbuf; size_t inleft = *inbytesleft; char buf[BUF_SIZE]; mbstate_t state = wcd->state; size_t bufcount = 0; while (inleft >= sizeof(wchar_t)) { /* Convert one wchar_t to multibyte representation. */ size_t count = wcrtomb(buf+bufcount,*inptr,&state); if (count == (size_t)(-1)) { /* Invalid input. */ errno = EILSEQ; return -1; } inptr++; inleft -= sizeof(wchar_t); bufcount += count; if (count == 0) { /* Continue, append next wchar_t. */ } else { /* Attempt to convert the accumulated multibyte representations to the target encoding. */ const char* bufptr = buf; size_t bufleft = bufcount; char* outptr = *outbuf; size_t outleft = *outbytesleft; size_t res = unicode_loop_convert(&wcd->parent, &bufptr,&bufleft, &outptr,&outleft); if (res == (size_t)(-1)) { if (errno == EILSEQ) /* Invalid input. */ return -1; else if (errno == E2BIG) /* Output buffer too small. */ return -1; else if (errno == EINVAL) { /* Continue, append next wchar_t, but avoid buffer overrun. */ if (bufcount + MB_CUR_MAX > BUF_SIZE) abort(); } else abort(); } else { /* Successful conversion. */ wcd->state = state; *inbuf = (const char *) inptr; *inbytesleft = inleft; *outbuf = outptr; *outbytesleft = outleft; result += res; break; } } } } return result; } static size_t wchar_from_loop_reset (iconv_t icd, char* * outbuf, size_t *outbytesleft) { struct wchar_conv_struct * wcd = (struct wchar_conv_struct *) icd; if (outbuf == NULL || *outbuf == NULL) { /* Reset the states. */ memset(&wcd->state,'\0',sizeof(mbstate_t)); return unicode_loop_reset(&wcd->parent,NULL,NULL); } else { if (!mbsinit(&wcd->state)) { mbstate_t state = wcd->state; char buf[BUF_SIZE]; size_t bufcount = wcrtomb(buf,(wchar_t)0,&state); if (bufcount == (size_t)(-1) || bufcount == 0 || buf[bufcount-1] != '\0') abort(); else { const char* bufptr = buf; size_t bufleft = bufcount-1; char* outptr = *outbuf; size_t outleft = *outbytesleft; size_t res = unicode_loop_convert(&wcd->parent, &bufptr,&bufleft, &outptr,&outleft); if (res == (size_t)(-1)) { if (errno == E2BIG) return -1; else abort(); } else { res = unicode_loop_reset(&wcd->parent,&outptr,&outleft); if (res == (size_t)(-1)) return res; else { /* Successful. */ wcd->state = state; *outbuf = outptr; *outbytesleft = outleft; return 0; } } } } else return unicode_loop_reset(&wcd->parent,outbuf,outbytesleft); } } #endif #if HAVE_MBRTOWC /* From anything else to wchar_t. */ static size_t wchar_to_loop_convert (iconv_t icd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft) { struct wchar_conv_struct * wcd = (struct wchar_conv_struct *) icd; size_t result = 0; while (*inbytesleft > 0) { size_t try; for (try = 1; try <= *inbytesleft; try++) { char buf[BUF_SIZE]; const char* inptr = *inbuf; size_t inleft = try; char* bufptr = buf; size_t bufleft = BUF_SIZE; size_t res = unicode_loop_convert(&wcd->parent, &inptr,&inleft, &bufptr,&bufleft); if (res == (size_t)(-1)) { if (errno == EILSEQ) /* Invalid input. */ return -1; else if (errno == EINVAL) { /* Incomplete input. Next try with one more input byte. */ } else /* E2BIG shouldn't occur. */ abort(); } else { /* Successful conversion. */ size_t bufcount = bufptr-buf; /* = BUF_SIZE-bufleft */ mbstate_t state = wcd->state; wchar_t wc; res = mbrtowc(&wc,buf,bufcount,&state); if (res == (size_t)(-2)) { /* Next try with one more input byte. */ } else if (res == (size_t)(-1)) { /* Invalid input. */ return -1; } else { if (*outbytesleft < sizeof(wchar_t)) { errno = E2BIG; return -1; } *(wchar_t*) *outbuf = wc; *outbuf += sizeof(wchar_t); *outbytesleft -= sizeof(wchar_t); *inbuf += try; *inbytesleft -= try; result += res; break; } } } } return result; } static size_t wchar_to_loop_reset (iconv_t icd, char* * outbuf, size_t *outbytesleft) { struct wchar_conv_struct * wcd = (struct wchar_conv_struct *) icd; size_t res = unicode_loop_reset(&wcd->parent,outbuf,outbytesleft); if (res == (size_t)(-1)) return res; memset(&wcd->state,0,sizeof(mbstate_t)); return 0; } #endif /* From wchar_t to wchar_t. */ static size_t wchar_id_loop_convert (iconv_t icd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft) { const wchar_t* inptr = (const wchar_t*) *inbuf; size_t inleft = *inbytesleft / sizeof(wchar_t); wchar_t* outptr = (wchar_t*) *outbuf; size_t outleft = *outbytesleft / sizeof(wchar_t); size_t count = (inleft <= outleft ? inleft : outleft); if (count > 0) { *inbytesleft -= count * sizeof(wchar_t); *outbytesleft -= count * sizeof(wchar_t); do *outptr++ = *inptr++; while (--count > 0); *inbuf = (const char*) inptr; *outbuf = (char*) outptr; } return 0; } static size_t wchar_id_loop_reset (iconv_t icd, char* * outbuf, size_t *outbytesleft) { return 0; } recode-3.6/libiconv/mac_arabic.h0100644000000000000000000001100107206266437015346 0ustar rootroot /* * MacArabic */ static const unsigned short mac_arabic_2uni[128] = { /* 0x80 */ 0x00c4, 0x00a0, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x06ba, 0x00ab, 0x00e7, 0x00e9, 0x00e8, /* 0x90 */ 0x00ea, 0x00eb, 0x00ed, 0x2026, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00bb, 0x00f4, 0x00f6, 0x00f7, 0x00fa, 0x00f9, 0x00fb, 0x00fc, /* 0xa0 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x066a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0xfffd, 0xfffd, 0xfffd, /* 0xb0 */ 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f, /* 0xc0 */ 0x066d, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, /* 0xd0 */ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, 0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xe0 */ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, /* 0xf0 */ 0x0650, 0x0651, 0x0652, 0x067e, 0x0679, 0x0686, 0x06d5, 0x06a4, 0x06af, 0x0688, 0x0691, 0xfffd, 0xfffd, 0xfffd, 0x0698, 0x06d2, }; static int mac_arabic_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = mac_arabic_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mac_arabic_page00[96] = { 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, /* 0xc0-0xc7 */ 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 0x88, 0x87, 0x89, 0x00, 0x8a, 0x00, 0x00, 0x8d, /* 0xe0-0xe7 */ 0x8f, 0x8e, 0x90, 0x91, 0x00, 0x92, 0x94, 0x95, /* 0xe8-0xef */ 0x00, 0x96, 0x00, 0x97, 0x99, 0x00, 0x9a, 0x9b, /* 0xf0-0xf7 */ 0x00, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; static const unsigned char mac_arabic_page06[208] = { 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */ 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x60-0x67 */ 0xb8, 0xb9, 0xa5, 0x00, 0x00, 0xc0, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x00, /* 0x80-0x87 */ 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0x00, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0xff, 0x00, 0x00, 0xf6, 0x00, 0x00, /* 0xd0-0xd7 */ }; static int mac_arabic_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = mac_arabic_page00[wc-0x00a0]; else if (wc >= 0x0608 && wc < 0x06d8) c = mac_arabic_page06[wc-0x0608]; else if (wc == 0x2026) c = 0x93; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_centraleurope.h0100644000000000000000000001163407206266437017011 0ustar rootroot /* * MacCentralEurope */ static const unsigned short mac_centraleurope_2uni[128] = { /* 0x80 */ 0x00c4, 0x0100, 0x0101, 0x00c9, 0x0104, 0x00d6, 0x00dc, 0x00e1, 0x0105, 0x010c, 0x00e4, 0x010d, 0x0106, 0x0107, 0x00e9, 0x0179, /* 0x90 */ 0x017a, 0x010e, 0x00ed, 0x010f, 0x0112, 0x0113, 0x0116, 0x00f3, 0x0117, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x011a, 0x011b, 0x00fc, /* 0xa0 */ 0x2020, 0x00b0, 0x0118, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x0119, 0x00a8, 0x2260, 0x0123, 0x012e, /* 0xb0 */ 0x012f, 0x012a, 0x2264, 0x2265, 0x012b, 0x0136, 0x2202, 0x2211, 0x0142, 0x013b, 0x013c, 0x013d, 0x013e, 0x0139, 0x013a, 0x0145, /* 0xc0 */ 0x0146, 0x0143, 0x00ac, 0x221a, 0x0144, 0x0147, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x0148, 0x0150, 0x00d5, 0x0151, 0x014c, /* 0xd0 */ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x014d, 0x0154, 0x0155, 0x0158, 0x2039, 0x203a, 0x0159, 0x0156, /* 0xe0 */ 0x0157, 0x0160, 0x201a, 0x201e, 0x0161, 0x015a, 0x015b, 0x00c1, 0x0164, 0x0165, 0x00cd, 0x017d, 0x017e, 0x016a, 0x00d3, 0x00d4, /* 0xf0 */ 0x016b, 0x016e, 0x00da, 0x016f, 0x0170, 0x0171, 0x0172, 0x0173, 0x00dd, 0x00fd, 0x0137, 0x017b, 0x0141, 0x017c, 0x0122, 0x02c7, }; static int mac_centraleurope_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) mac_centraleurope_2uni[c-0x80]; return 1; } static const unsigned char mac_centraleurope_page00[224] = { 0xca, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa4, /* 0xa0-0xa7 */ 0xac, 0xa9, 0x00, 0xc7, 0xc2, 0x00, 0xa8, 0x00, /* 0xa8-0xaf */ 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0xe7, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x83, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0xee, 0xef, 0xcd, 0x85, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0xf2, 0x00, 0x86, 0xf8, 0x00, 0xa7, /* 0xd8-0xdf */ 0x00, 0x87, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */ 0x00, 0x8e, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x97, 0x99, 0x9b, 0x9a, 0xd6, /* 0xf0-0xf7 */ 0x00, 0x00, 0x9c, 0x00, 0x9f, 0xf9, 0x00, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0x81, 0x82, 0x00, 0x00, 0x84, 0x88, 0x8c, 0x8d, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x89, 0x8b, 0x91, 0x93, /* 0x08-0x0f */ 0x00, 0x00, 0x94, 0x95, 0x00, 0x00, 0x96, 0x98, /* 0x10-0x17 */ 0xa2, 0xab, 0x9d, 0x9e, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0xfe, 0xae, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0xb1, 0xb4, 0x00, 0x00, 0xaf, 0xb0, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xfa, /* 0x30-0x37 */ 0x00, 0xbd, 0xbe, 0xb9, 0xba, 0xbb, 0xbc, 0x00, /* 0x38-0x3f */ 0x00, 0xfc, 0xb8, 0xc1, 0xc4, 0xbf, 0xc0, 0xc5, /* 0x40-0x47 */ 0xcb, 0x00, 0x00, 0x00, 0xcf, 0xd8, 0x00, 0x00, /* 0x48-0x4f */ 0xcc, 0xce, 0x00, 0x00, 0xd9, 0xda, 0xdf, 0xe0, /* 0x50-0x57 */ 0xdb, 0xde, 0xe5, 0xe6, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xe1, 0xe4, 0x00, 0x00, 0xe8, 0xe9, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0xed, 0xf0, 0x00, 0x00, 0xf1, 0xf3, /* 0x68-0x6f */ 0xf4, 0xf5, 0xf6, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x8f, 0x90, 0xfb, 0xfd, 0xeb, 0xec, 0x00, /* 0x78-0x7f */ }; static const unsigned char mac_centraleurope_page20[48] = { 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00, /* 0x18-0x1f */ 0xa0, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ }; static const unsigned char mac_centraleurope_page22[32] = { 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ }; static const unsigned char mac_centraleurope_page22_1[8] = { 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; static int mac_centraleurope_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0180) c = mac_centraleurope_page00[wc-0x00a0]; else if (wc == 0x02c7) c = 0xff; else if (wc >= 0x2010 && wc < 0x2040) c = mac_centraleurope_page20[wc-0x2010]; else if (wc == 0x2122) c = 0xaa; else if (wc >= 0x2200 && wc < 0x2220) c = mac_centraleurope_page22[wc-0x2200]; else if (wc >= 0x2260 && wc < 0x2268) c = mac_centraleurope_page22_1[wc-0x2260]; else if (wc == 0x25ca) c = 0xd7; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_croatian.h0100644000000000000000000001421307206266437015735 0ustar rootroot /* * MacCroatian */ static const unsigned short mac_croatian_2uni[128] = { /* 0x80 */ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, /* 0x90 */ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, /* 0xa0 */ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x0160, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x017d, 0x00d8, /* 0xb0 */ 0x221e, 0x00b1, 0x2264, 0x2265, 0x2206, 0x00b5, 0x2202, 0x2211, 0x220f, 0x0161, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x017e, 0x00f8, /* 0xc0 */ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0106, 0x00ab, 0x010c, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, /* 0xd0 */ 0x0110, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0xfffd, 0x00a9, 0x2044, 0x00a4, 0x2039, 0x203a, 0x00c6, 0x00bb, /* 0xe0 */ 0x2013, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x0107, 0x00c1, 0x010d, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, /* 0xf0 */ 0x0111, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x03c0, 0x00cb, 0x02da, 0x00b8, 0x00ca, 0x00e6, 0x02c7, }; static int mac_croatian_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = mac_croatian_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mac_croatian_page00[248] = { 0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0x00, 0x00, 0xa4, /* 0xa0-0xa7 */ 0xac, 0xd9, 0xbb, 0xc7, 0xc2, 0x00, 0xa8, 0xf8, /* 0xa8-0xaf */ 0xa1, 0xb1, 0x00, 0x00, 0xab, 0xb5, 0xa6, 0xe1, /* 0xb0-0xb7 */ 0xfc, 0x00, 0xbc, 0xdf, 0x00, 0x00, 0x00, 0xc0, /* 0xb8-0xbf */ 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xde, 0x82, /* 0xc0-0xc7 */ 0xe9, 0x83, 0xfd, 0xfa, 0xed, 0xea, 0xeb, 0xec, /* 0xc8-0xcf */ 0x00, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x00, /* 0xd0-0xd7 */ 0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0x00, 0x00, 0xa7, /* 0xd8-0xdf */ 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xfe, 0x8d, /* 0xe0-0xe7 */ 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0xe8-0xef */ 0x00, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, /* 0xf0-0xf7 */ 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe6, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char mac_croatian_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0xfb, 0x00, 0xf7, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char mac_croatian_page20[56] = { 0x00, 0x00, 0x00, 0xe0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00, /* 0x18-0x1f */ 0xa0, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x40-0x47 */ }; static const unsigned char mac_croatian_page21[8] = { 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xbd, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_croatian_page22[104] = { 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb4, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, /* 0x08-0x0f */ 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; static int mac_croatian_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0198) c = mac_croatian_page00[wc-0x00a0]; else if (wc >= 0x02c0 && wc < 0x02e0) c = mac_croatian_page02[wc-0x02c0]; else if (wc == 0x03c0) c = 0xf9; else if (wc >= 0x2010 && wc < 0x2048) c = mac_croatian_page20[wc-0x2010]; else if (wc >= 0x2120 && wc < 0x2128) c = mac_croatian_page21[wc-0x2120]; else if (wc >= 0x2200 && wc < 0x2268) c = mac_croatian_page22[wc-0x2200]; else if (wc == 0x25ca) c = 0xd7; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_cyrillic.h0100644000000000000000000001124507206266437015751 0ustar rootroot /* * MacCyrillic */ static const unsigned short mac_cyrillic_2uni[128] = { /* 0x80 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, /* 0x90 */ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, /* 0xa0 */ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406, 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, /* 0xb0 */ 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x2202, 0x0408, 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a, /* 0xc0 */ 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455, /* 0xd0 */ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e, 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f, /* 0xe0 */ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, /* 0xf0 */ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4, }; static int mac_cyrillic_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c >= 0x80) *pwc = (ucs4_t) mac_cyrillic_2uni[c-0x80]; else *pwc = (ucs4_t) c; return 1; } static const unsigned char mac_cyrillic_page00[32] = { 0xca, 0x00, 0xa2, 0xa3, 0xff, 0x00, 0x00, 0xa4, /* 0xa0-0xa7 */ 0x00, 0xa9, 0x00, 0xc7, 0xc2, 0x00, 0xa8, 0x00, /* 0xa8-0xaf */ 0xa1, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xa6, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ }; static const unsigned char mac_cyrillic_page04[96] = { 0x00, 0xdd, 0xab, 0xae, 0xb8, 0xc1, 0xa7, 0xba, /* 0x00-0x07 */ 0xb7, 0xbc, 0xbe, 0xcb, 0xcd, 0x00, 0xd8, 0xda, /* 0x08-0x0f */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x10-0x17 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x18-0x1f */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x20-0x27 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x28-0x2f */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, /* 0x48-0x4f */ 0x00, 0xde, 0xac, 0xaf, 0xb9, 0xcf, 0xb4, 0xbb, /* 0x50-0x57 */ 0xc0, 0xbd, 0xbf, 0xcc, 0xce, 0x00, 0xd9, 0xdb, /* 0x58-0x5f */ }; static const unsigned char mac_cyrillic_page20[24] = { 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0x00, 0x00, 0xd2, 0xd3, 0xd7, 0x00, /* 0x18-0x1f */ 0xa0, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_cyrillic_page21[24] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_cyrillic_page22[104] = { 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; static int mac_cyrillic_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00c0) c = mac_cyrillic_page00[wc-0x00a0]; else if (wc == 0x00f7) c = 0xd6; else if (wc == 0x0192) c = 0xc4; else if (wc >= 0x0400 && wc < 0x0460) c = mac_cyrillic_page04[wc-0x0400]; else if (wc >= 0x2010 && wc < 0x2028) c = mac_cyrillic_page20[wc-0x2010]; else if (wc >= 0x2110 && wc < 0x2128) c = mac_cyrillic_page21[wc-0x2110]; else if (wc >= 0x2200 && wc < 0x2268) c = mac_cyrillic_page22[wc-0x2200]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_greek.h0100644000000000000000000001053007206266437015230 0ustar rootroot /* * MacGreek */ static const unsigned short mac_greek_2uni[128] = { /* 0x80 */ 0x00c4, 0x00b9, 0x00b2, 0x00c9, 0x00b3, 0x00d6, 0x00dc, 0x0385, 0x00e0, 0x00e2, 0x00e4, 0x0384, 0x00a8, 0x00e7, 0x00e9, 0x00e8, /* 0x90 */ 0x00ea, 0x00eb, 0x00a3, 0x2122, 0x00ee, 0x00ef, 0x2022, 0x00bd, 0x2030, 0x00f4, 0x00f6, 0x00a6, 0x00ad, 0x00f9, 0x00fb, 0x00fc, /* 0xa0 */ 0x2020, 0x0393, 0x0394, 0x0398, 0x039b, 0x039e, 0x03a0, 0x00df, 0x00ae, 0x00a9, 0x03a3, 0x03aa, 0x00a7, 0x2260, 0x00b0, 0x0387, /* 0xb0 */ 0x0391, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x0392, 0x0395, 0x0396, 0x0397, 0x0399, 0x039a, 0x039c, 0x03a6, 0x03ab, 0x03a8, 0x03a9, /* 0xc0 */ 0x03ac, 0x039d, 0x00ac, 0x039f, 0x03a1, 0x2248, 0x03a4, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x03a5, 0x03a7, 0x0386, 0x0388, 0x0153, /* 0xd0 */ 0x2013, 0x2015, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0389, 0x038a, 0x038c, 0x038e, 0x03ad, 0x03ae, 0x03af, 0x03cc, 0x038f, /* 0xe0 */ 0x03cd, 0x03b1, 0x03b2, 0x03c8, 0x03b4, 0x03b5, 0x03c6, 0x03b3, 0x03b7, 0x03b9, 0x03be, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf, /* 0xf0 */ 0x03c0, 0x03ce, 0x03c1, 0x03c3, 0x03c4, 0x03b8, 0x03c9, 0x03c2, 0x03c7, 0x03c5, 0x03b6, 0x03ca, 0x03cb, 0x0390, 0x03b0, 0xfffd, }; static int mac_greek_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = mac_greek_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mac_greek_page00[96] = { 0xca, 0x00, 0x00, 0x92, 0x00, 0xb4, 0x9b, 0xac, /* 0xa0-0xa7 */ 0x8c, 0xa9, 0x00, 0xc7, 0xc2, 0x9c, 0xa8, 0x00, /* 0xa8-0xaf */ 0xae, 0xb1, 0x82, 0x84, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0x00, 0x81, 0x00, 0xc8, 0x00, 0x97, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0xa7, /* 0xd8-0xdf */ 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x00, 0x8d, /* 0xe0-0xe7 */ 0x8f, 0x8e, 0x90, 0x91, 0x00, 0x00, 0x94, 0x95, /* 0xe8-0xef */ 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x9a, 0xd6, /* 0xf0-0xf7 */ 0x00, 0x9d, 0x00, 0x9e, 0x9f, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; static const unsigned char mac_greek_page03[80] = { 0x00, 0x00, 0x00, 0x00, 0x8b, 0x87, 0xcd, 0xaf, /* 0x80-0x87 */ 0xce, 0xd7, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0xdf, /* 0x88-0x8f */ 0xfd, 0xb0, 0xb5, 0xa1, 0xa2, 0xb6, 0xb7, 0xb8, /* 0x90-0x97 */ 0xa3, 0xb9, 0xba, 0xa4, 0xbb, 0xc1, 0xa5, 0xc3, /* 0x98-0x9f */ 0xa6, 0xc4, 0x00, 0xaa, 0xc6, 0xcb, 0xbc, 0xcc, /* 0xa0-0xa7 */ 0xbe, 0xbf, 0xab, 0xbd, 0xc0, 0xdb, 0xdc, 0xdd, /* 0xa8-0xaf */ 0xfe, 0xe1, 0xe2, 0xe7, 0xe4, 0xe5, 0xfa, 0xe8, /* 0xb0-0xb7 */ 0xf5, 0xe9, 0xeb, 0xec, 0xed, 0xee, 0xea, 0xef, /* 0xb8-0xbf */ 0xf0, 0xf2, 0xf7, 0xf3, 0xf4, 0xf9, 0xe6, 0xf8, /* 0xc0-0xc7 */ 0xe3, 0xf6, 0xfb, 0xfc, 0xde, 0xe0, 0xf1, 0x00, /* 0xc8-0xcf */ }; static const unsigned char mac_greek_page20[40] = { 0x00, 0x00, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0x00, 0x00, 0xd2, 0xd3, 0x00, 0x00, /* 0x18-0x1f */ 0xa0, 0x00, 0x96, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ }; static const unsigned char mac_greek_page22[32] = { 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; static int mac_greek_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = mac_greek_page00[wc-0x00a0]; else if (wc == 0x0153) c = 0xcf; else if (wc >= 0x0380 && wc < 0x03d0) c = mac_greek_page03[wc-0x0380]; else if (wc >= 0x2010 && wc < 0x2038) c = mac_greek_page20[wc-0x2010]; else if (wc == 0x2122) c = 0x93; else if (wc >= 0x2248 && wc < 0x2268) c = mac_greek_page22[wc-0x2248]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_hebrew.h0100644000000000000000000001041307206266437015407 0ustar rootroot /* * MacHebrew */ static const unsigned short mac_hebrew_2uni[128] = { /* 0x80 */ 0x00c4, 0xfb1f, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, /* 0x90 */ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, /* 0xa0 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x20aa, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xb0 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, /* 0xc0 */ 0xfffd, 0x201e, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x05bc, 0xfb4b, 0xfb35, 0x2026, 0x00a0, 0x05b8, 0x05b7, 0x05b5, 0x05b6, 0x05b4, /* 0xd0 */ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xfb2a, 0xfb2b, 0x05bf, 0x05b0, 0x05b2, 0x05b1, 0x05bb, 0x05b9, 0xfffd, 0x05b3, /* 0xe0 */ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, /* 0xf0 */ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; static int mac_hebrew_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else if (c >= 0x80) { unsigned short wc = mac_hebrew_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mac_hebrew_page00[96] = { 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, /* 0xc0-0xc7 */ 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0xd0-0xd7 */ 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0xd8-0xdf */ 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0x00, 0x8d, /* 0xe0-0xe7 */ 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0xe8-0xef */ 0x00, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0x00, /* 0xf0-0xf7 */ 0x00, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; static const unsigned char mac_hebrew_page05[64] = { 0xd9, 0xdb, 0xda, 0xdf, 0xcf, 0xcd, 0xce, 0xcc, /* 0xb0-0xb7 */ 0xcb, 0xdd, 0x00, 0xdc, 0xc6, 0x00, 0x00, 0xd8, /* 0xb8-0xbf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */ }; static const unsigned char mac_hebrew_page20[24] = { 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0x00, 0x00, 0xd2, 0xd3, 0xc1, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_hebrew_pagefb[56] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0xd6, 0xd7, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ }; static int mac_hebrew_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = mac_hebrew_page00[wc-0x00a0]; else if (wc >= 0x05b0 && wc < 0x05f0) c = mac_hebrew_page05[wc-0x05b0]; else if (wc >= 0x2010 && wc < 0x2028) c = mac_hebrew_page20[wc-0x2010]; else if (wc == 0x20aa) c = 0xa6; else if (wc >= 0xfb18 && wc < 0xfb50) c = mac_hebrew_pagefb[wc-0xfb18]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_iceland.h0100644000000000000000000001355107206266437015540 0ustar rootroot /* * MacIceland */ static const unsigned short mac_iceland_2uni[128] = { /* 0x80 */ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, /* 0x90 */ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, /* 0xa0 */ 0x00dd, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, /* 0xb0 */ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x00e6, 0x00f8, /* 0xc0 */ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, /* 0xd0 */ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x00ff, 0x0178, 0x2044, 0x00a4, 0x00d0, 0x00f0, 0x00de, 0x00fe, /* 0xe0 */ 0x00fd, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, /* 0xf0 */ 0xfffd, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, }; static int mac_iceland_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = mac_iceland_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mac_iceland_page00[96] = { 0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0xb4, 0x00, 0xa4, /* 0xa0-0xa7 */ 0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x00, 0xa8, 0xf8, /* 0xa8-0xaf */ 0xa1, 0xb1, 0x00, 0x00, 0xab, 0xb5, 0xa6, 0xe1, /* 0xb0-0xb7 */ 0xfc, 0x00, 0xbc, 0xc8, 0x00, 0x00, 0x00, 0xc0, /* 0xb8-0xbf */ 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, /* 0xc0-0xc7 */ 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, /* 0xc8-0xcf */ 0xdc, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x00, /* 0xd0-0xd7 */ 0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0xa0, 0xde, 0xa7, /* 0xd8-0xdf */ 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, /* 0xe0-0xe7 */ 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0xe8-0xef */ 0xdd, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, /* 0xf0-0xf7 */ 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0xe0, 0xdf, 0xd8, /* 0xf8-0xff */ }; static const unsigned char mac_iceland_page01[104] = { 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char mac_iceland_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char mac_iceland_page20[56] = { 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x40-0x47 */ }; static const unsigned char mac_iceland_page21[8] = { 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xbd, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_iceland_page22[104] = { 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, /* 0x08-0x0f */ 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; static int mac_iceland_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = mac_iceland_page00[wc-0x00a0]; else if (wc >= 0x0130 && wc < 0x0198) c = mac_iceland_page01[wc-0x0130]; else if (wc >= 0x02c0 && wc < 0x02e0) c = mac_iceland_page02[wc-0x02c0]; else if (wc == 0x03c0) c = 0xb9; else if (wc >= 0x2010 && wc < 0x2048) c = mac_iceland_page20[wc-0x2010]; else if (wc >= 0x2120 && wc < 0x2128) c = mac_iceland_page21[wc-0x2120]; else if (wc >= 0x2200 && wc < 0x2268) c = mac_iceland_page22[wc-0x2200]; else if (wc == 0x25ca) c = 0xd7; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_roman.h0100644000000000000000000001401407206266437015250 0ustar rootroot /* * MacRoman */ static const unsigned short mac_roman_2uni[128] = { /* 0x80 */ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, /* 0x90 */ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, /* 0xa0 */ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, /* 0xb0 */ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x00e6, 0x00f8, /* 0xc0 */ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, /* 0xd0 */ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0xfb01, 0xfb02, /* 0xe0 */ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, /* 0xf0 */ 0xfffd, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, }; static int mac_roman_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = mac_roman_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mac_roman_page00[96] = { 0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0xb4, 0x00, 0xa4, /* 0xa0-0xa7 */ 0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x00, 0xa8, 0xf8, /* 0xa8-0xaf */ 0xa1, 0xb1, 0x00, 0x00, 0xab, 0xb5, 0xa6, 0xe1, /* 0xb0-0xb7 */ 0xfc, 0x00, 0xbc, 0xc8, 0x00, 0x00, 0x00, 0xc0, /* 0xb8-0xbf */ 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, /* 0xc0-0xc7 */ 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, /* 0xc8-0xcf */ 0x00, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x00, /* 0xd0-0xd7 */ 0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0x00, 0x00, 0xa7, /* 0xd8-0xdf */ 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, /* 0xe0-0xe7 */ 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0xe8-0xef */ 0x00, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, /* 0xf0-0xf7 */ 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0xd8, /* 0xf8-0xff */ }; static const unsigned char mac_roman_page01[104] = { 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char mac_roman_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char mac_roman_page20[56] = { 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00, /* 0x18-0x1f */ 0xa0, 0xe0, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x40-0x47 */ }; static const unsigned char mac_roman_page21[8] = { 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xbd, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_roman_page22[104] = { 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, /* 0x08-0x0f */ 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; static const unsigned char mac_roman_pagefb[8] = { 0x00, 0xde, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ }; static int mac_roman_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = mac_roman_page00[wc-0x00a0]; else if (wc >= 0x0130 && wc < 0x0198) c = mac_roman_page01[wc-0x0130]; else if (wc >= 0x02c0 && wc < 0x02e0) c = mac_roman_page02[wc-0x02c0]; else if (wc == 0x03c0) c = 0xb9; else if (wc >= 0x2010 && wc < 0x2048) c = mac_roman_page20[wc-0x2010]; else if (wc >= 0x2120 && wc < 0x2128) c = mac_roman_page21[wc-0x2120]; else if (wc >= 0x2200 && wc < 0x2268) c = mac_roman_page22[wc-0x2200]; else if (wc == 0x25ca) c = 0xd7; else if (wc >= 0xfb00 && wc < 0xfb08) c = mac_roman_pagefb[wc-0xfb00]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_romania.h0100644000000000000000000001417407206266437015571 0ustar rootroot /* * MacRomania */ static const unsigned short mac_romania_2uni[128] = { /* 0x80 */ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, /* 0x90 */ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, /* 0xa0 */ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x0102, 0x015e, /* 0xb0 */ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x0103, 0x015f, /* 0xc0 */ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, /* 0xd0 */ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0x0162, 0x0163, /* 0xe0 */ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, /* 0xf0 */ 0xfffd, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, }; static int mac_romania_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = mac_romania_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mac_romania_page00[248] = { 0xca, 0xc1, 0xa2, 0xa3, 0xdb, 0xb4, 0x00, 0xa4, /* 0xa0-0xa7 */ 0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x00, 0xa8, 0xf8, /* 0xa8-0xaf */ 0xa1, 0xb1, 0x00, 0x00, 0xab, 0xb5, 0xa6, 0xe1, /* 0xb0-0xb7 */ 0xfc, 0x00, 0xbc, 0xc8, 0x00, 0x00, 0x00, 0xc0, /* 0xb8-0xbf */ 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0x00, 0x82, /* 0xc0-0xc7 */ 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, /* 0xc8-0xcf */ 0x00, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x00, /* 0xd0-0xd7 */ 0x00, 0xf4, 0xf2, 0xf3, 0x86, 0x00, 0x00, 0xa7, /* 0xd8-0xdf */ 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0x00, 0x8d, /* 0xe0-0xe7 */ 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0xe8-0xef */ 0x00, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, /* 0xf0-0xf7 */ 0x00, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0xd8, /* 0xf8-0xff */ /* 0x0100 */ 0x00, 0x00, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xbf, /* 0x58-0x5f */ 0x00, 0x00, 0xde, 0xdf, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char mac_romania_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char mac_romania_page20[56] = { 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00, /* 0x18-0x1f */ 0xa0, 0xe0, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x40-0x47 */ }; static const unsigned char mac_romania_page21[8] = { 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xbd, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_romania_page22[104] = { 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, /* 0x08-0x0f */ 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; static int mac_romania_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0198) c = mac_romania_page00[wc-0x00a0]; else if (wc >= 0x02c0 && wc < 0x02e0) c = mac_romania_page02[wc-0x02c0]; else if (wc == 0x03c0) c = 0xb9; else if (wc >= 0x2010 && wc < 0x2048) c = mac_romania_page20[wc-0x2010]; else if (wc >= 0x2120 && wc < 0x2128) c = mac_romania_page21[wc-0x2120]; else if (wc >= 0x2200 && wc < 0x2268) c = mac_romania_page22[wc-0x2200]; else if (wc == 0x25ca) c = 0xd7; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_thai.h0100644000000000000000000000757507206266437015077 0ustar rootroot /* * MacThai */ static const unsigned short mac_thai_2uni[128] = { /* 0x80 */ 0x00ab, 0x00bb, 0x2026, 0xf88c, 0xf88f, 0xf892, 0xf895, 0xf898, 0xf88b, 0xf88e, 0xf891, 0xf894, 0xf897, 0x201c, 0x201d, 0xf899, /* 0x90 */ 0xfffd, 0x2022, 0xf884, 0xf889, 0xf885, 0xf886, 0xf887, 0xf888, 0xf88a, 0xf88d, 0xf890, 0xf893, 0xf896, 0x2018, 0x2019, 0xfffd, /* 0xa0 */ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, /* 0xb0 */ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, /* 0xc0 */ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, /* 0xd0 */ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39, 0x0e3a, 0xfeff, 0x200b, 0x2013, 0x2014, 0x0e3f, /* 0xe0 */ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x2122, 0x0e4f, /* 0xf0 */ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, 0x0e58, 0x0e59, 0x00ae, 0x00a9, 0xfffd, 0xfffd, 0xfffd, 0xfffd, }; static int mac_thai_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = mac_thai_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mac_thai_page00[32] = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0xfb, 0x00, 0x80, 0x00, 0x00, 0xfa, 0x00, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ }; static const unsigned char mac_thai_page0e[96] = { 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x00, 0xef, /* 0x48-0x4f */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */ 0xf8, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ }; static const unsigned char mac_thai_page20[32] = { 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x9d, 0x9e, 0x00, 0x00, 0x8d, 0x8e, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x82, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_thai_pagef8[32] = { 0x00, 0x00, 0x00, 0x00, 0x92, 0x94, 0x95, 0x96, /* 0x80-0x87 */ 0x97, 0x93, 0x98, 0x88, 0x83, 0x99, 0x89, 0x84, /* 0x88-0x8f */ 0x9a, 0x8a, 0x85, 0x9b, 0x8b, 0x86, 0x9c, 0x8c, /* 0x90-0x97 */ 0x87, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ }; static int mac_thai_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00c0) c = mac_thai_page00[wc-0x00a0]; else if (wc >= 0x0e00 && wc < 0x0e60) c = mac_thai_page0e[wc-0x0e00]; else if (wc >= 0x2008 && wc < 0x2028) c = mac_thai_page20[wc-0x2008]; else if (wc == 0x2122) c = 0xee; else if (wc >= 0xf880 && wc < 0xf8a0) c = mac_thai_pagef8[wc-0xf880]; else if (wc == 0xfeff) c = 0xdb; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_turkish.h0100644000000000000000000001365307206266437015635 0ustar rootroot /* * MacTurkish */ static const unsigned short mac_turkish_2uni[128] = { /* 0x80 */ 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, /* 0x90 */ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, /* 0xa0 */ 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, /* 0xb0 */ 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x00e6, 0x00f8, /* 0xc0 */ 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, /* 0xd0 */ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, 0x00ff, 0x0178, 0x011e, 0x011f, 0x0130, 0x0131, 0x015e, 0x015f, /* 0xe0 */ 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, /* 0xf0 */ 0xfffd, 0x00d2, 0x00da, 0x00db, 0x00d9, 0xfffd, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7, }; static int mac_turkish_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = mac_turkish_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mac_turkish_page00[96] = { 0xca, 0xc1, 0xa2, 0xa3, 0x00, 0xb4, 0x00, 0xa4, /* 0xa0-0xa7 */ 0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x00, 0xa8, 0xf8, /* 0xa8-0xaf */ 0xa1, 0xb1, 0x00, 0x00, 0xab, 0xb5, 0xa6, 0xe1, /* 0xb0-0xb7 */ 0xfc, 0x00, 0xbc, 0xc8, 0x00, 0x00, 0x00, 0xc0, /* 0xb8-0xbf */ 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, /* 0xc0-0xc7 */ 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, /* 0xc8-0xcf */ 0x00, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x00, /* 0xd0-0xd7 */ 0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0x00, 0x00, 0xa7, /* 0xd8-0xdf */ 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, /* 0xe0-0xe7 */ 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0xe8-0xef */ 0x00, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, /* 0xf0-0xf7 */ 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0xd8, /* 0xf8-0xff */ }; static const unsigned char mac_turkish_page01[128] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0xdb, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xdf, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char mac_turkish_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char mac_turkish_page20[40] = { 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00, /* 0x18-0x1f */ 0xa0, 0xe0, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ }; static const unsigned char mac_turkish_page21[8] = { 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xbd, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_turkish_page22[104] = { 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, /* 0x08-0x0f */ 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; static int mac_turkish_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = mac_turkish_page00[wc-0x00a0]; else if (wc >= 0x0118 && wc < 0x0198) c = mac_turkish_page01[wc-0x0118]; else if (wc >= 0x02c0 && wc < 0x02e0) c = mac_turkish_page02[wc-0x02c0]; else if (wc == 0x03c0) c = 0xb9; else if (wc >= 0x2010 && wc < 0x2038) c = mac_turkish_page20[wc-0x2010]; else if (wc >= 0x2120 && wc < 0x2128) c = mac_turkish_page21[wc-0x2120]; else if (wc >= 0x2200 && wc < 0x2268) c = mac_turkish_page22[wc-0x2200]; else if (wc == 0x25ca) c = 0xd7; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mac_ukraine.h0100644000000000000000000001214507206266437015575 0ustar rootroot /* * MacUkraine */ static const unsigned short mac_ukraine_2uni[128] = { /* 0x80 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, /* 0x90 */ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, /* 0xa0 */ 0x2020, 0x00b0, 0x0490, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406, 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, /* 0xb0 */ 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x0491, 0x0408, 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a, /* 0xc0 */ 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455, /* 0xd0 */ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e, 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f, /* 0xe0 */ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, /* 0xf0 */ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x00a4, }; static int mac_ukraine_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c >= 0x80) *pwc = (ucs4_t) mac_ukraine_2uni[c-0x80]; else *pwc = (ucs4_t) c; return 1; } static const unsigned char mac_ukraine_page00[32] = { 0xca, 0x00, 0x00, 0xa3, 0xff, 0x00, 0x00, 0xa4, /* 0xa0-0xa7 */ 0x00, 0xa9, 0x00, 0xc7, 0xc2, 0x00, 0xa8, 0x00, /* 0xa8-0xaf */ 0xa1, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xa6, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ }; static const unsigned char mac_ukraine_page04[152] = { 0x00, 0xdd, 0xab, 0xae, 0xb8, 0xc1, 0xa7, 0xba, /* 0x00-0x07 */ 0xb7, 0xbc, 0xbe, 0xcb, 0xcd, 0x00, 0xd8, 0xda, /* 0x08-0x0f */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x10-0x17 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0x18-0x1f */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x20-0x27 */ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, /* 0x28-0x2f */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf, /* 0x48-0x4f */ 0x00, 0xde, 0xac, 0xaf, 0xb9, 0xcf, 0xb4, 0xbb, /* 0x50-0x57 */ 0xc0, 0xbd, 0xbf, 0xcc, 0xce, 0x00, 0xd9, 0xdb, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0xa2, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char mac_ukraine_page20[24] = { 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0xd4, 0xd5, 0x00, 0x00, 0xd2, 0xd3, 0xd7, 0x00, /* 0x18-0x1f */ 0xa0, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_ukraine_page21[24] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; static const unsigned char mac_ukraine_page22[104] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */ }; static int mac_ukraine_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x00c0) c = mac_ukraine_page00[wc-0x00a0]; else if (wc == 0x00f7) c = 0xd6; else if (wc == 0x0192) c = 0xc4; else if (wc >= 0x0400 && wc < 0x0498) c = mac_ukraine_page04[wc-0x0400]; else if (wc >= 0x2010 && wc < 0x2028) c = mac_ukraine_page20[wc-0x2010]; else if (wc >= 0x2110 && wc < 0x2128) c = mac_ukraine_page21[wc-0x2110]; else if (wc >= 0x2200 && wc < 0x2268) c = mac_ukraine_page22[wc-0x2200]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/mulelao.h0100644000000000000000000000462107206266437014755 0ustar rootroot /* * MULELAO-1 */ static const unsigned short mulelao_2uni[96] = { /* 0xa0 */ 0x00a0, 0x0e81, 0x0e82, 0xfffd, 0x0e84, 0xfffd, 0xfffd, 0x0e87, 0x0e88, 0xfffd, 0x0e8a, 0xfffd, 0xfffd, 0x0e8d, 0xfffd, 0xfffd, /* 0xb0 */ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0xfffd, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, /* 0xc0 */ 0xfffd, 0x0ea1, 0x0ea2, 0x0ea3, 0xfffd, 0x0ea5, 0xfffd, 0x0ea7, 0xfffd, 0xfffd, 0x0eaa, 0x0eab, 0xfffd, 0x0ead, 0x0eae, 0x0eaf, /* 0xd0 */ 0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8, 0x0eb9, 0xfffd, 0x0ebb, 0x0ebc, 0x0ebd, 0xfffd, 0xfffd, /* 0xe0 */ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0xfffd, 0x0ec6, 0xfffd, 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0xfffd, 0xfffd, /* 0xf0 */ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7, 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x0edc, 0x0edd, 0xfffd, 0xfffd, }; static int mulelao_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0xa0) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = mulelao_2uni[c-0xa0]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char mulelao_page0e[96] = { 0x00, 0xa1, 0xa2, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0x80-0x87 */ 0xa8, 0x00, 0xaa, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x90-0x97 */ 0x00, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x98-0x9f */ 0x00, 0xc1, 0xc2, 0xc3, 0x00, 0xc5, 0x00, 0xc7, /* 0xa0-0xa7 */ 0x00, 0x00, 0xca, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xa8-0xaf */ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xb0-0xb7 */ 0xd8, 0xd9, 0x00, 0xdb, 0xdc, 0xdd, 0x00, 0x00, /* 0xb8-0xbf */ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x00, 0xe6, 0x00, /* 0xc0-0xc7 */ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x00, 0x00, /* 0xc8-0xcf */ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */ 0xf8, 0xf9, 0x00, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */ }; static int mulelao_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x00a0) { *r = wc; return 1; } else if (wc == 0x00a0) c = 0xa0; else if (wc >= 0x0e80 && wc < 0x0ee0) c = mulelao_page0e[wc-0x0e80]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/nextstep.h0100644000000000000000000001141407206266437015167 0ustar rootroot /* * NEXTSTEP */ static const unsigned short nextstep_2uni[128] = { /* 0x80 */ 0x00a0, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, /* 0x90 */ 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00b5, 0x00d7, 0x00f7, /* 0xa0 */ 0x00a9, 0x00a1, 0x00a2, 0x00a3, 0x2044, 0x00a5, 0x0192, 0x00a7, 0x00a4, 0x2019, 0x201c, 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02, /* 0xb0 */ 0x00ae, 0x2013, 0x2020, 0x2021, 0x00b7, 0x00a6, 0x00b6, 0x2022, 0x201a, 0x201e, 0x201d, 0x00bb, 0x2026, 0x2030, 0x00ac, 0x00bf, /* 0xc0 */ 0x00b9, 0x02cb, 0x00b4, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x00a8, 0x00b2, 0x02da, 0x00b8, 0x00b3, 0x02dd, 0x02db, 0x02c7, /* 0xd0 */ 0x2014, 0x00b1, 0x00bc, 0x00bd, 0x00be, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, /* 0xe0 */ 0x00ec, 0x00c6, 0x00ed, 0x00aa, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00f2, 0x00f3, 0x00f4, 0x00f5, /* 0xf0 */ 0x00f6, 0x00e6, 0x00f9, 0x00fa, 0x00fb, 0x0131, 0x00fc, 0x00fd, 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x00ff, 0xfffd, 0xfffd, }; static int nextstep_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else { unsigned short wc = nextstep_2uni[c-0x80]; if (wc != 0xfffd) { *pwc = (ucs4_t) wc; return 1; } } return RET_ILSEQ; } static const unsigned char nextstep_page00[96] = { 0x80, 0xa1, 0xa2, 0xa3, 0xa8, 0xa5, 0xb5, 0xa7, /* 0xa0-0xa7 */ 0xc8, 0xa0, 0xe3, 0xab, 0xbe, 0x00, 0xb0, 0xc5, /* 0xa8-0xaf */ 0x00, 0xd1, 0xc9, 0xcc, 0xc2, 0x9d, 0xb6, 0xb4, /* 0xb0-0xb7 */ 0xcb, 0xc0, 0xeb, 0xbb, 0xd2, 0xd3, 0xd4, 0xbf, /* 0xb8-0xbf */ 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0xe1, 0x87, /* 0xc0-0xc7 */ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, /* 0xc8-0xcf */ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x9e, /* 0xd0-0xd7 */ 0xe9, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0xfb, /* 0xd8-0xdf */ 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xf1, 0xdb, /* 0xe0-0xe7 */ 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe2, 0xe4, 0xe5, /* 0xe8-0xef */ 0xe6, 0xe7, 0xec, 0xed, 0xee, 0xef, 0xf0, 0x9f, /* 0xf0-0xf7 */ 0xf9, 0xf2, 0xf3, 0xf4, 0xf6, 0xf7, 0xfc, 0xfd, /* 0xf8-0xff */ }; static const unsigned char nextstep_page01[104] = { 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0xe8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0xea, 0xfa, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ }; static const unsigned char nextstep_page02[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xcf, /* 0xc0-0xc7 */ 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */ 0xc6, 0xc7, 0xca, 0xce, 0xc4, 0xcd, 0x00, 0x00, /* 0xd8-0xdf */ }; static const unsigned char nextstep_page20[56] = { 0x00, 0x00, 0x00, 0xb1, 0xd0, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0xa9, 0xb8, 0x00, 0xaa, 0xba, 0xb9, 0x00, /* 0x18-0x1f */ 0xb2, 0xb3, 0xb7, 0x00, 0x00, 0x00, 0xbc, 0x00, /* 0x20-0x27 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0xac, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, /* 0x40-0x47 */ }; static const unsigned char nextstep_pagefb[8] = { 0x00, 0xae, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ }; static int nextstep_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x0100) c = nextstep_page00[wc-0x00a0]; else if (wc >= 0x0130 && wc < 0x0198) c = nextstep_page01[wc-0x0130]; else if (wc >= 0x02c0 && wc < 0x02e0) c = nextstep_page02[wc-0x02c0]; else if (wc >= 0x2010 && wc < 0x2048) c = nextstep_page20[wc-0x2010]; else if (wc >= 0xfb00 && wc < 0xfb08) c = nextstep_pagefb[wc-0xfb00]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/sjis.h0100644000000000000000000000630307206266437014266 0ustar rootroot /* * SHIFT-JIS */ /* Conversion between SJIS codes (s1,s2) and JISX0208 codes (c1,c2): Example. (s1,s2) = 0x8140, (c1,c2) = 0x2121. 0x81 <= s1 <= 0x9F || 0xE0 <= s1 <= 0xEA, 0x40 <= s2 <= 0x7E || 0x80 <= s2 <= 0xFC, 0x21 <= c1 <= 0x74, 0x21 <= c2 <= 0x7E. Invariant: 94*2*(s1 < 0xE0 ? s1-0x81 : s1-0xC1) + (s2 < 0x80 ? s2-0x40 : s2-0x41) = 94*(c1-0x21)+(c2-0x21) Conversion (s1,s2) -> (c1,c2): t1 := (s1 < 0xE0 ? s1-0x81 : s1-0xC1) t2 := (s2 < 0x80 ? s2-0x40 : s2-0x41) c1 := 2*t1 + (t2 < 0x5E ? 0 : 1) + 0x21 c2 := (t2 < 0x5E ? t2 : t2-0x5E) + 0x21 Conversion (c1,c2) -> (s1,s2): t1 := (c1 - 0x21) >> 1 t2 := ((c1 - 0x21) & 1) * 0x5E + (c2 - 0x21) s1 := (t1 < 0x1F ? t1+0x81 : t1+0xC1) s2 := (t2 < 0x3F ? t2+0x40 : t2+0x41) */ static int sjis_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80 || (c >= 0xa1 && c <= 0xdf)) return jisx0201_mbtowc(conv,pwc,s,n); else { unsigned char s1, s2; s1 = c; if ((s1 >= 0x81 && s1 <= 0x9f) || (s1 >= 0xe0 && s1 <= 0xea)) { if (n < 2) return RET_TOOFEW(0); s2 = s[1]; if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) { unsigned char t1 = (s1 < 0xe0 ? s1-0x81 : s1-0xc1); unsigned char t2 = (s2 < 0x80 ? s2-0x40 : s2-0x41); unsigned char buf[2]; buf[0] = 2*t1 + (t2 < 0x5e ? 0 : 1) + 0x21; buf[1] = (t2 < 0x5e ? t2 : t2-0x5e) + 0x21; return jisx0208_mbtowc(conv,pwc,buf,2); } } else if (s1 >= 0xf0 && s1 <= 0xf9) { /* User-defined range. See * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ if (n < 2) return RET_TOOFEW(0); s2 = s[1]; if ((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0x80 && s2 <= 0xfc)) { *pwc = 0xe000 + 188*(s1 - 0xf0) + (s2 < 0x80 ? s2-0x40 : s2-0x41); return 2; } } return RET_ILSEQ; } } static int sjis_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char buf[2]; int ret; /* Try JIS X 0201-1976. */ ret = jisx0201_wctomb(conv,buf,wc,1); if (ret != RET_ILSEQ) { unsigned char c; if (ret != 1) abort(); c = buf[0]; if (c < 0x80 || (c >= 0xa1 && c <= 0xdf)) { r[0] = c; return 1; } } /* Try JIS X 0208-1990. */ ret = jisx0208_wctomb(conv,buf,wc,2); if (ret != RET_ILSEQ) { unsigned char c1, c2; if (ret != 2) abort(); if (n < 2) return RET_TOOSMALL; c1 = buf[0]; c2 = buf[1]; if ((c1 >= 0x21 && c1 <= 0x74) && (c2 >= 0x21 && c2 <= 0x7e)) { unsigned char t1 = (c1 - 0x21) >> 1; unsigned char t2 = (((c1 - 0x21) & 1) ? 0x5e : 0) + (c2 - 0x21); r[0] = (t1 < 0x1f ? t1+0x81 : t1+0xc1); r[1] = (t2 < 0x3f ? t2+0x40 : t2+0x41); return 2; } } /* User-defined range. See * Ken Lunde's "CJKV Information Processing", table 4-66, p. 206. */ if (wc >= 0xe000 && wc < 0xe758) { unsigned char c1, c2; if (n < 2) return RET_TOOSMALL; c1 = (unsigned int) (wc - 0xe000) / 188; c2 = (unsigned int) (wc - 0xe000) % 188; r[0] = c1+0xf0; r[1] = (c2 < 0x3f ? c2+0x40 : c2+0x41); return 2; } return RET_ILSEQ; } recode-3.6/libiconv/tcvn.h0100644000000000000000000001345107206266437014272 0ustar rootroot /* * TCVN-5712 */ static const unsigned short tcvn_2uni_1[32] = { /* 0x00 */ 0x0000, 0x00da, 0x1ee4, 0x0003, 0x1eea, 0x1eec, 0x1eee, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, /* 0x10 */ 0x0010, 0x1ee8, 0x1ef0, 0x1ef2, 0x1ef6, 0x1ef8, 0x00dd, 0x1ef4, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, }; static const unsigned short tcvn_2uni_2[128] = { /* 0x80 */ 0x00c0, 0x1ea2, 0x00c3, 0x00c1, 0x1ea0, 0x1eb6, 0x1eac, 0x00c8, 0x1eba, 0x1ebc, 0x00c9, 0x1eb8, 0x1ec6, 0x00cc, 0x1ec8, 0x0128, /* 0x90 */ 0x00cd, 0x1eca, 0x00d2, 0x1ece, 0x00d5, 0x00d3, 0x1ecc, 0x1ed8, 0x1edc, 0x1ede, 0x1ee0, 0x1eda, 0x1ee2, 0x00d9, 0x1ee6, 0x0168, /* 0xa0 */ 0x00a0, 0x0102, 0x00c2, 0x00ca, 0x00d4, 0x01a0, 0x01af, 0x0110, 0x0103, 0x00e2, 0x00ea, 0x00f4, 0x01a1, 0x01b0, 0x0111, 0x1eb0, /* 0xb0 */ 0x0300, 0x0309, 0x0303, 0x0301, 0x0323, 0x00e0, 0x1ea3, 0x00e3, 0x00e1, 0x1ea1, 0x1eb2, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eaf, 0x1eb4, /* 0xc0 */ 0x1eae, 0x1ea6, 0x1ea8, 0x1eaa, 0x1ea4, 0x1ec0, 0x1eb7, 0x1ea7, 0x1ea9, 0x1eab, 0x1ea5, 0x1ead, 0x00e8, 0x1ec2, 0x1ebb, 0x1ebd, /* 0xd0 */ 0x00e9, 0x1eb9, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ebf, 0x1ec7, 0x00ec, 0x1ec9, 0x1ec4, 0x1ebe, 0x1ed2, 0x0129, 0x00ed, 0x1ecb, 0x00f2, /* 0xe0 */ 0x1ed4, 0x1ecf, 0x00f5, 0x00f3, 0x1ecd, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed1, 0x1ed9, 0x1edd, 0x1edf, 0x1ee1, 0x1edb, 0x1ee3, 0x00f9, /* 0xf0 */ 0x1ed6, 0x1ee7, 0x0169, 0x00fa, 0x1ee5, 0x1eeb, 0x1eed, 0x1eef, 0x1ee9, 0x1ef1, 0x1ef3, 0x1ef7, 0x1ef9, 0x00fd, 0x1ef5, 0x1ed0, }; static int tcvn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x20) *pwc = (ucs4_t) tcvn_2uni_1[c]; else if (c < 0x80) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) tcvn_2uni_2[c-0x80]; return 1; } static const unsigned char tcvn_page00[96+184] = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */ 0x80, 0x83, 0xa2, 0x82, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0x87, 0x8a, 0xa3, 0x00, 0x8d, 0x90, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0x92, 0x95, 0xa4, 0x94, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0x9d, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, /* 0xd8-0xdf */ 0xb5, 0xb8, 0xa9, 0xb7, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */ 0xcc, 0xd0, 0xaa, 0x00, 0xd7, 0xdd, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0xdf, 0xe3, 0xab, 0xe2, 0x00, 0x00, /* 0xf0-0xf7 */ 0x00, 0xef, 0xf3, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0x00, 0x00, 0xa1, 0xa8, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0xa7, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0x8f, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x9f, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0xa5, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, /* 0xa8-0xaf */ 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ }; static const unsigned char tcvn_page03[40] = { 0xb0, 0xb3, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ }; static const unsigned char tcvn_page1e[96] = { 0x84, 0xb9, 0x81, 0xb6, 0xc4, 0xca, 0xc1, 0xc7, /* 0xa0-0xa7 */ 0xc2, 0xc8, 0xc3, 0xc9, 0x86, 0xcb, 0xc0, 0xbe, /* 0xa8-0xaf */ 0xaf, 0xbb, 0xba, 0xbc, 0xbf, 0xbd, 0x85, 0xc6, /* 0xb0-0xb7 */ 0x8b, 0xd1, 0x88, 0xce, 0x89, 0xcf, 0xda, 0xd5, /* 0xb8-0xbf */ 0xc5, 0xd2, 0xcd, 0xd3, 0xd9, 0xd4, 0x8c, 0xd6, /* 0xc0-0xc7 */ 0x8e, 0xd8, 0x91, 0xde, 0x96, 0xe4, 0x93, 0xe1, /* 0xc8-0xcf */ 0xff, 0xe8, 0xdb, 0xe5, 0xe0, 0xe6, 0xf0, 0xe7, /* 0xd0-0xd7 */ 0x97, 0xe9, 0x9b, 0xed, 0x98, 0xea, 0x99, 0xeb, /* 0xd8-0xdf */ 0x9a, 0xec, 0x9c, 0xee, 0x02, 0xf4, 0x9e, 0xf1, /* 0xe0-0xe7 */ 0x11, 0xf8, 0x04, 0xf5, 0x05, 0xf6, 0x06, 0xf7, /* 0xe8-0xef */ 0x12, 0xf9, 0x13, 0xfa, 0x17, 0xfe, 0x14, 0xfb, /* 0xf0-0xf7 */ 0x15, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; static int tcvn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080 && (wc >= 0x0020 || (0x00fe0076 & (1 << wc)) == 0)) { *r = wc; return 1; } else if (wc >= 0x00a0 && wc < 0x01b8) c = tcvn_page00[wc-0x00a0]; else if (wc >= 0x0300 && wc < 0x0328) c = tcvn_page03[wc-0x0300]; else if (wc >= 0x1ea0 && wc < 0x1f00) c = tcvn_page1e[wc-0x1ea0]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/tis620.h0100644000000000000000000000113207206266437014340 0ustar rootroot /* * TIS620.2533-1 */ static int tis620_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x80) { *pwc = (ucs4_t) c; return 1; } else if (c >= 0xa1 && c <= 0xfb && !(c >= 0xdb && c <= 0xde)) { *pwc = (ucs4_t) (c + 0x0d60); return 1; } return RET_ILSEQ; } static int tis620_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x0080) { *r = wc; return 1; } else if (wc >= 0x0e01 && wc <= 0x0e5b && !(wc >= 0x0e3b && wc <= 0x0e3e)) { *r = wc-0x0d60; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/translit.h0100644000000000000000000002524307065732212015152 0ustar rootroot /* * Transliteration table */ static const unsigned char translit_data[754] = { 1, ' ', 1, '!', 1, 'c', 2, 'l', 'b', 3, 'y', 'e', 'n', 1, '|', 2, 'S', 'S', 1, '"', 3, '(', 'c', ')', 1, 'a', 2, '<', '<', 3, 'n', 'o', 't', 1, '-', 3, '(', 'R', ')', 2, '^', '0', 3, '+', '/', '-', 2, '^', '2', 2, '^', '3', 1,'\'', 1, 'u', 1, 'P', 1, '.', 1, ',', 2, '^', '1', 1, 'o', 2, '>', '>', 3, '1', '/', '4', 3, '1', '/', '2', 3, '3', '/', '4', 1, '?', 2, '`', 'A', 2, '´', 'A', 2, '^', 'A', 2, '~', 'A', 2, '"', 'A', 1, 'A', 2, 'A', 'E', 1, 'C', 2, '`', 'E', 2, '´', 'E', 2, '^', 'E', 2, '"', 'E', 2, '`', 'I', 2, '´', 'I', 2, '^', 'I', 2, '"', 'I', 1, 'D', 2, '~', 'N', 2, '`', 'O', 2, '´', 'O', 2, '^', 'O', 2, '~', 'O', 2, '"', 'O', 1, 'x', 1, 'O', 2, '`', 'U', 2, '´', 'U', 2, '^', 'U', 2, '"', 'U', 2, '´', 'Y', 2, 'T', 'h', 2, 's', 's', 2, '`', 'a', 2, '´', 'a', 2, '^', 'a', 2, '~', 'a', 2, '"', 'a', 1, 'a', 2, 'a', 'e', 1, 'c', 2, '`', 'e', 2, '´', 'e', 2, '^', 'e', 2, '"', 'e', 2, '`', 'i', 2, '´', 'i', 2, '^', 'i', 2, '"', 'i', 1, 'd', 2, '~', 'n', 2, '`', 'o', 2, '´', 'o', 2, '^', 'o', 2, '~', 'o', 2, '"', 'o', 1, ':', 1, 'o', 2, '`', 'u', 2, '´', 'u', 2, '^', 'u', 2, '"', 'u', 2, '´', 'y', 2, 't', 'h', 2, '"', 'y', 1, 'A', 1, 'a', 1, 'A', 1, 'a', 1, 'A', 1, 'a', 2, '´', 'C', 2, '´', 'c', 2, '^', 'C', 2, '^', 'c', 1, 'C', 1, 'c', 1, 'C', 1, 'c', 1, 'D', 1, 'd', 1, 'D', 1, 'd', 1, 'E', 1, 'e', 1, 'E', 1, 'e', 1, 'E', 1, 'e', 1, 'E', 1, 'e', 1, 'E', 1, 'e', 2, '^', 'G', 2, '^', 'g', 1, 'G', 1, 'g', 1, 'G', 1, 'g', 1, 'G', 1, 'g', 2, '^', 'H', 2, '^', 'h', 1, 'H', 1, 'h', 2, '~', 'I', 2, '~', 'i', 1, 'I', 1, 'i', 1, 'I', 1, 'i', 1, 'I', 1, 'i', 1, 'I', 1, 'i', 2, 'I', 'J', 2, 'i', 'j', 2, '^', 'J', 2, '^', 'j', 1, 'K', 1, 'k', 1, 'L', 1, 'l', 1, 'L', 1, 'l', 1, 'L', 1, 'l', 1, 'L', 1, 'l', 1, 'L', 1, 'l', 2, '´', 'N', 2, '´', 'n', 1, 'N', 1, 'n', 1, 'N', 1, 'n', 2,'\'', 'n', 1, 'O', 1, 'o', 1, 'O', 1, 'o', 2, '"', 'O', 2, '"', 'o', 2, 'O', 'E', 2, 'o', 'e', 2, '´', 'R', 2, '´', 'r', 1, 'R', 1, 'r', 1, 'R', 1, 'r', 2, '´', 'S', 2, '´', 's', 2, '^', 'S', 2, '^', 's', 1, 'S', 1, 's', 1, 'S', 1, 's', 1, 'T', 1, 't', 1, 'T', 1, 't', 1, 'T', 1, 't', 2, '~', 'U', 2, '~', 'u', 1, 'U', 1, 'u', 1, 'U', 1, 'u', 1, 'U', 1, 'u', 2, '"', 'U', 2, '"', 'u', 1, 'U', 1, 'u', 2, '^', 'W', 2, '^', 'w', 2, '^', 'Y', 2, '^', 'y', 2, '"', 'Y', 2, '´', 'Z', 2, '´', 'z', 1, 'Z', 1, 'z', 1, 'Z', 1, 'z', 1, 'S', 1, 'f', 1, 'S', 1, 's', 1, 'T', 1, 't', 1, '^', 1, '~', 1, '"', 1, 'B', 1, 'b', 1, 'D', 1, 'd', 1, 'F', 1, 'f', 1, 'M', 1, 'm', 1, 'P', 1, 'p', 1, 'S', 1, 's', 1, 'T', 1, 't', 2, '`', 'W', 2, '`', 'w', 2, '´', 'W', 2, '´', 'w', 2, '"', 'W', 2, '"', 'w', 2, '`', 'Y', 2, '`', 'y', 1, '-', 1, '-', 1, '-', 1, '-', 1, '-', 1, '-', 1, '"', 1, '"', 1, '"', 1, '+', 1, 'o', 3, '.', '.', '.', 4, 'o', '/', 'o', 'o', 1, '´', 2, '´', '´', 3, '´', '´', '´', 1, '<', 1, '>', 3, 'E', 'U', 'R', 3, 'N', 'o', '.', 2, 'T', 'M', 3, 'O', 'h', 'm', 3, '1', '/', '8', 3, '3', '/', '8', 3, '5', '/', '8', 3, '7', '/', '8', 2, '<', '-', 1, '^', 2, '-', '>', 1, 'V', 2, '<', '=', 2, '=', '>', 1, '-', 1, '/', 2, '/', '=', 2, '<', '=', 2, '>', '=', 2, '<', '<', 2, '>', '>', 1, '-', 1, '|', 1, '+', 1, '+', 1, '+', 1, '+', 1, '+', 1, '+', 1, '+', 1, '+', 1, '+', }; static const short translit_page00[248] = { 0, 2, 4, 6, -1, 9, 13, 15, /* 0xa0-0xa7 */ 18, 20, 24, 26, 29, 33, 35, -1, /* 0xa8-0xaf */ 39, 42, 46, 49, 52, 54, 56, 58, /* 0xb0-0xb7 */ 60, 62, 65, 67, 70, 74, 78, 82, /* 0xb8-0xbf */ 84, 87, 90, 93, 96, 99, 101, 104, /* 0xc0-0xc7 */ 106, 109, 112, 115, 118, 121, 124, 127, /* 0xc8-0xcf */ 130, 132, 135, 138, 141, 144, 147, 150, /* 0xd0-0xd7 */ 152, 154, 157, 160, 163, 166, 169, 172, /* 0xd8-0xdf */ 175, 178, 181, 184, 187, 190, 192, 195, /* 0xe0-0xe7 */ 197, 200, 203, 206, 209, 212, 215, 218, /* 0xe8-0xef */ 221, 223, 226, 229, 232, 235, 238, 241, /* 0xf0-0xf7 */ 243, 245, 248, 251, 254, 257, 260, 263, /* 0xf8-0xff */ /* 0x0100 */ 266, 268, 270, 272, 274, 276, 278, 281, /* 0x00-0x07 */ 284, 287, 290, 292, 294, 296, 298, 300, /* 0x08-0x0f */ 302, 304, 306, 308, 310, 312, 314, 316, /* 0x10-0x17 */ 318, 320, 322, 324, 326, 329, 332, 334, /* 0x18-0x1f */ 336, 338, 340, 342, 344, 347, 350, 352, /* 0x20-0x27 */ 354, 357, 360, 362, 364, 366, 368, 370, /* 0x28-0x2f */ 372, 374, 376, 379, 382, 385, 388, 390, /* 0x30-0x37 */ -1, 392, 394, 396, 398, 400, 402, 404, /* 0x38-0x3f */ 406, 408, 410, 412, 415, 418, 420, 422, /* 0x40-0x47 */ 424, 426, -1, -1, 429, 431, 433, 435, /* 0x48-0x4f */ 437, 440, 443, 446, 449, 452, 455, 457, /* 0x50-0x57 */ 459, 461, 463, 466, 469, 472, 475, 477, /* 0x58-0x5f */ 479, 481, 483, 485, 487, 489, 491, 493, /* 0x60-0x67 */ 495, 498, 501, 503, 505, 507, 509, 511, /* 0x68-0x6f */ 513, 516, 519, 521, 523, 526, 529, 532, /* 0x70-0x77 */ 535, 538, 541, 544, 546, 548, 550, 552, /* 0x78-0x7f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80-0x87 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x88-0x8f */ -1, -1, 554, -1, -1, -1, -1, -1, /* 0x90-0x97 */ }; static const short translit_page02[8] = { 556, 558, 560, 562, -1, -1, -1, -1, /* 0x18-0x1f */ }; static const short translit_page02_1[32] = { -1, -1, -1, -1, -1, -1, 564, -1, /* 0xc0-0xc7 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc8-0xcf */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xd0-0xd7 */ -1, -1, -1, -1, 566, 568, -1, -1, /* 0xd8-0xdf */ }; static const short translit_page1e[136] = { -1, -1, 570, 572, -1, -1, -1, -1, /* 0x00-0x07 */ -1, -1, 574, 576, -1, -1, -1, -1, /* 0x08-0x0f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x10-0x17 */ -1, -1, -1, -1, -1, -1, 578, 580, /* 0x18-0x1f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x20-0x27 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x28-0x2f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x30-0x37 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x38-0x3f */ 582, 584, -1, -1, -1, -1, -1, -1, /* 0x40-0x47 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x48-0x4f */ -1, -1, -1, -1, -1, -1, 586, 588, /* 0x50-0x57 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x58-0x5f */ 590, 592, -1, -1, -1, -1, -1, -1, /* 0x60-0x67 */ -1, -1, 594, 596, -1, -1, -1, -1, /* 0x68-0x6f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x70-0x77 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x78-0x7f */ 598, 601, 604, 607, 610, 613, -1, -1, /* 0x80-0x87 */ }; static const short translit_page1e_2[8] = { -1, -1, 616, 619, -1, -1, -1, -1, /* 0xf0-0xf7 */ }; static const short translit_page20[48] = { 622, 624, 626, 628, 630, 632, -1, -1, /* 0x10-0x17 */ -1, -1, -1, -1, 634, 636, 638, -1, /* 0x18-0x1f */ 640, -1, 642, -1, -1, -1, 644, -1, /* 0x20-0x27 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x28-0x2f */ 648, -1, 653, 655, 658, -1, -1, -1, /* 0x30-0x37 */ -1, 662, 664, -1, -1, -1, -1, -1, /* 0x38-0x3f */ }; static const short translit_page21[200] = { -1, -1, -1, -1, -1, -1, 670, -1, /* 0x10-0x17 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x18-0x1f */ -1, -1, 674, -1, -1, -1, 677, -1, /* 0x20-0x27 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x28-0x2f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x30-0x37 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x38-0x3f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x40-0x47 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x48-0x4f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x50-0x57 */ -1, -1, -1, 681, 685, 689, 693, -1, /* 0x58-0x5f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x60-0x67 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x68-0x6f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x70-0x77 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x78-0x7f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80-0x87 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x88-0x8f */ 697, 700, 702, 705, -1, -1, -1, -1, /* 0x90-0x97 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0x98-0x9f */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xa0-0xa7 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xa8-0xaf */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb0-0xb7 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xb8-0xbf */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc0-0xc7 */ -1, -1, -1, -1, -1, -1, -1, -1, /* 0xc8-0xcf */ 707, -1, 710, -1, -1, -1, -1, -1, /* 0xd0-0xd7 */ }; static const short translit_page22[8] = { -1, -1, 713, -1, -1, 715, -1, -1, /* 0x10-0x17 */ }; static const short translit_page22_3[16] = { 717, -1, -1, -1, 720, 723, -1, -1, /* 0x60-0x67 */ -1, -1, 726, 729, -1, -1, -1, -1, /* 0x68-0x6f */ }; static const short translit_page25[64] = { 732, -1, 734, -1, -1, -1, -1, -1, /* 0x00-0x07 */ -1, -1, -1, -1, 736, -1, -1, -1, /* 0x08-0x0f */ 738, -1, -1, -1, 740, -1, -1, -1, /* 0x10-0x17 */ 742, -1, -1, -1, 744, -1, -1, -1, /* 0x18-0x1f */ -1, -1, -1, -1, 746, -1, -1, -1, /* 0x20-0x27 */ -1, -1, -1, -1, 748, -1, -1, -1, /* 0x28-0x2f */ -1, -1, -1, -1, 750, -1, -1, -1, /* 0x30-0x37 */ -1, -1, -1, -1, 752, -1, -1, -1, /* 0x38-0x3f */ }; #define translit_index(wc) \ (wc >= 0x00a0 && wc < 0x0198 ? translit_page00[wc-0x00a0] : \ wc >= 0x0218 && wc < 0x0220 ? translit_page02[wc-0x0218] : \ wc >= 0x02c0 && wc < 0x02e0 ? translit_page02_1[wc-0x02c0] : \ wc >= 0x1e00 && wc < 0x1e88 ? translit_page1e[wc-0x1e00] : \ wc >= 0x1ef0 && wc < 0x1ef8 ? translit_page1e_2[wc-0x1ef0] : \ wc >= 0x2010 && wc < 0x2040 ? translit_page20[wc-0x2010] : \ wc == 0x20ac ? 666 : \ wc >= 0x2110 && wc < 0x21d8 ? translit_page21[wc-0x2110] : \ wc >= 0x2210 && wc < 0x2218 ? translit_page22[wc-0x2210] : \ wc >= 0x2260 && wc < 0x2270 ? translit_page22_3[wc-0x2260] : \ wc >= 0x2500 && wc < 0x2540 ? translit_page25[wc-0x2500] : \ -1) recode-3.6/libiconv/ucs2.h0100644000000000000000000000245407206266437014175 0ustar rootroot/* * UCS-2 */ /* Here we accept FFFE/FEFF marks as endianness indicators everywhere in the stream, not just at the beginning. The default is big-endian. */ /* The state is 0 if big-endian, 1 if little-endian. */ static int ucs2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; int count = 0; for (; n >= 2;) { ucs4_t wc = (state ? s[0] + (s[1] << 8) : (s[0] << 8) + s[1]); s += 2; n -= 2; count += 2; if (wc == 0xfeff) { } else if (wc == 0xfffe) { state ^= 1; } else if (wc >= 0xd800 && wc < 0xe000) { return RET_ILSEQ; } else { *pwc = wc; conv->istate = state; return count; } } conv->istate = state; return RET_TOOFEW(count); } /* But we output UCS-2 in big-endian order, without byte-order mark. */ /* RFC 2152 says: "ISO/IEC 10646-1:1993(E) specifies that when characters the UCS-2 form are serialized as octets, that the most significant octet appear first." */ static int ucs2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x10000 && wc != 0xfffe && !(wc >= 0xd800 && wc < 0xe000)) { if (n >= 2) { r[0] = (unsigned char) (wc >> 8); r[1] = (unsigned char) wc; return 2; } else return RET_TOOSMALL; } else return RET_ILSEQ; } recode-3.6/libiconv/ucs2be.h0100644000000000000000000000113507206266437014477 0ustar rootroot/* * UCS-2BE = UCS-2 big endian */ static int ucs2be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { if (n >= 2) { if (s[0] >= 0xd8 && s[0] < 0xe0) { return RET_ILSEQ; } else { *pwc = (s[0] << 8) + s[1]; return 2; } } return RET_TOOFEW(0); } static int ucs2be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) { if (n >= 2) { r[0] = (unsigned char) (wc >> 8); r[1] = (unsigned char) wc; return 2; } else return RET_TOOSMALL; } return RET_ILSEQ; } recode-3.6/libiconv/ucs2le.h0100644000000000000000000000114007206266437014505 0ustar rootroot/* * UCS-2LE = UCS-2 little endian */ static int ucs2le_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { if (n >= 2) { if (s[1] >= 0xd8 && s[1] < 0xe0) { return RET_ILSEQ; } else { *pwc = s[0] + (s[1] << 8); return 2; } } return RET_TOOFEW(0); } static int ucs2le_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) { if (n >= 2) { r[0] = (unsigned char) wc; r[1] = (unsigned char) (wc >> 8); return 2; } else return RET_TOOSMALL; } return RET_ILSEQ; } recode-3.6/libiconv/ucs2internal.h0100644000000000000000000000122407206266437015724 0ustar rootroot/* * UCS-2-INTERNAL = UCS-2 with machine dependent endianness and alignment */ static int ucs2internal_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { if (n >= 2) { unsigned short x = *(const unsigned short *)s; if (x >= 0xd800 && x < 0xe000) { return RET_ILSEQ; } else { *pwc = x; return 2; } } return RET_TOOFEW(0); } static int ucs2internal_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) { if (n >= 2) { *(unsigned short *)r = wc; return 2; } else return RET_TOOSMALL; } else return RET_ILSEQ; } recode-3.6/libiconv/ucs2swapped.h0100644000000000000000000000170707206266437015561 0ustar rootroot/* * UCS-2-SWAPPED = UCS-2-INTERNAL with inverted endianness */ static int ucs2swapped_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { /* This function assumes that 'unsigned short' has exactly 16 bits. */ if (sizeof(unsigned short) != 2) abort(); if (n >= 2) { unsigned short x = *(const unsigned short *)s; x = (x >> 8) | (x << 8); if (x >= 0xd800 && x < 0xe000) { return RET_ILSEQ; } else { *pwc = x; return 2; } } return RET_TOOFEW(0); } static int ucs2swapped_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { /* This function assumes that 'unsigned short' has exactly 16 bits. */ if (sizeof(unsigned short) != 2) abort(); if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) { if (n >= 2) { unsigned short x = wc; x = (x >> 8) | (x << 8); *(unsigned short *)r = x; return 2; } else return RET_TOOSMALL; } else return RET_ILSEQ; } recode-3.6/libiconv/ucs4.h0100644000000000000000000000236507206266437014200 0ustar rootroot/* * UCS-4 */ /* Here we accept 0000FFFE/0000FEFF marks as endianness indicators everywhere in the stream, not just at the beginning. The default is big-endian. */ /* The state is 0 if big-endian, 1 if little-endian. */ static int ucs4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; int count = 0; for (; n >= 4;) { ucs4_t wc = (state ? s[0] + (s[1] << 8) + (s[2] << 16) + (s[3] << 24) : (s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3]); s += 4; n -= 4; count += 4; if (wc == 0xfeff) { } else if (wc == 0xfffe) { state ^= 1; } else if (wc <= 0x7fffffff) { *pwc = wc; conv->istate = state; return count; } else return RET_ILSEQ; } conv->istate = state; return RET_TOOFEW(count); } /* But we output UCS-4 in big-endian order, without byte-order mark. */ static int ucs4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc != 0xfffe) { if (n >= 4) { r[0] = (unsigned char) (wc >> 24); r[1] = (unsigned char) (wc >> 16); r[2] = (unsigned char) (wc >> 8); r[3] = (unsigned char) wc; return 4; } else return RET_TOOSMALL; } else return RET_ILSEQ; } recode-3.6/libiconv/ucs4be.h0100644000000000000000000000102707206266437014501 0ustar rootroot/* * UCS-4BE = UCS-4 big endian */ static int ucs4be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { if (n >= 4) { *pwc = (s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3]; return 4; } return RET_TOOFEW(0); } static int ucs4be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 4) { r[0] = (unsigned char) (wc >> 24); r[1] = (unsigned char) (wc >> 16); r[2] = (unsigned char) (wc >> 8); r[3] = (unsigned char) wc; return 4; } else return RET_TOOSMALL; } recode-3.6/libiconv/ucs4le.h0100644000000000000000000000103207206266437014507 0ustar rootroot/* * UCS-4LE = UCS-4 little endian */ static int ucs4le_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { if (n >= 4) { *pwc = s[0] + (s[1] << 8) + (s[2] << 16) + (s[3] << 24); return 4; } return RET_TOOFEW(0); } static int ucs4le_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 4) { r[0] = (unsigned char) wc; r[1] = (unsigned char) (wc >> 8); r[2] = (unsigned char) (wc >> 16); r[3] = (unsigned char) (wc >> 24); return 4; } else return RET_TOOSMALL; } recode-3.6/libiconv/ucs4internal.h0100644000000000000000000000070107206266437015725 0ustar rootroot/* * UCS-4-INTERNAL = UCS-4 with machine dependent endianness and alignment */ static int ucs4internal_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { if (n >= 4) { *pwc = *(const unsigned int *)s; return 4; } return RET_TOOFEW(0); } static int ucs4internal_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 4) { *(unsigned int *)r = wc; return 4; } else return RET_TOOSMALL; } recode-3.6/libiconv/ucs4swapped.h0100644000000000000000000000153207206266437015557 0ustar rootroot/* * UCS-4-SWAPPED = UCS-4-INTERNAL with inverted endianness */ static int ucs4swapped_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { /* This function assumes that 'unsigned int' has exactly 32 bits. */ if (sizeof(unsigned int) != 4) abort(); if (n >= 4) { unsigned int x = *(const unsigned int *)s; x = (x >> 24) | ((x >> 8) & 0xff00) | ((x & 0xff00) << 8) | (x << 24); *pwc = x; return 4; } return RET_TOOFEW(0); } static int ucs4swapped_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { /* This function assumes that 'unsigned int' has exactly 32 bits. */ if (sizeof(unsigned int) != 4) abort(); if (n >= 4) { unsigned int x = wc; x = (x >> 24) | ((x >> 8) & 0xff00) | ((x & 0xff00) << 8) | (x << 24); *(unsigned int *)r = x; return 4; } else return RET_TOOSMALL; } recode-3.6/libiconv/uhc_1.h0100644000000000000000000024303007206266437014315 0ustar rootroot /* * Unified Hangul Code part 1 */ static const unsigned short uhc_1_2uni_main_page81[64] = { 0xac02, 0xac8d, 0xad14, 0xad91, 0xadfa, 0xae7a, 0xaee6, 0xaf57, 0xafbf, 0xb030, 0xb0a5, 0xb122, 0xb19e, 0xb207, 0xb26f, 0xb2f0, 0xb366, 0xb3e1, 0xb445, 0xb4ad, 0xb51e, 0xb590, 0xb600, 0xb661, 0xb6c3, 0xb723, 0xb79f, 0xb811, 0xb885, 0xb8f1, 0xb95a, 0xb9d4, 0xba47, 0xbac2, 0xbb28, 0xbb9a, 0xbc03, 0xbc80, 0xbcfe, 0xbd67, 0xbdd2, 0xbe3d, 0xbeb8, 0xbf23, 0xbf83, 0xbfe6, 0xc040, 0xc0a7, 0xc132, 0xc1b1, 0xc224, 0xc297, 0xc310, 0xc37a, 0xc3db, 0xc446, 0xc4aa, 0xc50f, 0xc596, 0xc626, 0xc6a8, 0xc726, 0xc7b8, 0xc832, }; static const unsigned char uhc_1_2uni_page81[5696] = { /* 0x81 */ 0x00, 0x01, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x16, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x53, 0x54, 0x55, 0x57, 0x58, 0x59, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x70, 0x71, 0x73, 0x74, 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x80, 0x85, 0x86, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x11, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1e, 0x20, 0x21, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, 0x31, 0x32, 0x33, 0x35, 0x36, 0x38, 0x39, 0x3a, 0x3c, 0x3d, 0x3e, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x49, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x55, 0x56, 0x58, 0x59, 0x5c, 0x5e, 0x60, 0x61, 0x65, 0x67, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x71, 0x72, 0x74, 0x75, 0x76, 0x78, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x81, 0x83, 0x85, 0x86, /* 0x82 */ 0x00, 0x01, 0x02, 0x03, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x23, 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x32, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3d, 0x3e, 0x3f, 0x41, 0x42, 0x43, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x5a, 0x5b, 0x5d, 0x5e, 0x63, 0x64, 0x65, 0x66, 0x6a, 0x6c, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x76, 0x77, 0x79, 0x7a, 0x7b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x31, 0x32, 0x34, 0x35, 0x36, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4c, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, /* 0x83 */ 0x00, 0x01, 0x03, 0x04, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3b, 0x3c, 0x3f, 0x41, 0x42, 0x43, 0x44, 0x45, 0x48, 0x4a, 0x4d, 0x4e, 0x4f, 0x51, 0x55, 0x57, 0x58, 0x59, 0x5b, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x64, 0x68, 0x69, 0x6a, 0x6c, 0x6d, 0x70, 0x71, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x45, 0x47, 0x48, 0x49, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x54, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x60, 0x61, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, /* 0x84 */ 0x00, 0x01, 0x03, 0x04, 0x06, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x23, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x48, 0x49, 0x4b, 0x4d, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x58, 0x5a, 0x5e, 0x5f, 0x60, 0x61, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x63, 0x64, 0x66, 0x67, /* 0x85 */ 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0b, 0x0d, 0x10, 0x11, 0x12, 0x13, 0x14, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x33, 0x34, 0x36, 0x37, 0x38, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4e, 0x4f, 0x50, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x19, 0x1b, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x26, 0x28, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4e, 0x4f, 0x51, 0x52, 0x53, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5e, 0x60, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x6b, 0x6d, 0x6e, 0x73, 0x74, /* 0x86 */ 0x00, 0x01, 0x02, 0x05, 0x0b, 0x0d, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x21, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3c, 0x3d, 0x3e, 0x3f, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x65, 0x68, 0x69, 0x6a, 0x6c, 0x6f, 0x70, 0x71, 0x72, 0x75, 0x79, 0x7a, 0x7b, 0x7c, 0x00, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20, 0x21, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x30, 0x31, 0x34, 0x35, 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x58, 0x59, 0x5b, 0x5c, 0x5d, 0x5f, 0x61, 0x62, 0x63, 0x64, 0x65, 0x68, 0x6a, 0x6c, 0x6d, 0x6e, 0x6f, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7b, /* 0x87 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4d, 0x4f, 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5c, 0x5e, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x68, 0x00, 0x02, 0x03, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0f, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x88 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x23, 0x24, 0x26, 0x27, 0x28, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x33, 0x35, 0x38, 0x39, 0x3a, 0x3c, 0x3e, 0x3f, 0x40, 0x42, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x5b, 0x5c, 0x5e, 0x5f, 0x60, 0x62, 0x64, 0x65, 0x66, 0x67, 0x68, 0x6b, 0x6d, 0x6f, 0x70, 0x71, 0x72, 0x74, 0x78, 0x7a, 0x7b, 0x00, 0x01, 0x02, 0x06, 0x0c, 0x0d, 0x0e, 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x67, 0x69, 0x6a, 0x6d, 0x70, 0x71, 0x72, 0x73, /* 0x89 */ 0x00, 0x02, 0x04, 0x06, 0x07, 0x09, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1c, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x60, 0x61, 0x63, 0x64, 0x67, 0x69, 0x6b, 0x6c, 0x6d, 0x70, 0x72, 0x74, 0x76, 0x78, 0x79, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x38, 0x39, 0x3a, 0x3c, 0x3d, 0x3e, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x49, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, /* 0x8a */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1d, 0x1f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x60, 0x61, 0x62, 0x64, 0x65, 0x66, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x31, 0x32, 0x34, 0x35, 0x38, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x41, 0x43, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x69, 0x6a, 0x6c, 0x6d, 0x70, /* 0x8b */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x24, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x40, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2e, 0x2f, 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x8c */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3d, 0x3e, 0x40, 0x41, 0x42, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4d, 0x4e, 0x4f, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, /* 0x8d */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x0a, 0x0b, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3e, 0x3f, 0x40, 0x42, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4f, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x5b, 0x5c, 0x5e, 0x5f, 0x60, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x6b, 0x70, 0x71, 0x72, 0x77, 0x78, 0x7a, 0x7b, /* 0x8e */ 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0b, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4f, 0x50, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5f, 0x63, 0x64, 0x65, 0x66, 0x67, 0x6b, 0x6c, 0x6e, 0x6f, 0x70, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x25, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5d, 0x5f, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x68, 0x69, 0x6a, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, /* 0x8f */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3d, 0x3f, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x48, 0x49, 0x4a, 0x4c, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x59, 0x5b, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x65, 0x66, 0x68, 0x69, 0x6a, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5c, 0x5d, 0x5f, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, /* 0x90 */ 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x2e, 0x31, 0x32, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x54, 0x55, 0x57, 0x58, 0x59, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x64, 0x66, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x70, 0x71, 0x73, 0x79, 0x00, 0x01, 0x02, 0x03, 0x06, 0x08, 0x0b, 0x0c, 0x0e, 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x66, 0x67, 0x69, 0x6a, 0x6b, 0x6d, 0x6f, 0x70, 0x71, 0x72, /* 0x91 */ 0x00, 0x03, 0x05, 0x08, 0x09, 0x0a, 0x0b, 0x0f, 0x10, 0x12, 0x13, 0x14, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1f, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3f, 0x41, 0x42, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x63, 0x66, 0x67, 0x68, 0x6a, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x73, 0x75, 0x77, 0x78, 0x79, 0x7a, 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4c, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x57, 0x58, 0x59, 0x5b, 0x5c, 0x5d, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, /* 0x92 */ 0x00, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0f, 0x11, 0x12, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1e, 0x20, 0x22, 0x23, 0x24, 0x26, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x2f, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x3a, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x61, 0x62, 0x63, 0x65, 0x66, 0x67, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x37, 0x38, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x60, 0x61, 0x63, 0x64, 0x67, /* 0x93 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x0b, 0x0d, 0x0f, 0x10, 0x16, 0x17, 0x1d, 0x1e, 0x1f, 0x20, 0x23, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2f, 0x30, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3f, 0x43, 0x44, 0x45, 0x47, 0x48, 0x4b, 0x4c, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x09, 0x0a, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x16, 0x18, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x23, 0x25, 0x26, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x32, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3e, 0x3f, 0x41, 0x42, 0x43, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4e, 0x52, 0x53, 0x54, 0x56, 0x57, 0x59, 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x77, 0x79, 0x7a, 0x7b, 0x7d, /* 0x94 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4d, 0x4f, 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x67, 0x68, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, /* 0x95 */ 0x00, 0x01, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2f, 0x30, 0x32, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x19, 0x1b, 0x1f, 0x20, 0x21, 0x22, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x35, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x41, 0x42, 0x44, 0x45, 0x46, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x51, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, /* 0x96 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x1d, 0x1e, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x62, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x97 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4b, 0x4c, 0x4e, 0x4f, 0x50, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x5a, 0x5b, 0x5d, 0x5f, 0x60, 0x61, 0x62, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x57, 0x58, 0x59, /* 0x98 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x52, 0x53, 0x55, 0x56, 0x57, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x62, 0x64, 0x66, 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x0a, 0x0b, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, 0x23, 0x24, 0x26, 0x27, 0x28, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x33, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3f, 0x40, 0x42, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4f, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x5a, 0x5b, 0x5c, 0x5e, 0x5f, 0x60, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x6a, 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x7a, 0x7b, 0x7e, 0x81, 0x82, 0x83, 0x84, 0x87, /* 0x99 */ 0x00, 0x01, 0x02, 0x03, 0x05, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x18, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x34, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5d, 0x5f, 0x60, 0x61, 0x63, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6c, 0x6e, 0x70, 0x71, 0x72, 0x74, 0x75, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x24, 0x25, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5d, 0x5f, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x69, 0x6a, 0x6c, 0x6d, 0x70, 0x71, 0x72, /* 0x9a */ 0x00, 0x01, 0x02, 0x03, 0x06, 0x08, 0x0a, 0x0c, 0x0f, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2e, 0x2f, 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3d, 0x3e, 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x4a, 0x4b, 0x4d, 0x4e, 0x4f, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x5a, 0x5c, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x00, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0f, 0x10, 0x12, 0x13, 0x14, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1f, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x47, 0x48, 0x4a, 0x4b, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x57, 0x59, 0x5b, 0x5c, 0x5d, 0x5e, 0x60, 0x63, 0x66, 0x67, 0x68, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x73, 0x74, 0x77, 0x78, /* 0x9b */ 0x00, 0x01, 0x02, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x61, 0x63, 0x64, 0x65, 0x66, 0x67, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x60, /* 0x9c */ 0x00, 0x02, 0x03, 0x06, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20, 0x21, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, /* 0x9d */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x48, 0x49, 0x4b, 0x4c, 0x4d, 0x4f, 0x51, 0x52, 0x53, 0x54, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x63, 0x64, 0x00, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x37, 0x38, 0x3c, 0x40, 0x41, 0x42, 0x43, 0x47, 0x4b, 0x4c, 0x4d, 0x50, 0x53, 0x54, 0x56, 0x57, 0x58, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x63, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6f, 0x70, 0x72, 0x73, 0x74, 0x76, 0x77, 0x79, 0x7a, 0x7b, 0x7c, 0x7f, 0x81, 0x83, 0x84, 0x85, /* 0x9e */ 0x00, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20, 0x21, 0x24, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x35, 0x37, 0x39, 0x3c, 0x3d, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4c, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x59, 0x5b, 0x5c, 0x5d, 0x5f, 0x62, 0x63, 0x64, 0x65, 0x6c, 0x6d, 0x6e, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x84, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x00, 0x01, 0x03, 0x04, 0x05, 0x09, 0x0b, 0x0c, 0x10, 0x12, 0x14, 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48, 0x4a, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x54, 0x55, 0x57, 0x58, 0x59, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x64, 0x66, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x70, 0x71, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x80, /* 0x9f */ 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x36, 0x37, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x42, 0x43, 0x45, 0x46, 0x47, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5e, 0x5f, 0x61, 0x62, 0x63, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6e, 0x70, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7a, 0x7b, 0x7d, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0c, 0x0e, 0x10, 0x12, 0x13, 0x14, 0x15, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x25, 0x28, 0x2a, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x43, 0x44, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x50, 0x51, 0x53, 0x54, 0x55, 0x59, 0x5a, 0x5b, 0x5c, 0x60, 0x65, 0x66, 0x67, 0x69, 0x6c, 0x6d, 0x6f, 0x73, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7c, 0x81, 0x82, 0x83, 0x84, 0x85, 0x88, 0x89, 0x8b, 0x8c, 0x8d, 0x8f, 0x90, 0x91, /* 0xa0 */ 0x00, 0x01, 0x02, 0x03, 0x06, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x12, 0x13, 0x15, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x21, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x2f, 0x31, 0x32, 0x33, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x4a, 0x4b, 0x4d, 0x4e, 0x4f, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x5a, 0x5c, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x66, 0x67, 0x69, 0x6a, 0x6b, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x76, 0x78, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x18, 0x19, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x40, 0x41, 0x43, 0x44, 0x45, 0x47, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x50, 0x52, 0x56, 0x57, 0x58, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6c, 0x6e, 0x70, 0x71, 0x72, }; static int uhc_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0x81 && c1 <= 0xa0)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x41 && c2 < 0x5b) || (c2 >= 0x61 && c2 < 0x7b) || (c2 >= 0x81 && c2 < 0xff)) { unsigned int row = c1 - 0x81; unsigned int col = c2 - (c2 >= 0x81 ? 0x4d : c2 >= 0x61 ? 0x47 : 0x41); unsigned int i = 178 * row + col; if (i < 5696) { *pwc = (ucs4_t) (uhc_1_2uni_main_page81[2*row+(col>=89?1:0)] + uhc_1_2uni_page81[i]); return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short uhc_1_2charset_main[45] = { 0x8141, 0x81cd, 0x829b, 0x8363, 0x83e9, 0x84b7, 0x8585, 0x8647, 0x86d3, 0x87a1, 0x8869, 0x88ef, 0x89bd, 0x8a8b, 0x8b4d, 0x8bd9, 0x8ca7, 0x8d6f, 0x8df5, 0x8ec3, 0x8f91, 0x9053, 0x90df, 0x91ad, 0x9275, 0x92fb, 0x93c9, 0x9497, 0x9559, 0x95e5, 0x96b3, 0x9781, 0x9843, 0x98cf, 0x999d, 0x9a65, 0x9aeb, 0x9bb9, 0x9c87, 0x9d49, 0x9dd5, 0x9ea3, 0x9f6b, 0x9ff1, 0xa0bf, }; static const unsigned char uhc_1_2charset[5696] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc6, 0xc7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x00, 0x01, 0x02, 0x03, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0x00, 0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0xc0, 0xc1, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xc4, 0xc5, 0xc6, 0xc7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, }; static const Summary16 uhc_1_uni2indx_pageac[459] = { /* 0xac00 */ { 0, 0xf86c }, { 9, 0xc100 }, { 12, 0x4fee }, { 23, 0xecfc }, { 34, 0xd7fe }, { 47, 0xeeef }, { 60, 0xffff }, { 76, 0xfa6c }, { 86, 0xe184 }, { 92, 0x4fee }, { 103, 0x68fc }, { 112, 0xc4fe }, { 122, 0xeeed }, { 134, 0xff5f }, { 148, 0x6a6c }, { 156, 0xcf94 }, /* 0xad00 */ { 165, 0x4fae }, { 175, 0xeefd }, { 188, 0xcdfe }, { 200, 0xeecf }, { 212, 0xfd4f }, { 224, 0xfeee }, { 237, 0xcff5 }, { 249, 0x4786 }, { 256, 0xecf9 }, { 267, 0xcffe }, { 280, 0xffef }, { 295, 0xff7f }, { 310, 0xfeec }, { 322, 0xeff4 }, { 334, 0xffee }, { 348, 0x6cff }, /* 0xae00 */ { 360, 0xd4fc }, { 370, 0xffef }, { 385, 0xffff }, { 401, 0xfa6c }, { 411, 0x8b94 }, { 418, 0x4fae }, { 428, 0xecdc }, { 438, 0xc4fe }, { 448, 0xefcf }, { 461, 0xffff }, { 477, 0xffff }, { 493, 0x8fff }, { 506, 0x4fee }, { 517, 0xecfc }, { 528, 0xd6ff }, { 541, 0xeeef }, /* 0xaf00 */ { 554, 0xde7f }, { 567, 0xfffe }, { 582, 0xcfff }, { 596, 0x4fea }, { 606, 0xfcf1 }, { 617, 0xcffe }, { 630, 0xffcf }, { 644, 0xfdff }, { 659, 0xfeee }, { 672, 0xefdc }, { 684, 0xffff }, { 700, 0xecff }, { 713, 0x947e }, { 722, 0xefef }, { 736, 0xfcff }, { 750, 0xfeec }, /* 0xb000 */ { 762, 0xefec }, { 774, 0xcfee }, { 786, 0xfeff }, { 801, 0xffff }, { 817, 0xaacf }, { 827, 0xdd47 }, { 837, 0xffff }, { 853, 0xcfff }, { 867, 0x4fee }, { 878, 0x68fd }, { 888, 0x04f8 }, { 894, 0xeec5 }, { 904, 0xfc4f }, { 915, 0xfeec }, { 927, 0xffde }, { 941, 0xffff }, /* 0xb100 */ { 957, 0xe4ff }, { 969, 0xc4f2 }, { 977, 0xeec7 }, { 988, 0xfc4f }, { 999, 0xfeec }, { 1011, 0xeecc }, { 1021, 0xfffe }, { 1036, 0xecff }, { 1049, 0xd4fa }, { 1059, 0xeee3 }, { 1070, 0xfeff }, { 1085, 0xffff }, { 1101, 0xefff }, { 1116, 0x4fee }, { 1127, 0xecff }, { 1140, 0xd5fe }, /* 0xb200 */ { 1152, 0xe6cf }, { 1163, 0xfd4f }, { 1175, 0xfffe }, { 1190, 0xefef }, { 1204, 0xffff }, { 1220, 0xeeff }, { 1234, 0xfcfe }, { 1247, 0xefcf }, { 1260, 0xfdcf }, { 1273, 0xf8ec }, { 1283, 0xeb94 }, { 1292, 0xffee }, { 1306, 0xecff }, { 1319, 0xd4fa }, { 1329, 0x068b }, { 1335, 0x7047 }, /* 0xb300 */ { 1342, 0xfeec }, { 1354, 0xefc4 }, { 1364, 0xffff }, { 1380, 0xffff }, { 1396, 0xffff }, { 1412, 0x268f }, { 1420, 0xb54f }, { 1430, 0xfeec }, { 1442, 0xefc4 }, { 1452, 0xffee }, { 1466, 0xeefc }, { 1478, 0xffff }, { 1494, 0xa6cf }, { 1504, 0xd54e }, { 1513, 0xfeee }, { 1526, 0xefff }, /* 0xb400 */ { 1541, 0xffff }, { 1557, 0xeefe }, { 1570, 0xf4fe }, { 1582, 0xffef }, { 1597, 0xffff }, { 1613, 0xfeec }, { 1625, 0xefd4 }, { 1636, 0xffff }, { 1652, 0xfefe }, { 1666, 0xdfff }, { 1681, 0xeeef }, { 1694, 0xfd5f }, { 1707, 0xfeee }, { 1720, 0xcfde }, { 1732, 0x4fa6 }, { 1741, 0xfefd }, /* 0xb500 */ { 1755, 0xffff }, { 1771, 0xe6cf }, { 1782, 0xf84f }, { 1792, 0xfeec }, { 1804, 0xc7c4 }, { 1812, 0x4fee }, { 1823, 0xfffc }, { 1837, 0xffff }, { 1853, 0xffff }, { 1869, 0xffff }, { 1885, 0xf2ec }, { 1895, 0xc7c4 }, { 1903, 0x4fee }, { 1914, 0xfefc }, { 1927, 0xefff }, { 1942, 0xffff }, /* 0xb600 */ { 1958, 0xffff }, { 1974, 0xfeec }, { 1986, 0xefdf }, { 2000, 0xffef }, { 2015, 0xfeff }, { 2030, 0xffff }, { 2046, 0xfeef }, { 2060, 0xffff }, { 2076, 0xffff }, { 2092, 0xcfff }, { 2106, 0xe7ee }, { 2118, 0xfffd }, { 2133, 0xffff }, { 2149, 0xffef }, { 2164, 0xffff }, { 2180, 0xfeee }, /* 0xb700 */ { 2193, 0xffdc }, { 2206, 0xffff }, { 2222, 0x6cff }, { 2234, 0xf4fe }, { 2246, 0xeeef }, { 2259, 0xffcf }, { 2273, 0xfeee }, { 2286, 0xcfd4 }, { 2296, 0x4fee }, { 2307, 0xec38 }, { 2315, 0xc4fe }, { 2325, 0xfecf }, { 2338, 0xfd7f }, { 2352, 0xffff }, { 2368, 0xcfff }, { 2382, 0x4fee }, /* 0xb800 */ { 2393, 0xec7c }, { 2403, 0xd4fe }, { 2414, 0xeecf }, { 2426, 0xfc4f }, { 2437, 0xffee }, { 2451, 0xcff5 }, { 2463, 0x4fee }, { 2474, 0xeefd }, { 2487, 0xdfff }, { 2502, 0xffff }, { 2518, 0xfeff }, { 2533, 0xfeee }, { 2546, 0xefd4 }, { 2557, 0x5fee }, { 2569, 0xecfd }, { 2581, 0xd4fe }, /* 0xb900 */ { 2592, 0xffef }, { 2607, 0xfeff }, { 2622, 0xfffe }, { 2637, 0xcfff }, { 2651, 0x6fee }, { 2663, 0xecfd }, { 2675, 0xd4fe }, { 2686, 0xeecf }, { 2698, 0x994f }, { 2707, 0xffff }, { 2723, 0xcfff }, { 2737, 0x4fee }, { 2748, 0x2cfd }, { 2758, 0x94f8 }, { 2766, 0xeec5 }, { 2776, 0xf84f }, /* 0xba00 */ { 2786, 0xfefc }, { 2799, 0xffdf }, { 2814, 0xffff }, { 2830, 0xecff }, { 2843, 0x94fa }, { 2852, 0xeec7 }, { 2863, 0xfc4f }, { 2874, 0xfeec }, { 2886, 0xef47 }, { 2897, 0xffff }, { 2913, 0xe4ff }, { 2925, 0xd4fa }, { 2935, 0xfeef }, { 2949, 0xfcff }, { 2963, 0xffff }, { 2979, 0xefff }, /* 0xbb00 */ { 2994, 0x5fee }, { 3006, 0xeefd }, { 3019, 0xf5fe }, { 3032, 0x868f }, { 3040, 0x5d4f }, { 3050, 0xfeee }, { 3063, 0xeff5 }, { 3076, 0xffff }, { 3092, 0xeeff }, { 3106, 0xfffe }, { 3121, 0xeeef }, { 3134, 0xff6f }, { 3148, 0xfeee }, { 3161, 0xfff6 }, { 3175, 0xffff }, { 3191, 0x6cff }, /* 0xbc00 */ { 3203, 0x44fa }, { 3211, 0x060d }, { 3216, 0xdd4f }, { 3227, 0xfeec }, { 3239, 0xcdc4 }, { 3247, 0xdffe }, { 3261, 0xffff }, { 3277, 0xffff }, { 3293, 0xa6cf }, { 3303, 0xf94f }, { 3314, 0xfe6c }, { 3325, 0xcfc4 }, { 3334, 0x5fee }, { 3346, 0xeedc }, { 3357, 0xffff }, { 3373, 0xee8f }, /* 0xbd00 */ { 3384, 0xfd4f }, { 3396, 0xffee }, { 3410, 0xefef }, { 3424, 0xffff }, { 3440, 0xecfe }, { 3452, 0xfcfe }, { 3465, 0xfeef }, { 3479, 0xffff }, { 3495, 0xf86c }, { 3504, 0xe9d4 }, { 3513, 0xffef }, { 3528, 0xfefe }, { 3542, 0xffff }, { 3558, 0xeecf }, { 3570, 0xfdff }, { 3585, 0xfeee }, /* 0xbe00 */ { 3598, 0xcfd6 }, { 3609, 0x4fee }, { 3620, 0xffff }, { 3636, 0xffff }, { 3652, 0xaecf }, { 3663, 0xf14f }, { 3673, 0xfaec }, { 3684, 0xc7c4 }, { 3692, 0x4fee }, { 3703, 0xfcfc }, { 3715, 0xfeff }, { 3730, 0xffff }, { 3746, 0xffff }, { 3762, 0xfe6c }, { 3773, 0xefc6 }, { 3784, 0xffff }, /* 0xbf00 */ { 3800, 0xfcfd }, { 3813, 0xc4ff }, { 3824, 0xffff }, { 3840, 0xffff }, { 3856, 0xfeec }, { 3868, 0xffdc }, { 3881, 0xffff }, { 3897, 0xffff }, { 3913, 0xffff }, { 3929, 0xffef }, { 3944, 0xffff }, { 3960, 0xfffe }, { 3975, 0xcfdf }, { 3988, 0x6fee }, { 4000, 0xfffd }, { 4015, 0xffff }, /* 0xc000 */ { 4031, 0xffff }, { 4047, 0xffff }, { 4063, 0xffff }, { 4079, 0xefff }, { 4094, 0xffff }, { 4110, 0xeefd }, { 4123, 0xfcfe }, { 4136, 0xffff }, { 4152, 0xffff }, { 4168, 0xfeec }, { 4180, 0x4fd4 }, { 4189, 0x4f86 }, { 4197, 0xecdc }, { 4207, 0xc4fe }, { 4217, 0xeecf }, { 4229, 0xfd4f }, /* 0xc100 */ { 4241, 0xfeee }, { 4254, 0x0fde }, { 4264, 0x4f26 }, { 4272, 0xecbc }, { 4282, 0xc4fe }, { 4292, 0xeecf }, { 4304, 0xfc4f }, { 4315, 0xfeee }, { 4328, 0x8fdf }, { 4340, 0x4fae }, { 4350, 0xecdd }, { 4361, 0xdffe }, { 4375, 0xeeef }, { 4388, 0xfe6f }, { 4401, 0xfeee }, { 4414, 0xcff4 }, /* 0xc200 */ { 4425, 0x4fee }, { 4436, 0x6cfd }, { 4447, 0x54fe }, { 4457, 0xffe9 }, { 4470, 0xfeff }, { 4485, 0xfeec }, { 4497, 0xcfde }, { 4509, 0x4fee }, { 4520, 0xfcfd }, { 4533, 0xd6fe }, { 4545, 0xcecf }, { 4556, 0xfd4f }, { 4568, 0xffff }, { 4584, 0xcfff }, { 4598, 0x47e6 }, { 4607, 0xe4bd }, /* 0xc300 */ { 4617, 0xccfe }, { 4628, 0xeec7 }, { 4639, 0xfccf }, { 4651, 0xffff }, { 4667, 0xffdf }, { 4682, 0xffff }, { 4698, 0xecff }, { 4711, 0xccfa }, { 4721, 0xeeef }, { 4734, 0xffff }, { 4750, 0xffff }, { 4766, 0xffff }, { 4782, 0xfffe }, { 4797, 0x6cff }, { 4809, 0xdcfa }, { 4820, 0xfecf }, /* 0xc400 */ { 4833, 0xfeff }, { 4848, 0xfffe }, { 4863, 0xefef }, { 4877, 0xcfee }, { 4889, 0xfeff }, { 4904, 0xffff }, { 4920, 0xeecf }, { 4932, 0xfdcf }, { 4945, 0xfffe }, { 4960, 0xefef }, { 4974, 0xffff }, { 4990, 0xeeff }, { 5004, 0xffff }, { 5020, 0xffff }, { 5036, 0xfdff }, { 5051, 0x7aec }, /* 0xc500 */ { 5061, 0xeffc }, { 5074, 0xefee }, { 5087, 0xecff }, { 5100, 0xd4fe }, { 5111, 0x88cf }, { 5119, 0x9c47 }, { 5127, 0xfeec }, { 5139, 0xcfc4 }, { 5148, 0x4f6e }, { 5158, 0xee5d }, { 5169, 0xfdfe }, { 5183, 0x84cf }, { 5191, 0xa80f }, { 5198, 0xfeec }, { 5210, 0x8fd4 }, { 5219, 0x0f2e }, /* 0xc600 */ { 5227, 0xee1c }, { 5236, 0xe4fe }, { 5247, 0x8ecf }, { 5257, 0xf546 }, { 5266, 0xfeec }, { 5278, 0xcfc4 }, { 5287, 0x6ffe }, { 5300, 0xecfd }, { 5312, 0xd4fe }, { 5323, 0xeecf }, { 5335, 0xfd4f }, { 5347, 0xf8ec }, { 5357, 0xcfd4 }, { 5367, 0xcfee }, { 5379, 0xecfc }, { 5390, 0xdcfe }, /* 0xc700 */ { 5402, 0xeecf }, { 5414, 0xfd4f }, { 5426, 0xfeec }, { 5438, 0xcf54 }, { 5447, 0x4bee }, { 5457, 0xee01 }, { 5464, 0xf6fe }, { 5477, 0x8ecf }, { 5487, 0xb847 }, { 5495, 0xfa2c }, { 5504, 0xcf84 }, { 5512, 0x4fee }, { 5523, 0xacfc }, { 5533, 0xdefe }, { 5546, 0xeeef }, { 5559, 0xffff }, /* 0xc800 */ { 5575, 0xfaec }, { 5586, 0xcf94 }, { 5595, 0x4fee }, { 5606, 0xeefd }, { 5619, 0xccfe }, { 5630, 0xffef }, { 5645, 0xffff }, { 5661, 0xfaec }, { 5672, 0xc714 }, { 5679, 0x5fef }, { 5692, 0x001d }, }; static int uhc_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { if (wc >= 0xac00 && wc < 0xc8b0) { const Summary16 *summary = &uhc_1_uni2indx_pageac[(wc>>4)-0xac0]; unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); used += summary->indx; c = uhc_1_2charset_main[used>>7] + uhc_1_2charset[used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/uhc_2.h0100644000000000000000000013463207206266437014325 0ustar rootroot /* * Unified Hangul Code part 2 */ static const unsigned short uhc_2_2uni_main_pagea1[76] = { 0xc8a5, 0xc8d8, 0xc910, 0xc93e, 0xc971, 0xc9a5, 0xc9de, 0xca1c, 0xca47, 0xca7b, 0xcaa8, 0xcadd, 0xcb0b, 0xcb3a, 0xcb6d, 0xcb99, 0xcbc5, 0xcbf3, 0xcc25, 0xcc67, 0xcc94, 0xcccf, 0xccfe, 0xcd34, 0xcd61, 0xcd92, 0xcdc6, 0xcdf5, 0xce2c, 0xce5d, 0xce9a, 0xcecc, 0xcf02, 0xcf3b, 0xcf6d, 0xcf9e, 0xcfcc, 0xcfff, 0xd02e, 0xd064, 0xd095, 0xd0cc, 0xd105, 0xd132, 0xd16e, 0xd19b, 0xd1d0, 0xd1fd, 0xd22a, 0xd25e, 0xd28d, 0xd2c5, 0xd2fb, 0xd33e, 0xd36a, 0xd3a1, 0xd3d7, 0xd40d, 0xd438, 0xd467, 0xd49e, 0xd4c9, 0xd4fe, 0xd52e, 0xd564, 0xd59d, 0xd5ca, 0xd606, 0xd63d, 0xd677, 0xd6ab, 0xd6e2, 0xd715, 0xd74e, 0xd78d, 0xfffd, }; static const unsigned char uhc_2_2uni_pagea1[3126] = { /* 0xa1 */ 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x31, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x36, /* 0xa2 */ 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2f, 0x30, 0x31, /* 0xa3 */ 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x29, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1d, 0x1e, 0x20, 0x21, 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, 0x2f, 0x32, 0x33, 0x36, /* 0xa4 */ 0x00, 0x01, 0x03, 0x05, 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, /* 0xa5 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, /* 0xa6 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x26, 0x28, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x32, 0x33, 0x34, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2c, 0x2d, /* 0xa7 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x11, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, /* 0xa8 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, /* 0xa9 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x30, 0x31, /* 0xaa */ 0x00, 0x01, 0x05, 0x06, 0x08, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x15, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x21, 0x22, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x31, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3c, 0x3d, 0x3e, 0x40, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, /* 0xab */ 0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x16, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x23, 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x32, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x00, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, /* 0xac */ 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2b, /* 0xad */ 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0f, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x00, 0x01, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x33, /* 0xae */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, 0x00, 0x01, 0x02, 0x05, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, /* 0xaf */ 0x00, 0x01, 0x02, 0x03, 0x06, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2e, 0x2f, 0x00, 0x01, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0f, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x29, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x35, 0x36, 0x38, 0x39, 0x3a, 0x3c, /* 0xb0 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x1d, 0x1e, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x2a, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, /* 0xb1 */ 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x37, 0x38, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2d, 0x2f, 0x30, 0x31, /* 0xb2 */ 0x00, 0x01, 0x02, 0x05, 0x06, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* 0xb3 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x26, 0x28, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x31, 0x32, 0x00, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, /* 0xb4 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x18, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, /* 0xb5 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x21, 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x35, 0x36, 0x00, 0x01, 0x02, 0x03, 0x06, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, /* 0xb6 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x2e, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 0x3b, /* 0xb7 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, /* 0xb8 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2c, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, /* 0xb9 */ 0x00, 0x01, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x33, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, /* 0xba */ 0x00, 0x01, 0x02, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, 0x2e, 0x30, 0x31, 0x34, 0x36, 0x37, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x34, 0x35, /* 0xbb */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x07, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x14, 0x16, 0x17, 0x18, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x23, 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2f, 0x30, 0x32, 0x33, 0x34, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3f, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, /* 0xbc */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x24, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x30, 0x31, 0x33, 0x34, 0x35, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x25, 0x26, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, /* 0xbd */ 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x27, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x32, 0x33, 0x34, 0x35, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, /* 0xbe */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x13, 0x14, 0x16, 0x17, 0x1a, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x23, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, /* 0xbf */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x33, /* 0xc0 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x11, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20, 0x22, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, /* 0xc1 */ 0x00, 0x02, 0x03, 0x06, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x12, 0x13, 0x15, 0x16, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x22, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, /* 0xc2 */ 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2c, 0x2e, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3b, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0c, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x34, 0x35, /* 0xc3 */ 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x09, 0x0a, 0x0d, 0x0f, 0x11, 0x12, 0x13, 0x15, 0x16, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x35, 0x36, 0x38, 0x39, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x29, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x32, 0x33, /* 0xc4 */ 0x00, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x36, 0x00, 0x01, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x32, /* 0xc5 */ 0x00, 0x01, 0x02, 0x05, 0x06, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x15, 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x21, 0x22, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x30, 0x31, 0x33, 0x35, 0x36, 0x37, 0x38, 0x00, 0x01, 0x04, 0x05, 0x07, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x14, 0x16, 0x18, 0x19, 0x1a, 0x1c, 0x1d, 0x1f, 0x20, 0x21, 0x23, 0x24, 0x25, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3c, 0x3d, /* 0xc6 */ 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0f, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, }; static int uhc_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c1 = s[0]; if ((c1 >= 0xa1 && c1 <= 0xc6)) { if (n >= 2) { unsigned char c2 = s[1]; if ((c2 >= 0x41 && c2 < 0x5b) || (c2 >= 0x61 && c2 < 0x7b) || (c2 >= 0x81 && c2 < 0xa1)) { unsigned int row = c1 - 0xa1; unsigned int col = c2 - (c2 >= 0x81 ? 0x4d : c2 >= 0x61 ? 0x47 : 0x41); unsigned int i = 84 * row + col; if (i < 3126) { *pwc = (ucs4_t) (uhc_2_2uni_main_pagea1[2*row+(col>=42?1:0)] + uhc_2_2uni_pagea1[i]); return 2; } } return RET_ILSEQ; } return RET_TOOFEW(0); } return RET_ILSEQ; } static const unsigned short uhc_2_2charset_main[49] = { 0xa141, 0xa18d, 0xa273, 0xa359, 0xa445, 0xa491, 0xa577, 0xa663, 0xa749, 0xa795, 0xa881, 0xa967, 0xaa4d, 0xaa99, 0xab85, 0xac6b, 0xad51, 0xad9d, 0xae89, 0xaf6f, 0xb055, 0xb141, 0xb18d, 0xb273, 0xb359, 0xb445, 0xb491, 0xb577, 0xb663, 0xb749, 0xb795, 0xb881, 0xb967, 0xba4d, 0xba99, 0xbb85, 0xbc6b, 0xbd51, 0xbd9d, 0xbe89, 0xbf6f, 0xc055, 0xc141, 0xc18d, 0xc273, 0xc359, 0xc445, 0xc491, 0xc577, }; static const unsigned char uhc_2_2charset[3126] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xea, 0xeb, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xea, 0xeb, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0x01, 0x02, 0x03, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, }; static const Summary16 uhc_2_uni2indx_pagec8[251] = { /* 0xc800 */ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0xfee0 }, { 10, 0xcfff }, { 24, 0xeeef }, { 37, 0xfd4f }, { 49, 0xffec }, { 62, 0xcfdf }, /* 0xc900 */ { 75, 0x4f8e }, { 84, 0xfefd }, { 98, 0xefff }, { 113, 0xffef }, { 128, 0xffff }, { 144, 0xfeec }, { 156, 0xeff4 }, { 168, 0xefee }, { 181, 0xecff }, { 194, 0xd4fe }, { 205, 0xffff }, { 221, 0xffff }, { 237, 0xfa6c }, { 247, 0xc994 }, { 254, 0x4f6a }, { 263, 0xecfc }, /* 0xca00 */ { 274, 0xc4fe }, { 284, 0xfeef }, { 298, 0xfdff }, { 313, 0xffff }, { 329, 0xcfff }, { 343, 0x4fee }, { 354, 0xfefc }, { 367, 0xdfff }, { 382, 0xffef }, { 397, 0xfeff }, { 412, 0xffff }, { 428, 0xcfff }, { 442, 0x4fee }, { 453, 0xfcf5 }, { 465, 0xeffe }, { 479, 0xffef }, /* 0xcb00 */ { 494, 0xfeff }, { 509, 0xfeee }, { 522, 0xfffc }, { 536, 0xffff }, { 552, 0xecfd }, { 564, 0xdcfe }, { 576, 0xffef }, { 591, 0xfcff }, { 605, 0xffff }, { 621, 0xefff }, { 636, 0xffff }, { 652, 0xfeff }, { 667, 0xffff }, { 683, 0xffef }, { 698, 0xfd6f }, { 711, 0xffff }, /* 0xcc00 */ { 727, 0xcfff }, { 741, 0xcfee }, { 753, 0xac79 }, { 762, 0x84fe }, { 771, 0xeecf }, { 783, 0xfc4f }, { 794, 0xfeae }, { 806, 0xffde }, { 820, 0xffff }, { 836, 0xecff }, { 849, 0xc4fe }, { 859, 0xeecf }, { 871, 0xfd4f }, { 883, 0xffee }, { 897, 0xefef }, { 911, 0xfffe }, /* 0xcd00 */ { 926, 0xecfd }, { 938, 0xd4fe }, { 949, 0xeeef }, { 962, 0xfdff }, { 977, 0xffff }, { 993, 0xefff }, { 1008, 0x4fee }, { 1019, 0xfefd }, { 1033, 0xfeff }, { 1048, 0xeecf }, { 1060, 0xfd4f }, { 1072, 0xfffe }, { 1087, 0xefef }, { 1101, 0xfffe }, { 1116, 0xeeff }, { 1130, 0xd4fe }, /* 0xce00 */ { 1141, 0xeeef }, { 1154, 0xfdef }, { 1168, 0xfeec }, { 1180, 0xffd4 }, { 1192, 0xffff }, { 1208, 0x6cff }, { 1220, 0xd4fc }, { 1230, 0xeecf }, { 1242, 0xfd4f }, { 1254, 0xfeec }, { 1266, 0xcfc4 }, { 1275, 0xffff }, { 1291, 0xfffd }, { 1306, 0xffff }, { 1322, 0xe6cf }, { 1333, 0xfc4f }, /* 0xcf00 */ { 1344, 0xfeec }, { 1356, 0xefd4 }, { 1367, 0x4fee }, { 1378, 0xfefc }, { 1391, 0xffff }, { 1407, 0xeecf }, { 1419, 0xfd4f }, { 1431, 0xfeec }, { 1443, 0xefde }, { 1456, 0xffff }, { 1472, 0xfefd }, { 1486, 0xfffe }, { 1501, 0xffef }, { 1516, 0xffff }, { 1532, 0xfeec }, { 1544, 0xefd4 }, /* 0xd000 */ { 1555, 0xffee }, { 1569, 0xfefd }, { 1583, 0xdfff }, { 1598, 0xeecf }, { 1610, 0xfd4f }, { 1622, 0xfeee }, { 1635, 0xcffe }, { 1648, 0xcfee }, { 1660, 0xfffd }, { 1675, 0xffff }, { 1691, 0xeecf }, { 1703, 0xfd4f }, { 1715, 0xfcec }, { 1726, 0xcfc4 }, { 1735, 0x4fee }, { 1746, 0xfefc }, /* 0xd100 */ { 1759, 0xdfff }, { 1774, 0xffff }, { 1790, 0xffff }, { 1806, 0xfaec }, { 1817, 0xcfc4 }, { 1826, 0x4fee }, { 1837, 0xeefd }, { 1850, 0xefff }, { 1865, 0xfeef }, { 1879, 0xffff }, { 1895, 0xfeec }, { 1907, 0xebd4 }, { 1917, 0xfffe }, { 1932, 0xfeff }, { 1947, 0xffff }, { 1963, 0xfeef }, /* 0xd200 */ { 1977, 0xfd7f }, { 1991, 0xfffe }, { 2006, 0xcfff }, { 2020, 0x4fee }, { 2031, 0xfefd }, { 2045, 0xefff }, { 2060, 0xffef }, { 2075, 0xffff }, { 2091, 0xfeec }, { 2103, 0xefdc }, { 2115, 0xefee }, { 2128, 0x6cfd }, { 2139, 0xf4fa }, { 2150, 0xeeef }, { 2163, 0xffcf }, { 2177, 0xfeec }, /* 0xd300 */ { 2189, 0x8fd4 }, { 2198, 0x4fae }, { 2208, 0xecdc }, { 2218, 0xc4fe }, { 2228, 0xffcf }, { 2242, 0xffff }, { 2258, 0xffff }, { 2274, 0xcfff }, { 2288, 0x4fee }, { 2299, 0xecfc }, { 2310, 0xd4fe }, { 2321, 0xeeef }, { 2334, 0xfccf }, { 2346, 0xfefe }, { 2360, 0xcff5 }, { 2372, 0x4fee }, /* 0xd400 */ { 2383, 0xfefd }, { 2397, 0xdfff }, { 2412, 0xffff }, { 2428, 0xffff }, { 2444, 0xffee }, { 2458, 0xefff }, { 2473, 0x5fee }, { 2485, 0x6cff }, { 2497, 0xd4fa }, { 2507, 0xffef }, { 2522, 0xfdff }, { 2537, 0xffff }, { 2553, 0xefff }, { 2568, 0x6fee }, { 2580, 0xeeff }, { 2594, 0xd6fe }, /* 0xd500 */ { 2606, 0xeeef }, { 2619, 0xff4f }, { 2632, 0xffff }, { 2648, 0xcfff }, { 2662, 0x4fee }, { 2673, 0xecfd }, { 2685, 0xd4de }, { 2695, 0xeecf }, { 2707, 0xfc4f }, { 2718, 0xfffe }, { 2733, 0xffdf }, { 2748, 0xffff }, { 2764, 0xecff }, { 2777, 0xd4fa }, { 2787, 0xeecf }, { 2799, 0xfd4f }, /* 0xd600 */ { 2811, 0xfeec }, { 2823, 0xefc4 }, { 2833, 0xdfee }, { 2846, 0xecff }, { 2859, 0xd4de }, { 2869, 0xeecd }, { 2880, 0xfd7f }, { 2894, 0xffec }, { 2907, 0xcfd7 }, { 2919, 0x5fee }, { 2931, 0xeefd }, { 2944, 0xf5fe }, { 2957, 0xeecf }, { 2969, 0xfd6d }, { 2981, 0xfeee }, { 2994, 0xcfde }, /* 0xd700 */ { 3006, 0xffee }, { 3020, 0xecfd }, { 3032, 0xd4fe }, { 3043, 0xeecf }, { 3055, 0xfd6f }, { 3068, 0xfc2c }, { 3077, 0xedd4 }, { 3087, 0xcfee }, { 3099, 0xecfd }, { 3111, 0xd4fe }, { 3122, 0x000f }, }; static int uhc_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (n >= 2) { if (wc >= 0xc800 && wc < 0xd7b0) { const Summary16 *summary = &uhc_2_uni2indx_pagec8[(wc>>4)-0xc80]; unsigned short used = summary->used; unsigned int i = wc & 0x0f; if (used & ((unsigned short) 1 << i)) { unsigned short c; /* Keep in `used' only the bits 0..i-1. */ used &= ((unsigned short) 1 << i) - 1; /* Add `summary->indx' and the number of bits set in `used'. */ used = (used & 0x5555) + ((used & 0xaaaa) >> 1); used = (used & 0x3333) + ((used & 0xcccc) >> 2); used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4); used = (used & 0x00ff) + (used >> 8); used += summary->indx; c = uhc_2_2charset_main[used>>6] + uhc_2_2charset[used]; r[0] = (c >> 8); r[1] = (c & 0xff); return 2; } } return RET_ILSEQ; } return RET_TOOSMALL; } recode-3.6/libiconv/utf16.h0100644000000000000000000000521707206266437014266 0ustar rootroot/* * UTF-16 */ /* Specification: RFC 2781 */ /* Here we accept FFFE/FEFF marks as endianness indicators everywhere in the stream, not just at the beginning. (This is contrary to what RFC 2781 section 3.2 specifies, but it allows concatenation of byte sequences to work flawlessly, while disagreeing with the RFC behaviour only for strings containing U+FEFF characters, which is quite rare.) The default is big-endian. */ /* The state is 0 if big-endian, 1 if little-endian. */ static int utf16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; int count = 0; for (; n >= 2;) { ucs4_t wc = (state ? s[0] + (s[1] << 8) : (s[0] << 8) + s[1]); if (wc == 0xfeff) { } else if (wc == 0xfffe) { state ^= 1; } else if (wc >= 0xd800 && wc < 0xdc00) { if (n >= 4) { ucs4_t wc2 = (state ? s[2] + (s[3] << 8) : (s[2] << 8) + s[3]); if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) return RET_ILSEQ; *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); conv->istate = state; return count+4; } else break; } else if (wc >= 0xdc00 && wc < 0xe000) { return RET_ILSEQ; } else { *pwc = wc; conv->istate = state; return count+2; } s += 2; n -= 2; count += 2; } conv->istate = state; return RET_TOOFEW(count); } /* We output UTF-16 in big-endian order, with byte-order mark. See RFC 2781 section 3.3 for a rationale: Some document formats mandate a BOM; the file concatenation issue is not so severe as long as the above utf16_mbtowc function is used. */ /* The state is 0 at the beginning, 1 after the BOM has been written. */ static int utf16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (wc != 0xfffe && !(wc >= 0xd800 && wc < 0xe000)) { int count = 0; if (!conv->ostate) { if (n >= 2) { r[0] = 0xFE; r[1] = 0xFF; r += 2; n -= 2; count += 2; } else return RET_TOOSMALL; } if (wc < 0x10000) { if (n >= 2) { r[0] = (unsigned char) (wc >> 8); r[1] = (unsigned char) wc; conv->ostate = 1; return count+2; } else return RET_TOOSMALL; } else if (wc < 0x110000) { if (n >= 4) { ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); r[0] = (unsigned char) (wc1 >> 8); r[1] = (unsigned char) wc1; r[2] = (unsigned char) (wc2 >> 8); r[3] = (unsigned char) wc2; conv->ostate = 1; return count+4; } else return RET_TOOSMALL; } } return RET_ILSEQ; } recode-3.6/libiconv/utf16be.h0100644000000000000000000000251307206266437014571 0ustar rootroot/* * UTF-16BE */ /* Specification: RFC 2781 */ static int utf16be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { int count = 0; if (n >= 2) { ucs4_t wc = (s[0] << 8) + s[1]; if (wc >= 0xd800 && wc < 0xdc00) { if (n >= 4) { ucs4_t wc2 = (s[2] << 8) + s[3]; if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) return RET_ILSEQ; *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); return count+4; } } else if (wc >= 0xdc00 && wc < 0xe000) { return RET_ILSEQ; } else { *pwc = wc; return count+2; } } return RET_TOOFEW(count); } static int utf16be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (!(wc >= 0xd800 && wc < 0xe000)) { if (wc < 0x10000) { if (n >= 2) { r[0] = (unsigned char) (wc >> 8); r[1] = (unsigned char) wc; return 2; } else return RET_TOOSMALL; } else if (wc < 0x110000) { if (n >= 4) { ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); r[0] = (unsigned char) (wc1 >> 8); r[1] = (unsigned char) wc1; r[2] = (unsigned char) (wc2 >> 8); r[3] = (unsigned char) wc2; return 4; } else return RET_TOOSMALL; } } return RET_ILSEQ; } recode-3.6/libiconv/utf16le.h0100644000000000000000000000251307206266437014603 0ustar rootroot/* * UTF-16LE */ /* Specification: RFC 2781 */ static int utf16le_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { int count = 0; if (n >= 2) { ucs4_t wc = s[0] + (s[1] << 8); if (wc >= 0xd800 && wc < 0xdc00) { if (n >= 4) { ucs4_t wc2 = s[2] + (s[3] << 8); if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) return RET_ILSEQ; *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00); return count+4; } } else if (wc >= 0xdc00 && wc < 0xe000) { return RET_ILSEQ; } else { *pwc = wc; return count+2; } } return RET_TOOFEW(count); } static int utf16le_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { if (!(wc >= 0xd800 && wc < 0xe000)) { if (wc < 0x10000) { if (n >= 2) { r[0] = (unsigned char) wc; r[1] = (unsigned char) (wc >> 8); return 2; } else return RET_TOOSMALL; } else if (wc < 0x110000) { if (n >= 4) { ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10); ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); r[0] = (unsigned char) wc1; r[1] = (unsigned char) (wc1 >> 8); r[2] = (unsigned char) wc2; r[3] = (unsigned char) (wc2 >> 8); return 4; } else return RET_TOOSMALL; } } return RET_ILSEQ; } recode-3.6/libiconv/utf7.h0100644000000000000000000002214507206266437014205 0ustar rootroot/* * UTF-7 */ /* Specification: RFC 2152 (and old RFC 1641, RFC 1642) */ /* The original Base64 encoding is defined in RFC 2045. */ /* Set of direct characters: * A-Z a-z 0-9 ' ( ) , - . / : ? space tab lf cr */ static const unsigned char direct_tab[128/8] = { 0x00, 0x26, 0x00, 0x00, 0x81, 0xf3, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x07, }; #define isdirect(ch) ((ch) < 128 && ((direct_tab[(ch)>>3] >> (ch & 7)) & 1)) /* Set of direct and optional direct characters: * A-Z a-z 0-9 ' ( ) , - . / : ? space tab lf cr * ! " # $ % & * ; < = > @ [ ] ^ _ ` { | } */ static const unsigned char xdirect_tab[128/8] = { 0x00, 0x26, 0x00, 0x00, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0x3f, }; #define isxdirect(ch) ((ch) < 128 && ((xdirect_tab[(ch)>>3] >> (ch & 7)) & 1)) /* Set of base64 characters, extended: * A-Z a-z 0-9 + / - */ static const unsigned char xbase64_tab[128/8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xff, 0x03, 0xfe, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0x07, }; #define isxbase64(ch) ((ch) < 128 && ((xbase64_tab[(ch)>>3] >> (ch & 7)) & 1)) /* * The state is structured as follows: * bit 1..0: shift * bit 7..2: data * Precise meaning: * shift data * 0 0 not inside base64 encoding * 1 0 inside base64, no pending bits * 2 XXXX00 inside base64, 4 bits remain from 2nd byte * 3 XX0000 inside base64, 2 bits remain from 3rd byte */ static int utf7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { state_t state = conv->istate; int count = 0; /* number of input bytes already read */ if (state & 3) goto active; else goto inactive; inactive: { /* Here (state & 3) == 0 */ if (n < count+1) goto none; { unsigned char c = *s; if (isxdirect(c)) { *pwc = (ucs4_t) c; conv->istate = state; return count+1; } if (c == '+') { if (n < count+2) goto none; if (s[1] == '-') { *pwc = (ucs4_t) '+'; conv->istate = state; return count+2; } s++; count++; state = 1; goto active; } return RET_ILSEQ; } } active: { /* base64 encoding active */ unsigned int wc = 0; state_t base64state = state; unsigned int kmax = 2; /* number of payload bytes to read */ unsigned int k = 0; /* number of payload bytes already read */ unsigned int base64count = 0; /* number of base64 bytes already read */ for (;;) { unsigned char c = *s; unsigned int i; if (c >= 'A' && c <= 'Z') i = c-'A'; else if (c >= 'a' && c <= 'z') i = c-'a'+26; else if (c >= '0' && c <= '9') i = c-'0'+52; else if (c == '+') i = 62; else if (c == '/') i = 63; else { /* c terminates base64 encoding */ if (base64state & -4) return RET_ILSEQ; /* data must be 0, otherwise illegal */ if (base64count) return RET_ILSEQ; /* partial UTF-16 characters are invalid */ if (c == '-') { s++; count++; } state = 0; goto inactive; } s++; base64count++; /* read 6 bits: 0 <= i < 64 */ switch (base64state & 3) { case 1: /* inside base64, no pending bits */ base64state = (i << 2) | 0; break; case 0: /* inside base64, 6 bits remain from 1st byte */ wc = (wc << 8) | (base64state & -4) | (i >> 4); k++; base64state = ((i & 15) << 4) | 2; break; case 2: /* inside base64, 4 bits remain from 2nd byte */ wc = (wc << 8) | (base64state & -4) | (i >> 2); k++; base64state = ((i & 3) << 6) | 3; break; case 3: /* inside base64, 2 bits remain from 3rd byte */ wc = (wc << 8) | (base64state & -4) | i; k++; base64state = 1; break; } if (k == kmax) { /* UTF-16: When we see a High Surrogate, we must also decode the following Low Surrogate. */ if (kmax == 2 && (wc >= 0xd800 && wc < 0xdc00)) kmax = 4; else break; } if (n < count+base64count+1) goto none; } /* Here k = kmax > 0, hence base64count > 0. */ if ((base64state & 3) == 0) abort(); if (kmax == 4) { ucs4_t wc1 = wc >> 16; ucs4_t wc2 = wc & 0xffff; if (!(wc1 >= 0xd800 && wc1 < 0xdc00)) abort(); if (!(wc2 >= 0xdc00 && wc2 < 0xe000)) return RET_ILSEQ; *pwc = 0x10000 + ((wc1 - 0xd800) << 10) + (wc2 - 0xdc00); } else { *pwc = wc; } conv->istate = base64state; return count+base64count; } none: conv->istate = state; return RET_TOOFEW(count); } /* * The state is structured as follows: * bit 1..0: shift * bit 7..2: data * Precise meaning: * shift data * 0 0 not inside base64 encoding * 1 0 inside base64, no pending bits * 2 XX00 inside base64, 2 bits known for 2nd byte * 3 XXXX inside base64, 4 bits known for 3rd byte */ /* Define this to 1 if you want the so-called "optional direct" characters ! " # $ % & * ; < = > @ [ ] ^ _ ` { | } to be encoded. Define to 0 if you want them to be passed straight through, like the so-called "direct" characters. We set this to 1 because it's safer. */ #define UTF7_ENCODE_OPTIONAL_CHARS 1 static int utf7_wctomb (conv_t conv, unsigned char *r, ucs4_t iwc, int n) { state_t state = conv->ostate; unsigned int wc = iwc; int count = 0; if (state & 3) goto active; /*inactive:*/ { if (UTF7_ENCODE_OPTIONAL_CHARS ? isdirect(wc) : isxdirect(wc)) { r[0] = (unsigned char) wc; /*conv->ostate = state;*/ return 1; } else { *r++ = '+'; if (wc == '+') { if (n < 2) return RET_TOOSMALL; *r = '-'; /*conv->ostate = state;*/ return 2; } count = 1; state = 1; goto active; } } active: { /* base64 encoding active */ if (UTF7_ENCODE_OPTIONAL_CHARS ? isdirect(wc) : isxdirect(wc)) { /* deactivate base64 encoding */ count += ((state & 3) >= 2 ? 1 : 0) + (isxbase64(wc) ? 1 : 0) + 1; if (n < count) return RET_TOOSMALL; if ((state & 3) >= 2) { unsigned int i = state & -4; unsigned char c; if (i < 26) c = i+'A'; else if (i < 52) c = i-26+'a'; else if (i < 62) c = i-52+'0'; else if (i == 62) c = '+'; else if (i == 63) c = '/'; else abort(); *r++ = c; } if (isxbase64(wc)) *r++ = '-'; state = 0; *r++ = (unsigned char) wc; conv->ostate = state; return count; } else { unsigned int k; /* number of payload bytes to write */ if (wc < 0x10000) { k = 2; count += ((state & 3) >= 2 ? 3 : 2); } else if (wc < 0x110000) { unsigned int wc1 = 0xd800 + ((wc - 0x10000) >> 10); unsigned int wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff); wc = (wc1 << 16) | wc2; k = 4; count += ((state & 3) >= 3 ? 6 : 5); } else return RET_ILSEQ; if (n < count) return RET_TOOSMALL; for (;;) { unsigned int i; unsigned char c; switch (state & 3) { case 0: /* inside base64, 6 bits known for 4th byte */ c = (state & -4) >> 2; state = 1; break; case 1: /* inside base64, no pending bits */ i = (wc >> (8 * --k)) & 0xff; c = i >> 2; state = ((i & 3) << 4) | 2; break; case 2: /* inside base64, 2 bits known for 2nd byte */ i = (wc >> (8 * --k)) & 0xff; c = (state & -4) | (i >> 4); state = ((i & 15) << 2) | 3; break; case 3: /* inside base64, 4 bits known for 3rd byte */ i = (wc >> (8 * --k)) & 0xff; c = (state & -4) | (i >> 6); state = ((i & 63) << 2) | 0; break; default: abort(); /* stupid gcc */ } if (c < 26) c = c+'A'; else if (c < 52) c = c-26+'a'; else if (c < 62) c = c-52+'0'; else if (c == 62) c = '+'; else if (c == 63) c = '/'; else abort(); *r++ = c; if ((state & 3) && (k == 0)) break; } conv->ostate = state; return count; } } } static int utf7_reset (conv_t conv, unsigned char *r, int n) { state_t state = conv->ostate; if (state & 3) { /* deactivate base64 encoding */ unsigned int count = ((state & 3) >= 2 ? 1 : 0) + 1; if (n < count) return RET_TOOSMALL; if ((state & 3) >= 2) { unsigned int i = state & -4; unsigned char c; if (i < 26) c = i+'A'; else if (i < 52) c = i-26+'a'; else if (i < 62) c = i-52+'0'; else if (i == 62) c = '+'; else if (i == 63) c = '/'; else abort(); *r++ = c; } *r++ = '-'; /* conv->ostate = 0; will be done by the caller */ return count; } else return 0; } recode-3.6/libiconv/utf8.h0100644000000000000000000000615407206266437014210 0ustar rootroot/* * UTF-8 */ /* Specification: RFC 2279 */ static int utf8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = s[0]; if (c < 0x80) { *pwc = c; return 1; } else if (c < 0xc2) { return RET_ILSEQ; } else if (c < 0xe0) { if (n < 2) return RET_TOOFEW(0); if (!((s[1] ^ 0x80) < 0x40)) return RET_ILSEQ; *pwc = ((ucs4_t) (c & 0x1f) << 6) | (ucs4_t) (s[1] ^ 0x80); return 2; } else if (c < 0xf0) { if (n < 3) return RET_TOOFEW(0); if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 && (c >= 0xe1 || s[1] >= 0xa0))) return RET_ILSEQ; *pwc = ((ucs4_t) (c & 0x0f) << 12) | ((ucs4_t) (s[1] ^ 0x80) << 6) | (ucs4_t) (s[2] ^ 0x80); return 3; } else if (c < 0xf8 && sizeof(ucs4_t)*8 >= 32) { if (n < 4) return RET_TOOFEW(0); if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 && (s[3] ^ 0x80) < 0x40 && (c >= 0xf1 || s[1] >= 0x90))) return RET_ILSEQ; *pwc = ((ucs4_t) (c & 0x07) << 18) | ((ucs4_t) (s[1] ^ 0x80) << 12) | ((ucs4_t) (s[2] ^ 0x80) << 6) | (ucs4_t) (s[3] ^ 0x80); return 4; } else if (c < 0xfc && sizeof(ucs4_t)*8 >= 32) { if (n < 5) return RET_TOOFEW(0); if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40 && (c >= 0xf9 || s[1] >= 0x88))) return RET_ILSEQ; *pwc = ((ucs4_t) (c & 0x03) << 24) | ((ucs4_t) (s[1] ^ 0x80) << 18) | ((ucs4_t) (s[2] ^ 0x80) << 12) | ((ucs4_t) (s[3] ^ 0x80) << 6) | (ucs4_t) (s[4] ^ 0x80); return 5; } else if (c < 0xfe && sizeof(ucs4_t)*8 >= 32) { if (n < 6) return RET_TOOFEW(0); if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40 && (s[5] ^ 0x80) < 0x40 && (c >= 0xfd || s[1] >= 0x84))) return RET_ILSEQ; *pwc = ((ucs4_t) (c & 0x01) << 30) | ((ucs4_t) (s[1] ^ 0x80) << 24) | ((ucs4_t) (s[2] ^ 0x80) << 18) | ((ucs4_t) (s[3] ^ 0x80) << 12) | ((ucs4_t) (s[4] ^ 0x80) << 6) | (ucs4_t) (s[5] ^ 0x80); return 6; } else return RET_ILSEQ; } static int utf8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) /* n == 0 is acceptable */ { int count; if (wc < 0x80) count = 1; else if (wc < 0x800) count = 2; else if (wc < 0x10000) count = 3; else if (wc < 0x200000) count = 4; else if (wc < 0x4000000) count = 5; else if (wc <= 0x7fffffff) count = 6; else return RET_ILSEQ; if (n < count) return RET_TOOSMALL; switch (count) { /* note: code falls through cases! */ case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000; case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000; case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000; case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800; case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0; case 1: r[0] = wc; } return count; } recode-3.6/libiconv/viscii.h0100644000000000000000000001222207206266437014601 0ustar rootroot /* * VISCII1.1-1 */ /* Specification: RFC 1456 */ static const unsigned short viscii_2uni_1[32] = { /* 0x00 */ 0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, /* 0x10 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017, 0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f, }; static const unsigned short viscii_2uni_2[128] = { /* 0x80 */ 0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac, 0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0, /* 0x90 */ 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede, 0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2, /* 0xa0 */ 0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead, 0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1, /* 0xb0 */ 0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf, 0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af, /* 0xc0 */ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5, 0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3, /* 0xd0 */ 0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb, 0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0, /* 0xe0 */ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab, 0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9, /* 0xf0 */ 0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd, 0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee, }; static int viscii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n) { unsigned char c = *s; if (c < 0x20) *pwc = (ucs4_t) viscii_2uni_1[c]; else if (c < 0x80) *pwc = (ucs4_t) c; else *pwc = (ucs4_t) viscii_2uni_2[c-0x80]; return 1; } static const unsigned char viscii_page00[64+184] = { 0xc0, 0xc1, 0xc2, 0xc3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */ 0xc8, 0xc9, 0xca, 0x00, 0xcc, 0xcd, 0x00, 0x00, /* 0xc8-0xcf */ 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0xa0, 0x00, 0x00, /* 0xd0-0xd7 */ 0x00, 0xd9, 0xda, 0x00, 0x00, 0xdd, 0x00, 0x00, /* 0xd8-0xdf */ 0xe0, 0xe1, 0xe2, 0xe3, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */ 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xed, 0x00, 0x00, /* 0xe8-0xef */ 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0xf5, 0x00, 0x00, /* 0xf0-0xf7 */ 0x00, 0xf9, 0xfa, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */ /* 0x0100 */ 0x00, 0x00, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */ 0xce, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */ 0x9d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */ 0xb4, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xa8-0xaf */ 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */ }; static const unsigned char viscii_page1e[96] = { 0x80, 0xd5, 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, /* 0xa0-0xa7 */ 0x86, 0xa6, 0x06, 0xe7, 0x87, 0xa7, 0x81, 0xa1, /* 0xa8-0xaf */ 0x82, 0xa2, 0x02, 0xc6, 0x05, 0xc7, 0x83, 0xa3, /* 0xb0-0xb7 */ 0x89, 0xa9, 0xcb, 0xeb, 0x88, 0xa8, 0x8a, 0xaa, /* 0xb8-0xbf */ 0x8b, 0xab, 0x8c, 0xac, 0x8d, 0xad, 0x8e, 0xae, /* 0xc0-0xc7 */ 0x9b, 0xef, 0x98, 0xb8, 0x9a, 0xf7, 0x99, 0xf6, /* 0xc8-0xcf */ 0x8f, 0xaf, 0x90, 0xb0, 0x91, 0xb1, 0x92, 0xb2, /* 0xd0-0xd7 */ 0x93, 0xb5, 0x95, 0xbe, 0x96, 0xb6, 0x97, 0xb7, /* 0xd8-0xdf */ 0xb3, 0xde, 0x94, 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, /* 0xe0-0xe7 */ 0xba, 0xd1, 0xbb, 0xd7, 0xbc, 0xd8, 0xff, 0xe6, /* 0xe8-0xef */ 0xb9, 0xf1, 0x9f, 0xcf, 0x1e, 0xdc, 0x14, 0xd6, /* 0xf0-0xf7 */ 0x19, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */ }; static int viscii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) { unsigned char c = 0; if (wc < 0x0080 && (wc >= 0x0020 || (0x42100064 & (1 << wc)) == 0)) { *r = wc; return 1; } else if (wc >= 0x00c0 && wc < 0x01b8) c = viscii_page00[wc-0x00c0]; else if (wc >= 0x1ea0 && wc < 0x1f00) c = viscii_page1e[wc-0x1ea0]; if (c != 0) { *r = c; return 1; } return RET_ILSEQ; } recode-3.6/libiconv/libcharset.h0100644000000000000000000000255207161163352015430 0ustar rootroot/* Copyright (C) 2000 Free Software Foundation, Inc. This file is part of the GNU CHARSET Library. The GNU CHARSET Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU CHARSET Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _LIBCHARSET_H #define _LIBCHARSET_H #ifdef __cplusplus extern "C" { #endif /* Determine the current locale's character encoding, and canonicalize it into one of the canonical names listed in config.charset. The result must not be freed; it is statically allocated. If the canonical name cannot be determined, the result is a non-canonical name or NULL. */ extern const char * locale_charset (void); #ifdef __cplusplus } #endif #endif /* _LIBCHARSET_H */ recode-3.6/libiconv/encodings.def0100644000000000000000000007051407175006661015577 0ustar rootroot/* Copyright (C) 1999-2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU ICONV Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* The list of all system independent user-visible encodings. */ /* By convention, an encoding named FOOBAR or FOO_BAR or FOO-BAR is defined in a file named "foobar.h" through the functions foobar_mbtowc and foobar_wctomb (and possibly foobar_reset). */ /* DEFENCODING(( name, alias1, ..., ), xxx, { xxx_mbtowc }, { xxx_wctomb, xxx_reset }) defines an encoding with the given name and aliases. (There is no difference between a name and an alias. By convention, the name is chosen as the preferred MIME name or the standard name.) All names and aliases must be in ASCII. Case is not significant, but for the "cs*" aliases mixed case is preferred, otherwise UPPERCASE is preferred. For all names and aliases, note where it comes from. xxx is the name as used in the C code (lowercase). */ DEFENCODING(( "US-ASCII", /* IANA */ "ASCII", /* IANA, JDK 1.1 */ "ISO646-US", /* IANA */ "ISO_646.IRV:1991", /* IANA */ "ISO-IR-6", /* IANA */ "ANSI_X3.4-1968", /* IANA */ "CP367", /* IANA */ "IBM367", /* IANA */ "US", /* IANA */ "csASCII", /* IANA */ /*"ISO646.1991-IRV", X11R6.4 */ ), ascii, { ascii_mbtowc }, { ascii_wctomb, NULL }) /* General multi-byte encodings */ DEFENCODING(( "UTF-8", /* IANA, RFC 2279 */ /*"UTF8", JDK 1.1 */ ), utf8, { utf8_mbtowc }, { utf8_wctomb, NULL }) DEFENCODING(( "UCS-2", /* glibc */ "ISO-10646-UCS-2", /* IANA */ "csUnicode", /* IANA */ ), ucs2, { ucs2_mbtowc }, { ucs2_wctomb, NULL }) DEFENCODING(( "UCS-2BE", /* glibc */ "UNICODEBIG", /* glibc */ "UNICODE-1-1", /* IANA */ "csUnicode11", /* IANA */ ), ucs2be, { ucs2be_mbtowc }, { ucs2be_wctomb, NULL }) DEFENCODING(( "UCS-2LE", /* glibc */ "UNICODELITTLE", /* glibc */ ), ucs2le, { ucs2le_mbtowc }, { ucs2le_wctomb, NULL }) DEFENCODING(( "UCS-4", /* glibc */ "ISO-10646-UCS-4", /* IANA */ "csUCS4", /* IANA */ ), ucs4, { ucs4_mbtowc }, { ucs4_wctomb, NULL }) DEFENCODING(( "UCS-4BE", /* glibc */ ), ucs4be, { ucs4be_mbtowc }, { ucs4be_wctomb, NULL }) DEFENCODING(( "UCS-4LE", /* glibc */ ), ucs4le, { ucs4le_mbtowc }, { ucs4le_wctomb, NULL }) DEFENCODING(( "UTF-16", /* RFC 2781 */ ), utf16, { utf16_mbtowc }, { utf16_wctomb, NULL }) DEFENCODING(( "UTF-16BE", /* RFC 2781 */ ), utf16be, { utf16be_mbtowc }, { utf16be_wctomb, NULL }) DEFENCODING(( "UTF-16LE", /* RFC 2781 */ ), utf16le, { utf16le_mbtowc }, { utf16le_wctomb, NULL }) DEFENCODING(( "UTF-7", /* IANA, RFC 2152 */ "UNICODE-1-1-UTF-7", /* IANA, RFC 1642 */ "csUnicode11UTF7", /* IANA */ ), utf7, { utf7_mbtowc }, { utf7_wctomb, utf7_reset }) DEFENCODING(( "UCS-2-INTERNAL", /* libiconv */ ), ucs2internal, { ucs2internal_mbtowc }, { ucs2internal_wctomb, NULL }) DEFENCODING(( "UCS-2-SWAPPED", /* libiconv */ ), ucs2swapped, { ucs2swapped_mbtowc }, { ucs2swapped_wctomb, NULL }) DEFENCODING(( "UCS-4-INTERNAL", /* libiconv */ ), ucs4internal, { ucs4internal_mbtowc }, { ucs4internal_wctomb, NULL }) DEFENCODING(( "UCS-4-SWAPPED", /* libiconv */ ), ucs4swapped, { ucs4swapped_mbtowc }, { ucs4swapped_wctomb, NULL }) DEFENCODING(( "JAVA", ), java, { java_mbtowc }, { java_wctomb, NULL }) /* Standard 8-bit encodings */ DEFENCODING(( "ISO-8859-1", /* IANA */ "ISO_8859-1", /* IANA */ "ISO_8859-1:1987", /* IANA */ "ISO-IR-100", /* IANA */ "CP819", /* IANA */ "IBM819", /* IANA */ "LATIN1", /* IANA */ "L1", /* IANA */ "csISOLatin1", /* IANA */ /*"ISO8859-1", X11R6.4 */ /*"ISO8859_1", JDK 1.1 */ ), iso8859_1, { iso8859_1_mbtowc }, { iso8859_1_wctomb, NULL }) DEFENCODING(( "ISO-8859-2", /* IANA */ "ISO_8859-2", /* IANA */ "ISO_8859-2:1987", /* IANA */ "ISO-IR-101", /* IANA */ "LATIN2", /* IANA */ "L2", /* IANA */ "csISOLatin2", /* IANA */ /*"ISO8859-2", X11R6.4 */ /*"ISO8859_2", JDK 1.1 */ ), iso8859_2, { iso8859_2_mbtowc }, { iso8859_2_wctomb, NULL }) DEFENCODING(( "ISO-8859-3", /* IANA */ "ISO_8859-3", /* IANA */ "ISO_8859-3:1988", /* IANA */ "ISO-IR-109", /* IANA */ "LATIN3", /* IANA */ "L3", /* IANA */ "csISOLatin3", /* IANA */ /*"ISO8859-3", X11R6.4 */ /*"ISO8859_3", JDK 1.1 */ ), iso8859_3, { iso8859_3_mbtowc }, { iso8859_3_wctomb, NULL }) DEFENCODING(( "ISO-8859-4", /* IANA */ "ISO_8859-4", /* IANA */ "ISO_8859-4:1988", /* IANA */ "ISO-IR-110", /* IANA */ "LATIN4", /* IANA */ "L4", /* IANA */ "csISOLatin4", /* IANA */ /*"ISO8859-4", X11R6.4 */ /*"ISO8859_4", JDK 1.1 */ ), iso8859_4, { iso8859_4_mbtowc }, { iso8859_4_wctomb, NULL }) DEFENCODING(( "ISO-8859-5", /* IANA */ "ISO_8859-5", /* IANA */ "ISO_8859-5:1988", /* IANA */ "ISO-IR-144", /* IANA */ "CYRILLIC", /* IANA */ "csISOLatinCyrillic", /* IANA */ /*"ISO8859-5", X11R6.4 */ /*"ISO8859_5", JDK 1.1 */ ), iso8859_5, { iso8859_5_mbtowc }, { iso8859_5_wctomb, NULL }) DEFENCODING(( "ISO-8859-6", /* IANA */ "ISO_8859-6", /* IANA */ "ISO_8859-6:1987", /* IANA */ "ISO-IR-127", /* IANA */ "ECMA-114", /* IANA */ "ASMO-708", /* IANA */ "ARABIC", /* IANA */ "csISOLatinArabic", /* IANA */ /*"ISO8859-6", X11R6.4 */ /*"ISO8859_6", JDK 1.1 */ ), iso8859_6, { iso8859_6_mbtowc }, { iso8859_6_wctomb, NULL }) DEFENCODING(( "ISO-8859-7", /* IANA, RFC 1947 */ "ISO_8859-7", /* IANA */ "ISO_8859-7:1987", /* IANA */ "ISO-IR-126", /* IANA */ "ECMA-118", /* IANA */ "ELOT_928", /* IANA */ "GREEK8", /* IANA */ "GREEK", /* IANA */ "csISOLatinGreek", /* IANA */ /*"ISO8859-7", X11R6.4 */ /*"ISO8859_7", JDK 1.1 */ ), iso8859_7, { iso8859_7_mbtowc }, { iso8859_7_wctomb, NULL }) DEFENCODING(( "ISO-8859-8", /* IANA */ "ISO_8859-8", /* IANA */ "ISO_8859-8:1988", /* IANA */ "ISO-IR-138", /* IANA */ "HEBREW", /* IANA */ "csISOLatinHebrew", /* IANA */ /*"ISO8859-8", X11R6.4 */ /*"ISO8859_8", JDK 1.1 */ ), iso8859_8, { iso8859_8_mbtowc }, { iso8859_8_wctomb, NULL }) DEFENCODING(( "ISO-8859-9", /* IANA */ "ISO_8859-9", /* IANA */ "ISO_8859-9:1989", /* IANA */ "ISO-IR-148", /* IANA */ "LATIN5", /* IANA */ "L5", /* IANA */ "csISOLatin5", /* IANA */ /*"ISO8859-9", X11R6.4 */ /*"ISO8859_9", JDK 1.1 */ ), iso8859_9, { iso8859_9_mbtowc }, { iso8859_9_wctomb, NULL }) DEFENCODING(( "ISO-8859-10", "ISO_8859-10", "ISO_8859-10:1992", /* IANA */ "ISO-IR-157", /* IANA */ "LATIN6", /* IANA */ "L6", /* IANA */ "csISOLatin6", /* IANA */ /*"ISO8859-10", X11R6.4 */ ), iso8859_10, { iso8859_10_mbtowc }, { iso8859_10_wctomb, NULL }) DEFENCODING(( "ISO-8859-13", /* glibc */ "ISO_8859-13", "ISO-IR-179", /* glibc */ "LATIN7", /* glibc */ "L7", /* glibc */ ), iso8859_13, { iso8859_13_mbtowc }, { iso8859_13_wctomb, NULL }) DEFENCODING(( "ISO-8859-14", /* glibc */ "ISO_8859-14", "ISO_8859-14:1998", /* glibc */ "ISO-IR-199", "LATIN8", /* glibc */ "L8", /* glibc */ ), iso8859_14, { iso8859_14_mbtowc }, { iso8859_14_wctomb, NULL }) DEFENCODING(( "ISO-8859-15", /* glibc */ "ISO_8859-15", /* IANA */ "ISO_8859-15:1998", /* glibc */ "ISO-IR-203", ), iso8859_15, { iso8859_15_mbtowc }, { iso8859_15_wctomb, NULL }) DEFENCODING(( "ISO-8859-16", "ISO_8859-16", "ISO_8859-16:2000", "ISO-IR-226", ), iso8859_16, { iso8859_16_mbtowc }, { iso8859_16_wctomb, NULL }) DEFENCODING(( "KOI8-R", /* IANA, RFC 1489, X11R6.4, JDK 1.1 */ "csKOI8R", /* IANA */ ), koi8_r, { koi8_r_mbtowc }, { koi8_r_wctomb, NULL }) DEFENCODING(( "KOI8-U", /* IANA, RFC 2319 */ ), koi8_u, { koi8_u_mbtowc }, { koi8_u_wctomb, NULL }) DEFENCODING(( "KOI8-RU", ), koi8_ru, { koi8_ru_mbtowc }, { koi8_ru_wctomb, NULL }) /* Windows 8-bit encodings */ DEFENCODING(( "CP1250", /* JDK 1.1 */ "WINDOWS-1250", /* IANA */ "MS-EE", ), cp1250, { cp1250_mbtowc }, { cp1250_wctomb, NULL }) DEFENCODING(( "CP1251", /* JDK 1.1 */ "WINDOWS-1251", /* IANA */ "MS-CYRL", ), cp1251, { cp1251_mbtowc }, { cp1251_wctomb, NULL }) DEFENCODING(( "CP1252", /* JDK 1.1 */ "WINDOWS-1252", "MS-ANSI", ), cp1252, { cp1252_mbtowc }, { cp1252_wctomb, NULL }) DEFENCODING(( "CP1253", /* JDK 1.1 */ "WINDOWS-1253", /* IANA */ "MS-GREEK", ), cp1253, { cp1253_mbtowc }, { cp1253_wctomb, NULL }) DEFENCODING(( "CP1254", /* JDK 1.1 */ "WINDOWS-1254", /* IANA */ "MS-TURK", ), cp1254, { cp1254_mbtowc }, { cp1254_wctomb, NULL }) DEFENCODING(( "CP1255", /* JDK 1.1 */ "WINDOWS-1255", /* IANA */ "MS-HEBR", ), cp1255, { cp1255_mbtowc }, { cp1255_wctomb, NULL }) DEFENCODING(( "CP1256", /* JDK 1.1 */ "WINDOWS-1256", /* IANA */ "MS-ARAB", ), cp1256, { cp1256_mbtowc }, { cp1256_wctomb, NULL }) DEFENCODING(( "CP1257", /* JDK 1.1 */ "WINDOWS-1257", /* IANA */ "WINBALTRIM", ), cp1257, { cp1257_mbtowc }, { cp1257_wctomb, NULL }) DEFENCODING(( "CP1258", /* JDK 1.1 */ "WINDOWS-1258", /* IANA */ ), cp1258, { cp1258_mbtowc }, { cp1258_wctomb, NULL }) /* DOS 8-bit encodings */ DEFENCODING(( "CP850", /* IANA, JDK 1.1 */ "IBM850", /* IANA */ "850", /* IANA */ "csPC850Multilingual", /* IANA */ ), cp850, { cp850_mbtowc }, { cp850_wctomb, NULL }) DEFENCODING(( "CP866", /* IANA, JDK 1.1 */ "IBM866", /* IANA */ "866", /* IANA */ "csIBM866", /* IANA */ ), cp866, { cp866_mbtowc }, { cp866_wctomb, NULL }) /* Macintosh 8-bit encodings */ DEFENCODING(( "MacRoman", /* JDK 1.1 */ /* This is the best table for MACINTOSH. The ones */ /* in glibc and FreeBSD-iconv are bad quality. */ "MACINTOSH", /* IANA */ "MAC", /* IANA */ "csMacintosh", /* IANA */ ), mac_roman, { mac_roman_mbtowc }, { mac_roman_wctomb, NULL }) DEFENCODING(( "MacCentralEurope", /* JDK 1.1 */ ), mac_centraleurope, { mac_centraleurope_mbtowc }, { mac_centraleurope_wctomb, NULL }) DEFENCODING(( "MacIceland", /* JDK 1.1 */ ), mac_iceland, { mac_iceland_mbtowc }, { mac_iceland_wctomb, NULL }) DEFENCODING(( "MacCroatian", /* JDK 1.1 */ ), mac_croatian, { mac_croatian_mbtowc }, { mac_croatian_wctomb, NULL }) DEFENCODING(( "MacRomania", /* JDK 1.1 */ ), mac_romania, { mac_romania_mbtowc }, { mac_romania_wctomb, NULL }) DEFENCODING(( "MacCyrillic", /* JDK 1.1 */ ), mac_cyrillic, { mac_cyrillic_mbtowc }, { mac_cyrillic_wctomb, NULL }) DEFENCODING(( "MacUkraine", /* JDK 1.1 */ ), mac_ukraine, { mac_ukraine_mbtowc }, { mac_ukraine_wctomb, NULL }) DEFENCODING(( "MacGreek", /* JDK 1.1 */ ), mac_greek, { mac_greek_mbtowc }, { mac_greek_wctomb, NULL }) DEFENCODING(( "MacTurkish", /* JDK 1.1 */ ), mac_turkish, { mac_turkish_mbtowc }, { mac_turkish_wctomb, NULL }) DEFENCODING(( "MacHebrew", /* JDK 1.1 */ ), mac_hebrew, { mac_hebrew_mbtowc }, { mac_hebrew_wctomb, NULL }) DEFENCODING(( "MacArabic", /* JDK 1.1 */ ), mac_arabic, { mac_arabic_mbtowc }, { mac_arabic_wctomb, NULL }) DEFENCODING(( "MacThai", /* JDK 1.1 */ ), mac_thai, { mac_thai_mbtowc }, { mac_thai_wctomb, NULL }) /* Other platform specific 8-bit encodings */ DEFENCODING(( "HP-ROMAN8", /* IANA, X11R6.4 */ "ROMAN8", /* IANA */ "R8", /* IANA */ "csHPRoman8", /* IANA */ ), hp_roman8, { hp_roman8_mbtowc }, { hp_roman8_wctomb, NULL }) DEFENCODING(( "NEXTSTEP", ), nextstep, { nextstep_mbtowc }, { nextstep_wctomb, NULL }) /* Regional 8-bit encodings used for a single language */ DEFENCODING(( "ARMSCII-8", ), armscii_8, { armscii_8_mbtowc }, { armscii_8_wctomb, NULL }) DEFENCODING(( "GEORGIAN-ACADEMY", ), georgian_academy, { georgian_academy_mbtowc }, { georgian_academy_wctomb, NULL }) DEFENCODING(( "GEORGIAN-PS", ), georgian_ps, { georgian_ps_mbtowc }, { georgian_ps_wctomb, NULL }) DEFENCODING(( "MULELAO-1", ), mulelao, { mulelao_mbtowc }, { mulelao_wctomb, NULL }) DEFENCODING(( "CP1133", "IBM-CP1133", ), cp1133, { cp1133_mbtowc }, { cp1133_wctomb, NULL }) DEFENCODING(( "TIS-620", /* IANA */ "TIS620", /* glibc */ "TIS620-0", /* glibc */ "TIS620.2529-1", /* glibc */ "TIS620.2533-0", /* glibc */ "TIS620.2533-1", "ISO-IR-166", /* glibc */ ), tis620, { tis620_mbtowc }, { tis620_wctomb, NULL }) DEFENCODING(( "CP874", /* JDK 1.1 */ "WINDOWS-874", ), cp874, { cp874_mbtowc }, { cp874_wctomb, NULL }) DEFENCODING(( "VISCII", /* IANA, RFC 1456 */ "VISCII1.1-1", "csVISCII", /* IANA */ ), viscii, { viscii_mbtowc }, { viscii_wctomb, NULL }) DEFENCODING(( "TCVN", "TCVN-5712", "TCVN5712-1", "TCVN5712-1:1993", ), tcvn, { tcvn_mbtowc }, { tcvn_wctomb, NULL }) /* CJK character sets (not documented) */ DEFENCODING(( "JIS_C6220-1969-RO", /* IANA */ "ISO646-JP", /* IANA */ "ISO-IR-14", /* IANA */ "JP", /* IANA */ "csISO14JISC6220ro", /* IANA */ ), iso646_jp, { iso646_jp_mbtowc }, { iso646_jp_wctomb, NULL }) DEFENCODING(( "JIS_X0201", /* IANA */ "JISX0201-1976", "X0201", /* IANA */ "csHalfWidthKatakana", /* IANA */ /*"JISX0201.1976-0", X11R6.4 */ /*"JIS0201", JDK 1.1 */ ), jisx0201, { jisx0201_mbtowc }, { jisx0201_wctomb, NULL }) DEFENCODING(( "JIS_X0208", "JIS_X0208-1983", /* IANA */ "JIS_X0208-1990", "JIS0208", "X0208", /* IANA */ "ISO-IR-87", /* IANA */ "csISO87JISX0208", /* IANA */ /*"JISX0208.1983-0", X11R6.4 */ /*"JISX0208.1990-0", X11R6.4 */ /*"JIS0208", JDK 1.1 */ ), jisx0208, { jisx0208_mbtowc }, { jisx0208_wctomb, NULL }) DEFENCODING(( "JIS_X0212", "JIS_X0212.1990-0", "JIS_X0212-1990", /* IANA */ "X0212", /* IANA */ "ISO-IR-159", /* IANA */ "csISO159JISX02121990", /* IANA */ /*"JISX0212.1990-0", X11R6.4 */ /*"JIS0212", JDK 1.1 */ ), jisx0212, { jisx0212_mbtowc }, { jisx0212_wctomb, NULL }) DEFENCODING(( "GB_1988-80", /* IANA */ "ISO646-CN", /* IANA */ "ISO-IR-57", /* IANA */ "CN", /* IANA */ "csISO57GB1988", /* IANA */ ), iso646_cn, { iso646_cn_mbtowc }, { iso646_cn_wctomb, NULL }) DEFENCODING(( "GB_2312-80", /* IANA */ "ISO-IR-58", /* IANA */ "csISO58GB231280", /* IANA */ "CHINESE", /* IANA */ /*"GB2312.1980-0", X11R6.4 */ ), gb2312, { gb2312_mbtowc }, { gb2312_wctomb, NULL }) DEFENCODING(( "ISO-IR-165", "CN-GB-ISOIR165", /* RFC 1922 */ ), isoir165, { isoir165_mbtowc }, { isoir165_wctomb, NULL }) DEFENCODING(( "KSC_5601", /* IANA */ "KS_C_5601-1987", /* IANA */ "KS_C_5601-1989", /* IANA */ "ISO-IR-149", /* IANA */ "csKSC56011987", /* IANA */ "KOREAN", /* IANA */ /*"KSC5601.1987-0", X11R6.4 */ /*"KSX1001:1992", Ken Lunde */ ), ksc5601, { ksc5601_mbtowc }, { ksc5601_wctomb, NULL }) /* CJK encodings */ DEFENCODING(( "EUC-JP", /* IANA */ "EUCJP", /* glibc */ "Extended_UNIX_Code_Packed_Format_for_Japanese", /* IANA */ "csEUCPkdFmtJapanese", /* IANA */ /*"EUC_JP", JDK 1.1 */ ), euc_jp, { euc_jp_mbtowc }, { euc_jp_wctomb, NULL }) DEFENCODING(( "SJIS", /* JDK 1.1 */ "SHIFT_JIS", /* IANA */ "SHIFT-JIS", /* glibc */ "MS_KANJI", /* IANA */ "csShiftJIS", /* IANA */ ), sjis, { sjis_mbtowc }, { sjis_wctomb, NULL }) DEFENCODING(( "CP932", /* glibc */ ), cp932, { cp932_mbtowc }, { cp932_wctomb, NULL }) DEFENCODING(( "ISO-2022-JP", /* IANA, RFC 1468 */ "csISO2022JP", /* IANA */ /*"ISO2022JP", JDK 1.1 */ ), iso2022_jp, { iso2022_jp_mbtowc }, { iso2022_jp_wctomb, iso2022_jp_reset }) DEFENCODING(( "ISO-2022-JP-1", /* RFC 2237 */ ), iso2022_jp1, { iso2022_jp1_mbtowc }, { iso2022_jp1_wctomb, iso2022_jp1_reset }) DEFENCODING(( "ISO-2022-JP-2", /* IANA, RFC 1554 */ "csISO2022JP2", /* IANA */ ), iso2022_jp2, { iso2022_jp2_mbtowc }, { iso2022_jp2_wctomb, iso2022_jp2_reset }) DEFENCODING(( "EUC-CN", /* glibc */ "EUCCN", /* glibc */ "GB2312", /* IANA */ "CN-GB", /* RFC 1922 */ "csGB2312", /* IANA */ /*"EUC_CN", JDK 1.1 */ ), euc_cn, { euc_cn_mbtowc }, { euc_cn_wctomb, NULL }) DEFENCODING(( "GBK", /* JDK 1.1 */ "CP936", ), ces_gbk, { ces_gbk_mbtowc }, { ces_gbk_wctomb, NULL }) DEFENCODING(( "GB18030", /* glibc */ ), gb18030, { gb18030_mbtowc }, { gb18030_wctomb, NULL }) DEFENCODING(( "ISO-2022-CN", /* IANA, RFC 1922 */ "csISO2022CN", /*"ISO2022CN", JDK 1.1 */ ), iso2022_cn, { iso2022_cn_mbtowc }, { iso2022_cn_wctomb, iso2022_cn_reset }) DEFENCODING(( "ISO-2022-CN-EXT", /* IANA, RFC 1922 */ ), iso2022_cn_ext, { iso2022_cn_ext_mbtowc }, { iso2022_cn_ext_wctomb, iso2022_cn_ext_reset }) DEFENCODING(( "HZ", /* RFC 1843 */ "HZ-GB-2312", /* IANA, RFC 1842 */ ), hz, { hz_mbtowc }, { hz_wctomb, hz_reset }) DEFENCODING(( "EUC-TW", /* glibc */ "EUCTW", /* glibc */ "csEUCTW", /*"EUC_TW", JDK 1.1 */ ), euc_tw, { euc_tw_mbtowc }, { euc_tw_wctomb, NULL }) DEFENCODING(( "BIG5", /* IANA, JDK 1.1 */ "BIG-5", /* glibc */ "BIG-FIVE", /* glibc */ "BIGFIVE", /* glibc */ "CN-BIG5", /* RFC 1922 */ "csBig5", /* IANA */ ), ces_big5, { ces_big5_mbtowc }, { ces_big5_wctomb, NULL }) DEFENCODING(( "CP950", /* JDK 1.1 */ ), cp950, { cp950_mbtowc }, { cp950_wctomb, NULL }) DEFENCODING(( "BIG5HKSCS", /* glibc */ ), big5hkscs, { big5hkscs_mbtowc }, { big5hkscs_wctomb, NULL }) DEFENCODING(( "EUC-KR", /* IANA, RFC 1557 */ "EUCKR", /* glibc */ "csEUCKR", /* IANA */ /*"EUC_KR", JDK 1.1 */ ), euc_kr, { euc_kr_mbtowc }, { euc_kr_wctomb, NULL }) DEFENCODING(( "CP949", /* JDK 1.1 */ "UHC", /* glibc */ ), cp949, { cp949_mbtowc }, { cp949_wctomb, NULL }) DEFENCODING(( "JOHAB", /* glibc */ "CP1361", /* glibc */ ), johab, { johab_mbtowc }, { johab_wctomb, NULL }) DEFENCODING(( "ISO-2022-KR", /* IANA, RFC 1557 */ "csISO2022KR", /* IANA */ /*"ISO2022KR", JDK 1.1 */ ), iso2022_kr, { iso2022_kr_mbtowc }, { iso2022_kr_wctomb, iso2022_kr_reset }) recode-3.6/libiconv/encodings_local.def0100644000000000000000000000227607206266736016757 0ustar rootroot/* Copyright (C) 2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU ICONV Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Names for locale dependent encodings. */ DEFENCODING(( "CHAR", ), local_char, { NULL }, { NULL, NULL }) DEFENCODING(( "WCHAR_T", /* glibc */ ), local_wchar_t, { NULL }, { NULL, NULL }) recode-3.6/libiconv/config.charset0100755000000000000000000002005007217457164015764 0ustar rootroot#! /bin/sh # Output a system dependent table of character encoding aliases. # # Copyright (C) 2000 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # # The table consists of lines of the form # ALIAS CANONICAL # # ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". # ALIAS is compared in a case sensitive way. # # CANONICAL is the GNU canonical name for this character encoding. # It must be an encoding supported by libiconv. Support by GNU libc is # also desirable. CANONICAL is case insensitive. Usually an upper case # MIME charset name is preferred. # The current list of GNU canonical charset names is as follows. # # name used by which systems a MIME name? # ASCII, ANSI_X3.4-1968 glibc solaris freebsd # ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes # ISO-8859-2 glibc aix hpux irix solaris freebsd yes # ISO-8859-3 glibc yes # ISO-8859-4 solaris yes # ISO-8859-5 glibc aix hpux irix solaris yes # ISO-8859-6 glibc aix hpux solaris yes # ISO-8859-7 glibc aix hpux irix osf solaris yes # ISO-8859-8 glibc aix hpux solaris yes # ISO-8859-9 glibc aix hpux irix osf solaris yes # ISO-8859-13 glibc # ISO-8859-15 glibc aix solaris freebsd # KOI8-R glibc solaris freebsd yes # KOI8-U glibc yes # CP850 aix osf # CP856 aix # CP866 freebsd # CP874 win32 # CP922 aix # CP932 aix win32 # CP943 aix # CP949 win32 # CP950 win32 # CP1046 aix # CP1124 aix # CP1129 aix # CP1250 win32 # CP1251 glibc win32 # CP1252 aix win32 # CP1253 win32 # CP1254 win32 # CP1255 win32 # CP1256 win32 # CP1257 win32 # GB2312 glibc aix hpux irix solaris yes # EUC-JP glibc aix hpux irix solaris yes # EUC-KR glibc aix hpux irix solaris yes # EUC-TW glibc aix hpux irix solaris # BIG5 glibc aix hpux solaris yes # BIG5HKSCS glibc # GBK aix win32 # GB18030 glibc # SJIS hpux solaris # JOHAB glibc win32 # TIS-620 glibc aix hpux solaris # VISCII glibc yes # HP-ROMAN8 hpux # HP-ARABIC8 hpux # HP-GREEK8 hpux # HP-HEBREW8 hpux # HP-TURKISH8 hpux # HP-KANA8 hpux # UTF-8 glibc aix hpux solaris yes # # Note: Names which are not marked as being a MIME name should not be used in # Internet protocols for information interchange (mail, news, etc.). # # Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications # must understand both names and treat them as equivalent. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM host="$1" os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` echo "# This file contains a table of character encoding aliases," echo "# suitable for operating system '${os}'." echo "# It was automatically generated from config.charset." # List of references, updated during installation: echo "# Packages using this file: " case "$os" in linux* | *-gnu*) # With glibc-2.1 or newer, we don't need any canonicalization, # because glibc has iconv and both glibc and libiconv support all # GNU canonical names directly. Therefore, the Makefile does not # need to install the alias file at all. # The following applies only to glibc-2.0.x and older libcs. echo "ISO_646.IRV:1983 ASCII" ;; aix*) echo "ISO8859-1 ISO-8859-1" echo "ISO8859-2 ISO-8859-2" echo "ISO8859-5 ISO-8859-5" echo "ISO8859-6 ISO-8859-6" echo "ISO8859-7 ISO-8859-7" echo "ISO8859-8 ISO-8859-8" echo "ISO8859-9 ISO-8859-9" echo "ISO8859-15 ISO-8859-15" echo "IBM-850 CP850" echo "IBM-856 CP856" echo "IBM-921 ISO-8859-13" echo "IBM-922 CP922" echo "IBM-932 CP932" echo "IBM-943 CP943" echo "IBM-1046 CP1046" echo "IBM-1124 CP1124" echo "IBM-1129 CP1129" echo "IBM-1252 CP1252" echo "IBM-eucCN GB2312" echo "IBM-eucJP EUC-JP" echo "IBM-eucKR EUC-KR" echo "IBM-eucTW EUC-TW" echo "big5 BIG5" echo "GBK GBK" echo "TIS-620 TIS-620" echo "UTF-8 UTF-8" ;; hpux*) echo "iso88591 ISO-8859-1" echo "iso88592 ISO-8859-2" echo "iso88595 ISO-8859-5" echo "iso88596 ISO-8859-6" echo "iso88597 ISO-8859-7" echo "iso88598 ISO-8859-8" echo "iso88599 ISO-8859-9" echo "iso885915 ISO-8859-15" echo "roman8 HP-ROMAN8" echo "arabic8 HP-ARABIC8" echo "greek8 HP-GREEK8" echo "hebrew8 HP-HEBREW8" echo "turkish8 HP-TURKISH8" echo "kana8 HP-KANA8" echo "tis620 TIS-620" echo "big5 BIG5" echo "eucJP EUC-JP" echo "eucKR EUC-KR" echo "eucTW EUC-TW" echo "hp15CN GB2312" #echo "ccdc ?" # what is this? echo "SJIS SJIS" echo "utf8 UTF-8" ;; irix*) echo "ISO8859-1 ISO-8859-1" echo "ISO8859-2 ISO-8859-2" echo "ISO8859-5 ISO-8859-5" echo "ISO8859-7 ISO-8859-7" echo "ISO8859-9 ISO-8859-9" echo "eucCN GB2312" echo "eucJP EUC-JP" echo "eucKR EUC-KR" echo "eucTW EUC-TW" ;; osf*) echo "ISO8859-1 ISO-8859-1" echo "ISO8859-7 ISO-8859-7" echo "ISO8859-9 ISO-8859-9" echo "cp850 CP850" ;; solaris*) echo "646 ASCII" echo "ISO8859-1 ISO-8859-1" echo "ISO8859-2 ISO-8859-2" echo "ISO8859-4 ISO-8859-4" echo "ISO8859-5 ISO-8859-5" echo "ISO8859-6 ISO-8859-6" echo "ISO8859-7 ISO-8859-7" echo "ISO8859-8 ISO-8859-8" echo "ISO8859-9 ISO-8859-9" echo "ISO8859-15 ISO-8859-15" echo "koi8-r KOI8-R" echo "BIG5 BIG5" echo "gb2312 GB2312" echo "cns11643 EUC-TW" echo "5601 EUC-KR" echo "eucJP EUC-JP" echo "PCK SJIS" echo "TIS620.2533 TIS-620" #echo "sun_eu_greek ?" # what is this? echo "UTF-8 UTF-8" ;; freebsd*) # FreeBSD 3.3 doesn't have nl_langinfo(CODESET); therefore # localcharset.c falls back to using the full locale name # from the environment variables. echo "C ASCII" echo "US-ASCII ASCII" for l in lt_LN; do echo "$l.ASCII ASCII" done for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT lt_LN \ nl_BE nl_NL no_NO pt_PT sv_SE; do echo "$l.ISO_8859-1 ISO-8859-1" echo "$l.DIS_8859-15 ISO-8859-15" done for l in hr_HR hu_HU lt_LN pl_PL sl_SI; do echo "$l.ISO_8859-2 ISO-8859-2" done for l in ru_RU ru_SU; do echo "$l.KOI8-R KOI8-R" echo "$l.CP866 CP866" done ;; beos*) # BeOS has a single locale, and it has UTF-8 encoding. echo "C UTF-8" ;; esac recode-3.6/libiconv/ref-add.sin0100644000000000000000000000210107066606605015151 0ustar rootroot# Add this package to a list of references stored in a text file. # # Copyright (C) 2000 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # # Written by Bruno Haible . # /^# Packages using this file: / { s/# Packages using this file:// ta :a s/ @PACKAGE@ / @PACKAGE@ / tb s/ $/ @PACKAGE@ / :b s/^/# Packages using this file:/ } recode-3.6/libiconv/ref-del.sin0100644000000000000000000000202407066606614015171 0ustar rootroot# Remove this package from a list of references stored in a text file. # # Copyright (C) 2000 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published # by the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program 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 # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # # Written by Bruno Haible . # /^# Packages using this file: / { s/# Packages using this file:// s/ @PACKAGE@ / / s/^/# Packages using this file:/ } recode-3.6/i18n/0040755000000000000000000000000007233074167012115 5ustar rootrootrecode-3.6/i18n/Makefile.in0100644000000000000000000001577307233074167014174 0ustar rootroot# Makefile.in generated automatically by automake 1.4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 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. # Makefile for PO directories. # François Pinard , 1998. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ CC = @CC@ CPP = @CPP@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ GLIBC21 = @GLIBC21@ LEX = @LEX@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ U = @U@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = gnits localedir = $(prefix)/share/locale ALL_POFILES = @ALL_POFILES@ ALL_MOFILES = @ALL_MOFILES@ MOFILES = @MOFILES@ EXTRA_DIST = $(PACKAGE).pot $(ALL_POFILES) $(ALL_MOFILES) MSGFMT = msgfmt MSGMERGE = msgmerge XGETTEXT = xgettext SUFFIXES = .po .pox .mo MAINTAINER_CLEAN = $(PACKAGE).pot $(MOFILES) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = ChangeLog Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: .SUFFIXES: .mo .po .pox $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps i18n/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status tags: TAGS TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = i18n distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-exec: install-exec-am install-data-am: install-data-local install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-local uninstall: uninstall-am all-am: Makefile all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-generic clean-am -rm -f libtool distclean: distclean-am maintainer-clean-am: maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: tags distdir info-am info dvi-am dvi check check-am \ installcheck-am installcheck install-exec-am install-exec \ install-data-local install-data-am install-data install-am install \ uninstall-local uninstall-am uninstall all-redirect all-am all \ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean .po.pox: $(MAKE) $(PACKAGE).pot $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox .po.mo: file=$(srcdir)/`echo $* | sed 's,.*/,,'`.mo \ && rm -f $$file && $(MSGFMT) -o $$file $< all: $(ALL_MOFILES) install-data-local: $(MOFILES) @USE_NLS_TRUE@ files='$(MOFILES)'; \ @USE_NLS_TRUE@ for file in $$files; do \ @USE_NLS_TRUE@ base=`basename $$file`; \ @USE_NLS_TRUE@ langdir=$(DESTDIR)$(localedir)/`echo $$base \ @USE_NLS_TRUE@ | sed 's/\.mo$$//'`/LC_MESSAGES; \ @USE_NLS_TRUE@ $(mkinstalldirs) $$langdir; \ @USE_NLS_TRUE@ echo " $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo"; \ @USE_NLS_TRUE@ $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo; \ @USE_NLS_TRUE@ done uninstall-local: @USE_NLS_TRUE@ files='$(MOFILES)'; \ @USE_NLS_TRUE@ for file in $$files; do \ @USE_NLS_TRUE@ base=`basename $$file`; \ @USE_NLS_TRUE@ langdir=$(DESTDIR)$(localedir)/`echo $$base @USE_NLS_TRUE@ | sed 's/\.mo$$//'`/LC_MESSAGES; \ @USE_NLS_TRUE@ rm -f $$langdir/$(PACKAGE).mo; \ @USE_NLS_TRUE@ done $(srcdir)/$(PACKAGE).pot: $(top_srcdir)/stamp-pot $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ --add-comments --keyword=_ --keyword=N_ `cat $(top_srcdir)/stamp-pot` test ! -f $(PACKAGE).po || ( rm -f $@ && mv $(PACKAGE).po $@ ) update-po: Makefile $(MAKE) $(PACKAGE).pot files='$(ALL_MOFILES)'; \ for file in $$files; do \ base=`basename $$file`; \ lang=`echo $$base | sed 's/\.mo$$//'`; \ mv $(srcdir)/$$lang.po $(srcdir)/$$lang.old.po; \ echo "$$lang:"; \ cd $(srcdir) \ && if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ rm -f $$lang.old.po; \ else \ echo "msgmerge for $$file failed!"; \ rm -f $$lang.po; \ mv $$lang.old.po $$lang.po; \ fi; \ done # 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: recode-3.6/i18n/ChangeLog0100644000000000000000000000457207126700615013667 0ustar rootroot2000-06-29 François Pinard * gl.po: Updated. 2000-05-31 François Pinard * da.po: Updated. 2000-02-07 François Pinard * sl.po: Updated. 2000-01-27 François Pinard * gl.po: New file. 1999-12-14 François Pinard * Makefile.am: New file. * Makefile.in.in, POTFILES.in, cat-id-tbl.c, stamp-cat-id: Deleted. 1999-12-13 François Pinard * de.po, pl.po, sv.po: Updated. 1999-11-27 François Pinard * it.po: New file. 1999-06-22 François Pinard * el.po: New file. 1999-06-14 François Pinard * de.po: Updated. 1999-06-01 François Pinard * da.po, es.po, fr.po: Updated. 1999-04-07 François Pinard * POTFILES.in: Add renamed or new source files. Reported by Laurent Bourbeau. 1999-04-02 François Pinard * sv.po: Updated. 1999-03-18 François Pinard * de.po: Updated. 1998-12-11 François Pinard * es.po: Updated. 1998-12-09 François Pinard * da.po: Updated. 1998-12-07 François Pinard * fr.po: Updated. 1998-11-03 François Pinard * POTFILES.in: Rename charset.c to names.c. 1998-05-01 François Pinard * da.po: Updated. 1998-02-23 François Pinard * es.po: Updated. 1997-12-27 François Pinard * es.po: Updated. 1997-12-09 François Pinard * POTFILES.in: Add src/main.c. Reported by Erick Branderhorst, Niels Kr. Bech Jensen, Primo.B޾ Peterlin and Santiago Vila Doncel. 1997-05-04 François Pinard * sv.po: Updated. 1997-04-28 François Pinard * es.po: Updated. 1996-03-06 François Pinard * es.po: New, for Spanish. Reported by Santiago Vila Doncel. 1995-07-10 François Pinard Distribution unflattened, for using GNU gettext. * Makefile.in: New file. 1995-06-22 François Pinard * pt.po: New, for Portuguese. Reported by Vitor Duarte. recode-3.6/i18n/Makefile.am0100644000000000000000000000373107042715723014150 0ustar rootroot# Makefile for PO directories. # François Pinard , 1998. AUTOMAKE_OPTIONS = gnits localedir = $(prefix)/share/locale ALL_POFILES = @ALL_POFILES@ ALL_MOFILES = @ALL_MOFILES@ MOFILES = @MOFILES@ EXTRA_DIST = $(PACKAGE).pot $(ALL_POFILES) $(ALL_MOFILES) MSGFMT = msgfmt MSGMERGE = msgmerge XGETTEXT = xgettext SUFFIXES = .po .pox .mo .po.pox: $(MAKE) $(PACKAGE).pot $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox .po.mo: file=$(srcdir)/`echo $* | sed 's,.*/,,'`.mo \ && rm -f $$file && $(MSGFMT) -o $$file $< all: $(ALL_MOFILES) install-data-local: $(MOFILES) if USE_NLS files='$(MOFILES)'; \ for file in $$files; do \ base=`basename $$file`; \ langdir=$(DESTDIR)$(localedir)/`echo $$base \ | sed 's/\.mo$$//'`/LC_MESSAGES; \ $(mkinstalldirs) $$langdir; \ echo " $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo"; \ $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo; \ done endif uninstall-local: if USE_NLS files='$(MOFILES)'; \ for file in $$files; do \ base=`basename $$file`; \ langdir=$(DESTDIR)$(localedir)/`echo $$base | sed 's/\.mo$$//'`/LC_MESSAGES; \ rm -f $$langdir/$(PACKAGE).mo; \ done endif MAINTAINER_CLEAN = $(PACKAGE).pot $(MOFILES) $(srcdir)/$(PACKAGE).pot: $(top_srcdir)/stamp-pot $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ --add-comments --keyword=_ --keyword=N_ `cat $(top_srcdir)/stamp-pot` test ! -f $(PACKAGE).po || ( rm -f $@ && mv $(PACKAGE).po $@ ) update-po: Makefile $(MAKE) $(PACKAGE).pot files='$(ALL_MOFILES)'; \ for file in $$files; do \ base=`basename $$file`; \ lang=`echo $$base | sed 's/\.mo$$//'`; \ mv $(srcdir)/$$lang.po $(srcdir)/$$lang.old.po; \ echo "$$lang:"; \ cd $(srcdir) \ && if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ rm -f $$lang.old.po; \ else \ echo "msgmerge for $$file failed!"; \ rm -f $$lang.po; \ mv $$lang.old.po $$lang.po; \ fi; \ done recode-3.6/i18n/recode.pot0100644000000000000000000002376307224444651014111 0ustar rootroot# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" #: src/main.c:142 msgid "No error" msgstr "" #: src/main.c:145 msgid "Non canonical input" msgstr "" #: src/main.c:148 msgid "Ambiguous output" msgstr "" #: src/main.c:151 msgid "Untranslatable input" msgstr "" #: src/main.c:154 msgid "Invalid input" msgstr "" #: src/main.c:157 msgid "System detected problem" msgstr "" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "" #: src/main.c:163 msgid "Internal recoding bug" msgstr "" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" #: src/main.c:250 msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr "" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr "" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" #: src/main.c:302 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 msgid "Written by Franc,ois Pinard .\n" msgstr "" #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "" #: src/main.c:913 msgid " done\n" msgstr "" #: src/main.c:954 #, c-format msgid " failed: %s in step `%s..%s'\n" msgstr "" #: src/main.c:961 #, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "" #: src/main.c:984 #, c-format msgid "%s in step `%s..%s'" msgstr "" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "" #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "" #: src/recode.c:744 msgid "No table to print" msgstr "" #: src/request.c:34 msgid "reversible" msgstr "" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "" #: src/request.c:111 msgid "*Unachievable*" msgstr "" #: src/request.c:113 msgid "*mere copy*" msgstr "" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "" #: src/request.c:265 msgid "Step initialisation failed" msgstr "" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" recode-3.6/i18n/da.po0100644000000000000000000004077007233073513013040 0ustar rootroot# Danish message catalog for GNU recode. # Copyright (C) 1997 Free Software Foundation, Inc. # Niels Kristian Bech Jensen , 1997-2000. # msgid "" msgstr "" "Project-Id-Version: recode 3.5\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 2000-05-31 22:02+02:00\n" "Last-Translator: Niels Kristian Bech Jensen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "Ingen fejl" #: src/main.c:145 msgid "Non canonical input" msgstr "Ualmindelige inddata" #: src/main.c:148 msgid "Ambiguous output" msgstr "Flertydige uddata" #: src/main.c:151 msgid "Untranslatable input" msgstr "Uoversættelige inddata" #: src/main.c:154 msgid "Invalid input" msgstr "Ugyldige inddata" #: src/main.c:157 msgid "System detected problem" msgstr "Systemet fandt et problem" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "Misbrug af omkodningsbibliotek" #: src/main.c:163 msgid "Internal recoding bug" msgstr "Intern omkodningsfejl" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Dette program er fri software; du må redistribuere det og/eller modificere\n" "det under betingelserne givet i GNU General Public License som publiceret " "af\n" "Free Software Foundation; enten version 2, eller (efter dit valg) en senere\n" "version.\n" "\n" "Dette program distribueres i håbet om, at det vil være nyttigt, men UDEN\n" "NOGEN GARANTI; end ikke en underforstået garanti for SALGBARHED eller\n" "ANVENDELIGHED TIL ET GIVET FORMÅL. Se GNU General Public License for\n" "flere detaljer.\n" "\n" "Du skulle have modtaget en kopi af GNU General Public License sammen med\n" "dette program; hvis ikke, så skriv til Free Software Foundation, Inc.,\n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Prøv \"%s %s\" for mere information.\n" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "Fri \"recode\" konverterer filer mellem forskellige tegnsæt og pakninger.\n" #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Brug: %s [TILVALG]... [ [TEGNSÆT] | FORESPØRGSEL [FIL]... ]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Hvis et langt tilvalg viser et argument som obligatorisk, så er det også\n" "obligatorisk for det tilsvarende korte tilvalg. På samme måde for valgfri\n" "argumenter.\n" #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Lister:\n" " -l, --list[=FORMAT] vis liste over et eller alle kendte tegnsæt\n" " -k, --known=PAR begræns tegnsæt til liste af kendte PAR\n" " -h, --header[=[SPR/]NAVN] skriv tabel NAVN til std-ud i SPR og afslut\n" " -F, --freeze-tables udskriv et C-modul indeholdende alle tabeller\n" " -T, --find-subsets find alle tegnsæt, der er delmængder af andre\n" " -C, --copyright vis copyright- og kopieringsbetingelser\n" " --help vis denne hjælp og afslut\n" " --version vis versionsnummer og afslut\n" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "Operationsmåder:\n" " -v, --verbose vis rækkefølgen af gennemløb, og rapportér " "fremskridt\n" " -q, --quiet, --silent udelad meddelelser om irreversible oversættelser\n" " -f, --force gennemtving oversættelser, selv hvis de ikke er\n" " reversible\n" " -t, --touch giv den oversatte fil system-urets tid\n" " -i, --sequence=files brug midlertidige filer mellem gennemløbene\n" " --sequence=memory brug hukommelsesbuffere mellem gennemløbene\n" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr " -p, --sequence=pipe brug pibe-mekanismen mellem gennemløbene\n" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe samme som -i (på dette system)\n" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Fintuning:\n" " -s, --strict brug kun nøjagtige tegnsæt selvom der mistes tegn\n" " -d, --diacritics oversæt kun diakritiske/specielle tegn i " "HTML/LaTeX\n" " -S, --source[=SPR] begræns omodning til strenge og kommentarer som\n" " for SPR\n" " -c, --colons brug koloner i stedet for anførselstegn som trema " "(¨)\n" " -g, --graphics tilnærm IBMPC linie- og kassetegn med ASCII grafik\n" " -x, --ignore=TEGNSÆT ignorér TEGNSÆT når en omkodningssti vælges\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Tilvalg -l uden FORMAT eller TEGNSÆT viser en liste over alle tegnsæt og\n" "pakninger. FORMAT er et af ordene 'decimal', 'octal', 'hexadecimal' eller\n" "'full' (eller et af bogstaverne d, o, h eller f).\n" #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "Standard TEGNSÆT er \"%s\", med mindre DEFAULT_CHARSET er angivet.\n" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Med -k vises en liste over mulige før tegnsæt for det givne efter TEGNSÆT,\n" "begge tabellariske tegnsæt, med PAR af typen " "\"FØR1:EFTER1,FØR2:EFTER2,...\"\n" "hvor FØR'er og EFTER'e er tegnkoder givet efter titalssystemet.\n" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "SPR er et programmeringssprog, f.eks. \"c\", \"perl\" eller \"po\"; \"c\" er " "standard.\n" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "FORESPØRGSEL er UNDERFORESPØRGSEL[,UNDERFORESPØRGSEL]...; UNDERFORESPØRGSEL " "er\n" "INDKODNING[..INDKODNING]...; INDKODNING er [TEGNSÆT][/[PAKNING]]...\n" "FORESPØRGSEL har ofte formen FØR..EFTER, hvor FØR og EFTER er tegnsæt.\n" "Hvis et TEGNSÆT udelades, anvendes det normale tegnsæt; hvis [/PAKNING]...\n" "udelades, anvendes den normale pakning af TEGNSÆT; / uden navnet på en\n" "pakning betyder ingen pakning. Se manualen.\n" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Hvis ingen af -i eller -p er valgt, bruges -p hvis ingen FIL, ellers -i.\n" "Hver FIL bliver oversat oveni sig selv og overskriver originalen. Hvis " "ingen\n" "FIL er valgt, er programmet et filter, der oversætter fra std-ind til " "std-ud.\n" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Rapportér fejl til .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Skrevet af François Pinard .\n" #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Ophavsret (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Dette er fri software; se kopieringsbetingelserne i kildeteksten. Der gives\n" "INGEN garanti; end ikke for SALGBARHED eller ANVENDELIGHED TIL NOGET " "FORMÅL.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Forældet syntaks, brug hellere \"%s\"" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Omkoder %s..." #: src/main.c:913 msgid " done\n" msgstr " færdig\n" #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " fejlede: %s i %s..%s\n" #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s fejlede: %s i %s..%s" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s i %s..%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Tegnsæt %s findes allerede og er ikke %s" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Kan ikke vise \"%s\", ingen navne tilgængelige for dette tegnsæt" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Okt Hex UCS2 Mne %s\n" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Beklager, ingen navne tilgængelige for \"%s\"" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Genpakker indstillet flere gange for \"%s\"" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Udpakker indstillet flere gange for \"%s\"" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Virtuel hukommelse opbrugt" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Tegnkoderne %3d og %3d oversættes begge til %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Ingen tegn oversættes til %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Kan ikke invertere denne en-til-en tabel" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Følgende fejl er for \"%s\" til \"%s\"" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par nr. %d: <%3d, %3d> er i konflikt med <%3d, %3d>" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Kan ikke fuldende tabellen udfra mængden af kendte par" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Triviel omkodning, ikke værd at bruge en tabel" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "Omkodningen er for kompleks for en simpel tabel" #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sOmkodningstabellen er genereret automatisk af Free \"%s\" %s" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sfor sekvensen %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "Ingen tabel at udskrive" #: src/request.c:34 msgid "reversible" msgstr "reversibel" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s til %s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "byte" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "ucs2" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "variabel" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Uopnåelig*" #: src/request.c:113 msgid "*mere copy*" msgstr "*bare kopi*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "Virtuel hukommelse opbrugt!" #: src/request.c:265 msgid "Step initialisation failed" msgstr "Trinopstart fejlede" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "Trinopstart fejlede (ubearbejdede tilvalg)" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Forespørgsel: %s\n" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Formindsket til: %s\n" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Ukendt pakkenavn \"%s\"" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Umuligt at oversætte fra \"%s\" til \"%s\"" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "Forventer \"..\" i forespørgsel" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Underprocessens ventestatus er 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Beskrivelse\n" "\n" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "Der findes ikke et standard TEGNSÆT, angiv DEFAULT_CHARSET.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Flertydig sekvens \"%s\"" #~ msgid "Unknown sequence `%s'" #~ msgstr "Ukendt sekvens \"%s\"" #~ msgid "Ambiguous language `%s'" #~ msgstr "Flertydigt sprog \"%s\"" #~ msgid "Unknown language `%s'" #~ msgstr "Ukendt sprog \"%s\"" #~ msgid "Ambiguous format `%s'" #~ msgstr "Flertydigt format \"%s\"" #~ msgid "Unknown format `%s'" #~ msgstr "Ukendt format \"%s\"" #~ msgid "Erroneous request `%s'" #~ msgstr "Fejlagtig forespørgsel \"%s\"" recode-3.6/i18n/de.po0100644000000000000000000004312507233073513013041 0ustar rootroot# recode. # Copyright (C) 1995, 1996 Free Software Foundation, Inc. # Ulrich Drepper , 1995. # Karl Eichwalder , 1996 # msgid "" msgstr "" "Project-Id-Version: recode 3.5\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1999-09-14 22:51+01:00\n" "Last-Translator: Daniel Naber \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "Kein Fehler" #: src/main.c:145 msgid "Non canonical input" msgstr "Keine gültige Eingabe" #: src/main.c:148 msgid "Ambiguous output" msgstr "Mehrdeutige Ausgabe" #: src/main.c:151 msgid "Untranslatable input" msgstr "Nicht übersetzbare Eingabe" #: src/main.c:154 msgid "Invalid input" msgstr "Ungültige Eingabe" #: src/main.c:157 msgid "System detected problem" msgstr "Das System ist auf ein Problem gestossen" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "Falsche Benutzung der Umkodierungs-Bibliothek" #: src/main.c:163 msgid "Internal recoding bug" msgstr "Interner Umkodierungsfehler" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Der folgende Text ist eine nicht überprüfte Übersetzung, die zur\n" "Information dient; in rechtlichen Fragen ist immer das englische\n" "Original ausschlaggebend.\n" "\n" "Dieses Program ist freie Software; Sie können es nach den Bedingungen\n" "der von der Free Software Foundation als \"GNU General Public License\"\n" "veröffentlichten Lizenz weitergeben und/oder verändern; dabei gilt\n" "die Version 2 oder (frei nach ihrer Wahl) jede spätere Version.\n" "\n" "Dieses Programm wird in der Hoffnung verteilt, daß es nützlich ist,\n" "jedoch OHNE JEGLICHE GARANTIE; sogar ohne die implizite Garantie der\n" "MARKTFÄHIGKEIT oder der ERFÜLLUNG EINES BESTIMMTEN ZWECKES. In der\n" "\"GNU General Public License\" können weitere Einzelheiten nachgelesen\n" "werden.\n" "\n" "Sie sollten mit diesem Programm eine Kopie der \"GNU General Public " "License\"\n" "erhalten haben; wenn nicht, schreiben Sie an die Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "`%s %s' zeigt weitere Informationen.\n" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "`recode' konvertiert Dateien zwischen diversen Zeichensätzen und\n" "-formaten.\n" #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Aufruf: %s [OPTION]... [ [ZEISATZ] | ANFRAGE [DATEI]... ]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Wenn eine Option ein Argument zwingend braucht, gilt das unabhängig\n" "davon, ob die Kurz- oder Langschreibweise der Option benutzt wird.\n" "Entsprechendes gilt für optionale Argumente.\n" #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Auflistungen:\n" " -l, --list[=FORMAT] Einen oder alle bekannten Zeichensätze " "auflisten\n" " -k, --known=PAARE Zeichensätze auf Liste bekannter PAARE " "beschränken\n" " -h, --header[=[LN/]NAME] LN-Code für Tabelle NAME ausgeben\n" " -F, --freeze-tables Ein C-Modul mit allen Tabellen ausgeben\n" " -T, --find-subsets Alle Zeichensätze ausgeben, die Untermengen " "von\n" " anderen Zeichensätzen sind\n" " -C, --copyright Copyright und Kopierbedingungen anzeigen\n" " --help Diese Hilfe anzeigen\n" " --version Versionsnummer ausgeben\n" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "Funktionsmodi:\n" " -v, --verbose Reihenfolge der Umkodierungsschritte und " "Fortschritt\n" " anzeigen\n" " -q, --quiet, --silent Keine Meldungen über nicht umkehrbare " "Umkodierungen\n" " -f, --force Umkodierung vornehmen, auch wenn sie nicht " "umkehrbar ist\n" " -t, --touch Nach der Umkodierung ein 'touch' auf die " "umkodierte\n" " Datei ausführen\n" " -i, --sequence=files Für Zwischenschritte temporäre Dateien anlegen\n" " --sequence=memory Für Zwischenschritte Speicherpuffer verwenden\n" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr "" " -p, --sequence=pipe benutze \"pipe\" für Abarbeitung der Schritte\n" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe das gleiche wie '-i' (auf diesem System)\n" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Feineinstellungen:\n" " -s, --strict Strikte Abbildung benutzen, auch bei " "Zeichenverlust\n" " -d, --diacritics Nur Akzente/Umlaute umkodieren (z.B. für " "HTML/LaTeX)\n" " -S, --source[=LN] Bei LN nur Zeichenketten und Kommentare umkodieren\n" " -c, --colons benutze ':' statt '\"' für Umlaute (z.B. 'fu:r' " "statt\n" " ('fu\"r')\n" " -g, --graphics 'Linienzeichen' des IBMPC-Zeichensatzes durch " "ähnliche\n" " ASCII-Zeichen darstellen\n" " -x, --ignore=ZEISATZ ZEISATZ bei der Wahl der Kodierungsschritte " "ignorieren\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Die Option -l ohne FORMAT und ZEISATZ listet alle Zeichensätze und -formate\n" "auf. FORMAT ist `decimal', `octal', `hexadecimal' oder `full' (können durch " "den\n" "Anfangsbuchstaben abgekürzt werden)\n" #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Wenn die Umgebungsvariable DEFAULT_CHARSET nicht gesetzt ist,\n" "gilt für ZEISATZ ist die Voreinstellung `%s'.\n" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Mit '-k' werden mögliche 'Vorher'-Zeichensätze für den 'Nachher'-ZEISATZ\n" "ausgegeben, mit PAAREn der Form 'VOR1:NACH1,VOR2:NACH2,...', wobei die VORs " "und\n" "NACHs Kodes sind. Alle Kodes werden als Dezimalzahlen angegeben.\n" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN ist eine Programmiersprache, z.B. `c', `perl' oder `po', wobei `c' die\n" "Voreinstellung ist.\n" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ANFRAGE ist UNTERANFRAGE[,UNTERANFRAGE]...; UNTERANFRAGE ist " "KODIERUNG[..KODIERUNG]...\n" "KODIERUNG ist [ZEISATZ][/[SURFACE]]...; ANFRAGE ist meistens " "VORHER..NACHHER,\n" "wobei VORHER und NACHHER Zeichensätze sind. Ohne ZEISATZ wird der übliche\n" "Zeichensatz benutzt; ohne [/SURFACE]... wird das für ZEISATZ übliche Format\n" "angenommen; ein / ohne Angabe eines Formats heisst, dass kein Format " "angenommen\n" "wird. Siehe Anleitung.\n" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Wenn weder -i noch -p angegeben sind, wird -p angenommen wenn keine DATEI\n" "angegeben ist, sonst -i.\n" "Jede DATEI wird bei mit der umkodierten Datei überschrieben. Wenn keine\n" "DATEI angegen ist wird die Standardeingabe umkodiert und auf der\n" "Standardausgabe ausgegeben.\n" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Berichte über Programmfehler bitte an .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Geschrieben von Franc,ois Pinard .\n" #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Dieses Programm ist freie Software; die genauen Nutzungsbedingungen\n" "sind der Datei »COPYING« in den Quellen zu entnehmen.\n" "Es wird keinerlei Gewährleistung übernommen; auch nicht für gewerbliche\n" "Nutzbarkeit oder Tauglichkeit zu einem anderen Zweck.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Veraltete Syntax, bitte `%s' benutzen" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Kodiere `%s' um..." #: src/main.c:913 msgid " done\n" msgstr " fertig\n" #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " fehlgeschlagen: %s in %s..%s\n" #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s fehlgeschlagen: %s in %s..%s" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s bei %s..%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Zeichensatz %s existiert bereits und ist nicht %s" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Kann `%s' nicht anzeigen, keine Namen für diesen Zeichensatz\n" " verfügbar" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Tut mir leid, aber es sind für `%s' keine Namen verfügbar" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "`Resurfacer' für `%s' mehr als einmal gesetzt." #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "`Unsurfacer' für `%s' mehr als einmal gesetzt." #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Virtueller Speicher voll" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Die Kodes %3d und %3d werden beide konvertiert zu %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Kein Zeichen wird zu %3d umkodiert" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Kann die gegebene \"Eins-zu-Eins\"-Tabelle nicht invertieren" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Folgende Diagnose für Konvertierung von `%s' nach `%s'" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Paar Nr. %d: { %3d, %3d } steht in Konflikt mit { %3d, %3d }" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "" "Kann die Tabelle aus der Menge der bekannten Paare nicht vervollständigen" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Umkodierung ohne Änderung, zu trivial für eine Tabelle" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "Umkodierung ist für eine einfache Tabelle zu kompliziert" #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sKonvertierung automatisch generiert von »GNU %s %s«" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sfür Folge %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "Keine Tabelle auszugeben" #: src/request.c:34 msgid "reversible" msgstr "umkehrbar" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s nach %s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "byte" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "ucs2" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "variabel" #: src/request.c:111 msgid "*Unachievable*" msgstr "*unmöglich*" #: src/request.c:113 msgid "*mere copy*" msgstr "*einface Kopie*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "Virtueller Speicher voll!" #: src/request.c:265 msgid "Step initialisation failed" msgstr "Schrittinitialisierung fehlgeschlagen" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "Schrittinitialisierung fehlgeschlagen (nichtbeachtete Optionen)" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Anfrage: %s\n" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Geschrumpft zu: %s\n" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Unbekannter `surface' Name `%s'" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Keine Möglichkeit, von `%s' nach `%s' umzukodieren" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "In der Anfrage wird `..' erwartet" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Wartezustand des Kindprozesses ist 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Beschreibung\n" "\n" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "Für ZEISATZ existiert keine Voreinstellung, bitte die Umgebungsvariable\n" #~ "DEFAULT_CHARSET setzen.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Mehrdeutige Folge `%s'" #~ msgid "Unknown sequence `%s'" #~ msgstr "Unbekannte Folge `%s'" #~ msgid "Ambiguous language `%s'" #~ msgstr "Mehrdeutiger Zeichensatz `%s'" #~ msgid "Unknown language `%s'" #~ msgstr "Unbekannter Zeichensatz `%s'" #~ msgid "Ambiguous format `%s'" #~ msgstr "Mehrdeutiges Format `%s'" #~ msgid "Unknown format `%s'" #~ msgstr "Unbekanntes Format `%s'" #~ msgid "Erroneous request `%s'" #~ msgstr "Fehlerhafte Anfrage `%s'" recode-3.6/i18n/el.po0100644000000000000000000004600007233073513013044 0ustar rootroot# Greek messages for GNU recode # Copyright (C) 1999 Free Software Foundation, Inc. # Simos Xenitellis , 1999. # msgid "" msgstr "" "Project-Id-Version: GNU recode 3.4r\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1999-06-13 01:30+0000\n" "Last-Translator: Simos Xenitellis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-7\n" "Content-Transfer-Encoding: 8-bit\n" # src/main.c:157 #: src/main.c:142 msgid "No error" msgstr "ÊáíÝíá óöÜëìá" # src/main.c:160 #: src/main.c:145 msgid "Non canonical input" msgstr "Ìç êáíïíéêïðïéçìÝíç åßóïäïò" # src/main.c:163 #: src/main.c:148 msgid "Ambiguous output" msgstr "ÁóáöÞò Ýîïäïò" # src/main.c:166 #: src/main.c:151 msgid "Untranslatable input" msgstr "Ìç ìåôáöñÜóéìç åßóïäïò" # src/main.c:169 #: src/main.c:154 msgid "Invalid input" msgstr "Ìç Ýãêõñç åßóïäïò" # src/main.c:172 #: src/main.c:157 msgid "System detected problem" msgstr "Ôï óýóôçìá äéáðßóôùóå ðñüâëçìá" # src/main.c:175 #: src/main.c:160 msgid "Misuse of recoding library" msgstr "ÊáêÞ ÷ñÞóç ôçò âéâëéïèÞêçò recode" # src/main.c:178 #: src/main.c:163 msgid "Internal recoding bug" msgstr "Åóùôåñéêü óöÜëìá (recoding)" # src/main.c:454 #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Áõôü ôï ðñüãñáììá åßíáé åëåýèåñï ëïãéóìéêüÒ ìðïñåßôå íá ôï áíáäéáíåßìåôå\n" "êáé/Þ íá ôï ôñïðïðïéÞóåôå óýìöùíá ìå ôïõò êáíüíåò ôçò ÃåíéêÞò Äçìüóéáò\n" "¶äåéáò GNU üðùò åêäßäåôáé áðü ôï Free Software FoundationÒ åßôå ôçí\n" "Ýêäïóç 2 åßôå (êáôÜ ôçí ðñïôßìçóÞ óáò) ïðïéáóäÞðïôå ìåôáãåíÝóôåñçò Ýêäïóçò.\n" "\n" "Áõôü ôï ðñüãñáììá äéáíÝìåôáé ìå ôçí åëðßäá üôé èá åßíáé ÷ñÞóéìï,\n" "áëëÜ ×ÙÑÉÓ ÊÁÌÉÁ ÅÃÃÛÇÓÇ; ÷ùñßò ïýôå Ýììåóç åããýçóç\n" "ËÅÉÔÏÕÑÃÉÊÏÔÇÔÁÓ Þ ÊÁÔÁËËÇËÏÔÇÔÁÓ ÃÉÁ ÅÍÁ ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ.\n" "Áíáöåñèåßôå óôï GNU General Public License ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.\n" "\n" "Èá ðñÝðåé íá Ý÷åôáé ëÜâåé Ýíá áíôßãñáöï ôçò ÃåíéêÞò Äçìüóéáò ¶äåéáò GNU\n" "ìáæß ìå áõôü ôï ðñüãñáììáÒ åÜí ü÷é, ãñÜøôå óôï Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" # src/main.c:479 #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "ÄïêéìÜóôå `%s %s' ãéá ðåñéóóüôåñåò ðëçñïöïñßåò.\n" # src/main.c:483 #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "Ôï åëåýèåñï `recode' ìåôáôñÝðåé áñ÷åßá ìåôáîý ðïéêßëùí óõíüëùí ÷áñáêôÞñùí " "êáé åðéöáíåéþí.\n" # src/main.c:486 #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ [ÓÕÍÏËÏ×ÁÑÁÊÔ¹ÑÙÍ] | ÁÉÔÇÓÇ [ÁÑ×ÅÉÏ]...\n" # src/main.c:489 #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Áí ìéá ìáêñÜ åðéëïãÞ áíáöÝñåé ìéá ðáñÜìåôñï óáí õðï÷ñåùôéêÞ, ôüôå åßíáé\n" "õðï÷ñåùôéêÞ êáé ãéá ôçí áíôßóôïé÷ç óýíôïìç åðéëïãÞ åðßóçò. Ôï ßäéï\n" "êáé ãéá ôéò ðñïáéñåôéêÝò ðáñáìÝôñïõò.\n" # src/main.c:494 #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Åìöáíßóåéò:\n" " -l, --list[=ÌÏÑÖÇ] åìöÜíéóç Ýíá Þ üëá ôá ãíùóôÜ óýíïëá ÷áñáêôÞñùí\n" " -k, --known=ÆÅÕÃÇ ðåñéïñéóìüò ôùí óõíüëùí ÷áñáêôÞñùí óýìöùíá ìå\n" " ôç ëßóôá áðü ãíùóôÜ ÆÅÕÃÇ. -h, " "--header[=[LN/]ÏÍÏÌÁ] åìöÜíéóç ôïõ ðßíáêá ÏÍÏÌÁ óôçí êáíïíéêÞ Ýîïäï\n" " ìå ÷ñÞóç ôïõ LN, ìåôÜ Ýîïäïò\n" " -F, --freeze-tables åìöÜíéóç óå êþäéêá C ìå üëïõò ôïõò ðßíáêåò\n" " -T, --find-subsets áíáöïñÜ üëùí ôùí óõíüëùí ÷áñáêôÞñùí ðïõ åßíáé\n" " õðïóýíïëá óå Üëëá\n" " -C, --copyright åìöÜíéóç ôïõ Copyright êáé êáíüíùí áíôéãñáöÞò\n" " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n" " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n" # src/main.c:506 #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "ÊáôáóôÜóåéò ëåéôïõñãßáò:\n" " -v, --verbose áíáöïñÜ äéáäï÷Þò âçìÜôùí êáé ðñïüäïõ\n" " -q, --quiet, --silent áðüêñõøç ìçíõìÜôùí ìç-áíôéóôñåðôþí ìåôáôñïðþí\n" " -f, --force åðéâïëÞ ìåôáôñïðþí áêüìá êáé áí åßíáé ìç " "áíôéóôñåðôÝò\n" " -t, --touch åíçìÝñùóç ôçò çìåñïìçíßáò ôùí ìåôáôñåðïìÝíùí " "áñ÷åßùí\n" " ìåôÜ ôçí áíôéêáôÜóôáóç\n" " -i, --sequence=files ÷ñÞóç åíäéÜìåóùí áñ÷åßùí óôá äéáäï÷éêÜ ðåñÜóìáôá\n" " --sequence=memory ÷ñÞóç åíôáìéåõôþí ìíÞìçò óôá äéáäï÷éêÜ ðåñÜóìáôá\n" # src/main.c:517 #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr " -p, --sequence=pipe ÷ñÞóç óùëÞíùóçò óôá äéáäï÷éêÜ ðåñÜóìáôá\n" # src/main.c:521 #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe ôï ßäéï ìå -i (óå áõôü ôï óýóôçìá)\n" # src/main.c:525 #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Ñõèìßóåéò:\n" " -s, --strict ÷ñÞóç áõóôçñþí óõó÷åôßóåùí, áêüìá êáé åëåýèåñùí " "÷áñáêôÞñùí\n" " -d, --diacritics ìåôáôñïðÞ ìüíï äéáêñéôéêþí Þ ðáñüìïéùí ãéá " "HTML/LaTeX\n" " -S, --source[=LN] ðåñéïñéóìüò ìåôáôñïðþí óå áëöáñéèìçôéêÜ êáé ó÷üëéá\n" " êÜôá ôï LN\n" " -c, --colons ÷ñÞóç êïëþíùí áíôß äéðëþí åéóáãùãéêþí ãéá ôç " "äéáßñåóç\n" " -g, --graphics ðñïóÝããéóç êáíüíùí IBMPC ìå ASCII ãñáöéêÜ\n" " -x, --ignore=ÐÉÍ×ÁÑ áãíüçóç ðßíáêá ÷áñáêôÞñùí (ÐÉÍ×ÁÑ) óôçí åðéëïãÞ " "ìïíïðáôéïý ìåôáôñïðþí\n" # src/main.c:294 #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Ç åðéëïãÞ -l ÷ùñßò ÌÏÑÖÇ, ïýôå ÐÉÍ×ÁÑ, áðáñéèìåß ôïõò äéáèÝóéìïõò ðßíáêåò\n" "÷áñáêôÞñùí êáé åðéöÜíåéåò. ÌÏÑÖÇ åßíáé `decimal', `octal', `hexadecimal'\n" "Þ `full' (Þ Ýíá áðü ôá `dohf').\n" # src/main.c:302 #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Åêôüò êáé áí Ý÷åé ïñéóôåß ç ìåôáâëçôÞ ðåñéâÜëëïíôïò DEFAULT_CHARSET,\n" "ï ðßíáêáò ÷áñáêôÞñùí (CHARSET) åßíáé åî'ïñéóìïý `%s'.\n" # src/main.c:540 #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Ìå -k, ðéèáíïß ðñïçãïýìåíïé ðßíáêåò ÷áñáêôÞñùí åìöáíßæïíôáé ãéá ôï äïèÝí\n" "åðüìåíï ðßíáêá ÷áñáêôÞñùí (CHARSET), üíôáò êáé ôá äýï óå ìïñöÞ ðåäßùí,\n" "óå ÆÅÕÃÇ ôçò ìïñöÞò `ÐÑÏÇÃ1:ÅÐÏÌÅÍ1,ÐÑÏÇÃ1:ÅÐÏÌÅÍ2,...'\n" "êáé ôá ÐÑÏÇà êáé ÅÐÏÌÅÍ, üíôáò êùäéêïß, äßíïíôáé ùò áñéèìïß.\n" # src/main.c:318 #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN åßíáé ìéá ãëþóóá, ìðïñåß íá åßíáé `c', `perl' Þ `po'Ò åî'ïñéóìïý åßíáé " "`c'.\n" # src/main.c:321 #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ÁÉÔÇÓÇ åßíáé ÕÐÏÁÉÔÇÓÇ[,ÕÐÏÁÉÔÇÓÇ]...Ò ÕÐÏÁÉÔÇÓÇ åßíáé " "ÊÙÄÉÊÏÐÏÉÇÓÇ[...ÊÙÄÉÊÏÐÏÉÇÓÇ]...\n" "ÊÙÄÉÊÏÐÏÉÇÓÇ åßíáé [ÐÉÍ×ÁÑ][/[ÅÐÉÖÁÍÅÉÁ]]...Ò ÁÉÔÇÓÇ óõíÞèùò ìïéÜæåé ìå " "ÐÑÏÇÃÏÕÌÅÍÏ...ÅÐÏÌÅÍÏ,\n" "ìå ÐÑÏÇÃÏÕÌÅÍÏ êáé ÅÐÏÌÅÍÏ íá åßíáé ðßíáêåò ÷áñáêôÞñùí. ¸íáò ÐÉÍ×ÁÑ ðïõ\n" "Ý÷åé ðáñáëçöèåß, õðïäçëþíåé ôï óõíÞèåò ðßíáêá ÷áñáêôÞñùíÒ Ýíá " "[/ÅÐÉÖÁÍÅÉÁ]...\n" "ðïõ Ý÷åé ðáñáëçöèåß, óçìáßíåé ôéò õðïäçëùìÝíåò åðéöÜíåéåò ôïõ ÐÉÍ×ÁÑÒ Ýíá /\n" "÷ùñßò üíïìá åðéöÜíåéáò óçìáßíåé ÷ùñßò êáèüëïõ åðéöÜíåéåò. ÊïéôÜîôå ôï " "åã÷åéñßäéï.\n" # src/main.c:556 #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Áí êáíÝíá áðü ôá -i êáé -p äå äßäïíôáé, èåþñçóå -p áí äåí õðÜñ÷åé ÁÑ×ÅÉÏ, " "áëëéþò -i.\n" "ÊÜèå ÁÑ×ÅÉÏ ìåôáôñÝðåôáé ðÜíù óôïí åáõôü ôïõ, êáôáóôñÝöïíôáò ôï ðñùôüôõðï.\n" "Áí êáíÝíá ÁÑ×ÅÉÏ äåí Ý÷åé ïñéóôåß, ôüôå öÝñóïõ óáí ößëôñï êáé ìåôÝôñåøå\n" "ôçí êáíïíéêÞ åßóïäï óôçí êáíïíéêÞ Ýîïäï.\n" # src/main.c:562 #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "ÁíáöÝñáôå óöÜëìáôá óôï .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" # src/main.c:854 #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "ÃñáììÝíï áðü ôïí Franc,ois Pinard .\n" # src/main.c:622 #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" # src/main.c:850 #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Áõôü åßíáé åëåýèåñï ëïãéóìéêüÒ äåßôå ôï ðçãáßï êþäéêá ãéá ôïõò êáíüíåò " "áíôéãñáöÞò.\n" "ÄÅÍ õðÜñ÷åé åããýçóçÒ ïýôå áêüìá ãéá ×ÑÇÓÉÌÏÔÇÔÁ Þ ÊÁÔÁËËÇËÏÔÇÔÁ ÃÉÁ ÅÍÁ\n" "ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" # src/main.c:999 #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Ìç óõíéóôþìåíç óýíôáîç, ðáñáêáëþ ðñïôéìßóôå `%s'" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" # src/main.c:1098 #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "ÌåôáôñïðÞ ôïõ %s..." # src/main.c:1108 #: src/main.c:913 msgid " done\n" msgstr " Ýãéíå\n" # src/main.c:1142 #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " áðÝôõ÷å: %s óå %s..%s\n" # src/main.c:1149 #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s áðÝôõ÷å: %s óå %s..%s" # src/main.c:1172 #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s óå %s..%s" # src/names.c:259 #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Ï ðßíáêáò ÷áñáêôÞñùí %s õðÜñ÷åé Þäç êáé äåí åßíáé ôï %s" # src/names.c:754 #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Áäõíáìßá åìöÜíéóçò ôïõ `%s', äåí õðÜñ÷ïõí ïíüìáôá äéáèÝóéìá ãéá áõôüí ôïí " "ðßíáêá ÷áñáêôÞñùí" # src/names.c:974 src/names.c:1020 #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" # src/names.c:847 #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Óõãíþìç, äåí õðÜñ÷ïõí äéáèÝóéìá ïíüìáôá ãéá ôï `%s'" # src/outer.c:95 #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "" "Ï åðáíáôïðïèåôçôÞò åðéöÜíåéáò Ý÷åé ôåèåß ðåñéóóüôåñï áðü ìéá öïñÜ ãéá ôï `%s'" # src/outer.c:102 #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "" "Ï áíôéôïðïèåôçôÞò åðéöÜíåéáò Ý÷åé ôåèåß ðåñéóóüôåñï áðü ìéá öïñÜ ãéá ôï `%s'" # src/recode.c:117 src/recode.c:129 #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Ç éäåáôÞ ìíÞìç åîáíôëÞèçêå" # src/recode.c:157 #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Êáé ïé äýï êùäéêïß %3d êáé %3d ìåôáôñÝðïíôáé óå %3d" # src/recode.c:171 #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "ÊáíÝíáò ÷áñáêôÞñáò äåí ìåôáôñÝðåôáé óå %3d" # src/recode.c:172 #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Áäõíáìßá áíôéóôñïöÞò äïèÝíôïò 1-1 ðßíáêá" # src/recode.c:226 src/recode.c:238 #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Áêïëïõèïýí äéáãíùóôéêÜ ãéá `%s' óå `%s'" # src/recode.c:231 src/recode.c:243 #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Áñéèì. æåýãïõò %d: <%3d, %3d> óõãêñïýåôáé ìå <%3d, %3d>" # src/recode.c:274 #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Áäõíáìßá óõìðëÞñùóçò ðßíáêá áðü ôï óýíïëï ãíùóôþí æåõãþí" # src/recode.c:504 #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "ÌçäáìçíÞ ìåôáôñïðÞ, äåí ÷ñåéÜæåôáé ðßíáêá" # src/recode.c:512 #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "Ç ìåôáôñïðÞ åßíáé ðïëý ðåñßðëïêç ãéá Ýíá ìüíï ðßíáêá" # src/recode.c:544 #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sÐßíáêáò ìåôáôñïðÞò äçìéïõñãÞèçêå ìç÷áíéêÜ áðü ôï Åëåýèåñï `%s' %s" # src/recode.c:546 #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sãéá äéáäï÷Þ %s.%s" # src/recode.c:736 #: src/recode.c:744 msgid "No table to print" msgstr "ÊáíÝíáò ðßíáêáò ãéá åêôýðùóç" # src/request.c:35 #: src/request.c:34 msgid "reversible" msgstr "áíôéóôñåðôü" # src/request.c:37 #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s óå %s" # src/request.c:38 src/request.c:40 #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "byte" # src/request.c:39 src/request.c:41 #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "ucs2" # src/request.c:39 src/request.c:41 #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "ìåôáâëçôÞ" # src/request.c:112 #: src/request.c:111 msgid "*Unachievable*" msgstr "*Ìç êáôïñèùôü*" # src/request.c:114 #: src/request.c:113 msgid "*mere copy*" msgstr "*áðëÞ áíôéãñáöÞ*" # src/request.c:244 #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "Ç éäåáôÞ ìíÞìç åîáíôëÞèçêå!" # src/request.c:263 #: src/request.c:265 msgid "Step initialisation failed" msgstr "Ôï âÞìá áñ÷éêïðïßçóçò áðÝôõ÷å" # src/request.c:270 #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "Ôï âÞìá áñ÷éêïðïßçóçò áðÝôõ÷å (åðéëïãÝò ðïõ äåí Ý÷ïõí åðåîåñãáóôåß)" # src/request.c:566 #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Áßôçóç: %s\n" # src/request.c:702 #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Óõññßêíùóç óå %s\n" # src/request.c:806 src/request.c:912 #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Ìç áíáãíùñßóçìï üíïìá åðéöÜíåéáò `%s'" # src/request.c:884 #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "ÊáíÝíáò ôñüðïò íá ìåôáôñáðåß áðü `%s' óå `%s'" # src/request.c:992 #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "ÁíáìÝíåôáé `..' óôçí áßôçóç" # src/task.c:751 src/task.c:915 #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Ç êáôÜóôáóç ðáñáìïíÞò ôçò èõãáôñéêÞò äéåñãáóßáò åßíáé 0x%0.2x" # src/debug.c:287 #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne ÐåñéãñáöÞ\n" "\n" # src/main.c:308 #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "O ÐÉÍ×ÁÑ (ðßíáêáò ÷áñáêôÞñùí Þ CHARSET) äåí Ý÷åé åî' ïñéóìïý ôéìÞ,\n" #~ "ïñßóôå ôç ìåôáâëçôÞ ðåñéâÜëëïíôïò DEFAULT_CHARSET.\n" # src/main.c:659 #~ msgid "Ambiguous sequence `%s'" #~ msgstr "ÁóáöÞò óõìâïëïóåéñÜ `%s'" # src/main.c:663 #~ msgid "Unknown sequence `%s'" #~ msgstr "¶ãíùóôç óõìâïëïóåéñÜ `%s'" # src/main.c:693 src/main.c:747 #~ msgid "Ambiguous language `%s'" #~ msgstr "ÁóáöÞò ãëþóóá `%s'" # src/main.c:697 src/main.c:751 #~ msgid "Unknown language `%s'" #~ msgstr "¶ãíùóôç ãëþóóá `%s'" # src/main.c:785 #~ msgid "Ambiguous format `%s'" #~ msgstr "ÁóáöÞò ìïñöÞ `%s'" # src/main.c:789 #~ msgid "Unknown format `%s'" #~ msgstr "¶ãíùóôç ìïñöÞ `%s'" # src/main.c:1005 #~ msgid "Erroneous request `%s'" #~ msgstr "ÅóöáëìÝíç áßôçóç `%s'" recode-3.6/i18n/es.po0100644000000000000000000007045307233073513013064 0ustar rootroot# Mensajes en español para GNU recode. # Copyright (C) 1999 Free Software Foundation, Inc. # Santiago Vila Doncel , 1999. # msgid "" msgstr "" "Project-Id-Version: GNU recode 3.4r\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1999-05-21 18:45+0200\n" "Last-Translator: Santiago Vila Doncel \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "No hay ningún error" #: src/main.c:145 msgid "Non canonical input" msgstr "La entrada no es canónica" #: src/main.c:148 msgid "Ambiguous output" msgstr "Resultado ambiguo" #: src/main.c:151 msgid "Untranslatable input" msgstr "Entrada no convertible" #: src/main.c:154 msgid "Invalid input" msgstr "Entrada inválida" # FIXME: "System-detected problem" or # "The system has detected a problem"? #: src/main.c:157 msgid "System detected problem" msgstr "Problema detectado por el sistema" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "Uso inadecuado de la biblioteca de conversión" #: src/main.c:163 msgid "Internal recoding bug" msgstr "Bug interno de conversión" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Este programa es software libre; puede ser redistribuido y/o\n" "modificado bajo los términos de la Licencia Pública General de\n" "GNU tal y como se publica por la Free Software Foundation; bien\n" "en su versión 2, o (a su elección) cualquier versión posterior.\n" "\n" "Este programa se distribuye con la esperanza de que sea útil,\n" "pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de\n" "COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Véase la\n" "Licencia Pública General de GNU para más detalles.\n" "\n" "Usted debería haber recibido una copia de la Licencia Pública\n" "General de GNU junto con este programa; en caso contrario, escriba\n" "a la Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" "Boston, MA 02111-1307, EE.UU.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Pruebe `%s %s' para más información.\n" # FUZZY. GNU/Free. #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "GNU `recode' convierte ficheros entre varios juegos de caracteres y " "facetas.\n" #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Modo de empleo: %s [OPCIÓN]... [ [JUEGO] | PETICIÓN [FICHERO]... ]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Si una opción larga muestra un argumento como obligatorio, entonces es\n" "obligatorio también para la opción corta equivalente. Lo mismo para los\n" "argumentos opcionales.\n" #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listados:\n" " -l, --list[=FORMATO] muestra uno o todos los juegos conocidos\n" " -k, --known=PARES restringe los juegos de acuerdo con la lista " "de\n" " PARES conocidos\n" " -h, --header[=[LN/]NOMBRE escribe la tabla NOMBRE en la salida estándar\n" " usando LN, y finaliza\n" " -F, --freeze-tables escribe un módulo en C con todas las tablas\n" " -T, --find-subsets informa acerca de todos los juegos de " "caracteres\n" " que son subconjuntos de otros\n" " -C, --copyright muestra el Copyright y las condiciones de " "copia\n" " --help muestra esta ayuda y finaliza\n" " --version muestra la versión y finaliza\n" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "Modos de operación:\n" " -v, --verbose explica la sucesión de pasos e informa del " "desarrollo\n" " -q, --quiet, --silent no muestra mensajes sobre conversiones " "irreversibles\n" " -f, --force realiza la conversión incluso si no es reversible\n" " -t, --touch toca los ficheros convertidos después del " "reemplazo\n" " -i, --sequence=files utiliza ficheros intermedios para las pasadas\n" " --sequence=memory utiliza búfers en memoria para las pasadas\n" # Sí: "pipe" es tubería: Se refiere a "|" # # En estos casos, se puede poner el término en español seguido del término # inglés entre paréntesis. Por ejemplo "tubería (`pipe')" para que lo entiendan # las personas que casi todo lo que leen está en inglés. # # Pero en este caso concreto, no hace falta porque la palabra pipe forma # parte del nombre de la opción (a la izquierda se ve). sv # #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr " -p, --sequence=pipe utiliza tuberías para las pasadas\n" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe lo mismo que -i (en este sistema)\n" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Ajuste `fino':\n" " -s, --strict utiliza correspondencias estrictas, aunque se " "pierdan\n" " caracteres\n" " -d, --diacritics convierte solamente acentos y demás para " "HTML/LaTeX\n" " -S, --source[=LN] limita la conversión a cadenas y comentarios según " "LN\n" " -c, --colons utiliza dos puntos en vez de comillas para " "diéresis\n" " -g, --graphics aproxima gráficos IBMPC mediante gráficos ASCII\n" " -x, --ignore=JUEGO descarta JUEGO al escoger un camino de conversión\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "La opción -l sin FORMATO ni JUEGO muestra los juegos de caracteres y " "facetas.\n" "disponibles. FORMATO es `decimal', `octal', `hexadecimal' o `full' (o uno " "de\n" "entre `dohf').\n" #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "A menos que se establezca DEFAULT_CHARSET en el entorno,\n" "CHARSET es `%s' por omisión.\n" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Con -k, se muestran los posibles juegos `antes' para el JUEGO `después' " "dado,\n" "siendo ambos juegos de caracteres tabulares, con PAREJAS de la forma\n" "`ANT1:DES1,ANT2:DES2,...' y siendo los ANTs y los DESs códigos dados\n" "como números decimales.\n" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN es algún lenguage, puede ser `c', `perl' o `po', el valor predeterminado\n" "es `c'\n" # FIXME: [SURFACE]... means the usual surfaces or the usual surface? #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "PETICIÓN es SUBPETICIÓN[,SUBPETICIÓN]...;\n" "SUBPETICIÓN es CODIFICACIÓN[..CODIFICACIÓN]...\n" "CODIFICACIÓN es [JUEGO][/[FACETA]]...; PETICIÓN suele ser ANTES..DESPUÉS,\n" "donde ANTES y DESPUÉS son juegos de caracteres. Un JUEGO omitido implica " "el\n" "juego de caracteres usual; una [/FACETA]... omitida significa la faceta\n" "implícita para el JUEGO; una / con una faceta vacía significa que no hay\n" "ninguna faceta. Véase el manual.\n" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Si no se especifica ninguna de las opciones -i ó -p, se supone -p si no\n" "hay ningún FICHERO, o si no, -i. Cada FICHERO se convierte sobre sí mismo,\n" "destruyendo el original. Si no es especifica ningún FICHERO, entonces " "funciona\n" "como filtro y convierte la entrada estándar en la salida estándar.\n" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Comunicar `bugs' a .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" # Se entiende que los usuarios españoles sí tendrán iso-8859-1. #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Escrito por François Pinard .\n" # FIXME: Añadir 1998 (?). #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Esto es software libre; vea el código fuente para las condiciones de copia.\n" "No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN\n" "FIN DETERMINADO.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Sintaxis antigua, por favor utilice `%s'" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Convirtiendo %s..." #: src/main.c:913 msgid " done\n" msgstr " hecho\n" #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " falló: %s en %s..%s\n" #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s falló: %s en %s..%s" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s en %s..%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "El juego de caracteres %s ya existe y no es %s" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "No se puede mostrar `%s', no hay nombres disponibles para este\n" "juego de caracteres" # "Nem" de "Nemónico", supongo. #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Nem %s\n" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Lo siento, no hay nombres disponibles para `%s'" # FIXME: ¿La palabra "Resurface" había desaparecido o no? #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Se ha establecido `resurfacer' más de una vez para `%s'" # FIXME: Lo mismo. ¿? #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Se ha establecido `unsurfacer' más de una vez para `%s'" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Memoria virtual agotada" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Los códigos %3d y %3d se convierten ambos en %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Ningún carácter se convierte en %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "No se puede invertir la tabla uno-a-uno dada" # "Siguen diagnósticos" suena horrible. # #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Procedimiento para convertir de `%s' a `%s':" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "El par nº %d: <%3d, %3d> es conflictivo con <%3d, %3d>" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "" "No se puede completar la tabla a partir del conjunto de pares conocidos" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Conversión identidad, no merece una tabla" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "La conversión es demasiado compleja para una simple tabla" # ## ¿Se supone que éste mensaje era continuación de otro? # ## (el de "Tabla de conversión ..." ver más adelante) # ## (creo que ese mensaje anterior ya no existe (?)) # #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sTabla de conversión generada automáticamente por GNU %s %s" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spara la sucesión %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "No hay tabla que mostrar" #: src/request.c:34 msgid "reversible" msgstr "reversible" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s a %s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "byte" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "ucs2" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "variable" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Imposible*" #: src/request.c:113 msgid "*mere copy*" msgstr "*copia pura y simple*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "¡Memoria virtual agotada!" #: src/request.c:265 msgid "Step initialisation failed" msgstr "Falló la etapa de inicialización" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "Falló la etapa de inicialización (opciones sin procesar)" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Petición: %s\n" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Encogido a: %s\n" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nombre de faceta no reconocido `%s'" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "No se puede convertir de `%s' a `%s'" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "Se esperaba `..' en la petición" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "El estado de espera del proceso hijo es 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Nem Descripción\n" "\n" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "CHARSET no tiene ningún valor predeterminado, defina DEFAULT_CHARSET en el\n" #~ "entorno.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Sucesión ambigua `%s'" #~ msgid "Unknown sequence `%s'" #~ msgstr "Sucesión desconocida `%s'" #~ msgid "Ambiguous language `%s'" #~ msgstr "Idioma ambiguo `%s'" #~ msgid "Unknown language `%s'" #~ msgstr "Idioma desconocido `%s'" #~ msgid "Ambiguous format `%s'" #~ msgstr "Formato ambiguo `%s'" #~ msgid "Unknown format `%s'" #~ msgstr "Formato desconocido `%s'" #~ msgid "Erroneous request `%s'" #~ msgstr "Petición errónea `%s'" # Este es difícil. Se admiten sugerencias. # Especialmente de alguien que conozca bien el programa. # Creo que "stats" en este caso es abreviatura de "statistics" # Pero, ¿Qué es un bucket? (¿balde, cubito, cangilón?) # Más importante: ¿Qué significa en este contexto? # # Afortunadamente, el mensaje parece ser del tipo "debug", porque # en el código fuente de la versión 3.4.1, en charset.c, el mensaje # aparece dentro de un #if HASH_STATS y en el Makefile.in se puede ver # que ese símbolo normalmente no está definido: # # # These CFLAGS values are not auto-configured: # # -DDIFF_HASH For using GNU diff's hash algorithm instead. # # -DHASH_STATS For printing a one-liner hash statistics. # # Así que si no está completamente traducido, no importa demasiado. # Puede que a ningún usuario normal le salga este mensaje jamás. # #~ msgid "Hash stats: %d names using %d buckets out of %d\n" #~ msgstr "Estadística: %d nombres utilizan %d `buckets' de un total de %d\n" # J!: Actualmente suena infame. ¿Qué tal "en esta versión"? # # No sé. Enrique, ¿qué opinas? sv # # 'Por el momento' me suena igual de bien em+ # # Vaya, pues al final me quedo con la sugerencia de Juan Carlos. # No veo mucha diferencia, pero un poco mejor sí queda. # #~ msgid "Currently, -s is ignored when -g is selected" #~ msgstr "En esta versión, -s no tiene efecto si se selecciona -g" #~ msgid "one to one" #~ msgstr "de uno a uno" #~ msgid "one to many" #~ msgstr "de uno a varios" #~ msgid "many to one" #~ msgstr "de varios a uno" #~ msgid "many to many" #~ msgstr "de varios a varios" #~ msgid " failed (reversibility problem?)\n" #~ msgstr " falló (¿problema de reversibilidad?)\n" #~ msgid "%s: Task failed (reversibility problem?)" #~ msgstr "%s: La tarea falló (¿problema de reversibilidad?)" #~ msgid "Task failed (reversibility problem?)" #~ msgstr "La tarea falló (¿problema de reversibilidad?)" #~ msgid "MAX_CHARSETS is too small" #~ msgstr "MAX_CHARSETS es demasiado pequeño" # FIXME. # Aquí hay un pequeño problema, y es que "juego" es masculino y # "codificación" es femenino. # Otra posibilidad sería comerse el "encoding" #~ msgid "Ambiguous charset or encoding `%s'" #~ msgstr "Juego de caracteres o codificación ambigua `%s'" # FIXME. # Aquí ocurre lo mismo. #~ msgid "Unknown charset or encoding `%s'" #~ msgstr "Juego de caracteres o codificación ambigua `%s'" #~ msgid "Simplified to: %s\n" #~ msgstr "Simplificado por: %s\n" #~ msgid "Unbalanced quotes in request" #~ msgstr "Comillas desemparejadas" #~ msgid "Illegal backslash" #~ msgstr "Barra invertida no permitida" #~ msgid "Internal error - strategy undecided" #~ msgstr "Error interno - estrategia no decidida" #~ msgid "ONE to SAME" #~ msgstr "de UNO al MISMO" #~ msgid "steps: %d" #~ msgstr "pasos: %d" # (J! = Juan Carlos Borrás). # J!: ¿optimizado en vez de ahorrado? # J!: ¿merging como combinaciones? # J!: merge es unión en bases de datos o incluso podría ser fusión. # # Tal vez sí, o tal vez no. Como yo lo veo, hay una serie de transformaciones # o caminos a->b->c->d Si combinas varios de estos puedes obtener un camino # más corto a -> c -> d ó a -> b -> d ó a -> d # y te ahorras pasos. # #~ msgid ", %d saved by merging" #~ msgstr ", %d ahorrados mediante combinaciones" # "ignore" es un falso amigo. # #~ msgid "Cannot auto check the ignored charset" #~ msgstr "No se puede comprobar el juego descartado" #~ msgid "Cannot auto check on %s" #~ msgstr "No se puede comprobar sobre %s" # Téngase en cuenta (al contar la longitud) que en la antepenúltima # línea de esta entrada cada \" cuenta como *un* carácter. #~ msgid "" #~ "Mandatory or optional arguments to long options are mandatory or optional\n" #~ "for short options too.\n" #~ "\n" #~ " -C, --copyright display Copyright and copying conditions\n" #~ " -a, --auto-check report about some or all recoding paths, then exit\n" #~ " -l, --list[=FORMAT] list one or all known charsets\n" #~ " -k, --known=PAIRS restrict charsets according to known PAIRS list\n" #~ " --help display this help and exit\n" #~ " --version output version information and exit\n" #~ "\n" #~ "FORMAT is a word among decimal, octal, hexadecimal or full (which may be\n" #~ "abbreviated to one of `dohf'), it defaults to just the canonical name.\n" #~ "With -k, possible before charsets are listed for the given after CHARSET,\n" #~ "both being RFC1345 charsets, with PAIRS of the form " #~ "`BEF1:AFT1,BEF2:AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgstr "" #~ "Los argumentos obligatorios u opcionales para las opciones largas también " #~ "son\n" #~ "obligatorios u opcionales para las opciones cortas.\n" #~ "\n" #~ " -C, --copyright muestra el Copyright y la condiciones de copia\n" #~ " -a, --auto-check informa sobre algunos o todos los caminos de\n" #~ " conversión, y finaliza\n" #~ " -l, --list[=FORMATO] muestra uno o todos los juegos conocidos\n" #~ " -k, --known=PARES limita los juegos conforme a la lista de PARES\n" #~ " conocidos\n" #~ " --help muestra esta ayuda y finaliza\n" #~ " --version informa de la versión y finaliza\n" #~ "\n" #~ "FORMATO es la palabra decimal, octal, hexadecimal o full (que se pueden\n" #~ "abreviar por una de las letras `dohf'), por omisión el nombre canónico.\n" #~ "Con -k, se muestran los posibles juegos \"antes\" para el JUEGO \"después\" " #~ "dado,\n" #~ "siendo ambos juegos RFC1345, con PARES de la forma `ANT1:DES1,ANT2:DES2,...\n" #~ "donde los ANTs y los DESs son códigos. Todos los códigos se dan en decimal\n" # Problema ¿Cómo debo traducir "mis juegos favoritos son..."? # ¿Debo poner "Los juegos favoritos de François Pinard"? # ¿O debo poner "mis juegos favoritos" y poner realmente MIS juegos favoritos? # Por ejemplo, 850 y no ibmpc... # Si al final los de F. Pinard y los míos coinciden, un buen compromiso sería # "Mis juegos favoritos (y los de Pinard :-) son..." # #~ msgid "" #~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the " #~ "Texinfo\n" #~ "documentation. My preferred charsets are (each user has preferences):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), using backspace to apply diacritics\n" #~ " ibmpc IBM-PC 8-bit characters, with proper newlines\n" #~ " latex LaTeX coding of foreign and diacriticized characters\n" #~ " latin1 ISO Latin-1 8-bit extension of ASCII\n" #~ " texte Easy French convention for transmitting email messages\n" #~ msgstr "" #~ "La opción -l sin FORMATO ni JUEGO muestra todos los juegos, véase también " #~ "la\n" #~ "documentación de Texinfo. Mis juegos favoritos son (cada uno tendrá los " #~ "suyos):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), utilizando backspace para acentos y demás\n" #~ " ibmpc IBM-PC (8-bit), con retornos de carro adecuados\n" #~ " latex LaTeX para los caracteres no ingleses, acentos y demás\n" #~ " latin1 ISO Latin-1 extensión del ASCII de 8 bits\n" #~ " texte Convenio francés para mensajes por correo electrónico\n" #~ msgid "" #~ "\n" #~ "Usage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n" #~ msgstr "" #~ "\n" #~ "Modo de empleo: %s [OPCIÓN]... [ANTES]:[DESPUÉS] [FICHERO]...\n" # Acerca de la palabra "pasada": # # J!: ¿qué te parece "iteración"? es más técnico # El original francés dice "pour ordonnancer les passes" # En principio puse "pasos", pero "pasadas" lleva el matiz de "sucesivas" # ¿De verdad te parece que hay que ser tan técnico? sv # # Uff pasadas no me gusta, lo siento. Iteración tampoco # porque no sabemos si se trata de un bucle con mismo código dentro # ¿ qué tal para las sucesivas pasadas ? em+ # # Me vais a marear. Esto tendré que pensarlo despacito. sv # De momento no veo qué de malo tiene "pasada". # Si acaso, que modernamente tenga otros significados ("¡es una pasada!" :-). # #~ msgid "" #~ " -o, --sequence=popen use popen machinery for sequencing passes\n" #~ msgstr " -o, --sequence=popen utiliza popen para las pasadas\n" #~ msgid " -o, --sequence=popen same as -i (on this system)\n" #~ msgstr " -o, --sequence=popen lo mismo que -i (en este sistema)\n" #~ msgid "BEFORE and AFTER both default to `%s' when needed.\n" #~ msgstr "Por omisión, tanto ANTES como DESPUÉS son `%s' si es necesario.\n" #~ msgid "%s: Recoding is not reversible" #~ msgstr "%s: La conversión es irreversible" #~ msgid "Recoding is not reversible" #~ msgstr "La conversión es irreversible" # Otras posibilidades: # "cada carácter de entrada" SV (antes) # "cada carácter leído" EM # Puestos a comerse el "output", nos comemos también el "input". # Entenderse, se entiende igual. # # Teniendo en cuenta que es un programa de conversión, y teniendo # en cuenta que estamos usando el verbo transformarse, está claro # que "lo que se transforma" es la entrada y "en lo que se tranforma" # es la salida. # #~ msgid " Each input char transforms into an output string,\n" #~ msgstr " Cada carácter se transforma en una cadena,\n" #~ msgid " Each input char transforms into an output string.\n" #~ msgstr " Cada carácter se transforma en una cadena.\n" # Esperemos que sea ese el sentido de la frase. # No hay código fuente donde poder comprobarlo. # #~ msgid " Programming is needed to handle multichar input.\n" #~ msgstr " Los caracteres multibyte todavía no están implementados.\n" #~ msgid " The recoding might not be reversible.\n" #~ msgstr " La conversión podría ser irreversible.\n" #~ msgid " The recoding should be reversible.\n" #~ msgstr " La conversión debería ser reversible.\n" # lo mismo de antes # #~ msgid " programming is needed to handle multichar input.\n" #~ msgstr " los caracteres multibyte todavía no están implementados.\n" #~ msgid "/* Conversion table from `%s' charset to `%s' charset.\n" #~ msgstr "/* Tabla de conversión del juego `%s' al juego `%s'.\n" #~ msgid "MAX_SEQUENCE is too small" #~ msgstr "MAX_SEQUENCE es demasiado pequeño" #~ msgid "MAX_SINGLE_STEPS is too small" #~ msgstr "MAX_SINGLE_STEPS es demasiado pequeño" #~ msgid "Mere copy for the trivial recoding\n" #~ msgstr "Copia pura y simple para la conversión trivial\n" #~ msgid "UNACHIEVABLE recoding!\n" #~ msgstr "¡Conversión IMPOSIBLE!\n" #~ msgid "You may not explicitly recode from RFC 1345" #~ msgstr "No se puede convertir explícitamente a partir de RFC 1345" recode-3.6/i18n/fr.po0100644000000000000000000004473407233073513013067 0ustar rootroot# Messages français pour Free recode. # Copyright © 1996, 1998, 1999 Free Software Foundation, Inc. # François Pinard , 1996. # msgid "" msgstr "" "Project-Id-Version: Free recode 3.5\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1999-08-17 14:14-04:00\n" "Last-Translator: François Pinard \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "Pas d'erreur" #: src/main.c:145 msgid "Non canonical input" msgstr "Entrée en forme non canonique" #: src/main.c:148 msgid "Ambiguous output" msgstr "Sortie ambiguë" #: src/main.c:151 msgid "Untranslatable input" msgstr "Entrée non traductible" #: src/main.c:154 msgid "Invalid input" msgstr "Entrée invalide" #: src/main.c:157 msgid "System detected problem" msgstr "Problème rapporté par le système" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "Mauvais usage de la logithèque de recodage" #: src/main.c:163 msgid "Internal recoding bug" msgstr "Problème interne durant le recodage" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Ce programme est un logiciel libre; vous pouvez le redistribuer ou le\n" "modifier selon les termes de la License Publique Générale de GNU, publiée\n" "par la Free Software Foundation (soit la version 2 ou soit, à votre\n" "discrétion, toute version ultérieure).\n" "\n" "Ce programme est distribué pour être utile, mais SANS AUCUNE GARANTIE;\n" "sans même la garantie implicite qu'il est DE QUALITE LOYALE ET MARCHANDE\n" "ou APPROPRIE POUR UN BUT PARTICULIER. Voir la Licence Publique Générale\n" "de GNU pour plus de détails.\n" "\n" "Vous devriez avoir reçu copie de la Licence Publique Générale de GNU\n" "avec ce programme; sinon, écrire à la Free Software Foundation, Inc.,\n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Pour plus d'information, essayez «%s %s».\n" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "« Free recode » transforme les jeux de caractères et les surfaces de " "fichiers\n" #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | DEMANDE [FICHIER]... ]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Un paramètre obligatoire pour une option de forme longue l'est aussi pour " "une\n" "option de forme courte. La même règle s'applique à un paramètre indiqué " "comme\n" "étant optionnel.\n" #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listes:\n" " -l, --list[=FORMAT] afficher un charset donné, ou fournir toute la " "liste\n" " -k, --known=PAIRES choisir les charsets selon quelques PAIRES " "connues\n" " -h, --header[=[LN/]NOM] tabuler NOM sur stdout, utilisant LN, puis " "terminer\n" " -F, --freeze-tables produire un module C contenant toutes les " "tables\n" " -T, --find-subsets lister tout charset qui est sous-ensemble d'un " "autre\n" " -C, --copyright afficher les conditions de copie, puis terminer\n" " --help fournir ce message d'aide, puis terminer\n" " --version identifier la programme, puis terminer\n" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "Modes d'opération:\n" " -v, --verbose afficher les étapes prévues, suivre la " "progression\n" " -q, --quiet, --silent taire les messages sur les recodages " "irréversibles\n" " -f, --force effectuer même les recodages irréversibles\n" " -t, --touch «touch»er les fichiers après leur remplacement\n" " -i, --sequence=files fabriquer des fichiers pour ordonnancer les " "passes\n" " --sequence=memory utiliser des tampons pour ordonnancer les passes\n" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr "" " -p, --sequence=pipe utiliser «pipe» pour ordonnancer les passes\n" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe même chose que -i (sur cette machine)\n" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Ajustements fins:\n" " -s, --strict recoder strictement, perte possible de caractères\n" " -d, --diacritics se restreindre aux diacritiques pour HTML/LaTeX\n" " -S, --source[=LN] ne recoder que les chaînes et les commentaires LN\n" " -c, --colons utiliser «:» plutôt que «\\\"» pour les trémas\n" " -g, --graphics convertir au mieux possible les «rulers» IBMPC\n" " -x, --ignore=CHARSET ignorer CHARSET durant le choix des étapes\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "L'option «-l» sans FORMAT ni CHARSET donne les charsets et surfaces " "disponibles.\n" "FORMAT vaut «decimal», «octal», «hexadecimal» ou «full», ou encore un " "caractère\n" "dans «dohf».\n" #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "«%s» est présumé sii DEFAULT_CHARSET n'est pas défini dans l'environnement.\n" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Avec -k, les charsets antécédents possibles sont listés pour le CHARSET\n" "conséquent, tous deux étant des charsets RFC1345, restreints par les PAIRES\n" "dites selon la syntaxe «AVANT1:APRÈS1,AVANT2:APRÈS2,...»; chaque code AVANT\n" "et APRÈS est exprimé en décimal.\n" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN est un langage de programmation, valant `c' (implicite), `perl' ou `po'.\n" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "DEMANDE est SOUS-DEMANDE[,SOUS-DEMANDE]...; SOUS-DEMANDE est " "CODAGE[..CODAGE]...\n" "CODAGE est [CHARSET][/[SURFACE]]...; DEMANDE ressemble souvent à " "AVANT..APRÈs,\n" "AVANT et APRÈS étant des charsets. Un CHARSET omis sous-entend le charset\n" "habituel; une [/SURFACE]... omise sous-entend les surfaces habituelles pour\n" "CHARSET; un / sans surface indique l'absence de toute surface. Voir le " "manuel!\n" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "En l'absence de «-i» ou «-p», choisir «-i» avec FICHIER, sinon «-p».\n" "Chaque FICHIER est recodé sur lui-même, détruisant l'original. Si aucun\n" "FICHIER n'est donné, alors agir comme un filtre et recoder stdin sur " "stdout.\n" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Rapporter tout disfonctionnement à mailto:recode-bugs@iro.umontreal.ca;\n" "et rapporter les problèmes de francisation à mailto:traduc@traduc.org.\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Écrit par François Pinard .\n" #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright © 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Ce programme est un logiciel libre; consulter les sources pour connaître\n" "les droits de copie. Il n'y AUCUNE GARANTIE; même pas celle qu'il est\n" "DE QUALITÉ LOYALE ET MARCHANDE ou APPROPRIÉ POUR UN BUT PARTICULIER.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Syntaxe désuète, veuillez préférer «%s»" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Recodage de «%s»..." #: src/main.c:913 msgid " done\n" msgstr " complété\n" #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " non-réussi: %s dans %s..%s\n" #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s non-réussi: %s dans %s..%s" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s dans %s..%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Le charset %s existe déjà, et n'est pas %s" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Incapable de lister «%s»: les noms n'y sont pas disponibles" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "déc oct hex UCS2 mné %s\n" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Désolé, aucun nom disponible pour «%s»" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Plus d'un re-surfaceur pour `%s'" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Plus d'un dé-surfaceur pour `%s'" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Mémoire virtuelle épuisée" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Les codes %3d et %3d s'injectent tous deux dans %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Aucun caractère ne peut produire %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Incapable d'inverser une table un-à-un" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Les diagnostics suivants s'appliquent pour «%s» vers «%s»" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Paire no. %d: < %3d, %3d > en conflit avec < %3d, %3d >" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Incapable de fermer une table en partant des paires connues" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Le recodage est trivial, une table n'est pas requise" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "Recodage plus complexe que ce qu'une table peut décrire" #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sTable de conversion engendrée mécaniquement par Free «%s» %s" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spour séquence «%s».%s" #: src/recode.c:744 msgid "No table to print" msgstr "Aucune table à imprimer" #: src/request.c:34 msgid "reversible" msgstr "réversible" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s vers %s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "octet" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "ucs2" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "flottant" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Irréalisable*" #: src/request.c:113 msgid "*mere copy*" msgstr "*simple copie*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "Mémoire virtuelle épuisée" #: src/request.c:265 msgid "Step initialisation failed" msgstr "L'étape n'a pas été correctement initialisée" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "L'étape n'a pas été correctement initialisée (options non-traitées)" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Demande: %s\n" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Réduit à: %s\n" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nom de surface inconnu: %s" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Pas moyen de recoder %s vers %s" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "Chaîne `..' attendue dans la demande" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Le constat «wait» du processus fils est 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mné Description\n" "\n" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "CHARSET ne peut être omis, définir DEFAULT_CHARSET dans l'environment.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "La séquence «%s» est ambiguë" #~ msgid "Unknown sequence `%s'" #~ msgstr "Séquence «%s» inconnue" #~ msgid "Ambiguous language `%s'" #~ msgstr "Le langage «%s» est ambigu" #~ msgid "Unknown language `%s'" #~ msgstr "Langage «%s» inconnu" #~ msgid "Ambiguous format `%s'" #~ msgstr "Le format «%s» est ambigu" #~ msgid "Unknown format `%s'" #~ msgstr "Format «%s» inconnu" #~ msgid "Erroneous request `%s'" #~ msgstr "Demande «%s» en erreur" #~ msgid " Each input char transforms into an output string,\n" #~ msgstr " Chaque caractère lu devient une chaîne à la sortie,\n" #~ msgid " Each input char transforms into an output string.\n" #~ msgstr " Chaque caractère lu devient une chaîne à la sortie.\n" #~ msgid " Programming is needed to handle multichar input.\n" #~ msgstr " Il faudra programmer la lecture des multi-caractères.\n" #~ msgid " The recoding might not be reversible.\n" #~ msgstr " Ce recodage pourrait être irréversible.\n" #~ msgid " The recoding should be reversible.\n" #~ msgstr " Ce recodage est normalement réversible.\n" #~ msgid " programming is needed to handle multichar input.\n" #~ msgstr " il faudra programmer la lecture des multi-caractères.\n" #~ msgid "%s: Recoding is not reversible" #~ msgstr "%s: Recodage irréversible" #~ msgid ", %d saved by merging" #~ msgstr ", %d économisés par fusion" #~ msgid "/* Conversion table from `%s' charset to `%s' charset.\n" #~ msgstr "/* Table de conversion du charset «%s» vers le charset «%s».\n" #~ msgid "Hash stats: %d names using %d buckets out of %d\n" #~ msgstr "Statistiques de dispersion: %d noms, dans %d/%d pigeonniers\n" #~ msgid "Internal error - strategy undecided" #~ msgstr "Erreur interne - stragégie non choisie" #~ msgid "Mere copy for the trivial recoding\n" #~ msgstr "Recodage trivial par simple recopie\n" #~ msgid "Recoding is not reversible" #~ msgstr "Recodage irréversible" #~ msgid "BEFORE and AFTER both default to `%s' when needed.\n" #~ msgstr "" #~ "AVANT et APRÈS ont implicitement la valeur canonique «%s», lorsqu'absents.\n" recode-3.6/i18n/gl.po0100644000000000000000000004177207233073513013061 0ustar rootroot# Galician translation of GNU recode # Copyright (C) 2000 Free Software Foundation, Inc. # Jacobo Tarrío Barreiro , 2000. # msgid "" msgstr "" "Project-Id-Version: recode 3.5\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 2000-05-06 01:44+02:00\n" "Last-Translator: Jacobo Tarrío Barreiro \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "Sen erros" #: src/main.c:145 msgid "Non canonical input" msgstr "Sen saída normalizada" #: src/main.c:148 msgid "Ambiguous output" msgstr "Saída ambigua" #: src/main.c:151 msgid "Untranslatable input" msgstr "Entrada non traducible" #: src/main.c:154 msgid "Invalid input" msgstr "Entrada incorrecta" #: src/main.c:157 msgid "System detected problem" msgstr "O sistema detectou un problema" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "Uso incorrecto da librería de recodificación" #: src/main.c:163 msgid "Internal recoding bug" msgstr "Erro interno na recodificación" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Este programa é software libre; pode redistribuílo e/ou modificalo\n" "baixo os termos da Licencia Pública Xeral de GNU tal como foi publicada\n" "pola Free Software Foundation; xa a versión 2, ou (á súa elección)\n" "calqueira versión posterior.\n" "\n" "Este programa é distribuído coa esperanza de que sexa útil, pero\n" "SEN NINGUNHA GARANTÍA; nin sequera a garantía implícita de COMERCIABILIDADE\n" "ou APTITUDE PARA UN FIN EN PARTICULAR. Vexa a Licencia Pública Xeral de\n" "GNU para ter máis detalles.\n" "\n" "Debería ter recibido unha copia da Licencia Pública Xeral de GNU con\n" "este programa; se non é o caso, escriba á Free Software Foundation, Inc.,\n" "59 Temple Place - Suite 330, Boston, MA 02111-1307, EE.UU.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Escriba `%s %s' para obter máis información.\n" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "O `recode' libre convirte ficheiros entre varios xogos de caracteres e " "superficies.\n" #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uso: %s [OPCIÓN]... [ [XOGO-DE-CARACTERES] | PETICIÓN [FICHEIRO]... ]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Se unha opción longa amosa un parámetro como obrigatorio, entón tamén é\n" "obrigatorio para a opción curta equivalente. Do mesmo xeito para " "parámetros\n" "opcionais.\n" #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listados:\n" " -l, --list[=FORMATO] listar un ou tódolos xogos de caracteres " "coñecidos\n" " -k, --known=PARES restrinxi-los xogos de acordo coa lista de " "PARES\n" " coñecidos\n" " -h, --header[=[LN/]NOME] escribi-la táboa NOME na saída estándar usando\n" " LN, e logo sair\n" " -F, --freeze-tables escribir un módulo en C que contén tódalas " "táboas\n" " -T, --find-subsets informar dos xogos que son subconxuntos doutros\n" " -C, --copyright amosa-lo copyright e as condicións de copia\n" " --help amosar esta axuda e sair\n" " --version amosar información sobre a versión e sair\n" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "Modos de operación:\n" " -v, --verbose explica-la secuencia de pasos e informar dos\n" " progresos\n" " -q, --quite, --silent inhibi-las mensaxes sobre recodificacións\n" " irreversibles\n" " -f, --force forza-las recodificacións incluso cando non son\n" " reversibles\n" " -t, --touch toca-los ficheiros recodificados despois de\n" " cambialos\n" " -i, --sequence=files usar ficheiros intermedios para pasos " "secuenciais\n" " --sequence=memory usa-la memoria para pasos secuenciais\n" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr "" " -p, --sequence=pipe usar canalizacións para pasos secuenciais\n" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe o mesmo que -i (neste sistema)\n" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Axustes finos:\n" " -s, --strict usar mapeados estrictos, incluso perder caracteres\n" " -d, --diacritics converter só diacríticos ou similares para HTML/LaTeX\n" " -S, --source[=LN] limita-la recodificación a cadeas e comentarios para " "LN\n" " -c, --colon usar dous puntos no canto de comiñas dobres para " "diérese\n" " -g, --graphics aproxima-las liñas de IBMPC con gráficos ASCII\n" " -x, --ignore=XOGO ignora-lo XOGO ao escoller unha rota de " "recodificación\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "A opción -l sen FORMATO ou XOGO lista os xogos e superficies dispoñibles.\n" "O FORMATO é `decimal', `octal', `hexadecimal' ou `full' (completo), ou unha\n" "letra entre `dofh'.\n" #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "A menos que se estableza a variable DEFAULT_CHARSET, XOGO é `%s' se non se " "indica o contrario.\n" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Con -k, os posibles xogos iniciais lístanse para o XOGO final indicado,\n" "sendo os dous xogos tabulares, con PARES da forma `INI1:FIN1,INI2:FIN2,...'\n" "e os códigos INI e FIN dándose coma números decimais.\n" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "LN é unha linguaxe, pode ser `c', `perl' ou `po'; `c' por defecto.\n" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "PETICIÓN é SUBPETICIÓN[,SUBPETICIÓN]...; SUBPETICIÓN é\n" "CODIFICACIÓN[..CODIFICACIÓN]...; CODIFICACIÓN é [XOGO][/[SUPERFICIE]]...;\n" "PETICIÓN adoita parecer INICIAL..FINAL, sendo INICIAL e FINAL uns xogos de\n" "caracteres. Se non se indica un XOGO tómase o xogo normal; se non se " "indica\n" "unha [/SUPERFICIE]... tómanse as superficies implicadas en XOGO; cunha /\n" "cun nome de superficie baleiro non se toma ningunha superficie. Lea o " "manual.\n" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Se non se indica -i nin -p, suponse -p se non se indica un FICHEIRO, senón " "-i.\n" "Cada FICHEIRO recodifícase sobre si mesmo, destruíndose o orixinal. Se non\n" "se indica un FICHEIRO, traballa coma un filtro e recodifica stdin a stdout.\n" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Informe dos erros en .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Escrito por François Pinard .\n" #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Isto é software libre; vexa o código fonte polas condicións de copia. NON " "hai\n" "garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN " "DETERMINADO.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Sintaxe a estinguir, prefírese `%s'" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Recodificando %s..." #: src/main.c:913 msgid " done\n" msgstr " feito\n" #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " fallou: %s en %s..%s\n" #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s fallou: %s en %s..%s" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s en %s..%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "O xogo de caracteres %s xa existe e non é %s" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Non se pode listar `%s', non hai nomes dispoñibles para este xogo" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Oct Hex UCS2 Mne %s\n" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Síntoo, non hai nomes dispoñibles para `%s'" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Aplicáronse superficies máis dunha vez para `%s'" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Quitáronse superficies máis dunha vez para `%s'" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Memoria virtual esgotada" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Ámbolos dous códigos %3d e %3d recodifícanse a %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Non hai caracteres que se recodifiquen a %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Non se pode inverti-la táboa un-a-un dada" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Seguen os diagnósticos para `%s' a `%s'" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "O par núm. %d: <%3d, %3d> entra en conflicto con <%3d, %3d>" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Non podo completa-la táboa dado o conxunto de pares coñecidos" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Recodificación identidade, non merece a pena facer unha táboa" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "A recodificación é demasiado complicada para unha simple táboa" #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sTáboa de conversión xerada mecánicamente polo `%s' Libre %s" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spara a secuencia %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "Non hai ningunha táboa que visualizar" #: src/request.c:34 msgid "reversible" msgstr "reversible" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s a %s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "byte" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "ucs2" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "variable" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Inalcanzable*" #: src/request.c:113 msgid "*mere copy*" msgstr "*simple copia*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "¡Memoria virtual esgotada!" #: src/request.c:265 msgid "Step initialisation failed" msgstr "A inicialización do paso fallou" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "A inicialización do paso fallou (opcións sen procesar)" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Petición: %s\n" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Encollido a: %s\n" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nome de superficie `%s' non recoñecido" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Non hay xeito de recodificar de `%s' a `%s'" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "Esperábase un `..' na petición" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "O estado de espera do proceso fillo é 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Descripción\n" "\n" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "XOGO non ten valor por defecto, defina a variable de ambiente " #~ "DEFAULT_CHARSET.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Secuencia `%s' ambigua" #~ msgid "Unknown sequence `%s'" #~ msgstr "Secuencia `%s' descoñecida" #~ msgid "Ambiguous language `%s'" #~ msgstr "Linguaxe `%s' ambigua" #~ msgid "Unknown language `%s'" #~ msgstr "Linguaxe `%s' descoñecida" #~ msgid "Ambiguous format `%s'" #~ msgstr "Formato `%s' ambigua" #~ msgid "Unknown format `%s'" #~ msgstr "Formato `%s' descoñecido" #~ msgid "Erroneous request `%s'" #~ msgstr "Petición `%s' errónea" recode-3.6/i18n/it.po0100644000000000000000000004217007233073513013064 0ustar rootroot# MESSAGGI IN ITALIANO PER GNU RECODE. # Copyright (C) 1999 Free Software Foundation, Inc. # Lorenzo Cappelletti , 1999. # # table -> tabella # character set -> insieme di caratteri # charset -> charset # surface -> ? # to recode -> ricodificare # msgid "" msgstr "" "Project-Id-Version: GNU recode 3.5\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1999-11-19 23:30+01:00\n" "Last-Translator: Lorenzo Cappelletti \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "Nessun errore" #: src/main.c:145 msgid "Non canonical input" msgstr "Nessun input canonico" #: src/main.c:148 msgid "Ambiguous output" msgstr "Output ambiguo" #: src/main.c:151 msgid "Untranslatable input" msgstr "Input non traslabile" #: src/main.c:154 msgid "Invalid input" msgstr "Input non valido" #: src/main.c:157 msgid "System detected problem" msgstr "Rilevato problema di sistema" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "Uso scorretto della libreria di ricodifica" #: src/main.c:163 msgid "Internal recoding bug" msgstr "Bug di ricodifica interno" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "Si dovrebbe aver ricevuto una copia della GNU General Public License\n" "assieme a questo programma; in caso contrario, scrivere a Free Software\n" "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Usare `%s %s' per ulteriori informazioni.\n" # Libero `recode' non mi piace # Cosa sono le surfaces in questo contesto? #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "`recode' gratuito converte file fra vari insiemi di caratteri e surface.\n" #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uso: %s [OPZIONI]... [ [CHARSET] | RICHIESTA [FILE]... ]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Se un'opzione lunga richiede necessariamente un argomento, allora essa\n" "è richiesta anche per l'opzione breve. Analogamente per gli argomenti\n" "opzionali.\n" #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Elenchi:\n" " -l, --list[=FORMATO] lista uno o tutti i charset conosciuti\n" " -k, --known=COPPIE restringe i charset secondo le COPPIE " "conosciute\n" " -h, --header[=[LN/]NOME] scrive la tabella NOME sullo stdout usando LN,\n" " poi esce\n" " -F, --freeze-tables riporta un modulo C contenente tutte le " "tabelle\n" " -T, --find-subsets riporta tutti i charset sottoinsiemi di altri\n" " -C, --copyright mostra le condizioni del Copyright e " "riproduzione\n" " --help mostra questo aiuto ed esce\n" " --version informazioni sulla versione ed uscita\n" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "Modi operativi:\n" " -v, --verbose spiega le sequenze dei passi e riporta i " "progressi\n" " -q, --quiet, --silent inibisce i messaggi di ricodifiche inreversibili\n" " -f, --force forza le ricodifiche anche quando non reversibili\n" " -t, --touch touch dei file ricodificati dopo la sostituzione\n" " -i, --sequence=files usa file intermedi per i passi sequenziali\n" " --sequence=memory usa buffer di memoria per i passi sequenziali\n" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr "" " -p, --sequence=pipe usa il sistema dei pipe per i passi sequenziali\n" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe come -i (su questo sistema)\n" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Regolazioni fini:\n" " -s, --strict usa mappature strettamente conformi, anche con " "caratteri slegati\n" " -d, --diacritics converte solo segni diacritici o simili per " "HTML/LaTeX\n" " -S, --source[=LN] limita la ricodifica a stringhe e commenti come per " "LN\n" " -c, --colons usa i due punti al posto delle virgolette per le " "dieresi\n" " -g, --graphics approssima le regole IBMPC con grafica ASCII\n" " -x, --ignore=CHARSET ignora CHARSET quando sceglie un percorso di " "ricodifica\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "L'opzione -l senza FORMATO né CHARSET elenca i charset e le surface\n" "disponibili. FORMATO può essere `decimale'(d), `ottale'(o),\n" "`esadecimale'(h) o `pieno'(f) (oppure uno tra `dohf').\n" #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Se DEFAULT_CHARSET non è specificato nell'ambiente, il CHARSET predefinito\n" "è `%s`.\n" # Non riesco assolutamente a capire la costruzione logica di questa frase #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Con -k, possibile prima, charset vengono listati per quelli dati dopo " "CHARSET,\n" "entrambi essendo charset tabulari, con COPPIE nella foram " "`BEF1:AFT1,BEF2:AFT2,...',\n" "dove BEF e AFT sono codici forniti come numeri decimali.\n" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN è qualche lingua, può essere `c', `perl' o `po'; quella predefinita è " "`c'.\n" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "RICHIESTA è SUBRICHIESTA[,SUBRICHIESTA]...; SUBRICHIESTA è\n" "CODIFICA[..CODIFICA]...; CODIFICA è [CHARSET][/[SURFACE]...;\n" "RICHIESTA spesso è simile a PRIMA..DOPO, essendo PRIMA e DOPO dei charset.\n" "Un CHARSET omesso implica il charset usuale; una [/SURFACE]... omessa\n" "implica le superfici del CHARSET; un / con un nome di surface vuoto\n" "significa nessuna surface. Vedere il manuale.\n" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Se non è dato -i né -p, si presume -p se FILE non è presente, altrimenti " "-i.\n" "Ogni FILE è ricodificato su se stesso, ditruggendo l'originale. Se non " "viene\n" "specificato nessun FILE, allora si comporta come un filtro ricodificando lo\n" "stdin sullo stdout.\n" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Segnalare i bug a .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Scritto da Franc,ois Pinard .\n" #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Questo è software libero; vedere il sorgente per le condizioni sulla\n" "riproduzione. NON c'è garanzia; neppure di COMMERCIABILITÀ o IDONEITÀ\n" "AD UN PARTICOLARE SCOPO.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Sintassi sconsigliata, si preferisca `%s'" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Sto ricodificando %s..." #: src/main.c:913 msgid " done\n" msgstr " fatto\n" #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " fallito: %s in %s..%s\n" #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s fallito: %s in %s..%s" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s in %s..%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Il charset %s esiste già e non è %s" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Non posso listare `%s', nessun nome disponibile per questo charset" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Ott Esa UCS2 Mne %s\n" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Spiacente, nessun nome disponibile per `%s'" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Il resurfacer è impostato piú di una volta per `%s'" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "L'unsurfacer è impostato piú di una volta per `%s'" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Memoria virtuale esaurita" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Entrambi i codici %3d e %3d si ricodificano in %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Nessun carattere si ricodifica in %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Impossibile invertire la tabella uno-a-uno data" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Segue diagnostica da `%s' a `%s'" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "La coppia numero %d: <%3d, %3d> è in conflitto con <%3d, %3d>" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Impossibile completare la tabella dall'insieme delle coppie conosciute" # Una forma migliore per identity recoding? #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Sto ricodificando nell'identità, tabella non significativa" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "La ricodifica è troppo complessa per una sola tabella" #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sTabella di conversione generata automaticamente dalla Free `%s' %s" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sper la sequenza %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "Nessuna tabella da stampare" #: src/request.c:34 msgid "reversible" msgstr "reversibile" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s in %s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "byte" # Verificare il significato della sigla #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "ucs2" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "variabile" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Inraggiungibile*" #: src/request.c:113 msgid "*mere copy*" msgstr "*per sola copia*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "Memoria virtuale esaurita!" #: src/request.c:265 msgid "Step initialisation failed" msgstr "Passo di inizializzazione fallito" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "Passo di inizializzazione fallito (opzioni non processate)" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Richiesta: %s\n" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Ridotto a: %s\n" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nome di surface non riconosciuta `%s'" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Nessuno modo per ricodificare da `%s' a `%s'" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "Atteso `..' nella richiesta" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Lo stato di attesa del processo figlio è 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "UCS2 Mne Descrizione\n" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "Nessun CHARSET predefinito, definire DEFAULT_CHARSET nell'ambiente.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Sequenza ambigua `%s'" #~ msgid "Unknown sequence `%s'" #~ msgstr "Sequenza sconosciuta `%s'" #~ msgid "Ambiguous language `%s'" #~ msgstr "Lingua ambigua `%s'" #~ msgid "Unknown language `%s'" #~ msgstr "Lingua sconosciuta `%s'" #~ msgid "Ambiguous format `%s'" #~ msgstr "Formato ambiguo `%s'" #~ msgid "Unknown format `%s'" #~ msgstr "Formato sconosciuto `%s'" #~ msgid "Erroneous request `%s'" #~ msgstr "Richiesta errata `%s'" recode-3.6/i18n/nl.po0100644000000000000000000004773607233073513013076 0ustar rootroot# Dutch messages for GNU recode. # Copyright (C) 1996 Free Software Foundation, Inc. # Erick Branderhorst , 1996. # msgid "" msgstr "" "Project-Id-Version: recode 3.4.2\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1996-10-07 10:05 MET DST\n" "Last-Translator: Erick Branderhorst \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "" #: src/main.c:145 msgid "Non canonical input" msgstr "" #: src/main.c:148 #, fuzzy msgid "Ambiguous output" msgstr "Dubbelzinnig format `%s'" #: src/main.c:151 msgid "Untranslatable input" msgstr "" #: src/main.c:154 msgid "Invalid input" msgstr "" #: src/main.c:157 msgid "System detected problem" msgstr "" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "" #: src/main.c:163 msgid "Internal recoding bug" msgstr "" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Dit programma is vrije software; het mag gedistribueerd en/of\n" "veranderd worden onder de voorwaarden van de GNU General Public\n" "License zoals gepubliceerd door de Free Software Foundation; versie 2,\n" "of (als je daar voor kiest) enig latere versie.\n" "\n" "Dit programma is gedistribueerd in de hoop dat het bruikbaar is, maar\n" "ZONDER ENIGE GARANTIE; zelfs zonder de geompliceerde garantie van\n" "MERCHANTABILITY of GESCHIKTHEID VOOR EEN SPECIFIEK GEBRUIKSDOEL. Zie\n" "de GNU General Public License voor verdere details.\n" "\n" "Samen met dit programma heb je een copie ontvangen van de GNU General\n" "Public License; zo niet, schrijf dan naar de Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Probeer `%s %s' voor meer informatie.\n" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" #: src/main.c:241 #, fuzzy, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Gebruik: %s [OPTIE]... [KARAKTERSET]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" #: src/main.c:250 msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr "" " -p, --sequence=pipe gebruik pipe machinery for sequencing passes " "(FIXME)\n" #: src/main.c:280 #, fuzzy msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe zelfde als -o (op dit systeem)\n" #: src/main.c:285 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" " -c, --colons gebruik punt in plaats van dubbele kwoots \n" " voor diakritische tekens\n" " -d, --diacritics limiteer conversie naar diakritische tekens of " "zoals \n" " voor LaTeX\n" " -f, --force forceer omzetting zelfs als deze niet omkeerbaar " "is\n" " (LET OP: in deze versie, wordt altijd -f " "gebruikt)\n" " -g, --graphics benadering IBMPC lijnen met ASCII grafische " "tekens\n" " -h, --header[=NAAM] schrijf C code met tabel NAAM naar " "standaarduitvoer\n" " -i, --sequence=files gebruik tussen bestanden voor achtereenvolgende \n" " sessies\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" #: src/main.c:302 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" #: src/main.c:329 #, fuzzy msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Meld fouten via .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Geschreven door François Pinard .\n" #: src/main.c:624 #, fuzzy msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Dit is vrije programmatuur; zie de broncode voor kopieer condities.\n" "Er is GEEN garantie; zelfs niet voor VERKOOPBAARHEID of GESCHIKTHEID\n" "VOOR EEN BEPAALDE TOEPASSING.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Omzetten %s..." #: src/main.c:913 msgid " done\n" msgstr " klaar\n" #: src/main.c:954 #, c-format msgid " failed: %s in step `%s..%s'\n" msgstr "" #: src/main.c:961 #, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%svoor reeks %s.%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Karakterset %s bestaat reeds en is niet %s" #: src/names.c:831 #, fuzzy, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Kan `%s' niet tonen, geen RFC 1345 namen beschikbaar voor deze karakterset" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, fuzzy, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "dec oct hex ch %s\n" #: src/names.c:1049 #, fuzzy, c-format msgid "Sorry, no names available for `%s'" msgstr "Sorry, geen RFC 1345 namen beschikbaar voor `%s'" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Code %3d en %3d beide omgezet naar %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Geen karakter omzetting naar %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Kan een-op-een tabel niet inverteren" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Volg diagnostiek (FIXME) van `%s' naar `%s'" #: src/recode.c:229 src/recode.c:241 #, fuzzy, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Paar nummer %d: { %3d, %3d } conflictueerd met { %3d, %3d }" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Kan tabel niet compleet maken uit set van bekende paren" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Codering is identiek, geen tabel waardig" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "Omzetting is te complex voor een mere tabel (FIXME)" #. Print the header of the header file. #: src/recode.c:536 #, fuzzy, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sConversietabel mechanisch gegenereerd door GNU %s %s" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%svoor reeks %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "Geen tabel om te tonen" #: src/request.c:34 msgid "reversible" msgstr "omkeerbaar" #: src/request.c:36 #, fuzzy, c-format msgid "%s to %s" msgstr "%svoor reeks %s.%s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "" #: src/request.c:38 src/request.c:40 #, fuzzy msgid "variable" msgstr "omkeerbaar" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Onmogelijk*" #: src/request.c:113 msgid "*mere copy*" msgstr "*gewone kopie*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "" #: src/request.c:265 msgid "Step initialisation failed" msgstr "" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "" #: src/request.c:903 #, fuzzy, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Geen mogelijkheid voor omzetting van %s naar %s" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Wacht status proces kind is 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Dubbelzinnig `sequence' `%s'" #~ msgid "Unknown sequence `%s'" #~ msgstr "Onbekende `sequence' `%s' (FIXME)" #~ msgid "Ambiguous language `%s'" #~ msgstr "Dubbelzinnige taal `%s'" #~ msgid "Unknown language `%s'" #~ msgstr "Onbekende taal `%s'" #~ msgid "Ambiguous format `%s'" #~ msgstr "Dubbelzinnig format `%s'" #~ msgid "Unknown format `%s'" #~ msgstr "Onbekende format `%s'" #~ msgid "Hash stats: %d names using %d buckets out of %d\n" #~ msgstr "Hash stats: %d names using %d buckets out of %d (FIXME)\n" #~ msgid "Currently, -s is ignored when -g is selected" #~ msgstr "Op dit moment wordt -s genegeerd als -g is geselecteerd" #~ msgid "one to one" #~ msgstr "een op een" #~ msgid "one to many" #~ msgstr "een naar veel (FIXME)" #~ msgid "many to one" #~ msgstr "veel naar een (FIXME)" #~ msgid "many to many" #~ msgstr "veel te veel" #~ msgid "MAX_CHARSETS is too small" #~ msgstr "MAX_CHARSETS is te klein" #~ msgid "Ambiguous charset or encoding `%s'" #~ msgstr "Dubbelzinnige karakterset of codering `%s'" #~ msgid "Unknown charset or encoding `%s'" #~ msgstr "Onbekende karakterset of codering `%s'" #~ msgid "Simplified to: %s\n" #~ msgstr "Versimpeld naar: %s\n" #~ msgid "Unbalanced quotes in request" #~ msgstr "Niet overeenkomstige kwoots in vraag" #~ msgid "Illegal backslash" #~ msgstr "Ongeldige backslash" #~ msgid "Internal error - strategy undecided" #~ msgstr "Interne fout - besluiteloze strategie" #~ msgid "ONE to SAME" #~ msgstr "ONE naar SAME" #~ msgid "steps: %d" #~ msgstr "stappen: %d" #~ msgid ", %d saved by merging" #~ msgstr ", %d bewaard door samenvoegen" #~ msgid " UNACHIEVABLE\n" #~ msgstr " ONBEREIKBAAR\n" #~ msgid "Cannot auto check the ignored charset" #~ msgstr "Kan de genegeerde karakterset niet automatisch kontroleren" #~ msgid "Cannot auto check on %s" #~ msgstr "Kan %s niet automatisch kontroleren" #~ msgid "" #~ "Mandatory or optional arguments to long options are mandatory or optional\n" #~ "for short options too.\n" #~ "\n" #~ " -C, --copyright display Copyright and copying conditions\n" #~ " -a, --auto-check report about some or all recoding paths, then exit\n" #~ " -l, --list[=FORMAT] list one or all known charsets\n" #~ " -k, --known=PAIRS restrict charsets according to known PAIRS list\n" #~ " --help display this help and exit\n" #~ " --version output version information and exit\n" #~ "\n" #~ "FORMAT is a word among decimal, octal, hexadecimal or full (which may be\n" #~ "abbreviated to one of `dohf'), it defaults to just the canonical name.\n" #~ "With -k, possible before charsets are listed for the given after CHARSET,\n" #~ "both being RFC1345 charsets, with PAIRS of the form " #~ "`BEF1:AFT1,BEF2:AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgstr "" #~ "Verplichte of optionele argumenten bij lange opties, zijn ook\n" #~ "verplicht of optioneel bij korte opties.\n" #~ "\n" #~ " -C, --copyright toon Copyright en copieer kondities\n" #~ " -a, --auto-check bericht over sommige of alle omzettingstrajecten\n" #~ " -l, --list[=FORMAT] toon een of alle bekende karaktersets\n" #~ " -k, --known=PAREN beperk karaktersets volgens bekende PAREN lijst\n" #~ " --help toon hulp-tekst en bekindig programma\n" #~ " --version toon versie-informatie en bekindig programma\n" #~ "\n" #~ "FORMAT is een woord zoals decimaal, octaal, hexadecimaal of volledig\n" #~ "(full) (wat mag worden afgekort als een van `dohf'), gewoonlijk wordt\n" #~ "de standaardnaam gebruikt.\n" #~ "\n" #~ "(FIXME) With -k, possible before charsets are listed for the given\n" #~ "after CHARSET, both being RFC1345 charsets, with PAIRS of the form\n" #~ "`BEF1:AFT1,BEF2:AFT2,... and BEFs and AFTs being codes. All codes\n" #~ "are given as decimal numbers.\n" #~ msgid "" #~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the " #~ "Texinfo\n" #~ "documentation. My preferred charsets are (each user has preferences):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), using backspace to apply diacritics\n" #~ " ibmpc IBM-PC 8-bit characters, with proper newlines\n" #~ " latex LaTeX coding of foreign and diacriticized characters\n" #~ " latin1 ISO Latin-1 8-bit extension of ASCII\n" #~ " texte Easy French convention for transmitting email messages\n" #~ msgstr "" #~ "Optie -l met geen FORMAT noch CHARSET laat alle karaktersets zien, zie\n" #~ "ook de Texinfo documentatie. Mijn preferente karaktersets zijn (elke\n" #~ "gebruiker heeft voorkeuren):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), gebruik backspace to apply diacritics\n" #~ " ibmpc IBM-PC 8-bit karakter, met juiste nieuwe regels\n" #~ " latex LaTeX codering van vreemde en dia-kritische karrakters\n" #~ " latin1 ISO Latin-1 8-bit uitbreiding van ASCII\n" #~ " texte Makkelijk franse conventie voor versturen email berichten\n" #~ msgid "" #~ "\n" #~ "Usage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n" #~ msgstr "" #~ "\n" #~ "Gebruik: %s [OPTIE]... [VOOR]:[NA] [BESTAND]...\n" #~ msgid "" #~ " -o, --sequence=popen use popen machinery for sequencing passes\n" #~ msgstr "" #~ " -o, --sequence=popen gebruiken popen machinery for sequencing passes " #~ "(FIXME)\n" #~ msgid " -o, --sequence=popen same as -i (on this system)\n" #~ msgstr " -o, --sequence=popen zelfde als -i (op dit systeem)\n" #~ msgid "" #~ " -q, --quiet, --silent inhibit messages about irreversible recodings\n" #~ " -s, --strict use strict mappings, even loose characters\n" #~ " -t, --touch touch the recoded files after replacement\n" #~ " -v, --verbose explain sequence of steps and report progress\n" #~ " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" #~ "\n" #~ "If none of -i, -o and -p are given, presume -p if no FILE, else -i.\n" #~ "Each FILE is recoded over itself, destroying the original. If no\n" #~ "FILE is specified, then act as a filter and recode stdin to stdout.\n" #~ msgstr "" #~ " -q, --quiet, --silent laat meldingen over onomkeerbaarheid achterwege\n" #~ " -s, --strict gebruik strikte omzetting, zelfs voor loose chars\n" #~ " -t, --touch verander de tijd van omgezette bestanden\n" #~ " -v, --verbose laat zien wat er gebeurt\n" #~ " -x, --ignore=CHARSET negeer CHARSET bij kiezen van omzettingstraject\n" #~ "\n" #~ "Als geen van -i, -o en -p gegeven zijn, veronderstel -p als geen\n" #~ "BESTAND, anders -i. Elk BESTAND is omgezet over zichzelf, het\n" #~ "origineel vernietigend. Als geen BESTAND is gespecificeerd, werk dan\n" #~ "als een filter en zet standaardinvoer om naar standaarduitvoer.\n" #~ msgid "BEFORE and AFTER both default to `%s' when needed.\n" #~ msgstr "VOOR en NA beiden `%s' indien noodzakelijk.\n" #~ msgid "%s: Recoding is not reversible" #~ msgstr "%s: Omzetting is niet omkeerbaar" #~ msgid "Recoding is not reversible" #~ msgstr "Omzetting is niet omkeerbaar" recode-3.6/i18n/pl.po0100644000000000000000000006362507233073513013073 0ustar rootroot# Polish translations for the GNU recode messages # Copyright (C) 1996 Free Software Foundation, Inc. # Pawe³ Krawczyk , 1996, 1997, 1998, 1999 # msgid "" msgstr "" "Project-Id-Version: recode 3.4r\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1999-05-26 14:49+02:00\n" "Last-Translator: Pawe³ Krawczyk \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "Brak b³êdu" #: src/main.c:145 msgid "Non canonical input" msgstr "Dane wej¶ciowe nie s± kanoniczne" #: src/main.c:148 msgid "Ambiguous output" msgstr "Dane wyj¶ciowe s± dwuznaczne" #: src/main.c:151 msgid "Untranslatable input" msgstr "Dane wej¶ciowe nie mog± byæ przet³umaczone" #: src/main.c:154 msgid "Invalid input" msgstr "B³êdne dane wej¶ciowe" #: src/main.c:157 msgid "System detected problem" msgstr "System wykry³ problem" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "B³êdne u¿ycie biblioteki przekodowuj±cej" #: src/main.c:163 msgid "Internal recoding bug" msgstr "Wyst±pi³ wewnêtrzny b³±d przekodowania" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Ten program jest darmowy; mo¿esz rozprowadzaæ go i/lub modyfikowaæ\n" "zachowuj±c warunki Powszechnej Licencji Publicznej GNU (General Public\n" "Licence), opublikowanej przez Free Software Foundation, w wersji 2 lub\n" "wy¿szej.\n" "\n" "Program ten jest rozprowadzany w nadziei, ¿e bêdzie przydatny,\n" "ale BEZ ¯ADNEJ GWARANCJI, nawet bez domy¶lnej gwarancji SPRZEDAWALNO¦CI\n" "lub PRZYDATNO¦CI DO KONKRETNYCH ZASTOSOWAÑ. Szczegó³y znajdziesz\n" "w Powszechnej Licencji Publicznej GNU.\n" "\n" "Powiniene¶ otrzymaæ kopiê Powszechnej Licencji Publicznej GNU wraz\n" "z tym programem. Je¶li nie, napisz do Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Polecenie `%s %s' wy¶wietli wiêcej informacji.\n" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "Program `recode' konwertuje pliki pomiêdzy ró¿nymi zestawami znaków\n" "i sposobami kodowania.\n" # REQUEST t³umaczê wszêdzie konsekwentnie jako POLECENIE, a nie '¿±danie' #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Sk³adnia: %s [OPCJA]... [ [ZESTAW_ZNAKÓW] | POLECENIE [PLIK]... ]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Je¶li argumenty s± obowi±zkowe dla d³ugich wersji opcji, to s± one równie¿\n" "obowi±zkowe dla krótkich wersji. Analogicznie dla argumentów opcjonalnych.\n" #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listy:\n" " -l, --list[=FORMAT] wy¶wietla jeden lub wszystkie znane zestawy\n" " znaków\n" " -k, --known=PARY ogranicza listê zestawów do znanych PAR\n" " -h, --header[=[LN/]NAZWA] wy¶wietla tablicê NAZWA na standardowe wyj¶cie\n" " u¿ywaj±c LN i koñczy pracê\n" " -F, --freeze-table wy¶wietla modu³ w C zawieraj±cy wszystkie\n" " tablice\n" " -T, --find-subsets wy¶wietla wszystkie zestawy bêd±ce podzbiorami\n" " innych zestawów\n" " -C, --copyright wy¶wietla informacje o prawach autorskich\n" " oraz warunkach kopiowania\n" " --version wy¶wietla wersjê programu i koñczy pracê\n" " --help wy¶wietla ten tekst pomocy i koñczy pracê\n" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "Tryby pracy:\n" "\n" " -v, --verbose oznajmia wykonywane kroki oraz postêp pracy\n" " -q, --quiet, --silent nie wy¶wietla komunikatów o nieistotnych\n" " konwersjach\n" " -f, --force wymusza przekodowanie nawet je¶li jest ono\n" " nieodwracalne\n" " -t, --touch uaktualnia czas plików po przekodowaniu\n" " -i, --sequence=pliki u¿ywa plików tymczasowych miêdzy etapami\n" " --sequence=memory u¿ywa buforów w pamiêci miêdzy etapami\n" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr " -p, --sequence=pipe u¿ywa potoków miêdzy etapami\n" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe identyczne jak -i (w tym systemie)\n" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Modyfikacja parametrów pracy:\n" "\n" " -s, --strict u¿ywa ¶cis³ego mapowania, nawet dla nie¶cis³ych\n" " znaków\n" " -d, --diacritics konwertuje tylko znaki diakrytyczne oraz symbole\n" " znaków (takie jak w HTML i LaTeX)\n" " -c, --colons u¿ywa dwukropków zamiast cudzys³owów dla " "oznaczenia\n" " umlautu\n" " -g, --graphics próbuje przybli¿aæ ramki IBMPC znakami ASCII\n" " -x, --ignore=ZESTAW ignoruje ZESTAW znaków podczas okre¶lania drogi\n" " przekodowania\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Bez FORMATu lub ZESTAWu, opcja -l wy¶wietla dostêpne zestawy i sposoby\n" "kodowania znaków. FORMAT to `decimal', `octal', `hexadecimal' lub `full',\n" "(lub jedna z liter `dohf').\n" #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Je¶li zmienna ¶rodowiskowa DEFAULT_CHARSET nie jest ustawiona, domy¶lnym\n" "zestawem znaków jest `%s'.\n" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Je¶li podano opcjê -k, program wy¶wietla zestawy znaków z których mo¿na\n" "dokonaæ konwersji do podanego ZESTAWu docelowego. Oba s± stabelaryzowanymi\n" "zestawami znaków z PARAmi postaci `SK¡D1:DOK¡D1,SK¡D2:DOK¡D2...', gdzie\n" "SK¡D i DOK¡D s± kodami podanymi jako liczby dziesiêtne.\n" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN jest jêzykiem programowania, do wyboru `c', `perl' lub `po'.\n" "Domy¶ln± warto¶ci± jest `c'.\n" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "POLecenie to PODPOL[,PODPOL]...; PODPOLecenie to ENKOD[..ENKOD]...\n" "ENKOD to [ZESTAW][/[KODOWANIE]]...; POLecenie czêsto ma postaæ SK¡D..DOK¡D,\n" "gdzie SK¡D i DOK¡D s± zestawami znaków. W miejsce pominiêtego zestawu\n" "przyjmowany jest zestaw domy¶lny; W miejsce pominiêtego [/KODOWANIA]\n" "przyjmowany jest domy¶lny sposób kodowania dla danego ZESTawu; sam znak\n" "/ bez podanego KODOWANIA oznacza brak jakiegokolwiek kodowania. Szczegó³y\n" "w dokumentacji.\n" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Je¶li nie podano opcji -i ani -p, przyjmowana jest opcja -p je¶li nie\n" "podano PLIKu, w przeciwnym razie -i. Ka¿dy PLIK jest nadpisywany z utrat±\n" "oryginalnej zawarto¶ci. Je¶li nie podano PLIKu, program dzia³a jako filtr\n" "przekodowuj±c stdin na stdout.\n" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Prosimy o zg³aszanie b³êdów na adres .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Autorem jest Franc,ois Pinard .\n" #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Oprogramowanie darmowe; warunki jego kopiowania znajdziesz w kodzie\n" "¼ród³owym. Nie podlega ¿adnej gwarancji, nawet gwarancji przydatno¶ci\n" "do jakiegokolwiek zastosowania lub sprzeda¿y.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Odradza siê stosowanie tej sk³adni, proszê u¿ywaæ `%s'" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Przekodowanie %s..." #: src/main.c:913 msgid " done\n" msgstr " skoñczone\n" #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " nie powiod³o siê: %s w %s..%s\n" #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s nie powiod³o siê: %s w %s..%s" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s w %s..%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Zestaw %s ju¿ istnieje i nie jest %s" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Nie mogê wylistowaæ `%s', brak nazw dla tego zestawu znaków" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "Dec Okt Hex UCS2 Mne %s\n" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Brak nazw dla `%s'" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Procedura rekoduj±ca zosta³a ustawiona wiêcej ni¿ raz dla `%s'" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Procedura dekoduj±ca zosta³a ustawiona wiêcej ni¿ raz dla `%s'" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Pamiêæ wirtualna wyczerpana" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Kody %3d i %3d oba t³umacz± siê na %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "¯aden znak nie koduje siê na %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Nie mogê odwróciæ danej tablicy " #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Diagnostyka dla `%s' do `%s'" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Para nr %d: < %3d, %3d > konflikt z < %3d, %3d >" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Nie mogê utworzyæ tablicy z zestawu znanych par" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Przekodowanie jest proste, tablica nie jest potrzebna" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "Przekodowanie jest zbyt skomplikowane na zwyk³± tablicê" #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sTablica przekodowañ wygenerowana automatycznie przez GNU `%s' %s." #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sdla sekwencji %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "Brak tablicy do wypisania" #: src/request.c:34 msgid "reversible" msgstr "odwracalna" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s na %s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "bajt" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "ucs2" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "zmienne" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Nieosi±galne*" #: src/request.c:113 msgid "*mere copy*" msgstr "*zwyk³a kopia*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "Pamiêæ wirtualna wyczerpana!" #: src/request.c:265 msgid "Step initialisation failed" msgstr "Inicjalizacja kroku nie powiod³a siê" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "Inicjalizacja kroku nie powiod³a siê (nieprzetworzone opcje)" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Polecenie: %s\n" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Zmniejszony do: %s\n" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Nierozpoznana nazwa standardu kodowania `%s'" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Przekodowanie `%s' na `%s' jest niemo¿liwe" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "Spodziewane `..' w poleceniu" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Description\n" "\n" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "ZESTAW znaków nie ma warto¶ci domy¶lnej, ustaw zmienn± ¶rodowiskow±\n" #~ "DEFAULT_CHARSET.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Nierozpoznana sekwencja `%s'" #~ msgid "Unknown sequence `%s'" #~ msgstr "Nieznana sekwencja `%s'" #~ msgid "Ambiguous language `%s'" #~ msgstr "Nierozpoznany jêzyk `%s'" #~ msgid "Unknown language `%s'" #~ msgstr "Nieznany jêzyk `%s'" #~ msgid "Ambiguous format `%s'" #~ msgstr "Nierozpoznany format `%s'" #~ msgid "Unknown format `%s'" #~ msgstr "Nieznany format `%s'" #~ msgid "Erroneous request `%s'" #~ msgstr "B³êdne polecenie `%s'" #~ msgid " Each input char transforms into an output string,\n" #~ msgstr " Ka¿dy znak wej¶ciowy jest konwertowany na ³añcuch wyj¶ciowy,\n" #~ msgid " Each input char transforms into an output string.\n" #~ msgstr " Ka¿dy znak wej¶ciowy jest konwertowany na ³añcuch wyj¶ciowy.\n" #~ msgid " Programming is needed to handle multichar input.\n" #~ msgstr "" #~ " Do obs³ugi kodów wieloznakowych potrzebna jest umiejêtno¶æ " #~ "programowania.\n" #~ msgid " The recoding might not be reversible.\n" #~ msgstr " Konwersja mo¿e byæ nieodwracalna.\n" #~ msgid " The recoding should be reversible.\n" #~ msgstr " Konwersja powinna byæ odwracalna.\n" #~ msgid " programming is needed to handle multichar input.\n" #~ msgstr "" #~ " do obs³ugi kodów wieloznakowych potrzebna jest umiejêtno¶æ " #~ "programowania.\n" #~ msgid " UNACHIEVABLE\n" #~ msgstr " NIEOSI¡GALNE\n" #~ msgid "%s: Recoding is not reversible" #~ msgstr "%s: Konwersja jest nieodwracalna" #~ msgid ", %d saved by merging" #~ msgstr ", %d zachowane przez z³±czenie" #~ msgid "/* Conversion table from `%s' charset to `%s' charset.\n" #~ msgstr "/* Tablica konwersji zestawow znakow `%s' na `%s'.\n" #~ msgid "Cannot auto check on %s" #~ msgstr "Nie mogê automatycznie sprawdziæ %s" #~ msgid "Cannot auto check the ignored charset" #~ msgstr "Nie mogê automatycznie sprawdziæ ignorowanego zestawu znaków" #~ msgid "Currently, -s is ignored when -g is selected" #~ msgstr "Opcja -s jest wy³±czana przez opcjê -g" #~ msgid "Hash stats: %d names using %d buckets out of %d\n" #~ msgstr "Wyniki przeszukiwania: %d u¿ywa %d spo¶ród %d zbiorów\n" #~ msgid "Internal error - strategy undecided" #~ msgstr "B³±d wewnêtrzy - niezdecydowana strategia" #~ msgid "MAX_CHARSETS is too small" #~ msgstr "MAX_CHARSETS jest za ma³e" #~ msgid "MAX_SEQUENCE is too small" #~ msgstr "MAX_SEQUENCE jest za ma³e" #~ msgid "MAX_SINGLE_STEPS is too small" #~ msgstr "MAX_SINGLE_STEPS jest za ma³e" #~ msgid "Mere copy for the trivial recoding\n" #~ msgstr "Zwyk³a kopia do prostego przekodowania\n" #~ msgid "ONE to SAME" #~ msgstr "ONE na SAME" #~ msgid "Recoding is not reversible" #~ msgstr "Przekodowanie jest nieodwracalne" #~ msgid "Simplified to: " #~ msgstr "Uproszczone do: " #~ msgid "UNACHIEVABLE recoding!\n" #~ msgstr "NIEOSI¡GALNE przekodowanie!\n" #~ msgid "You may not explicitly recode from RFC 1345" #~ msgstr "Nie ma potrzebt ¶cis³ego przekodowania z RFC 1345" #~ msgid " -o, --sequence=popen same as -i (on this system)\n" #~ msgstr " -o, --sequence=popen identyczne jak -i (w tym systemie)\n" #~ msgid "" #~ " -o, --sequence=popen use popen machinery for sequencing passes\n" #~ msgstr "" #~ " -o, --sequence=popen u¿ycie techniki popen w przebiegach sekwencyjnych\n" #~ msgid "" #~ " -q, --quiet, --silent inhibit messages about irreversible recodings\n" #~ " -s, --strict use strict mappings, even loose characters\n" #~ " -t, --touch touch the recoded files after replacement\n" #~ " -v, --verbose explain sequence of steps and report progress\n" #~ " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" #~ "\n" #~ "If none of -i, -o and -p are given, presume -p if no FILE, else -i.\n" #~ "Each FILE is recoded over itself, destroying the original. If no\n" #~ "FILE is specified, then act as a filter and recode stdin to stdout.\n" #~ msgstr "" #~ " -q, --quiet, --silent blokuj komunikaty o nieodwracalnych konwersjach\n" #~ " -s, --strict u¿ywaj ¶cis³ych odwzorowañ, nawet dla w±tpliwych " #~ "znaków\n" #~ " -t, --touch uaktualnij datê przekodowanego, podstawionego " #~ "pliku\n" #~ " -v, --verbose pokazuj kolejne kroki i postêp konwersji\n" #~ " -x, --ignore=ZESTAW ignoruj ZESTAW znaków przy wyborze konwersji\n" #~ "\n" #~ "Je¶li nie wybrano ¿adnej z opcji -i, -o lub -p, i nie ma agumentu PLIK,\n" #~ "domy¶lnie przyjmowana jest opcja -p, w przeciwnym wypadku -i. Ka¿dy PLIK\n" #~ "po konwersji jest zapisywany pod t± sam± nazw±, z usuniêciem orygina³u.\n" #~ "Je¶li brak PLIKu, recode dzia³a jak filtr i konwertuje z stdin na stdout.\n" #~ msgid "BEFORE and AFTER both default to `%s' when needed.\n" #~ msgstr "PRZED i PO w razie potrzeby s± ustawiane domy¶lnie na `%s'.\n" #~ msgid "" #~ "Mandatory or optional arguments to long options are mandatory or optional\n" #~ "for short options too.\n" #~ "\n" #~ " -C, --copyright display Copyright and copying conditions\n" #~ " -a, --auto-check report about some or all recoding paths, then exit\n" #~ " -l, --list[=FORMAT] list one or all known charsets\n" #~ " -k, --known=PAIRS restrict charsets according to known PAIRS list\n" #~ " --help display this help and exit\n" #~ " --version output version information and exit\n" #~ "\n" #~ "FORMAT is a word among decimal, octal, hexadecimal or full (which may be\n" #~ "abbreviated to one of `dohf'), it defaults to just the canonical name.\n" #~ "With -k, possible before charsets are listed for the given after CHARSET,\n" #~ "both being RFC1345 charsets, with PAIRS of the form " #~ "`BEF1:AFT1,BEF2:AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgstr "" #~ "Obowi±zkowe lub opcjonalne argumenty d³ugich form opcji maj± tak± sam±\n" #~ "postaæ dla krótkich form.\n" #~ "\n" #~ " -C, --copyright wy¶wietl informacje licencyjne i warunki kopiowania\n" #~ " -a, --auto-check wy¶wietl ¶cie¿ki konwersji i zakoñcz pracê\n" #~ " -l, --list[=FORMAT] wy¶wietl znane zestawy znaków\n" #~ " -k, --known=PARY ogranicz zestawy znaków wg. podanych PAR\n" #~ " --help wy¶wietl ten tekst pomocy i zakoñcz pracê\n" #~ " --version wy¶wietl wersjê programu i zakoñcz pracê\n" #~ "\n" #~ "FORMAT jest jednym z: decimal, octal, hexadecimal oraz full (skróty: dohf)\n" #~ "Domy¶lnie wy¶wietlane s± tylko nazwy kanoniczne wszystkich standardów.\n" #~ "Dla opcjê -k podaje siê dla danego zestawu PO pary decymalnych kodów znaków\n" #~ "z zestawów RFC1345, postaci: PRZED1:PO2,PRZED2:PO2,...\n" #~ msgid "" #~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the " #~ "Texinfo\n" #~ "documentation. My preferred charsets are (each user has preferences):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), using backspace to apply diacritics\n" #~ " ibmpc IBM-PC 8-bit characters, with proper newlines\n" #~ " latex LaTeX coding of foreign and diacriticized characters\n" #~ " latin1 ISO Latin-1 8-bit extension of ASCII\n" #~ " texte Easy French convention for transmitting email messages\n" #~ msgstr "" #~ "Opcja -l bez podania FORMATu i ZESTAWu wy¶wietla listê wszystkich zestawów\n" #~ "(szczegó³y w dokumentacji). Ulubione zestawy Autora to:\n" #~ "\n" #~ " ascii-bs ASCII (7-bitowy), znak BS u¿ywany do dodawania ogonków\n" #~ " ibmpc IBM-PC 8-bitowe znaki, z odpowiednimi znakami nowej linii\n" #~ " latex kodowanie znaków diakrytycznych w formacie LaTeXa\n" #~ " latin1 ISO Latin-1 8-bitowe rozszerzenie ASCII\n" #~ " texte popularny francuski standard stosowany w emailu\n" #~ msgid "" #~ "\n" #~ " -c, --colons use colons instead of double quotes for diaeresis\n" #~ " -d, --diacritics limit conversion to diacritics or alike for LaTeX\n" #~ " -f, --force force recodings even if they are not reversible\n" #~ " (BEWARE: in this version, -f is always selected)\n" #~ " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" #~ " -h, --header[=NAME] write C code with table NAME on stdout, then exit\n" #~ " -i, --sequence=files use intermediate files for sequencing passes\n" #~ msgstr "" #~ "\n" #~ " -c, --colons u¿ywaj dwukropków zamiast cudzys³owów\n" #~ " -d, --diacritics ogranicz konwersjê do zn. diakryt. itp. dla " #~ "LaTeXa\n" #~ " -f, --force wymuszaj konwersje, nawet je¶li s± nieodwracalne\n" #~ " (UWAGA: w tej wersji -f zawsze obowi±zuje)\n" #~ " -g, --graphics przybli¿aj ramki IBMPC za pomoc± znaków ASCII\n" #~ " -h, --header[=NAZWA] wypisz zestaw NAZWA w postaci kodu C na stdout\n" #~ " -i, --sequence=pliki u¿ywaj plików po¶rednich do przebiegów " #~ "sekwencyjnych\n" #~ msgid "" #~ "\n" #~ "Usage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n" #~ msgstr "" #~ "\n" #~ "Sk³adnia: %s [OPCJA]... [PRZED]:[PO] [PLIK]...\n" #~ msgid "many to many" #~ msgstr "wiele na wiele" #~ msgid "many to one" #~ msgstr "wiele na jeden" #~ msgid "one to many" #~ msgstr "jeden na wiele" #~ msgid "one to one" #~ msgstr "jeden na jeden" #~ msgid "steps: %d" #~ msgstr "kroków: %d" recode-3.6/i18n/pt.po0100644000000000000000000004757107233073513013105 0ustar rootroot# Portuguese translation of the "recode" messages # Copyright (C) 1996 Free Software Foundation, Inc. # Vitor Duarte , Maio de 1996. # Thanks to Nuno Oliveira , 1996. # msgid "" msgstr "" "Project-Id-Version: GNU recode 3.4.3\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1996-11-25 10:00-0000\n" "Last-Translator: Vitor Duarte \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "" #: src/main.c:145 msgid "Non canonical input" msgstr "" #: src/main.c:148 #, fuzzy msgid "Ambiguous output" msgstr "O formato «%s» é ambiguo" #: src/main.c:151 msgid "Untranslatable input" msgstr "" #: src/main.c:154 msgid "Invalid input" msgstr "" #: src/main.c:157 msgid "System detected problem" msgstr "" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "" #: src/main.c:163 msgid "Internal recoding bug" msgstr "" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Este programa é «free software»; pode redistribuir-lo e/ou modificá-lo\n" "nos termos previstos na licença da GNU (GNU General Public License),\n" "publicada pela Free Software Foundation; de acordo com a versão 2 ou,\n" "se preferir, alguma mais recente.\n" "\n" "Este programa é distribuido na esperança de que lhe seja útil, mas\n" "SEM QUALQUER GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE\n" "ou UTILIDADE PARA QUALQUER UTILIZAÇÃO. Para mais informações consulte a\n" "«GNU General Public License».\n" "\n" "Deve ter recebido uma cópia da licença «GNU General Public License» junto\n" "com este programa; se assim não for, escreva para Free Software\n" "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, EUA.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Para mais informação tente «%s %s».\n" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" #: src/main.c:241 #, fuzzy, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uso: %s [OPÇÃO]... [CHARSET]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" #: src/main.c:250 msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr " -p, --sequence=pipe usar «pipe» para sequenciar os passos\n" #: src/main.c:280 #, fuzzy msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe o mesmo que -o (neste sistema)\n" #: src/main.c:285 #, fuzzy msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" " -c, --colons usa «:» em vez de «\"» para o trema\n" " -d, --diacritics restringir a conversão aos diacrilicos do LaTeX\n" " -f, --force efectuar mesmo as conversões irreversíveis\n" " (ATENÇÃO: actualmente -f é sempre assumido)\n" " -g, --graphics aproxima as «caixas» do IBMPC com caracteres " "ASCII\n" " -h, --header[=NAME] produzir apenas, no «stdout», a tabela NAME em\n" " código C\n" " -i, --sequence=files usar ficheiros intermédios para os passos " "sucessivos\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" #: src/main.c:302 msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" #: src/main.c:329 #, fuzzy msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Reporte os «bugs» para .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Escrito por Franc,ois Pinard .\n" #: src/main.c:624 #, fuzzy msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Este programa é «free software»; veja o código fonte para saber em que\n" "condições o pode copiar. SEM GARANTIA; nem mesmo de COMERCIABILIDADE ou\n" "de UTILIDADE PARA QUALQUER UTILIZAÇÃO.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Convertendo %s..." #: src/main.c:913 msgid " done\n" msgstr " terminado\n" #: src/main.c:954 #, c-format msgid " failed: %s in step `%s..%s'\n" msgstr "" #: src/main.c:961 #, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%spara a sequência %s.%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "O conjunto de caracteres %s já existe e não é %s" #: src/names.c:831 #, fuzzy, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "É impossível listar «%s». Não existem nomes no `RFC 1345' para os caracteres" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, fuzzy, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "dec oct hex ch %s\n" #: src/names.c:1049 #, fuzzy, c-format msgid "Sorry, no names available for `%s'" msgstr "Desculpe, não existem nomes `RFC 1345' para «%s»" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Ambos os códigos %3d e %3d são convertidos em %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Nenhum carácter é convertido em %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Não se pode inverter a tabela de um-para-um dada" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Os diagnosticos seguintes aplicam-se de «%s» para «%s»" #: src/recode.c:229 src/recode.c:241 #, fuzzy, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par nº %d: { %3d, %3d } em conflito com { %3d, %3d }" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Não posso completar a tabela a partir do conjunto de pares conhecidos" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "A conversão não necessita de tabela" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "Conversão demasiado complexa para uma simples tabela" #. Print the header of the header file. #: src/recode.c:536 #, fuzzy, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sTabela de conversão gerada automaticamente por GNU %s %s" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%spara a sequência %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "Nenhuma tabela a imprimir" #: src/request.c:34 msgid "reversible" msgstr "reversível" #: src/request.c:36 #, fuzzy, c-format msgid "%s to %s" msgstr "%spara a sequência %s.%s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "" #: src/request.c:38 src/request.c:40 #, fuzzy msgid "variable" msgstr "reversível" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Impossível*" #: src/request.c:113 msgid "*mere copy*" msgstr "*simples cópia*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "" #: src/request.c:265 msgid "Step initialisation failed" msgstr "" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "" #: src/request.c:903 #, fuzzy, c-format msgid "No way to recode from `%s' to `%s'" msgstr "É impossível passar de %s para %s" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "O processo filho terminou com estado 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "A sequência «%s» é ambígua" #~ msgid "Unknown sequence `%s'" #~ msgstr "Sequência «%s» desconhecida" #~ msgid "Ambiguous language `%s'" #~ msgstr "Linguagem «%s» ambígua" #~ msgid "Unknown language `%s'" #~ msgstr "Lingua «%s» desconhecida" #~ msgid "Ambiguous format `%s'" #~ msgstr "O formato «%s» é ambiguo" #~ msgid "Unknown format `%s'" #~ msgstr "Formato «%s» desconhecido" #~ msgid "Hash stats: %d names using %d buckets out of %d\n" #~ msgstr "Estatísticas de dispersão: %d nomes, usando %d de %d posições\n" #~ msgid "Currently, -s is ignored when -g is selected" #~ msgstr "Actualmente, -s é ignorado quando -g é seleccionado" #~ msgid "one to one" #~ msgstr "de um para um" #~ msgid "one to many" #~ msgstr "de um para vários" #~ msgid "many to one" #~ msgstr "de vários para um" #~ msgid "many to many" #~ msgstr "de vários para vários" #~ msgid "MAX_CHARSETS is too small" #~ msgstr "MAX_CHARSETS é demasiado pequeno" #~ msgid "Ambiguous charset or encoding `%s'" #~ msgstr "Caracteres ou codificação «%s» ambiguos" #~ msgid "Unknown charset or encoding `%s'" #~ msgstr "Conjunto de caracteres ou codificação «%s» desconhecido" #~ msgid "Simplified to: %s\n" #~ msgstr "Reduzido a: %s\n" #~ msgid "Unbalanced quotes in request" #~ msgstr "Plicas desemparelhadas no pedido" #~ msgid "Illegal backslash" #~ msgstr "Barra invertida ilegal" #~ msgid "Internal error - strategy undecided" #~ msgstr "Erro interno - estratégia não decidível" #~ msgid "ONE to SAME" #~ msgstr "UM para o MESMO" #~ msgid "steps: %d" #~ msgstr "passos: %d" #~ msgid ", %d saved by merging" #~ msgstr ", %d gravado por fusão" #~ msgid " UNACHIEVABLE\n" #~ msgstr " IMPOSSÍVEL\n" #~ msgid "Cannot auto check the ignored charset" #~ msgstr "" #~ "Verificação automática do conjunto de caracteres ignorados impossível" #~ msgid "Cannot auto check on %s" #~ msgstr "Verificação automática em «%s» impossível" #~ msgid "" #~ "Mandatory or optional arguments to long options are mandatory or optional\n" #~ "for short options too.\n" #~ "\n" #~ " -C, --copyright display Copyright and copying conditions\n" #~ " -a, --auto-check report about some or all recoding paths, then exit\n" #~ " -l, --list[=FORMAT] list one or all known charsets\n" #~ " -k, --known=PAIRS restrict charsets according to known PAIRS list\n" #~ " --help display this help and exit\n" #~ " --version output version information and exit\n" #~ "\n" #~ "FORMAT is a word among decimal, octal, hexadecimal or full (which may be\n" #~ "abbreviated to one of `dohf'), it defaults to just the canonical name.\n" #~ "With -k, possible before charsets are listed for the given after CHARSET,\n" #~ "both being RFC1345 charsets, with PAIRS of the form " #~ "`BEF1:AFT1,BEF2:AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgstr "" #~ "Os argumentos obrigatórios ou opcionais na forma longa das opções, também " #~ "osão nas respectivas formas abreviadas.\n" #~ "\n" #~ " -C, --copyright afixar os direitos e condições de cópia\n" #~ " -a, --auto-check verificar os passos para a conversão e terminar\n" #~ " -l, --list[=FORMAT] listar os conjuntos de caracteres conhecidos\n" #~ " -k, --known=PAIRES restringir os conjuntos de caracteres com PAIRES\n" #~ " --help afixar esta ajuda e terminar\n" #~ " --version afixar a versão do programa e terminar\n" #~ "\n" #~ "FORMAT é «decimal», «octal», «hexadecimal» ou «full» (que pode abreviar\n" #~ "usando uma letra de `dohf'), se omitido, o nome canónico é assumido.\n" #~ "Com -k, são listados os caracteres possíveis para cada CHARSET de saída,\n" #~ "de acordo com o RFC1345, com PAIRES da forma «BEF1:AFT1,BEF2:AFT2,...»\n" #~ "sendo BEFs e AFTs os respectivos códigos em notação decimal.\n" #~ msgid "" #~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the " #~ "Texinfo\n" #~ "documentation. My preferred charsets are (each user has preferences):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), using backspace to apply diacritics\n" #~ " ibmpc IBM-PC 8-bit characters, with proper newlines\n" #~ " latex LaTeX coding of foreign and diacriticized characters\n" #~ " latin1 ISO Latin-1 8-bit extension of ASCII\n" #~ " texte Easy French convention for transmitting email messages\n" #~ msgstr "" #~ "A opção -l sem FORMAT nem CHARSET lista todos os conjuntos de caracteres\n" #~ "(ver manual). Alguns conjuntos de caracteres bastante comuns:\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), usando «backspace» para a acentuação\n" #~ " ibmpc IBM-PC (8-bit), com CR LF a marcar o fim das linhas\n" #~ " latex codificação LaTeX para os caracteres acentuados e outros\n" #~ " latin1 ISO Latin-1 8-bits (extensão do ASCII)\n" #~ " texte convensão «Easy French» para mensagens «email»\n" #~ msgid "" #~ "\n" #~ "Usage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n" #~ msgstr "" #~ "\n" #~ "Uso: %s [OPÇÃO]... [BEFORE]:[AFTER] [FILE]...\n" #~ msgid "" #~ " -o, --sequence=popen use popen machinery for sequencing passes\n" #~ msgstr " -o, --sequence=popen usar «popen» para sequenciar os passos\n" #~ msgid " -o, --sequence=popen same as -i (on this system)\n" #~ msgstr " -o, --sequence=popen o mesmo que -i (neste sistema)\n" #~ msgid "" #~ " -q, --quiet, --silent inhibit messages about irreversible recodings\n" #~ " -s, --strict use strict mappings, even loose characters\n" #~ " -t, --touch touch the recoded files after replacement\n" #~ " -v, --verbose explain sequence of steps and report progress\n" #~ " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" #~ "\n" #~ "If none of -i, -o and -p are given, presume -p if no FILE, else -i.\n" #~ "Each FILE is recoded over itself, destroying the original. If no\n" #~ "FILE is specified, then act as a filter and recode stdin to stdout.\n" #~ msgstr "" #~ " -q, --quiet, --silent não afixar mensagens sobre conversões " #~ "irreversíveis\n" #~ " -s, --strict conversão estrita, podendo perder alguns " #~ "caracteres\n" #~ " -t, --touch actualizar a hora dos ficheiros processados\n" #~ " -v, --verbose afixar a sequência de passos e relatar o " #~ "progresso\n" #~ " -x, --ignore=CHARSET ignorar CHARSET na escolha da sequência de passos\n" #~ "\n" #~ "Na ausência de -i, -o e -p, assumir -i se não der FILE, ou então -p.\n" #~ "Cada FILE é convertido para ele nesmo, destruindo o original. Se não " #~ "indicar\n" #~ "qualquer FILE, actuar como um filtro convertendo do «stdin» para «stdout».\n" #~ msgid "BEFORE and AFTER both default to `%s' when needed.\n" #~ msgstr "BEFORE e AFTER são ambos assumidos como «%s» quando necessário.\n" #~ msgid "%s: Recoding is not reversible" #~ msgstr "%s: Conversão irreversível" #~ msgid "Recoding is not reversible" #~ msgstr "Conversão irreversível" recode-3.6/i18n/sl.po0100644000000000000000000006224707233073513013075 0ustar rootroot# -*- mode: po; coding: iso-latin-2; -*- Slovenian msg. catalog for GNU recode. # Copyright (C) 1996 Free Software Foundation, Inc. # Primoz Peterlin , 1996. # # $Id: recode-3.5.sl.po,v 1.2 1999/12/21 16:04:38 peterlin Exp peterlin $ # msgid "" msgstr "" "Project-Id-Version: recode 3.5\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1999-12-21 17:01 MET\n" "Last-Translator: Primoz Peterlin \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8-bit\n" #: src/main.c:142 msgid "No error" msgstr "Brez napak" #: src/main.c:145 msgid "Non canonical input" msgstr "Nekanonièen vhod" #: src/main.c:148 msgid "Ambiguous output" msgstr "Dvoumen izhod" #: src/main.c:151 msgid "Untranslatable input" msgstr "Neprevedljiv vhod" #: src/main.c:154 msgid "Invalid input" msgstr "Neveljaven vhod" #: src/main.c:157 msgid "System detected problem" msgstr "Te¾ave v sistemu" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "Zloraba pretvorne knji¾nice" #: src/main.c:163 msgid "Internal recoding bug" msgstr "Notranja napaki pri pretvorbi" # POZOR!!! # Tole bi nujno moral dobiti v roke pravnik... #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Ta program je prosta programska oprema; lahko ga redistribuirate in/ali\n" "spreminjate po pogojih, doloèenih v ,,GNU General Public License``, izdani\n" "pri Free Software Foundation; 2. izdaja (ali novej¹a, èe razpolagate z " "njo).\n" "\n" "Ta program se distribuira v upanju, da je uporaben, vendar BREZ " "KAKR©NEGAKOLI\n" "JAMSTVA; vkljuèno z impliciranim jamstvom prodajnosti ali uporabnosti za\n" "izbrani namen. Za podrobnosti si oglejte ,,GNU General Public License``.\n" "\n" "Izvod ,,GNU General Public License`` bi moral biti prilo¾en temu programu;\n" "èe ni, pi¹ite Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n" "Boston, MA 02111-1307, USA.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Poskusite ,%s %s` za dodatne informacije.\n" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "Prosti ,recode` pretvarja datoteke med razliènimi kodnimi nabori in " "preèrkovanji.\n" #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Uporaba: %s [IZBIRA]... [ [NABOR] | ZAHTEVA [DATOTEKA]... ]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Èe je pri dolgi obliki izbire argument naveden kot obvezen, velja\n" "obveza tudi za kratko obliko. Podobno tudi za neobvezne argumente.\n" #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Seznami:\n" " -l, --list[=OBLIKA] izpi¹i en ali vse kodirane nabore znakov\n" " -k, --known=PARI izpi¹i nabore, ki ustrezajo podanim PAROM " "pretvorb\n" " -h, --header[=[JEZIK/]IME] izpi¹i pretvorno tabelo z danim IMENOM v prog. " "JEZIKU\n" " -F, --freeze-tables izpi¹i modul v C z vsemi pretvornimi tabelami\n" " -T, --find-subsets poroèaj o vseh naborih, ki so podmno¾ica " "drugih\n" " -C, --copyright izpi¹i dovoljenje za uporabo in raz¹irjanje\n" " --help ta navodila\n" " --version razlièica programa\n" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "Naèini dela:\n" " -v, --verbose med potekom razlagaj korake in komentiraj " "napredek\n" " -q, --quiet, --silent brez opozoril o neobrnljivih pretvorbah\n" " -f, --force pretvorbo izvedi, èetudi ni obrnljiva\n" " -t, --touch pretvorjena datoteka naj nosi datum pretvorbe,\n" " ne nastanka\n" " -i, --sequence=files uporabi vmesne datoteke za zaporedne prehode\n" " --sequence=memory med prehodi hrani besedilo v pomnilniku\n" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr " -p, --sequence=pipe uporabi cevovode za nizanje prehodov\n" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe isto kot -i (na tem sistemu)\n" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Natanènej¹e nastavljanje:\n" " -s, --strict uporabi strogo pretvorbo, celo na raèun izgube " "znakov\n" " -d, --diacritics pretvori samo pregla¹ene in podobne znake za " "HTML/LaTeX\n" " -S, --source[=JEZIK] omeji pretvorbe na nize in komentarje, kot v " "JEZIKU\n" " -c, --colons nadomesti dierezo z dvopièjem, ne z dvojnim " "narekovajem\n" " -g, --graphics semigrafiène znake s PC pribl. nadomestimo z znaki " "ASCII\n" " -x, --ignore=NABOR pri pretvorbi se izogni navedenemu vmesnemu NABORU\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Izbira -l brez podane OBLIKE ali NABORA izpi¹e seznam vseh znanih kodnih " "naborov\n" "in preèrkovalnih shem. OBLIKA je lahko ,decimal` (deseti¹ka), ,octal` " "(osmi¹ka),\n" ",hexadecimal` (¹estnajsti¹ka) ali ,full` (polna), ali ena od èrk ,dohf`.\n" #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Èe ni doloèena spremenljivka DEFAULT_CHARSET, je privzeti NABOR ,%s`.\n" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Pri izbiri -k se izpi¹ejo vsi mo¾ni startni nabori za podani ciljni nabor.\n" "Startni in ciljni nabor sta kodirana nabora znakov. PARI naj imajo obliko\n" ",,START1:CILJ1,START2:CILJ2...``, kjer so STARTn in CILJn deseti¹ke kode \n" "znakov v startnem in ciljnem kodnem naboru.\n" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "JEZIK je lahko ,c`, ,perl` ali ,po`; privzeto je ,c`.\n" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "ZAHTEVEK ima obliko PODZAHTEVEK[,PODZAHTEVEK]...; PODZAHTEVEK ima obliko\n" "KODIRANJE[,KODIRANJE]...; KODIRANJE ima obliko [NABOR][/[SHEMA]]. ZAHTEVEK\n" "ima pogosto obliko PREJ..POTEM, kjer sta PREJ in POTEM kodirana nabora " "znakov.\n" "Izpu¹èeni NABOR pomeni privzetega; izpu¹èena [/SHEMA] pomeni privzeto\n" "preèrkovalno shemo za dani NABOR. Po¹evnica / brez sheme pomeni brez " "preèrkovalne\n" "sheme. Podrobnosti so v priroèniku.\n" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Èe nista podana niti -i niti -p, se uporabi -p, kadar ni podana DATOTEKA, \n" "sicer pa -i. Pretvorba vsake DATOTEKE se zapi¹e prek izvorne razlièice. Èe\n" "DATOTEKA ni podana, recode deluje kot filter med standardnim vhodom in " "izhodom.\n" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Sporoèila o napakah javite na .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Avtor Franc,ois Pinard .\n" #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "To je prost program; pogoji, pod katerimi ga lahko uporabljate, " "razmno¾ujete\n" "in raz¹irjate so navedeni v izvorni kodi. Za program ni NOBENEGA jamstva,\n" "niti jamstev USTREZNOSTI ZA PRODAJO ali PRIMERNOSTI ZA UPORABO.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Neodobravana skladnja: prosimo, uporabljajte ,%s`" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Pretvarjamo %s..." #: src/main.c:913 msgid " done\n" msgstr " opravljeno\n" #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " neuspe¹no: %s v %s..%s\n" #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s neuspe¹no: %s v %s..%s" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s v %s..%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Nabor %s ¾e obstaja in ni %s" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "Izpis ,%s' ni mogoè, imen za ta nabor ni na voljo" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "des osm Hex UCS2 Mne %s\n" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Imena za ,%s` niso na voljo" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Veè kot ena preèrkovalna shema uvedena za ,%s`" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Veè kot ena preèrkovalna shema preklicana za ,%s`" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Virtualni pomnilnik porabljen" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Kodi %3d in %3d se obe preslikata v %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Noben znak se ne preslika v %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Dana tabela eden-v-enega ni obrnljiva" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Sledi diagnostika za pretvorbo iz ,%s' v ,%s'" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par ¹t. %d: <%3d, %3d> je v nesoglasju z <%3d, %3d>" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Iz mno¾ice znanih parov ni mogoèe dokonèati tabele" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Pretvorba je trivialna, nevredna tabele" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "Pretvorba je prezapletena za tabelo" #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sPretvorna tabela mehanièno generirana s prostim ,%s` %s" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sza zaporedje %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "Tabele ni" #: src/request.c:34 msgid "reversible" msgstr "obrnljivo" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s v %s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "bajt" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "UCS2" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "spremenljivo" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Nedosegljivo*" #: src/request.c:113 msgid "*mere copy*" msgstr "*zgolj prepis*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "Virtualni pomnilnik porabljen!" #: src/request.c:265 msgid "Step initialisation failed" msgstr "Inicializacija koraka neuspe¹na" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "Inicializacija koraka neuspe¹na (nepredelane izbire)" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Zahtevek: %s\n" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Skrèeno v: %s\n" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Neprepoznano ime preèrkovalne sheme ,%s`" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Pretvorba iz ,%s` v ,%s` ni izvedljiva" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "V zahtevku prièakujemo ,..`" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Èakalni status procesa potomca je 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Opis\n" "\n" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "NABOR nima privzete vrednosti; doloèite spremenljivko okolja " #~ "DEFAULT_CHARSET.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Dvoumno zaporedje ,%s`" #~ msgid "Unknown sequence `%s'" #~ msgstr "Neznano zaporedje ,%s`" #~ msgid "Ambiguous language `%s'" #~ msgstr "Dvoumen jezik ,%s`" #~ msgid "Unknown language `%s'" #~ msgstr "Neznan jezik ,%s`" #~ msgid "Ambiguous format `%s'" #~ msgstr "Dvoumen format ,%s`" #~ msgid "Unknown format `%s'" #~ msgstr "Neznan format ,%s`" #~ msgid "Erroneous request `%s'" #~ msgstr "Napaèen zahtevek ,%s`" #~ msgid " Each input char transforms into an output string,\n" #~ msgstr " Vsak vhodni znak se preslika v niz znakov,\n" #~ msgid " Each input char transforms into an output string.\n" #~ msgstr " Vsak vhodni znak se preslika v niz znakov.\n" #~ msgid " Programming is needed to handle multichar input.\n" #~ msgstr " Nabori z veè kot 8 biti zahtevajo programiranje.\n" #~ msgid " The recoding might not be reversible.\n" #~ msgstr " Pretvorba morda ni obrnjiva.\n" #~ msgid " The recoding should be reversible.\n" #~ msgstr " Pretvorba bi morala biti obrnljiva.\n" #~ msgid " programming is needed to handle multichar input.\n" #~ msgstr " nabori z veè kot 8 biti zahtevajo programiranje.\n" #~ msgid " UNACHIEVABLE\n" #~ msgstr " NEIZVEDLJIVO\n" #~ msgid "%s: Recoding is not reversible" #~ msgstr "%s: Pretvorba ni obrnljiva" #~ msgid ", %d saved by merging" #~ msgstr ", %d znakov prihranjenih pri zdru¾evanju" #~ msgid "/* Conversion table from `%s' charset to `%s' charset.\n" #~ msgstr "/* Tabela za pretvorbo iz nabora ,%s' v nabor ,%s'.\n" #~ msgid "Cannot auto check on %s" #~ msgstr "Nabora %s ni mogoèe avtomatièno preveriti" #~ msgid "Cannot auto check the ignored charset" #~ msgstr "Izpu¹èenega nabora ni mogoèe avtomatièno preveriti" #~ msgid "Currently, -s is ignored when -g is selected" #~ msgstr "Za zdaj je izbira -s ignorirana, kadar je izbrano -g" #~ msgid "Hash stats: %d names using %d buckets out of %d\n" #~ msgstr "" #~ "Statistika za razpr¹itveno tabelo: %d imen porabilo %d od %d ko¹ev\n" #~ msgid "Internal error - strategy undecided" #~ msgstr "Interna napaka - neodloèen o strategiji" #~ msgid "MAX_CHARSETS is too small" #~ msgstr "MAX_CHARSETS premajhno" #~ msgid "MAX_SEQUENCE is too small" #~ msgstr "MAX_SEQUENCE premajhno" #~ msgid "MAX_SINGLE_STEPS is too small" #~ msgstr "MAX_SINGLE_STEPS premajhno" #~ msgid "Mere copy for the trivial recoding\n" #~ msgstr "Zgolj kopija za trivialno pretvorbo\n" #~ msgid "ONE to SAME" #~ msgstr "EDEN v ISTEGA" #~ msgid "Recoding is not reversible" #~ msgstr "Pretvorba ni obrnljiva" #~ msgid "Simplified to: " #~ msgstr "Poenostavljeno: " #~ msgid "UNACHIEVABLE recoding!\n" #~ msgstr "NEIZVEDLJIVA pretvorba!\n" #~ msgid "You may not explicitly recode from RFC 1345" #~ msgstr "Eksplicitna pretvorba iz RFC 1345 ni izvedljiva" #~ msgid " -o, --sequence=popen same as -i (on this system)\n" #~ msgstr " -o, --sequence=popen isto kot -I (na tem sistemu)\n" #~ msgid "" #~ " -o, --sequence=popen use popen machinery for sequencing passes\n" #~ msgstr " -o, --sequence=popen uporabi mehanizem ,popen'\n" #~ msgid "" #~ " -q, --quiet, --silent inhibit messages about irreversible recodings\n" #~ " -s, --strict use strict mappings, even loose characters\n" #~ " -t, --touch touch the recoded files after replacement\n" #~ " -v, --verbose explain sequence of steps and report progress\n" #~ " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" #~ "\n" #~ "If none of -i, -o and -p are given, presume -p if no FILE, else -i.\n" #~ "Each FILE is recoded over itself, destroying the original. If no\n" #~ "FILE is specified, then act as a filter and recode stdin to stdout.\n" #~ msgstr "" #~ " -q, --quiet, --silent brez sporoèil o neobrnljivih pretvorbah\n" #~ " -s, --strict striktna pretvorba, tudi na ¹kodo izgubljenih " #~ "znakov\n" #~ " -t, --touch konèna datoteka naj nosi datum pretvorbe, ne " #~ "nastanka\n" #~ " -v, --verbose z razlago poteka pretvorbe\n" #~ " -x, --ignore=NABOR izpusti NABOR pri izbiri poti pretvorbe\n" #~ "\n" #~ "Èe ni podan -i, -o, ali -p, se privzame -p, kadar ni podana DATOTEKA, sicer " #~ "-i.\n" #~ "Vsaka DATOTEKA se pretvori èez samo sebe in unièi izvirnik. Èe DATOTEKA\n" #~ "ni podana, deluje kot filter in pretvarja podatke z vhoda na izhod.\n" #~ msgid "BEFORE and AFTER both default to `%s' when needed.\n" #~ msgstr "Èe nabor PREJ ali POTEM ni podan, se nadomesti z ,%s'\n" # POZOR #~ msgid "" #~ "Mandatory or optional arguments to long options are mandatory or optional\n" #~ "for short options too.\n" #~ "\n" #~ " -C, --copyright display Copyright and copying conditions\n" #~ " -a, --auto-check report about some or all recoding paths, then exit\n" #~ " -l, --list[=FORMAT] list one or all known charsets\n" #~ " -k, --known=PAIRS restrict charsets according to known PAIRS list\n" #~ " --help display this help and exit\n" #~ " --version output version information and exit\n" #~ "\n" #~ "FORMAT is a word among decimal, octal, hexadecimal or full (which may be\n" #~ "abbreviated to one of `dohf'), it defaults to just the canonical name.\n" #~ "With -k, possible before charsets are listed for the given after CHARSET,\n" #~ "both being RFC1345 charsets, with PAIRS of the form " #~ "`BEF1:AFT1,BEF2:AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgstr "" #~ "Argumenti, ki so obvezni za dolge oblike izbir so obvezni tudi za kratke " #~ "oblike,\n" #~ "in enako velja za neobvezne argumente.\n" #~ "\n" #~ " -C, --copyright obvestilo avtorskih pravicah\n" #~ " -a, --auto-check poroèilo o mo¾nih pretvorbah\n" #~ " -l, --list[=FORMAT] seznam znanih naborov, ali izpis nabora znakov\n" #~ " -k, --known=PARI omejitev naborov na seznam znanih PAROV\n" #~ " --help ta navodila\n" #~ " --version verzija programa\n" #~ "\n" #~ "FORMAT izpisa je eden od naslednjih: decimal, octal, hexadecimal ali full " #~ "(mo¾na\n" #~ "je okraj¹ava na prvo èrko: dohf), privzeta izbira je samo kanonièno ime " #~ "nabora.\n" #~ "With -k, possible before charsets are listed for the given after CHARSET,\n" #~ "both being RFC1345 charsets, with PAIRS of the form " #~ "`BEF1:AFT1,BEF2:AFT2,...\n" #~ "and BEFs and AFTs being codes. All codes are given as decimal numbers.\n" #~ msgid "" #~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the " #~ "Texinfo\n" #~ "documentation. My preferred charsets are (each user has preferences):\n" #~ "\n" #~ " ascii-bs ASCII (7-bit), using backspace to apply diacritics\n" #~ " ibmpc IBM-PC 8-bit characters, with proper newlines\n" #~ " latex LaTeX coding of foreign and diacriticized characters\n" #~ " latin1 ISO Latin-1 8-bit extension of ASCII\n" #~ " texte Easy French convention for transmitting email messages\n" #~ msgstr "" #~ "Izbira -l brez podanih FORMAT ali NABOR dá seznam vseh naborov, oglejte si " #~ "¹e\n" #~ "dokumentacijo v Texinfo. Moji priljubljeni nabori (vsak uporabnik ima " #~ "svoje):\n" #~ "\n" #~ " ascii-bs 7-bitni ASCII, z uporabo Backspace za tisk diakritiènih znakov\n" #~ " ibmpc 8-bitni nabor IBM-PC, zakljuèek vrstice CR LF\n" #~ " latex LaTeX-ov zapis diakritiènih znakov\n" #~ " latin1 ISO Latin-1 8-bitna raz¹iritev ASCII\n" #~ " texte enostavna francoska konvencija za prenos elektronske po¹te\n" #~ msgid "" #~ "\n" #~ " -c, --colons use colons instead of double quotes for diaeresis\n" #~ " -d, --diacritics limit conversion to diacritics or alike for LaTeX\n" #~ " -f, --force force recodings even if they are not reversible\n" #~ " (BEWARE: in this version, -f is always selected)\n" #~ " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" #~ " -h, --header[=NAME] write C code with table NAME on stdout, then exit\n" #~ " -i, --sequence=files use intermediate files for sequencing passes\n" #~ msgstr "" #~ "\n" #~ " -c, --colons dvopièje namesto narekovajev za preglas\n" #~ " -d, --diacritics limit conversion to diacritics or alike for LaTeX\n" #~ " -f, --force force recodings even if they are not reversible\n" #~ " (BEWARE: in this version, -f is always selected)\n" #~ " -g, --graphics grafiène znake IBMPC aproksimiraj z ASCII\n" #~ " -h, --header[=NAME] write C code with table NAME on stdout, then exit\n" #~ " -i, --sequence=files use intermediate files for sequencing passes\n" #~ msgid "" #~ "\n" #~ "Usage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n" #~ msgstr "" #~ "\n" #~ "Uporaba: %s [IZBIRA]... [PREJ]:[POTEM] [DATOTEKA]...\n" #~ msgid "many to many" #~ msgstr "veè v veè" #~ msgid "many to one" #~ msgstr "veè v enega" #~ msgid "one to many" #~ msgstr "eden v veè" #~ msgid "one to one" #~ msgstr "eden v enega" #~ msgid "steps: %d" #~ msgstr "korakov: %d" recode-3.6/i18n/sv.po0100644000000000000000000004172307233073513013103 0ustar rootroot# Swedish messages for recode # Copyright © 1996, 1998 Free Software Foundation, Inc. # Jan Djärv , 1996, 1998. # $Revision: 1.14 $ # msgid "" msgstr "" "Project-Id-Version: recode 3.5\n" "POT-Creation-Date: 2001-01-02 22:35+0100\n" "PO-Revision-Date: 1999-10-16 13:42 +02:00\n" "Last-Translator: Jan Djärv \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: src/main.c:142 msgid "No error" msgstr "Inget fel" #: src/main.c:145 msgid "Non canonical input" msgstr "Indata ej kanonisk" #: src/main.c:148 msgid "Ambiguous output" msgstr "Tvetydig utdata" #: src/main.c:151 msgid "Untranslatable input" msgstr "Oöversättbar indata" #: src/main.c:154 msgid "Invalid input" msgstr "Felaktig indata" #: src/main.c:157 msgid "System detected problem" msgstr "Systemproblem upptäcktes" #: src/main.c:160 msgid "Misuse of recoding library" msgstr "Felaktig användning av omkodningsbibliotek" #: src/main.c:163 msgid "Internal recoding bug" msgstr "Internt omkodningsfel" #: src/main.c:208 msgid "" "This program is free software; you can redistribute it and/or modify\n" "it under the terms of the GNU General Public License as published by\n" "the Free Software Foundation; either version 2, or (at your option)\n" "any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" "GNU General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public License\n" "along with this program; if not, write to the Free Software Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" msgstr "" "Följande text är en informell översättning som enbart tillhandahålls i\n" "informativt syfte. För alla juridiska tolkningar gäller den engelska\n" "originaltexten.\n" "\n" "Detta program är fri programvara. Du kan distribuera den och/eller " "modifiera\n" "den under villkoren i GNU General Public License, publicerad av\n" "Free Software Foundation, antingen version 2 eller (om du så vill)\n" "någon senare version.\n" "\n" "Detta program distribueras i hopp om att det ska vara användbart,\n" "men UTAN NÅGON SOM HELST GARANTI, även utan den underförstådda garantin\n" "om SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General\n" "Public License för ytterligare information.\n" "\n" "Du bör ha fått en kopia av GNU General Public License\n" "tillsammans med detta program. Om inte, skriv till Free Software " "Foundation,\n" "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n" #: src/main.c:233 #, c-format msgid "Try `%s %s' for more information.\n" msgstr "Försök med \"%s %s\" för mer information\n" #: src/main.c:237 msgid "" "Free `recode' converts files between various character sets and surfaces.\n" msgstr "" "Fria \"recode\" konverterar filer mellan olika teckenuppsättningar och ytor\n" #: src/main.c:241 #, c-format msgid "" "\n" "Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n" msgstr "" "\n" "Användning: %s [FLAGGA]... [ [TECKENUPPSÄTTNING] | BEGÄRAN [FIL]...]\n" #: src/main.c:244 msgid "" "\n" "If a long option shows an argument as mandatory, then it is mandatory\n" "for the equivalent short option also. Similarly for optional arguments.\n" msgstr "" "\n" "Om en lång flagga har ett obligatoriskt argument så är argumentet även\n" "obligatoriskt för motsvarade korta flagga. Motsvarande för valfria " "argument.\n" #: src/main.c:250 #, fuzzy msgid "" "\n" "Listings:\n" " -l, --list[=FORMAT] list one or all known charsets and aliases\n" " -k, --known=PAIRS restrict charsets according to known PAIRS " "list\n" " -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n" " -F, --freeze-tables write out a C module holding all tables\n" " -T, --find-subsets report all charsets being subset of others\n" " -C, --copyright display Copyright and copying conditions\n" " --help display this help and exit\n" " --version output version information and exit\n" msgstr "" "\n" "Listningar:\n" " -l, --list[=FORMAT] visa en eller alla kända teckenuppsättningar\n" " -k, --known=PAR begränsa teckenuppsättningar till de i PAR " "listan\n" " -h, --header[=[LN/]NAMN] skriv tabell NAMN för LN till standard ut\n" " och avsluta.\n" " -F, --freeze-tables skriv ut en C modul med alla tabeller\n" " -T, --find-subsets skriv ut teckenuppsättningar som är delmängder\n" " av andra\n" " -C, --copyright visa copyrightinformation och " "kopieringsvillkor\n" " --help visa denna hjälptext och avsluta\n" " --version visa versionsinformation och avsluta\n" #: src/main.c:263 msgid "" "\n" "Operation modes:\n" " -v, --verbose explain sequence of steps and report progress\n" " -q, --quiet, --silent inhibit messages about irreversible recodings\n" " -f, --force force recodings even when not reversible\n" " -t, --touch touch the recoded files after replacement\n" " -i, --sequence=files use intermediate files for sequencing passes\n" " --sequence=memory use memory buffers for sequencing passes\n" msgstr "" "\n" "Exekveringsalternativ:\n" " -v, --verbose förklara delsteg och rapportera framsteg\n" " -q, --quiet, --silent undertryck meddelanden om irreversibla " "omkodningar\n" " -f, --force gör omkodning även när den är irreversibel\n" " -t, --touch gör \"touch\" på filer som omkodas över sig " "själva\n" " -i, --sequence=files använd temporärfiler mellan delsteg\n" " --sequence=memory använd minnesbuffertar mellan delsteg\n" #: src/main.c:275 msgid " -p, --sequence=pipe use pipe machinery for sequencing passes\n" msgstr " -p, --sequence=pipe använd rör mellan delsteg\n" #: src/main.c:280 msgid " -p, --sequence=pipe same as -i (on this system)\n" msgstr " -p, --sequence=pipe samma sak som -i (på detta system)\n" #: src/main.c:285 msgid "" "\n" "Fine tuning:\n" " -s, --strict use strict mappings, even loose characters\n" " -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n" " -S, --source[=LN] limit recoding to strings and comments as for LN\n" " -c, --colons use colons instead of double quotes for diaeresis\n" " -g, --graphics approximate IBMPC rulers by ASCII graphics\n" " -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n" msgstr "" "\n" "Finjustering:\n" " -s, --strict använd strikt omkodning, tillåt teckenförluster\n" " -d, --diacritics omkoda endast diakritiska tecken eller motsvarande\n" " till HTML/LaTeX\n" " -S, --source[=LN] begränsa omkodning till strängar och kommentarer\n" " som för LN\n" " -c, --colons använd kolon istället för \" för trematecken\n" " -g, --graphics approximera linjer i IBMPC med ASCII grafik\n" " -x, --ignore=TECKENUPPSÄTTNING\n" " ignorera TECKENUPPSÄTTNING när omkodningsväg väljs\n" #: src/main.c:296 msgid "" "\n" "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n" "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n" msgstr "" "\n" "Flagga -l utan FORMAT och TECKENUPPSÄTTNING visar alla tillgängliga\n" "teckenuppsättningar och ytor. FORMAT är \"decimal\", \"octal\", " "\"hexadecimal\"\n" "eller \"full\" (eller en av \"dohf\").\n" #: src/main.c:302 #, fuzzy msgid "" "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the " "locale\n" "dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n" msgstr "" "Om miljövariabeln DEFAULT_CHARSET inte är satt blir standardvärdet för\n" "TECKENUPPSÄTTNING \"%s\"\n" #: src/main.c:307 msgid "" "With -k, possible before charsets are listed for the given after CHARSET,\n" "both being tabular charsets, with PAIRS of the form " "`BEF1:AFT1,BEF2:AFT2,...'\n" "and BEFs and AFTs being codes are given as decimal numbers.\n" msgstr "" "Med -k, möjliga startuppsättningar visas för den givna slutuppsättningen,\n" "där båda teckenuppsättningar är på tabellform. PAR har formatet\n" "\"START1:SLUT1,START2:SLUT2,...\" och START... och SLUT... är koder\n" "som anges med decimala tal.\n" #: src/main.c:312 msgid "" "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n" msgstr "" "LN är ett språk, det kan vara \"c\", \"perl\" eller \"po\"; \"c\" är " "standardvärde.\n" #: src/main.c:315 msgid "" "\n" "REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is " "ENCODING[..ENCODING]...\n" "ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like " "BEFORE..AFTER,\n" "with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n" "charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a " "/\n" "with an empty surface name means no surfaces at all. See the manual.\n" msgstr "" "\n" "BEGÄRAN är DELBEGÄRAN[,DELBEGÄRAN]..., DELBEGÄRAN är KODNING[..KODNING]...\n" "KODNING är [TECKENUPPSÄTTNING][/[YTA]].... BEGÄRAN ser ofta ut som " "START..SLUT,\n" "där START och SLUT är teckenuppsättningar. Ett utelämnat TECKENUPPSÄTTNING\n" "innebär den normala teckenuppsättningen,\n" "en utelämnad [/YTA]... innebär den normala ytan för TECKENUPPSÄTTNING.\n" "Ett / utan ytnamn innebär ingen yta alls. Se manualen för detaljer.\n" #: src/main.c:323 msgid "" "\n" "If none of -i and -p are given, presume -p if no FILE, else -i.\n" "Each FILE is recoded over itself, destroying the original. If no\n" "FILE is specified, then act as a filter and recode stdin to stdout.\n" msgstr "" "\n" "Om ingen av -i eller -p är given så antas -p on ingen FIL är given,\n" "annars -i. Varje fil omkodas över sig själv och förstör originalet.\n" "Om ingen FIL anges så blir beteendet ett filter som omkodar standard in\n" "till standard ut.\n" #: src/main.c:329 msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" "Rapportera fel till .\n" "Rapportera fel på översättningen till .\n" #: src/main.c:430 #, c-format msgid "Sequence `%s' is ambiguous" msgstr "" #: src/main.c:434 #, c-format msgid "Sequence `%s' is unknown" msgstr "" #: src/main.c:464 src/main.c:522 #, c-format msgid "Language `%s' is ambiguous" msgstr "" #. -1 #: src/main.c:468 src/main.c:526 #, c-format msgid "Language `%s' is unknown" msgstr "" #: src/main.c:560 #, c-format msgid "Format `%s' is ambiguous" msgstr "" #: src/main.c:564 #, c-format msgid "Format `%s' is unknown" msgstr "" #: src/main.c:621 #, fuzzy msgid "Written by Franc,ois Pinard .\n" msgstr "" "\n" "Skriven av François Pinard .\n" #: src/main.c:624 msgid "" "\n" "Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n" msgstr "" "\n" "Copyright © 1990, 92, 93, 94, 96, 97, 1999 Free Software Foundation, Inc.\n" #: src/main.c:628 msgid "" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" "Detta är fri programvara; se källkoden för kopieringsvillkor. Det finns\n" "INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT\n" "ÄNDAMÅL.\n" #: src/main.c:669 #, c-format msgid "Symbol `%s' is unknown" msgstr "" #: src/main.c:709 src/main.c:723 #, c-format msgid "Charset `%s' is unknown or ambiguous" msgstr "" #: src/main.c:754 msgid "Required argument is missing" msgstr "" #: src/main.c:797 #, fuzzy, c-format msgid "Syntax is deprecated, please prefer `%s'" msgstr "Föråldrad syntax, använd hellre \"%s\"" #: src/main.c:803 #, c-format msgid "Request `%s' is erroneous" msgstr "" #: src/main.c:903 #, c-format msgid "Recoding %s..." msgstr "Omkodar %s..." #: src/main.c:913 msgid " done\n" msgstr " klart\n" #: src/main.c:954 #, fuzzy, c-format msgid " failed: %s in step `%s..%s'\n" msgstr " misslyckades: %s i %s..%s\n" #: src/main.c:961 #, fuzzy, c-format msgid "%s failed: %s in step `%s..%s'" msgstr "%s misslyckades: %s i %s..%s" #: src/main.c:984 #, fuzzy, c-format msgid "%s in step `%s..%s'" msgstr "%s i %s..%s" #: src/names.c:335 #, c-format msgid "Charset %s already exists and is not %s" msgstr "Teckenuppsättning %s finns och är inte %s" #: src/names.c:831 #, c-format msgid "Cannot list `%s', no names available for this charset" msgstr "" "Kan inte visa \"%s\", inga namn tillgängliga för denna teckenuppsättning" #. code counter #. expected value for code counter #. insert a while line before printing #. Print the long table according to explode data. #: src/names.c:984 src/names.c:1030 #, c-format msgid "Dec Oct Hex UCS2 Mne %s\n" msgstr "dec okt hex UCS2 mne %s\n" #: src/names.c:1049 #, c-format msgid "Sorry, no names available for `%s'" msgstr "Ledsen, men det finns inga namn tillgängliga för \"%s\"" #: src/outer.c:125 #, c-format msgid "Resurfacer set more than once for `%s'" msgstr "Ytkodning satt mer än en gång för \"%s\"" #: src/outer.c:133 #, c-format msgid "Unsurfacer set more than once for `%s'" msgstr "Ytavkodning satt mer än en gång för \"%s\"" #: src/recode.c:115 src/recode.c:127 msgid "Virtual memory exhausted" msgstr "Virtuellt minne slut" #: src/recode.c:155 #, c-format, ycp-format msgid "Codes %3d and %3d both recode to %3d" msgstr "Teckenkoderna %3d och %3d omkodas båda till %3d" #: src/recode.c:169 #, c-format, ycp-format msgid "No character recodes to %3d" msgstr "Inget tecken omkodas till %3d" #: src/recode.c:170 msgid "Cannot invert given one-to-one table" msgstr "Kan inte invertera en given ett-till-ett tabell" #: src/recode.c:224 src/recode.c:236 #, c-format msgid "Following diagnostics for `%s' to `%s'" msgstr "Följande fel är för \"%s\" till \"%s\"" #: src/recode.c:229 src/recode.c:241 #, c-format msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>" msgstr "Par nr. %d: <%3d, %3d> är i konflikt med <%3d, %3d>" #: src/recode.c:272 msgid "Cannot complete table from set of known pairs" msgstr "Kan inte göra en tabell från mängden av kända par" #: src/recode.c:497 msgid "Identity recoding, not worth a table" msgstr "Ingen omkodning behövs, den är inte värd en tabell" #: src/recode.c:504 msgid "Recoding is too complex for a mere table" msgstr "Omkodning är för komplex för en enkel tabell" #. Print the header of the header file. #: src/recode.c:536 #, c-format msgid "%sConversion table generated mechanically by Free `%s' %s" msgstr "%sKonverteringstabell automatgenererad av Fri \"%s\" %s" #: src/recode.c:538 #, c-format msgid "%sfor sequence %s.%s" msgstr "%sför sekvens %s.%s" #: src/recode.c:744 msgid "No table to print" msgstr "Ingen tabell att skriva ut" #: src/request.c:34 msgid "reversible" msgstr "reversibel" #: src/request.c:36 #, c-format msgid "%s to %s" msgstr "%s till %s" #: src/request.c:37 src/request.c:39 msgid "byte" msgstr "byte" #: src/request.c:38 src/request.c:40 msgid "ucs2" msgstr "usc2" #: src/request.c:38 src/request.c:40 msgid "variable" msgstr "variabel" #: src/request.c:111 msgid "*Unachievable*" msgstr "*Omöjligt*" #: src/request.c:113 msgid "*mere copy*" msgstr "*endast kopiering*" #: src/request.c:246 msgid "Virtual memory exhausted!" msgstr "Virtuellt minne slut" #: src/request.c:265 msgid "Step initialisation failed" msgstr "Steginitiering misslyckades" #: src/request.c:272 msgid "Step initialisation failed (unprocessed options)" msgstr "Steginitiering misslyckades (obearbetade flaggor)" #: src/request.c:568 #, c-format msgid "Request: %s\n" msgstr "Begäran: %s\n" #: src/request.c:720 #, c-format msgid "Shrunk to: %s\n" msgstr "Krympte till: %s\n" #: src/request.c:823 src/request.c:932 #, c-format msgid "Unrecognised surface name `%s'" msgstr "Okänt ytnamn: \"%s\"" #: src/request.c:903 #, c-format msgid "No way to recode from `%s' to `%s'" msgstr "Omöjligt koda om från \"%s\" till \"%s\"" #: src/request.c:1013 msgid "Expecting `..' in request" msgstr "Förväntar \"..\" i begäran" #: src/task.c:826 src/task.c:1002 #, c-format msgid "Child process wait status is 0x%0.2x" msgstr "Barnprocess slutstatus är 0x%0.2x" #: src/testdump.c:298 msgid "" "UCS2 Mne Description\n" "\n" msgstr "" "UCS2 Mne Beskrivning\n" "\n" #~ msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n" #~ msgstr "" #~ "TECKENUPPSÄTTNING har inget standardvärde, sätt miljövariabeln " #~ "DEFAULT_CHARSET.\n" #~ msgid "Ambiguous sequence `%s'" #~ msgstr "Tvetydig sekvens \"%s\"" #~ msgid "Unknown sequence `%s'" #~ msgstr "Okänd sekvens \"%s\"" #~ msgid "Ambiguous language `%s'" #~ msgstr "Tvetydigt språk \"%s\"" #~ msgid "Unknown language `%s'" #~ msgstr "Okänt språk \"%s\"" #~ msgid "Ambiguous format `%s'" #~ msgstr "Tvetydigt format \"%s\"" #~ msgid "Unknown format `%s'" #~ msgstr "Okänt format \"%s\"" #~ msgid "Erroneous request `%s'" #~ msgstr "Felaktig begäran \"%s\"" recode-3.6/i18n/da.mo0100644000000000000000000002537407233073526013044 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ Ôßä3íK!îm¡\æþéåÆÏš–41 =f 9¤ CÞ "! +!<5!r! ˆ! ”! !6²!(é!>"(Q"&z"/¡"Ñ"ï"" #H0#.y#¨#¾#OÏ#$>$ \$g$&$¦$3»$ ï$/ý$-%)?%i%+~%ª%*¾%é%™&&#;)_)z)()¹)Ð)ë)Ö*Þ* ã*î*ó*(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.5 POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 2000-05-31 22:02+02:00 Last-Translator: Niels Kristian Bech Jensen Language-Team: Danish MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Ophavsret (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fintuning: -s, --strict brug kun nøjagtige tegnsæt selvom der mistes tegn -d, --diacritics oversæt kun diakritiske/specielle tegn i HTML/LaTeX -S, --source[=SPR] begræns omodning til strenge og kommentarer som for SPR -c, --colons brug koloner i stedet for anførselstegn som trema (¨) -g, --graphics tilnærm IBMPC linie- og kassetegn med ASCII grafik -x, --ignore=TEGNSÆT ignorér TEGNSÆT når en omkodningssti vælges Hvis et langt tilvalg viser et argument som obligatorisk, så er det også obligatorisk for det tilsvarende korte tilvalg. På samme måde for valgfri argumenter. Hvis ingen af -i eller -p er valgt, bruges -p hvis ingen FIL, ellers -i. Hver FIL bliver oversat oveni sig selv og overskriver originalen. Hvis ingen FIL er valgt, er programmet et filter, der oversætter fra std-ind til std-ud. Operationsmåder: -v, --verbose vis rækkefølgen af gennemløb, og rapportér fremskridt -q, --quiet, --silent udelad meddelelser om irreversible oversættelser -f, --force gennemtving oversættelser, selv hvis de ikke er reversible -t, --touch giv den oversatte fil system-urets tid -i, --sequence=files brug midlertidige filer mellem gennemløbene --sequence=memory brug hukommelsesbuffere mellem gennemløbene Tilvalg -l uden FORMAT eller TEGNSÆT viser en liste over alle tegnsæt og pakninger. FORMAT er et af ordene 'decimal', 'octal', 'hexadecimal' eller 'full' (eller et af bogstaverne d, o, h eller f). FORESPØRGSEL er UNDERFORESPØRGSEL[,UNDERFORESPØRGSEL]...; UNDERFORESPØRGSEL er INDKODNING[..INDKODNING]...; INDKODNING er [TEGNSÆT][/[PAKNING]]... FORESPØRGSEL har ofte formen FØR..EFTER, hvor FØR og EFTER er tegnsæt. Hvis et TEGNSÆT udelades, anvendes det normale tegnsæt; hvis [/PAKNING]... udelades, anvendes den normale pakning af TEGNSÆT; / uden navnet på en pakning betyder ingen pakning. Se manualen. Rapportér fejl til . Brug: %s [TILVALG]... [ [TEGNSÆT] | FORESPØRGSEL [FIL]... ] -p, --sequence=pipe samme som -i (på dette system) -p, --sequence=pipe brug pibe-mekanismen mellem gennemløbene færdig %s til %s%sOmkodningstabellen er genereret automatisk af Free "%s" %s%sfor sekvensen %s.%s*Uopnåelig**bare kopi*Flertydige uddataKan ikke fuldende tabellen udfra mængden af kendte parKan ikke invertere denne en-til-en tabelKan ikke vise "%s", ingen navne tilgængelige for dette tegnsætTegnsæt %s findes allerede og er ikke %sUnderprocessens ventestatus er 0x%0.2xTegnkoderne %3d og %3d oversættes begge til %3dDec Okt Hex UCS2 Mne %s Forventer ".." i forespørgselFølgende fejl er for "%s" til "%s"Fri "recode" konverterer filer mellem forskellige tegnsæt og pakninger. Triviel omkodning, ikke værd at bruge en tabelIntern omkodningsfejlUgyldige inddataSPR er et programmeringssprog, f.eks. "c", "perl" eller "po"; "c" er standard. Misbrug af omkodningsbibliotekIngen tegn oversættes til %3dIngen fejlIngen tabel at udskriveUmuligt at oversætte fra "%s" til "%s"Ualmindelige inddataPar nr. %d: <%3d, %3d> er i konflikt med <%3d, %3d>Omkoder %s...Omkodningen er for kompleks for en simpel tabelForespørgsel: %s Genpakker indstillet flere gange for "%s"Formindsket til: %s Beklager, ingen navne tilgængelige for "%s"Trinopstart fejledeTrinopstart fejlede (ubearbejdede tilvalg)Systemet fandt et problemDette er fri software; se kopieringsbetingelserne i kildeteksten. Der gives INGEN garanti; end ikke for SALGBARHED eller ANVENDELIGHED TIL NOGET FORMÅL. Dette program er fri software; du må redistribuere det og/eller modificere det under betingelserne givet i GNU General Public License som publiceret af Free Software Foundation; enten version 2, eller (efter dit valg) en senere version. Dette program distribueres i håbet om, at det vil være nyttigt, men UDEN NOGEN GARANTI; end ikke en underforstået garanti for SALGBARHED eller ANVENDELIGHED TIL ET GIVET FORMÅL. Se GNU General Public License for flere detaljer. Du skulle have modtaget en kopi af GNU General Public License sammen med dette program; hvis ikke, så skriv til Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Prøv "%s %s" for mere information. UCS2 Mne Beskrivelse Ukendt pakkenavn "%s"Udpakker indstillet flere gange for "%s"Uoversættelige inddataVirtuel hukommelse opbrugtVirtuel hukommelse opbrugt!Med -k vises en liste over mulige før tegnsæt for det givne efter TEGNSÆT, begge tabellariske tegnsæt, med PAR af typen "FØR1:EFTER1,FØR2:EFTER2,..." hvor FØR'er og EFTER'e er tegnkoder givet efter titalssystemet. bytereversibelucs2variabelrecode-3.6/i18n/de.mo0100644000000000000000000002711607233073526013044 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ Ôßä)íK>cµ¢ X.bÁ‘£SG÷ ;?!C{!F¿!" "5"P" b"n"~"I’":Ü"G#1_#*‘#5¼#ò#!$62$Li$6¶$í$ %^%-z%"¨% Ë%×%2ð%#&<9&v&8‰& Â&.Ï&þ&9'%L'?r'(²'øÛ'¢Ô(%w,,¹,.Ù,-#-<-ÚV-1. 6.@.E.(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.5 POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1999-09-14 22:51+01:00 Last-Translator: Daniel Naber Language-Team: German MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Feineinstellungen: -s, --strict Strikte Abbildung benutzen, auch bei Zeichenverlust -d, --diacritics Nur Akzente/Umlaute umkodieren (z.B. für HTML/LaTeX) -S, --source[=LN] Bei LN nur Zeichenketten und Kommentare umkodieren -c, --colons benutze ':' statt '"' für Umlaute (z.B. 'fu:r' statt ('fu"r') -g, --graphics 'Linienzeichen' des IBMPC-Zeichensatzes durch ähnliche ASCII-Zeichen darstellen -x, --ignore=ZEISATZ ZEISATZ bei der Wahl der Kodierungsschritte ignorieren Wenn eine Option ein Argument zwingend braucht, gilt das unabhängig davon, ob die Kurz- oder Langschreibweise der Option benutzt wird. Entsprechendes gilt für optionale Argumente. Wenn weder -i noch -p angegeben sind, wird -p angenommen wenn keine DATEI angegeben ist, sonst -i. Jede DATEI wird bei mit der umkodierten Datei überschrieben. Wenn keine DATEI angegen ist wird die Standardeingabe umkodiert und auf der Standardausgabe ausgegeben. Funktionsmodi: -v, --verbose Reihenfolge der Umkodierungsschritte und Fortschritt anzeigen -q, --quiet, --silent Keine Meldungen über nicht umkehrbare Umkodierungen -f, --force Umkodierung vornehmen, auch wenn sie nicht umkehrbar ist -t, --touch Nach der Umkodierung ein 'touch' auf die umkodierte Datei ausführen -i, --sequence=files Für Zwischenschritte temporäre Dateien anlegen --sequence=memory Für Zwischenschritte Speicherpuffer verwenden Die Option -l ohne FORMAT und ZEISATZ listet alle Zeichensätze und -formate auf. FORMAT ist `decimal', `octal', `hexadecimal' oder `full' (können durch den Anfangsbuchstaben abgekürzt werden) ANFRAGE ist UNTERANFRAGE[,UNTERANFRAGE]...; UNTERANFRAGE ist KODIERUNG[..KODIERUNG]... KODIERUNG ist [ZEISATZ][/[SURFACE]]...; ANFRAGE ist meistens VORHER..NACHHER, wobei VORHER und NACHHER Zeichensätze sind. Ohne ZEISATZ wird der übliche Zeichensatz benutzt; ohne [/SURFACE]... wird das für ZEISATZ übliche Format angenommen; ein / ohne Angabe eines Formats heisst, dass kein Format angenommen wird. Siehe Anleitung. Berichte über Programmfehler bitte an . Aufruf: %s [OPTION]... [ [ZEISATZ] | ANFRAGE [DATEI]... ] -p, --sequence=pipe das gleiche wie '-i' (auf diesem System) -p, --sequence=pipe benutze "pipe" für Abarbeitung der Schritte fertig %s nach %s%sKonvertierung automatisch generiert von »GNU %s %s«%sfür Folge %s.%s*unmöglich**einface Kopie*Mehrdeutige AusgabeKann die Tabelle aus der Menge der bekannten Paare nicht vervollständigenKann die gegebene "Eins-zu-Eins"-Tabelle nicht invertierenKann `%s' nicht anzeigen, keine Namen für diesen Zeichensatz verfügbarZeichensatz %s existiert bereits und ist nicht %sWartezustand des Kindprozesses ist 0x%0.2xDie Kodes %3d und %3d werden beide konvertiert zu %3dDec Oct Hex UCS2 Mne %s In der Anfrage wird `..' erwartetFolgende Diagnose für Konvertierung von `%s' nach `%s'`recode' konvertiert Dateien zwischen diversen Zeichensätzen und -formaten. Umkodierung ohne Änderung, zu trivial für eine TabelleInterner UmkodierungsfehlerUngültige EingabeLN ist eine Programmiersprache, z.B. `c', `perl' oder `po', wobei `c' die Voreinstellung ist. Falsche Benutzung der Umkodierungs-BibliothekKein Zeichen wird zu %3d umkodiertKein FehlerKeine Tabelle auszugebenKeine Möglichkeit, von `%s' nach `%s' umzukodierenKeine gültige EingabePaar Nr. %d: { %3d, %3d } steht in Konflikt mit { %3d, %3d }Kodiere `%s' um...Umkodierung ist für eine einfache Tabelle zu kompliziertAnfrage: %s `Resurfacer' für `%s' mehr als einmal gesetzt.Geschrumpft zu: %s Tut mir leid, aber es sind für `%s' keine Namen verfügbarSchrittinitialisierung fehlgeschlagenSchrittinitialisierung fehlgeschlagen (nichtbeachtete Optionen)Das System ist auf ein Problem gestossenDieses Programm ist freie Software; die genauen Nutzungsbedingungen sind der Datei »COPYING« in den Quellen zu entnehmen. Es wird keinerlei Gewährleistung übernommen; auch nicht für gewerbliche Nutzbarkeit oder Tauglichkeit zu einem anderen Zweck. Der folgende Text ist eine nicht überprüfte Übersetzung, die zur Information dient; in rechtlichen Fragen ist immer das englische Original ausschlaggebend. Dieses Program ist freie Software; Sie können es nach den Bedingungen der von der Free Software Foundation als "GNU General Public License" veröffentlichten Lizenz weitergeben und/oder verändern; dabei gilt die Version 2 oder (frei nach ihrer Wahl) jede spätere Version. Dieses Programm wird in der Hoffnung verteilt, daß es nützlich ist, jedoch OHNE JEGLICHE GARANTIE; sogar ohne die implizite Garantie der MARKTFÄHIGKEIT oder der ERFÜLLUNG EINES BESTIMMTEN ZWECKES. In der "GNU General Public License" können weitere Einzelheiten nachgelesen werden. Sie sollten mit diesem Programm eine Kopie der "GNU General Public License" erhalten haben; wenn nicht, schreiben Sie an die Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. `%s %s' zeigt weitere Informationen. UCS2 Mne Beschreibung Unbekannter `surface' Name `%s'`Unsurfacer' für `%s' mehr als einmal gesetzt.Nicht übersetzbare EingabeVirtueller Speicher vollVirtueller Speicher voll!Mit '-k' werden mögliche 'Vorher'-Zeichensätze für den 'Nachher'-ZEISATZ ausgegeben, mit PAAREn der Form 'VOR1:NACH1,VOR2:NACH2,...', wobei die VORs und NACHs Kodes sind. Alle Kodes werden als Dezimalzahlen angegeben. byteumkehrbarucs2variabelrecode-3.6/i18n/el.mo0100644000000000000000000002661607233073526013060 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ Ôßä;íK)u²ˆ;N´Vì 8ø B1!=t!B²!õ!ý!C"J"^"m" ~"8Œ"(Å"[î"7J#=‚#3À#ô#$'.$ZV$)±$Û$÷$O %!Y%*{% ¦%´%-Ñ%ÿ%7&S&4g& œ&M¨&ö&3'<'CZ'ž'¯½'ïm(0]+Ž+%§+LÍ+,1,L,h,n- s-- „-(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: GNU recode 3.4r POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1999-06-13 01:30+0000 Last-Translator: Simos Xenitellis Language-Team: Greek MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-7 Content-Transfer-Encoding: 8-bit Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Ñõèìßóåéò: -s, --strict ÷ñÞóç áõóôçñþí óõó÷åôßóåùí, áêüìá êáé åëåýèåñùí ÷áñáêôÞñùí -d, --diacritics ìåôáôñïðÞ ìüíï äéáêñéôéêþí Þ ðáñüìïéùí ãéá HTML/LaTeX -S, --source[=LN] ðåñéïñéóìüò ìåôáôñïðþí óå áëöáñéèìçôéêÜ êáé ó÷üëéá êÜôá ôï LN -c, --colons ÷ñÞóç êïëþíùí áíôß äéðëþí åéóáãùãéêþí ãéá ôç äéáßñåóç -g, --graphics ðñïóÝããéóç êáíüíùí IBMPC ìå ASCII ãñáöéêÜ -x, --ignore=ÐÉÍ×ÁÑ áãíüçóç ðßíáêá ÷áñáêôÞñùí (ÐÉÍ×ÁÑ) óôçí åðéëïãÞ ìïíïðáôéïý ìåôáôñïðþí Áí ìéá ìáêñÜ åðéëïãÞ áíáöÝñåé ìéá ðáñÜìåôñï óáí õðï÷ñåùôéêÞ, ôüôå åßíáé õðï÷ñåùôéêÞ êáé ãéá ôçí áíôßóôïé÷ç óýíôïìç åðéëïãÞ åðßóçò. Ôï ßäéï êáé ãéá ôéò ðñïáéñåôéêÝò ðáñáìÝôñïõò. Áí êáíÝíá áðü ôá -i êáé -p äå äßäïíôáé, èåþñçóå -p áí äåí õðÜñ÷åé ÁÑ×ÅÉÏ, áëëéþò -i. ÊÜèå ÁÑ×ÅÉÏ ìåôáôñÝðåôáé ðÜíù óôïí åáõôü ôïõ, êáôáóôñÝöïíôáò ôï ðñùôüôõðï. Áí êáíÝíá ÁÑ×ÅÉÏ äåí Ý÷åé ïñéóôåß, ôüôå öÝñóïõ óáí ößëôñï êáé ìåôÝôñåøå ôçí êáíïíéêÞ åßóïäï óôçí êáíïíéêÞ Ýîïäï. ÊáôáóôÜóåéò ëåéôïõñãßáò: -v, --verbose áíáöïñÜ äéáäï÷Þò âçìÜôùí êáé ðñïüäïõ -q, --quiet, --silent áðüêñõøç ìçíõìÜôùí ìç-áíôéóôñåðôþí ìåôáôñïðþí -f, --force åðéâïëÞ ìåôáôñïðþí áêüìá êáé áí åßíáé ìç áíôéóôñåðôÝò -t, --touch åíçìÝñùóç ôçò çìåñïìçíßáò ôùí ìåôáôñåðïìÝíùí áñ÷åßùí ìåôÜ ôçí áíôéêáôÜóôáóç -i, --sequence=files ÷ñÞóç åíäéÜìåóùí áñ÷åßùí óôá äéáäï÷éêÜ ðåñÜóìáôá --sequence=memory ÷ñÞóç åíôáìéåõôþí ìíÞìçò óôá äéáäï÷éêÜ ðåñÜóìáôá Ç åðéëïãÞ -l ÷ùñßò ÌÏÑÖÇ, ïýôå ÐÉÍ×ÁÑ, áðáñéèìåß ôïõò äéáèÝóéìïõò ðßíáêåò ÷áñáêôÞñùí êáé åðéöÜíåéåò. ÌÏÑÖÇ åßíáé `decimal', `octal', `hexadecimal' Þ `full' (Þ Ýíá áðü ôá `dohf'). ÁÉÔÇÓÇ åßíáé ÕÐÏÁÉÔÇÓÇ[,ÕÐÏÁÉÔÇÓÇ]...Ò ÕÐÏÁÉÔÇÓÇ åßíáé ÊÙÄÉÊÏÐÏÉÇÓÇ[...ÊÙÄÉÊÏÐÏÉÇÓÇ]... ÊÙÄÉÊÏÐÏÉÇÓÇ åßíáé [ÐÉÍ×ÁÑ][/[ÅÐÉÖÁÍÅÉÁ]]...Ò ÁÉÔÇÓÇ óõíÞèùò ìïéÜæåé ìå ÐÑÏÇÃÏÕÌÅÍÏ...ÅÐÏÌÅÍÏ, ìå ÐÑÏÇÃÏÕÌÅÍÏ êáé ÅÐÏÌÅÍÏ íá åßíáé ðßíáêåò ÷áñáêôÞñùí. ¸íáò ÐÉÍ×ÁÑ ðïõ Ý÷åé ðáñáëçöèåß, õðïäçëþíåé ôï óõíÞèåò ðßíáêá ÷áñáêôÞñùíÒ Ýíá [/ÅÐÉÖÁÍÅÉÁ]... ðïõ Ý÷åé ðáñáëçöèåß, óçìáßíåé ôéò õðïäçëùìÝíåò åðéöÜíåéåò ôïõ ÐÉÍ×ÁÑÒ Ýíá / ÷ùñßò üíïìá åðéöÜíåéáò óçìáßíåé ÷ùñßò êáèüëïõ åðéöÜíåéåò. ÊïéôÜîôå ôï åã÷åéñßäéï. ÁíáöÝñáôå óöÜëìáôá óôï . ×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ [ÓÕÍÏËÏ×ÁÑÁÊÔ¹ÑÙÍ] | ÁÉÔÇÓÇ [ÁÑ×ÅÉÏ]... -p, --sequence=pipe ôï ßäéï ìå -i (óå áõôü ôï óýóôçìá) -p, --sequence=pipe ÷ñÞóç óùëÞíùóçò óôá äéáäï÷éêÜ ðåñÜóìáôá Ýãéíå %s óå %s%sÐßíáêáò ìåôáôñïðÞò äçìéïõñãÞèçêå ìç÷áíéêÜ áðü ôï Åëåýèåñï `%s' %s%sãéá äéáäï÷Þ %s.%s*Ìç êáôïñèùôü**áðëÞ áíôéãñáöÞ*ÁóáöÞò ÝîïäïòÁäõíáìßá óõìðëÞñùóçò ðßíáêá áðü ôï óýíïëï ãíùóôþí æåõãþíÁäõíáìßá áíôéóôñïöÞò äïèÝíôïò 1-1 ðßíáêáÁäõíáìßá åìöÜíéóçò ôïõ `%s', äåí õðÜñ÷ïõí ïíüìáôá äéáèÝóéìá ãéá áõôüí ôïí ðßíáêá ÷áñáêôÞñùíÏ ðßíáêáò ÷áñáêôÞñùí %s õðÜñ÷åé Þäç êáé äåí åßíáé ôï %sÇ êáôÜóôáóç ðáñáìïíÞò ôçò èõãáôñéêÞò äéåñãáóßáò åßíáé 0x%0.2xÊáé ïé äýï êùäéêïß %3d êáé %3d ìåôáôñÝðïíôáé óå %3dDec Oct Hex UCS2 Mne %s ÁíáìÝíåôáé `..' óôçí áßôçóçÁêïëïõèïýí äéáãíùóôéêÜ ãéá `%s' óå `%s'Ôï åëåýèåñï `recode' ìåôáôñÝðåé áñ÷åßá ìåôáîý ðïéêßëùí óõíüëùí ÷áñáêôÞñùí êáé åðéöáíåéþí. ÌçäáìçíÞ ìåôáôñïðÞ, äåí ÷ñåéÜæåôáé ðßíáêáÅóùôåñéêü óöÜëìá (recoding)Ìç Ýãêõñç åßóïäïòLN åßíáé ìéá ãëþóóá, ìðïñåß íá åßíáé `c', `perl' Þ `po'Ò åî'ïñéóìïý åßíáé `c'. ÊáêÞ ÷ñÞóç ôçò âéâëéïèÞêçò recodeÊáíÝíáò ÷áñáêôÞñáò äåí ìåôáôñÝðåôáé óå %3dÊáíÝíá óöÜëìáÊáíÝíáò ðßíáêáò ãéá åêôýðùóçÊáíÝíáò ôñüðïò íá ìåôáôñáðåß áðü `%s' óå `%s'Ìç êáíïíéêïðïéçìÝíç åßóïäïòÁñéèì. æåýãïõò %d: <%3d, %3d> óõãêñïýåôáé ìå <%3d, %3d>ÌåôáôñïðÞ ôïõ %s...Ç ìåôáôñïðÞ åßíáé ðïëý ðåñßðëïêç ãéá Ýíá ìüíï ðßíáêáÁßôçóç: %s Ï åðáíáôïðïèåôçôÞò åðéöÜíåéáò Ý÷åé ôåèåß ðåñéóóüôåñï áðü ìéá öïñÜ ãéá ôï `%s'Óõññßêíùóç óå %s Óõãíþìç, äåí õðÜñ÷ïõí äéáèÝóéìá ïíüìáôá ãéá ôï `%s'Ôï âÞìá áñ÷éêïðïßçóçò áðÝôõ÷åÔï âÞìá áñ÷éêïðïßçóçò áðÝôõ÷å (åðéëïãÝò ðïõ äåí Ý÷ïõí åðåîåñãáóôåß)Ôï óýóôçìá äéáðßóôùóå ðñüâëçìáÁõôü åßíáé åëåýèåñï ëïãéóìéêüÒ äåßôå ôï ðçãáßï êþäéêá ãéá ôïõò êáíüíåò áíôéãñáöÞò. ÄÅÍ õðÜñ÷åé åããýçóçÒ ïýôå áêüìá ãéá ×ÑÇÓÉÌÏÔÇÔÁ Þ ÊÁÔÁËËÇËÏÔÇÔÁ ÃÉÁ ÅÍÁ ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ. Áõôü ôï ðñüãñáììá åßíáé åëåýèåñï ëïãéóìéêüÒ ìðïñåßôå íá ôï áíáäéáíåßìåôå êáé/Þ íá ôï ôñïðïðïéÞóåôå óýìöùíá ìå ôïõò êáíüíåò ôçò ÃåíéêÞò Äçìüóéáò ¶äåéáò GNU üðùò åêäßäåôáé áðü ôï Free Software FoundationÒ åßôå ôçí Ýêäïóç 2 åßôå (êáôÜ ôçí ðñïôßìçóÞ óáò) ïðïéáóäÞðïôå ìåôáãåíÝóôåñçò Ýêäïóçò. Áõôü ôï ðñüãñáììá äéáíÝìåôáé ìå ôçí åëðßäá üôé èá åßíáé ÷ñÞóéìï, áëëÜ ×ÙÑÉÓ ÊÁÌÉÁ ÅÃÃÛÇÓÇ; ÷ùñßò ïýôå Ýììåóç åããýçóç ËÅÉÔÏÕÑÃÉÊÏÔÇÔÁÓ Þ ÊÁÔÁËËÇËÏÔÇÔÁÓ ÃÉÁ ÅÍÁ ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ. Áíáöåñèåßôå óôï GNU General Public License ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò. Èá ðñÝðåé íá Ý÷åôáé ëÜâåé Ýíá áíôßãñáöï ôçò ÃåíéêÞò Äçìüóéáò ¶äåéáò GNU ìáæß ìå áõôü ôï ðñüãñáììáÒ åÜí ü÷é, ãñÜøôå óôï Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ÄïêéìÜóôå `%s %s' ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. UCS2 Mne ÐåñéãñáöÞ Ìç áíáãíùñßóçìï üíïìá åðéöÜíåéáò `%s'Ï áíôéôïðïèåôçôÞò åðéöÜíåéáò Ý÷åé ôåèåß ðåñéóóüôåñï áðü ìéá öïñÜ ãéá ôï `%s'Ìç ìåôáöñÜóéìç åßóïäïòÇ éäåáôÞ ìíÞìç åîáíôëÞèçêåÇ éäåáôÞ ìíÞìç åîáíôëÞèçêå!Ìå -k, ðéèáíïß ðñïçãïýìåíïé ðßíáêåò ÷áñáêôÞñùí åìöáíßæïíôáé ãéá ôï äïèÝí åðüìåíï ðßíáêá ÷áñáêôÞñùí (CHARSET), üíôáò êáé ôá äýï óå ìïñöÞ ðåäßùí, óå ÆÅÕÃÇ ôçò ìïñöÞò `ÐÑÏÇÃ1:ÅÐÏÌÅÍ1,ÐÑÏÇÃ1:ÅÐÏÌÅÍ2,...' êáé ôá ÐÑÏÇà êáé ÅÐÏÌÅÍ, üíôáò êùäéêïß, äßíïíôáé ùò áñéèìïß. byteáíôéóôñåðôüucs2ìåôáâëçôÞrecode-3.6/i18n/es.mo0100644000000000000000000002614007233073526013057 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ Ôßä0íKj§k&Û:«£Â4f D› <à <!Z!b!<j!§! À!Ì!â!Gô!,<"Ri".¼"/ë"0#L#j#,Š#M·#)$/$I$SZ$-®$#Ü$%%$-%R%6l%£%9¶% ð%7þ%6&/F& v&8—&!Ð&©ò&Μ'%k*‘*#¬*7Ð*++7+ðQ+B, G,R,W,(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: GNU recode 3.4r POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1999-05-21 18:45+0200 Last-Translator: Santiago Vila Doncel Language-Team: Spanish MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Ajuste `fino': -s, --strict utiliza correspondencias estrictas, aunque se pierdan caracteres -d, --diacritics convierte solamente acentos y demás para HTML/LaTeX -S, --source[=LN] limita la conversión a cadenas y comentarios según LN -c, --colons utiliza dos puntos en vez de comillas para diéresis -g, --graphics aproxima gráficos IBMPC mediante gráficos ASCII -x, --ignore=JUEGO descarta JUEGO al escoger un camino de conversión Si una opción larga muestra un argumento como obligatorio, entonces es obligatorio también para la opción corta equivalente. Lo mismo para los argumentos opcionales. Si no se especifica ninguna de las opciones -i ó -p, se supone -p si no hay ningún FICHERO, o si no, -i. Cada FICHERO se convierte sobre sí mismo, destruyendo el original. Si no es especifica ningún FICHERO, entonces funciona como filtro y convierte la entrada estándar en la salida estándar. Modos de operación: -v, --verbose explica la sucesión de pasos e informa del desarrollo -q, --quiet, --silent no muestra mensajes sobre conversiones irreversibles -f, --force realiza la conversión incluso si no es reversible -t, --touch toca los ficheros convertidos después del reemplazo -i, --sequence=files utiliza ficheros intermedios para las pasadas --sequence=memory utiliza búfers en memoria para las pasadas La opción -l sin FORMATO ni JUEGO muestra los juegos de caracteres y facetas. disponibles. FORMATO es `decimal', `octal', `hexadecimal' o `full' (o uno de entre `dohf'). PETICIÓN es SUBPETICIÓN[,SUBPETICIÓN]...; SUBPETICIÓN es CODIFICACIÓN[..CODIFICACIÓN]... CODIFICACIÓN es [JUEGO][/[FACETA]]...; PETICIÓN suele ser ANTES..DESPUÉS, donde ANTES y DESPUÉS son juegos de caracteres. Un JUEGO omitido implica el juego de caracteres usual; una [/FACETA]... omitida significa la faceta implícita para el JUEGO; una / con una faceta vacía significa que no hay ninguna faceta. Véase el manual. Comunicar `bugs' a . Modo de empleo: %s [OPCIÓN]... [ [JUEGO] | PETICIÓN [FICHERO]... ] -p, --sequence=pipe lo mismo que -i (en este sistema) -p, --sequence=pipe utiliza tuberías para las pasadas hecho %s a %s%sTabla de conversión generada automáticamente por GNU %s %s%spara la sucesión %s.%s*Imposible**copia pura y simple*Resultado ambiguoNo se puede completar la tabla a partir del conjunto de pares conocidosNo se puede invertir la tabla uno-a-uno dadaNo se puede mostrar `%s', no hay nombres disponibles para este juego de caracteresEl juego de caracteres %s ya existe y no es %sEl estado de espera del proceso hijo es 0x%0.2xLos códigos %3d y %3d se convierten ambos en %3dDec Oct Hex UCS2 Nem %s Se esperaba `..' en la peticiónProcedimiento para convertir de `%s' a `%s':GNU `recode' convierte ficheros entre varios juegos de caracteres y facetas. Conversión identidad, no merece una tablaBug interno de conversiónEntrada inválidaLN es algún lenguage, puede ser `c', `perl' o `po', el valor predeterminado es `c' Uso inadecuado de la biblioteca de conversiónNingún carácter se convierte en %3dNo hay ningún errorNo hay tabla que mostrarNo se puede convertir de `%s' a `%s'La entrada no es canónicaEl par nº %d: <%3d, %3d> es conflictivo con <%3d, %3d>Convirtiendo %s...La conversión es demasiado compleja para una simple tablaPetición: %s Se ha establecido `resurfacer' más de una vez para `%s'Encogido a: %s Lo siento, no hay nombres disponibles para `%s'Falló la etapa de inicializaciónFalló la etapa de inicialización (opciones sin procesar)Problema detectado por el sistemaEsto es software libre; vea el código fuente para las condiciones de copia. No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Este programa es software libre; puede ser redistribuido y/o modificado bajo los términos de la Licencia Pública General de GNU tal y como se publica por la Free Software Foundation; bien en su versión 2, o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Véase la Licencia Pública General de GNU para más detalles. Usted debería haber recibido una copia de la Licencia Pública General de GNU junto con este programa; en caso contrario, escriba a la Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, EE.UU. Pruebe `%s %s' para más información. UCS2 Nem Descripción Nombre de faceta no reconocido `%s'Se ha establecido `unsurfacer' más de una vez para `%s'Entrada no convertibleMemoria virtual agotada¡Memoria virtual agotada!Con -k, se muestran los posibles juegos `antes' para el JUEGO `después' dado, siendo ambos juegos de caracteres tabulares, con PAREJAS de la forma `ANT1:DES1,ANT2:DES2,...' y siendo los ANTs y los DESs códigos dados como números decimales. bytereversibleucs2variablerecode-3.6/i18n/fr.mo0100644000000000000000000002603307233073526013060 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ Ôßä;íI)Äs¯8ÜèÔůšˆJÓ<d @¡ Fâ )! 4!>?!~!–!¥!´!;Ã!&ÿ!;&"*b"/"3½"ñ"$#94#Nn#4½##ò#$L&$*s$$ž$ Ã$Ð$è$%7&%^%7r% ª% ·% Ø%&æ%, &C:& ~&ÕŸ&·u'*-*X*s* Ž*¯*Æ*à*ú*ü+ , ,,(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: Free recode 3.5 POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1999-08-17 14:14-04:00 Last-Translator: François Pinard Language-Team: French MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Copyright © 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Ajustements fins: -s, --strict recoder strictement, perte possible de caractères -d, --diacritics se restreindre aux diacritiques pour HTML/LaTeX -S, --source[=LN] ne recoder que les chaînes et les commentaires LN -c, --colons utiliser «:» plutôt que «\"» pour les trémas -g, --graphics convertir au mieux possible les «rulers» IBMPC -x, --ignore=CHARSET ignorer CHARSET durant le choix des étapes Un paramètre obligatoire pour une option de forme longue l'est aussi pour une option de forme courte. La même règle s'applique à un paramètre indiqué comme étant optionnel. En l'absence de «-i» ou «-p», choisir «-i» avec FICHIER, sinon «-p». Chaque FICHIER est recodé sur lui-même, détruisant l'original. Si aucun FICHIER n'est donné, alors agir comme un filtre et recoder stdin sur stdout. Modes d'opération: -v, --verbose afficher les étapes prévues, suivre la progression -q, --quiet, --silent taire les messages sur les recodages irréversibles -f, --force effectuer même les recodages irréversibles -t, --touch «touch»er les fichiers après leur remplacement -i, --sequence=files fabriquer des fichiers pour ordonnancer les passes --sequence=memory utiliser des tampons pour ordonnancer les passes L'option «-l» sans FORMAT ni CHARSET donne les charsets et surfaces disponibles. FORMAT vaut «decimal», «octal», «hexadecimal» ou «full», ou encore un caractère dans «dohf». DEMANDE est SOUS-DEMANDE[,SOUS-DEMANDE]...; SOUS-DEMANDE est CODAGE[..CODAGE]... CODAGE est [CHARSET][/[SURFACE]]...; DEMANDE ressemble souvent à AVANT..APRÈs, AVANT et APRÈS étant des charsets. Un CHARSET omis sous-entend le charset habituel; une [/SURFACE]... omise sous-entend les surfaces habituelles pour CHARSET; un / sans surface indique l'absence de toute surface. Voir le manuel! Rapporter tout disfonctionnement à mailto:recode-bugs@iro.umontreal.ca; et rapporter les problèmes de francisation à mailto:traduc@traduc.org. Usage: %s [OPTION]... [ [CHARSET] | DEMANDE [FICHIER]... ] -p, --sequence=pipe même chose que -i (sur cette machine) -p, --sequence=pipe utiliser «pipe» pour ordonnancer les passes complété %s vers %s%sTable de conversion engendrée mécaniquement par Free «%s» %s%spour séquence «%s».%s*Irréalisable**simple copie*Sortie ambiguëIncapable de fermer une table en partant des paires connuesIncapable d'inverser une table un-à-unIncapable de lister «%s»: les noms n'y sont pas disponiblesLe charset %s existe déjà, et n'est pas %sLe constat «wait» du processus fils est 0x%0.2xLes codes %3d et %3d s'injectent tous deux dans %3ddéc oct hex UCS2 mné %s Chaîne `..' attendue dans la demandeLes diagnostics suivants s'appliquent pour «%s» vers «%s»« Free recode » transforme les jeux de caractères et les surfaces de fichiers Le recodage est trivial, une table n'est pas requiseProblème interne durant le recodageEntrée invalideLN est un langage de programmation, valant `c' (implicite), `perl' ou `po'. Mauvais usage de la logithèque de recodageAucun caractère ne peut produire %3dPas d'erreurAucune table à imprimerPas moyen de recoder %s vers %sEntrée en forme non canoniquePaire no. %d: < %3d, %3d > en conflit avec < %3d, %3d >Recodage de «%s»...Recodage plus complexe que ce qu'une table peut décrireDemande: %s Plus d'un re-surfaceur pour `%s'Réduit à: %s Désolé, aucun nom disponible pour «%s»L'étape n'a pas été correctement initialiséeL'étape n'a pas été correctement initialisée (options non-traitées)Problème rapporté par le systèmeCe programme est un logiciel libre; consulter les sources pour connaître les droits de copie. Il n'y AUCUNE GARANTIE; même pas celle qu'il est DE QUALITÉ LOYALE ET MARCHANDE ou APPROPRIÉ POUR UN BUT PARTICULIER. Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier selon les termes de la License Publique Générale de GNU, publiée par la Free Software Foundation (soit la version 2 ou soit, à votre discrétion, toute version ultérieure). Ce programme est distribué pour être utile, mais SANS AUCUNE GARANTIE; sans même la garantie implicite qu'il est DE QUALITE LOYALE ET MARCHANDE ou APPROPRIE POUR UN BUT PARTICULIER. Voir la Licence Publique Générale de GNU pour plus de détails. Vous devriez avoir reçu copie de la Licence Publique Générale de GNU avec ce programme; sinon, écrire à la Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Pour plus d'information, essayez «%s %s». UCS2 Mné Description Nom de surface inconnu: %sPlus d'un dé-surfaceur pour `%s'Entrée non traductibleMémoire virtuelle épuiséeMémoire virtuelle épuiséeAvec -k, les charsets antécédents possibles sont listés pour le CHARSET conséquent, tous deux étant des charsets RFC1345, restreints par les PAIRES dites selon la syntaxe «AVANT1:APRÈS1,AVANT2:APRÈS2,...»; chaque code AVANT et APRÈS est exprimé en décimal. octetréversibleucs2flottantrecode-3.6/i18n/gl.mo0100644000000000000000000002612407233073526013054 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ ÔßäEíK3Ô¡Tèörß«R²þ6± Gè ;0!Fl!³!»!=Ã!"")" 8"=F")„"A®",ð"-#2K#~#œ#'»#Tã#=8$v$•$C¨$,ì$,% F%%P%+v%¢%;¸%ô%>& G&0U&†&+—&Ã&6ã&'9'¨×'-€*®*&É*/ð* +7+P+Êk+6, ;,F,K,(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.5 POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 2000-05-06 01:44+02:00 Last-Translator: Jacobo Tarrío Barreiro Language-Team: Galician MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8-bit Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Axustes finos: -s, --strict usar mapeados estrictos, incluso perder caracteres -d, --diacritics converter só diacríticos ou similares para HTML/LaTeX -S, --source[=LN] limita-la recodificación a cadeas e comentarios para LN -c, --colon usar dous puntos no canto de comiñas dobres para diérese -g, --graphics aproxima-las liñas de IBMPC con gráficos ASCII -x, --ignore=XOGO ignora-lo XOGO ao escoller unha rota de recodificación Se unha opción longa amosa un parámetro como obrigatorio, entón tamén é obrigatorio para a opción curta equivalente. Do mesmo xeito para parámetros opcionais. Se non se indica -i nin -p, suponse -p se non se indica un FICHEIRO, senón -i. Cada FICHEIRO recodifícase sobre si mesmo, destruíndose o orixinal. Se non se indica un FICHEIRO, traballa coma un filtro e recodifica stdin a stdout. Modos de operación: -v, --verbose explica-la secuencia de pasos e informar dos progresos -q, --quite, --silent inhibi-las mensaxes sobre recodificacións irreversibles -f, --force forza-las recodificacións incluso cando non son reversibles -t, --touch toca-los ficheiros recodificados despois de cambialos -i, --sequence=files usar ficheiros intermedios para pasos secuenciais --sequence=memory usa-la memoria para pasos secuenciais A opción -l sen FORMATO ou XOGO lista os xogos e superficies dispoñibles. O FORMATO é `decimal', `octal', `hexadecimal' ou `full' (completo), ou unha letra entre `dofh'. PETICIÓN é SUBPETICIÓN[,SUBPETICIÓN]...; SUBPETICIÓN é CODIFICACIÓN[..CODIFICACIÓN]...; CODIFICACIÓN é [XOGO][/[SUPERFICIE]]...; PETICIÓN adoita parecer INICIAL..FINAL, sendo INICIAL e FINAL uns xogos de caracteres. Se non se indica un XOGO tómase o xogo normal; se non se indica unha [/SUPERFICIE]... tómanse as superficies implicadas en XOGO; cunha / cun nome de superficie baleiro non se toma ningunha superficie. Lea o manual. Informe dos erros en . Uso: %s [OPCIÓN]... [ [XOGO-DE-CARACTERES] | PETICIÓN [FICHEIRO]... ] -p, --sequence=pipe o mesmo que -i (neste sistema) -p, --sequence=pipe usar canalizacións para pasos secuenciais feito %s a %s%sTáboa de conversión xerada mecánicamente polo `%s' Libre %s%spara a secuencia %s.%s*Inalcanzable**simple copia*Saída ambiguaNon podo completa-la táboa dado o conxunto de pares coñecidosNon se pode inverti-la táboa un-a-un dadaNon se pode listar `%s', non hai nomes dispoñibles para este xogoO xogo de caracteres %s xa existe e non é %sO estado de espera do proceso fillo é 0x%0.2xÁmbolos dous códigos %3d e %3d recodifícanse a %3dDec Oct Hex UCS2 Mne %s Esperábase un `..' na peticiónSeguen os diagnósticos para `%s' a `%s'O `recode' libre convirte ficheiros entre varios xogos de caracteres e superficies. Recodificación identidade, non merece a pena facer unha táboaErro interno na recodificaciónEntrada incorrectaLN é unha linguaxe, pode ser `c', `perl' ou `po'; `c' por defecto. Uso incorrecto da librería de recodificaciónNon hai caracteres que se recodifiquen a %3dSen errosNon hai ningunha táboa que visualizarNon hay xeito de recodificar de `%s' a `%s'Sen saída normalizadaO par núm. %d: <%3d, %3d> entra en conflicto con <%3d, %3d>Recodificando %s...A recodificación é demasiado complicada para unha simple táboaPetición: %s Aplicáronse superficies máis dunha vez para `%s'Encollido a: %s Síntoo, non hai nomes dispoñibles para `%s'A inicialización do paso fallouA inicialización do paso fallou (opcións sen procesar)O sistema detectou un problemaIsto é software libre; vexa o código fonte polas condicións de copia. NON hai garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN DETERMINADO. Este programa é software libre; pode redistribuílo e/ou modificalo baixo os termos da Licencia Pública Xeral de GNU tal como foi publicada pola Free Software Foundation; xa a versión 2, ou (á súa elección) calqueira versión posterior. Este programa é distribuído coa esperanza de que sexa útil, pero SEN NINGUNHA GARANTÍA; nin sequera a garantía implícita de COMERCIABILIDADE ou APTITUDE PARA UN FIN EN PARTICULAR. Vexa a Licencia Pública Xeral de GNU para ter máis detalles. Debería ter recibido unha copia da Licencia Pública Xeral de GNU con este programa; se non é o caso, escriba á Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, EE.UU. Escriba `%s %s' para obter máis información. UCS2 Mne Descripción Nome de superficie `%s' non recoñecidoQuitáronse superficies máis dunha vez para `%s'Entrada non traducibleMemoria virtual esgotada¡Memoria virtual esgotada!Con -k, os posibles xogos iniciais lístanse para o XOGO final indicado, sendo os dous xogos tabulares, con PARES da forma `INI1:FIN1,INI2:FIN2,...' e os códigos INI e FIN dándose coma números decimais. bytereversibleucs2variablerecode-3.6/i18n/it.mo0100644000000000000000000002565007233073526013071 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ Ôßä9íK'ösšjü͹Ð}Š3 :< 6w J® ù !D !O!g!y!Š!F™!/à!B"#S"0w"2¨"Û"ù" #I6#:€#»#Õ#Næ#*5$%`$ †$”$,°$Ý$=ó$1%5I%%3Ž%Â%+Ñ%!ý%:&Z&¥w&¤'*Â)í)%*2-*`*u**ݪ*ˆ+ +™+ ž+(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: GNU recode 3.5 POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1999-11-19 23:30+01:00 Last-Translator: Lorenzo Cappelletti Language-Team: Italian MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Regolazioni fini: -s, --strict usa mappature strettamente conformi, anche con caratteri slegati -d, --diacritics converte solo segni diacritici o simili per HTML/LaTeX -S, --source[=LN] limita la ricodifica a stringhe e commenti come per LN -c, --colons usa i due punti al posto delle virgolette per le dieresi -g, --graphics approssima le regole IBMPC con grafica ASCII -x, --ignore=CHARSET ignora CHARSET quando sceglie un percorso di ricodifica Se un'opzione lunga richiede necessariamente un argomento, allora essa è richiesta anche per l'opzione breve. Analogamente per gli argomenti opzionali. Se non è dato -i né -p, si presume -p se FILE non è presente, altrimenti -i. Ogni FILE è ricodificato su se stesso, ditruggendo l'originale. Se non viene specificato nessun FILE, allora si comporta come un filtro ricodificando lo stdin sullo stdout. Modi operativi: -v, --verbose spiega le sequenze dei passi e riporta i progressi -q, --quiet, --silent inibisce i messaggi di ricodifiche inreversibili -f, --force forza le ricodifiche anche quando non reversibili -t, --touch touch dei file ricodificati dopo la sostituzione -i, --sequence=files usa file intermedi per i passi sequenziali --sequence=memory usa buffer di memoria per i passi sequenziali L'opzione -l senza FORMATO né CHARSET elenca i charset e le surface disponibili. FORMATO può essere `decimale'(d), `ottale'(o), `esadecimale'(h) o `pieno'(f) (oppure uno tra `dohf'). RICHIESTA è SUBRICHIESTA[,SUBRICHIESTA]...; SUBRICHIESTA è CODIFICA[..CODIFICA]...; CODIFICA è [CHARSET][/[SURFACE]...; RICHIESTA spesso è simile a PRIMA..DOPO, essendo PRIMA e DOPO dei charset. Un CHARSET omesso implica il charset usuale; una [/SURFACE]... omessa implica le superfici del CHARSET; un / con un nome di surface vuoto significa nessuna surface. Vedere il manuale. Segnalare i bug a . Uso: %s [OPZIONI]... [ [CHARSET] | RICHIESTA [FILE]... ] -p, --sequence=pipe come -i (su questo sistema) -p, --sequence=pipe usa il sistema dei pipe per i passi sequenziali fatto %s in %s%sTabella di conversione generata automaticamente dalla Free `%s' %s%sper la sequenza %s.%s*Inraggiungibile**per sola copia*Output ambiguoImpossibile completare la tabella dall'insieme delle coppie conosciuteImpossibile invertire la tabella uno-a-uno dataNon posso listare `%s', nessun nome disponibile per questo charsetIl charset %s esiste già e non è %sLo stato di attesa del processo figlio è 0x%0.2xEntrambi i codici %3d e %3d si ricodificano in %3dDec Ott Esa UCS2 Mne %s Atteso `..' nella richiestaSegue diagnostica da `%s' a `%s'`recode' gratuito converte file fra vari insiemi di caratteri e surface. Sto ricodificando nell'identità, tabella non significativaBug di ricodifica internoInput non validoLN è qualche lingua, può essere `c', `perl' o `po'; quella predefinita è `c'. Uso scorretto della libreria di ricodificaNessun carattere si ricodifica in %3dNessun erroreNessuna tabella da stampareNessuno modo per ricodificare da `%s' a `%s'Nessun input canonicoLa coppia numero %d: <%3d, %3d> è in conflitto con <%3d, %3d>Sto ricodificando %s...La ricodifica è troppo complessa per una sola tabellaRichiesta: %s Il resurfacer è impostato piú di una volta per `%s'Ridotto a: %s Spiacente, nessun nome disponibile per `%s'Passo di inizializzazione fallitoPasso di inizializzazione fallito (opzioni non processate)Rilevato problema di sistemaQuesto è software libero; vedere il sorgente per le condizioni sulla riproduzione. NON c'è garanzia; neppure di COMMERCIABILITÀ o IDONEITÀ AD UN PARTICOLARE SCOPO. This program 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 This program 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. Si dovrebbe aver ricevuto una copia della GNU General Public License assieme a questo programma; in caso contrario, scrivere a Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Usare `%s %s' per ulteriori informazioni. UCS2 Mne Descrizione Nome di surface non riconosciuta `%s'L'unsurfacer è impostato piú di una volta per `%s'Input non traslabileMemoria virtuale esauritaMemoria virtuale esaurita!Con -k, possibile prima, charset vengono listati per quelli dati dopo CHARSET, entrambi essendo charset tabulari, con COPPIE nella foram `BEF1:AFT1,BEF2:AFT2,...', dove BEF e AFT sono codici forniti come numeri decimali. bytereversibileucs2variabilerecode-3.6/i18n/nl.mo0100644000000000000000000000705307233073526013063 0ustar rootrootÞ•ÄlàCá%,A P-\$Š'¯$×$ü&!$Hm‰›(ª—Ó–k" %00Oa±¹ ÌÙ7è$ *E #p &” +» (ç  1 H 3W §‹ Å3 &ù     -p, --sequence=pipe use pipe machinery for sequencing passes done %sfor sequence %s.%s*Unachievable**mere copy*Cannot complete table from set of known pairsCannot invert given one-to-one tableCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dFollowing diagnostics for `%s' to `%s'Identity recoding, not worth a tableNo character recodes to %3dNo table to printRecoding %s...Recoding is too complex for a mere tableThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. reversibleProject-Id-Version: recode 3.4.2 POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1996-10-07 10:05 MET DST Last-Translator: Erick Branderhorst Language-Team: Dutch MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit -p, --sequence=pipe gebruik pipe machinery for sequencing passes (FIXME) klaar %svoor reeks %s.%s*Onmogelijk**gewone kopie*Kan tabel niet compleet maken uit set van bekende parenKan een-op-een tabel niet inverterenKarakterset %s bestaat reeds en is niet %sWacht status proces kind is 0x%0.2xCode %3d en %3d beide omgezet naar %3dVolg diagnostiek (FIXME) van `%s' naar `%s'Codering is identiek, geen tabel waardigGeen karakter omzetting naar %3dGeen tabel om te tonenOmzetten %s...Omzetting is te complex voor een mere tabel (FIXME)Dit is vrije programmatuur; zie de broncode voor kopieer condities. Er is GEEN garantie; zelfs niet voor VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALDE TOEPASSING. Dit programma is vrije software; het mag gedistribueerd en/of veranderd worden onder de voorwaarden van de GNU General Public License zoals gepubliceerd door de Free Software Foundation; versie 2, of (als je daar voor kiest) enig latere versie. Dit programma is gedistribueerd in de hoop dat het bruikbaar is, maar ZONDER ENIGE GARANTIE; zelfs zonder de geompliceerde garantie van MERCHANTABILITY of GESCHIKTHEID VOOR EEN SPECIFIEK GEBRUIKSDOEL. Zie de GNU General Public License voor verdere details. Samen met dit programma heb je een copie ontvangen van de GNU General Public License; zo niet, schrijf dan naar de Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Probeer `%s %s' voor meer informatie. omkeerbaarrecode-3.6/i18n/pl.mo0100644000000000000000000002617107233073526013067 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ Ôßä'íK2a—”ú,ñ'®½ÈF† CÍ =!7O! ‡!“!Cœ!à!ö!""/1" a";‚"$¾"1ã"&#<#Z#w#[”#5ð#&&$M$]c$(Á$ ê$ %%*0% [%0|%­%7Á%ù%>&G&[&$n&<“&Ð&¸æ&Ÿ'/-*]*,x*>¥**ä*+++H+\, a,l,q,(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.4r POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1999-05-26 14:49+02:00 Last-Translator: Pawe³ Krawczyk Language-Team: Polish MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: 8-bit Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Modyfikacja parametrów pracy: -s, --strict u¿ywa ¶cis³ego mapowania, nawet dla nie¶cis³ych znaków -d, --diacritics konwertuje tylko znaki diakrytyczne oraz symbole znaków (takie jak w HTML i LaTeX) -c, --colons u¿ywa dwukropków zamiast cudzys³owów dla oznaczenia umlautu -g, --graphics próbuje przybli¿aæ ramki IBMPC znakami ASCII -x, --ignore=ZESTAW ignoruje ZESTAW znaków podczas okre¶lania drogi przekodowania Je¶li argumenty s± obowi±zkowe dla d³ugich wersji opcji, to s± one równie¿ obowi±zkowe dla krótkich wersji. Analogicznie dla argumentów opcjonalnych. Je¶li nie podano opcji -i ani -p, przyjmowana jest opcja -p je¶li nie podano PLIKu, w przeciwnym razie -i. Ka¿dy PLIK jest nadpisywany z utrat± oryginalnej zawarto¶ci. Je¶li nie podano PLIKu, program dzia³a jako filtr przekodowuj±c stdin na stdout. Tryby pracy: -v, --verbose oznajmia wykonywane kroki oraz postêp pracy -q, --quiet, --silent nie wy¶wietla komunikatów o nieistotnych konwersjach -f, --force wymusza przekodowanie nawet je¶li jest ono nieodwracalne -t, --touch uaktualnia czas plików po przekodowaniu -i, --sequence=pliki u¿ywa plików tymczasowych miêdzy etapami --sequence=memory u¿ywa buforów w pamiêci miêdzy etapami Bez FORMATu lub ZESTAWu, opcja -l wy¶wietla dostêpne zestawy i sposoby kodowania znaków. FORMAT to `decimal', `octal', `hexadecimal' lub `full', (lub jedna z liter `dohf'). POLecenie to PODPOL[,PODPOL]...; PODPOLecenie to ENKOD[..ENKOD]... ENKOD to [ZESTAW][/[KODOWANIE]]...; POLecenie czêsto ma postaæ SK¡D..DOK¡D, gdzie SK¡D i DOK¡D s± zestawami znaków. W miejsce pominiêtego zestawu przyjmowany jest zestaw domy¶lny; W miejsce pominiêtego [/KODOWANIA] przyjmowany jest domy¶lny sposób kodowania dla danego ZESTawu; sam znak / bez podanego KODOWANIA oznacza brak jakiegokolwiek kodowania. Szczegó³y w dokumentacji. Prosimy o zg³aszanie b³êdów na adres . Sk³adnia: %s [OPCJA]... [ [ZESTAW_ZNAKÓW] | POLECENIE [PLIK]... ] -p, --sequence=pipe identyczne jak -i (w tym systemie) -p, --sequence=pipe u¿ywa potoków miêdzy etapami skoñczone %s na %s%sTablica przekodowañ wygenerowana automatycznie przez GNU `%s' %s.%sdla sekwencji %s.%s*Nieosi±galne**zwyk³a kopia*Dane wyj¶ciowe s± dwuznaczneNie mogê utworzyæ tablicy z zestawu znanych parNie mogê odwróciæ danej tablicy Nie mogê wylistowaæ `%s', brak nazw dla tego zestawu znakówZestaw %s ju¿ istnieje i nie jest %sStan oczekiwania procesu potomnego wynosi 0x%0.2xKody %3d i %3d oba t³umacz± siê na %3dDec Okt Hex UCS2 Mne %s Spodziewane `..' w poleceniuDiagnostyka dla `%s' do `%s'Program `recode' konwertuje pliki pomiêdzy ró¿nymi zestawami znaków i sposobami kodowania. Przekodowanie jest proste, tablica nie jest potrzebnaWyst±pi³ wewnêtrzny b³±d przekodowaniaB³êdne dane wej¶cioweLN jest jêzykiem programowania, do wyboru `c', `perl' lub `po'. Domy¶ln± warto¶ci± jest `c'. B³êdne u¿ycie biblioteki przekodowuj±cej¯aden znak nie koduje siê na %3dBrak b³êduBrak tablicy do wypisaniaPrzekodowanie `%s' na `%s' jest niemo¿liweDane wej¶ciowe nie s± kanonicznePara nr %d: < %3d, %3d > konflikt z < %3d, %3d >Przekodowanie %s...Przekodowanie jest zbyt skomplikowane na zwyk³± tablicêPolecenie: %s Procedura rekoduj±ca zosta³a ustawiona wiêcej ni¿ raz dla `%s'Zmniejszony do: %s Brak nazw dla `%s'Inicjalizacja kroku nie powiod³a siêInicjalizacja kroku nie powiod³a siê (nieprzetworzone opcje)System wykry³ problemOprogramowanie darmowe; warunki jego kopiowania znajdziesz w kodzie ¼ród³owym. Nie podlega ¿adnej gwarancji, nawet gwarancji przydatno¶ci do jakiegokolwiek zastosowania lub sprzeda¿y. Ten program jest darmowy; mo¿esz rozprowadzaæ go i/lub modyfikowaæ zachowuj±c warunki Powszechnej Licencji Publicznej GNU (General Public Licence), opublikowanej przez Free Software Foundation, w wersji 2 lub wy¿szej. Program ten jest rozprowadzany w nadziei, ¿e bêdzie przydatny, ale BEZ ¯ADNEJ GWARANCJI, nawet bez domy¶lnej gwarancji SPRZEDAWALNO¦CI lub PRZYDATNO¦CI DO KONKRETNYCH ZASTOSOWAÑ. Szczegó³y znajdziesz w Powszechnej Licencji Publicznej GNU. Powiniene¶ otrzymaæ kopiê Powszechnej Licencji Publicznej GNU wraz z tym programem. Je¶li nie, napisz do Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Polecenie `%s %s' wy¶wietli wiêcej informacji. UCS2 Mne Description Nierozpoznana nazwa standardu kodowania `%s'Procedura dekoduj±ca zosta³a ustawiona wiêcej ni¿ raz dla `%s'Dane wej¶ciowe nie mog± byæ przet³umaczonePamiêæ wirtualna wyczerpanaPamiêæ wirtualna wyczerpana!Je¶li podano opcjê -k, program wy¶wietla zestawy znaków z których mo¿na dokonaæ konwersji do podanego ZESTAWu docelowego. Oba s± stabelaryzowanymi zestawami znaków z PARAmi postaci `SK¡D1:DOK¡D1,SK¡D2:DOK¡D2...', gdzie SK¡D i DOK¡D s± kodami podanymi jako liczby dziesiêtne. bajtodwracalnaucs2zmiennerecode-3.6/i18n/pt.mo0100644000000000000000000000715707233073526013102 0ustar rootrootÞ•ÄlàCá%,A P-\$Š'¯$×$ü&!$Hm‰›(ª—Ó–k" %.0@_  ¬ ÅÒEâ0( 0Y ,Š 1· 6é # #D h ‚ 4” ¶É ¾€ $? d    -p, --sequence=pipe use pipe machinery for sequencing passes done %sfor sequence %s.%s*Unachievable**mere copy*Cannot complete table from set of known pairsCannot invert given one-to-one tableCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dFollowing diagnostics for `%s' to `%s'Identity recoding, not worth a tableNo character recodes to %3dNo table to printRecoding %s...Recoding is too complex for a mere tableThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. reversibleProject-Id-Version: GNU recode 3.4.3 POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1996-11-25 10:00-0000 Last-Translator: Vitor Duarte Language-Team: Portuguese MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8-bit -p, --sequence=pipe usar «pipe» para sequenciar os passos terminado %spara a sequência %s.%s*Impossível**simples cópia*Não posso completar a tabela a partir do conjunto de pares conhecidosNão se pode inverter a tabela de um-para-um dadaO conjunto de caracteres %s já existe e não é %sO processo filho terminou com estado 0x%0.2xAmbos os códigos %3d e %3d são convertidos em %3dOs diagnosticos seguintes aplicam-se de «%s» para «%s»A conversão não necessita de tabelaNenhum carácter é convertido em %3dNenhuma tabela a imprimirConvertendo %s...Conversão demasiado complexa para uma simples tabelaEste programa é «free software»; veja o código fonte para saber em que condições o pode copiar. SEM GARANTIA; nem mesmo de COMERCIABILIDADE ou de UTILIDADE PARA QUALQUER UTILIZAÇÃO. Este programa é «free software»; pode redistribuir-lo e/ou modificá-lo nos termos previstos na licença da GNU (GNU General Public License), publicada pela Free Software Foundation; de acordo com a versão 2 ou, se preferir, alguma mais recente. Este programa é distribuido na esperança de que lhe seja útil, mas SEM QUALQUER GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE ou UTILIDADE PARA QUALQUER UTILIZAÇÃO. Para mais informações consulte a «GNU General Public License». Deve ter recebido uma cópia da licença «GNU General Public License» junto com este programa; se assim não for, escreva para Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, EUA. Para mais informação tente «%s %s». reversívelrecode-3.6/i18n/sl.mo0100644000000000000000000002545507233073526013076 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ Ôßä;íK)÷u†mçôÕÜì² Ÿ?@ =€ 7¾ ?ö 6!C!9K!…!š!©! ¸!2Æ!%ù!1"Q")n"'˜"À"Þ"-ú"R(#'{#£#Á#6Ñ#$$$ D$ O$&Y$€$3‘$Å$#×$ û$. %8%G%c%4ƒ%¸%×É%u¡&*)B)(V)1)±)Ã)á) * + ++ +(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.5 POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1999-12-21 17:01 MET Last-Translator: Primoz Peterlin Language-Team: Slovenian MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: 8-bit Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Natanènej¹e nastavljanje: -s, --strict uporabi strogo pretvorbo, celo na raèun izgube znakov -d, --diacritics pretvori samo pregla¹ene in podobne znake za HTML/LaTeX -S, --source[=JEZIK] omeji pretvorbe na nize in komentarje, kot v JEZIKU -c, --colons nadomesti dierezo z dvopièjem, ne z dvojnim narekovajem -g, --graphics semigrafiène znake s PC pribl. nadomestimo z znaki ASCII -x, --ignore=NABOR pri pretvorbi se izogni navedenemu vmesnemu NABORU Èe je pri dolgi obliki izbire argument naveden kot obvezen, velja obveza tudi za kratko obliko. Podobno tudi za neobvezne argumente. Èe nista podana niti -i niti -p, se uporabi -p, kadar ni podana DATOTEKA, sicer pa -i. Pretvorba vsake DATOTEKE se zapi¹e prek izvorne razlièice. Èe DATOTEKA ni podana, recode deluje kot filter med standardnim vhodom in izhodom. Naèini dela: -v, --verbose med potekom razlagaj korake in komentiraj napredek -q, --quiet, --silent brez opozoril o neobrnljivih pretvorbah -f, --force pretvorbo izvedi, èetudi ni obrnljiva -t, --touch pretvorjena datoteka naj nosi datum pretvorbe, ne nastanka -i, --sequence=files uporabi vmesne datoteke za zaporedne prehode --sequence=memory med prehodi hrani besedilo v pomnilniku Izbira -l brez podane OBLIKE ali NABORA izpi¹e seznam vseh znanih kodnih naborov in preèrkovalnih shem. OBLIKA je lahko ,decimal` (deseti¹ka), ,octal` (osmi¹ka), ,hexadecimal` (¹estnajsti¹ka) ali ,full` (polna), ali ena od èrk ,dohf`. ZAHTEVEK ima obliko PODZAHTEVEK[,PODZAHTEVEK]...; PODZAHTEVEK ima obliko KODIRANJE[,KODIRANJE]...; KODIRANJE ima obliko [NABOR][/[SHEMA]]. ZAHTEVEK ima pogosto obliko PREJ..POTEM, kjer sta PREJ in POTEM kodirana nabora znakov. Izpu¹èeni NABOR pomeni privzetega; izpu¹èena [/SHEMA] pomeni privzeto preèrkovalno shemo za dani NABOR. Po¹evnica / brez sheme pomeni brez preèrkovalne sheme. Podrobnosti so v priroèniku. Sporoèila o napakah javite na . Uporaba: %s [IZBIRA]... [ [NABOR] | ZAHTEVA [DATOTEKA]... ] -p, --sequence=pipe isto kot -i (na tem sistemu) -p, --sequence=pipe uporabi cevovode za nizanje prehodov opravljeno %s v %s%sPretvorna tabela mehanièno generirana s prostim ,%s` %s%sza zaporedje %s.%s*Nedosegljivo**zgolj prepis*Dvoumen izhodIz mno¾ice znanih parov ni mogoèe dokonèati tabeleDana tabela eden-v-enega ni obrnljivaIzpis ,%s' ni mogoè, imen za ta nabor ni na voljoNabor %s ¾e obstaja in ni %sÈakalni status procesa potomca je 0x%0.2xKodi %3d in %3d se obe preslikata v %3ddes osm Hex UCS2 Mne %s V zahtevku prièakujemo ,..`Sledi diagnostika za pretvorbo iz ,%s' v ,%s'Prosti ,recode` pretvarja datoteke med razliènimi kodnimi nabori in preèrkovanji. Pretvorba je trivialna, nevredna tabeleNotranja napaki pri pretvorbiNeveljaven vhodJEZIK je lahko ,c`, ,perl` ali ,po`; privzeto je ,c`. Zloraba pretvorne knji¾niceNoben znak se ne preslika v %3dBrez napakTabele niPretvorba iz ,%s` v ,%s` ni izvedljivaNekanonièen vhodPar ¹t. %d: <%3d, %3d> je v nesoglasju z <%3d, %3d>Pretvarjamo %s...Pretvorba je prezapletena za tabeloZahtevek: %s Veè kot ena preèrkovalna shema uvedena za ,%s`Skrèeno v: %s Imena za ,%s` niso na voljoInicializacija koraka neuspe¹naInicializacija koraka neuspe¹na (nepredelane izbire)Te¾ave v sistemuTo je prost program; pogoji, pod katerimi ga lahko uporabljate, razmno¾ujete in raz¹irjate so navedeni v izvorni kodi. Za program ni NOBENEGA jamstva, niti jamstev USTREZNOSTI ZA PRODAJO ali PRIMERNOSTI ZA UPORABO. Ta program je prosta programska oprema; lahko ga redistribuirate in/ali spreminjate po pogojih, doloèenih v ,,GNU General Public License``, izdani pri Free Software Foundation; 2. izdaja (ali novej¹a, èe razpolagate z njo). Ta program se distribuira v upanju, da je uporaben, vendar BREZ KAKR©NEGAKOLI JAMSTVA; vkljuèno z impliciranim jamstvom prodajnosti ali uporabnosti za izbrani namen. Za podrobnosti si oglejte ,,GNU General Public License``. Izvod ,,GNU General Public License`` bi moral biti prilo¾en temu programu; èe ni, pi¹ite Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Poskusite ,%s %s` za dodatne informacije. UCS2 Mne Opis Neprepoznano ime preèrkovalne sheme ,%s`Veè kot ena preèrkovalna shema preklicana za ,%s`Neprevedljiv vhodVirtualni pomnilnik porabljenVirtualni pomnilnik porabljen!Pri izbiri -k se izpi¹ejo vsi mo¾ni startni nabori za podani ciljni nabor. Startni in ciljni nabor sta kodirana nabora znakov. PARI naj imajo obliko ,,START1:CILJ1,START2:CILJ2...``, kjer so STARTn in CILJn deseti¹ke kode znakov v startnem in ciljnem kodnem naboru. bajtobrnljivoUCS2spremenljivorecode-3.6/i18n/sv.mo0100644000000000000000000002574307233073526013110 0ustar rootrootÞ•?Y pKq»½yÇ ³Ò–† | 0š 9Ë 6 C< € ‡ 9 Ê ß î ú - $95^'”$¼$á$&>Je$°Õ ëHùB]y‚"”·1Ëý(  5&Bi"x›0¶ç—ÿ–—".Ql&‹²ÇàÔúÏ Ôßä.íK2h–›ä2¶³Î‚h F‰ =Ð 4!C! K!5V!Œ!  !«!¾!1Î!/"F0")w"!¡"/Ã"ó"#"*#JM#2˜#Ë#á#Lñ#*>$i$ ‡$‘$$¬$Ñ$3ä$ %,&% S%&`%‡%5™%Ï%1ë%&ž6&IÕ&'*G*b*(u*ž*²*Ç*èÜ*Å+ Ê+Õ+Ú+(.; 0 </"#%9=7>)?: -451'3 2+8 6!$&,* Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. Fine tuning: -s, --strict use strict mappings, even loose characters -d, --diacritics convert only diacritics or alike for HTML/LaTeX -S, --source[=LN] limit recoding to strings and comments as for LN -c, --colons use colons instead of double quotes for diaeresis -g, --graphics approximate IBMPC rulers by ASCII graphics -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. If none of -i and -p are given, presume -p if no FILE, else -i. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. Operation modes: -v, --verbose explain sequence of steps and report progress -q, --quiet, --silent inhibit messages about irreversible recodings -f, --force force recodings even when not reversible -t, --touch touch the recoded files after replacement -i, --sequence=files use intermediate files for sequencing passes --sequence=memory use memory buffers for sequencing passes Option -l with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. Report bugs to . Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ] -p, --sequence=pipe same as -i (on this system) -p, --sequence=pipe use pipe machinery for sequencing passes done %s to %s%sConversion table generated mechanically by Free `%s' %s%sfor sequence %s.%s*Unachievable**mere copy*Ambiguous outputCannot complete table from set of known pairsCannot invert given one-to-one tableCannot list `%s', no names available for this charsetCharset %s already exists and is not %sChild process wait status is 0x%0.2xCodes %3d and %3d both recode to %3dDec Oct Hex UCS2 Mne %s Expecting `..' in requestFollowing diagnostics for `%s' to `%s'Free `recode' converts files between various character sets and surfaces. Identity recoding, not worth a tableInternal recoding bugInvalid inputLN is some language, it may be `c', `perl' or `po'; `c' is the default. Misuse of recoding libraryNo character recodes to %3dNo errorNo table to printNo way to recode from `%s' to `%s'Non canonical inputPair no. %d: <%3d, %3d> conflicts with <%3d, %3d>Recoding %s...Recoding is too complex for a mere tableRequest: %s Resurfacer set more than once for `%s'Shrunk to: %s Sorry, no names available for `%s'Step initialisation failedStep initialisation failed (unprocessed options)System detected problemThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Try `%s %s' for more information. UCS2 Mne Description Unrecognised surface name `%s'Unsurfacer set more than once for `%s'Untranslatable inputVirtual memory exhaustedVirtual memory exhausted!With -k, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. bytereversibleucs2variableProject-Id-Version: recode 3.5 POT-Creation-Date: 2001-01-02 22:35+0100 PO-Revision-Date: 1999-10-16 13:42 +02:00 Last-Translator: Jan Djärv Language-Team: Swedish MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Copyright © 1990, 92, 93, 94, 96, 97, 1999 Free Software Foundation, Inc. Finjustering: -s, --strict använd strikt omkodning, tillåt teckenförluster -d, --diacritics omkoda endast diakritiska tecken eller motsvarande till HTML/LaTeX -S, --source[=LN] begränsa omkodning till strängar och kommentarer som för LN -c, --colons använd kolon istället för " för trematecken -g, --graphics approximera linjer i IBMPC med ASCII grafik -x, --ignore=TECKENUPPSÄTTNING ignorera TECKENUPPSÄTTNING när omkodningsväg väljs Om en lång flagga har ett obligatoriskt argument så är argumentet även obligatoriskt för motsvarade korta flagga. Motsvarande för valfria argument. Om ingen av -i eller -p är given så antas -p on ingen FIL är given, annars -i. Varje fil omkodas över sig själv och förstör originalet. Om ingen FIL anges så blir beteendet ett filter som omkodar standard in till standard ut. Exekveringsalternativ: -v, --verbose förklara delsteg och rapportera framsteg -q, --quiet, --silent undertryck meddelanden om irreversibla omkodningar -f, --force gör omkodning även när den är irreversibel -t, --touch gör "touch" på filer som omkodas över sig själva -i, --sequence=files använd temporärfiler mellan delsteg --sequence=memory använd minnesbuffertar mellan delsteg Flagga -l utan FORMAT och TECKENUPPSÄTTNING visar alla tillgängliga teckenuppsättningar och ytor. FORMAT är "decimal", "octal", "hexadecimal" eller "full" (eller en av "dohf"). BEGÄRAN är DELBEGÄRAN[,DELBEGÄRAN]..., DELBEGÄRAN är KODNING[..KODNING]... KODNING är [TECKENUPPSÄTTNING][/[YTA]].... BEGÄRAN ser ofta ut som START..SLUT, där START och SLUT är teckenuppsättningar. Ett utelämnat TECKENUPPSÄTTNING innebär den normala teckenuppsättningen, en utelämnad [/YTA]... innebär den normala ytan för TECKENUPPSÄTTNING. Ett / utan ytnamn innebär ingen yta alls. Se manualen för detaljer. Rapportera fel till . Rapportera fel på översättningen till . Användning: %s [FLAGGA]... [ [TECKENUPPSÄTTNING] | BEGÄRAN [FIL]...] -p, --sequence=pipe samma sak som -i (på detta system) -p, --sequence=pipe använd rör mellan delsteg klart %s till %s%sKonverteringstabell automatgenererad av Fri "%s" %s%sför sekvens %s.%s*Omöjligt**endast kopiering*Tvetydig utdataKan inte göra en tabell från mängden av kända parKan inte invertera en given ett-till-ett tabellKan inte visa "%s", inga namn tillgängliga för denna teckenuppsättningTeckenuppsättning %s finns och är inte %sBarnprocess slutstatus är 0x%0.2xTeckenkoderna %3d och %3d omkodas båda till %3ddec okt hex UCS2 mne %s Förväntar ".." i begäranFöljande fel är för "%s" till "%s"Fria "recode" konverterar filer mellan olika teckenuppsättningar och ytor Ingen omkodning behövs, den är inte värd en tabellInternt omkodningsfelFelaktig indataLN är ett språk, det kan vara "c", "perl" eller "po"; "c" är standardvärde. Felaktig användning av omkodningsbibliotekInget tecken omkodas till %3dInget felIngen tabell att skriva utOmöjligt koda om från "%s" till "%s"Indata ej kanoniskPar nr. %d: <%3d, %3d> är i konflikt med <%3d, %3d>Omkodar %s...Omkodning är för komplex för en enkel tabellBegäran: %s Ytkodning satt mer än en gång för "%s"Krympte till: %s Ledsen, men det finns inga namn tillgängliga för "%s"Steginitiering misslyckadesSteginitiering misslyckades (obearbetade flaggor)Systemproblem upptäcktesDetta är fri programvara; se källkoden för kopieringsvillkor. Det finns INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Följande text är en informell översättning som enbart tillhandahålls i informativt syfte. För alla juridiska tolkningar gäller den engelska originaltexten. Detta program är fri programvara. Du kan distribuera den och/eller modifiera den under villkoren i GNU General Public License, publicerad av Free Software Foundation, antingen version 2 eller (om du så vill) någon senare version. Detta program distribueras i hopp om att det ska vara användbart, men UTAN NÅGON SOM HELST GARANTI, även utan den underförstådda garantin om SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General Public License för ytterligare information. Du bör ha fått en kopia av GNU General Public License tillsammans med detta program. Om inte, skriv till Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Försök med "%s %s" för mer information UCS2 Mne Beskrivning Okänt ytnamn: "%s"Ytavkodning satt mer än en gång för "%s"Oöversättbar indataVirtuellt minne slutVirtuellt minne slutMed -k, möjliga startuppsättningar visas för den givna slutuppsättningen, där båda teckenuppsättningar är på tabellform. PAR har formatet "START1:SLUT1,START2:SLUT2,..." och START... och SLUT... är koder som anges med decimala tal. bytereversibelusc2variabelrecode-3.6/src/0040755000000000000000000000000007233074170012117 5ustar rootrootrecode-3.6/src/Makefile.in0100644000000000000000000011303107233074170014160 0ustar rootroot# Makefile.in generated automatically by automake 1.4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 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. # Makefile for `recode' sources. # Copyright © 1991,92,93,94,95,96,97,98,99, 00 Free Software Foundation, Inc. # François Pinard , 1988. # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ CC = @CC@ CPP = @CPP@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ GLIBC21 = @GLIBC21@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MOFILES = @MOFILES@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ U = @U@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = gnits ansi2knr bin_PROGRAMS = recode lib_LTLIBRARIES = librecode.la man_MANS = recode.1 include_HEADERS = recode.h recodext.h noinst_HEADERS = argmatch.h charname.h common.h decsteps.h fr-charname.h hash.h inisteps.h libiconv.h quotearg.h rfc1345.h tersteps.h xalloc.h $(H_FALLBACKS) $(H_SURFACES) EXTRA_DIST = stamp-steps $(L_STEPS) mergelex.py $(MANS) C_STEPS = african.c afrtran.c applemac.c atarist.c bangbang.c cdcnos.c ebcdic.c ibmpc.c iconqnx.c lat1asci.c mule.c strip-data.c testdump.c ucs.c utf16.c utf7.c utf8.c varia.c vn.c $(C_FALLBACKS) $(C_SURFACES) OLD_C_STEPS = next.c L_STEPS = ascilat1.l $(L_FALLBACKS) $(L_SURFACES) H_FALLBACKS = C_FALLBACKS = flat.c html.c lat1ltex.c lat1txte.c rfc1345.c texinfo.c L_FALLBACKS = ltexlat1.l txtelat1.l H_SURFACES = base64.h C_SURFACES = base64.c dump.c endline.c permut.c quoted.c L_SURFACES = recode_SOURCES = main.c freeze.c mixed.c recode_LDADD = librecode.la ../lib/libreco.a librecode_la_SOURCES = argmatch.c charname.c combine.c fr-charname.c hash.c iconv.c libiconv.c localcharset.c merged.c names.c outer.c quotearg.c recode.c request.c strip-pool.c task.c xmalloc.c $(C_STEPS) librecode_la_LDFLAGS = -version-info 0:0:0 INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/lib -I$(top_srcdir)/libiconv DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@ ETAGS_ARGS = $(L_STEPS) TAGS_DEPENDENCIES = $(L_STEPS) # These CFLAGS values are not auto-configured: # -DDIFF_HASH For using GNU diff's hash algorithm instead. # -DHASH_STATS For printing a one-liner hash statistics. LEX = @LEX@ PERL = perl PYTHON = python mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(lib_LTLIBRARIES) CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ ANSI2KNR = @ANSI2KNR@ librecode_la_LIBADD = librecode_la_OBJECTS = argmatch$U.lo charname$U.lo combine$U.lo \ fr-charname$U.lo hash$U.lo iconv$U.lo libiconv$U.lo localcharset$U.lo \ merged$U.lo names$U.lo outer$U.lo quotearg$U.lo recode$U.lo \ request$U.lo strip-pool$U.lo task$U.lo xmalloc$U.lo african$U.lo \ afrtran$U.lo applemac$U.lo atarist$U.lo bangbang$U.lo cdcnos$U.lo \ ebcdic$U.lo ibmpc$U.lo iconqnx$U.lo lat1asci$U.lo mule$U.lo \ strip-data$U.lo testdump$U.lo ucs$U.lo utf16$U.lo utf7$U.lo utf8$U.lo \ varia$U.lo vn$U.lo flat$U.lo html$U.lo lat1ltex$U.lo lat1txte$U.lo \ rfc1345$U.lo texinfo$U.lo base64$U.lo dump$U.lo endline$U.lo \ permut$U.lo quoted$U.lo PROGRAMS = $(bin_PROGRAMS) recode_OBJECTS = main$U.o freeze$U.o mixed$U.o recode_DEPENDENCIES = librecode.la ../lib/libreco.a recode_LDFLAGS = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ man1dir = $(mandir)/man1 MANS = $(man_MANS) NROFF = nroff HEADERS = $(include_HEADERS) $(noinst_HEADERS) DIST_COMMON = ChangeLog Makefile.am Makefile.in ansi2knr.1 ansi2knr.c DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best SOURCES = $(librecode_la_SOURCES) $(recode_SOURCES) OBJECTS = $(librecode_la_OBJECTS) $(recode_OBJECTS) all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .lo .o .s $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status mostlyclean-libLTLIBRARIES: clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) distclean-libLTLIBRARIES: maintainer-clean-libLTLIBRARIES: install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libdir) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \ $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) list='$(lib_LTLIBRARIES)'; for p in $$list; do \ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ done .c.o: $(COMPILE) -c $< .s.o: $(COMPILE) -c $< .S.o: $(COMPILE) -c $< mostlyclean-compile: -rm -f *.o core *.core clean-compile: distclean-compile: -rm -f *.tab.c maintainer-clean-compile: .c.lo: $(LIBTOOL) --mode=compile $(COMPILE) -c $< .s.lo: $(LIBTOOL) --mode=compile $(COMPILE) -c $< .S.lo: $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: maintainer-clean-libtool: mostlyclean-krextra: clean-krextra: -rm -f ansi2knr distclean-krextra: maintainer-clean-krextra: ansi2knr: ansi2knr.o $(LINK) ansi2knr.o $(LIBS) ansi2knr.o: $(CONFIG_HEADER) mostlyclean-kr: -rm -f *_.c clean-kr: distclean-kr: maintainer-clean-kr: librecode.la: $(librecode_la_OBJECTS) $(librecode_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(librecode_la_LDFLAGS) $(librecode_la_OBJECTS) $(librecode_la_LIBADD) $(LIBS) mostlyclean-binPROGRAMS: clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) distclean-binPROGRAMS: maintainer-clean-binPROGRAMS: install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) list='$(bin_PROGRAMS)'; for p in $$list; do \ rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ done recode: $(recode_OBJECTS) $(recode_DEPENDENCIES) @rm -f recode $(LINK) $(recode_LDFLAGS) $(recode_OBJECTS) $(recode_LDADD) $(LIBS) african_.c: african.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/african.c; then echo $(srcdir)/african.c; else echo african.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > african_.c afrtran_.c: afrtran.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/afrtran.c; then echo $(srcdir)/afrtran.c; else echo afrtran.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > afrtran_.c applemac_.c: applemac.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/applemac.c; then echo $(srcdir)/applemac.c; else echo applemac.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > applemac_.c argmatch_.c: argmatch.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/argmatch.c; then echo $(srcdir)/argmatch.c; else echo argmatch.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > argmatch_.c atarist_.c: atarist.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/atarist.c; then echo $(srcdir)/atarist.c; else echo atarist.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > atarist_.c bangbang_.c: bangbang.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/bangbang.c; then echo $(srcdir)/bangbang.c; else echo bangbang.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > bangbang_.c base64_.c: base64.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/base64.c; then echo $(srcdir)/base64.c; else echo base64.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > base64_.c cdcnos_.c: cdcnos.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/cdcnos.c; then echo $(srcdir)/cdcnos.c; else echo cdcnos.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > cdcnos_.c charname_.c: charname.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/charname.c; then echo $(srcdir)/charname.c; else echo charname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > charname_.c combine_.c: combine.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/combine.c; then echo $(srcdir)/combine.c; else echo combine.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > combine_.c dump_.c: dump.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dump.c; then echo $(srcdir)/dump.c; else echo dump.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > dump_.c ebcdic_.c: ebcdic.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ebcdic.c; then echo $(srcdir)/ebcdic.c; else echo ebcdic.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > ebcdic_.c endline_.c: endline.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/endline.c; then echo $(srcdir)/endline.c; else echo endline.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > endline_.c flat_.c: flat.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/flat.c; then echo $(srcdir)/flat.c; else echo flat.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > flat_.c fr-charname_.c: fr-charname.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fr-charname.c; then echo $(srcdir)/fr-charname.c; else echo fr-charname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > fr-charname_.c freeze_.c: freeze.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/freeze.c; then echo $(srcdir)/freeze.c; else echo freeze.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > freeze_.c hash_.c: hash.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/hash.c; then echo $(srcdir)/hash.c; else echo hash.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > hash_.c html_.c: html.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/html.c; then echo $(srcdir)/html.c; else echo html.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > html_.c ibmpc_.c: ibmpc.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ibmpc.c; then echo $(srcdir)/ibmpc.c; else echo ibmpc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > ibmpc_.c iconqnx_.c: iconqnx.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/iconqnx.c; then echo $(srcdir)/iconqnx.c; else echo iconqnx.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > iconqnx_.c iconv_.c: iconv.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/iconv.c; then echo $(srcdir)/iconv.c; else echo iconv.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > iconv_.c lat1asci_.c: lat1asci.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lat1asci.c; then echo $(srcdir)/lat1asci.c; else echo lat1asci.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lat1asci_.c lat1ltex_.c: lat1ltex.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lat1ltex.c; then echo $(srcdir)/lat1ltex.c; else echo lat1ltex.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lat1ltex_.c lat1txte_.c: lat1txte.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lat1txte.c; then echo $(srcdir)/lat1txte.c; else echo lat1txte.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lat1txte_.c libiconv_.c: libiconv.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/libiconv.c; then echo $(srcdir)/libiconv.c; else echo libiconv.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > libiconv_.c localcharset_.c: localcharset.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/localcharset.c; then echo $(srcdir)/localcharset.c; else echo localcharset.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > localcharset_.c main_.c: main.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/main.c; then echo $(srcdir)/main.c; else echo main.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > main_.c merged_.c: merged.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/merged.c; then echo $(srcdir)/merged.c; else echo merged.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > merged_.c mixed_.c: mixed.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mixed.c; then echo $(srcdir)/mixed.c; else echo mixed.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > mixed_.c mule_.c: mule.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mule.c; then echo $(srcdir)/mule.c; else echo mule.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > mule_.c names_.c: names.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/names.c; then echo $(srcdir)/names.c; else echo names.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > names_.c outer_.c: outer.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/outer.c; then echo $(srcdir)/outer.c; else echo outer.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > outer_.c permut_.c: permut.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/permut.c; then echo $(srcdir)/permut.c; else echo permut.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > permut_.c quotearg_.c: quotearg.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quotearg.c; then echo $(srcdir)/quotearg.c; else echo quotearg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quotearg_.c quoted_.c: quoted.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quoted.c; then echo $(srcdir)/quoted.c; else echo quoted.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quoted_.c recode_.c: recode.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/recode.c; then echo $(srcdir)/recode.c; else echo recode.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > recode_.c request_.c: request.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/request.c; then echo $(srcdir)/request.c; else echo request.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > request_.c rfc1345_.c: rfc1345.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rfc1345.c; then echo $(srcdir)/rfc1345.c; else echo rfc1345.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > rfc1345_.c strip-data_.c: strip-data.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strip-data.c; then echo $(srcdir)/strip-data.c; else echo strip-data.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strip-data_.c strip-pool_.c: strip-pool.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strip-pool.c; then echo $(srcdir)/strip-pool.c; else echo strip-pool.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strip-pool_.c task_.c: task.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/task.c; then echo $(srcdir)/task.c; else echo task.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > task_.c testdump_.c: testdump.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/testdump.c; then echo $(srcdir)/testdump.c; else echo testdump.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > testdump_.c texinfo_.c: texinfo.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/texinfo.c; then echo $(srcdir)/texinfo.c; else echo texinfo.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > texinfo_.c ucs_.c: ucs.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ucs.c; then echo $(srcdir)/ucs.c; else echo ucs.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > ucs_.c utf16_.c: utf16.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/utf16.c; then echo $(srcdir)/utf16.c; else echo utf16.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > utf16_.c utf7_.c: utf7.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/utf7.c; then echo $(srcdir)/utf7.c; else echo utf7.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > utf7_.c utf8_.c: utf8.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/utf8.c; then echo $(srcdir)/utf8.c; else echo utf8.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > utf8_.c varia_.c: varia.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/varia.c; then echo $(srcdir)/varia.c; else echo varia.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > varia_.c vn_.c: vn.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/vn.c; then echo $(srcdir)/vn.c; else echo vn.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > vn_.c xmalloc_.c: xmalloc.c $(ANSI2KNR) $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xmalloc.c; then echo $(srcdir)/xmalloc.c; else echo xmalloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xmalloc_.c african_.o african_.lo afrtran_.o afrtran_.lo applemac_.o applemac_.lo \ argmatch_.o argmatch_.lo atarist_.o atarist_.lo bangbang_.o \ bangbang_.lo base64_.o base64_.lo cdcnos_.o cdcnos_.lo charname_.o \ charname_.lo combine_.o combine_.lo dump_.o dump_.lo ebcdic_.o \ ebcdic_.lo endline_.o endline_.lo flat_.o flat_.lo fr-charname_.o \ fr-charname_.lo freeze_.o freeze_.lo hash_.o hash_.lo html_.o html_.lo \ ibmpc_.o ibmpc_.lo iconqnx_.o iconqnx_.lo iconv_.o iconv_.lo \ lat1asci_.o lat1asci_.lo lat1ltex_.o lat1ltex_.lo lat1txte_.o \ lat1txte_.lo libiconv_.o libiconv_.lo localcharset_.o localcharset_.lo \ main_.o main_.lo merged_.o merged_.lo mixed_.o mixed_.lo mule_.o \ mule_.lo names_.o names_.lo outer_.o outer_.lo permut_.o permut_.lo \ quotearg_.o quotearg_.lo quoted_.o quoted_.lo recode_.o recode_.lo \ request_.o request_.lo rfc1345_.o rfc1345_.lo strip-data_.o \ strip-data_.lo strip-pool_.o strip-pool_.lo task_.o task_.lo \ testdump_.o testdump_.lo texinfo_.o texinfo_.lo ucs_.o ucs_.lo utf16_.o \ utf16_.lo utf7_.o utf7_.lo utf8_.o utf8_.lo varia_.o varia_.lo vn_.o \ vn_.lo xmalloc_.o xmalloc_.lo : $(ANSI2KNR) install-man1: $(mkinstalldirs) $(DESTDIR)$(man1dir) @list='$(man1_MANS)'; \ l2='$(man_MANS)'; for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ done uninstall-man1: @list='$(man1_MANS)'; \ l2='$(man_MANS)'; for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ rm -f $(DESTDIR)$(man1dir)/$$inst; \ done install-man: $(MANS) @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-man1 uninstall-man: @$(NORMAL_UNINSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-man1 install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(includedir) @list='$(include_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p"; \ $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) list='$(include_HEADERS)'; for p in $$list; do \ rm -f $(DESTDIR)$(includedir)/$$p; \ done tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = src distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done african.lo african.o : african.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h afrtran.lo afrtran.o : afrtran.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h applemac.lo applemac.o : applemac.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h argmatch.lo argmatch.o : argmatch.c argmatch.h ../config.h \ ../lib/error.h quotearg.h atarist.lo atarist.o : atarist.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h bangbang.lo bangbang.o : bangbang.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h base64.lo base64.o : base64.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h base64.h cdcnos.lo cdcnos.o : cdcnos.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h charname.lo charname.o : charname.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h charname.h combine.lo combine.o : combine.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h hash.h dump.lo dump.o : dump.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h ebcdic.lo ebcdic.o : ebcdic.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h endline.lo endline.o : endline.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h flat.lo flat.o : flat.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h fr-charname.lo fr-charname.o : fr-charname.c common.h ../config.h \ xalloc.h argmatch.h ../lib/error.h recodext.h recode.h \ fr-charname.h freeze.o: freeze.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h hash.lo hash.o : hash.c ../config.h hash.h html.lo html.o : html.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h hash.h ibmpc.lo ibmpc.o : ibmpc.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h iconqnx.lo iconqnx.o : iconqnx.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h iconv.lo iconv.o : iconv.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h ../libiconv/iconv.h \ ../libiconv/libcharset.h ../libiconv/converters.h \ ../libiconv/ascii.h ../libiconv/utf8.h ../libiconv/ucs2.h \ ../libiconv/ucs2be.h ../libiconv/ucs2le.h ../libiconv/ucs4.h \ ../libiconv/ucs4be.h ../libiconv/ucs4le.h ../libiconv/utf16.h \ ../libiconv/utf16be.h ../libiconv/utf16le.h ../libiconv/utf7.h \ ../libiconv/ucs2internal.h ../libiconv/ucs2swapped.h \ ../libiconv/ucs4internal.h ../libiconv/ucs4swapped.h \ ../libiconv/java.h ../libiconv/iso8859_1.h \ ../libiconv/iso8859_2.h ../libiconv/iso8859_3.h \ ../libiconv/iso8859_4.h ../libiconv/iso8859_5.h \ ../libiconv/iso8859_6.h ../libiconv/iso8859_7.h \ ../libiconv/iso8859_8.h ../libiconv/iso8859_9.h \ ../libiconv/iso8859_10.h ../libiconv/iso8859_13.h \ ../libiconv/iso8859_14.h ../libiconv/iso8859_15.h \ ../libiconv/iso8859_16.h ../libiconv/koi8_r.h \ ../libiconv/koi8_u.h ../libiconv/koi8_ru.h ../libiconv/cp1250.h \ ../libiconv/cp1251.h ../libiconv/cp1252.h ../libiconv/cp1253.h \ ../libiconv/cp1254.h ../libiconv/cp1255.h ../libiconv/cp1256.h \ ../libiconv/cp1257.h ../libiconv/cp1258.h ../libiconv/cp850.h \ ../libiconv/cp866.h ../libiconv/mac_roman.h \ ../libiconv/mac_centraleurope.h ../libiconv/mac_iceland.h \ ../libiconv/mac_croatian.h ../libiconv/mac_romania.h \ ../libiconv/mac_cyrillic.h ../libiconv/mac_ukraine.h \ ../libiconv/mac_greek.h ../libiconv/mac_turkish.h \ ../libiconv/mac_hebrew.h ../libiconv/mac_arabic.h \ ../libiconv/mac_thai.h ../libiconv/hp_roman8.h \ ../libiconv/nextstep.h ../libiconv/armscii_8.h \ ../libiconv/georgian_academy.h ../libiconv/georgian_ps.h \ ../libiconv/mulelao.h ../libiconv/cp1133.h ../libiconv/tis620.h \ ../libiconv/cp874.h ../libiconv/viscii.h ../libiconv/tcvn.h \ ../libiconv/iso646_jp.h ../libiconv/jisx0201.h \ ../libiconv/jisx0208.h ../libiconv/jisx0212.h \ ../libiconv/iso646_cn.h ../libiconv/gb2312.h \ ../libiconv/isoir165.h ../libiconv/isoir165ext.h \ ../libiconv/gbk.h ../libiconv/gbkext1.h ../libiconv/gbkext2.h \ ../libiconv/gbkext_inv.h ../libiconv/cp936ext.h \ ../libiconv/cns11643.h ../libiconv/cns11643_1.h \ ../libiconv/cns11643_2.h ../libiconv/cns11643_3.h \ ../libiconv/cns11643_inv.h ../libiconv/big5.h \ ../libiconv/ksc5601.h ../libiconv/johab_hangul.h \ ../libiconv/euc_jp.h ../libiconv/sjis.h ../libiconv/cp932.h \ ../libiconv/cp932ext.h ../libiconv/iso2022_jp.h \ ../libiconv/iso2022_jp1.h ../libiconv/iso2022_jp2.h \ ../libiconv/euc_cn.h ../libiconv/ces_gbk.h \ ../libiconv/gb18030.h ../libiconv/gb18030ext.h \ ../libiconv/gb18030uni.h ../libiconv/iso2022_cn.h \ ../libiconv/iso2022_cnext.h ../libiconv/hz.h \ ../libiconv/euc_tw.h ../libiconv/ces_big5.h ../libiconv/cp950.h \ ../libiconv/cp950ext.h ../libiconv/big5hkscs.h \ ../libiconv/hkscs.h ../libiconv/euc_kr.h ../libiconv/cp949.h \ ../libiconv/uhc_1.h ../libiconv/uhc_2.h ../libiconv/johab.h \ ../libiconv/iso2022_kr.h ../libiconv/cjk_variants.h \ ../libiconv/translit.h ../libiconv/encodings.def \ ../libiconv/encodings_local.def ../libiconv/flags.h \ ../libiconv/loops.h ../libiconv/loop_unicode.h \ ../libiconv/loop_wchar.h ../libiconv/aliases.h lat1asci.lo lat1asci.o : lat1asci.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h lat1ltex.lo lat1ltex.o : lat1ltex.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h lat1txte.lo lat1txte.o : lat1txte.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h libiconv.lo libiconv.o : libiconv.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h \ ../libiconv/iconv.h libiconv.h localcharset.lo localcharset.o : localcharset.c ../config.h main.o: main.c common.h ../config.h xalloc.h argmatch.h ../lib/error.h \ recodext.h recode.h ../lib/getopt.h merged.lo merged.o : merged.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h mixed.o: mixed.c common.h ../config.h xalloc.h argmatch.h ../lib/error.h \ recodext.h recode.h mule.lo mule.o : mule.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h names.lo names.o : names.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h hash.h outer.lo outer.o : outer.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h hash.h decsteps.h inisteps.h \ tersteps.h permut.lo permut.o : permut.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h quotearg.lo quotearg.o : quotearg.c ../config.h quotearg.h xalloc.h quoted.lo quoted.o : quoted.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h recode.lo recode.o : recode.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h ../lib/getopt.h hash.h request.lo request.o : request.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h rfc1345.lo rfc1345.o : rfc1345.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h rfc1345.h strip-data.lo strip-data.o : strip-data.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h strip-pool.lo strip-pool.o : strip-pool.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h task.lo task.o : task.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h ../lib/getopt.h testdump.lo testdump.o : testdump.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h hash.h texinfo.lo texinfo.o : texinfo.c common.h ../config.h xalloc.h \ argmatch.h ../lib/error.h recodext.h recode.h ucs.lo ucs.o : ucs.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h utf16.lo utf16.o : utf16.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h utf7.lo utf7.o : utf7.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h base64.h utf8.lo utf8.o : utf8.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h varia.lo varia.o : varia.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h vn.lo vn.o : vn.c common.h ../config.h xalloc.h argmatch.h \ ../lib/error.h recodext.h recode.h xmalloc.lo xmalloc.o : xmalloc.c ../config.h ../lib/error.h xalloc.h info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-libLTLIBRARIES install-binPROGRAMS install-exec: install-exec-am install-data-am: install-man install-includeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-libLTLIBRARIES uninstall-binPROGRAMS \ uninstall-man uninstall-includeHEADERS uninstall: uninstall-am all-am: Makefile $(ANSI2KNR) $(LTLIBRARIES) $(PROGRAMS) $(MANS) \ $(HEADERS) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) \ $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(includedir) mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \ mostlyclean-libtool mostlyclean-krextra mostlyclean-kr \ mostlyclean-binPROGRAMS mostlyclean-tags \ mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-libLTLIBRARIES clean-compile clean-libtool \ clean-krextra clean-kr clean-binPROGRAMS clean-tags \ clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-libLTLIBRARIES distclean-compile \ distclean-libtool distclean-krextra distclean-kr \ distclean-binPROGRAMS distclean-tags distclean-generic \ clean-am -rm -f libtool distclean: distclean-am maintainer-clean-am: maintainer-clean-libLTLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ maintainer-clean-krextra maintainer-clean-kr \ maintainer-clean-binPROGRAMS maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \ clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \ uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \ distclean-compile clean-compile maintainer-clean-compile \ mostlyclean-libtool distclean-libtool clean-libtool \ maintainer-clean-libtool mostlyclean-krextra distclean-krextra \ clean-krextra maintainer-clean-krextra mostlyclean-kr distclean-kr \ clean-kr maintainer-clean-kr mostlyclean-binPROGRAMS \ distclean-binPROGRAMS clean-binPROGRAMS maintainer-clean-binPROGRAMS \ uninstall-binPROGRAMS install-binPROGRAMS install-man1 uninstall-man1 \ install-man uninstall-man uninstall-includeHEADERS \ install-includeHEADERS tags mostlyclean-tags distclean-tags clean-tags \ maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \ installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ all-redirect all-am all installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean $(srcdir)/decsteps.h: stamp-steps $(srcdir)/inisteps.h: stamp-steps $(srcdir)/tersteps.h: stamp-steps stamp-steps: $(C_STEPS) merged.c @echo "Updating {dec,ini,ter}steps.h" @(cd $(srcdir) && grep -h '^module_' $(C_STEPS) merged.c ) \ | sed 's/ .*//' > liste.tmp @sed 's/\(.*\)/bool \1 PARAMS ((struct recode_outer *));/' \ liste.tmp > decsteps.tmp @sed 's/\(.*\)/void del\1 PARAMS ((struct recode_outer *));/' \ liste.tmp >> decsteps.tmp @sed 's/\(.*\)/ if (!\1 (outer)) return false;/' \ liste.tmp > inisteps.tmp @sed 's/\(.*\)/ del\1 (outer);/' \ liste.tmp > tersteps.tmp @rm liste.tmp @if cmp -s $(srcdir)/decsteps.h decsteps.tmp; then rm decsteps.tmp; \ else mv decsteps.tmp $(srcdir)/decsteps.h; fi @if cmp -s $(srcdir)/inisteps.h inisteps.tmp; then rm inisteps.tmp; \ else mv inisteps.tmp $(srcdir)/inisteps.h; fi @if cmp -s $(srcdir)/tersteps.h tersteps.tmp; then rm tersteps.tmp; \ else mv tersteps.tmp $(srcdir)/tersteps.h; fi @echo timestamp > $(srcdir)/stamp-steps main.o: main.c ../config.status #main.o: common.h recode.h (should be automatic?) outer.o: stamp-steps $(srcdir)/merged.c: mergelex.py $(L_STEPS) (cd $(srcdir) && cat $(L_STEPS)) \ | $(PYTHON) $(srcdir)/mergelex.py > merged.tm1 $(LEX) -t8 merged.tm1 > merged.tm2 grep -v '^# *line [0-9]' merged.tm2 > $(srcdir)/merged.c rm merged.tm1 merged.tm2 $(srcdir)/recode.1: recode @if test -r $@ && test ! -w $@; then \ echo "WARNING: Page \`$@' read only, not updated"; \ elif $(PERL) $(top_srcdir)/doc/help2man --output=$@ ./recode; then \ echo "Page \`$@' has been updated"; \ else \ echo "WARNING: Page \`$@' has *not* been updated."; \ echo " It might be that \`Perl' is missing on your system,"; \ echo " but you may safely and merely ignore this error."; \ fi # 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: recode-3.6/src/ChangeLog0100644000000000000000000037012007233063063013670 0ustar rootroot2001-01-22 Bruno Haible * hash.c: Avoid use of undefined macros HAVE_DECL_MALLOC/FREE. 2001-01-03 Bruno Haible * recodext.h (put_byte): Don't use "void" type expressions in conditional expressions. Works around a compilation failure with old Solaris cc. 2000-12-19 Jim Meyering * localcharset.c: Improve WIN32 macrology. (locale_charset): Increase size of buffer. 2000-12-06 Bruno Haible * names.c (disambiguate_name): When DEFAULT_CHARSET is not set, use "char". * main.c (usage): Modified default charset. 2000-12-05 Bruno Haible * Updated to libiconv 1.5. * iconv.c (_libiconv_version): New variable. * iconv.c: Include libcharset.h. (loop_funcs): New structure. Treat encodings_local.def like encodings.def. Include loops.h. (iconv): Move the bulk of the code to loop_unicode.h. (iconvctl): Extend determination of TRIVIALP to wchar_t conversion descriptors. * localcharset.c: New file, from libiconv-1.5. * Makefile.am (librecode_la_SOURCES): Add localcharset.c. (DEFS): Override automake default. * iconv.c (iconv): Use ucs4_t instead of wchar_t. Make transliteration optional. * iconv.c (iconv_open): Strip off //TRANSLIT suffix from names. Set transliteration on if and only if tocode ends in //TRANSLIT. 2000-10-24 Bruno Haible * xmalloc.c, xalloc.h: Move here from lib/. * Makefile.am (noinst_HEADERS): Add xalloc.h. (librecode_la_SOURCES): Add xmalloc.c. Reported by Tomasz KÅ‚oczko . 2000-10-24 Bruno Haible * main.c (main): Remove libtool's "lt-" prefix from program_name. 2000-10-15 Bruno Haible * Makefile.am (inisteps.h): New target, depend on stamp-steps. (tersteps.h): Likewise. (noinst_HEADERS): Add tersteps.h. 2000-08-30 Bruno Haible * outer.c: Include "hash.h". 2000-08-18 François Pinard * html.c: Add XML-standalone, and h0 for an alias. Reported by Frederic Gobry. 2000-08-07 François Pinard * html.c (transform_ucs2_html): Correctly encode decimal values. Reported by Daniel Taupin. 2000-07-01 François Pinard * main.c (main): Free the rewritten request after decoding it. * task.c (recode_new_task): Return NULL, not false. Reported by Jim Meyering. 2000-06-30 Bruno Haible * libiconv.c (transform_with_libiconv): Allocate a second iconv_t, converting to UTF-8. Pass it to wrapped_transform. (wrapped_transform): Add a conversion_to_utf8 argument. Set transliteration off at the beginning, and enable it when necessary. Add assertions. Better EILSEQ treatment. Implement E2BIG and EINVAL treatment. In case of unknown error, complain with RECODE_SYSTEM_ERROR, not RECODE_INVALID_INPUT. At EOF, don't forget to drain the buffers and return to the initial state. 2000-06-29 François Pinard Prepare for further plugging of memory leaks. * outer.c (unregister_all_modules): New function. (recode_delete_outer): Call it. * afrtran.c, african.c, cdcnos.c, bangbang.c, testdump.c, rfc1345.c, libiconv.c, flat.c, base64.c, dump.c, ebcdic.c, ucs.c, utf7.c, atarist.c, lat1ltex.c, texinfo.c, iconqnx.c, lat1txte.c, mule.c, applemac.c, ibmpc.c, lat1asci.c, varia.c, html.c, endline.c, utf8.c, vn.c, utf16.c, permut.c, quoted.c, txtelat1.l, ltexlat1.l, ascilat1.l: Add delmodule_* functions, all empty for now. * Makefile.am (stamp-steps): Prepare tersteps.h, adjust decsteps.h. 2000-06-29 Andreas Schwab Plug some of the memory leaks in the library. * combine.c (state_free): New function. (init_combine): Use it to free hash table entries after use. * names.c (prepare_for_names): Free hash table entries after use. * outer.c (recode_delete_outer): Fix clean-up code. * recode.c (init_ucs2_to_byte): Free hash table after use. * testdump.c (produce_count): Free hash table entries and the table itself after use. Fix clean-up code. 2000-06-28 François Pinard * task.c: Insert union wait portability from GNU make. Reported by Bruno Haible. * testdump.c: New name for debug.c. (module_testdump): Renamed from test_debug. * Makefile.am (C_STEPS): Adjusted. 2000-06-27 François Pinard * main.c: Check for HAVE_STRUCT_UTIMBUF, for OpenSTEP to work. Reported by Jim Meyering and Tom Hageman. 2000-06-26 François Pinard * Makefile.am (stamp-steps): Remove p in s///p. Avoid (sometimes questionable) compiler warnings. * recodext.h (put_byte): Cast argument to char. (RETURN_IF_NOGO): Use the brace trick instead of the else trick. (RECODE_NO_SYMBOL_TYPE): New constant. * applemac.c (module_applemac): Always return a value. * combine.c (find_shifted_state, prepare_shifted_state): Declare second argument as unsigned instead of unsigned short. Strange... * debug.c (produce_count): Make a block, to avoid shadowing character. * dump.c (dump, umdump): Add superfluous parentheses. (undump): Add superfluous braces. * html.c (transform_ucs2_html): Add superfluous parentheses. * ibmpc.c (module_ibmpc): Always return a value. * mergelex.py (section1): Define YY_NO_UNPUT. * mixed.c (start_accumulation, recode_accumulated): No inline. * names.c (code_to_ucs2): Cast value to int within ? operator. (find_alias): Preset type. * recode.c (recode_format_table): Handle RECODE_NO_LANGUAGE in switch. * request.c (edit_sequence): Rename step to step2, avoid shadowing. (add_to_sequence): Simplify code by using result of REALLOC in test. (scan_charset): Rename alias to alias2, avoid shadowing. * task.c (recode_if_nogo): Rename error to new_error, avoid shadowing. * ucs.c (get_ucs2): Add superfluous parentheses. * utf16.c (transform_utf16_ucs4): Add superfluous braces. Reported by Bruno Haible. 2000-05-08 François Pinard * base64.c (transform_base64_data): Skip \r. Reported by Eli Zaretskii. 2000-04-26 François Pinard * debug.c (produce_full_dump): Do not produce header when no data. 2000-04-23 Bruno Haible * libiconv.c: Include "iconv.h". * iconv.c: Include "iconv.h" instead of "libiconv.h". * recode.c (recode_perror): Fetch errno before anything else. * task.c: Provide W* macro replacements whenever needed. (perform_pipe_sequence): Use instead of hardwired bit masks. * rfc1345.c (transform_rfc1345_ucs2): Avoid double dereference. * combine.c (combine_byte_byte, combine_ucs2_byte, combine_byte_ucs2, combine_ucs2_ucs2): Silence gcc warning. * debug.c (produce_count): Remove unused variable 'cursor'. * html.c (init_ucs2_html): Remove unused variables 'outer', 'done'. (init_html_ucs2): Likewise. (init_ucs2_html_v11, init_ucs2_html_v20, init_ucs2_html_v27, init_ucs2_html_v32, init_ucs2_html_v40, init_html_v11_ucs2, init_html_v20_ucs2, init_html_v27_ucs2, init_html_v32_ucs2, init_html_v40_ucs2): Return a value. * main.c (main): Silence gcc warning. * names.c (make_argmatch_arrays): Remove unused variable 'hash'. (list_full_charset): Remove unused variable 'ucs2'. (find_and_report_subsets): Remove unused variable 'counter'. * request.c (scan_identifier): Remove unused variable 'outer'. (add_unsurfacers_to_sequence): Return true. (scan_charset): Silence gcc warning. * task.c (perform_memory_sequence, perform_pass_sequence): Silence gcc warning. Include , needed for pipe(), fork(), dup2(), close() declarations. Include , needed for wait() declaration and W* macros. (recode_perform_task): Silence gcc warning. * utf16.c (transform_ucs4_utf16): Remove unused variables 'character', 'chunk'. * utf7.c (transform_utf16_utf7): Remove unused variable 'character'. * vn.c (module_vietnamese): Return true. * outer.c (module_libiconv): New declaration. 2000-03-14 Bruno Haible * iconv.c: Updated to libiconv 0.3, 1.0, 1.1, then 1.2. 2000-03-03 François Pinard * Makefile.am (C_FALLBACKS): Replace lat1texi.c by texinfo.c. * texinfo.c: New module. * lat1texi.c: Deleted. 2000-03-01 Karl Eichwalder * lat1texi.c: Add @exclamdown{}, @questiondown{}, @AA{}, @O{}, @ss{}, @aa{}, @`i, @'i, and @o{}. 2000-02-06 François Pinard * recodext.h: Some structures progressively shifted their meaning with recode evolving, time for some global nomenclature changes: symbol is now alias, charset is now symbol, charset_type is data_type. (struct recode_symbol): Rename charset_data to data, replace charset_flag with type. * All adjusted. 2000-02-05 François Pinard * recodext.h, freeze.c, request.c, outer.c: Implement tree_charset. 2000-01-28 François Pinard * quotearg.c, quotearg.h: New files, from elsewhere. * Makefile.am: Adjusted. * common.h, names.c, main.c: Adjusted for new argmatch call. 2000-01-26 François Pinard * main.c (main): Write version in two blocks rather than three. Reported by Jim Meyering. 2000-01-12 Akim Demaille * lat1texi.c: Updated to newer Texinfo commands. That is, change @ptexc to @, and @ptexi to @dotless{i}. 1999-12-30 François Pinard * main.c (main): Rephrase some error messages so they are less telegraphic, add a few messages to better explain some errors. 1999-12-29 François Pinard * mixed.c (struct mixed): Delete original_task. (start_accumulation): New name for plumb_input_to_buffer. (recode_accumulated): Merges previous plumb_buffer_to_output, a call to recode_perform_task, and previous plumb_input_to_output. Usages adjusted accordingly. 1999-12-28 François Pinard * iconv.c: New file, from Bruno Haible's libiconv 0.2. * libiconv.c: Now unconditional. Do not include . * outer.c, request.c: Presume WITH_LIBICONV, do not test it. * Makefile.am: Adjusted. (INCLUDES): Include $(top_srcdir)/libiconv. 1999-12-24 François Pinard * recodext.h: Introduce RECODE_SUBTASK. * All: Adapt everywhere to use subtask instead of step/task pairs. * task.c (recode_if_nogo): New function. * recodext.h: Declare it. (SET_TASK_ERROR, RETURN_IF_NOGO): Use it. 1999-12-22 François Pinard * vn.c (viscii_viqr_data, viscii_vni_data): Final DONE was missing. (viscii_vni_data): Latin-1 characters were sign extended. Reported by Nguyên-Ðai Quý. 1999-12-20 François Pinard * libiconv.c: New file. * outer.c (internal_iconv, declare_libiconv) [WITH_LIBICONV]: New functions. (register_all_modules): Initialise libiconv_pivot. [WITH_LIBICONV]: Call module_iniconv. * recodext.h: Declare transform_with_libiconv. (struct recode_outer): Declare declare_libiconv and libiconv_pivot. * request.c: Recognise and handle a double libiconv step. * Makefile.am (librecode_la_SOURCES): Add libiconv.c. (noinst_HEADERS): Add libiconv.h. 1999-12-18 François Pinard * vn.c: New file. * Makefile.am: Adjusted. Reported by Nguyên-Ðai Quý. 1999-12-14 François Pinard * mergelex.py: Python version of mergelex.awk. * mergelex.awk: Deleted. * Makefile.am: Adjusted. * Makefile.am: Adapt to the gettext scheme used in wdiff. 1999-12-13 François Pinard * recode.c (recode_error, recode_perror) [!__STDC__]: Use const. Reported by Peter Turcan. * quoted.c (transform_quoted_printable_data): Renamed from transform_quoted_printable_byte. Correct an error by which a newline could be spuriously transported over. Revised to better report canonicity errors and invalid input. Reported by Hrvoje Niksic. 1999-12-12 François Pinard * base64.c (transform_base64_data): Better handle end of lines. Non canonical input was too often reported as invalid. Reported by Hrvoje Niksic. * html.c (transform_html_ucs2): Revise echoing code. With -d, the original HTML string could be copied after its recoded value. Correct character interval tests for numeric conversions. * html.c: Merge main_translations and other_translations into a single array named translations. Merely relate -d to non-ASCII. Reported by Andreas Frick. * html.c: Explicit the 0 prefix in the translations table, instead of implying through the ENTRY macro. It seems NextSTEP 3.3, OpenSTEP 4.2 and MacOS X Server 1.02 do not accept empty slots for third arguments to ENTRY. Reported by Tom Hageman. 1999-11-10 François Pinard * html.c (transform_ucs2_html): Pass HT undisturbed. Reported by Andreas Frick. 1999-09-21 Andreas Schwab * main.c (main): Always read the file attributes and restore the permission bits when recoding in place. 1999-08-17 François Pinard * recode.h, recodext.h: Make C++ safe. Reported by Bruno Haible. * html.c (transform_html_ucs2): Expérimentation... FIXME! 1999-07-26 François Pinard * main.c (main): Adjust diagnostics so to quote step names. Reported by Per Starback. 1999-06-22 François Pinard * Makefile.am (recode.1): New goal, rewritten more simply that the previous one in doc/. Use --output with help2man. Do not force LANGUAGE=C anymore since help2man does it internally. (PERL): Define to perl. (man_MANS): Added. (EXTRA_DIST): Include $(MANS). This should force regeneration of the man page with the correct version, in distributions. Reported by Brendan O'Dea, Santiago Vila Doncel and Scott Schwartz. 1999-04-18 François Pinard * request.c (scan_charset): Ignore implied surfaces when the only goal is making headers. Reported by Laurent Bourbeau. 1999-04-07 François Pinard * main.c (main): Update copyright years. Reported by Laurent Bourbeau. 1999-04-02 François Pinard * combine.c: Document from a message. 1999-03-29 Andreas Schwab * atarist.c: Fix encoding table based on Omega (extended TeX with Unicode) translation tables. 1999-03-17 François Pinard * ucs.c (module_ucs): Declare co as an alias for combined, so the manual stays true. count-characters was making it ambiguous. 1999-03-16 Andreas Schwab * combine.c (init_explode, init_combine): Return early if there is no step table. 1999-03-17 François Pinard * debug.c (produce_count): Use hash_insert as per last hash.[ch]. * combine.c (init_explode, prepare_shifted_state): Idem. * html.c (init_ucs2_html, init_html_ucs2): Idem. * names.c (find_symbol, declare_alias): Idem. * recode.c (init_ucs2_to_byte): Idem. 1999-03-07 François Pinard * common.h: Work around EXIT_FAILURE being defined to zero on Sony NEWS-OS Release 4.0C. Reported by Akim Demaille. 1999-01-17 François Pinard * names.c (list_all_charsets): Include implied surfaces in listing. (compare_struct_symbol): Sort charsets before aliases. 1999-01-16 François Pinard * recodext.h: Rename struct recode_entry to recode_symbol, and recode_outer field entry_table to symbol_table. Also introduce typedefs RECODE_SYMBOL and RECODE_CONST_SYMBOL. * names.c: Adjusted. Rename name_hasher to symbol_hasher, name_comparator to symbol_comparator, prepare_for_names to prepare_for_symbols, compare_struct_name to compare_struct_symbol, many variables from entry to symbol. * outer.c: Adjusted. * recodext.h: Move field usual_surfaces from struct recode_charset to struct recode_symbol, renaming it implied_surfaces. Rename function find_charset to find_symbol, enum charset_find_type to symbol_find_type, CHARSET_ constants to SYMBOL_ constants, then SYMBOL_FIND_OR_CREATE to SYMBOL_CREATE_CHARSET. * request.c, main.c, names.c, outer.c, request.c: Adjusted. * names.c (declare_implied_surface): Rename declare_usual_surface. Directly accept a symbol and a surface instead of names. * recodext.h: Adjusted. Add crlf_surface and cr_surface to struct recode_outer. * outer.c: Initialize them. * applemac.c, freeze.c, ibmpc.c, request.c: Adjusted. Use them. 1999-01-12 François Pinard * ucs.c (get_ucs2): Skip byte order marks, and never return them to the application. Also skip swapped byte order marks once processed. Only the initial byte order mark, swapped or not, was skipped. * task.c (perform_memory_sequence, perform_pass_sequence): Reset the swap_input field of subtask to RECODE_SWAP_UNDECIDED between passes. * utf8.c (transform_utf8_ucs4): Parenthesize masking expressions, because the & operator has less priority than ==. Reported by Dominique Schmit. 1999-01-07 François Pinard * debug.c (module_debug): Rename count to count-characters, and full-dump to dump-with-names. * ucs.c (module_ucs): Rename combined to combined-UCS-2. 1999-01-06 François Pinard * common.h (enum recode_step_type): Add RECODE_COMBINE_EXPLODE. (struct recode_single): Add initial_step_table. * outer.c (new_single_step): Initialise initial_step_table to NULL. (declare_explode_data): Save the explode data in both created single steps. Do not save it to the charset, unless data is for UCS-2 conversions. Otherwise, two different exploding steps over the same charset might compete while saving their data. * request.c (add_to_sequence): Set step_table to initial_step_table. If not NULL, set type to RECODE_COMBINE_EXPLODE. * combine.c (init_combine, init_explode): Obtain the raw data from the step structure, instead of from the before or after charset. Reported by Laurent Bourbeau. * recode.h: Typedef RECODE_OUTER, RECODE_REQUEST, RECODE_TASK, RECODE_CONST_CHARSET and RECODE_CONST_REQUEST. Rename _init_ functions to _new_, which return freshly allocated structures instead of modifying statically allocated ones. Rename _term_ functions to _delete_, which free their argument. * recodext.h: New installable include file for external programs wanting to dynamically add new internal steps. Typedef RECODE_CHARSET, RECODE_STEP, RECODE_OPTION_LIST, RECODE_CONST_OUTER, RECODE_CONST_STEP, RECODE_CONST_TASK and RECODE_CONST_OPTION_LIST. Move all recode specific internal definitions over from recode.h and common.h. * common.h: Declare bool or include stdbool.h, now that recode.h does not do it anymore. Include redodext.h instead of recode.h. * All: Adjusted to use the above changes, or comply with them. * Makefile.am: Distribute and install recodext.h. * debug.c (compare_item): Use const at proper level. * varia.c: New name for cyrillic.c, as the contained tables are not that Cyrillic, after all! :-) (module_varia): New name for module_cyrillic. Add LUKAS and MARTIN parametrisation. Use Kamenicky instead of KAMENICKY. 1999-01-05 François Pinard * outer.c (declare_explode_data): New function. * combine.c (init_explode, init_combine): Adjusted. * ucs.c (init_combined_ucs2): Adjusted. * common.h, african.c, cyrillic.c: Adjusted. * debug.c: New name for fulldump.c. Add test-7, test-8, test-15 and test-16 pseudo-surfaces. Add count pseudo-charset. * Makefile.am: Adjusted. 1999-01-04 François Pinard * cyrillic.c: New file. * combine.c (init_combine): Handle empty expansions. * Makefile.am: Adjusted. Reported by Lukas Petrlik and Martin Mares. * outer.c (register_explode_data): New routine. * african.c (module_african): Use it. * names.c (list_full_charset_line): New function. (list_full_charset): Use it. Handle RECODE_EXPLODE_DATA case. * Makefile.am: Adjusted to handle strip-pool.c and strip-data.c instead of pool.c and tables.c. * html.c: Some code was missing for HTML to UCS-2 recoding to work. Reported by Ricard Torres. * recode.h: Add enum recode_step_type. Replace byte_to_byte and byte_to_variable step fields with step_type and step_table. * bangbang.c, cdcnos.c, ebcdic.c, ibmpc.c, lat1asci.c, lat1ltex.c, lat1texi.c, lat1txte.c, recode.c, request.c, task.c: Adjusted. * request.c (table_type): Rewritten to use the new enum recode_step_type, instead of a local enum table_type. * combine.c: Use step_table instead of local, in step fields. * recode.h: Rename struct known_pair to recode_known_pair and enum swap_input to recode_swap_input. Rename struct ucs2_data_table to strip_data, field table in recode_charset field to charset_data, function declare_ucs2_data to declare_strip_data. Delete the KNOWN_PAIR and UCS2_DATA_TABLE typedefs. * applemac.c, atarist.c, common.h, freeze.c, ibmpc.c, names.c, outer.c, recode.c, recode.h, request.c: Adjusted. * names.c (name_for_argmatch): New name for cleanup_charset_name. (disambiguate_name): New name for clean_charset_name, make it static. * recode.h: Do not declare clean_charset_name. * utf8.c (transform_ucs4_utf8) [!HANDLE_32_BITS]: If bit 2^31 is set, output nothing, as invalid input is not a character. [HANDLE_32_BITS]: Output a 7 byte UTF-8 like sequence. (transform_utf8_ucs4): Do not infloop on invalid byte. Reorganise code so output may be inhibited on invalid input. Reported by Andreas Schwab. 1999-01-03 François Pinard * recode.h (struct recode_outer): Parallel the argmatch arrays with realname arrays. * names.c (make_argmatch_walker_2): Build realname arrays as well. (make_argmatch_arrays): Free argmatch items, allocate realname arrays. (find_charset): When creating, save the real name, not the argmatch. (declare_alias): Save the real name, not the argmatch. (clean_charset_name): Return the real name instead of the argmatch. * names.c (compare_strings): New function. (compare_struct_name): Use it. (list_all_charsets): Do not print charset names in list of aliases. Reported by Laurent Bourbeau. * html.c: Remove included space within RFC1866 and RFC2070 aliases. 1999-01-01 François Pinard * african.c, fulldump.c, html.c, outer.c, rfc1345.c, ucs.c, utf16.c, utf7.c, utf8.c: Use ISO-10646-UCS-2 and ISO-10646-UCS-4, previous UCS-2 and UCS-4 become aliases. * utf7.c: Use UNICODE-1-1-UTF-7, previous UTF-7 becomes an alias. * ucs.c: Add UNICODE-1-1 as an alias for UCS-2. 1998-12-31 François Pinard * Makefile.am (outer.o): Depend on stamp-steps, so parallel makes rebuild decsteps.h and inisteps.h in time for compiling outer.c. * names.c (clean_charset_name): Use DEFAULT_CHARSET in environment. * main.c (usage): Tells about DEFAULT_CHARSET. 1998-12-30 François Pinard * afrsort.c: Deleted, the experiment is driven elsewhere. * Makefile.am (C_STEPS): Adjusted. 1998-12-27 François Pinard * main.c (task_perror): Correct typo in message. Reported by Martin Mares. 1998-12-25 Andreas Schwab * combine.c (combine_byte_byte): Read bytes, not UCS2 codes. 1998-12-15 François Pinard * fulldump.c: New module. * Makefile.am: Adjusted. Reported by Roman Czyborra. * names.c (list_full_charset): Select language for charname output. * fr-charname.c: New module, adapated from charname.c. * Makefile.am, common.h: Adjusted. 1998-12-14 François Pinard * names.c (make_argmatch_arrays): Free previous arrays if any. 1998-12-13 François Pinard * html.c: Delete HTF and Entities as aliases. * recode.c (recode_error): Deleted; then new name for recode_warn. (recode_perror): New function. * common.h: Adjusted. Delete RECODE_IO_DEBUG related code. (PERROR, PERROR1, PERROR2): Deleted, as recode_perror now exists. * mixed.c, recode.c, request.c, task.c: Adjusted. * main.c (main): Directly call error, rather than PERROR macros. (error_print_prefix): Deleted, and so for error_{file,line}_reference. * argmatch.c, argmatch.h, hash.c, hash.h: Moved in from lib, so the recode library has these. * Makefile.am: Adjusted. 1998-12-12 François Pinard * african.c: Rewritten to take better advantage of combining UCS-2. * afrtran.c: Also part of rewriting to handle transliterations. * afrsort.c: New file, this is for some unrelated experiments. * african.h, afrful.l, afrl1.l, afrlin.l: Deleted. * Makefile.am: Adjusted. * main.c (main): Properly follow the chain of singles when strict mode gets installed, so avoiding an infinite loop. 1998-12-08 François Pinard * main.c (long_options): Recognise --find-subsets, it was missing. * combine.c: New file. * Makefile.am, common.h: Adjusted. * ucs.c: Declare combining_data. (init_combined_ucs2, init_ucs2_combined): New functions. (module_ucs): Introduce combined as a charset. * common.h: Rename GET_BYTE and PUT_BYTE to get_byte and put_byte. * All callers adjusted. 1998-12-07 François Pinard * outer.c (register_all_modules): Write ISO-8859-1 instead of ISO_8859-1, so the -l sorted listing looks better. * afrl1.l (module_l1): Idem. * african.h (declare_jucas): Idem. Reported by Laurent Bourbeau. 1998-11-24 Eli Zaretskii * main.c (main) [DOSWIN_OR_OS2]: Use getpid to construct temporary file name in the DJGPP version. * task.c (perform_memory_sequence): Copy error information from the subtask to the parent task. (perform_pass_sequence): Likewise. (L_tmpnam): Define only if not defined, e.g., by . (DOSWIN_OR_OS2): Letter-case change (was DOSWIN_or_OS2). [DOSWIN]: Include headers that declare O_BINARY and friends. (recode_perform_task) [DOSWIN_OR_OS2]: Don't switch console device to binary mode. Move case RECODE_SEQUENCE_WITH_PIPE before RECODE_SEQUENCE_WITH_FILES, so that system which do not HAVE_PIPE fall back on files. 1998-11-24 François Pinard * main.c: Implement --source=PO. (transform_c_source): Moved into mixed.c. (usage): Adjusted to mention PO as a possible language. * mixed.c: New file. (transform_po_source): New function. * common.h: Add prototypes for mixed.c. * Makefile.am (recode_SOURCES): Add mixed.c. 1998-11-23 François Pinard * common.h: Define DOSWIN and DOSWIN_OR_OS2 appropriately. * task.c: Change MSDOS to DOSWIN and MSDOS_OR_OS2 to DOSWIN_OR_OS2. * main.c: Idem. Also remove old Borland compatibility code. Reported by Eli Zaretskii. 1998-11-22 François Pinard * common.h: Do not use pipes on Amiga. Reported by Stefan Haubenthal. * common.h: Declare recode_freeze_tables. Reported by Stefan Haubenthal. 1998-11-03 François Pinard * common.h: Declare errno. Use error.h instead of prototypes. * main.c, recode.c: Do not declare errno. * outer.c, request.c, task.c: New files from parts of recode.c. * Makefile.am, common.h, recode.c: Adjusted. 1998-11-02 François Pinard * names.c: New name for charset.c. * Makefile.am: Adjusted. * names.c (prepare_for_names): New name for prepare_charset_initialisation. * common.h, recode.c (register_all_modules): Adjusted. * recode.h: Declare recode_ucs2, use it. * african.c, african.h, atarist.c, charname.h, charset.c, common.h, freeze.c, html.c, recode.c, rfc1345.c: Use recode_ucs2. Rename fields from ucs2 to code whenever possible. * html.c: Merge of ucs2html.c and htmlucs2.l. * htmlucs2.l, ucs2html.c: Deleted. * Makefile.am: Adjusted. Add L_SURFACES, H_FALLBACKS, C_FALLBACKS and L_FALLBACKS. Use them. 1998-11-01 François Pinard * ucs2html.c: Define V11, V20, V27, V32, V40 and ENTRY macros. Use them while defining HTML initialisation tables. (init_ucs2_html): Add a mask argument, use it. (init_ucs2_html_v11, init_ucs2_html_v20, init_ucs2_html_v27, init_ucs2_html_v32, init_ucs2_html_v40): New functions. (module_ucs2_html): Declare various HTML levels and related aliases. * applemac.c, bangbang.c, cdcnos.c, ebcdic.c, ibmpc.c, lat1asci.c, lat1ltex.c, lat1texi.c, lat1txte.c, recode.c, ucs2html.c: Rename before and after to before_options and after_options. * recode.c (edit_sequence): Allow printing data as charset. * recode.h (struct recode_step): Add term_routine. * recode.c (scan_charset, scan_unsurfacers): Diagnose unrecognised surface names. 1998-10-31 François Pinard * charset.c (decode_known_pairs): Revised to use strtoul, so allowing octal and hexadecimal input, not only decimal. 1998-10-27 François Pinard * recode.h (struct recode_outer): Add quality_byte_to_ucs2, quality_ucs2_to_byte, quality_ucs2_to_variable and quality_variable_to_ucs2. * recode.c (recode_init_outer): Adjusted. * recode.c (ucs2_to_byte_hash, ucs2_to_byte_compare): New routines. (init_ucs2_to_byte): New routine, preparing an hash table. (transform_ucs2_to_byte): Hash lookups instead of linear searches. (declare_ucs2_data): Manage so init_ucs2_to_byte will be called. * All modules: Prefer unsigned, bool or size_t, try to avoid int. * recode.h: Rename all variables names having one_to_one in them to corresponding names with byte_to_byte, one_to_many to byte_to_variable, many_to_one to variable_to_byte, many_to_many to variable_to_variable, reversible to byte_reversible. Similarily for enum constants by such names, but capitalised. * All modules: Adjusted. * ucs2html.c: Use local in step, instead of a static variable. * Makefile.am (main.o): Explicitly depend on common.h and recode.h, as using an explicit rule defeats Automake dependencies. * recode.h: Split struct recode_step into struct recode_single and struct recode_step. In recode_request, have the sequence array to contain actual steps, instead of pointers to steps. * main.c, recode.c: Adjusted. 1998-10-26 François Pinard * recode.c (scan_charset): Return options in the before charset. (scan_request): Save returned options and reinject them. Add some more error detection and reporting. * recode.c (reversibility): New function, a dummy. (new_single_step): Initialise fallback_routine. * common.h: Declare reversibility. * recode.h: Use typedefs for methods. (recode_step): Declare fallback_routine. (recode_outer): Add auto_reversibility, with the reverse meaning of strict_mapping, which gets deleted. * atarist.c, applemac.c, dynamic.c, endline.c, ibmpc.c, main.c: Adjusted. * recode.h (struct recode_outer): Rename hash_table to entry_table. * recode.c (recode_term_outer): Adjusted. * recode.h (struct recode_entry): New name for struct recode_hash. Remove next field since new hash routines handle overflow entries. * charset.c: Use new hash routines. Old hashing code deleted. (find_and_report_subsets): * htmlucs2.l (module_html_ucs2), ucs2html.c (module_ucs2_html): Remove www and w3 as aliases for html. * dump.c (module_dump): Remove /h and /h1 as aliases for /x. Remove /h2 as an alias for /x2. Remove /h4 as an alias for /x4. 1998-10-24 François Pinard * main.c: Implement option -F, for experimenting. * dynamic.c: New file. * Makefile.am: Adjusted. 1998-10-23 François Pinard * mule.c: Implement Latin-2 correspondence, not only Latin-1. 1998-10-20 François Pinard * Makefile.am (main.o): Depend on config.status, for version. 1998-10-14 François Pinard * ucs2html.c: Corrected a comment from hybar to hibar. Reported by Wiel Seuskens. * htmlucs2.l: Accept &#XNNNN as well as &#xNNNN. Reported by Martin J. Dürst. 1998-10-13 François Pinard * ucs2html.c: New file, adapted from lat1html.c. Also generate decimal &NNNN; notation whenever needed. * htmlucs2.l: New file, adapted from htmllat1.l. Also accept the hexadecimal &#xNNNN; notation. * lat1html.c, htmllat1.l: Deleted. * Makefile.am: Adjusted. Reported by Christian Rolland, Florian Oelmaier, Markus Kuhn and Martin J. Dürst and Wiel Seuskens. 1998-09-01 François Pinard * african.c (transform_juca_to_translit): Use get_ucs2, for handling possible byte order marks in input stream. * main.c: Do not let --strict imply --force anymore. Unless --strict, ignore lack of canonicity. * common.h: Include xalloc.h. * main.c: Do not include xmalloc.h. * recode.c (recode_init_task): Save task for later diagnostic. * main.c (main): Change format for reporting task being in error. (task_perror): Capitalize task error messages. 1998-03-04 François Pinard * endline.c (transform_cr_data): Copy character after CR. 1998-02-18 François Pinard * main.c (usage): Do not refer to -o, which does not exist anymore. Reported by Laurent Bourbeau. 1998-01-19 François Pinard * mule.c (transform_mule_latin): Remove strings of prefixes which occur in a row. Emacs sometimes does such things, sadly enough. 1998-01-12 François Pinard * main.c (task_perror): New function. (main): Use it to explain the error more precisely. * recode.h (struct recode_task): Add error_at_step field. * ucs.c (get_ucs2, get_ucs4): Use a step argument. * common.h: Prototypes adjusted. (RETURN_IF_NOGO, SET_TASK_ERROR): Use a step argument. * All callers changed. Reported by Santiago Vila Doncel. 1998-01-08 François Pinard * common.h, main.c: Check for the MSDOS define, not __DJGPP__. * charset.c (find_charset): Initialise the usual_surfaces field. * utf16.c (transform_utf16_ucs2): Write the replacement character in two bytes, not four. 1998-01-07 François Pinard * african.h, african.c, afrful.l, afrl1.l, afrlin.l: New files. * Makefile.am: Adjusted. 1997-12-25 François Pinard * recode.c (BUFFER_SIZE): Make it 16K. On the stack even for MSDOS. * main.c (_stklen): Make it 64K. * (main): Delete ftime related code for Borland C, as the supported MSDOS port is now for DJGPP. * common.h [!__DJGPP__]: Define HAVE_PIPE. This was once autoconfigured, but DJGPP astonishingly offers a dummy pipe! Reported by Eli Zaretskii. 1997-12-16 François Pinard * recode.c (edit_sequence): Do not check if last printed charset is a surface, when there is no such last printed charset. 1997-12-15 François Pinard * rfc1345.c: Use initialiser functions, and a local structure containing the intro character. * recode.c (scan_identifier): New name for scan_name. (scan_options): New function, returning an option list. (scan_unsurfacers, scan_charset): Use it. (declare_step): Change prototype of initialisation function, so they accept two option lists, one for before and another for after. * recode.h (struct recode_option_list): New structure. (struct recode_step): Add a local field. * common.h (declare_step): Prototype adjusted. * applemac.c, bangbang.c, cdcnos.c, ebcdic.c, ibmpc.c, lat1asci.c, lat1html.c, lat1ltex.c, lat1texi.c, lat1txte.c: Adjusted. * ibmpc.c (module_ibmpc): Properly set transform routines while declaring steps. They wrongly became NULL somewhere before 3.4f. 1997-12-14 François Pinard * charset.c (compare_struct_hash): Use if-tests for checking packed bools, as doing arithmetic on them is not portable. Reported by Eric Backus. * charset.c (find_and_report_subsets): Ensure end of lines. Reported by Andreas Schwab. 1997-12-12 François Pinard * common.h: Declare get_byte_helper and put_byte_helper, not get_byte and put_byte, and get_byte_helper only when USE_HELPERS. Reported by Eric Backus. 1997-12-09 François Pinard * main.c (usage): Revise. * main.c (main): Implement -f. If not selected while recoding a file over itself, abort recoding on first error, then discard the temporary output file. 1997-12-08 François Pinard * dump.c (module_dump): Return true if nothing fails! Reported by Eric Backus. 1997-12-07 François Pinard * recode.c (get_byte_helper): New function. * common.h: Introduce the USE_HELPERS switch, which may be used to trade some speed to gain a bit of code space. Currently unused. * dump.c: Remove semicolons after TRANSFORM calls. * recode.h: Get rid of all int's in favour of unsigned or size_t. Reorganise structures a bit. 1997-12-06 François Pinard * mule.c: New file, implementing Latin-1 correspondence only. * Makefile.am: Adjusted. * recode.h: Replace enum recode_quality by a struct containing two enum recode_size fields and a few flags. Add preset qualities in struct recode_outer to replace previous quality constants. * All: Quality constants replaced to use the recode_outer fields. * recode.c (estimate_step_cost): New function. (recode_init_outer): Initialise preset qualities. 1997-12-05 François Pinard * recode.h (struct recode_task, struct recode_step): For enum type bitfields other than bool, allow one more bit for the sign, as the HP/UX 10.20 compiler generates spurious sign extension. Such created negative values do not compare well with enum constants. Reported by Eric Backus. * ucs.c (get_ucs2): Read middle stream byte order marks as perfectly valid, transmitted zero-width non-breaking spaces. Reported by Martin J. Dürst. * charset.c (find_and_report_subsets): New function. * common.h: Add prototype. * main.c: Implement --find-subsets option, also -T. 1997-12-04 François Pinard * main.c: Replace show_restricted_charsets, a flag, by the string charset_restrictions, because decoding -k value should be delayed to after the library has been initialised. Remainder adjusted. * main.c (transform_c_source): New function. (main, long_options, usage): Implement --source option. * recode.h (struct recode_task): Add byte_order_mark field. * ucs.c (get_ucs2): Do not require an initial byte order mark unless byte_order_mark is true. * utf7.c (transform_utf7_utf16): Do not generate an initial byte order mark unless byte_order_mark is true. * utf16.c (transform_ucs4_utf16, transform_utf16_ucs2): Idem. * recode.c (transform_one_to_ucs2): Idem. (perform_memory_sequence, perform_pass_sequence): Let subtask inherit byte_order_mark flag from task. (recode_init_task): Initialise byte_order_mark to true. Reported by Mikko Silvonen. 1997-12-03 François Pinard * recode.h (struct recode_request): Delete force_flag. * main.c (main): Raise error threshold if -f is specified. Reported by David E. A. Wilson and Hilmar Schlegel. * main.c (usage): Clarify the mandatory/optional clause. Reported by Daniel Quinlan. * recode.c (register_all_modules): Declare ISO-8859-1 instead as ISO-8859-1:1987, the later now being an alias of the former. * common.h: Include previous contents of ucs.h. * recode.c, ucs.c, utf16.c, utf7.c, utf8.c: Do not include ucs.h. * ucs.h: File deleted. * Makefile.am: Adjusted. * rfc1345.c (ucs2_to_rfc1345): Clean up. (rfc1345_to_ucs2, transform_ucs2_to_rfc1345, transform_rfc1345_to_ucs2, module_rfc1345): New routines. * Makefile.am (C_STEPS): Include rfc1345.c. Reported by Keld Jørn Simonsen and Roman Czyborra. 1997-12-02 François Pinard * recode.h: Declare struct recode_surface_list, then add a usual_surfaces field to struct recode_charset. * recode.c (scan_request): Handle the usual_surfaces field. Also, if only a charset is given in a subrequest, without any .., then imply a recoding to the default charset. (scan_check_if_last_charset): Rewritten simpler. Merely search for a textual , or .. instead of really scanning the structure. (edit_sequence): Append a slash after charsets which have usual surfaces, when no surface is used for them. * charset.c (declare_usual_surface): New function. * common.h: Declare its prototype. * applemac.c: Revise to depend on auto_cr, which is const to false. * ibmpc.c: Revise to depend on auto_crlf, which is const to false. Reported by Hennus Bergman. * recode.c (simplify_sequence): Echo sequence before simplification as well, not only after simplification. (recode_scan_request): Do not echo the sequence, call simplify_sequence instead. (decode_request): Do not call simplify_sequence. * main.c: Delete -a option and auto_check_flag. * recode.c (print_truncated_charset_name, recode_auto_check_one, recode_auto_check): Deleted. * recode.h (recode_auto_check): Prototype deleted. * charset.c (list_all_charsets): Exclude ignored charsets. 1997-12-01 François Pinard * charset.c (list_full_charset): Better align columns after mnemonics. Also give UCS-2 values in hexadecimal. (list_concise_charset): Better align columns, and attempt some elimination of trailing whitespace. Handle missing values. * common.h: Define __P to PARAMS if not defined. Reported by Erick Branderhorst. 1997-11-25 François Pinard * endline.c: New file. * Makefile.am (C_SURFACES): Adjusted. Reported by Hennus Bergman, Liisa R{ih{ and Ulrich Windl. * dump.c (undump): Rename is_short to last_is_short, and rename and inverse no_comma into comma_on_last. Initialise it so empty files will not be rejected as not canonical. * ucs.h, ucs.c: New files. * recode.c, utf7.c, utf8.c, utf16.c: Use them. * recode.h (struct recode_task): Add swap_input enum and field. * recode.c (recode_init_task): Initialise swap_input. * common.h (SET_TASK_ERROR): New, to replace IS_NOGO. * recode.c (transform_one_ucs2): Output BYTE_ORDER_MARK. * utf7.c (transform_utf7_utf16): Output BYTE_ORDER_MARK. * utf16.c (transform_ucs2_utf16, transform_ucs4_utf16, transform_utf16_ucs2): Output BYTE_ORDER_MARK. (module_utf16): Do not declare UCS-2 and UCS-4, now done in ucs.c. * Makefile.am, common.h: Adjusted. Reported by Duane Ellis. * utf16.c (module_utf16): Make Unicode an alias for UTF-16 instead of an alias for UCS-2. Reported by Ulrich Drepper. 1997-11-24 François Pinard * utf16.c (transform_ucs4_utf16): Report ambiguous output rather than invalid input, when within reserved UTF-16 range. (transform_utf16_ucs4): Report invalid chunks as such. Reported by Keld Jørn Simonsen and Martin J. Dürst. * utf16.c (transform_ucs2_utf16, transform_ucs2_utf16): New. (module_utf16): Adjusted. Declares aliases of UCS-2 and UCS-4. * utf8.c (transform_utf8_ucs2): Deleted, to force through UTF-16. (module_utf8): Adjusted. Do not declare aliases of UCS-2 and UCS-4. * utf7.c (transform_utf16_utf7, transform_utf7_utf16): New names for transform_ucs2_ucs7 and transform_utf7_usc2. (module_utf7): Manage though UTF-16, instead of through UCS-2, for getting in or out of UTF-7. However, allow UCS-2 in directly. * All (main.c excepted): Use the LGPL instead of the GPL. Reported by Ulrich Drepper. * quoted.c (transform_data_quoted_printable): An incomplete last line is not an error, just use `=' at end of last generated line. Reported by Nathaniel Borenstein. 1997-11-22 François Pinard * main.c (main): Detect old syntax, then warn and rewrite the request. Move variables to local blocks, rename them for clarity. * recode.c: Be stricter about syntax, do not check for the old one. * permut.c: New file. * Makefile.am: Adjusted. Introduce H_SURFACES and C_SURFACES. 1997-11-21 François Pinard * dump.c: New file. * Makefile.am (C_STEPS): Adjusted. Reported by Markus Kuhn. 1997-11-20 François Pinard * recode.h (enum recode_error): New. (struct recode_task): Add fail_level, abort_level and error_level. * common.h (IS_NOGO, TASK_RETURN, RETURN_IF_NOGO): New macros. * All: Use them. 1997-11-17 François Pinard * base64.c: Rename char_to_value to base64_char_to_value, and make it global, not static. Declare and preset base64_char_to_value. (transform_base64_data): Delete char_to_value and initialisation. * base64.h, utf7.c: New files. * Makefile.am: Adjusted. * common.h: Define IS_ASCII. * base64.c, flat.c: Use it. Also use IS_BASE64. * common.h: Define NUL. * All: Use it instead of `\0'. 1997-11-16 François Pinard * recode.c (edit_sequence): Rewritten. (recode_scan_request): Echo the full sequence. (find_sequence): Don't, as the sequence is only partial. * recode.h: Include or use a replacement. * All, Makefile.am, mergelex.awk: Use bool, false and true. 1997-11-15 François Pinard * recode.h (struct recode_outer): Replace charset_array by charset_list and single_step_array by step_list. Delete single_step_allocated. Rename number_of_single_steps to number_of_steps. (struct recode_charset): Add next and ordinal fields. (struct recode_step): Add a next field. * charset.c: Delete MAX_CHARSETS and so, any preset maximum. * charset.c, recode.c: Adjusted consequently. 1997-11-11 François Pinard * recode.h: Introduce data_charset. * recode.c (recode_declare_surface): Deleted. * common.h: Adjusted. (IS_CHARSET, IS_SURFACE): New macros. * charset.c (make_argmatch_arrays, list_all_charsets): Use them. * recode.c (recode_declare_step): Set charset_flag for both charsets only if neither was data_charset. Else, save the step as the surfacer or unsurfacer of either charset, as appropriate. * recode.c (scan_request): Diagnose if .. is missing in a request. * main.c (main): Diagnose an undeciphered request. * recode.c (perform_pipe_sequence): Use the MASK macro, instead of its expansion. * flat.c (transform_ascii_flat): Idem. 1997-10-28 François Pinard * recode.c (register_all_modules): Preset l1 to ISO_8859-1:1987, in view of a few incoming African charsets. * recode.c (table_type): New name for simplify_type, return an enum instead of an int. Callers ajusted. (simplify_sequence): Initialise the permutation accumulator with the first one-to-one table, not with zero. Idem for step quality. 1997-10-14 François Pinard * htmllat1.l (module_html_latin1), lat1html.c (module_latin1_html): Delete 8879, ISO 8879 and SGML as aliases for HTML, as this is wrong. Reported by Ulrich Drepper. * recode.h: Implement a recode_outer structure. * recode.c: Implement recode_warn and recode_error. * common.h: Adjusted. Also declare ALLOC and ALLOC_SIZE. * All: Modified to use the above -- that's a lot of changes. Get most functions to return a failure indication, instead of aborting. Reported by Ulrich Drepper. 1997-10-06 François Pinard * recode.c (complete_double_ucs2_step): qsort wants size_t for the number of items to sort, so just declare the count that way. 1997-10-05 François Pinard * All: Replace `and usages' by `and surfaces', then encoding and decoding, the recode_charset fields, by resurfacer and unsurfacer. Replace all other encoding and ENCODING by surface and SURFACE. 1997-10-04 François Pinard * main.c (usage): Explain what the program does. 1997-09-29 François Pinard * main.c: Include errno.h to declare errno. Reported by Andreas Mueller, Larry W. Virden, Santiago Vila Doncel and Ulrich Drepper. 1997-09-28 François Pinard * recode.h (struct recode_charset): Use const for the table field. * recode.c: Ajudsted. * common.h: Adjusted. * recode.h: Rename charset_clean to charset_find_type, then CLEAN_ALREADY, CLEAN_AS_CHARSET, CLEAN_AS_ENCODING and CLEAN_AS_EITHER respectively to CHARSET_FIND_OR_CREATE, CHARSET_FIND_AS_CHARSET, CHARSET_FIND_AS_ENCODING and CHARSET_FIND_AS_EITHER. All usages adjusted. * recode.c (scan_charset): find_charset may return NULL. 1997-09-26 François Pinard * main.c, recode.c, recode.h: Remove popen support. 1997-09-25 François Pinard * recode.h: Add Task as a last argument to GET_BYTE, PUT_BYTE and PUT_NON_DIACRITIC_BYTE, do not just imply task. Callers changed! * main.c (main): Report progress when in verbose mode. * recode.c (recode_perform_task): Don't. * recode.h: Move strategy from recode_request to recode_task. * recode.c (recode_init_task, recode_term_task): New routines. * main.c, recode.c: Adjusted. 1997-09-24 François Pinard * common.h [INLINE_HARDER]: Replacement for !USE_FPUTC. * recode.h: Better pack a few structures. 1997-09-23 François Pinard * charname.pl, rfc1345.pl: Moved over to doc/. * Makefile.am: Simplified accordinly. Perl now done in doc/. * Makefile.am (decsteps.h, inisteps.h): Use $(srcdir) in goals, so dependencies are triggered. 1997-09-22 François Pinard * recode.h: Implement STRIP_SIZE and a local pool for each table. * common.h: Declare ucs2_data_pool. * charset.c (list_concise_charset): Use it. * recode.c (complete_double_ucs2_step): Use it. * atarist.c, next.c: Use the new scheme. * Makefile.am (pool.c, tables.c): Copy from $(srcdir)/doc, and use them instead of older charset1.c and charset2.c, now obsolete. Adjust remainder accordingly. (rfc1345.h): Prefix goal by $(srcdir). * charname.pl, rfc1345.pl: Read codes as hexadecimals, print them that way. Sort numerically instead of lexicographically. Rename some of $code to $ucs2. 1997-07-30 François Pinard * main.c (main): Declare stamp_utime as struct utimbuf, instead of an array of two time_t's. Either include utime.h or declare struct utimbuf. * main.c (usage): Make it static. Accept a list argument, instead of relying on global decode_charset_flag, which disappears. * charset.c (decode_known_pairs): Return an error status if any decoding error, do not call usage directly. (find_charset): Accept a clean argument. All callers adjusted, they do not anymore always call clean_charset_name explicitely. (clean_charset_name): Accept a clean argument instead of an int. Return NULL is clean does not succeeed, do not call usage directly. All callers adjusted. * main.c (main): Check the return status of decode_known_pairs and issue an usage message if there were errors. * common.h: Declarations adjusted. * Makefile.am (stamp-steps): Replace stamp-init. Now generate decsteps.h for prototypes, then inisteps.h for calls, instead of stepinit.h. Distribute those new files. 1997-07-29 François Pinard * recode.c (recode_auto_check, recode_auto_check_one): Renamed from perform_auto_check and perform_auto_check_one. (recode_format_table): Renamed from output_header_file. (recode_perform_task): Renamed from execute_sequence. (perform_memory_sequence): New routine. * Everywhere, renaming of file_ functions into transform_, renaming of all fields bearing functions so they have a _routine suffix. * recode.h: Add RECODE_SEQUENCE_IN_MEMORY. 1997-07-28 François Pinard * mergelex.awk: Do not define the output macro, it is unused. * recode.h [FLEX_SCANNER]: Define a special PUT_BYTE version. * main.c: Split out of recode.c, the later to go in librecode.a. * common.h: Split out of recode.h, the later to be installed. * Makefile.am: Ajust accordingly. * Includers of recode.h now includes common.h instead, except recode.c which includes only recode.h only, being a mere application of the library. * A lot of massaging everywhere for implementing new struct recode_request, recode_input_text, recode_output_text and recode_task. Prefix many constants and tags by recode_ or RECODE_ so they export more cleanly. * recode.c (init_recode, term_recode, recode_init_request, recode_term_request, recode_scan_request, recode_buffer_to_buffer, recode_buffer_to_file, recode_file_to_buffer, recode_file_to_file, recode_string_to_buffer, recode_string_to_file, recode_string_to_string): New functions. * recode.h: Adjusted. * recode.c, recode.h, bangbang.c, cdcnos.c, flat.c, iconqnx.c, quoted.c, base64.c, utf16.c, utf8.c, ibmpc.c: Replace many input_file and output_file collectively by task. * mergelex.awk: Modified accordingly. * recode.c: Change syntax from : to .. for separating charsets. (add_work_string_quoted): Deleted. * charname.pl: Add backslashes into comments, because this is how the name references look in tables. 1997-06-26 François Pinard * utf8.c (module_utf8): Make rune an alias for UCS-2. 1997-06-18 François Pinard * htmllat1.l, lat1html.c: Prefer ¯ to &hybar, per RFC 1866. Reported by Jacques Madelaine. 1997-04-29 François Pinard * recode.c (usage): Change bug reporting address. 1997-04-05 François Pinard * recode.c (usage): Add a missing quote in the help string. Reported by Niels Kr. Bech Jensen. 1997-02-26 François Pinard * charset.c (list_full_charset): Correctly check the return value of code_to_ucs2. * rfc1345.pl: Normalise all hex codes to upper case, so they get properly sorted in the generated table. Reported by Andreas Schwab. * Makefile.am (EXTRA_DIST): Also include what was BUILT_SOURCES. * charname.pl: Introduce MAX_MNEMONIC_LENGTH and use it. Renamed UNICODE to MNEMONICS and unicode to ucs2. Correct bugs about the merging continuation lines from rfc1345.txt. Protect double quotes in generated strings. * rfc1345.pl: Introduce MAX_MNEMONIC_LENGTH and use it. Renamed UNICODE to MNEMONICS. 1997-02-25 François Pinard * Makefile.am (EXTRA_DIST): Leave README-alpha to Automake 1.1l. Add init-stamp, taken out of BUILT_SOURCES. (LDADD): Use .o suffixes instead of $o. 1996-10-16 François Pinard * recode.h: Update the localisation declaration block. * recode.c (main): Update the localisation initialisation. Reported by Erick Branderhorst, Niels Kr. Bech Jensen and Santiago Vila Doncel. 1996-09-30 François Pinard * recode.c (find_sequence): Reset length_of_sequence to zero. Reported by Andreas Schwab. * atarist.c, next.c: Adjusted into using UCS-2 tables. Reported by Andreas Schwab. * charname.pl: Integrate charname.sed, accept rfc1345.txt as argument, do not define f2 as florin, which f2 is not UCS-2. * charname.sed: Deleted. * Makefile.am: Adjusted. Reported by Andreas Schwab. 1996-09-20 François Pinard * recode.c (usage): Add bug report address in --help output. (decode_options): Add copyright and authors in --version output. * recode.c (file_one_to_one): Use the table! 1996-09-17 François Pinard * lat1html.c (module_latin1_html): Declare RFC 1866 and 1866 as aliases for HTML. * htmllat1.l (module_html_latin1): Idem. Reported by Arnaldo Mandel. 1996-09-04 François Pinard * Makefile.am (recode.o): Special rule for defining LOCALEDIR flag, instead of having it defined on all compiles. 1996-09-03 François Pinard * Makefile.am: Remove check related lines, moved over to tests/. 1996-08-27 François Pinard * Makefile.am (CHECKING): COPYING is in top_srcdir, not srcdir. * checkit: Find config.h in some directory above. 1996-08-26 François Pinard * recode.h: Declare enum programming_language. * recode.c: Accept and decode a programming language with -h. Only C and Perl are accepted so far. (output_header_file): Adjusted accordingly. Reported by Erwan Mas. * recode.c: Rename a few variables from *_mode into *_flag. 1996-08-25 François Pinard * recode.c (register_all_modules): Initialise ucs2_charset instead of rfc1345. Do not halve the cost anymore, since ucs2 is now a genuine, full-fledged charset (yet the optimisations are retained). (simplify_sequence): Require a table with ucs2 before simplifying. 1996-08-24 François Pinard * charset.c (code_to_ucs2): Function replacing code_to_symbol. * charname.pl: Adjusted to read mnemonic.ds and mnemonic.ds2 and insert the UCS-2 value rather than the RFC1345 symbol, as key. Also rename HDR to HEADER. * rfc1345.c (ucs2_to_rfc1345): New file and function. * rfc1345.pl: New file, for generating rfc1345.h. * recode.h: Rename DOUBLE_TABLE to UCS2_DATA_TABLE. Rename declare_double_step to declare_ucs2_data and remove the third argument giving mnemonic size. * recode.c (init_recode_rfc1345): Revise to use UCS-2 values instead of symbol strings. * atarist.c: Rename USE_DOUBLE_STEP to USE_RFC1345_STEP. * atarist.c, next.c: Rename DOUBLE_TABLE to RFC1345_DATA_TABLE. * all files: Better document RFC 1345 out of ISO 10646. Adjust to all previous changes. * charset.c (make_argmatch_arrays): Use the proper counters in the second pass, to get consistent arrays and avoid memory mangling. * charset.c (list_all_charsets): Reset list_flag prior to the whole loop, rather than within the loop near its beginning. * Makefile.am: New file, replacing Makefile.in. 1996-08-20 François Pinard * base64.c, quoted.c: New files. * Makefile.in: Adjusted. Reported by Alain Magloire, Marc Shapiro and Markus Kuhn. * recode.h: Declare MASK. * utf8.c, utf16.c: New files. * Makefile.in: Adjusted. Reported by Markus Kuhn. 1996-08-06 François Pinard * charset.c (decode_known_pairs): Better detect bad usages. Reported by Thomas M. Ott. * charset.c (list_all_charsets): Initialize list_flag properly. Reported by Thomas M. Ott. 1996-01-07 François Pinard * recode.h: Define GET_BYTE, PUT_BYTE and PUT_YYTEXT. * bangbang.c, recode.c, cdcnos.c, flat.c, ibmpc.c, iconqnx.c: Replace getc (input_file) by GET_BYTE, and putc (expr, output_file) by PUT_BYTE (expr). * mergelex.awk: Declare output_file as static variable, and initialize it, as well as yyout, from the recoding routines. * ascilat1.l, htmllat1.l, ltexlat1.l, txtelat1.l: Replace output (expr) by PUT_BYTE (expr) and ECHO by PUT_YYTEXT. 1995-12-30 François Pinard * recode.h, txtelat1.l, recode.c: Replace __P by PARAMS, to respect ANSI C. 1995-11-29 François Pinard * charset.c, recode.c: Uniformly write nonzero instead of non-zero. Reported by Karl Berry. 1995-07-10 François Pinard Distribution unflattened, for using GNU gettext. * Makefile.in: New file. 1995-06-22 François Pinard * recode.c (usage): Relate -d to HTML in --help output. Reported by Bert Schweitzer. * pt.po: New, for Portuguese. * configure.in (LINGUAS): Adjusted. Reported by Vitor Duarte. 1995-05-02 François Pinard * charset.c (HASH): Capitalize macro arguments. * cdcnos.c (file_cdcnos_ascii): Use comma operator when assignment in test. 1995-04-11 François Pinard * The trend of redefining many tables in recode around Unicode will solve problems reported by a few users, listed here. Reported by Juliusz Chroboczek (l2), Lukas Petrlik (l2). 1995-03-31 François Pinard * configure.in: Quote AC_MSG_WARN argument. 1995-03-19 François Pinard * configure.in: Remove GLOCALE, add LINGUAS, use fp_WITH_CATALOGS. * Makefile.in: Modify accordingly. * acconfig.h: Add description for WITH_CATALOGS. * recode.h: Use WITH_CATALOGS to define _() differently. 1995-03-18 François Pinard * recode.c (decode_request, scan_request, scan_charset, scan_decodings, scan_check_last_charset, scan_name, edit_sequence): Rewritten to replace previous decode_before_after, initialize_scan, terminate_scan and scan_charset, echo_sequence, and the code in main establishing the sequence of recoding steps. * recode.c (output_header_file): Clean up extra underscores, do not use _to_ anymore. 1995-02-28 François Pinard * recode.h (struct charset): Add charset_flag, encoding and decoding. * recode.h, recode.c (declare_encoding): New function. * recode.c (perform_auto_check): Skip over encodings. * recode.h, charset.c: Use plural for make_argmatch_array. (clean_charset_name): Implement a second argument to flag that only encodings are allowed. All callers changed. * charset.c: Replace argmatch_array by argmatch_charset_array, then add argmatch_encoding_array, parallel to it. (compare_struct_hash): Group all encodings together in sort. (list_all_charsets): Prefix encodings with `/' or `[/]' in output. (declare_alias): Copy the encoding flag to the created alias. * recode.c: Rename sequence to sequence_array. * recode.c (echo_sequence): Output syntax more similar to acceptable input. Escape spaces, colons and others. (echo_charset_name): New function. * recode.c (file_copy): Use fread and fwrite instead of getchar and putchar, in hope of accelerating the routine a little. Also declare BUFFER_SIZE. * recode.c: Get rid of MAX_SEQUENCE and MAX_SINGLE_STEPS. (find_sequence): Reallocate sequence_array as needed. (new_single_step): Reallocate single_step_array as needed. 1995-02-27 François Pinard * recode.c (declare_step): Let ansi2knr clean out functionnal arguments, since it now can do it. 1995-02-21 François Pinard * configure.in, Makefile.in: Replace `date' by `echo timestamp'. Reported by Greg McGary and Jim Meyering. 1995-02-19 François Pinard * Makefile.in: Support an ID file. Do not distribute TAGS. Reported by Greg McGary. 1995-02-05 François Pinard * Makefile.in (maintainer-clean): New name for realclean. 1995-01-11 François Pinard * recode.c (long_options): Add "known", which was forgotten. Reported by Hennus Bergman and Thomas M. Ott. 1995-01-05 François Pinard * mergelex.awk: Use new Flex 2.5 start condition scopes; simplify the script accordingly. Generate %option noyywrap instead of an yywrap routine. Replace #ifdef by #if to test USE_FPUTC. * mergelex.old: Saved version, for those having Flex prior to 2.5. * Makefile.in: Distribute it. * mergelex.awk: Escape the period in the regexp which has the purpose of removing the last period from step_name, so it will not be any character. 1994-12-26 François Pinard * ibmpc.c (module_ibmpc): Accept dos, MSDOS and pc as new aliases for the IBM-PC charset. 1994-12-22 François Pinard * nl.tt: New, for Dutch. Reported by Hennus Bergman. 1994-12-05 François Pinard * de.tt: New, for German. Reported by Ulrich Drepper. 1994-12-03 François Pinard * Makefile.in: Do not unprotoize libintl.c, now done in sources. * Makefile.in (realclean): Delete stamp-cod. * recode.c (print_copyright): New routine from old code. Print copyright to stdout, not stderr. Use fputs instead of printf. (main): Use it for -C. 1994-12-01 François Pinard * Prerelease 3.4.1. * configure.in, Makefile.in, acconfig.h, recode.c: Rename PRODUCT to PACKAGE. * configure.in, Makefile.in, recode.c, recode.h: Adjust for GNU locale as per sharutils'. * LOCALE, libintl.c, libintl.h: New files, from elsewhere. * fr.tt: New file, for French. * Makefile.in: Define SOURCEX and use it to prepare the .cod file, because extract-msgs cannot grok Flex sources yet. 1994-11-23 François Pinard * recode.h, recode.c, txtelat1.l: Rename _ to __P. * recode.h: For now, declare _ as a macro returning its argument. * recode.c, charset.c: Use _ macro over all localizable strings. 1994-11-16 François Pinard * lat1ltex.c, ltexlat1.l: Add \copyright{} and \pound{}. Use !` and ?` instead of erroneous !' and ?'. Reported by Christian Rolland and Ricard Torres. 1994-11-15 François Pinard * lat1html.c: Added "other" code 34, and "normal" codes 160-191. Changed &([AEIOUaeiou])circu; to &\1circ;, &([AEIOUaeiouy])diaer; to &\1uml;, &AE; to Æ, &ae; to æ, &MULT; to ×, &DIVIS; to ÷, &([Oo])stroke; to &\1slash; and &ssharp; to ß. * htmllat1.l: Changed accordingly. But accept previous codings as well as new ones. Accept &#NNN; where NNN is a Latin-1 code. Accounting for HTF conventions: accept &brkbar; for ¦, and Đ for Ð. Accounting for Emacs-w3 conventions: accept ¨ for ¨, ‐ for ­, ¯ for &hibar;, and ½ for ½. So, w3:l1 | l1:w3 could be used for normalizing. Reported by Arnaldo Mandel, Bernt Guldbrandtsen, Bert Schweitzer, Christian Limpach, Christian Recktenwald, Christian Rolland, David Mentre, Detlev Droege, Dominique Quatravaux, Françoise Audebrand, Frederic Albrecht, Frère Roy, Gabriel P. Silva, Georg Haefele, Guy Lapalme, Jacques Madelaine, Jens Quade, Jörg Höhle, Jose Joao Almeida, Juergen Zeller, Kester Habermann, Kevin Stuckless, Farzad Farid, Hennus Bergman, Martin J. Dùrst, Mikko Silvonen, Nicolas Thiery, Olivier Tharan, Per Steinar Iversen, Povl H. Pedersen, Richard Plasun, Saverio Pangoli, Sebastian Huebner, Slaven Rezic, Sumit Bose, Thomas Gebhardt, Thomas Seeling, Walter Müller, Wiel Seuskens, Wolfgang Boerner and Wolfgang Wander. * htmllat1.l (module_html_latin1): Declare ISO_8879:1886 as the official charset name, and HTML as an alias. Add other aliases: entity and SGML. * lat1html.c (module_latin1_html): Idem. Reported by Christian Rolland. 1994-11-14 François Pinard * Makefile.os2, config_h.dos: Updated. Reported by Kai Uwe Rommel. * configure.in: Check for and . * recode.h: Include or declare gettext. * recode.c: Possibly include and call setlocale. * recode.c: Clean most #ifdef's into #if's. * recode.h: Declare error_print_progname. * recode.c: Initialize it. (error_print_prefix): New routine. PERROR, PERROR1: New macros, use them. * recode.c (main): Abolish the distinction between program_name and program_path. Let program_name convey more information. 1994-11-11 François Pinard * recode.c (perform_auto_check): Avoid a NULL dereference. Reported by Andreas Schwab, Colin Plumb, Harald Koenig, Julio Sanchez, Hennus Bergman, Michael Schmidt, Nathanael Makarevitch, Stefan Albertz, Wilhelm Zadrapa and Yves Arrouye. 1994-11-08 François Pinard * Makefile.in: Define PERL as perl, and use it. Reported by Michael Shields. Remaking the MSDOS port: * configdos: All revised. * config_h.dos: Renamed from config.h.dos, and revised. * Makefile.in (distdos): All revised. (Makefile.tcc, libobjs.tcc, objects.tcc): New goals. * dosfname: New Perl script. * recode.c (setup_signals): Forget SIGPIPE if not defined. 1994-11-07 François Pinard * Makefile.in (stamp-vti): Use new -r option to date. * charname.pl: Escape @ into \@, for Perl 5. Reported by Eric Backus and Michael Shields. * Makefile.in (merged.c): Little typo (a missing backslash). Reported by Arnaldo Mandel, Bert Schweitzer, Christian Limpach, Eric Backus, Farzad Farid, Gabriel P. Silva, Jacques Madelaine, John van Krieken, Kester Habermann, Kevin Stuckless, Marc Gingold, Phyllis Frankl, Povl H. Pedersen, Thomas Gebhardt and Wolfgang Wander. * recode.h: Move the typedef enum QUALITY declaration forward, because of the HP-UX 9.01 compiler which needs it. Reported by Daniel Taupin and Eric Backus. 1994-11-05 François Pinard * Version 3.4. * Makefile.in (realclean): Also remove stamp-vti. * recode.c (main): For now, inhibit -s with a warning, when -g. This is only a temporary non-solution for a coredump problem. Reported by David E. A. Wilson. * recode.c (main): When diagnosing an irreversible recoding, do not falsely say that the -f option was not specified. (usage): Insist on the fact that -f is currently always selected. Reported by David E. A. Wilson. 1994-11-02 François Pinard * configure.in: Check for const only after having found possible ANSIfying compiler flags, this is of no use to check it before. 1994-10-31 François Pinard * unhexify.l: Deleted. Not up to GNU standards for distribution. * Makefile.in (BACKLOG): Goal deleted. It was depending on files which are not part of the distribution. Reported by Jim Meyering. * checkit: Force -f on most recode calls, to avoid diagnostics. * Makefile.in: Clean up, following the one in GNU sharutils. I will not detail all the changes here. * configure.in: Likewise. * recode.c: Use PRODUCT and VERSION instead of version_string. * acconfig.h: Document PRODUCT and VERSION. * recode.h: Interface with dmalloc if WITH_DMALLOC. 1994-10-30 François Pinard * recode.h, recode.c: Use #if rather than #ifdef to test __STDC__. 1994-10-11 François Pinard * mergelex.awk: Declare yywrap only if not already a preprocessor symbol, because some versions of Flex define it. Reported by David van Leeuwen. 1994-10-10 François Pinard * lat1asci.c: Implement O and o with stroke, y with diaeresis, and german sharp s (as s overstroken with double quote). * ascilat1.l: Corresponding changes. Reported by Michael Gschwind. * lat1txte.c (init_latin1_texte): Ensure diaeresis_char will be used in the computed translation table. It was ignored. * txtelat1.l: Ensure diaresis_char is recognized where it should. * ascilat1.l: Remove all references to diaeresis_char, because backspaced ASCII was never meant to be sensible to option -c. 1994-10-09 François Pinard * recode.h: Get rid of CONFIG_BROKETS. 1994-09-13 François Pinard * recode.c (usage): Use fputs instead of printf when possible. * recode.c: Implement -k option for searching through recodings. * charset.c (decode_known_pairs): New function. (list_all_charsets): Accept a parameter and obey restrictions. * recode.h: Declarations adjusted. Reported by Ghislain Plamondon. * acconfig.h: Document PROTOTYPES. Strange enough: how did it ever work without this? * configure.in: Adjust for Autoconf 2.0. * install-sh: New name for install.sh. * Makefile.in: Put date in stamp files. (DISTFILES): Adjust. 1994-09-06 François Pinard * Makefile.in (TAGS): Remove -t from etags call. 1994-07-08 François Pinard * ansi2knr.1: New file, from elsewhere. * Makefile.in (DISTFILES): Distribute it. 1994-06-03 François Pinard * recode.c (usage): Spell `Texinfo' with a capital. 1994-04-13 François Pinard * Makefile.in (Makefile, etc.): Adapt for Autoconf 1.8. 1994-03-19 François Pinard * lat1asci.c (init_latin1_ascii): Do not allocate pool separately from table, so they can be freed at once. * lat1html.c (init_latin1_html): Idem. * lat1ltex.c (init_latin1_latex): Idem. * lat1txte.c (init_latin1_texte): Idem. * recode.c (simplify_sequence): Despite not reversible, accept producing RFC 1345 short mnemonics, outside any double step, constructing a one-to-many table on the fly. When exploring foreign files, there might be no other easy choice. * charset.c (init_table_for_rfc1345): New. * recode.h: Declare it. Reported by Roman Czyborra. 1994-03-11 François Pinard * lat1ltex.c: Recode 160 as `~', not as `\ '. * ltexlat1.l: Recode `~' (instead of `\ ') to 160. Reported by Nicolas Anquetil. * ltexlat1.l: Ensure that recode does not match only part of the identifier following `\'. This was easily solved by adding a few Flex rules at end and relying on the Flex longest match law. For example, because Latin-1 misses the latin `oe' diphtong (!), `\oe' was seen as the recodable `\o' followed by an isolated `e'. Reported by Mac Pigman and Nicolas Anquetil. * ltexlat1.l: Reformatted for a more uniform Flex quoting. * recode.c (execute_popen_sequence): Ensure -d option is properly transmitted to subprocesses. Reported by David Kastrup. * lat1html.c, htmllat1.l: New, for supporting HTML conversions. * lat1ltex.c: Add a few static specifiers to tables. * Makefile.in: Adjusted. Reported by David Lebel. 1994-02-07 François Pinard * Makefile.in: Avoid $(CFLAGS) while linking. * configdos: Link to locally installed configdos. * dosfn: Replaced by a link to locally installed dosfn. * dosfn.pl: Deleted, included in installed configdos and dosfn. * configdos.pl: Deleted. * Makefile.in: Call dosfn and configdos as programs, provide -tcc to configdos. Do not distribute prepared DOS files anymore in the tar file. Prepare the DOS makefile directly in distdos goal, also put in distdos the preparation of libobjs.lst and objects.lst. 1994-02-04 François Pinard * recode.c (file_one_to_many): When an irreversibility is found, run recoding to completion instead of interrupting it, then return whether it is reversible or not, disregarding force_option. * bangbang.c (file_banbang_latin1): Idem. * cdcnos.c (file_cdcnos_ascii): Idem. * flat.c (file_ascii_flat): Idem. * ibmpc.c (file_latin1_ibmpc, file_ibmpc_latin1): Idem. * iconqnx.c (file_ibmpc_iconqnx, file_iconqnx_ibmpc): Idem. * recode.h: Do not declare force_option anymore. 1994-01-18 François Pinard * recode.c (declare_step): Rewrite the prototype differently if not __STDC__, because ansi2knr does not clean prototypes in functionnal arguments. * txtelat1.l: Declaring texte_latin1_diaeresis, use _((void)). Reported by Rejean Payette. 1994-01-15 François Pinard * recode.c (main): With absolutely no arguments, imply --help. Reported by Kai Uwe Rommel. 1994-01-14 François Pinard * recode.c (usage): Print the version string in --help. Reported by Kai Uwe Rommel. * recode.c: Ajust for easing OS/2 EMX port. * Makefile.os2, config_h.os2: New files. * Makefile.in: Distribute them. Reported by Kai Uwe Rommel. * recode.c (usage): Print a blank line after the first prototype. 1994-01-13 François Pinard * configdos.pl: Renaming GNUmakefile to makefile.gnu. * recode.c (output_header_file): Use tabs instead of spaces before generated comments. 1994-01-08 François Pinard * recode.c: Condense "file = action(); if (file == NULL) ..." into "if (file = action(), file == NULL) ..." consistently. 1994-01-07 François Pinard * configure.in: Check AC_RETSIGTYPE. * recode.c: Include , , define RETSIGTYPE. (signal_handler, setup_signals): New. (main): Call setup_signals. (execute_pipe_sequence): Do not diagnose SIGPIPE as an unknown error. * recode.c (main): Replace program_name by program_path. Introduce program_name, receiving the basename of program_path. (execute_popen_sequence): Use program_path instead of program_name. * recode.c (dup2): New, for when HAVE_PIPE && !HAVE_DUP2. * ebcdic.c: Connect to ASCII instead of to ASCII-BS. * recode.c (register_all_modules): Alias to ASCII right away. * recode.c (register_all_modules): Alias ASCII-BS to BS. * cdcnos.c (module_cdcnos): Alias CDC-NOS to NOS. * iconqnx.c (module_iconqnx): Alias Icon-QNX to QNX. * lat1ltex.c (module_latin1_latex): Alias LaTeX to TeX. * ltexlat1.l (module_latex_latin1): Alias LaTeX to TeX. 1994-01-06 François Pinard * Version 3.3.1, in the MSDOS world only. * all: Everywhere, change charset names from latin1 to Latin-1, latex to LaTeX and texte to Texte. Change applemac to Apple-Mac, ascii-bs to ASCII-BS, atarist to AtariST, bangbang to Bang-Bang, cdcnos to CDC-NOS, ebcdic to EBCDIC, ebcdic-ccc to EBCDIC-CCC, ebcdic-ibm to EBCDIC-IBM, ibmpc to IBM-PC and iconqnx to Icon-QNX. * recode.c: For MSDOS, increase the stack length through _stklen. * recode.c: Diagnose more precisely all errors involving errno, while calling error. In particular, include __FILE__:__LINE__. * recode.c (main): Unless under MSDOS, use rec.tmp for the file name of the temporary recoded file instead of recodeXX.TMP. * recode.c: Rename optimize_sequence to simplify_sequence, and optimizable_type to symplify_type. * recode.c (execute_popen_sequence): Return 0 if the subprocess fails, instead of exiting with a diagnostic. Pass -f option to subprocesses if selected. Always pass -q to shut them down. Construct the popen_command piecemeal instead of a big sprintf. (main, usage): Implement option --quiet (-q, --silent). * recode.c (execute_pass_sequence): Interrupt the current recoding and return 0 if any step fails, if this happens, unlink a possibly existing temporary file. * recode.c (execute_pipe_sequence): Unconditionnaly close the output file from the parent before waiting, instead of closing it only if there was an output name. Let the parent accumulate the exit status of all children before returning its own. * configure.in: Let HAVE_PIPE be defined. This old bug ig gone! * recode.c (perform_auto_check, perform_auto_check_one): Renamed and split from function report_about_all_sequences. Now accepts a CHARSET argument for limiting the search. (main): Allows an optional command line argument to --auto. (usage): Adjusted accordingly. * recode.c (main): Diagnose extraneous arguments to --list. * recode.c (compare_struct_item): New. (init_recode_rfc1345): Partial rewrite for replacing the quadratic pairing algorithm with a logarithmic-linear one, cleaning up a bit. 1994-01-04 François Pinard * txtelat1.l: Undo the 1990-03-15 change. If there is still a bug in this area, I will let it show its nose again... * mergelex.awk: Remove the X_ prefix for start condition names. * configure.in: Remove all about LEXLIB, flexlib and LIBOBJS, since flex (version 2.4.6) generated scanners are self contained. * flexlib.c: Deleted. * Makefile.in: Adjusted. * recode.c (optimizable_type): New, from optimize_sequence. (optimize_sequence): Use it. * charset.c (clean_charset_name): Set decoding_charset_flag just before calling usage instead of early, do not care resetting it. * next.c: Renamed from nextstep.c. NeXTSTEP changed to NeXT. Add f2 as florin (166) and '" as hungarian umlaut (205). Remove USE_DOUBLE_STEP by making the code permanent, remove older code. * charname.pl: Especially define f2 as florin. * Makefile.in: Adjusted. Reported by Keld Jørn Simonsen. * alloca.c: Deleted, not used anymore. * configure.in: Remove AC_ALLOCA test. * Makefile.in: Remove alloca.* references. * configure.in: Read DEFAULT_CHARSET from environment if set. Reported by Andreas Schwab. 1994-01-03 François Pinard * Makefile.in (.stamp-collect): Say when initstep.h altered. * charset.pl: Now produce split charset1.c and charset2.c instead of a single big charset.h. This seems mandatory for MSDOS, even with huge model. Some Unix C compilers will crawl faster, too. * Makefile.in: Adjusted. * README.DOS: New file. * configdos.pl: Much revised. The script no longer have a config.tcc input, now taking its information from Makefile.in. * dosfn: New file, from elsewhere. * dosfn.pl: New file, common between configdos.pl and dosfn. * Makefile.in: Distribute configdos.pl again, together with dosfn.pl and makefile.dos. Adapt for MSDOS and configdos.pl. * recode.c: Delete inactive code for selecting DEFAULT_CHARSET, this being now done from configure or by already preset config.h. * atarist.c: Rewritten for using a double step, instead of two steps in and out latin1; the new code is triggered by defining USE_DOUBLE_STEP, the old code will be kept for a little while. Reported by Andreas Schwab. * Makefile.in: Do not define LDFLAGS, use CFLAGS on link calls. * configure.in: Remove LDEFS substitution, seemingly unused. Reported by Richard Stallman. 1994-01-01 François Pinard * flat.c: Transmit '\t' as is, it was erroneously changed to '\n'. 1993-12-31 François Pinard Begin work for implementing --force. To be completed later. * recode.c (file_one_to_one): Return 1 instead of void. (file_one_to_many): Return a value saying if the recoding was successful or not, instead of void. (execute_pass_sequence): Return 1 (unfinished). (execute_popen_sequence): Return 1 (unfinished). (execute_pipe_sequence): Return 1 (unfinished). (execute_sequence): Return the status got from execute_*_sequence, use it to alter "done" into "DENIED" when using -v. (declare_step): Adjust file_recode parameter declaration. (main): Have --graphics imply --force. * recode.h: Adjust declarations. Declare error, force_option. * bangbang.c (file_bangbang_latin1): Similarily. Also, do not recode "!!J" or "!!j" into '\n' unless -f. * cdcnos.c (file_cdcnos_ascii): Similarily. Also, do not recode "^)" into '\n' unless -f. * flat.c (file_ascii_flat): Similarily. * ibmpc.c (file_latin1_ibmpc, file_ibmpc_latin): Similarily. Also, do not recode isolated '\n' or '^Z' unless -f. * iconqnx.c (file_ibmpc_iconqnx, file_iconqnx_ibmpc): Similarily. Also, check for preventing the production of a few sequences which would might be recoded back differently, unless -f. * mergelex.awk: Similarily for generated file_ routines. Return the yylex result. At <>, return 1. * charset.c (make_argmatch_array): Print a line of hash statistics if HASH_STATS is defined. I used to have 408 names in 343/997 buckets, the following patch gave 408 names in 332/997 buckets. Being worse, I commented it. * charset.c (hash_string): Replace hash algorithm by GNU diff's. * recode.h: Include and ensure CHAR_BIT is defined. * configure.in: Test for . * recode.c (optimize_sequence): Delete a remaining single step if it happens to be the identity recoding. (echo_sequence): Better diagnose the trivial recoding. (file_one_to_one): Remove detection of special one_to_same case. (report_about_all_sequences): Simplify detection of one_to_same. * Makefile.in: Distribute .stamp-collect and initstep.h. This should alleviate problems caused by some sh/sed combinations, still unstudied, which are unable to make initstep.h properly. Reported by Michael L. Dowling. 1993-12-30 François Pinard * flat.c: Consider `~' as a diacritic character. * File-Latin1: New file, intended to help testing/playing. * Makefile.in: Distribute File-Latin1. Reported by Martin Maechler. 1993-12-29 François Pinard * Makefile.in (merged.c): Split the pipe in parts, because otherwise all status except the last of the pipe are lost for make. This is seemingly a feature of sh. Reported by Vern Paxson. 1993-12-25 François Pinard * configure.in: Check for vprintf and strerror, for error.c. * recode.c (usage): Indicate that --help and --version exit. 1993-12-24 François Pinard * Makefile.in: Remove all as dependency for uninstall. * Makefile.in: Split HEADERS, giving also LIBHDRS. Use it. 1993-12-23 François Pinard * Version 3.3. 1993-12-21 François Pinard * *.c: Delete unused variables, add a few missing const's. * nextstep.c: Rewritten for using a double step, instead of two steps in and out latin1; the new code is triggered by defining USE_DOUBLE_STEP, the old code will be kept for a little while. This has two advantages: recode can obey various -l options for NeXTSTEP, and I can remove the full style table from the documentation. Reported by Martin Maechler. * Makefile.in (clean): Also delete unhexify. * Makefile.in (tags): Include $(HEADERS). (TAGS): Idem. Also use -t on etags. 1993-12-20 François Pinard * charset.c (hash_string): Cast unsigned to int before modulo. * recode.c (print_truncated_charset_name): Cast strlen result to int before using it in an arithmetic comparison. * recode.c (complete_pairs): When a conflict is found, diagnose which charsets are involved. Reported by Bastian Schlueter. * nextstep.c: Add pair {182, 182} for paragraph sign. Reported by Bastian Schlueter. * recode.c (main): Replace long names --files, --popen and --pipe by common --sequence=METHOD. (usage): Document this. * recode.c (decode_before_after): Use backslash as escape. (execute_popen_sequence): Clean up charset names before popen. Reported by Keld Jørn Simonsen. 1993-12-19 François Pinard * charset.pl: Send diagnostics to stderr instead of charset.LOG. * charset.pl: Discard &duplicate lines without discarding the associated charset. * charset.pl: Canonalize names the same way charset.c does, detect duplicate names or aliases based on canonical names. Do not discard a charset merely for an alias name clash. *charset.pl: Delay the generation of charset.texi, sort the @item's by charset name and, within each, sort aliases. * recode.h: Add a size field to the charset structure, declare a size parameter to declare_double_step. * charset.pl: Handle charsets having more than 2 characters per symbol, transmit measured size into declare_double_step calls. * recode.c (declare_double_step): Accept and save a size parameter. * charset.c (code_to_symbol): New routine for handling size field. (list_full_charset, list_concise_charset): Adapt to using it. 1993-12-16 François Pinard * charset.c: Add cleanup_charset_name, use it in find_charset, declare_alias and decode_charset_name. Rename compare_hash_name to compare_struct_hash. (list_all_charsets): Repeat the name even if it is not alias, because it has been cleaned up. Reported by Keld Jørn Simonsen. 1993-12-14 François Pinard * charset.pl: Generating charset.h instead of charset.c. * charset.c: New. * recode.c (prepare_charset_initialization): New. (hash_string, find_charset, declare_alias, make_argmatch_array, decode_charset_name, compare_hash_name, list_all_charsets, list_full_charset, list_concise_charset): Moved into charset.c, together with a few defines, struct hash and related declarations. * Makefile.in: Adjusted. 1993-12-13 François Pinard * Renaming rfc1345.c into charset.c, rfc1345.pl into charset.pl, rfc1345.sed into charset.sed and rfc1345.LOG into charset.LOG. * Makefile.in, charset.pl: Adjusted. * charname.c: New. * charname.pl, charname.sed: New, for generating charname.h. * Makefile.in: Adjusted. * recode.h: Add declaration for charname_to_comment. * recode.c: list_charsets renamed to list_all_charsets. New functions list_full_charset and list_concise_charset, enum and variable list_format. Decode the list format, check for a charset argument and switch to the proper listing function. * acconfig.h: New, for holding DEFAULT_CHARSET. * Makefile.in: Distribute it, have .stamp-h.in depend on it. * configure.in: Substitute DEFAULT_CHARSET instead of DEFCHARSET. * configure.in: Include $LEXLIB in $LIBS when $LEX is flex, so the yy_flex_alloc test will not always fail, waiting for a version of Autoconf which will do this itself. * Makefile.in: Do not add @LEXLIB@ to LIBS anymore. Reported by Andreas Schwab. * checkit: Replace `+' by `*' in grep calls. Reported by Andreas Schwab. * recode.c (usage): Replace --include by --header in text. 1993-12-11 François Pinard * recode.c (list_charsets): Move all aliases of a charset after the true charset name on its line, keeping lines sorted on the true charset name and all alias in lexicographical order. All charset and aliases used to be sorted together, one per line. (compare_hash_names): Sort accordingly. Reported by Martin Maechler. * recode.c: Add make_argmatch_array and decode_charset_name. Use them, simplifying decode_before_after. Process ignored_charset even for the -a option. Add print_truncated_charset_name and use it to simplify report_about_all_sequences, not reporting an unachievable recoding when ignored_charset is specified. * recode.c (find_sequence): Ensure verbose is executed even if no path has been found, instead of returning early. * recode.c (optimize_sequence): Remove the compute_arrays parameter, because report_about_all_sequences now studies the produced arrays. Callers changed. * recode.c (optimize_sequence): While merging rfc1345 steps, also merge qualities instead of assuming REVERSIBLE. Reported by Rejean Payette. * recode.h: Declare strict_mapping. * recode.c (complete_pairs): Do not set quality, this is done elsewhere in all cases. But do preset the file recoding routine. * applemac.c, atarist.c, nextstep.c: In declare_step calls, lower the recoding quality to some *_TO_MANY whenever strict mapping is in use, also specify NULL as the file recoding routine because complete_pairs now initializes it. * ibmpc.c: Idem. But override file_recode after complete_pairs. * ibmpc.c (file_latin1_ibmpc, file_ibmpc_latin1): Repeat the algorithm, but using the one_to_many table when strict mapping. * recode.c (declare_double_step): Create both single steps without the help of declare_step, this spares four probes in the charset table per call. 1993-12-10 François Pinard * recode.h: Add CHARSET and struct charset, use CHARSET *before and after instead of int start_charset and goal_charset in STEP, declare rfc1345 as CHARSET * instead of int, delete struct double_link and rfc1345_link declaration and rather include the DOUBLE_TABLE right in CHARSET, add a DOUBLE_TABLE parameter to declare_double_step, * recode.c: Make all necessary related changes. Renaming of many variables and cleanup, too numerous to report here. Delete name_from_value and ignored_array in favor of new CHARSET fields. * recode.c: Change :rfc1345 to rfc1345. Add `.' as an alias. (report_about_all_sequences): Avoid rfc1345 instead of avoiding names beginning with colon. * applemac.c: Renamed (once again) from macintosh.c. The codes will be kept different until further study. Comment out the aliasing of applemac to macintosh. * ibmpc.c: Comment out the aliasing of ibmpc to ibm437, because making the codes equivalent requires further study. * Makefile.in: Adjusted. * recode.c: Implement --ignore (-x) option and ignored_array. (find_charset): Progressively initialize ignored_array to zero. (find_sequence): Ignore steps with an ignored start charset. (decode_before_after): Process the ignored charset. * recode.c (usage): Make the output little more legilable through spacing. Insist on -l, mention the Info documentation, propose a few selected charsets. Reported by Martin Maechler. * recode.c: Rename make_include_mode into make_header_mode, include_name into header_name, output_include_file into output_header_file, turn --include option name into --header. * recode.c: Add before_name and after_name, use them in decode_before_after and in output_header_file. This prevents the spurious canonalization of alias charset names. * recode.c: Implement --strict (-s) option. (complete_pairs): Accept a step parameter and slip the generated table in it instead of returning the table. Adjust for --strict. (init_recode_rfc1345): Adjust for complete_pairs. * atarist.c, macintosh.c, nextstep.c: Idem. * ibmpc.c: Idem. Also rewrite code for --graphics (-g). * recode.h: Declare ascii_graphics, diacritics_only and diaeresis_char. * ibmpc.c: Delete the ascii_graphics declaration. * lat1ltex.c, ltexlat1.l: Delete the diacritics_only declaration. * ascilat1.l, txtelat1.l: Delete the diaeresis_char declaration. * mergelex.awk: Have it work when there is no %{ ... %} part. * recode.c (report_about_all_sequences): Report charsets which are dynamically discoverd to recode identically by "ONE to SAME". * recode.c: Declare HASH_TABLE_SIZE, hash_string. Rewrite find_charset and declare_alias to use hashing. Also adjust list_charsets and decode_before_after. 1993-12-09 François Pinard * recode.c: Delete name_from_value function, replace with an array of same name. Delete field refer from struct charset, initialize and use name_from_value instead. * Makefile.in (clean): Remove *.a, for librec.a. Reported by Pierre Gaumond. * Makefile.in (clean): Move in *.o from mostlyclean. * rfc1345.pl: Print progress on stderr, for entertaining me. Document aliases in rfc1345.texi through English sentences. 1993-12-08 François Pinard * flexlib.c: New, for -lfl does not work everywhere. * mergelex.awk: Produce a yywrap function in section 3. * configure.in: Configure flexlib.o in LIBOBJS if necessary. * Makefile.in: Adjusted accordingly. * recode.c (name_from_value): Renamed from true_charset_name. (find_charset): Add a "create" parameter, merge in new_charset. (new_charset): Deleted. All callers changed. * recode.h: If not __STDC__, have _() return (), not empty. Reported by Pierre Gaumond. * Makefile.in (distclean): Remove config.h. * bangbang.c, cdcnos.c: Use "while (x = y, x != z)" instead of "while ((x = y) != z)". * install.sh: Attach execute permission to this file. Reported by Pierre Girard. * lat1ltex.c: Produce {\i} instead of \i{}. It's nicer. Reported by Pierre Girard. * recode.c: Declare argmatch. Default charsets were not obeyed. (decode_before_after): When DEFAULT_CHARSET is defined, use it instead of the empty string when calling argmatch. (find_charset): Do not check for empty strings anymore. 1993-12-07 François Pinard * Makefile.in (install): Add recode.info in dependencies. * recode.c: Use USE_TMPNAM to bracket out old tmpnam code out and USE_TMPFILE to allow in new tmpfile code. (execute_pass_sequence): Use tmpfile instead of tmpnam. Reported by Bastian Schlueter (suggests that -i => -o on NeXT). Reported by Ronald C.F. Antony. Reported by Andreas Schwab. * recode.c (output_include_file): Ensure a valid C identifier for the table name. RFC 1345 uses bizarre names in that respect. * recode.c (main): While moving the new file over the original, properly diagnose any failure. Reported by David Lebel. * recode.c: Add decoding_charset_flag. (usage): Print `Try recode --list' instead of `Try recode --help' whenever decoding_charset_flag is true. (decode_before_after): First set, then reset decoding_charset_flag. * recode.c (echo_sequence): Use a shorter print format, now that we have real long charset names... * recode.c: Revert to using a `struct charset' to handle names and alias. Turn charset_name into true_charset_name and charset_value into find_charset. * Makefile.in (LIBOBJS): Put more on the second line, because if @LIBOBJS@ is substituted empty, some make's barf at last `\'. (recode.dvi): TEXI2DVI was mispelled. Reported by Martin Maechler. * recode.c: Implement --list (-l) to alleviate Usage message. (compare_charset_names, list_charsets): New. 1993-12-06 François Pinard * rfc1345.txt: New, from elsewhere. * rfc1345.sed, rfc1345.pl: New. * Makefile.in: Handle rfc1345.c, distribute all of these. * recode.c (declare_double_step): New. (optimize_sequence): Replace all double steps through :rfc1345 by a single step which will properly initialize itself. Diagnose any remaining single step which uses :rfc1345 explicitely. (register_all_modules): Make latin1 an alias for iso-8859-1-1987. (report_about_all_sequences): Truncate the charset names as needed, avoid considering charsets named `:*' alone. (usage): Avoid printing `:*' steps as available. * ascilat1.l, cdcnos.c, ebcdic.c, flat.c, lat1asci.c: Change name of ascii charset to ascii-bs, keeping it separate from RFC 1345. * ibmpc.c: Make ibmpc an alias for ibm437. * Makefile.in (check): Adjusted for ascii-bs. As a side result of all this, more charsets are supported. Reported by Per ?: who wanted IBM codepages in recode. Reported by Hermann Hueni: who wanted Roman8 in recode. * Makefile: Merge C_STEPOBJS and L_STEPOBJS into STEPOBJS. * recode.c: Make -h argument optionnal, it was mandatory. * recode.c: Include the quality in -a and -v output, repeat -v output after step optimization if this changed something. * recode.h: Declare enum quality, QUALITY, quality_to_string and merge_qualities. From STEP, delete the multichar_input, multichar_output, loosing and reversible fields. Add one QUALITY argument and two functionnal arguments to declare_step. * all: Implement the preceeding changes. * recode.h: Use the _((...)) device more systematically. Declare xmalloc. 1993-12-05 François Pinard * ascilat1.l, bangbang.c, cdcnos.c, ibmpc.c, iconqnx.c, lat1asci.c, lat1ltex.c, lat1txte.c, ltexlat1.l, macintosh.c, txtelat1.l: Avoid using octal and hexadecimal, stick to using decimal. Define constants when this helps source readability. * flat.c: Replace octal masks with "<<" expressions. * unhexify.l: New file. * Makefile.in: Distribute it. (detecthex, unhexify): New goals. * atarist.c: New charset. * Makefile.in: Adjusted. * recode.c: Use "atarist" as DEFAULT_CODE if atarist is defined. Reported by Andreas Schwab. * nextstep.c: New charset. * Makefile.in: Adjusted. Reported by Bastian Schlueter. Reported by Ronald C.F. Antony. * flat.c: Do not declare cccascii nor cdcascii. Delete file_drop_8th_bit. * recode.c (complete_pairs): Produce better diagnostics. Allow for NULs in known pairs, even if currently unused. 1993-12-04 François Pinard * Makefile.in: Use .stamp-h.in to solve Autoconf problems. Distribute mkinstalldirs and install.sh. Use mkinstalldirs. * mkinstalldirs: New, from elsewhere. * install.sh: New, from elsewhere. * Makefile.in (recode.info): On $(MAKEINFO) call, use "-I$(srcdir)" instead of "-o recode.info". * ebcdic.c: Inclusion of GNU dd's "ibm" recoding, with two modifications so the recoding becomes reversible. Removal of static inverse tables, dynamically recreate them instead. Replacement of cccascii and cdcascii by ascii, use ebcdic-ccc instead of ebcdic in the context of disappearing cccascii. * recode.c (invert_table): New. * recode.h: Declare it. * recode.c: Replace CHARSET struct and charset_array by charset_name_array and charset_value_array, then make all necessary changes. Use argmatch for charsets. * argmatch.c: New, from elsewhere. * $(C_STEPS), $(L_STEPS): Remove all four letter aliases, except "ltex" for "latex" and "txte" for "texte". * recode.c (register_all_modules): Declare "lat1" as an alias for "latin1". * macintosh.c: Renamed from old applemac.c. Declare "macintosh" as the charset name and "applemac" as an alias. * Makefile.in: Adjusted. (check): Write charsets in full. 1993-12-03 François Pinard * Makefile.in: Add .stamp-collect for preventing initstep.h to be uselessly touched, this was causing recode.c recompilations. * recode.c: Implement output_include_file. * recode.c: Extract file_mere_copy from execute_sequence, then implement file_one_to_one, file_one_to_many, merge_steps and optimize_sequence. * recode.h: Declare these when not static. * flat.c: Use file_mere_copy instead of NULL as file_recode. * applemac.c, ebcdic.c: Use file_one_to_one. * bangbang.c, cdcnos.c, lat1asci.c, lat1ltex.c, lat1txte.c: Use file_one_to_many. * recode.h: Rename STEP field recode_file to file_recode and make it return void instead of int, add init_recode and one_to_one fields, declare KNOWN_PAIR structure and complete_pairs function. * recode.c, $(C_STEPS), $(L_STEPS), mergelex.awk: Adjust. * recode.c (declare_step): Initialize new fields. (find_sequence): Initialize planned steps when possible. (complete_pairs): New, adapted from maketabl.c. * applemac.c: Use initialization and include macilat1.mtb table. * ibmpc.c: Use initialization and include ibmplat1.mtb table. * macilat1.mtb, ibmplat1.mtb, maketabl.c: Deleted. * Makefile.in: Adjusted. * ltexlat1.l: Use {After} at more places, "accro\^\i tre" was not recoded at all. 1993-12-02 François Pinard * recode.c, all $(C_STEPS), all $(L_STEPS): Include "recode.h" instead of "config.h". * recode.h: New. * all $(C_STEPS): Delete "#define STEP ", because STEP will be a describing structure from now on. Add module_ function for initializing STEPs. Rename void STEP() to static int recode_file(), add a first parameter for transmitting STEP. * all $(L_STEPS): Delete "#define STEP " and instead, use "/* Step name: . */". * mergelax.awk: Do the proper thing with /* Step name: . */ * steps.h: Deleted. Information which was contained there has been spread out in modules instead, for adding flexibility. * recode.c: Initialize all modules by including "initstep.h". * Makefile.in: Dependencies for recode.h and initstep.h. (initstep.h): Make it by extracting module_* lines from sources. * recode.c: Rename MAX_CONVERSION into MAX_SEQUENCE. Introduce MAX_CHARSETS, MAX_SINGLE_STEPS, charset structure and array, single_step array and related counters, functions declare_step and declare_alias. Many other renaming of variables, too numerous for here. Adapt all of the code so this works. * xmalloc.c, xstrdup.c: New, from elsewhere. * bangbang.c: Merged from lat1bang.c and banglat1.c. * cdcnos.c: Merged from ascicdcn.c and cdcnasci.c. * ebcdic.c: Merged from cccaebcd.c, cdcaebcd.c, ebcdccca.c and ebcdcdca.c. * flat.c: Merged from asc8asc7.c and asciflat.c. * ibmpc.c: Merged from lat1ibmp.c and ibmplat1.c. * iconqnx.c: Merged from ibmpicon.c and iconibmp.c. * Makefile.in: Adjusted. The net effect of all these changes is that charsets or their single step methods are now easily configurable out of recode by merely deleting them from C_STEPOBJS or L_STEPS in Makefile. Reported by Claude Goutier. 1993-12-01 François Pinard * ltexlat1.l: Ensure \'{e} is recognized as \'e. Reported by Pierre Girard. * txteasci.l: Deleted for easing maintainance, there was too much common code with txtelat1.l, and also, the "texte" charset is prone to loosing characters, when used as an intermediate. Reported by Claude Goutier. * ascitxte.l: Deleted likewise, almost same functionnality is available through lat1txte.c. * ltexasci.l: Deleted for easing maintainance, there was too much common code with ltexlat1.l. * asciltex.l: Deleted likewise, almost same functionnality is available through lat1ltex.c. * lat1asci.c: New, so "ascii" charset is connected to others. * ascilat1.l: New, for same reason. * Makefile.in: Adjusted. * Makefile.in (check): Diagnose unachievable recodings. * recode: Implement --auto-check (-a) option. (report_about_all_sequences): New. (find_sequence): When recoding is not possible, return with a negative value in length_of_sequence, do not call error. (main): Call error if recoding is not possible. * configure.in: Replace DEFAULTCODE by DEFCHARSET. * Makefile.in: Same, plus replace DEFAULT_CODE by DEFAULT_CHARSET. * recode.c: Same, plus replace [*_]code[_*] by [*_]charset[_*], NUMBER_OF_KEYWORDS by NUMBER_OF_CHARSETS and keyword_index by charset_index. * steps.h: Same things. * recode.c (usage): Tell which is the default code value. * recode.c: Implement --graphics (-g) option, and ascii_graphics. * ibmplat1.c: Rename graphics_mode to ascii_graphics, making it external. Use, document and revise CONVERT_GRAPHICS constant, introducing "round" corners and more systematic principles. 1993-11-30 François Pinard * recode.c: Process long options, then --help and --version. Rename usage_and_exit() into usage(), accepting a parameter, print a reminder about --help on stderr when in error, else the longer usage message on stdout. Adjust all calls. (print_copyright): Deleted, use copyright_string instead. (print_version): Deleted, use version_string instead. * getopt1.c: New. * Makefile.in: Take care of getopt1.c. * HINTS: New file, to let README be smaller. * steps.h: Remove ENUM_INT_BUG code. The README did announce that this code will disappear if nobody report it as necessary. * banglat1.c: Add "!;" to \346 for "ae" and "!<" to \367 for "oe". * lat1bang.c: Do the converse translatation. "oe" is a kludge! Reported by Pierre Gaumond. * checkit: Always output "Checking" messages, regardless of -v. Have those messages resembling more to the actual recode calls. Remove now useless error identification messages. Use "cmp -s" instead of "diff" for comparing files. * Makefile.in: Use $(SHELL) instead of sh in CHECKTEST. Remove -v. 1993-11-29 François Pinard * recode.c (main): Declare argv as "char *const *argv" instead of "const char *argv[]", for avoiding conflicts with some getopt(). Reported by Andreas Schwab and Stéphane Berubé. * Makefile.in (Makefile): Use $(SHELL). (config.status): Use "$(SHELL) config.status --recheck" instead of "configure --no-create". * Makefile.in (LIBS): Include @LEXLIB@, Flex 2.4.1 needs this. * configure.in: Test AC_ISC_POSIX earlier, AC_PROG_LEX needs it. * txteasci.l: Move texte_ascii_diaeresis in section 3, because Flex 2.4.1 does not get YY_CHAR defined for section 1. * txtelat1.l: Move texte_latin1_diaeresis in section 3. * mergelex.awk: Deeply revised. Now able to merge Flex sources having a non-empty section 3. No more forward declarations for yytext, yyleng, etc. The output begins with a warning comment saying this is a derived file, followed by the first block comment found in any input file. Produce an output cleaner for the eye. * Makefile.in (merged.c): Remove synchronization directives, they are useless for now. Delete new temporary files merged[123].tmp. 1993-06-09 François Pinard * Makefile.in (dist): Replace "echo `pwd`" by a mere "pwd". Adapt to the .gz change. 1993-05-06 François Pinard * asciflat.c: Transmit TAB and BKS, instead of using ^I or ^H. However, BKS for applying a diacritic will still disappear. Reported by Marc Verreault. * Makefile.in: Use $U prefix for defining the .o dependencies over include files obtained through maketabl. Reported by Claude Goutier. * c-boxes.el, cccaebcd.c, ebcdccca.c, getopt.[ch], iconibmp.c, maketabl.c, mergelex.awk, recode.c, recode.texi, steps.h, txteasci.l: Remove spurious suffix whitespace. Reported by Claude Goutier. 1993-05-04 François Pinard * Makefile.in (dist): Use a gzipping tar, not a compressing one. * checkit: Make checkit.tmp writeable, so it can be removed. It is commonly obtained by cp'ing COPYING. 1993-05-03 François Pinard * recode.c (execute_pass_sequence): Reverse the test on input_name, controlling the fclose (input_file). Reported by Andreas Schwab and David Lebel. * maketabl.c: New. * Makefile.in: Distribute maketabl.c, use it for processing ibmplat1.mtb and macilat1.mtb, take care of all dependencies. * ibmplat1.mtb: New. * ibmplat1.c: Use ibmplat1.h, while implementing graphics_mode. This have the side effect of correcting the 1/2 symbol, which was translated to 1/4, and the 1/4 symbol, which was translated to <<. * lat1ibmp.c: Use lat1ibmp.h. * steps.h: Replace LOOSE by EXACT for ibmp from/to lat1 entries. Reported by Robert Joop. * macilat1.mtb, macilat1.c, lat1maci.c: New. * ibmpmaci.c, maciibmp.c: Deleted. * steps.h: Remove old maci from/to ibmp, add new maci from/to lat1. Reported by Joelle Stemp: copy of Macintosh character tables. Reported by Jacques Richer: end of lines represented by 0x0d. 1993-02-06 François Pinard * Makefile.in: In dist goal, ensure 777 mode for directories, so older tar's will restore file modes properly. * asciflat.c: Remove old commented lex code. Remove a useless `case EOF:' from inner switch, the logic will work anyway. 1993-01-17 François Pinard * Makefile.in: Put $(CFLAGS) after $(CPPFLAGS), so the installer can override automatically configured choices. Reported by Karl Berry. 1993-01-16 François Pinard * checkit: Do not call recode in verbose mode on /dev/null prior to the first "Checking" message. Rather call recode in verbose mode only once, combined within the first test in a series. 1993-01-14 François Pinard * configure.in: Use AC_CONST. * Makefile.in: Distribute getopt.h. Add as getopt.o dependency. Reported by Pierre Gaumond. 1993-01-13 François Pinard * recode.c: Merge in version.c. * version.c: Deleted. * All .c, mergelex.awk: Conditionnally include config.h, and do not include common.h anymore. Update Copyright year lists. * common.h: Deleted. * Makefile.in: Do not distribute common.h, but do distribute config.h.in. Have all objects depend upon config.h. Force -I. in CPPFLAGS so config.h will be found whenever --srcdir is used. Newer version of autoconf related goals. * configure.in: Use AC_CONFIG_HEADER. * checkit: Study config.h instead of config.status. * Makefile.in: Use texi2dvi instead of tex. Reported by Martin Maechler. * Makefile.in: Cleanup and reorganization. New info and dvi goals. Remove recode.info from all. Define and use MAKEINFO and TEXI2DVI. Use ALLOCA, because of getopt. Distribute THANKS file. Rename HDRS, SRCS and OBJS into HEADERS, SOURCES and OBJECTS. Merge LIBSRCS and MSDOS_OBJS, remove them. * alloca.c: New, from elsewhere. * configure.in: Use AC_ALLOCA. * getopt.c: Use more recent version. * getopt.h: New, from elsewhere. * recode.c: Replace tempnam by tmpnam. Always allocate the temporary file names statically, because some tmpnam's require this. Also delay tmpnam until open time, for NeXT's. * pathmax.h: New, from elsewhere. * Makefile.in: Distribute pathmax.h. Reported by Andreas Mueller. * configure.in: Replace AC_USG by AC_HAVE_HEADERS(string.h). * recode.c: Replace USG test by HAVE_STRING_H test. * recode.c: Everywhere, use error instead of assert or perror. Include errno.h and conditionnaly declare errno. Reformulate `if ((var = value) == test)' by `if (var = value, var == test)'. Use error in place of `fprintf(stderr, ...); exit(EXIT_FAILURE)'. * error.c: New, from elsewhere. * Makefile.in: Use and distribute error.c. * recode.c: Remove unnecessary system prototypes. 1993-01-01 François Pinard * Makefile.in: Reinstate $(CPPFLAGS), use it. Richard wants it there. 1992-11-28 François Pinard * Makefile.in (clean, distclean): Remove ansi2knr rubbish. Reported by Pierre Gaumond. * Makefile.in: Remove all .PHONY's. 1992-11-18 François Pinard * Makefile.in: Add definition for INSTALL. Reported by Bastian Schlueter, Larry W. Virden and Ronald C.F. Antony. 1992-11-18 Jim Meyering * recode.c (most functions): Declare static. * ascicdcn.c, cccaebcd.c, cdcaebcd.c, ebcdccca.c, ebcdcdca.c, ibmplat1.c, ibmpmaci.c, lat1bang.c, lat1ibmp.c, lat1ltex.c, lat1txte.c, maciibmp.c, recode.c, steps.h: Declare with const attribute all static tables and pointer variables that traverse them. * recode.c: Declare `sequence' to be an array of const pointers. (find_sequence): Declare the `step' field of critical_tree with const attribute. * steps.h [struct keyword_struct]: Separate type definition and variable declaration. 1992-11-13 François Pinard * Makefile.in (dist): chmod a+r before making the tar file. 1992-11-12 François Pinard * aclocal.m4: Update FP_STDC_CHECK, replacing by FP_PROTOTYPES. * configure.in: Adjust accordingly. 1992-10-07 François Pinard * Version 3.2.4 to alt.sources, and later on prep. 1992-10-06 François Pinard * Makefile.in: Use exec_prefix. Add `uninstall'. 1992-09-29 François Pinard * recode.c: Define EXIT_SUCCESS and EXIT_FAILURE if not defined, even after inclusion of , for SunOS 4. * Makefile.in: Add a completion message to `make check'. * configure.in: Make the `WARNING:' bigger if no Flex. 1992-09-25 François Pinard * Version 3.2.3. * HINTS: New file, used to simplify README. * Makefile.in: Distribute HINTS. * configure.in: Remove tests for Apollo's and 286 systems. * steps.h: Replace XENIX by ENUM_INT_BUG. * HINTS: Tell about Apollo's and 286 systems installation hints. 1992-09-24 François Pinard * recode.c: Write `Recoding...' instead of `recoding...'. * asciflat.c: Insure looking one character ahead at all times. This also solves a bug by which the second diacritic of a pair of two diacritics in a row was not properly flattened out. 1992-08-26 François Pinard * ltexlat1.l: Given `*' is a diacritic operation, insure swallowing '{}' in `\*\i{}'. Recognize also `\*{\i}'. * asciltex.l: Prefer `\c{c}' to `\c c'. * lat1ltex.c: Idem. * lat1ltex.c: Insure NULs will go through. * recode.c: Implement the -d `diacritics_only' option for LaTeX. * asciltex.l: Idem. * lat1ltex.c: Idem. * ltexasci.l: Idem. * ltexlat1.l: Idem. 1992-08-23 François Pinard * recode.texi: Merging in some other separate documents. * table.texi, DisplayCode: Deleted. * Makefile.in: Adjusted. * configure.in: Split FP_STDC_CHECK out into aclocal.m4. * aclocal.m4: New. * Makefile.in: Distribute aclocal.m4. * version.c: Insure next version will be 3.2.3, skipping 3.2.1 and 3.2.2, jumping over parallel numbering at U. de Montre'al. 1992-08-19 François Pinard * ansi2knr: New, from Ghostscript distribution. * configure.in: Check for __STDC__ and define U. * Makefile.in: Use U and ansi2knr. * All .c's: Remove many __STDC__ checks. * mergelex.awk: Remove generation of __STDC__ checks. 1992-07-20 François Pinard * Makefile.in: Use various clean goals according to latest GNU standards. Moreover, add a recode.dvi goal and a texclean goal. 1992-07-16 François Pinard * configure.in: Changes for Autoconf 0.120. Also test for popen, even if almost any UNIX has it; so the user can later undefine it from DEFS; avoid testing for pipe because of an old bug in this area. * Makefile.in, recode.c, checkit, common.h: Replace all *_MISSING by HAVE_*. 1992-06-18 François Pinard * Makefile.in: Changes for Autoconf 0.118. Use AWK and LEX instead of GAWK and FLEX. 1992-06-04 François Pinard * Makefile.in: Changes for Autoconf 0.115. Use config.status to recreate Makefile from Makefile.in. * checkit: Retrieve DEFS value from config.status instead of Makefile. 1992-06-01 François Pinard * Makefile.in, configure.in: Changes for Autoconf 0.112. Avoid FP_PROG_MAKEINFO and use `makeinfo' directly. * checkit: Get DEFS from Makefile instead of from config.status. 1992-02-02 François Pinard * recode.c (main): Returns int. 1992-01-30 François Pinard * Makefile.in: Use new names for clean goals. 1991-12-02 François Pinard * steps.h, recode.c: Removed comma at end of enum's. * version.c: Added a few const's. 1991-11-30 François Pinard * recode.c: Use EXIT_FAILURE and EXIT_SUCCESS; define them if not STDC_HEADERS. * recode.c: Prototypes added for fstat, getopt, link, perror, unlink and utime, if __STDC__. 1991-11-07 François Pinard * recode.texi: Should now be TeXable. * Makefile.in: Insure distributing texinfo.tex. * ibmpicon.c, iconibmp.c: Use 0x1E for QNX end of lines, 0x0E was wrong. * configure.in: Take care of POSIXish ISC. 1991-11-05 François Pinard * configure.in, Makefile.in: Do not absolutize $(srcdir), because this could create problems with automounters. * configure.in, Makefile.in: Remove IF_* devices, they were solving a problem caused only by non timestamping shars, and recode is now distributed in tar or zoo format. 1991-11-04 François Pinard * configure.in: Get rid of the head program, using sed. I would also like, eventually, to get rid of file and grep programs too. 1991-11-01 François Pinard * recode.c (main): Use rename library routine if available. * configure.in: Check for rename availability. * Makefile.in: Insure gawk is executed in the source directory while preparing merged.c. * recode.c (execute_pipe_sequence): Close descriptor after dup2. Still bugged. * recode.c (code_index): Reject partial matches for keywords. Reported by Laurent Bourbeau. 1991-10-28 François Pinard * configure.in: New. * configure: Automatically regenerated from file configure.in and David MacKenzie's autoconf. 1991-10-28 François Pinard * Version 3.2. * all: Replace GPL version 1 by GPL version 2. * Makefile.in: Use `sh checkit' instead of `./checkit'. For an unknown reason, the Sparc requires this. * recode.c: Define str[r]chr to be [r]index if not USG. * recode.c: Force binary mode on files for MSDOS. 1991-10-27 François Pinard * recode.c: MSDOS port. tempnam(), utime(), link() and getopt() were missing; replacements inspired from by Rahul Dhesi's flip. * configdos.pl, config.tcc: New. * getopt.c: New, AT&T freed code. * Makefile.in: Adjustements for MSDOS port, dist.dos goal. 1991-10-25 François Pinard * recode.c (execute_popen_sequence, execute_pipe_sequence): Accept non filter mode. (execute_pipe_sequence): Wait for children. Still bugged. * configure: Test dup2. * recode.c: Have DUP2_MISSING imply PIPE_MISSING, for now. * checkit: New. * Makefile.in: Use checkit in check goal. 1991-10-23 François Pinard * recode.c: Revert back to -v instead of -q. Give the user some more control on the sequencing strategy through -i, -o and -p. Get rid of any USE_FILE, USE_POPEN and USE_PIPE. However, keep POPEN_MISSING and PIPE_MISSING around, for MSDOS. Segregating between `popen' and `pipe' is only experimental, while trying to have `pipe' working correctly. * configure, Makefile.in: New. Many new configuration features. Among others, through IF_FLEX, be careful to never loose merged.c on those systems which do not have the machinery to remake it. * GNUmakefile, Makefile, Depends: deleted. 1991-03-31 François Pinard * mergelex.awk: remove exit() and read() definitions. 1991-01-22 François Pinard * ibmpicon.c, ibmplat1.c, ibmpmaci.c: Recognize old DOS end of file (0x1A). 1991-01-21 François Pinard * lat1bang.c, lat1txte.c: Have the no-break space converted to a single space. 1991-01-15 François Pinard * all: While/if ((var=exp) [test]) -> while/if (var=exp, var [test]), switch (var=exp) -> var=exp; switch (var). * recode.c (code_index): Use usage_and_exit (). Moved. * recode.c (echo_sequence): Print format changed. * recode.c: Issue `recoding FILE ...done' messages, unless -q. * ibmplat1.c, lat1ibmp.c, ibmpmaci, maciibmp.c, txteibmp.c: While reading MS-DOS files, 0x0D followed by 0x0A is converted to an end of line; while writing MS-DOS files, end of lines are converted to 0x0D 0x0A. * ibmpicon.c, iconibmp.c: While reading QNX files, 0x0E is converted to 0x0D 0x0A; while writing QNX files, 0x0D followed by 0x0A is converted to 0x0E. * txteibmp.l: Deleted. * steps.h: Remove references to texte_ibmpc. * steps.h: Remove DONT_LEX conditionals; merged.c is always available for installation. 1990-07-04 François Pinard * all: Copyright directly assigned to the FSF. 1990-03-26 François Pinard * txteasci.l, txteibmp.l, txtelat1.l: Change occurrences of a NUL terminated cursor by a counter from 0 to yyleng-1. This will insure proper transmission of NULs through Flex, which can now handle them. * mergelex.awk: Make use of -8 option of Flex 2.2 alpha, adjust documentation, insure proper pre-declarations of Flex variables yytext, yyleng, yyint and yyout. 1990-03-23 François Pinard * recode.c (execute_popen_sequence): Get rid of unused variables. * recode.c (code_index): Change index to counter, because on BSD index is a library function. 1990-03-16 François Pinard * Version 3.1. 1990-03-15 François Pinard * version.c, recode.c (usage_and_exit): Change -V to -C to give the Copyright conditions, print version identification. * txtelat1.l: Real strange bug aroud Flex. I ought to blindly remove the specific case of a capital A with a diaeresis to get rid of a `NULL in input' Flex diagnostic. Doing so, I introduce a new bug to get rid of another :-(. * all: Added missing prototypes declarations, missing void specifications for functions, missing const; removed unused variables. * common.h: New. 1990-02-09 François Pinard * recode.c, Makefile: If no files are specified, recode stdin on stdout as before. But if files are specified, each of them is now recoded over itself, preserving its time stamps unless -t option is used. To make it work on BSD, split execute_sequence in three, get rid of USE_FILES and hide USE_PIPE in the Makefile. Also, see the comment before execute_sequence routines, in recode.c. * recode.c (main): Some code for -f, to be written later. * recode.c (usage_and_exit): Rewritten. 1990-02-05 François Pinard * recode.c (usage): Added commas to improve readability. * lat1bang.c: Have lower case output instead of upper case, this is more readable. 1990-02-03 François Pinard * Version 3.0.1. * recode.c: Corrected bugs related to USE_POPEN; recode step path is now echoed once, and diaeresis selection is now propagated. 1990-02-02 François Pinard * mergelex.awk: Option USE_FPUTC, so to compile merged.c using fputc instead of putc. It will hopefully ease Apollo C compiler, which litterally trashes on merged.c. 1990-01-27 François Pinard * all: Adaptation for Flex. A few yyleng problems short-circuited here and there in some .l's. * lexcom.c: Eliminated. * mergelex.awk: New, for merging all .l's into a single merged.l. This results in a shorter a.out, by a factor of 2 in fact. * asciltex.l, ascitxte.l: Slight adjustments needed to escape <'s with backslashes. * cdcnasci.c, banglat1.c: Too many putc's, simplified to shorten the object modules. * recode.c: Temporary files were improperly unlinked. Addition of a -q option (quiet), removal of -d (debug): by default, choosen step path is printed on stderr. * lat1bang.c: Replacement for disappearing ascibang.l. * ascibang.l: Removed. 1989-11-19 François Pinard * banglat1.c, lat1bang.c, iconibmp.c, cdcnasci.c, ascicdcn.c, asciflat.c: Replacements for banglat1.l, ascibang.l, iconibmp.l, cdcnasci.l, ascicdcn.l, asciflat.l. I will get rid of some simpler lex routines, to get speed and save space. * steps.h, version.c: Various adjustments for the preceeding changes. * Most files: Removal of the dash to restrict each file name into eight character, for MS-DOS. 1989-11-10 François Pinard * version.c: Added. * recode.c: Provision for -V option. 1989-10-29 François Pinard * Version 3.0. * txte-lat1.l, lat1-txte.c: Added. * txte-ibmp.l: Capital E with acute accent now stays capital in all cases. * recode.c: Addition of USE_FILES feature for smaller machines. PIPE_OUTSIDE renamed to USE_POPEN, PIPE_INSIDE to USE_PIPE. Recognition of short keywords. * ltex-asci.l, ltex-lat1.l: \$ now correctly translated into $. recode-3.6/src/Makefile.am0100644000000000000000000001024607213465374014163 0ustar rootroot# Makefile for `recode' sources. # Copyright © 1991,92,93,94,95,96,97,98,99, 00 Free Software Foundation, Inc. # François Pinard , 1988. # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AUTOMAKE_OPTIONS = gnits ansi2knr bin_PROGRAMS = recode lib_LTLIBRARIES = librecode.la man_MANS = recode.1 include_HEADERS = recode.h recodext.h noinst_HEADERS = argmatch.h charname.h common.h decsteps.h \ fr-charname.h hash.h inisteps.h libiconv.h quotearg.h rfc1345.h tersteps.h \ xalloc.h $(H_FALLBACKS) $(H_SURFACES) EXTRA_DIST = stamp-steps $(L_STEPS) mergelex.py $(MANS) C_STEPS = african.c afrtran.c applemac.c atarist.c bangbang.c cdcnos.c \ ebcdic.c ibmpc.c iconqnx.c lat1asci.c mule.c strip-data.c testdump.c \ ucs.c utf16.c utf7.c utf8.c varia.c vn.c $(C_FALLBACKS) $(C_SURFACES) OLD_C_STEPS = next.c L_STEPS = ascilat1.l $(L_FALLBACKS) $(L_SURFACES) H_FALLBACKS = C_FALLBACKS = flat.c html.c lat1ltex.c lat1txte.c rfc1345.c texinfo.c L_FALLBACKS = ltexlat1.l txtelat1.l H_SURFACES = base64.h C_SURFACES = base64.c dump.c endline.c permut.c quoted.c L_SURFACES = recode_SOURCES = main.c freeze.c mixed.c recode_LDADD = librecode.la ../lib/libreco.a librecode_la_SOURCES = argmatch.c charname.c combine.c fr-charname.c \ hash.c iconv.c libiconv.c localcharset.c merged.c names.c outer.c quotearg.c \ recode.c request.c strip-pool.c task.c xmalloc.c $(C_STEPS) librecode_la_LDFLAGS = -version-info 0:0:0 INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/lib -I$(top_srcdir)/libiconv DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@ ETAGS_ARGS = $(L_STEPS) TAGS_DEPENDENCIES = $(L_STEPS) # These CFLAGS values are not auto-configured: # -DDIFF_HASH For using GNU diff's hash algorithm instead. # -DHASH_STATS For printing a one-liner hash statistics. LEX = @LEX@ PERL = perl PYTHON = python $(srcdir)/decsteps.h: stamp-steps $(srcdir)/inisteps.h: stamp-steps $(srcdir)/tersteps.h: stamp-steps stamp-steps: $(C_STEPS) merged.c @echo "Updating {dec,ini,ter}steps.h" @(cd $(srcdir) && grep -h '^module_' $(C_STEPS) merged.c ) \ | sed 's/ .*//' > liste.tmp @sed 's/\(.*\)/bool \1 PARAMS ((struct recode_outer *));/' \ liste.tmp > decsteps.tmp @sed 's/\(.*\)/void del\1 PARAMS ((struct recode_outer *));/' \ liste.tmp >> decsteps.tmp @sed 's/\(.*\)/ if (!\1 (outer)) return false;/' \ liste.tmp > inisteps.tmp @sed 's/\(.*\)/ del\1 (outer);/' \ liste.tmp > tersteps.tmp @rm liste.tmp @if cmp -s $(srcdir)/decsteps.h decsteps.tmp; then rm decsteps.tmp; \ else mv decsteps.tmp $(srcdir)/decsteps.h; fi @if cmp -s $(srcdir)/inisteps.h inisteps.tmp; then rm inisteps.tmp; \ else mv inisteps.tmp $(srcdir)/inisteps.h; fi @if cmp -s $(srcdir)/tersteps.h tersteps.tmp; then rm tersteps.tmp; \ else mv tersteps.tmp $(srcdir)/tersteps.h; fi @echo timestamp > $(srcdir)/stamp-steps main.o: main.c ../config.status #main.o: common.h recode.h (should be automatic?) outer.o: stamp-steps $(srcdir)/merged.c: mergelex.py $(L_STEPS) (cd $(srcdir) && cat $(L_STEPS)) \ | $(PYTHON) $(srcdir)/mergelex.py > merged.tm1 $(LEX) -t8 merged.tm1 > merged.tm2 grep -v '^# *line [0-9]' merged.tm2 > $(srcdir)/merged.c rm merged.tm1 merged.tm2 $(srcdir)/recode.1: recode @if test -r $@ && test ! -w $@; then \ echo "WARNING: Page \`$@' read only, not updated"; \ elif $(PERL) $(top_srcdir)/doc/help2man --output=$@ ./recode; then \ echo "Page \`$@' has been updated"; \ else \ echo "WARNING: Page \`$@' has *not* been updated."; \ echo " It might be that \`Perl' is missing on your system,"; \ echo " but you may safely and merely ignore this error."; \ fi recode-3.6/src/ansi2knr.10100644000000000000000000000277107142144413013731 0ustar rootroot.TH ANSI2KNR 1 "19 Jan 1996" .SH NAME ansi2knr \- convert ANSI C to Kernighan & Ritchie C .SH SYNOPSIS .I ansi2knr [--varargs] input_file [output_file] .SH DESCRIPTION If no output_file is supplied, output goes to stdout. .br There are no error messages. .sp .I ansi2knr recognizes function definitions by seeing a non-keyword identifier at the left margin, followed by a left parenthesis, with a right parenthesis as the last character on the line, and with a left brace as the first token on the following line (ignoring possible intervening comments). It will recognize a multi-line header provided that no intervening line ends with a left or right brace or a semicolon. These algorithms ignore whitespace and comments, except that the function name must be the first thing on the line. .sp The following constructs will confuse it: .br - Any other construct that starts at the left margin and follows the above syntax (such as a macro or function call). .br - Some macros that tinker with the syntax of the function header. .sp The --varargs switch is obsolete, and is recognized only for backwards compatibility. The present version of .I ansi2knr will always attempt to convert a ... argument to va_alist and va_dcl. .SH AUTHOR L. Peter Deutsch wrote the original ansi2knr and continues to maintain the current version; most of the code in the current version is his work. ansi2knr also includes contributions by Francois Pinard and Jim Avera . recode-3.6/src/ansi2knr.c0100644000000000000000000004442007142144413014010 0ustar rootroot/* Copyright (C) 1989, 1997, 1998, 1999 Aladdin Enterprises. All rights reserved. */ /*$Id: ansi2knr.c,v 1.14 1999/04/13 14:44:33 meyering Exp $*/ /* Convert ANSI C function definitions to K&R ("traditional C") syntax */ /* ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. No author or distributor accepts responsibility to anyone for the consequences of using it or for whether it serves any particular purpose or works at all, unless he says so in writing. Refer to the GNU General Public License (the "GPL") for full details. Everyone is granted permission to copy, modify and redistribute ansi2knr, but only under the conditions described in the GPL. A copy of this license is supposed to have been given to you along with ansi2knr so you can know your rights and responsibilities. It should be in a file named COPYLEFT, or, if there is no file named COPYLEFT, a file named COPYING. Among other things, the copyright notice and this notice must be preserved on all copies. We explicitly state here what we believe is already implied by the GPL: if the ansi2knr program is distributed as a separate set of sources and a separate executable file which are aggregated on a storage medium together with another program, this in itself does not bring the other program under the GPL, nor does the mere fact that such a program or the procedures for constructing it invoke the ansi2knr executable bring any other part of the program under the GPL. */ /* * Usage: ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]] * --filename provides the file name for the #line directive in the output, * overriding input_file (if present). * If no input_file is supplied, input is read from stdin. * If no output_file is supplied, output goes to stdout. * There are no error messages. * * ansi2knr recognizes function definitions by seeing a non-keyword * identifier at the left margin, followed by a left parenthesis, * with a right parenthesis as the last character on the line, * and with a left brace as the first token on the following line * (ignoring possible intervening comments), except that a line * consisting of only * identifier1(identifier2) * will not be considered a function definition unless identifier2 is * the word "void", and a line consisting of * identifier1(identifier2, <>) * will not be considered a function definition. * ansi2knr will recognize a multi-line header provided * that no intervening line ends with a left or right brace or a semicolon. * These algorithms ignore whitespace and comments, except that * the function name must be the first thing on the line. * The following constructs will confuse it: * - Any other construct that starts at the left margin and * follows the above syntax (such as a macro or function call). * - Some macros that tinker with the syntax of function headers. */ /* * The original and principal author of ansi2knr is L. Peter Deutsch * . Other authors are noted in the change history * that follows (in reverse chronological order): lpd 1999-04-12 added minor fixes from Pavel Roskin for clean compilation with gcc -W -Wall lpd 1999-03-22 added hack to recognize lines consisting of identifier1(identifier2, xxx) as *not* being procedures lpd 1999-02-03 made indentation of preprocessor commands consistent lpd 1999-01-28 fixed two bugs: a '/' in an argument list caused an endless loop; quoted strings within an argument list confused the parser lpd 1999-01-24 added a check for write errors on the output, suggested by Jim Meyering lpd 1998-11-09 added further hack to recognize identifier(void) as being a procedure lpd 1998-10-23 added hack to recognize lines consisting of identifier1(identifier2) as *not* being procedures lpd 1997-12-08 made input_file optional; only closes input and/or output file if not stdin or stdout respectively; prints usage message on stderr rather than stdout; adds --filename switch (changes suggested by ) lpd 1996-01-21 added code to cope with not HAVE_CONFIG_H and with compilers that don't understand void, as suggested by Tom Lane lpd 1996-01-15 changed to require that the first non-comment token on the line following a function header be a left brace, to reduce sensitivity to macros, as suggested by Tom Lane lpd 1995-06-22 removed #ifndefs whose sole purpose was to define undefined preprocessor symbols as 0; changed all #ifdefs for configuration symbols to #ifs lpd 1995-04-05 changed copyright notice to make it clear that including ansi2knr in a program does not bring the entire program under the GPL lpd 1994-12-18 added conditionals for systems where ctype macros don't handle 8-bit characters properly, suggested by Francois Pinard ; removed --varargs switch (this is now the default) lpd 1994-10-10 removed CONFIG_BROKETS conditional lpd 1994-07-16 added some conditionals to help GNU `configure', suggested by Francois Pinard ; properly erase prototype args in function parameters, contributed by Jim Avera ; correct error in writeblanks (it shouldn't erase EOLs) lpd 1989-xx-xx original version */ /* Most of the conditionals here are to make ansi2knr work with */ /* or without the GNU configure machinery. */ #if HAVE_CONFIG_H # include #endif #include #include #if HAVE_CONFIG_H /* For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h). This will define HAVE_CONFIG_H and so, activate the following lines. */ # if STDC_HEADERS || HAVE_STRING_H # include # else # include # endif #else /* not HAVE_CONFIG_H */ /* Otherwise do it the hard way */ # ifdef BSD # include # else # ifdef VMS extern int strlen(), strncmp(); # else # include # endif # endif #endif /* not HAVE_CONFIG_H */ #if STDC_HEADERS # include #else /* malloc and free should be declared in stdlib.h, but if you've got a K&R compiler, they probably aren't. */ # ifdef MSDOS # include # else # ifdef VMS extern char *malloc(); extern void free(); # else extern char *malloc(); extern int free(); # endif # endif #endif /* Define NULL (for *very* old compilers). */ #ifndef NULL # define NULL (0) #endif /* * The ctype macros don't always handle 8-bit characters correctly. * Compensate for this here. */ #ifdef isascii # undef HAVE_ISASCII /* just in case */ # define HAVE_ISASCII 1 #else #endif #if STDC_HEADERS || !HAVE_ISASCII # define is_ascii(c) 1 #else # define is_ascii(c) isascii(c) #endif #define is_space(c) (is_ascii(c) && isspace(c)) #define is_alpha(c) (is_ascii(c) && isalpha(c)) #define is_alnum(c) (is_ascii(c) && isalnum(c)) /* Scanning macros */ #define isidchar(ch) (is_alnum(ch) || (ch) == '_') #define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_') /* Forward references */ char *skipspace(); char *scanstring(); int writeblanks(); int test1(); int convert1(); /* The main program */ int main(argc, argv) int argc; char *argv[]; { FILE *in = stdin; FILE *out = stdout; char *filename = 0; char *program_name = argv[0]; char *output_name = 0; #define bufsize 5000 /* arbitrary size */ char *buf; char *line; char *more; char *usage = "Usage: ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]]\n"; /* * In previous versions, ansi2knr recognized a --varargs switch. * If this switch was supplied, ansi2knr would attempt to convert * a ... argument to va_alist and va_dcl; if this switch was not * supplied, ansi2knr would simply drop any such arguments. * Now, ansi2knr always does this conversion, and we only * check for this switch for backward compatibility. */ int convert_varargs = 1; int output_error; while ( argc > 1 && argv[1][0] == '-' ) { if ( !strcmp(argv[1], "--varargs") ) { convert_varargs = 1; argc--; argv++; continue; } if ( !strcmp(argv[1], "--filename") && argc > 2 ) { filename = argv[2]; argc -= 2; argv += 2; continue; } fprintf(stderr, "%s: Unrecognized switch: %s\n", program_name, argv[1]); fprintf(stderr, usage); exit(1); } switch ( argc ) { default: fprintf(stderr, usage); exit(0); case 3: output_name = argv[2]; out = fopen(output_name, "w"); if ( out == NULL ) { fprintf(stderr, "%s: Cannot open output file %s\n", program_name, output_name); exit(1); } /* falls through */ case 2: in = fopen(argv[1], "r"); if ( in == NULL ) { fprintf(stderr, "%s: Cannot open input file %s\n", program_name, argv[1]); exit(1); } if ( filename == 0 ) filename = argv[1]; /* falls through */ case 1: break; } if ( filename ) fprintf(out, "#line 1 \"%s\"\n", filename); buf = malloc(bufsize); if ( buf == NULL ) { fprintf(stderr, "Unable to allocate read buffer!\n"); exit(1); } line = buf; while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL ) { test: line += strlen(line); switch ( test1(buf) ) { case 2: /* a function header */ convert1(buf, out, 1, convert_varargs); break; case 1: /* a function */ /* Check for a { at the start of the next line. */ more = ++line; f: if ( line >= buf + (bufsize - 1) ) /* overflow check */ goto wl; if ( fgets(line, (unsigned)(buf + bufsize - line), in) == NULL ) goto wl; switch ( *skipspace(more, 1) ) { case '{': /* Definitely a function header. */ convert1(buf, out, 0, convert_varargs); fputs(more, out); break; case 0: /* The next line was blank or a comment: */ /* keep scanning for a non-comment. */ line += strlen(line); goto f; default: /* buf isn't a function header, but */ /* more might be. */ fputs(buf, out); strcpy(buf, more); line = buf; goto test; } break; case -1: /* maybe the start of a function */ if ( line != buf + (bufsize - 1) ) /* overflow check */ continue; /* falls through */ default: /* not a function */ wl: fputs(buf, out); break; } line = buf; } if ( line != buf ) fputs(buf, out); free(buf); if ( output_name ) { output_error = ferror(out); output_error |= fclose(out); } else { /* out == stdout */ fflush(out); output_error = ferror(out); } if ( output_error ) { fprintf(stderr, "%s: error writing to %s\n", program_name, (output_name ? output_name : "stdout")); exit(1); } if ( in != stdin ) fclose(in); return 0; } /* Skip over whitespace and comments, in either direction. */ char * skipspace(p, dir) register char *p; register int dir; /* 1 for forward, -1 for backward */ { for ( ; ; ) { while ( is_space(*p) ) p += dir; if ( !(*p == '/' && p[dir] == '*') ) break; p += dir; p += dir; while ( !(*p == '*' && p[dir] == '/') ) { if ( *p == 0 ) return p; /* multi-line comment?? */ p += dir; } p += dir; p += dir; } return p; } /* Scan over a quoted string, in either direction. */ char * scanstring(p, dir) register char *p; register int dir; { for (p += dir; ; p += dir) if (*p == '"' && p[-dir] != '\\') return p + dir; } /* * Write blanks over part of a string. * Don't overwrite end-of-line characters. */ int writeblanks(start, end) char *start; char *end; { char *p; for ( p = start; p < end; p++ ) if ( *p != '\r' && *p != '\n' ) *p = ' '; return 0; } /* * Test whether the string in buf is a function definition. * The string may contain and/or end with a newline. * Return as follows: * 0 - definitely not a function definition; * 1 - definitely a function definition; * 2 - definitely a function prototype (NOT USED); * -1 - may be the beginning of a function definition, * append another line and look again. * The reason we don't attempt to convert function prototypes is that * Ghostscript's declaration-generating macros look too much like * prototypes, and confuse the algorithms. */ int test1(buf) char *buf; { register char *p = buf; char *bend; char *endfn; int contin; if ( !isidfirstchar(*p) ) return 0; /* no name at left margin */ bend = skipspace(buf + strlen(buf) - 1, -1); switch ( *bend ) { case ';': contin = 0 /*2*/; break; case ')': contin = 1; break; case '{': return 0; /* not a function */ case '}': return 0; /* not a function */ default: contin = -1; } while ( isidchar(*p) ) p++; endfn = p; p = skipspace(p, 1); if ( *p++ != '(' ) return 0; /* not a function */ p = skipspace(p, 1); if ( *p == ')' ) return 0; /* no parameters */ /* Check that the apparent function name isn't a keyword. */ /* We only need to check for keywords that could be followed */ /* by a left parenthesis (which, unfortunately, is most of them). */ { static char *words[] = { "asm", "auto", "case", "char", "const", "double", "extern", "float", "for", "if", "int", "long", "register", "return", "short", "signed", "sizeof", "static", "switch", "typedef", "unsigned", "void", "volatile", "while", 0 }; char **key = words; char *kp; unsigned len = endfn - buf; while ( (kp = *key) != 0 ) { if ( strlen(kp) == len && !strncmp(kp, buf, len) ) return 0; /* name is a keyword */ key++; } } { char *id = p; int len; /* * Check for identifier1(identifier2) and not * identifier1(void), or identifier1(identifier2, xxxx). */ while ( isidchar(*p) ) p++; len = p - id; p = skipspace(p, 1); if (*p == ',' || (*p == ')' && (len != 4 || strncmp(id, "void", 4))) ) return 0; /* not a function */ } /* * If the last significant character was a ), we need to count * parentheses, because it might be part of a formal parameter * that is a procedure. */ if (contin > 0) { int level = 0; for (p = skipspace(buf, 1); *p; p = skipspace(p + 1, 1)) level += (*p == '(' ? 1 : *p == ')' ? -1 : 0); if (level > 0) contin = -1; } return contin; } /* Convert a recognized function definition or header to K&R syntax. */ int convert1(buf, out, header, convert_varargs) char *buf; FILE *out; int header; /* Boolean */ int convert_varargs; /* Boolean */ { char *endfn; register char *p; /* * The breaks table contains pointers to the beginning and end * of each argument. */ char **breaks; unsigned num_breaks = 2; /* for testing */ char **btop; char **bp; char **ap; char *vararg = 0; /* Pre-ANSI implementations don't agree on whether strchr */ /* is called strchr or index, so we open-code it here. */ for ( endfn = buf; *(endfn++) != '('; ) ; top: p = endfn; breaks = (char **)malloc(sizeof(char *) * num_breaks * 2); if ( breaks == NULL ) { /* Couldn't allocate break table, give up */ fprintf(stderr, "Unable to allocate break table!\n"); fputs(buf, out); return -1; } btop = breaks + num_breaks * 2 - 2; bp = breaks; /* Parse the argument list */ do { int level = 0; char *lp = NULL; char *rp = NULL; char *end = NULL; if ( bp >= btop ) { /* Filled up break table. */ /* Allocate a bigger one and start over. */ free((char *)breaks); num_breaks <<= 1; goto top; } *bp++ = p; /* Find the end of the argument */ for ( ; end == NULL; p++ ) { switch(*p) { case ',': if ( !level ) end = p; break; case '(': if ( !level ) lp = p; level++; break; case ')': if ( --level < 0 ) end = p; else rp = p; break; case '/': if (p[1] == '*') p = skipspace(p, 1) - 1; break; case '"': p = scanstring(p, 1) - 1; break; default: ; } } /* Erase any embedded prototype parameters. */ if ( lp && rp ) writeblanks(lp + 1, rp); p--; /* back up over terminator */ /* Find the name being declared. */ /* This is complicated because of procedure and */ /* array modifiers. */ for ( ; ; ) { p = skipspace(p - 1, -1); switch ( *p ) { case ']': /* skip array dimension(s) */ case ')': /* skip procedure args OR name */ { int level = 1; while ( level ) switch ( *--p ) { case ']': case ')': level++; break; case '[': case '(': level--; break; case '/': if (p > buf && p[-1] == '*') p = skipspace(p, -1) + 1; break; case '"': p = scanstring(p, -1) + 1; break; default: ; } } if ( *p == '(' && *skipspace(p + 1, 1) == '*' ) { /* We found the name being declared */ while ( !isidfirstchar(*p) ) p = skipspace(p, 1) + 1; goto found; } break; default: goto found; } } found: if ( *p == '.' && p[-1] == '.' && p[-2] == '.' ) { if ( convert_varargs ) { *bp++ = "va_alist"; vararg = p-2; } else { p++; if ( bp == breaks + 1 ) /* sole argument */ writeblanks(breaks[0], p); else writeblanks(bp[-1] - 1, p); bp--; } } else { while ( isidchar(*p) ) p--; *bp++ = p+1; } p = end; } while ( *p++ == ',' ); *bp = p; /* Make a special check for 'void' arglist */ if ( bp == breaks+2 ) { p = skipspace(breaks[0], 1); if ( !strncmp(p, "void", 4) ) { p = skipspace(p+4, 1); if ( p == breaks[2] - 1 ) { bp = breaks; /* yup, pretend arglist is empty */ writeblanks(breaks[0], p + 1); } } } /* Put out the function name and left parenthesis. */ p = buf; while ( p != endfn ) putc(*p, out), p++; /* Put out the declaration. */ if ( header ) { fputs(");", out); for ( p = breaks[0]; *p; p++ ) if ( *p == '\r' || *p == '\n' ) putc(*p, out); } else { for ( ap = breaks+1; ap < bp; ap += 2 ) { p = *ap; while ( isidchar(*p) ) putc(*p, out), p++; if ( ap < bp - 1 ) fputs(", ", out); } fputs(") ", out); /* Put out the argument declarations */ for ( ap = breaks+2; ap <= bp; ap += 2 ) (*ap)[-1] = ';'; if ( vararg != 0 ) { *vararg = 0; fputs(breaks[0], out); /* any prior args */ fputs("va_dcl", out); /* the final arg */ fputs(bp[0], out); } else fputs(breaks[0], out); } free((char *)breaks); return 0; } recode-3.6/src/argmatch.c0100644000000000000000000001766007142144413014055 0ustar rootroot/* argmatch.c -- find a match for a string in an array Copyright (C) 1990, 1998, 1999 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by David MacKenzie Modified by Akim Demaille */ #include "argmatch.h" #include #ifdef STDC_HEADERS # include #endif #if HAVE_LOCALE_H # include #endif #if ENABLE_NLS # include # define _(Text) gettext (Text) #else # define _(Text) Text #endif #include "error.h" #include "quotearg.h" /* When reporting an invalid argument, show nonprinting characters by using the quoting style ARGMATCH_QUOTING_STYLE. Do not use literal_quoting_style. */ #ifndef ARGMATCH_QUOTING_STYLE # define ARGMATCH_QUOTING_STYLE locale_quoting_style #endif /* The following test is to work around the gross typo in systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE is defined to 0, not 1. */ #if !EXIT_FAILURE # undef EXIT_FAILURE # define EXIT_FAILURE 1 #endif /* Non failing version of argmatch call this function after failing. */ #ifndef ARGMATCH_DIE # define ARGMATCH_DIE exit (EXIT_FAILURE) #endif #ifdef ARGMATCH_DIE_DECL ARGMATCH_DIE_DECL; #endif static void __argmatch_die (void) { ARGMATCH_DIE; } /* Used by XARGMATCH and XARGCASEMATCH. See description in argmatch.h. Default to __argmatch_die, but allow caller to change this at run-time. */ argmatch_exit_fn argmatch_die = __argmatch_die; /* If ARG is an unambiguous match for an element of the null-terminated array ARGLIST, return the index in ARGLIST of the matched element, else -1 if it does not match any element or -2 if it is ambiguous (is a prefix of more than one element). If SENSITIVE, comparison is case sensitive. If VALLIST is none null, use it to resolve ambiguities limited to synonyms, i.e., for "yes", "yop" -> 0 "no", "nope" -> 1 "y" is a valid argument, for `0', and "n" for `1'. */ static int __argmatch_internal (const char *arg, const char *const *arglist, const char *vallist, size_t valsize, int case_sensitive) { int i; /* Temporary index in ARGLIST. */ size_t arglen; /* Length of ARG. */ int matchind = -1; /* Index of first nonexact match. */ int ambiguous = 0; /* If nonzero, multiple nonexact match(es). */ arglen = strlen (arg); /* Test all elements for either exact match or abbreviated matches. */ for (i = 0; arglist[i]; i++) { if (case_sensitive ? !strncmp (arglist[i], arg, arglen) : !strncasecmp (arglist[i], arg, arglen)) { if (strlen (arglist[i]) == arglen) /* Exact match found. */ return i; else if (matchind == -1) /* First nonexact match found. */ matchind = i; else { /* Second nonexact match found. */ if (vallist == NULL || memcmp (vallist + valsize * matchind, vallist + valsize * i, valsize)) { /* There is a real ambiguity, or we could not disambiguate. */ ambiguous = 1; } } } } if (ambiguous) return -2; else return matchind; } /* argmatch - case sensitive version */ int argmatch (const char *arg, const char *const *arglist, const char *vallist, size_t valsize) { return __argmatch_internal (arg, arglist, vallist, valsize, 1); } /* argcasematch - case insensitive version */ int argcasematch (const char *arg, const char *const *arglist, const char *vallist, size_t valsize) { return __argmatch_internal (arg, arglist, vallist, valsize, 0); } /* Error reporting for argmatch. CONTEXT is a description of the type of entity that was being matched. VALUE is the invalid value that was given. PROBLEM is the return value from argmatch. */ void argmatch_invalid (const char *context, const char *value, int problem) { char const *format = (problem == -1 ? _("invalid argument %s for `%s'") : _("ambiguous argument %s for `%s'")); error (0, 0, format, quotearg_style (ARGMATCH_QUOTING_STYLE, value), context); } /* List the valid arguments for argmatch. ARGLIST is the same as in argmatch. VALLIST is a pointer to an array of values. VALSIZE is the size of the elements of VALLIST */ void argmatch_valid (const char *const *arglist, const char *vallist, size_t valsize) { int i; const char *last_val = NULL; /* We try to put synonyms on the same line. The assumption is that synonyms follow each other */ fprintf (stderr, _("Valid arguments are:")); for (i = 0; arglist[i]; i++) if ((i == 0) || memcmp (last_val, vallist + valsize * i, valsize)) { fprintf (stderr, "\n - `%s'", arglist[i]); last_val = vallist + valsize * i; } else { fprintf (stderr, ", `%s'", arglist[i]); } putc ('\n', stderr); } /* Never failing versions of the previous functions. CONTEXT is the context for which argmatch is called (e.g., "--version-control", or "$VERSION_CONTROL" etc.). Upon failure, calls the (supposed never to return) function EXIT_FN. */ int __xargmatch_internal (const char *context, const char *arg, const char *const *arglist, const char *vallist, size_t valsize, int case_sensitive, argmatch_exit_fn exit_fn) { int res = __argmatch_internal (arg, arglist, vallist, valsize, case_sensitive); if (res >= 0) /* Success. */ return res; /* We failed. Explain why. */ argmatch_invalid (context, arg, res); argmatch_valid (arglist, vallist, valsize); (*exit_fn) (); return -1; /* To please the compilers. */ } /* Look for VALUE in VALLIST, an array of objects of size VALSIZE and return the first corresponding argument in ARGLIST */ const char * argmatch_to_argument (const char *value, const char *const *arglist, const char *vallist, size_t valsize) { int i; for (i = 0; arglist[i]; i++) if (!memcmp (value, vallist + valsize * i, valsize)) return arglist[i]; return NULL; } #ifdef TEST /* * Based on "getversion.c" by David MacKenzie */ char *program_name; extern const char *getenv (); /* When to make backup files. */ enum backup_type { /* Never make backups. */ none, /* Make simple backups of every file. */ simple, /* Make numbered backups of files that already have numbered backups, and simple backups of the others. */ numbered_existing, /* Make numbered backups of every file. */ numbered }; /* Two tables describing arguments (keys) and their corresponding values */ static const char *const backup_args[] = { "no", "none", "off", "simple", "never", "existing", "nil", "numbered", "t", 0 }; static const enum backup_type backup_vals[] = { none, none, none, simple, simple, numbered_existing, numbered_existing, numbered, numbered }; int main (int argc, const char *const *argv) { const char *cp; enum backup_type backup_type = none; program_name = (char *) argv[0]; if (argc > 2) { fprintf (stderr, "Usage: %s [VERSION_CONTROL]\n", program_name); exit (1); } if ((cp = getenv ("VERSION_CONTROL"))) backup_type = XARGCASEMATCH ("$VERSION_CONTROL", cp, backup_args, backup_vals); if (argc == 2) backup_type = XARGCASEMATCH (program_name, argv[1], backup_args, backup_vals); printf ("The version control is `%s'\n", ARGMATCH_TO_ARGUMENT (backup_type, backup_args, backup_vals)); return 0; } #endif recode-3.6/src/charname.c0100644000000000000000000000465107126443216014046 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1993, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "charname.h" /*--------------------------------------------------------------------. | Return a statically allocated full charname associated with a given | | SYMBOL, or NULL if not found. | `--------------------------------------------------------------------*/ const char * ucs2_to_charname (int ucs2) { static char result[MAX_CHARNAME_LENGTH + 1]; int first; int last; int middle; int value; const char *in; char *out; const char *cursor; /* Find the symbol by binary searching the charname table. */ first = 0; last = NUMBER_OF_CHARNAMES; while (first < last) { middle = (first + last) / 2; if (charname[middle].code < ucs2) first = middle + 1; else if (charname[middle].code > ucs2) last = middle; else break; } /* If the UCS value has not been found, return the NULL string. */ if (first >= last) return NULL; /* Else, construct the resulting charname. */ out = NULL; for (in = charname[middle].crypted; *in; in++) { /* Decrypt the next word. */ value = *(const unsigned char *) in - 1; if (value >= NUMBER_OF_SINGLES) value = (NUMBER_OF_SINGLES + 255 * (value - NUMBER_OF_SINGLES) + *(const unsigned char *) ++in - 1); /* Copy it. */ if (out) *out++ = ' '; else out = result; for (cursor = word[value]; *cursor; cursor++) *out++ = *cursor; } /* Return the result. */ *out = NUL; return result; } recode-3.6/src/combine.c0100644000000000000000000003732207127440663013711 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "hash.h" /* FIXME: Cleanup memory at end of job, and softly report errors. */ /* The satisfactory aspects are that `recode' is now able to combine a set of sequence of UCS-2 characters into single codes, or explode those single codes into the original sequence. It may happen that many sequences reduce to the same code, one of them is arbitrarily taken as canonical. Any combining sequence of an equivalent set produces the equivalent code, but at explode time, codes are always turned into their canonical sequence. I did not limit the length of a combining sequence, yet it is usually small. Also, I did not put any limit on the number of possibly equivalent sequences. For combining, for each possible partial match in any sequence, there is a state. States corresponding to the scan of a single code are found by hash coding, while other states are linearly searched on a linked list of possible shifts, rooted on the state corresponding to the partial sequence, but without its last code. I expect this combination of methods to execute reasonably fast. Exploding is much simpler, and I merely use hash coding. The less satisfactory aspects are that the user interface is still very rude. For the time being, I merely added a "combined" charset: combining is done by `u2..co', exploding is done by `co..u2'. We surely could do much better, and build on the concept of options (introduced by `+' in the request syntax), Options are probably going to be used for other transliteration matters. Even if built on UCS-2, combining matters would have natural extensions in other _smaller_ charsets, and it would be nice being able to derive the functionality automatically. One difficulty to foresee is that, contrarily to surfaces, options like transliteration or combining _require_ specific charsets (like UCS-2) as a vehicle, and if UCS-2 is not otherwise mandated in the request, we would have to create such an UCS-2 intermediate. On the other hand, if UCS-2 is sandwidched somewhere in a complex series of steps, we should implicitly propagate options towards the UCS-2 step. Even if nothing looks utterly difficult, I guess that for doing it right, a lot of attention and care is needed. Also, I'm pretty sure that scrutinizing the documents (from w3.org or Unicode) that were suggested to us will raise new specific concerns. */ /* Exploding. */ /*---------------------------. | Initialize for exploding. | `---------------------------*/ static unsigned combined_hash (const void *void_data, unsigned table_size) { const unsigned short *data = void_data; return *data % table_size; } static bool combined_compare (const void *void_first, const void *void_second) { const unsigned short *first = void_first; const unsigned short *second = void_second; return *first == *second; } bool init_explode (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { const unsigned short *data = step->step_table; Hash_table *table; if (before_options || after_options) return false; table = hash_initialize (0, NULL, combined_hash, combined_compare, NULL); if (!table) return false; step->step_type = RECODE_EXPLODE_STEP; step->step_table = table; if (!data) return true; while (*data != DONE) { if (!hash_insert (table, data)) return false; while (*data != DONE) data++; data++; } return true; } /*------------------------------------. | Execute exploding transformations. | `------------------------------------*/ bool explode_byte_byte (RECODE_SUBTASK subtask) { Hash_table *table = subtask->step->step_table; unsigned value; while (value = get_byte (subtask), value != EOF) { unsigned short lookup = value; unsigned short *result = hash_lookup (table, &lookup); if (result) { result++; while (*result != DONE && *result != ELSE) { put_byte (*result, subtask); result++; } } else put_byte (value, subtask); } SUBTASK_RETURN (subtask); } bool explode_ucs2_byte (RECODE_SUBTASK subtask) { Hash_table *table = subtask->step->step_table; unsigned value; while (get_ucs2 (&value, subtask)) { unsigned short lookup = value; unsigned short *result = hash_lookup (table, &lookup); if (result) { result++; while (*result != DONE && *result != ELSE) { put_byte (*result, subtask); result++; } } else put_byte (value, subtask); } SUBTASK_RETURN (subtask); } bool explode_byte_ucs2 (RECODE_SUBTASK subtask) { Hash_table *table = subtask->step->step_table; unsigned value; if (value = get_byte (subtask), value != EOF) { if (subtask->task->byte_order_mark) put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { unsigned short lookup = value; unsigned short *result = hash_lookup (table, &lookup); if (result) { result++; while (*result != DONE && *result != ELSE) put_ucs2 (*result++, subtask); } else put_ucs2 (value, subtask); if (value = get_byte (subtask), value == EOF) break; } } SUBTASK_RETURN (subtask); } bool explode_ucs2_ucs2 (RECODE_SUBTASK subtask) { Hash_table *table = subtask->step->step_table; unsigned value; if (get_ucs2 (&value, subtask)) { if (subtask->task->byte_order_mark) put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { unsigned short lookup = value; unsigned short *result = hash_lookup (table, &lookup); if (result) { result++; while (*result != DONE && *result != ELSE) put_ucs2 (*result++, subtask); } else put_ucs2 (value, subtask); if (!get_ucs2 (&value, subtask)) break; } } SUBTASK_RETURN (subtask); } /* Combining. */ /* A combining state represents the history of reading one or more characters while forming a combining sequence. Hash coding is used to find an initial state from the first character in a sequence. If that state is not found, the character surely does not start any sequence. For subsequent characters, possible shifted states from the current state are kept on that state, as a linked chain. This combination of methods is expected to behave fast enough in practice. */ struct state { unsigned short character; /* last character seen to trigger this state */ unsigned short result; /* character equivalent to the combination */ struct state *shift; /* list of states for one more character */ struct state *unshift; /* state for one less character (back link) */ struct state *next; /* next state in a linked chain of states */ }; /*---------------------------. | Initialize for combining. | `---------------------------*/ static unsigned state_hash (const void *void_data, unsigned table_size) { const struct state *data = void_data; return data->character % table_size; } static bool state_compare (const void *void_first, const void *void_second) { const struct state *first = void_first; const struct state *second = void_second; return first->character == second->character; } static void state_free (void *void_state) { struct state *state = void_state; struct state *shift = state->shift; while (shift != NULL) { struct state *next_shift = shift->next; free (shift); shift = next_shift; } free (state); } static struct state * prepare_shifted_state (struct state *state, unsigned character, RECODE_CONST_STEP step) { if (state) { struct state *shift = state->shift; while (shift) if (shift->character == character) return shift; else shift = shift->next; if (shift = (struct state *) malloc (sizeof (struct state)), !shift) return NULL; shift->character = character; shift->result = NOT_A_CHARACTER; shift->shift = NULL; shift->unshift = state; shift->next = state->shift; state->shift = shift; return shift; } else { Hash_table *table = step->step_table; struct state lookup; lookup.character = character; state = hash_lookup (table, &lookup); if (!state) { if (state= (struct state *) malloc (sizeof (struct state)), !state) return NULL; state->character = character; state->result = character; state->shift = NULL; state->unshift = NULL; state->next = NULL; if (!hash_insert (table, state)) return NULL; } return state; } } static struct state * find_shifted_state (struct state *state, unsigned character, RECODE_CONST_STEP step) { if (state) { struct state *shift = state->shift; while (shift) if (shift->character == character) return shift; else shift = shift->next; return NULL; } else { Hash_table *table = step->step_table; struct state lookup; lookup.character = character; return hash_lookup (table, &lookup); } } bool init_combine (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { const unsigned short *data = step->step_table; Hash_table *table; if (before_options || after_options) return false; table = hash_initialize (0, NULL, state_hash, state_compare, state_free); if (!table) return false; step->step_type = RECODE_COMBINE_STEP; step->step_table = table; if (!data) return true; while (*data != DONE) { unsigned short result = *data++; struct state *state = NULL; while (*data != DONE) if (*data == ELSE) { if (state) { if (state->result != NOT_A_CHARACTER) abort (); state->result = result; state = NULL; } data++; } else { state = prepare_shifted_state (state, *data++, step); if (!state) return false; } if (state) { if (state->result != NOT_A_CHARACTER && state->result != state->character) abort (); state->result = result; } data++; } return true; } /*------------------. | Handle bactrack. | `------------------*/ /* When we cannot shift into a state allowing a terminal resulting character, we ought to backtrack until such a terminal character if found, then output this resulting character for representing the partial sequence which ends with that state. Then, we merely copy characters seen after that state. This approach does not properly scan for combinings which might exist in the copied characters, presuming that this case does not occur in practice. If we later find that it does, backtracing will have to be revisited. */ static void backtrack_byte (struct state *state, RECODE_SUBTASK subtask) { if (state->result == NOT_A_CHARACTER) { backtrack_byte (state->unshift, subtask); put_byte (state->character, subtask); } else put_byte (state->result, subtask); } static void backtrack_ucs2 (struct state *state, RECODE_SUBTASK subtask) { if (state->result == NOT_A_CHARACTER) { backtrack_ucs2 (state->unshift, subtask); put_ucs2 (state->character, subtask); } else put_ucs2 (state->result, subtask); } /*------------------------------------. | Execute combining transformations. | `------------------------------------*/ bool combine_byte_byte (RECODE_SUBTASK subtask) { struct state *state = NULL; unsigned value; if (value = get_byte (subtask), value != EOF) { while (true) { struct state *shift = find_shifted_state (state, value, subtask->step); if (shift) { state = shift; if (value = get_byte (subtask), value == EOF) break; } else if (state) { if (state->result == NOT_A_CHARACTER) backtrack_byte (state, subtask); else put_byte (state->result, subtask); state = NULL; } else { put_byte (value, subtask); if (value = get_byte (subtask), value == EOF) break; } } if (state) { if (state->result == NOT_A_CHARACTER) backtrack_byte (state, subtask); else put_byte (state->result, subtask); } } SUBTASK_RETURN (subtask); } bool combine_ucs2_byte (RECODE_SUBTASK subtask) { struct state *state = NULL; unsigned value; if (get_ucs2 (&value, subtask)) { while (true) { struct state *shift = find_shifted_state (state, value, subtask->step); if (shift) { state = shift; if (!get_ucs2 (&value, subtask)) break; } else if (state) { if (state->result == NOT_A_CHARACTER) backtrack_byte (state, subtask); else put_byte (state->result, subtask); state = NULL; } else { put_byte (value, subtask); if (!get_ucs2 (&value, subtask)) break; } } if (state) { if (state->result == NOT_A_CHARACTER) backtrack_byte (state, subtask); else put_byte (state->result, subtask); } } SUBTASK_RETURN (subtask); } bool combine_byte_ucs2 (RECODE_SUBTASK subtask) { unsigned value; if (value = get_byte (subtask), value != EOF) { struct state *state = NULL; if (subtask->task->byte_order_mark) put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { struct state *shift = find_shifted_state (state, value, subtask->step); if (shift) { state = shift; if (value = get_byte (subtask), value == EOF) break; } else if (state) { if (state->result == NOT_A_CHARACTER) backtrack_ucs2 (state, subtask); else put_ucs2 (state->result, subtask); state = NULL; } else { put_ucs2 (value, subtask); if (value = get_byte (subtask), value == EOF) break; } } if (state) { if (state->result == NOT_A_CHARACTER) backtrack_ucs2 (state, subtask); else put_ucs2 (state->result, subtask); } } SUBTASK_RETURN (subtask); } bool combine_ucs2_ucs2 (RECODE_SUBTASK subtask) { unsigned value; if (get_ucs2 (&value, subtask)) { struct state *state = NULL; if (subtask->task->byte_order_mark) put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { struct state *shift = find_shifted_state (state, value, subtask->step); if (shift) { state = shift; if (!get_ucs2 (&value, subtask)) break; } else if (state) { if (state->result == NOT_A_CHARACTER) backtrack_ucs2 (state, subtask); else put_ucs2 (state->result, subtask); state = NULL; } else { put_ucs2 (value, subtask); if (!get_ucs2 (&value, subtask)) break; } } if (state) { if (state->result == NOT_A_CHARACTER) backtrack_ucs2 (state, subtask); else put_ucs2 (state->result, subtask); } } SUBTASK_RETURN (subtask); } recode-3.6/src/fr-charname.c0100644000000000000000000000466307126443223014454 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1993, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "fr-charname.h" /*--------------------------------------------------------------------. | Return a statically allocated full charname associated with a given | | SYMBOL, or NULL if not found. | `--------------------------------------------------------------------*/ const char * ucs2_to_french_charname (int ucs2) { static char result[MAX_CHARNAME_LENGTH + 1]; int first; int last; int middle; int value; const char *in; char *out; const char *cursor; /* Find the symbol by binary searching the charname table. */ first = 0; last = NUMBER_OF_CHARNAMES; while (first < last) { middle = (first + last) / 2; if (charname[middle].code < ucs2) first = middle + 1; else if (charname[middle].code > ucs2) last = middle; else break; } /* If the UCS value has not been found, return the NULL string. */ if (first >= last) return NULL; /* Else, construct the resulting charname. */ out = NULL; for (in = charname[middle].crypted; *in; in++) { /* Decrypt the next word. */ value = *(const unsigned char *) in - 1; if (value >= NUMBER_OF_SINGLES) value = (NUMBER_OF_SINGLES + 255 * (value - NUMBER_OF_SINGLES) + *(const unsigned char *) ++in - 1); /* Copy it. */ if (out) *out++ = ' '; else out = result; for (cursor = word[value]; *cursor; cursor++) *out++ = *cursor; } /* Return the result. */ *out = NUL; return result; } recode-3.6/src/hash.c0100644000000000000000000007034207233063003013202 0ustar rootroot/* hash - hashing table processing. Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. Written by Jim Meyering, 1992. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* A generic hash table package. */ /* Define USE_OBSTACK to 1 if you want the allocator to use obstacks instead of malloc. If you change USE_OBSTACK, you have to recompile! */ #if HAVE_CONFIG_H # include #endif #if HAVE_STDLIB_H # include #endif #if HAVE_STDBOOL_H # include #else typedef enum {false = 0, true = 1} bool; #endif #include #include #if !HAVE_STDLIB_H void free (); char *malloc (); #endif #if USE_OBSTACK # include "obstack.h" # ifndef obstack_chunk_alloc # define obstack_chunk_alloc malloc # endif # ifndef obstack_chunk_free # define obstack_chunk_free free # endif #endif #include "hash.h" /* A hash table contains many internal entries, each holding a pointer to some user provided data (also called a user entry). An entry indistinctly refers to both the internal entry and its associated user entry. A user entry contents may be hashed by a randomization function (the hashing function, or just `hasher' for short) into a number (or `slot') between 0 and the current table size. At each slot position in the hash table, starts a linked chain of entries for which the user data all hash to this slot. A bucket is the collection of all entries hashing to the same slot. A good `hasher' function will distribute entries rather evenly in buckets. In the ideal case, the length of each bucket is roughly the number of entries divided by the table size. Finding the slot for a data is usually done in constant time by the `hasher', and the later finding of a precise entry is linear in time with the size of the bucket. Consequently, a larger hash table size (that is, a larger number of buckets) is prone to yielding shorter chains, *given* the `hasher' function behaves properly. Long buckets slow down the lookup algorithm. One might use big hash table sizes in hope to reduce the average length of buckets, but this might become inordinate, as unused slots in the hash table take some space. The best bet is to make sure you are using a good `hasher' function (beware that those are not that easy to write! :-), and to use a table size larger than the actual number of entries. */ /* If an insertion makes the ratio of nonempty buckets to table size larger than the growth threshold (a number between 0.0 and 1.0), then increase the table size by multiplying by the growth factor (a number greater than 1.0). The growth threshold defaults to 0.8, and the growth factor defaults to 1.414, meaning that the table will have doubled its size every second time 80% of the buckets get used. */ #define DEFAULT_GROWTH_THRESHOLD 0.8 #define DEFAULT_GROWTH_FACTOR 1.414 /* If a deletion empties a bucket and causes the ratio of used buckets to table size to become smaller than the shrink threshold (a number between 0.0 and 1.0), then shrink the table by multiplying by the shrink factor (a number greater than the shrink threshold but smaller than 1.0). The shrink threshold and factor default to 0.0 and 1.0, meaning that the table never shrinks. */ #define DEFAULT_SHRINK_THRESHOLD 0.0 #define DEFAULT_SHRINK_FACTOR 1.0 /* Use this to initialize or reset a TUNING structure to some sensible values. */ static const Hash_tuning default_tuning = { DEFAULT_SHRINK_THRESHOLD, DEFAULT_SHRINK_FACTOR, DEFAULT_GROWTH_THRESHOLD, DEFAULT_GROWTH_FACTOR, false }; /* Information and lookup. */ /* The following few functions provide information about the overall hash table organization: the number of entries, number of buckets and maximum length of buckets. */ /* Return the number of buckets in the hash table. The table size, the total number of buckets (used plus unused), or the maximum number of slots, are the same quantity. */ unsigned hash_get_n_buckets (const Hash_table *table) { return table->n_buckets; } /* Return the number of slots in use (non-empty buckets). */ unsigned hash_get_n_buckets_used (const Hash_table *table) { return table->n_buckets_used; } /* Return the number of active entries. */ unsigned hash_get_n_entries (const Hash_table *table) { return table->n_entries; } /* Return the length of the longest chain (bucket). */ unsigned hash_get_max_bucket_length (const Hash_table *table) { struct hash_entry *bucket; unsigned max_bucket_length = 0; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { struct hash_entry *cursor = bucket; unsigned bucket_length = 1; while (cursor = cursor->next, cursor) bucket_length++; if (bucket_length > max_bucket_length) max_bucket_length = bucket_length; } } return max_bucket_length; } /* Do a mild validation of a hash table, by traversing it and checking two statistics. */ bool hash_table_ok (const Hash_table *table) { struct hash_entry *bucket; unsigned n_buckets_used = 0; unsigned n_entries = 0; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { struct hash_entry *cursor = bucket; /* Count bucket head. */ n_buckets_used++; n_entries++; /* Count bucket overflow. */ while (cursor = cursor->next, cursor) n_entries++; } } if (n_buckets_used == table->n_buckets_used && n_entries == table->n_entries) return true; return false; } void hash_print_statistics (const Hash_table *table, FILE *stream) { unsigned n_entries = hash_get_n_entries (table); unsigned n_buckets = hash_get_n_buckets (table); unsigned n_buckets_used = hash_get_n_buckets_used (table); unsigned max_bucket_length = hash_get_max_bucket_length (table); fprintf (stream, "# entries: %u\n", n_entries); fprintf (stream, "# buckets: %u\n", n_buckets); fprintf (stream, "# buckets used: %u (%.2f%%)\n", n_buckets_used, (100.0 * n_buckets_used) / n_buckets); fprintf (stream, "max bucket length: %u\n", max_bucket_length); } /* If ENTRY matches an entry already in the hash table, return the entry from the table. Otherwise, return NULL. */ void * hash_lookup (const Hash_table *table, const void *entry) { struct hash_entry *bucket = table->bucket + table->hasher (entry, table->n_buckets); struct hash_entry *cursor; assert (bucket < table->bucket_limit); if (bucket->data == NULL) return NULL; for (cursor = bucket; cursor; cursor = cursor->next) if (table->comparator (entry, cursor->data)) return cursor->data; return NULL; } /* Walking. */ /* The functions in this page traverse the hash table and process the contained entries. For the traversal to work properly, the hash table should not be resized nor modified while any particular entry is being processed. In particular, entries should not be added or removed. */ /* Return the first data in the table, or NULL if the table is empty. */ void * hash_get_first (const Hash_table *table) { struct hash_entry *bucket; if (table->n_entries == 0) return NULL; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) if (bucket->data) return bucket->data; assert (0); } /* Return the user data for the entry following ENTRY, where ENTRY has been returned by a previous call to either `hash_get_first' or `hash_get_next'. Return NULL if there is no more entries. */ void * hash_get_next (const Hash_table *table, const void *entry) { struct hash_entry *bucket = table->bucket + table->hasher (entry, table->n_buckets); struct hash_entry *cursor; assert (bucket < table->bucket_limit); /* Find next entry in the same bucket. */ for (cursor = bucket; cursor; cursor = cursor->next) if (cursor->data == entry && cursor->next) return cursor->next->data; /* Find first entry in any subsequent bucket. */ for (; bucket < table->bucket_limit; bucket++) if (bucket->data) return bucket->data; /* None found. */ return NULL; } /* Fill BUFFER with pointers to active user entries in the hash table, then return the number of pointers copied. Do not copy more than BUFFER_SIZE pointers. */ unsigned hash_get_entries (const Hash_table *table, void **buffer, unsigned buffer_size) { unsigned counter = 0; struct hash_entry *bucket; struct hash_entry *cursor; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { for (cursor = bucket; cursor; cursor = cursor->next) { if (counter >= buffer_size) return counter; buffer[counter++] = cursor->data; } } } return counter; } /* Call a PROCESSOR function for each entry of a hash table, and return the number of entries for which the processor function returned success. A pointer to some PROCESSOR_DATA which will be made available to each call to the processor function. The PROCESSOR accepts two arguments: the first is the user entry being walked into, the second is the value of PROCESSOR_DATA as received. The walking continue for as long as the PROCESSOR function returns nonzero. When it returns zero, the walking is interrupted. */ unsigned hash_do_for_each (const Hash_table *table, Hash_processor processor, void *processor_data) { unsigned counter = 0; struct hash_entry *bucket; struct hash_entry *cursor; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { for (cursor = bucket; cursor; cursor = cursor->next) { if (!(*processor) (cursor->data, processor_data)) return counter; counter++; } } } return counter; } /* Allocation and clean-up. */ /* Return a hash index for a NUL-terminated STRING between 0 and N_BUCKETS-1. This is a convenience routine for constructing other hashing functions. */ #if USE_DIFF_HASH /* About hashings, Paul Eggert writes to me (FP), on 1994-01-01: "Please see B. J. McKenzie, R. Harries & T. Bell, Selecting a hashing algorithm, Software--practice & experience 20, 2 (Feb 1990), 209-224. Good hash algorithms tend to be domain-specific, so what's good for [diffutils'] io.c may not be good for your application." */ unsigned hash_string (const char *string, unsigned n_buckets) { # ifndef CHAR_BIT # define CHAR_BIT 8 # endif # define ROTATE_LEFT(Value, Shift) \ ((Value) << (Shift) | (Value) >> ((sizeof (unsigned) * CHAR_BIT) - (Shift))) # define HASH_ONE_CHAR(Value, Byte) \ ((Byte) + ROTATE_LEFT (Value, 7)) unsigned value = 0; for (; *string; string++) value = HASH_ONE_CHAR (value, *(const unsigned char *) string); return value % n_buckets; # undef ROTATE_LEFT # undef HASH_ONE_CHAR } #else /* not USE_DIFF_HASH */ /* This one comes from `recode', and performs a bit better than the above as per a few experiments. It is inspired from a hashing routine found in the very old Cyber `snoop', itself written in typical Greg Mansfield style. (By the way, what happened to this excellent man? Is he still alive?) */ unsigned hash_string (const char *string, unsigned n_buckets) { unsigned value = 0; while (*string) value = ((value * 31 + (int) *(const unsigned char *) string++) % n_buckets); return value; } #endif /* not USE_DIFF_HASH */ /* Return true if CANDIDATE is a prime number. CANDIDATE should be an odd number at least equal to 11. */ static bool is_prime (unsigned long candidate) { unsigned long divisor = 3; unsigned long square = divisor * divisor; while (square < candidate && (candidate % divisor)) { divisor++; square += 4 * divisor; divisor++; } return candidate % divisor != 0; } /* Round a given CANDIDATE number up to the nearest prime, and return that prime. Primes lower than 10 are merely skipped. */ static unsigned long next_prime (unsigned long candidate) { /* Skip small primes. */ if (candidate < 10) candidate = 10; /* Make it definitely odd. */ candidate |= 1; while (!is_prime (candidate)) candidate += 2; return candidate; } void hash_reset_tuning (Hash_tuning *tuning) { *tuning = default_tuning; } /* For the given hash TABLE, check the user supplied tuning structure for reasonable values, and return true if there is no gross error with it. Otherwise, definitvely reset the TUNING field to some acceptable default in the hash table (that is, the user loses the right of further modifying tuning arguments), and return false. */ static bool check_tuning (Hash_table *table) { const Hash_tuning *tuning = table->tuning; if (tuning->growth_threshold > 0.0 && tuning->growth_threshold < 1.0 && tuning->growth_factor > 1.0 && tuning->shrink_threshold >= 0.0 && tuning->shrink_threshold < 1.0 && tuning->shrink_factor > tuning->shrink_threshold && tuning->shrink_factor <= 1.0 && tuning->shrink_threshold < tuning->growth_threshold) return true; table->tuning = &default_tuning; return false; } /* Allocate and return a new hash table, or NULL upon failure. The initial number of buckets is automatically selected so as to _guarantee_ that you may insert at least CANDIDATE different user entries before any growth of the hash table size occurs. So, if have a reasonably tight a-priori upper bound on the number of entries you intend to insert in the hash table, you may save some table memory and insertion time, by specifying it here. If the IS_N_BUCKETS field of the TUNING structure is true, the CANDIDATE argument has its meaning changed to the wanted number of buckets. TUNING points to a structure of user-supplied values, in case some fine tuning is wanted over the default behavior of the hasher. If TUNING is NULL, the default tuning parameters are used instead. The user-supplied HASHER function should be provided. It accepts two arguments ENTRY and TABLE_SIZE. It computes, by hashing ENTRY contents, a slot number for that entry which should be in the range 0..TABLE_SIZE-1. This slot number is then returned. The user-supplied COMPARATOR function should be provided. It accepts two arguments pointing to user data, it then returns true for a pair of entries that compare equal, or false otherwise. This function is internally called on entries which are already known to hash to the same bucket index. The user-supplied DATA_FREER function, when not NULL, may be later called with the user data as an argument, just before the entry containing the data gets freed. This happens from within `hash_free' or `hash_clear'. You should specify this function only if you want these functions to free all of your `data' data. This is typically the case when your data is simply an auxiliary struct that you have malloc'd to aggregate several values. */ Hash_table * hash_initialize (unsigned candidate, const Hash_tuning *tuning, Hash_hasher hasher, Hash_comparator comparator, Hash_data_freer data_freer) { Hash_table *table; struct hash_entry *bucket; if (hasher == NULL || comparator == NULL) return NULL; table = (Hash_table *) malloc (sizeof (Hash_table)); if (table == NULL) return NULL; if (!tuning) tuning = &default_tuning; table->tuning = tuning; if (!check_tuning (table)) { /* Fail if the tuning options are invalid. This is the only occasion when the user gets some feedback about it. Once the table is created, if the user provides invalid tuning options, we silently revert to using the defaults, and ignore further request to change the tuning options. */ free (table); return NULL; } table->n_buckets = next_prime (tuning->is_n_buckets ? candidate : (unsigned) (candidate / tuning->growth_threshold)); table->bucket = (struct hash_entry *) malloc (table->n_buckets * sizeof (struct hash_entry)); if (table->bucket == NULL) { free (table); return NULL; } table->bucket_limit = table->bucket + table->n_buckets; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { bucket->data = NULL; bucket->next = NULL; } table->n_buckets_used = 0; table->n_entries = 0; table->hasher = hasher; table->comparator = comparator; table->data_freer = data_freer; table->free_entry_list = NULL; #if USE_OBSTACK obstack_init (&table->entry_stack); #endif return table; } /* Make all buckets empty, placing any chained entries on the free list. Apply the user-specified function data_freer (if any) to the datas of any affected entries. */ void hash_clear (Hash_table *table) { struct hash_entry *bucket; struct hash_entry *cursor; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { /* Free the bucket overflow. */ for (cursor = bucket->next; cursor; cursor = cursor->next) { if (table->data_freer) (*table->data_freer) (cursor->data); cursor->data = NULL; /* Relinking is done one entry at a time, as it is to be expected that overflows are either rare or short. */ cursor->next = table->free_entry_list; table->free_entry_list = cursor; } /* Free the bucket head. */ if (table->data_freer) (*table->data_freer) (bucket->data); bucket->data = NULL; bucket->next = NULL; } } table->n_buckets_used = 0; table->n_entries = 0; } /* Reclaim all storage associated with a hash table. If a data_freer function has been supplied by the user when the hash table was created, this function applies it to the data of each entry before freeing that entry. */ void hash_free (Hash_table *table) { struct hash_entry *bucket; struct hash_entry *cursor; struct hash_entry *next; /* Call the user data_freer function. */ if (table->data_freer && table->n_entries) { for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { if (bucket->data) { for (cursor = bucket; cursor; cursor = cursor->next) { (*table->data_freer) (cursor->data); } } } } #if USE_OBSTACK obstack_free (&table->entry_stack, NULL); #else /* Free all bucket overflowed entries. */ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { for (cursor = bucket->next; cursor; cursor = next) { next = cursor->next; free (cursor); } } /* Also reclaim the internal list of previously freed entries. */ for (cursor = table->free_entry_list; cursor; cursor = next) { next = cursor->next; free (cursor); } #endif /* Free the remainder of the hash table structure. */ free (table->bucket); free (table); } /* Insertion and deletion. */ /* Get a new hash entry for a bucket overflow, possibly by reclying a previously freed one. If this is not possible, allocate a new one. */ static struct hash_entry * allocate_entry (Hash_table *table) { struct hash_entry *new; if (table->free_entry_list) { new = table->free_entry_list; table->free_entry_list = new->next; } else { #if USE_OBSTACK new = (struct hash_entry *) obstack_alloc (&table->entry_stack, sizeof (struct hash_entry)); #else new = (struct hash_entry *) malloc (sizeof (struct hash_entry)); #endif } return new; } /* Free a hash entry which was part of some bucket overflow, saving it for later recycling. */ static void free_entry (Hash_table *table, struct hash_entry *entry) { entry->data = NULL; entry->next = table->free_entry_list; table->free_entry_list = entry; } /* This private function is used to help with insertion and deletion. When ENTRY matches an entry in the table, return a pointer to the corresponding user data and set *BUCKET_HEAD to the head of the selected bucket. Otherwise, return NULL. When DELETE is true and ENTRY matches an entry in the table, unlink the matching entry. */ static void * hash_find_entry (Hash_table *table, const void *entry, struct hash_entry **bucket_head, bool delete) { struct hash_entry *bucket = table->bucket + table->hasher (entry, table->n_buckets); struct hash_entry *cursor; assert (bucket < table->bucket_limit); *bucket_head = bucket; /* Test for empty bucket. */ if (bucket->data == NULL) return NULL; /* Check if then entry is found as the bucket head. */ if ((*table->comparator) (entry, bucket->data)) { void *data = bucket->data; if (delete) { if (bucket->next) { struct hash_entry *next = bucket->next; /* Bump the first overflow entry into the bucket head, then save the previous first overflow entry for later recycling. */ *bucket = *next; free_entry (table, next); } else { bucket->data = NULL; } } return data; } /* Scan the bucket overflow. */ for (cursor = bucket; cursor->next; cursor = cursor->next) { if ((*table->comparator) (entry, cursor->next->data)) { void *data = cursor->next->data; if (delete) { struct hash_entry *next = cursor->next; /* Unlink the entry to delete, then save the freed entry for later recycling. */ cursor->next = next->next; free_entry (table, next); } return data; } } /* No entry found. */ return NULL; } /* For an already existing hash table, change the number of buckets through specifying CANDIDATE. The contents of the hash table are preserved. The new number of buckets is automatically selected so as to _guarantee_ that the table may receive at least CANDIDATE different user entries, including those already in the table, before any other growth of the hash table size occurs. If TUNING->IS_N_BUCKETS is true, then CANDIDATE specifies the exact number of buckets desired. */ bool hash_rehash (Hash_table *table, unsigned candidate) { Hash_table *new_table; struct hash_entry *bucket; struct hash_entry *cursor; struct hash_entry *next; new_table = hash_initialize (candidate, table->tuning, table->hasher, table->comparator, table->data_freer); if (new_table == NULL) return false; /* Merely reuse the extra old space into the new table. */ #if USE_OBSTACK obstack_free (&new_table->entry_stack, NULL); new_table->entry_stack = table->entry_stack; #endif new_table->free_entry_list = table->free_entry_list; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) if (bucket->data) for (cursor = bucket; cursor; cursor = next) { void *data = cursor->data; struct hash_entry *new_bucket = (new_table->bucket + new_table->hasher (data, new_table->n_buckets)); assert (new_bucket < new_table->bucket_limit); next = cursor->next; if (new_bucket->data) { if (cursor == bucket) { /* Allocate or recycle an entry, when moving from a bucket header into a bucket overflow. */ struct hash_entry *new_entry = allocate_entry (new_table); if (new_entry == NULL) return false; new_entry->data = data; new_entry->next = new_bucket->next; new_bucket->next = new_entry; } else { /* Merely relink an existing entry, when moving from a bucket overflow into a bucket overflow. */ cursor->next = new_bucket->next; new_bucket->next = cursor; } } else { /* Free an existing entry, when moving from a bucket overflow into a bucket header. Also take care of the simple case of moving from a bucket header into a bucket header. */ new_bucket->data = data; new_table->n_buckets_used++; if (cursor != bucket) free_entry (new_table, cursor); } } free (table->bucket); table->bucket = new_table->bucket; table->bucket_limit = new_table->bucket_limit; table->n_buckets = new_table->n_buckets; table->n_buckets_used = new_table->n_buckets_used; /* table->n_entries already holds its value. */ #if USE_OBSTACK table->entry_stack = new_table->entry_stack; #endif free (new_table); return true; } /* If ENTRY matches an entry already in the hash table, return the pointer to the entry from the table. Otherwise, insert ENTRY and return ENTRY. Return NULL if the storage required for insertion cannot be allocated. */ void * hash_insert (Hash_table *table, const void *entry) { void *data; struct hash_entry *bucket; assert (entry); /* cannot insert a NULL entry */ /* If there's a matching entry already in the table, return that. */ if ((data = hash_find_entry (table, entry, &bucket, false)) != NULL) return data; /* ENTRY is not matched, it should be inserted. */ if (bucket->data) { struct hash_entry *new_entry = allocate_entry (table); if (new_entry == NULL) return NULL; /* Add ENTRY in the overflow of the bucket. */ new_entry->data = (void *) entry; new_entry->next = bucket->next; bucket->next = new_entry; table->n_entries++; return (void *) entry; } /* Add ENTRY right in the bucket head. */ bucket->data = (void *) entry; table->n_entries++; table->n_buckets_used++; /* If the growth threshold of the buckets in use has been reached, increase the table size and rehash. There's no point in checking the number of entries: if the hashing function is ill-conditioned, rehashing is not likely to improve it. */ if (table->n_buckets_used > table->tuning->growth_threshold * table->n_buckets) { /* Check more fully, before starting real work. If tuning arguments became invalid, the second check will rely on proper defaults. */ check_tuning (table); if (table->n_buckets_used > table->tuning->growth_threshold * table->n_buckets) { const Hash_tuning *tuning = table->tuning; unsigned candidate = (unsigned) (tuning->is_n_buckets ? (table->n_buckets * tuning->growth_factor) : (table->n_buckets * tuning->growth_factor * tuning->growth_threshold)); /* If the rehash fails, arrange to return NULL. */ if (!hash_rehash (table, candidate)) entry = NULL; } } return (void *) entry; } /* If ENTRY is already in the table, remove it and return the just-deleted data (the user may want to deallocate its storage). If ENTRY is not in the table, don't modify the table and return NULL. */ void * hash_delete (Hash_table *table, const void *entry) { void *data; struct hash_entry *bucket; if (data = hash_find_entry (table, entry, &bucket, true), !data) return NULL; table->n_entries--; if (!bucket->data) { table->n_buckets_used--; /* If the shrink threshold of the buckets in use has been reached, rehash into a smaller table. */ if (table->n_buckets_used < table->tuning->shrink_threshold * table->n_buckets) { /* Check more fully, before starting real work. If tuning arguments became invalid, the second check will rely on proper defaults. */ check_tuning (table); if (table->n_buckets_used < table->tuning->shrink_threshold * table->n_buckets) { const Hash_tuning *tuning = table->tuning; unsigned candidate = (unsigned) (tuning->is_n_buckets ? table->n_buckets * tuning->shrink_factor : (table->n_buckets * tuning->shrink_factor * tuning->growth_threshold)); hash_rehash (table, candidate); } } } return data; } /* Testing. */ #if TESTING void hash_print (const Hash_table *table) { struct hash_entry *bucket; for (bucket = table->bucket; bucket < table->bucket_limit; bucket++) { struct hash_entry *cursor; if (bucket) printf ("%d:\n", slot); for (cursor = bucket; cursor; cursor = cursor->next) { char *s = (char *) cursor->data; /* FIXME */ printf (" %s\n", s); } } } #endif /* TESTING */ recode-3.6/src/iconv.c0100644000000000000000000002363707213271772013416 0ustar rootroot/* Copyright (C) 1999-2000 Free Software Foundation, Inc. This file is part of the GNU ICONV Library. The GNU ICONV Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU ICONV Library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU ICONV Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "iconv.h" #include "libcharset.h" #if 0 /* * Consider those system dependent encodings that are needed for the * current system. */ #ifdef _AIX #define USE_AIX #endif #endif /* * Data type for general conversion loop. */ struct loop_funcs { size_t (*loop_convert) (iconv_t icd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); size_t (*loop_reset) (iconv_t icd, char* * outbuf, size_t *outbytesleft); }; /* * Converters. */ #include "converters.h" /* * Transliteration tables. */ #include "cjk_variants.h" #include "translit.h" /* * Table of all supported encodings. */ struct encoding { struct mbtowc_funcs ifuncs; /* conversion multibyte -> unicode */ struct wctomb_funcs ofuncs; /* conversion unicode -> multibyte */ int oflags; /* flags for unicode -> multibyte conversion */ }; enum { #define DEFENCODING(xxx_names,xxx,xxx_ifuncs,xxx_ofuncs1,xxx_ofuncs2) \ ei_##xxx , #include "encodings.def" #ifdef USE_AIX #include "encodings_aix.def" #endif #include "encodings_local.def" #undef DEFENCODING ei_for_broken_compilers_that_dont_like_trailing_commas }; #include "flags.h" static struct encoding const all_encodings[] = { #define DEFENCODING(xxx_names,xxx,xxx_ifuncs,xxx_ofuncs1,xxx_ofuncs2) \ { xxx_ifuncs, xxx_ofuncs1,xxx_ofuncs2, ei_##xxx##_oflags }, #include "encodings.def" #ifdef USE_AIX #include "encodings_aix.def" #endif #undef DEFENCODING #define DEFENCODING(xxx_names,xxx,xxx_ifuncs,xxx_ofuncs1,xxx_ofuncs2) \ { xxx_ifuncs, xxx_ofuncs1,xxx_ofuncs2, 0 }, #include "encodings_local.def" #undef DEFENCODING }; /* * Conversion loops. */ #include "loops.h" /* * Alias lookup function. * Defines * struct alias { const char* name; unsigned int encoding_index; }; * const struct alias * aliases_lookup (const char *str, unsigned int len); * #define MAX_WORD_LENGTH ... */ #include "aliases.h" /* * System dependent alias lookup function. * Defines * const struct alias * aliases2_lookup (const char *str); */ #if defined(USE_AIX) /* || ... */ static struct alias sysdep_aliases[] = { #ifdef USE_AIX #include "aliases_aix.h" #endif }; #ifdef __GNUC__ __inline #endif const struct alias * aliases2_lookup (register const char *str) { struct alias * ptr; unsigned int count; for (ptr = sysdep_aliases, count = sizeof(sysdep_aliases)/sizeof(sysdep_aliases[0]); count > 0; ptr++, count--) if (!strcmp(str,ptr->name)) return ptr; return NULL; } #else #define aliases2_lookup(str) NULL #endif #if 0 /* Like !strcasecmp, except that the both strings can be assumed to be ASCII and the first string can be assumed to be in uppercase. */ static int strequal (const char* str1, const char* str2) { unsigned char c1; unsigned char c2; for (;;) { c1 = * (unsigned char *) str1++; c2 = * (unsigned char *) str2++; if (c1 == 0) break; if (c2 >= 'a' && c2 <= 'z') c2 -= 'a'-'A'; if (c1 != c2) break; } return (c1 == c2); } #endif iconv_t iconv_open (const char* tocode, const char* fromcode) { struct conv_struct * cd; char buf[MAX_WORD_LENGTH+10+1]; const char* cp; char* bp; const struct alias * ap; unsigned int count; unsigned int from_index; int from_wchar; unsigned int to_index; int to_wchar; int transliterate = 0; /* Before calling aliases_lookup, convert the input string to upper case, * and check whether it's entirely ASCII (we call gperf with option "-7" * to achieve a smaller table) and non-empty. If it's not entirely ASCII, * or if it's too long, it is not a valid encoding name. */ for (to_wchar = 0;;) { /* Search tocode in the table. */ for (cp = tocode, bp = buf, count = MAX_WORD_LENGTH+10+1; ; cp++, bp++) { unsigned char c = * (unsigned char *) cp; if (c >= 0x80) goto invalid; if (c >= 'a' && c <= 'z') c -= 'a'-'A'; *bp = c; if (c == '\0') break; if (--count == 0) goto invalid; } if (bp-buf > 10 && memcmp(bp-10,"//TRANSLIT",10)==0) { bp -= 10; *bp = '\0'; transliterate = 1; } ap = aliases_lookup(buf,bp-buf); if (ap == NULL) { ap = aliases2_lookup(buf); if (ap == NULL) goto invalid; } if (ap->encoding_index == ei_local_char) { tocode = locale_charset(); if (tocode != NULL) continue; goto invalid; } if (ap->encoding_index == ei_local_wchar_t) { #if __STDC_ISO_10646__ if (sizeof(wchar_t) == 4) { to_index = ei_ucs4internal; break; } if (sizeof(wchar_t) == 2) { to_index = ei_ucs2internal; break; } if (sizeof(wchar_t) == 1) { to_index = ei_iso8859_1; break; } #endif #if HAVE_MBRTOWC to_wchar = 1; tocode = locale_charset(); if (tocode != NULL) continue; #endif goto invalid; } to_index = ap->encoding_index; break; } for (from_wchar = 0;;) { /* Search fromcode in the table. */ for (cp = fromcode, bp = buf, count = MAX_WORD_LENGTH+10+1; ; cp++, bp++) { unsigned char c = * (unsigned char *) cp; if (c >= 0x80) goto invalid; if (c >= 'a' && c <= 'z') c -= 'a'-'A'; *bp = c; if (c == '\0') break; if (--count == 0) goto invalid; } if (bp-buf > 10 && memcmp(bp-10,"//TRANSLIT",10)==0) { bp -= 10; *bp = '\0'; } ap = aliases_lookup(buf,bp-buf); if (ap == NULL) { ap = aliases2_lookup(buf); if (ap == NULL) goto invalid; } if (ap->encoding_index == ei_local_char) { fromcode = locale_charset(); if (fromcode != NULL) continue; goto invalid; } if (ap->encoding_index == ei_local_wchar_t) { #if __STDC_ISO_10646__ if (sizeof(wchar_t) == 4) { from_index = ei_ucs4internal; break; } if (sizeof(wchar_t) == 2) { from_index = ei_ucs2internal; break; } if (sizeof(wchar_t) == 1) { from_index = ei_iso8859_1; break; } #endif #if HAVE_WCRTOMB from_wchar = 1; fromcode = locale_charset(); if (fromcode != NULL) continue; #endif goto invalid; } from_index = ap->encoding_index; break; } cd = (struct conv_struct *) malloc(from_wchar != to_wchar ? sizeof(struct wchar_conv_struct) : sizeof(struct conv_struct)); if (cd == NULL) { errno = ENOMEM; return (iconv_t)(-1); } cd->iindex = from_index; cd->ifuncs = all_encodings[from_index].ifuncs; cd->oindex = to_index; cd->ofuncs = all_encodings[to_index].ofuncs; cd->oflags = all_encodings[to_index].oflags; /* Initialize the loop functions. */ #if HAVE_MBRTOWC if (to_wchar) { #if HAVE_WCRTOMB if (from_wchar) { cd->lfuncs.loop_convert = wchar_id_loop_convert; cd->lfuncs.loop_reset = wchar_id_loop_reset; } else #endif { cd->lfuncs.loop_convert = wchar_to_loop_convert; cd->lfuncs.loop_reset = wchar_to_loop_reset; } } else #endif { #if HAVE_WCRTOMB if (from_wchar) { cd->lfuncs.loop_convert = wchar_from_loop_convert; cd->lfuncs.loop_reset = wchar_from_loop_reset; } else #endif { cd->lfuncs.loop_convert = unicode_loop_convert; cd->lfuncs.loop_reset = unicode_loop_reset; } } /* Initialize the states. */ memset(&cd->istate,'\0',sizeof(state_t)); memset(&cd->ostate,'\0',sizeof(state_t)); /* Initialize the operation flags. */ cd->transliterate = transliterate; /* Initialize additional fields. */ if (from_wchar != to_wchar) { struct wchar_conv_struct * wcd = (struct wchar_conv_struct *) cd; memset(&wcd->state,'\0',sizeof(mbstate_t)); } /* Done. */ return (iconv_t)cd; invalid: errno = EINVAL; return (iconv_t)(-1); } size_t iconv (iconv_t icd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft) { conv_t cd = (conv_t) icd; if (inbuf == NULL || *inbuf == NULL) return cd->lfuncs.loop_reset(icd,outbuf,outbytesleft); else return cd->lfuncs.loop_convert(icd, (const char* *)inbuf,inbytesleft, outbuf,outbytesleft); } int iconv_close (iconv_t icd) { conv_t cd = (conv_t) icd; free(cd); return 0; } #ifndef LIBICONV_PLUG int iconvctl (iconv_t icd, int request, void* argument) { conv_t cd = (conv_t) icd; switch (request) { case ICONV_TRIVIALP: *(int *)argument = ((cd->lfuncs.loop_convert == unicode_loop_convert && cd->iindex == cd->oindex) || cd->lfuncs.loop_convert == wchar_id_loop_convert ? 1 : 0); return 0; case ICONV_GET_TRANSLITERATE: *(int *)argument = cd->transliterate; return 0; case ICONV_SET_TRANSLITERATE: cd->transliterate = (*(const int *)argument ? 1 : 0); return 0; default: errno = EINVAL; return -1; } } int _libiconv_version = _LIBICONV_VERSION; #endif recode-3.6/src/libiconv.c0100644000000000000000000002174607127423265014104 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1999, 2000 Free Software Foundation, Inc. Contributed by François Pinard , 1999, and Bruno Haible , 2000. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "iconv.h" #include "libiconv.h" /*-----------------------------------------. | Use `libiconv' to handle a double step. | `-----------------------------------------*/ #define LIBICONV_BUFFER_SIZE 2048 static bool wrapped_transform (iconv_t conversion, iconv_t conversion_to_utf8, RECODE_SUBTASK subtask) { int input_char = get_byte (subtask); char input_buffer[LIBICONV_BUFFER_SIZE]; char output_buffer[LIBICONV_BUFFER_SIZE]; size_t input_left; size_t output_left; const char *input; char *output; char *cursor; int transliterate; size_t converted; int saved_errno; /* libiconv has transliteration facilities. Since they are not reversible, try first without them. */ transliterate = 0; iconvctl (conversion, ICONV_SET_TRANSLITERATE, &transliterate); iconvctl (conversion_to_utf8, ICONV_SET_TRANSLITERATE, &transliterate); cursor = input_buffer; while (cursor > input_buffer || input_char != EOF) { /* Fill the input buffer as much as possible. */ while (input_char != EOF && cursor < input_buffer + LIBICONV_BUFFER_SIZE) { *cursor++ = input_char; input_char = get_byte (subtask); } /* We are now sure to have at least some input. */ if (!(cursor > input_buffer)) { recode_error (subtask->task->request->outer, "libiconv.c internal error 56"); SET_SUBTASK_ERROR (RECODE_INTERNAL_ERROR, subtask); SUBTASK_RETURN (subtask); } assert (cursor > input_buffer); /* Convert accumulated input into the output buffer. */ input_left = cursor - input_buffer; input = input_buffer; output_left = LIBICONV_BUFFER_SIZE; output = output_buffer; converted = iconv (conversion, &input, &input_left, &output, &output_left); /* Send the converted result, to free the output buffer. */ saved_errno = errno; for (cursor = output_buffer; cursor < output; cursor++) put_byte (*cursor, subtask); errno = saved_errno; /* Analyze the iconv return value. */ if (converted == (size_t)(-1) && errno != E2BIG) { if (errno == EILSEQ) { /* The first thing to try is libiconv's built-in transliteration. */ if (!transliterate) { /* Fail if the user requested reversible conversions. */ RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); /* Switch transliteration on for the rest of the subtask. */ transliterate = 1; iconvctl (conversion, ICONV_SET_TRANSLITERATE, &transliterate); iconvctl (conversion_to_utf8, ICONV_SET_TRANSLITERATE, &transliterate); /* Continue, shifting the remaining input buffer. */ goto shift_input; } else { /* An invalid multibyte sequence was encountered in the input, or a conversion error occurred. Distinguish the two cases by use of conversion_to_utf8. In the first case, skip one byte. In the second case, skip the entire character. FIXME: This heuristic does not work well with stateful encodings like ISO-2022-JP. */ char tmp_buf[6]; size_t tmp_input_left; size_t tmp_output_left; const char *tmp_input; char *tmp_output; RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); assert (input_left > 0); tmp_input_left = input_left; tmp_input = input; tmp_output_left = sizeof (tmp_buf); tmp_output = tmp_buf; iconv (conversion_to_utf8, &tmp_input, &tmp_input_left, &tmp_output, &tmp_output_left); /* Reset conversion_to_utf8 to the initial state. */ iconv (conversion_to_utf8, NULL, NULL, NULL, NULL); if (tmp_input > input) { /* Conversion error. Skip the entire character. */ input = tmp_input; input_left = tmp_input_left; } else { /* Invalid input. Skip one byte. */ input++; input_left--; } /* Reset conversion state. (Why?) */ output_left = LIBICONV_BUFFER_SIZE; output = output_buffer; converted = iconv (conversion, NULL, NULL, &output, &output_left); /* We don't expect E2BIG here: the buffer is large enough. */ assert (converted != (size_t)(-1)); for (cursor = output_buffer; cursor < output; cursor++) put_byte (*cursor, subtask); } } else if (errno == EINVAL) { /* Incomplete multibyte sequence. */ if (input + input_left < input_buffer + LIBICONV_BUFFER_SIZE && input_char == EOF) { /* Incomplete multibyte sequence at end of input. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } /* Otherwise, we shift the remaining input and see whether the error persists in the next round. */ } else { recode_perror (subtask->task->request->outer, "libiconv ()"); SET_SUBTASK_ERROR (RECODE_SYSTEM_ERROR, subtask); SUBTASK_RETURN (subtask); } } /* If there was no progress, we have a bug in either libiconv or the above logic. */ if (!(input > input_buffer)) { recode_error (subtask->task->request->outer, "libiconv.c internal error 154"); SET_SUBTASK_ERROR (RECODE_INTERNAL_ERROR, subtask); SUBTASK_RETURN (subtask); } assert (input > input_buffer); shift_input: /* Shift back the unconverted part of the input buffer. memcpy() doesn't do here, because the regions might overlap. memmove() isn't worth it, because we rarely have to move more than 12 bytes. */ if (input > input_buffer && input_left > 0) { cursor = input_buffer; do *cursor++ = *input++; while (--input_left > 0); } } /* Drain all accumulated partial state and emit output to return to the initial shift state. */ output_left = LIBICONV_BUFFER_SIZE; output = output_buffer; converted = iconv (conversion, NULL, NULL, &output, &output_left); /* We don't expect E2BIG here: the buffer is large enough. */ assert (converted != (size_t)(-1)); for (cursor = output_buffer; cursor < output; cursor++) put_byte (*cursor, subtask); SUBTASK_RETURN (subtask); } bool transform_with_libiconv (RECODE_SUBTASK subtask) { RECODE_CONST_STEP step = subtask->step; iconv_t conversion = iconv_open (step->after->name, step->before->name); iconv_t conversion_to_utf8 = iconv_open ("UTF-8", step->before->name); bool status; if (conversion == (iconv_t) -1 || conversion_to_utf8 == (iconv_t) -1) { SET_SUBTASK_ERROR (RECODE_SYSTEM_ERROR, subtask); SUBTASK_RETURN (subtask); } status = wrapped_transform (conversion, conversion_to_utf8, subtask); iconv_close (conversion); iconv_close (conversion_to_utf8); return status; } /*---------------------------------------------------------. | Declare all character sets which `libiconv' may handle. | `---------------------------------------------------------*/ bool module_libiconv (RECODE_OUTER outer) { const char **cursor; for (cursor = iconv_name_list; *cursor; cursor++) { const char **aliases = cursor; const char *charset_name = *cursor; /* Scan aliases for some charset which would already be known. If any, use its official name as a charset. Else, use the first alias. */ while (*cursor) { RECODE_ALIAS alias = find_alias (outer, *cursor, ALIAS_FIND_AS_CHARSET); if (alias) { charset_name = alias->symbol->name; break; } cursor++; } if (!declare_libiconv (outer, charset_name)) return false; /* Declare all aliases, given they bring something we do not already know. Even then, we still declare too many useless aliases, as the desambiguating tables are not recomputed as we go. FIXME! */ for (cursor = aliases; *cursor; cursor++) { RECODE_ALIAS alias = find_alias (outer, *cursor, ALIAS_FIND_AS_CHARSET); /* If there is a charset contradiction, call declare_alias nevertheless, as the error processing will occur there. */ if (!alias || alias->symbol->name != charset_name) if (!declare_alias (outer, *cursor, charset_name)) return false; } } return true; } void delmodule_libiconv (RECODE_OUTER outer) { } recode-3.6/src/localcharset.c0100644000000000000000000001452607217713026014736 0ustar rootroot/* Determine a canonical name for the current locale's character encoding. Copyright (C) 2000 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by Bruno Haible . */ #ifdef HAVE_CONFIG_H # include #endif #if HAVE_STDDEF_H # include #endif #include #if HAVE_STRING_H # include #else # include #endif #if HAVE_STDLIB_H # include #endif #if defined _WIN32 || defined __WIN32__ # undef WIN32 /* avoid warning on mingw32 */ # define WIN32 #endif #ifndef WIN32 # if HAVE_LANGINFO_CODESET # include # else # if HAVE_SETLOCALE # include # endif # endif #else /* WIN32 */ # define WIN32_LEAN_AND_MEAN # include #endif #ifndef DIRECTORY_SEPARATOR # define DIRECTORY_SEPARATOR '/' #endif #ifndef ISSLASH # define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) #endif /* The following static variable is declared 'volatile' to avoid a possible multithread problem in the function get_charset_aliases. If we are running in a threaded environment, and if two threads initialize 'charset_aliases' simultaneously, both will produce the same value, and everything will be ok if the two assignments to 'charset_aliases' are atomic. But I don't know what will happen if the two assignments mix. */ /* Pointer to the contents of the charset.alias file, if it has already been read, else NULL. Its format is: ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ static char * volatile charset_aliases; /* Return a pointer to the contents of the charset.alias file. */ static const char * get_charset_aliases () { char *cp; cp = charset_aliases; if (cp == NULL) { #ifndef WIN32 FILE *fp; const char *dir = LIBDIR; const char *base = "charset.alias"; char *file_name; /* Concatenate dir and base into freshly allocated file_name. */ { size_t dir_len = strlen (dir); size_t base_len = strlen (base); int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); file_name = (char *) malloc (dir_len + add_slash + base_len + 1); if (file_name != NULL) { memcpy (file_name, dir, dir_len); if (add_slash) file_name[dir_len] = DIRECTORY_SEPARATOR; memcpy (file_name + dir_len + add_slash, base, base_len + 1); } } if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL) /* Out of memory or file not found, treat it as empty. */ cp = ""; else { /* Parse the file's contents. */ int c; char buf1[50+1]; char buf2[50+1]; char *res_ptr = NULL; size_t res_size = 0; size_t l1, l2; for (;;) { c = getc (fp); if (c == EOF) break; if (c == '\n' || c == ' ' || c == '\t') continue; if (c == '#') { /* Skip comment, to end of line. */ do c = getc (fp); while (!(c == EOF || c == '\n')); if (c == EOF) break; continue; } ungetc (c, fp); if (fscanf(fp, "%50s %50s", buf1, buf2) < 2) break; l1 = strlen (buf1); l2 = strlen (buf2); if (res_size == 0) { res_size = l1 + 1 + l2 + 1; res_ptr = malloc (res_size + 1); } else { res_size += l1 + 1 + l2 + 1; res_ptr = realloc (res_ptr, res_size + 1); } if (res_ptr == NULL) { /* Out of memory. */ res_size = 0; break; } strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); strcpy (res_ptr + res_size - (l2 + 1), buf2); } fclose (fp); if (res_size == 0) cp = ""; else { *(res_ptr + res_size) = '\0'; cp = res_ptr; } } if (file_name != NULL) free (file_name); #else /* WIN32 */ /* To avoid the troubles of installing a separate file in the same directory as the DLL and of retrieving the DLL's directory at runtime, simply inline the aliases here. */ cp = "CP936" "\0" "GBK" "\0" "CP1361" "\0" "JOHAB" "\0"; #endif charset_aliases = cp; } return cp; } /* Determine the current locale's character encoding, and canonicalize it into one of the canonical names listed in config.charset. The result must not be freed; it is statically allocated. If the canonical name cannot be determined, the result is a non-canonical name or NULL. */ #ifdef STATIC STATIC #endif const char * locale_charset () { const char *codeset; const char *aliases; #ifndef WIN32 # if HAVE_LANGINFO_CODESET /* Most systems support nl_langinfo (CODESET) nowadays. */ codeset = nl_langinfo (CODESET); # else /* On old systems which lack it, use setlocale and getenv. */ const char *locale = NULL; # if HAVE_SETLOCALE locale = setlocale (LC_CTYPE, NULL); # endif if (locale == NULL || locale[0] == '\0') { locale = getenv ("LC_ALL"); if (locale == NULL || locale[0] == '\0') { locale = getenv ("LC_CTYPE"); if (locale == NULL || locale[0] == '\0') locale = getenv ("LANG"); } } /* On some old systems, one used to set locale = "iso8859_1". On others, you set it to "language_COUNTRY.charset". In any case, we resolve it through the charset.alias file. */ codeset = locale; # endif #else /* WIN32 */ static char buf[2 + 10 + 1]; /* Win32 has a function returning the locale's codepage as a number. */ sprintf (buf, "CP%u", GetACP ()); codeset = buf; #endif if (codeset != NULL && codeset[0] != '\0') { /* Resolve alias. */ for (aliases = get_charset_aliases (); *aliases != '\0'; aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) if (!strcmp (codeset, aliases)) { codeset = aliases + strlen (aliases) + 1; break; } } return codeset; } recode-3.6/src/merged.c0100644000000000000000000024132507126661055013537 0ustar rootroot/* A lexical scanner generated by flex */ /* Scanner skeleton version: * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #include /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ #ifdef c_plusplus #ifndef __cplusplus #define __cplusplus #endif #endif #ifdef __cplusplus #include #include /* Use prototypes in function declarations. */ #define YY_USE_PROTOS /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ #if __STDC__ #define YY_USE_PROTOS #define YY_USE_CONST #endif /* __STDC__ */ #endif /* ! __cplusplus */ #ifdef __TURBOC__ #pragma warn -rch #pragma warn -use #include #include #define YY_USE_CONST #define YY_USE_PROTOS #endif #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif #ifdef YY_USE_PROTOS #define YY_PROTO(proto) proto #else #define YY_PROTO(proto) () #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #define YY_BUF_SIZE 16384 typedef struct yy_buffer_state *YY_BUFFER_STATE; extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 /* The funky do-while in the following #define is used to turn the definition * int a single C statement (which needs a semi-colon terminator). This * avoids problems with code like: * * if ( condition_holds ) * yyless( 5 ); * else * do_something_else(); * * Prior to using the do-while the compiler would get upset at the * "else" because it interpreted the "if" statement as being all * done when it reached the ';' after the yyless() call. */ /* Return all but the first 'n' matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ *yy_cp = yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yytext_ptr ) /* The following is because we cannot portably get our hands on size_t * (without autoconf's help, which isn't available because we want * flex-generated scanners to compile on their own). */ typedef unsigned int yy_size_t; struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; static YY_BUFFER_STATE yy_current_buffer = 0; /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". */ #define YY_CURRENT_BUFFER yy_current_buffer /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 1; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart YY_PROTO(( FILE *input_file )); void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); void yy_load_buffer_state YY_PROTO(( void )); YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); static void *yy_flex_alloc YY_PROTO(( yy_size_t )); static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); static void yy_flex_free YY_PROTO(( void * )); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! yy_current_buffer ) \ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ yy_current_buffer->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! yy_current_buffer ) \ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ yy_current_buffer->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (yy_current_buffer->yy_at_bol) #define yywrap() 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; extern char *yytext; #define yytext_ptr yytext static yy_state_type yy_get_previous_state YY_PROTO(( void )); static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); static int yy_get_next_buffer YY_PROTO(( void )); static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; #define YY_NUM_RULES 208 #define YY_END_OF_BUFFER 209 static yyconst short int yy_accept[598] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 65, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 83, 87, 69, 57, 58, 59, 60, 78, 81, 73, 147, 147, 110, 68, 0, 61, 0, 147, 147, 147, 147, 147, 147, 139, 147, 147, 62, 63, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 151, 150, 0, 0, 161, 162, 158, 0, 171, 170, 0, 0, 177, 176, 0, 183, 182, 148, 0, 154, 153, 0, 0, 167, 168, 164, 0, 174, 173, 0, 180, 179, 0, 186, 185, 1, 2, 7, 12, 16, 22, 27, 34, 39, 43, 49, 29, 54, 56, 4, 10, 14, 19, 25, 28, 31, 37, 41, 46, 52, 55, 8, 35, 23, 50, 5, 3, 6, 11, 9, 15, 13, 17, 20, 18, 21, 26, 24, 32, 38, 42, 47, 53, 30, 36, 40, 45, 51, 33, 44, 48, 92, 99, 103, 109, 114, 0, 121, 128, 138, 143, 145, 0, 89, 97, 101, 106, 112, 115, 0, 118, 126, 135, 141, 144, 0, 147, 93, 94, 0, 110, 0, 68, 0, 90, 98, 102, 107, 113, 0, 119, 127, 136, 142, 0, 88, 96, 100, 105, 111, 0, 117, 125, 134, 140, 0, 122, 123, 147, 147, 147, 147, 0, 147, 147, 147, 139, 0, 147, 116, 91, 104, 108, 120, 133, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 156, 163, 160, 172, 0, 178, 184, 155, 157, 169, 166, 175, 181, 187, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 0, 147, 110, 68, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 123, 0, 147, 95, 124, 147, 147, 0, 0, 147, 147, 72, 139, 147, 116, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 165, 132, 146, 0, 0, 130, 0, 0, 93, 94, 131, 0, 0, 129, 0, 0, 122, 123, 147, 147, 147, 147, 147, 72, 0, 147, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 202, 0, 0, 0, 0, 0, 201, 146, 0, 132, 132, 130, 130, 131, 131, 129, 129, 147, 80, 147, 0, 0, 0, 72, 67, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 204, 0, 146, 147, 147, 0, 0, 0, 67, 0, 190, 0, 0, 206, 189, 0, 0, 0, 0, 200, 0, 0, 0, 205, 147, 147, 85, 84, 86, 0, 0, 67, 0, 0, 197, 0, 193, 0, 0, 0, 0, 147, 147, 85, 0, 84, 0, 86, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 199, 203, 0, 0, 64, 70, 85, 84, 86, 0, 0, 0, 0, 0, 0, 188, 192, 194, 195, 64, 0, 70, 0, 0, 0, 82, 76, 77, 0, 64, 70, 79, 75, 0, 0, 0, 74, 0 } ; static yyconst int yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 1, 1, 1, 1, 11, 12, 1, 13, 1, 14, 15, 16, 17, 1, 1, 1, 1, 1, 18, 1, 19, 1, 20, 21, 1, 22, 23, 24, 25, 26, 25, 27, 28, 29, 30, 25, 30, 25, 31, 32, 25, 25, 25, 33, 34, 35, 25, 25, 25, 36, 25, 1, 37, 1, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 30, 50, 51, 52, 53, 54, 55, 25, 56, 57, 58, 59, 25, 25, 60, 61, 25, 62, 1, 63, 64, 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, 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 } ; static yyconst int yy_meta[65] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1 } ; static yyconst short int yy_base[611] = { 0, 0, 0, 0, 0, 2, 23, 87, 0, 943, 944, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 920, 919, 918, 917, 916, 915, 876, 905, 874, 147, 873, 944, 190, 902, 10, 900, 216, 29, 900, 222, 223, 0, 869, 231, 897, 240, 237, 241, 246, 268, 308, 13, 14, 902, 901, 286, 894, 301, 318, 840, 341, 326, 893, 384, 422, 337, 891, 350, 358, 837, 382, 895, 392, 4, 251, 944, 944, 944, 460, 944, 944, 944, 944, 501, 944, 944, 250, 0, 13, 14, 542, 944, 583, 254, 181, 329, 15, 332, 316, 18, 212, 22, 944, 944, 396, 944, 3, 854, 24, 25, 844, 856, 843, 211, 112, 835, 944, 0, 944, 944, 382, 0, 884, 944, 944, 0, 944, 944, 29, 0, 944, 944, 0, 944, 944, 944, 0, 944, 944, 420, 0, 883, 944, 944, 0, 944, 944, 0, 944, 944, 0, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 944, 843, 944, 944, 944, 944, 944, 624, 944, 944, 944, 944, 944, 944, 842, 944, 944, 944, 944, 944, 664, 158, 227, 290, 827, 318, 826, 345, 825, 944, 944, 944, 944, 944, 838, 944, 944, 944, 944, 704, 944, 944, 944, 944, 944, 837, 944, 944, 944, 944, 742, 362, 369, 383, 397, 406, 432, 410, 436, 408, 444, 453, 822, 466, 462, 944, 944, 944, 944, 944, 944, 512, 470, 842, 826, 829, 834, 827, 838, 829, 828, 827, 821, 34, 16, 833, 823, 944, 944, 944, 862, 944, 236, 944, 944, 944, 944, 944, 861, 944, 944, 944, 469, 807, 806, 805, 804, 803, 816, 801, 800, 799, 798, 797, 477, 796, 795, 794, 793, 792, 791, 804, 789, 788, 787, 786, 785, 487, 784, 490, 783, 944, 944, 944, 496, 782, 781, 780, 779, 778, 791, 776, 775, 774, 773, 497, 772, 771, 770, 769, 768, 781, 766, 765, 764, 763, 499, 762, 505, 761, 507, 944, 944, 523, 529, 760, 759, 508, 513, 510, 944, 544, 526, 758, 757, 756, 755, 754, 753, 752, 944, 755, 764, 771, 757, 751, 260, 750, 753, 296, 297, 740, 315, 739, 756, 754, 745, 752, 944, 366, 944, 532, 537, 729, 728, 538, 727, 726, 944, 944, 545, 723, 722, 551, 721, 719, 944, 944, 573, 577, 592, 600, 579, 581, 718, 589, 944, 733, 729, 726, 728, 727, 729, 718, 371, 707, 944, 715, 713, 944, 705, 711, 710, 394, 707, 944, 590, 692, 944, 944, 944, 944, 944, 944, 944, 944, 619, 595, 614, 741, 740, 352, 944, 605, 478, 693, 704, 502, 584, 699, 700, 944, 699, 702, 605, 701, 693, 691, 944, 616, 944, 633, 626, 147, 711, 130, 622, 641, 944, 637, 621, 944, 944, 622, 616, 626, 622, 944, 577, 560, 552, 944, 635, 646, 644, 652, 655, 330, 697, 944, 659, 541, 944, 533, 944, 661, 684, 511, 505, 684, 657, 665, 482, 669, 455, 688, 449, 450, 452, 496, 478, 477, 435, 944, 698, 702, 944, 944, 717, 719, 695, 707, 944, 944, 944, 459, 457, 345, 340, 330, 321, 944, 944, 944, 944, 718, 282, 726, 275, 247, 245, 944, 944, 944, 242, 944, 944, 944, 944, 225, 260, 181, 944, 944, 801, 803, 226, 222, 162, 160, 78, 71, 27, 5, 4, 1, 805 } ; static yyconst short int yy_def[611] = { 0, 598, 598, 598, 3, 598, 598, 597, 7, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 43, 597, 597, 597, 597, 597, 597, 597, 43, 43, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 599, 599, 599, 597, 597, 597, 599, 599, 599, 599, 599, 599, 599, 599, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 600, 597, 597, 597, 601, 597, 597, 597, 602, 597, 597, 597, 603, 597, 597, 604, 597, 597, 597, 605, 597, 597, 597, 606, 597, 597, 597, 607, 597, 597, 608, 597, 597, 609, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 599, 599, 597, 599, 599, 597, 599, 599, 599, 597, 597, 599, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 610, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 610, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 610, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 610, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 597, 597, 599, 599, 597, 597, 599, 599, 599, 597, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 610, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 599, 599, 599, 599, 597, 597, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 599, 599, 597, 597, 597, 597, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 599, 599, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 0, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597 } ; static yyconst short int yy_nxt[1009] = { 0, 597, 597, 245, 325, 11, 37, 324, 323, 177, 12, 13, 38, 14, 189, 128, 249, 251, 245, 15, 16, 285, 17, 39, 18, 245, 19, 37, 128, 20, 321, 21, 22, 38, 136, 23, 24, 190, 25, 40, 26, 27, 41, 28, 39, 29, 192, 136, 129, 30, 130, 316, 296, 31, 32, 297, 191, 33, 418, 34, 40, 35, 248, 41, 36, 299, 42, 137, 193, 138, 316, 282, 419, 300, 319, 250, 252, 248, 301, 288, 286, 318, 302, 416, 248, 303, 417, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 45, 10, 46, 10, 47, 10, 10, 48, 49, 10, 50, 10, 49, 51, 10, 43, 52, 43, 53, 54, 10, 55, 10, 56, 10, 10, 10, 57, 10, 49, 10, 10, 58, 10, 10, 10, 49, 59, 10, 10, 43, 43, 43, 89, 90, 91, 92, 93, 94, 95, 96, 309, 245, 528, 317, 529, 315, 310, 531, 532, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 100, 98, 98, 98, 245, 101, 102, 103, 104, 105, 106, 98, 98, 107, 98, 98, 98, 98, 98, 108, 109, 110, 111, 98, 112, 98, 98, 98, 98, 113, 114, 115, 117, 118, 119, 245, 120, 121, 122, 123, 248, 132, 277, 124, 125, 313, 133, 140, 143, 311, 351, 117, 118, 119, 132, 126, 147, 121, 122, 123, 140, 143, 155, 248, 596, 151, 158, 124, 125, 147, 152, 161, 307, 245, 134, 155, 135, 245, 151, 158, 141, 144, 142, 145, 161, 423, 287, 595, 594, 148, 308, 149, 246, 196, 248, 156, 247, 157, 153, 159, 154, 160, 201, 204, 162, 423, 163, 164, 165, 352, 166, 166, 217, 353, 167, 275, 178, 168, 593, 276, 169, 460, 461, 170, 218, 219, 167, 456, 592, 171, 591, 179, 248, 172, 460, 461, 248, 173, 457, 245, 463, 249, 174, 168, 194, 175, 195, 176, 180, 177, 178, 170, 278, 463, 179, 245, 182, 180, 590, 197, 181, 198, 171, 182, 183, 589, 169, 184, 251, 184, 196, 181, 354, 185, 192, 172, 199, 186, 200, 509, 185, 284, 187, 173, 205, 380, 206, 188, 186, 189, 588, 469, 382, 279, 283, 207, 495, 212, 248, 202, 250, 203, 551, 280, 469, 552, 245, 174, 208, 495, 213, 281, 187, 587, 248, 193, 209, 176, 214, 502, 278, 217, 188, 586, 312, 204, 194, 252, 585, 245, 197, 245, 502, 199, 312, 355, 202, 312, 289, 205, 210, 385, 215, 312, 381, 207, 384, 290, 291, 208, 211, 383, 216, 209, 389, 245, 312, 292, 210, 245, 386, 312, 320, 211, 195, 248, 219, 245, 198, 293, 294, 200, 320, 390, 203, 320, 285, 206, 295, 248, 387, 320, 392, 212, 584, 396, 583, 213, 248, 245, 248, 214, 425, 355, 320, 404, 215, 391, 574, 320, 429, 216, 220, 512, 573, 572, 221, 388, 404, 222, 351, 393, 223, 353, 248, 224, 512, 225, 248, 434, 437, 226, 380, 571, 570, 227, 248, 515, 382, 569, 245, 245, 568, 447, 228, 286, 245, 405, 567, 229, 515, 230, 231, 232, 397, 395, 245, 233, 248, 396, 234, 427, 245, 235, 398, 425, 236, 237, 238, 430, 470, 429, 239, 399, 400, 566, 240, 245, 434, 352, 563, 445, 354, 401, 437, 241, 562, 442, 435, 438, 242, 381, 243, 244, 253, 402, 403, 383, 254, 248, 248, 255, 448, 446, 256, 248, 245, 257, 559, 258, 245, 443, 245, 259, 447, 248, 558, 260, 397, 516, 444, 248, 245, 470, 427, 245, 261, 449, 245, 471, 430, 262, 516, 245, 263, 264, 248, 435, 510, 265, 521, 542, 266, 438, 483, 267, 484, 245, 268, 541, 269, 525, 245, 521, 270, 510, 540, 536, 271, 245, 480, 538, 481, 487, 525, 248, 245, 272, 245, 248, 536, 485, 273, 448, 538, 274, 327, 545, 482, 245, 328, 248, 471, 329, 248, 547, 330, 248, 549, 331, 245, 332, 248, 506, 557, 333, 560, 511, 545, 334, 505, 539, 547, 527, 526, 537, 248, 557, 335, 560, 535, 248, 534, 336, 511, 337, 339, 245, 248, 561, 340, 549, 543, 341, 544, 248, 342, 248, 579, 343, 344, 345, 561, 575, 533, 346, 546, 576, 248, 347, 581, 553, 554, 555, 548, 565, 575, 550, 348, 248, 576, 579, 577, 349, 578, 350, 359, 546, 530, 581, 360, 548, 564, 361, 556, 577, 362, 578, 524, 363, 523, 364, 522, 520, 519, 365, 248, 518, 517, 366, 550, 514, 513, 508, 507, 504, 503, 580, 367, 501, 500, 499, 498, 368, 370, 497, 496, 494, 371, 582, 493, 372, 492, 491, 373, 490, 489, 374, 488, 375, 580, 486, 479, 376, 478, 477, 476, 377, 582, 475, 474, 473, 472, 468, 467, 466, 378, 465, 464, 462, 459, 379, 10, 10, 10, 98, 98, 426, 426, 458, 455, 454, 453, 452, 451, 294, 293, 292, 291, 290, 289, 450, 386, 385, 441, 440, 273, 272, 271, 270, 439, 268, 267, 266, 265, 264, 262, 261, 260, 259, 436, 257, 256, 255, 254, 253, 433, 432, 243, 242, 241, 240, 239, 431, 237, 236, 235, 234, 233, 232, 230, 229, 228, 227, 226, 428, 224, 223, 222, 221, 220, 424, 422, 421, 420, 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 394, 369, 358, 357, 356, 355, 338, 326, 322, 314, 303, 306, 305, 304, 298, 175, 218, 191, 183, 201, 190, 165, 164, 150, 146, 139, 131, 127, 116, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 597, 9, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597 } ; static yyconst short int yy_chk[1009] = { 0, 0, 0, 98, 609, 3, 5, 608, 607, 84, 3, 3, 5, 3, 84, 45, 99, 100, 107, 3, 3, 110, 3, 5, 3, 112, 3, 6, 45, 3, 606, 3, 3, 6, 48, 3, 3, 62, 3, 5, 3, 3, 5, 3, 6, 3, 63, 48, 45, 3, 45, 139, 117, 3, 3, 117, 62, 3, 308, 3, 6, 3, 98, 6, 3, 119, 5, 48, 63, 48, 139, 107, 308, 119, 605, 99, 100, 107, 119, 112, 110, 604, 120, 307, 112, 120, 307, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 40, 40, 40, 40, 40, 40, 40, 40, 125, 245, 507, 603, 507, 602, 125, 509, 509, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 105, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 43, 43, 43, 111, 43, 43, 43, 43, 245, 47, 105, 43, 43, 601, 47, 50, 51, 600, 246, 43, 43, 43, 47, 43, 54, 43, 43, 43, 50, 51, 57, 105, 595, 56, 58, 43, 43, 54, 56, 59, 124, 97, 47, 57, 47, 104, 56, 58, 50, 51, 50, 51, 59, 316, 111, 594, 593, 54, 124, 54, 97, 85, 111, 57, 97, 57, 56, 58, 56, 58, 85, 85, 59, 316, 59, 60, 60, 246, 60, 66, 85, 247, 60, 104, 66, 60, 588, 104, 60, 413, 414, 60, 85, 85, 68, 410, 584, 60, 583, 68, 97, 60, 413, 414, 104, 60, 410, 109, 416, 249, 60, 69, 66, 60, 66, 60, 69, 60, 61, 72, 106, 416, 61, 108, 72, 61, 582, 68, 61, 68, 76, 61, 61, 580, 71, 76, 251, 61, 66, 71, 247, 61, 71, 78, 69, 61, 69, 485, 78, 109, 61, 79, 72, 275, 72, 61, 79, 61, 574, 423, 276, 106, 108, 76, 458, 76, 109, 71, 249, 71, 531, 106, 423, 531, 277, 81, 78, 458, 78, 106, 81, 573, 108, 81, 79, 83, 79, 467, 278, 76, 83, 572, 131, 71, 74, 251, 571, 279, 74, 283, 467, 74, 131, 485, 74, 131, 115, 74, 81, 278, 81, 131, 275, 74, 277, 115, 115, 74, 83, 276, 83, 74, 281, 280, 131, 115, 74, 282, 278, 131, 150, 74, 75, 277, 81, 284, 75, 115, 115, 75, 150, 281, 75, 150, 285, 75, 115, 278, 279, 150, 283, 75, 570, 288, 569, 75, 279, 287, 283, 75, 326, 281, 150, 296, 75, 282, 556, 150, 338, 75, 89, 488, 555, 554, 89, 280, 296, 89, 351, 284, 89, 353, 280, 89, 488, 89, 282, 358, 369, 89, 380, 553, 552, 89, 284, 491, 382, 551, 384, 391, 550, 393, 89, 285, 392, 296, 548, 89, 491, 89, 89, 94, 288, 287, 387, 94, 287, 396, 94, 326, 388, 94, 295, 425, 94, 94, 94, 338, 426, 429, 94, 295, 295, 546, 94, 395, 434, 351, 542, 391, 353, 295, 437, 94, 541, 384, 358, 369, 94, 380, 94, 94, 101, 295, 295, 382, 101, 384, 391, 101, 393, 392, 101, 392, 442, 101, 537, 101, 443, 387, 446, 101, 447, 387, 535, 101, 396, 492, 388, 388, 449, 470, 425, 444, 101, 395, 481, 426, 429, 101, 492, 445, 101, 103, 395, 434, 487, 103, 498, 524, 103, 437, 445, 103, 445, 482, 103, 523, 103, 503, 480, 498, 103, 510, 522, 517, 103, 506, 442, 519, 443, 449, 503, 442, 505, 103, 526, 443, 517, 446, 103, 447, 519, 103, 231, 528, 444, 527, 231, 449, 470, 231, 444, 529, 231, 481, 530, 231, 544, 231, 445, 482, 534, 231, 539, 487, 545, 231, 480, 520, 547, 506, 505, 518, 482, 534, 231, 539, 514, 480, 513, 231, 510, 231, 244, 543, 506, 540, 244, 549, 526, 244, 527, 505, 244, 526, 564, 244, 244, 244, 540, 558, 511, 244, 528, 559, 527, 244, 565, 532, 532, 532, 529, 544, 558, 530, 244, 544, 559, 579, 562, 244, 563, 244, 263, 545, 508, 581, 263, 547, 543, 263, 532, 562, 263, 563, 501, 263, 500, 263, 499, 497, 496, 263, 543, 494, 493, 263, 549, 490, 489, 484, 483, 471, 468, 564, 263, 466, 465, 464, 462, 263, 274, 461, 459, 457, 274, 565, 456, 274, 455, 454, 274, 453, 452, 274, 451, 274, 579, 448, 439, 274, 438, 436, 435, 274, 581, 431, 430, 428, 427, 421, 420, 419, 274, 418, 417, 415, 412, 274, 598, 598, 598, 599, 599, 610, 610, 411, 409, 408, 407, 406, 405, 403, 402, 401, 400, 399, 398, 397, 390, 389, 383, 381, 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 354, 352, 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, 340, 339, 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, 327, 322, 314, 310, 309, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 286, 269, 258, 252, 250, 248, 238, 225, 152, 133, 126, 123, 122, 121, 118, 82, 80, 77, 73, 70, 67, 65, 64, 55, 53, 49, 46, 44, 41, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 9, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 597 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #define INITIAL 0 /* This file is generated automatically by `mergelex.py'. */ #define YY_NO_UNPUT #include "common.h" static RECODE_CONST_REQUEST request; static RECODE_SUBTASK subtask; #define ascii_latin1 1 #define latex_latin1 2 void texte_latin1_diaeresis PARAMS ((void)); #define texte_latin1 3 /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap YY_PROTO(( void )); #else extern int yywrap YY_PROTO(( void )); #endif #endif #ifndef YY_NO_UNPUT static void yyunput YY_PROTO(( int c, char *buf_ptr )); #endif #ifndef yytext_ptr static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen YY_PROTO(( yyconst char * )); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput YY_PROTO(( void )); #else static int input YY_PROTO(( void )); #endif #endif #if YY_STACK_USED static int yy_start_stack_ptr = 0; static int yy_start_stack_depth = 0; static int *yy_start_stack = 0; #ifndef YY_NO_PUSH_STATE static void yy_push_state YY_PROTO(( int new_state )); #endif #ifndef YY_NO_POP_STATE static void yy_pop_state YY_PROTO(( void )); #endif #ifndef YY_NO_TOP_STATE static int yy_top_state YY_PROTO(( void )); #endif #else #define YY_NO_PUSH_STATE 1 #define YY_NO_POP_STATE 1 #define YY_NO_TOP_STATE 1 #endif #ifdef YY_MALLOC_DECL YY_MALLOC_DECL #else #if __STDC__ #ifndef __cplusplus #include #endif #else /* Just try to get by without declaring the routines. This will fail * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) * or sizeof(void*) != sizeof(int). */ #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( yy_current_buffer->yy_is_interactive ) \ { \ int c = '*', n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL int yylex YY_PROTO(( void )) #endif /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; if ( yy_init ) { yy_init = 0; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! yy_start ) yy_start = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! yy_current_buffer ) yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); yy_load_buffer_state(); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yy_c_buf_p; /* Support of yytext. */ *yy_cp = yy_hold_char; /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = yy_start; yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { yy_last_accepting_state = yy_current_state; yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 598 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 944 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = yy_last_accepting_cpos; yy_current_state = yy_last_accepting_state; yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = yy_hold_char; yy_cp = yy_last_accepting_cpos; yy_current_state = yy_last_accepting_state; goto yy_find_action; case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(ascii_latin1): case YY_STATE_EOF(latex_latin1): case YY_STATE_EOF(texte_latin1): { return 1; } YY_BREAK case 1: YY_RULE_SETUP { put_byte (171, subtask); } YY_BREAK case 2: YY_RULE_SETUP { put_byte (187, subtask); } YY_BREAK case 3: YY_RULE_SETUP { put_byte (192, subtask); } YY_BREAK case 4: YY_RULE_SETUP { put_byte (193, subtask); } YY_BREAK case 5: YY_RULE_SETUP { put_byte (194, subtask); } YY_BREAK case 6: YY_RULE_SETUP { put_byte (195, subtask); } YY_BREAK case 7: YY_RULE_SETUP { put_byte (196, subtask); } YY_BREAK case 8: YY_RULE_SETUP { put_byte (199, subtask); } YY_BREAK case 9: YY_RULE_SETUP { put_byte (200, subtask); } YY_BREAK case 10: YY_RULE_SETUP { put_byte (201, subtask); } YY_BREAK case 11: YY_RULE_SETUP { put_byte (202, subtask); } YY_BREAK case 12: YY_RULE_SETUP { put_byte (203, subtask); } YY_BREAK case 13: YY_RULE_SETUP { put_byte (204, subtask); } YY_BREAK case 14: YY_RULE_SETUP { put_byte (205, subtask); } YY_BREAK case 15: YY_RULE_SETUP { put_byte (206, subtask); } YY_BREAK case 16: YY_RULE_SETUP { put_byte (207, subtask); } YY_BREAK case 17: YY_RULE_SETUP { put_byte (209, subtask); } YY_BREAK case 18: YY_RULE_SETUP { put_byte (210, subtask); } YY_BREAK case 19: YY_RULE_SETUP { put_byte (211, subtask); } YY_BREAK case 20: YY_RULE_SETUP { put_byte (212, subtask); } YY_BREAK case 21: YY_RULE_SETUP { put_byte (213, subtask); } YY_BREAK case 22: YY_RULE_SETUP { put_byte (214, subtask); } YY_BREAK case 23: YY_RULE_SETUP { put_byte (216, subtask); } YY_BREAK case 24: YY_RULE_SETUP { put_byte (217, subtask); } YY_BREAK case 25: YY_RULE_SETUP { put_byte (218, subtask); } YY_BREAK case 26: YY_RULE_SETUP { put_byte (219, subtask); } YY_BREAK case 27: YY_RULE_SETUP { put_byte (220, subtask); } YY_BREAK case 28: YY_RULE_SETUP { put_byte (221, subtask); } YY_BREAK case 29: YY_RULE_SETUP { put_byte (223, subtask); } YY_BREAK case 30: YY_RULE_SETUP { put_byte (224, subtask); } YY_BREAK case 31: YY_RULE_SETUP { put_byte (225, subtask); } YY_BREAK case 32: YY_RULE_SETUP { put_byte (226, subtask); } YY_BREAK case 33: YY_RULE_SETUP { put_byte (227, subtask); } YY_BREAK case 34: YY_RULE_SETUP { put_byte (228, subtask); } YY_BREAK case 35: YY_RULE_SETUP { put_byte (231, subtask); } YY_BREAK case 36: YY_RULE_SETUP { put_byte (232, subtask); } YY_BREAK case 37: YY_RULE_SETUP { put_byte (233, subtask); } YY_BREAK case 38: YY_RULE_SETUP { put_byte (234, subtask); } YY_BREAK case 39: YY_RULE_SETUP { put_byte (235, subtask); } YY_BREAK case 40: YY_RULE_SETUP { put_byte (236, subtask); } YY_BREAK case 41: YY_RULE_SETUP { put_byte (237, subtask); } YY_BREAK case 42: YY_RULE_SETUP { put_byte (238, subtask); } YY_BREAK case 43: YY_RULE_SETUP { put_byte (239, subtask); } YY_BREAK case 44: YY_RULE_SETUP { put_byte (241, subtask); } YY_BREAK case 45: YY_RULE_SETUP { put_byte (242, subtask); } YY_BREAK case 46: YY_RULE_SETUP { put_byte (243, subtask); } YY_BREAK case 47: YY_RULE_SETUP { put_byte (244, subtask); } YY_BREAK case 48: YY_RULE_SETUP { put_byte (245, subtask); } YY_BREAK case 49: YY_RULE_SETUP { put_byte (246, subtask); } YY_BREAK case 50: YY_RULE_SETUP { put_byte (248, subtask); } YY_BREAK case 51: YY_RULE_SETUP { put_byte (249, subtask); } YY_BREAK case 52: YY_RULE_SETUP { put_byte (250, subtask); } YY_BREAK case 53: YY_RULE_SETUP { put_byte (251, subtask); } YY_BREAK case 54: YY_RULE_SETUP { put_byte (252, subtask); } YY_BREAK case 55: YY_RULE_SETUP { put_byte (253, subtask); } YY_BREAK case 56: YY_RULE_SETUP { put_byte (255, subtask); } YY_BREAK case 57: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('#', subtask); } YY_BREAK case 58: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('$', subtask); } YY_BREAK case 59: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('%', subtask); } YY_BREAK case 60: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('&', subtask); } YY_BREAK case 61: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('_', subtask); } YY_BREAK case 62: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('{', subtask); } YY_BREAK case 63: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('}', subtask); } YY_BREAK case 64: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE ('\\', subtask); } YY_BREAK case 65: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (160, subtask); } YY_BREAK case 66: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (161, subtask); } YY_BREAK case 67: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (163, subtask); } YY_BREAK case 68: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (167, subtask); } YY_BREAK case 69: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (168, subtask); } YY_BREAK case 70: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (169, subtask); } YY_BREAK case 71: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (171, subtask); } YY_BREAK case 72: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (172, subtask); } YY_BREAK case 73: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (173, subtask); } YY_BREAK case 74: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (176, subtask); } YY_BREAK case 75: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (177, subtask); } YY_BREAK case 76: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (178, subtask); } YY_BREAK case 77: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (179, subtask); } YY_BREAK case 78: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (180, subtask); } YY_BREAK case 79: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (181, subtask); } YY_BREAK case 80: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (183, subtask); } YY_BREAK case 81: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (184, subtask); } YY_BREAK case 82: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (185, subtask); } YY_BREAK case 83: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (187, subtask); } YY_BREAK case 84: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (188, subtask); } YY_BREAK case 85: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (189, subtask); } YY_BREAK case 86: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (190, subtask); } YY_BREAK case 87: YY_RULE_SETUP { PUT_NON_DIACRITIC_BYTE (191, subtask); } YY_BREAK case 88: YY_RULE_SETUP { put_byte (192, subtask); } YY_BREAK case 89: YY_RULE_SETUP { put_byte (193, subtask); } YY_BREAK case 90: YY_RULE_SETUP { put_byte (194, subtask); } YY_BREAK case 91: YY_RULE_SETUP { put_byte (195, subtask); } YY_BREAK case 92: YY_RULE_SETUP { put_byte (196, subtask); } YY_BREAK case 93: YY_RULE_SETUP { put_byte (197, subtask); } YY_BREAK case 94: YY_RULE_SETUP { put_byte (198, subtask); } YY_BREAK case 95: YY_RULE_SETUP { put_byte (199, subtask); } YY_BREAK case 96: YY_RULE_SETUP { put_byte (200, subtask); } YY_BREAK case 97: YY_RULE_SETUP { put_byte (201, subtask); } YY_BREAK case 98: YY_RULE_SETUP { put_byte (202, subtask); } YY_BREAK case 99: YY_RULE_SETUP { put_byte (203, subtask); } YY_BREAK case 100: YY_RULE_SETUP { put_byte (204, subtask); } YY_BREAK case 101: YY_RULE_SETUP { put_byte (205, subtask); } YY_BREAK case 102: YY_RULE_SETUP { put_byte (206, subtask); } YY_BREAK case 103: YY_RULE_SETUP { put_byte (207, subtask); } YY_BREAK case 104: YY_RULE_SETUP { put_byte (209, subtask); } YY_BREAK case 105: YY_RULE_SETUP { put_byte (210, subtask); } YY_BREAK case 106: YY_RULE_SETUP { put_byte (211, subtask); } YY_BREAK case 107: YY_RULE_SETUP { put_byte (212, subtask); } YY_BREAK case 108: YY_RULE_SETUP { put_byte (213, subtask); } YY_BREAK case 109: YY_RULE_SETUP { put_byte (214, subtask); } YY_BREAK case 110: YY_RULE_SETUP { put_byte (216, subtask); } YY_BREAK case 111: YY_RULE_SETUP { put_byte (217, subtask); } YY_BREAK case 112: YY_RULE_SETUP { put_byte (218, subtask); } YY_BREAK case 113: YY_RULE_SETUP { put_byte (219, subtask); } YY_BREAK case 114: YY_RULE_SETUP { put_byte (220, subtask); } YY_BREAK case 115: YY_RULE_SETUP { put_byte (221, subtask); } YY_BREAK case 116: YY_RULE_SETUP { put_byte (223, subtask); } YY_BREAK case 117: YY_RULE_SETUP { put_byte (224, subtask); } YY_BREAK case 118: YY_RULE_SETUP { put_byte (225, subtask); } YY_BREAK case 119: YY_RULE_SETUP { put_byte (226, subtask); } YY_BREAK case 120: YY_RULE_SETUP { put_byte (227, subtask); } YY_BREAK case 121: YY_RULE_SETUP { put_byte (228, subtask); } YY_BREAK case 122: YY_RULE_SETUP { put_byte (229, subtask); } YY_BREAK case 123: YY_RULE_SETUP { put_byte (230, subtask); } YY_BREAK case 124: YY_RULE_SETUP { put_byte (231, subtask); } YY_BREAK case 125: YY_RULE_SETUP { put_byte (232, subtask); } YY_BREAK case 126: YY_RULE_SETUP { put_byte (233, subtask); } YY_BREAK case 127: YY_RULE_SETUP { put_byte (234, subtask); } YY_BREAK case 128: YY_RULE_SETUP { put_byte (235, subtask); } YY_BREAK case 129: YY_RULE_SETUP { put_byte (236, subtask); } YY_BREAK case 130: YY_RULE_SETUP { put_byte (237, subtask); } YY_BREAK case 131: YY_RULE_SETUP { put_byte (238, subtask); } YY_BREAK case 132: YY_RULE_SETUP { put_byte (239, subtask); } YY_BREAK case 133: YY_RULE_SETUP { put_byte (241, subtask); } YY_BREAK case 134: YY_RULE_SETUP { put_byte (242, subtask); } YY_BREAK case 135: YY_RULE_SETUP { put_byte (243, subtask); } YY_BREAK case 136: YY_RULE_SETUP { put_byte (244, subtask); } YY_BREAK case 137: YY_RULE_SETUP { put_byte (245, subtask); } YY_BREAK case 138: YY_RULE_SETUP { put_byte (246, subtask); } YY_BREAK case 139: YY_RULE_SETUP { put_byte (248, subtask); } YY_BREAK case 140: YY_RULE_SETUP { put_byte (249, subtask); } YY_BREAK case 141: YY_RULE_SETUP { put_byte (250, subtask); } YY_BREAK case 142: YY_RULE_SETUP { put_byte (251, subtask); } YY_BREAK case 143: YY_RULE_SETUP { put_byte (252, subtask); } YY_BREAK case 144: YY_RULE_SETUP { put_byte (253, subtask); } YY_BREAK case 145: YY_RULE_SETUP { put_byte (255, subtask); } YY_BREAK case 146: YY_RULE_SETUP { ECHO; } YY_BREAK case 147: YY_RULE_SETUP { ECHO; } YY_BREAK case 148: YY_RULE_SETUP { put_byte (171, subtask); } YY_BREAK case 149: YY_RULE_SETUP { put_byte (187, subtask); } YY_BREAK case 150: YY_RULE_SETUP { put_byte (192, subtask); } YY_BREAK case 151: YY_RULE_SETUP { put_byte (194, subtask); } YY_BREAK case 152: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (196, subtask); else ECHO; } YY_BREAK case 153: YY_RULE_SETUP { put_byte (224, subtask); } YY_BREAK case 154: YY_RULE_SETUP { put_byte (226, subtask); } YY_BREAK case 155: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (228, subtask); else ECHO; } YY_BREAK case 156: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { put_byte (199, subtask); } YY_BREAK case 157: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { put_byte (231, subtask); } YY_BREAK case 158: YY_RULE_SETUP { put_byte (200, subtask); } YY_BREAK case 159: YY_RULE_SETUP { put_byte (201, subtask); put_byte (187, subtask); } YY_BREAK case 160: YY_RULE_SETUP { put_byte ('E', subtask); put_byte (187, subtask); } YY_BREAK case 161: YY_RULE_SETUP { put_byte (201, subtask); } YY_BREAK case 162: YY_RULE_SETUP { put_byte (202, subtask); } YY_BREAK case 163: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (203, subtask); else ECHO; } YY_BREAK case 164: YY_RULE_SETUP { put_byte (232, subtask); } YY_BREAK case 165: YY_RULE_SETUP { put_byte (233, subtask); put_byte (187, subtask); } YY_BREAK case 166: YY_RULE_SETUP { put_byte ('e', subtask); put_byte (187, subtask); } YY_BREAK case 167: YY_RULE_SETUP { put_byte (233, subtask); } YY_BREAK case 168: YY_RULE_SETUP { put_byte (234, subtask); } YY_BREAK case 169: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (235, subtask); else ECHO; } YY_BREAK case 170: YY_RULE_SETUP { put_byte (204, subtask); } YY_BREAK case 171: YY_RULE_SETUP { put_byte (206, subtask); } YY_BREAK case 172: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (207, subtask); else ECHO; } YY_BREAK case 173: YY_RULE_SETUP { put_byte (236, subtask); } YY_BREAK case 174: YY_RULE_SETUP { put_byte (238, subtask); } YY_BREAK case 175: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (239, subtask); else ECHO; } YY_BREAK case 176: YY_RULE_SETUP { put_byte (210, subtask); } YY_BREAK case 177: YY_RULE_SETUP { put_byte (212, subtask); } YY_BREAK case 178: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (214, subtask); else ECHO; } YY_BREAK case 179: YY_RULE_SETUP { put_byte (242, subtask); } YY_BREAK case 180: YY_RULE_SETUP { put_byte (244, subtask); } YY_BREAK case 181: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (246, subtask); else ECHO; } YY_BREAK case 182: YY_RULE_SETUP { put_byte (217, subtask); } YY_BREAK case 183: YY_RULE_SETUP { put_byte (219, subtask); } YY_BREAK case 184: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (220, subtask); else ECHO; } YY_BREAK case 185: YY_RULE_SETUP { put_byte (249, subtask); } YY_BREAK case 186: YY_RULE_SETUP { put_byte (251, subtask); } YY_BREAK case 187: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ yy_c_buf_p = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP { if (yytext[1] == request->diaeresis_char) put_byte (252, subtask); else ECHO; } YY_BREAK case 188: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 189: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 190: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 191: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 192: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 193: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 194: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 195: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 196: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 197: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 198: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 199: YY_RULE_SETUP { if (yytext[4] == request->diaeresis_char) texte_latin1_diaeresis (); else ECHO; } YY_BREAK case 200: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 201: YY_RULE_SETUP { ECHO; } YY_BREAK case 202: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 203: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 204: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 205: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 206: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 207: YY_RULE_SETUP { texte_latin1_diaeresis (); } YY_BREAK case 208: YY_RULE_SETUP ECHO; YY_BREAK case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yy_hold_char; YY_RESTORE_YY_MORE_OFFSET if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between yy_current_buffer and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yy_n_chars = yy_current_buffer->yy_n_chars; yy_current_buffer->yy_input_file = yyin; yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state(); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = yy_c_buf_p; goto yy_find_action; } } else switch ( yy_get_next_buffer() ) { case EOB_ACT_END_OF_FILE: { yy_did_buffer_switch_on_eof = 0; if ( yywrap() ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state(); yy_cp = yy_c_buf_p; yy_bp = yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: yy_c_buf_p = &yy_current_buffer->yy_ch_buf[yy_n_chars]; yy_current_state = yy_get_previous_state(); yy_cp = yy_c_buf_p; yy_bp = yytext_ptr + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer() { register char *dest = yy_current_buffer->yy_ch_buf; register char *source = yytext_ptr; register int number_to_move, i; int ret_val; if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( yy_current_buffer->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ yy_current_buffer->yy_n_chars = yy_n_chars = 0; else { int num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ #ifdef YY_USES_REJECT YY_FATAL_ERROR( "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); #else /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = yy_current_buffer; int yy_c_buf_p_offset = (int) (yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yy_flex_realloc( (void *) b->yy_ch_buf, b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1; #endif } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), yy_n_chars, num_to_read ); yy_current_buffer->yy_n_chars = yy_n_chars; } if ( yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; yy_current_buffer->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; yy_n_chars += number_to_move; yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state() { register yy_state_type yy_current_state; register char *yy_cp; yy_current_state = yy_start; for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { yy_last_accepting_state = yy_current_state; yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 598 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ #ifdef YY_USE_PROTOS static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) #else static yy_state_type yy_try_NUL_trans( yy_current_state ) yy_state_type yy_current_state; #endif { register int yy_is_jam; register char *yy_cp = yy_c_buf_p; register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { yy_last_accepting_state = yy_current_state; yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 598 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 597); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT #ifdef YY_USE_PROTOS static void yyunput( int c, register char *yy_bp ) #else static void yyunput( c, yy_bp ) int c; register char *yy_bp; #endif { register char *yy_cp = yy_c_buf_p; /* undo effects of setting up yytext */ *yy_cp = yy_hold_char; if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register int number_to_move = yy_n_chars + 2; register char *dest = &yy_current_buffer->yy_ch_buf[ yy_current_buffer->yy_buf_size + 2]; register char *source = &yy_current_buffer->yy_ch_buf[number_to_move]; while ( source > yy_current_buffer->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); yy_current_buffer->yy_n_chars = yy_n_chars = yy_current_buffer->yy_buf_size; if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; yytext_ptr = yy_bp; yy_hold_char = *yy_cp; yy_c_buf_p = yy_cp; } #endif /* ifndef YY_NO_UNPUT */ #ifdef __cplusplus static int yyinput() #else static int input() #endif { int c; *yy_c_buf_p = yy_hold_char; if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) /* This was really a NUL. */ *yy_c_buf_p = '\0'; else { /* need more input */ int offset = yy_c_buf_p - yytext_ptr; ++yy_c_buf_p; switch ( yy_get_next_buffer() ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin ); /* fall through */ case EOB_ACT_END_OF_FILE: { if ( yywrap() ) return EOF; if ( ! yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: yy_c_buf_p = yytext_ptr + offset; break; } } } c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ *yy_c_buf_p = '\0'; /* preserve yytext */ yy_hold_char = *++yy_c_buf_p; return c; } #ifdef YY_USE_PROTOS void yyrestart( FILE *input_file ) #else void yyrestart( input_file ) FILE *input_file; #endif { if ( ! yy_current_buffer ) yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); yy_init_buffer( yy_current_buffer, input_file ); yy_load_buffer_state(); } #ifdef YY_USE_PROTOS void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) #else void yy_switch_to_buffer( new_buffer ) YY_BUFFER_STATE new_buffer; #endif { if ( yy_current_buffer == new_buffer ) return; if ( yy_current_buffer ) { /* Flush out information for old buffer. */ *yy_c_buf_p = yy_hold_char; yy_current_buffer->yy_buf_pos = yy_c_buf_p; yy_current_buffer->yy_n_chars = yy_n_chars; } yy_current_buffer = new_buffer; yy_load_buffer_state(); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ yy_did_buffer_switch_on_eof = 1; } #ifdef YY_USE_PROTOS void yy_load_buffer_state( void ) #else void yy_load_buffer_state() #endif { yy_n_chars = yy_current_buffer->yy_n_chars; yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; yyin = yy_current_buffer->yy_input_file; yy_hold_char = *yy_c_buf_p; } #ifdef YY_USE_PROTOS YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) #else YY_BUFFER_STATE yy_create_buffer( file, size ) FILE *file; int size; #endif { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file ); return b; } #ifdef YY_USE_PROTOS void yy_delete_buffer( YY_BUFFER_STATE b ) #else void yy_delete_buffer( b ) YY_BUFFER_STATE b; #endif { if ( ! b ) return; if ( b == yy_current_buffer ) yy_current_buffer = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yy_flex_free( (void *) b->yy_ch_buf ); yy_flex_free( (void *) b ); } #ifndef YY_ALWAYS_INTERACTIVE #ifndef YY_NEVER_INTERACTIVE extern int isatty YY_PROTO(( int )); #endif #endif #ifdef YY_USE_PROTOS void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) #else void yy_init_buffer( b, file ) YY_BUFFER_STATE b; FILE *file; #endif { yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; #if YY_ALWAYS_INTERACTIVE b->yy_is_interactive = 1; #else #if YY_NEVER_INTERACTIVE b->yy_is_interactive = 0; #else b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; #endif #endif } #ifdef YY_USE_PROTOS void yy_flush_buffer( YY_BUFFER_STATE b ) #else void yy_flush_buffer( b ) YY_BUFFER_STATE b; #endif { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == yy_current_buffer ) yy_load_buffer_state(); } #ifndef YY_NO_SCAN_BUFFER #ifdef YY_USE_PROTOS YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) #else YY_BUFFER_STATE yy_scan_buffer( base, size ) char *base; yy_size_t size; #endif { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b ); return b; } #endif #ifndef YY_NO_SCAN_STRING #ifdef YY_USE_PROTOS YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) #else YY_BUFFER_STATE yy_scan_string( yy_str ) yyconst char *yy_str; #endif { int len; for ( len = 0; yy_str[len]; ++len ) ; return yy_scan_bytes( yy_str, len ); } #endif #ifndef YY_NO_SCAN_BYTES #ifdef YY_USE_PROTOS YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) #else YY_BUFFER_STATE yy_scan_bytes( bytes, len ) yyconst char *bytes; int len; #endif { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = len + 2; buf = (char *) yy_flex_alloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < len; ++i ) buf[i] = bytes[i]; buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #endif #ifndef YY_NO_PUSH_STATE #ifdef YY_USE_PROTOS static void yy_push_state( int new_state ) #else static void yy_push_state( new_state ) int new_state; #endif { if ( yy_start_stack_ptr >= yy_start_stack_depth ) { yy_size_t new_size; yy_start_stack_depth += YY_START_STACK_INCR; new_size = yy_start_stack_depth * sizeof( int ); if ( ! yy_start_stack ) yy_start_stack = (int *) yy_flex_alloc( new_size ); else yy_start_stack = (int *) yy_flex_realloc( (void *) yy_start_stack, new_size ); if ( ! yy_start_stack ) YY_FATAL_ERROR( "out of memory expanding start-condition stack" ); } yy_start_stack[yy_start_stack_ptr++] = YY_START; BEGIN(new_state); } #endif #ifndef YY_NO_POP_STATE static void yy_pop_state() { if ( --yy_start_stack_ptr < 0 ) YY_FATAL_ERROR( "start-condition stack underflow" ); BEGIN(yy_start_stack[yy_start_stack_ptr]); } #endif #ifndef YY_NO_TOP_STATE static int yy_top_state() { return yy_start_stack[yy_start_stack_ptr - 1]; } #endif #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif #ifdef YY_USE_PROTOS static void yy_fatal_error( yyconst char msg[] ) #else static void yy_fatal_error( msg ) char msg[]; #endif { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yytext[yyleng] = yy_hold_char; \ yy_c_buf_p = yytext + n; \ yy_hold_char = *yy_c_buf_p; \ *yy_c_buf_p = '\0'; \ yyleng = n; \ } \ while ( 0 ) /* Internal utility routines. */ #ifndef yytext_ptr #ifdef YY_USE_PROTOS static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) #else static void yy_flex_strncpy( s1, s2, n ) char *s1; yyconst char *s2; int n; #endif { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN #ifdef YY_USE_PROTOS static int yy_flex_strlen( yyconst char *s ) #else static int yy_flex_strlen( s ) yyconst char *s; #endif { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif #ifdef YY_USE_PROTOS static void *yy_flex_alloc( yy_size_t size ) #else static void *yy_flex_alloc( size ) yy_size_t size; #endif { return (void *) malloc( size ); } #ifdef YY_USE_PROTOS static void *yy_flex_realloc( void *ptr, yy_size_t size ) #else static void *yy_flex_realloc( ptr, size ) void *ptr; yy_size_t size; #endif { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } #ifdef YY_USE_PROTOS static void yy_flex_free( void *ptr ) #else static void yy_flex_free( ptr ) void *ptr; #endif { free( ptr ); } #if YY_MAIN int main() { yylex(); return 0; } #endif /* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static bool transform_ascii_latin1 (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 1; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN ascii_latin1; return yylex (); } bool module_ascii_latin1 (RECODE_OUTER outer) { if (!declare_single (outer, "ASCII-BS", "Latin-1", outer->quality_variable_to_byte, NULL, transform_ascii_latin1)) return false; return true; } void delmodule_ascii_latin1 (RECODE_OUTER outer) { } /* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static bool transform_latex_latin1 (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 1; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN latex_latin1; return yylex (); } bool module_latex_latin1 (RECODE_OUTER outer) { return declare_single (outer, "LaTeX", "Latin-1", outer->quality_variable_to_byte, NULL, transform_latex_latin1) && declare_alias (outer, "TeX", "LaTeX") && declare_alias (outer, "ltex", "LaTeX"); } void delmodule_latex_latin1 (RECODE_OUTER outer) { } /* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1989. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static bool transform_texte_latin1 (RECODE_SUBTASK subtask_argument) { subtask = subtask_argument; request = subtask->task->request; yy_init = 1; yyin = subtask->input.file; yyout = subtask->output.file; BEGIN texte_latin1; return yylex (); } void texte_latin1_diaeresis (void) { unsigned counter; for (counter = 0; counter < yyleng; counter++) if (yytext[counter+1] == request->diaeresis_char) { switch (yytext[counter]) { /* The next "case 'A'" line once triggered a `NULL in input' diagnostic in flex. This astonishing bug has been hard to isolate, so I'll leave this comment around for a while. */ case 'A': put_byte (196, subtask); break; case 'E': put_byte (203, subtask); break; case 'I': put_byte (207, subtask); break; case 'O': put_byte (214, subtask); break; case 'U': put_byte (220, subtask); break; case 'a': put_byte (228, subtask); break; case 'e': put_byte (235, subtask); break; case 'i': put_byte (239, subtask); break; case 'o': put_byte (246, subtask); break; case 'u': put_byte (252, subtask); break; case 'y': put_byte (255, subtask); break; default: put_byte (yytext[counter], subtask); } counter++; } else put_byte (yytext[counter], subtask); } bool module_texte_latin1 (RECODE_OUTER outer) { return declare_single (outer, "Texte", "Latin-1", outer->quality_variable_to_byte, NULL, transform_texte_latin1) && declare_alias (outer, "txte", "Texte"); } void delmodule_texte_latin1 (RECODE_OUTER outer) { } recode-3.6/src/names.c0100644000000000000000000007136607213513151013373 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1993, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "hash.h" /*-------------------------------------------------------------------------. | Return the corresponding UCS-2 value in a CHARSET for a given CODE, or a | | negative number if this symbol is not defined. | `-------------------------------------------------------------------------*/ int code_to_ucs2 (RECODE_CONST_SYMBOL charset, unsigned code) { const struct strip_data *data = charset->data; const recode_ucs2 *pool = data->pool; unsigned offset = data->offset[code / STRIP_SIZE]; unsigned value = pool[offset + code % STRIP_SIZE]; return value == MASK (16) ? -1 : (int) value; } /*---------------------------------------------------------. | Return true if BEFORE to AFTER is currently restricted. | `---------------------------------------------------------*/ static bool check_restricted (RECODE_CONST_OUTER outer, RECODE_CONST_SYMBOL before, RECODE_CONST_SYMBOL after) { struct recode_known_pair *pair; int left; int right; /* Reject the charset if no UCS-2 translation known for it. */ if (before->data_type != RECODE_STRIP_DATA || after->data_type != RECODE_STRIP_DATA) return true; for (pair = outer->pair_restriction; pair < outer->pair_restriction + outer->pair_restrictions; pair++) { /* Reject the charset if the characters in the pair do not exist of if their respective definition do not match. */ left = code_to_ucs2 (before, pair->left); if (left < 0) return true; right = code_to_ucs2 (after, pair->right); if (right < 0) return true; if (left != right) return true; } /* No restriction found. */ return false; } /* Charset names. */ /*-------------------------------------. | Prepare aliases for initialisation. | `-------------------------------------*/ static unsigned alias_hasher (const void *void_alias, unsigned limit) { RECODE_CONST_ALIAS alias = void_alias; return hash_string (alias->name, limit); } static bool alias_comparator (const void *void_first, const void *void_second) { RECODE_CONST_ALIAS first = void_first; RECODE_CONST_ALIAS second = void_second; return strcmp (first->name, second->name) == 0; } bool prepare_for_aliases (RECODE_OUTER outer) { outer->symbol_list = NULL; outer->number_of_symbols = 0; outer->alias_table = hash_initialize (800, NULL, alias_hasher, alias_comparator, free); if (!outer->alias_table) return false; return true; } /*---------------------------------------------------------------------------. | Return a newly allocated copy of symbol NAME, with upper case letters | | turned into lower case, and all non alphanumeric discarded, or NULL if any | | problem. | `---------------------------------------------------------------------------*/ static char * name_for_argmatch (RECODE_OUTER outer, const char *name) { char *result; char *out; const char *in; int character; if (!ALLOC (result, strlen (name) + 1, char)) return NULL; out = result; for (in = name; *in; in++) { character = *(const unsigned char *) in; if ((character >= 'a' && character <= 'z') || (character >= '0' && character <= '9')) *out++ = character; else if (character >= 'A' && character <= 'Z') *out++ = character - 'A' + 'a'; } *out = NUL; return result; } /*---------------------------------------------------------------------------. | Given an abbreviated NAME of a charset or surface, return its full name, | | properly capitalized and punctuated, or NULL if this cannot be done | | successfully. FIND_TYPE may restrict the interpretation. A NULL or empty | | string means the default charset, if this default charset is defined. | `---------------------------------------------------------------------------*/ static const char * disambiguate_name (RECODE_OUTER outer, const char *name, enum alias_find_type find_type) { char *hashname; int ordinal; const char *result; result = NULL; /* for lint */ /* Look for a match. */ if (!name || !*name) switch (find_type) { case ALIAS_FIND_AS_CHARSET: case ALIAS_FIND_AS_EITHER: name = getenv ("DEFAULT_CHARSET"); if (!name) name = "char"; /* locale dependent */ break; default: return NULL; } hashname = name_for_argmatch (outer, name); if (!hashname) return NULL; switch (find_type) { case SYMBOL_CREATE_CHARSET: case SYMBOL_CREATE_DATA_SURFACE: case SYMBOL_CREATE_TREE_SURFACE: abort (); case ALIAS_FIND_AS_CHARSET: /* FIXME: How to avoid those ugly casts? */ ordinal = argmatch (hashname, (const char *const *) outer->argmatch_charset_array, NULL, 0); result = ordinal < 0 ? NULL : outer->realname_charset_array[ordinal]; break; case ALIAS_FIND_AS_SURFACE: ordinal = argmatch (hashname, (const char *const *) outer->argmatch_surface_array, NULL, 0); result = ordinal < 0 ? NULL : outer->realname_surface_array[ordinal]; break; case ALIAS_FIND_AS_EITHER: ordinal = argmatch (hashname, (const char *const *) outer->argmatch_charset_array, NULL, 0); if (ordinal >= 0) result = outer->realname_charset_array[ordinal]; else { ordinal = argmatch (hashname, (const char *const *) outer->argmatch_surface_array, NULL, 0); result = ordinal < 0 ? NULL : outer->realname_surface_array[ordinal]; } break; } free (hashname); return result; } /*----------------------------------------------------------------------------. | Return the alias from its given NAME, possibly abbreviated. If FIND_TYPE | | is any of SYMBOL_CREATE_*, NAME is not abbreviated, create a new symbol if | | it does not exist, or return NULL if any problem happens at creation time. | | For other TYPE values, never create a new charset, merely return NULL if | | NAME cannot be correctly disambiguated. | `----------------------------------------------------------------------------*/ RECODE_ALIAS find_alias (RECODE_OUTER outer, const char *name, enum alias_find_type find_type) { struct recode_alias lookup; RECODE_ALIAS alias; RECODE_SYMBOL symbol; enum recode_symbol_type type = RECODE_NO_SYMBOL_TYPE; switch (find_type) { case SYMBOL_CREATE_CHARSET: type = RECODE_CHARSET; break; case SYMBOL_CREATE_DATA_SURFACE: type = RECODE_DATA_SURFACE; break; case SYMBOL_CREATE_TREE_SURFACE: type = RECODE_TREE_SURFACE; break; default: /* Clean and disambiguate first as requested. */ name = disambiguate_name (outer, name, find_type); if (!name) return NULL; } /* Search the whole hash bucket and return any match. */ lookup.name = name; if (!lookup.name) return NULL; if (alias = hash_lookup (outer->alias_table, &lookup), alias) return alias; /* If we reach this point, find_type is necessarily one of SYMBOL_CREATE_*. For any other value of find_type, the alias would have already been found and returned. So, here, a new symbol does have to be created. */ if (!ALLOC (symbol, 1, struct recode_symbol)) return NULL; symbol->ordinal = outer->number_of_symbols++; symbol->name = name; symbol->type = type; symbol->ignore = false; symbol->data_type = RECODE_NO_CHARSET_DATA; symbol->data = NULL; symbol->resurfacer = NULL; symbol->unsurfacer = NULL; if (!ALLOC (alias, 1, struct recode_alias)) { free (symbol); return NULL; } alias->name = name; alias->symbol = symbol; alias->implied_surfaces = NULL; if (!hash_insert (outer->alias_table, alias)) { free (symbol); free (alias); return NULL; } symbol->next = outer->symbol_list; outer->symbol_list = symbol; return alias; } /*-----------------------------------------------------------------------. | Have NAME to be an alternate name for OLD_NAME. Create OLD_NAME if it | | does not exist already. | `-----------------------------------------------------------------------*/ RECODE_ALIAS declare_alias (RECODE_OUTER outer, const char *name, const char *old_name) { struct recode_alias lookup; RECODE_ALIAS alias; RECODE_SYMBOL symbol; /* Find the symbol. */ if (alias = find_alias (outer, old_name, SYMBOL_CREATE_CHARSET), !alias) return NULL; symbol = alias->symbol; lookup.name = name; if (alias = hash_lookup (outer->alias_table, &lookup), alias) { if (alias->symbol == symbol) return alias; recode_error (outer, _("Charset %s already exists and is not %s"), name, old_name); return NULL; } /* Make the alias. */ if (!ALLOC (alias, 1, struct recode_alias)) return NULL; alias->name = name; alias->symbol = symbol; alias->implied_surfaces = NULL; if (!hash_insert (outer->alias_table, alias)) { free (alias); return NULL; } return alias; } /*-------------------------------------------------------------------------. | To the end of implied surfaces for CHARSET_NAME, add the one represented | | by SURFACE_NAME. Both names are created as necessary. | `-------------------------------------------------------------------------*/ bool declare_implied_surface (RECODE_OUTER outer, RECODE_ALIAS alias, RECODE_CONST_SYMBOL surface) { struct recode_surface_list *list; struct recode_surface_list *hook; if (!ALLOC (hook, 1, struct recode_surface_list)) return false; hook->surface = surface; hook->next = NULL; if (alias->implied_surfaces) { list = alias->implied_surfaces; while (list->next) list = list->next; list->next = hook; } else alias->implied_surfaces = hook; return true; } /*-------------------------------------------. | Construct the string arrays for argmatch. | `-------------------------------------------*/ struct make_argmatch_walk { RECODE_OUTER outer; unsigned charset_counter; /* number of acceptable charset names */ unsigned surface_counter; /* number of acceptable surface names */ }; static bool make_argmatch_walker_1 (void *void_alias, void *void_walk) { RECODE_ALIAS alias = void_alias; struct make_argmatch_walk *walk = void_walk; if (alias->symbol->type == RECODE_CHARSET) walk->charset_counter++; else walk->surface_counter++; return true; } static bool make_argmatch_walker_2 (void *void_alias, void *void_walk) { RECODE_ALIAS alias = void_alias; struct make_argmatch_walk *walk = void_walk; RECODE_OUTER outer = walk->outer; if (alias->symbol->type == RECODE_CHARSET) { char *string = name_for_argmatch (outer, alias->name); if (!string) abort (); outer->argmatch_charset_array[walk->charset_counter] = string; outer->realname_charset_array[walk->charset_counter] = alias->name; walk->charset_counter++; } else { char *string = name_for_argmatch (outer, alias->name); if (!string) abort (); outer->argmatch_surface_array[walk->surface_counter] = string; outer->realname_surface_array[walk->surface_counter] = alias->name; walk->surface_counter++; } return true; } bool make_argmatch_arrays (RECODE_OUTER outer) { struct make_argmatch_walk walk; /* wanderer's data */ #if HASH_STATS hash_print_statistics (outer->alias_table, stderr); #endif /* It may happen that new modules are added only once all initialisation completed. To handle that case, free previous arrays if any. */ if (outer->argmatch_charset_array) { char **cursor; for (cursor = outer->argmatch_charset_array; *cursor; cursor++) free (*cursor); for (cursor = outer->argmatch_surface_array; *cursor; cursor++) free (*cursor); free (outer->argmatch_charset_array); } /* Count how many strings we need. */ walk.outer = outer; walk.charset_counter = 0; walk.surface_counter = 0; hash_do_for_each (outer->alias_table, make_argmatch_walker_1, &walk); /* Allocate the argmatch and realname arrays, each with a NULL sentinel. */ { char **cursor; if (!ALLOC (cursor, 2*walk.charset_counter + 2*walk.surface_counter + 4, char *)) return false; outer->argmatch_charset_array = cursor; cursor += walk.charset_counter; *cursor++ = NULL; outer->argmatch_surface_array = cursor; cursor += walk.surface_counter; *cursor++ = NULL; outer->realname_charset_array = (const char **) cursor; cursor += walk.charset_counter; *cursor++ = NULL; outer->realname_surface_array = (const char **) cursor; cursor += walk.surface_counter; *cursor = NULL; } /* Fill in the arrays. */ walk.charset_counter = 0; walk.surface_counter = 0; hash_do_for_each (outer->alias_table, make_argmatch_walker_2, &walk); return true; } /*-------------------------------------------------------------------------. | Order two strings lexicographically, ignoring case and comparing numeric | | values for run of decimal digits at first. | `-------------------------------------------------------------------------*/ static int compare_strings (const char *stringA, const char *stringB) { int delayed = 0; while (*stringA && *stringB) if (*stringA >= '0' && *stringA <= '9') if (*stringB >= '0' && *stringB <= '9') { unsigned valueA = 0; unsigned valueB = 0; while (*stringA >= '0' && *stringA <= '9' && *stringB >= '0' && *stringB <= '9') { valueA = 10 * valueA + *stringA - '0'; valueB = 10 * valueB + *stringB - '0'; if (delayed == 0) delayed = *stringA - *stringB; stringA++; stringB++; } while (*stringA >= '0' && *stringA <= '9') { valueA = 10 * valueA + *stringA - '0'; if (delayed == 0) delayed = 1; stringA++; } while (*stringB >= '0' && *stringB <= '9') { valueB = 10 * valueB + *stringB - '0'; if (delayed == 0) delayed = -1; stringB++; } if (valueA - valueB != 0) return valueA - valueB; } else return -1; else if (*stringB >= '0' && *stringB <= '9') return 1; else { char charA = *stringA; char charB = *stringB; if (charA >= 'a' && charA <= 'z') charA += 'A' - 'a'; if (charB >= 'a' && charB <= 'z') charB += 'A' - 'a'; if (charA - charB != 0) return charA - charB; if (delayed == 0) delayed = *stringA - *stringB; stringA++; stringB++; } return *stringA ? 1 : *stringB ? -1 : delayed; } /*--------------------------------------------------------------------------. | Order two struct recode_alias, using the first key to group all surfaces | | together, the second key to group charsets or surfaces having the same | | unaliased name, the third key to list unaliases names first, and the last | | key to order aliased names. | `--------------------------------------------------------------------------*/ static int compare_struct_alias (const void *void_first, const void *void_second) { RECODE_CONST_ALIAS first = (RECODE_CONST_ALIAS) void_first; RECODE_CONST_ALIAS second = (RECODE_CONST_ALIAS) void_second; int value; if (first->symbol->type == RECODE_CHARSET && second->symbol->type != RECODE_CHARSET) return 1; if (first->symbol->type != RECODE_CHARSET && second->symbol->type == RECODE_CHARSET) return -1; if (value = compare_strings (first->symbol->name, second->symbol->name), value != 0) return value; if (first->name == first->symbol->name && second->name != second->symbol->name) return -1; if (second->name == second->symbol->name && first->name != first->symbol->name) return 1; return compare_strings (first->name, second->name); } /*-------------------------------------------------------------------------. | List all available symbols, obeying restrictions for an AFTER charset if | | any. | `-------------------------------------------------------------------------*/ struct list_symbols_walk { RECODE_ALIAS array; unsigned number; }; static bool list_symbols_walker_1 (void *void_alias, void *void_walk) { RECODE_ALIAS alias = void_alias; struct list_symbols_walk *walk = void_walk; if (!alias->symbol->ignore) walk->number++; return true; } static bool list_symbols_walker_2 (void *void_alias, void *void_walk) { RECODE_ALIAS alias = void_alias; struct list_symbols_walk *walk = void_walk; if (!alias->symbol->ignore) walk->array[walk->number++] = *alias; return true; } bool list_all_symbols (RECODE_OUTER outer, RECODE_CONST_SYMBOL after) { struct list_symbols_walk walk; /* wanderer's data */ RECODE_ALIAS alias; /* cursor into sorted array */ bool list_flag; /* if the current alias should be listed */ /* Count how many symbols we have. */ walk.number = 0; hash_do_for_each (outer->alias_table, list_symbols_walker_1, &walk); /* Allocate a structure to hold them. */ if (!ALLOC (walk.array, walk.number, struct recode_alias)) return false; /* Copy all symbols in it. */ walk.number = 0; hash_do_for_each (outer->alias_table, list_symbols_walker_2, &walk); /* Sort it. */ qsort (walk.array, (size_t) walk.number, sizeof (struct recode_alias), compare_struct_alias); /* Print it, one line per symbol, giving the true symbol name first, followed by all its alias in lexicographic order. */ list_flag = false; for (alias = walk.array; alias < walk.array + walk.number; alias++) { /* Begin a new line with the true symbol name when it changes. */ if (alias == walk.array || alias->symbol->name != (alias - 1)->symbol->name) { if (list_flag && alias != walk.array) putchar ('\n'); list_flag = !after || !check_restricted (outer, alias->symbol, after); if (list_flag && alias->symbol->type != RECODE_CHARSET) putchar ('/'); } else if (list_flag) putchar (' '); /* Print a name and its usual surfaces. */ if (list_flag) { struct recode_surface_list *cursor; fputs (alias->name, stdout); for (cursor = alias->implied_surfaces; cursor; cursor = cursor->next) { putchar ('/'); fputs (cursor->surface->name, stdout); } } } if (list_flag) putchar ('\n'); /* Release the work array. */ free (walk.array); return true; } /* Charset contents. */ /*-----------------------------------------------------------------. | Decode a known PAIRS argument, given in STRING, constructing the | | pair_restriction array out of it. | `-----------------------------------------------------------------*/ bool decode_known_pairs (RECODE_OUTER outer, const char *string) { const char *cursor; char *after; int left_value; int right_value; int *pointer; if (!ALLOC (outer->pair_restriction, 16, struct recode_known_pair)) return false; left_value = -1; right_value = -1; pointer = &left_value; cursor = string; while (*cursor) switch (*cursor) { default: return false; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': *pointer = strtoul (cursor, &after, 0); cursor = after; if (*pointer > 255) return false; break; case ':': cursor++; if (left_value < 0 || pointer != &left_value) return false; pointer = &right_value; break; case ',': cursor++; if (left_value < 0 || right_value < 0) return false; outer->pair_restriction[outer->pair_restrictions].left = (unsigned char) left_value; outer->pair_restriction[outer->pair_restrictions].right = (unsigned char) right_value; outer->pair_restrictions++; if (outer->pair_restrictions % 16 == 0) if (!REALLOC (outer->pair_restriction, outer->pair_restrictions + 16, struct recode_known_pair)) return false; left_value = -1; right_value = -1; pointer = &left_value; break; } if (left_value < 0 || right_value < 0) return false; outer->pair_restriction[outer->pair_restrictions].left = (unsigned char) left_value; outer->pair_restriction[outer->pair_restrictions].right = (unsigned char) right_value; outer->pair_restrictions++; return true; } /*-----------------------------------------------------------------. | Print a concise, tabular CHARSET description on standard output, | | presented according to LIST_FORMAT. | `-----------------------------------------------------------------*/ bool list_concise_charset (RECODE_OUTER outer, RECODE_CONST_SYMBOL charset, const enum recode_list_format list_format) { unsigned half; /* half 0, half 1 of the table */ const char *format; /* format string */ const char *blanks; /* white space to replace format string */ unsigned counter; /* code counter */ unsigned counter2; /* code counter */ unsigned code; /* code value */ /* Ensure we have a strip table to play with. */ if (charset->data_type != RECODE_STRIP_DATA) { recode_error (outer, _("Cannot list `%s', no names available for this charset"), charset->name); return false; } printf ("%s\n", charset->name); /* Select format for numbers. */ switch (list_format) { default: return false; /* cannot happen */ case RECODE_NO_FORMAT: case RECODE_DECIMAL_FORMAT: format = "%3d"; blanks = " "; break; case RECODE_OCTAL_FORMAT: format = "%0.3o"; blanks = " "; break; case RECODE_HEXADECIMAL_FORMAT: format = "%0.2x"; blanks = " "; break; } /* Print both halves of the table. */ for (half = 0; half < 2; half++) { /* Skip printing this half if it is empty. */ for (code = 128 * half; code < 128 * (half + 1); code++) if (code_to_ucs2 (charset, code) >= 0) break; if (code == 128 * (half + 1)) continue; /* Print this half. */ printf ("\n"); for (counter = 128 * half; counter < 128 * half + 16; counter++) for (counter2 = 0; counter2 < 128; counter2 += 16) { int ucs2; const char *mnemonic; if (counter2 > 0) printf (" "); code = counter + counter2; ucs2 = code_to_ucs2 (charset, code); mnemonic = ucs2 >= 0 ? ucs2_to_rfc1345 (ucs2) : NULL; /* FIXME: Trailing space elimination is not always effective. */ if (ucs2 >= 0) printf (format, code); else if (mnemonic || counter2 != 112) printf (blanks); if (mnemonic) printf (counter2 == 112 ? " %s\n" : " %-3s", mnemonic); else printf (counter2 == 112 ? "\n" : " "); } } return true; } /*------------------------------------------------------. | Print a full CHARSET description on standard output. | `------------------------------------------------------*/ static void list_full_charset_line (int code, recode_ucs2 ucs2, bool french) { const char *mnemonic = ucs2_to_rfc1345 (ucs2); const char *charname; if (code >= 0) printf ("%3d %.3o %.2x", code, code, code); else fputs (" + + + ", stdout); printf (" %.4X", ucs2); if (mnemonic) printf (" %-3s", mnemonic); else fputs (" ", stdout); if (french) { charname = ucs2_to_french_charname (ucs2); if (!charname) charname = ucs2_to_charname (ucs2); } else { charname = ucs2_to_charname (ucs2); if (!charname) charname = ucs2_to_french_charname (ucs2); } if (charname) { fputs (" ", stdout); fputs (charname, stdout); } putchar ('\n'); } bool list_full_charset (RECODE_OUTER outer, RECODE_CONST_SYMBOL charset) { bool french; /* if output should be in French */ /* Decide if we prefer French or English output. */ { const char *string = getenv ("LANGUAGE"); french = false; if (string && string[0] == 'f' && string[1] == 'r') french = true; else { string = getenv ("LANG"); if (string && string[0] == 'f' && string[1] == 'r') french = true; } } /* See which data is available. */ switch (charset->data_type) { case RECODE_EXPLODE_DATA: { const unsigned short *data = charset->data; unsigned code; /* code counter */ unsigned expected; /* expected value for code counter */ bool insert_white; /* insert a while line before printing */ /* Print the long table according to explode data. */ printf (_("Dec Oct Hex UCS2 Mne %s\n"), charset->name); insert_white = true; expected = 0; while (*data != DONE) { code = *data++; while (expected < code) { if (insert_white) { putchar ('\n'); insert_white = false; } list_full_charset_line (expected, expected, french); expected++; } if (*data == ELSE || *data == DONE) insert_white = true; else { if (insert_white) { putchar ('\n'); insert_white = false; } list_full_charset_line (code, *data++, french); while (*data != ELSE && *data != DONE) list_full_charset_line (-1, *data++, french); } while (*data != DONE) data++; expected = code + 1; data++; } } return true; case RECODE_STRIP_DATA: { unsigned code; /* code counter */ int ucs2; /* UCS-2 translation */ bool insert_white; /* insert a while line before printing */ /* Print the long table according to strip data. */ printf (_("Dec Oct Hex UCS2 Mne %s\n"), charset->name); insert_white = true; for (code = 0; code < 256; code++) if ((ucs2 = code_to_ucs2 (charset, code)), ucs2 >= 0) { if (insert_white) { putchar ('\n'); insert_white = false; } list_full_charset_line (code, ucs2, french); } else insert_white = true; } return true; default: recode_error (outer, _("Sorry, no names available for `%s'"), charset->name); return false; } } /*----------------------------------------------------------------------------. | This is a diagnostic tool. Report all charsets which are a subset of | | another, or are identical. Return true only if there are no such subsets. | `----------------------------------------------------------------------------*/ bool find_and_report_subsets (RECODE_OUTER outer) { bool success = true; RECODE_SYMBOL charset1; for (charset1 = outer->symbol_list; charset1; charset1 = charset1->next) { const struct strip_data *table1 = charset1->data; RECODE_SYMBOL charset2; if (charset1->ignore || charset1->data_type != RECODE_STRIP_DATA) continue; for (charset2 = outer->symbol_list; charset2; charset2 = charset2->next) { const struct strip_data *table2 = charset2->data; if (charset2->ignore || charset2->data_type != RECODE_STRIP_DATA || charset2 == charset1) continue; { bool subset = true; unsigned distance = 0; unsigned counter; unsigned slider; for (counter = 0; counter < 256/STRIP_SIZE; counter++) { const recode_ucs2 *pool1 = table1->pool; const recode_ucs2 *pool2 = table2->pool; const short offset1 = table1->offset[counter]; const short offset2 = table2->offset[counter]; if (pool1 != pool2 || offset1 != offset2) for (slider = 0; slider < STRIP_SIZE; slider++) { recode_ucs2 value1 = pool1[offset1 + slider]; recode_ucs2 value2 = pool2[offset2 + slider]; if (value1 != value2) { if (value1 == MASK (16)) distance++; else { subset = false; break; } } } if (!subset) break; } if (subset) { if (distance == 0) printf ("[ 0] %s == %s\n", charset1->name, charset2->name); else printf ("[%3d] %s < %s\n", distance, charset1->name, charset2->name); success = false; } } } } return success; } recode-3.6/src/outer.c0100644000000000000000000004424407153265616013436 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "hash.h" /*-----------------------------------------------------------------------. | This dummy fallback routine is used to flag the intent of a reversible | | coding as a fallback, which is the traditional `recode' behaviour. | `-----------------------------------------------------------------------*/ bool reversibility (RECODE_SUBTASK subtask, unsigned code) { return false; } /*-------------------------------------------------------------------------. | Allocate and initialize a new single step, save for the before and after | | charsets and quality. | `-------------------------------------------------------------------------*/ static RECODE_SINGLE new_single_step (RECODE_OUTER outer) { RECODE_SINGLE single; if (!ALLOC (single, 1, struct recode_single)) return NULL; single->next = outer->single_list; outer->single_list = single; outer->number_of_singles++; single->initial_step_table = NULL; single->init_routine = NULL; single->transform_routine = NULL; single->fallback_routine = reversibility; return single; } /*-------------------------------------------------------------------------. | Create and initialize a new single step for recoding between BEFORE_NAME | | and AFTER_NAME. Give it a recoding QUALITY, also saving an INIT_ROUTINE | | and a TRANSFORM_ROUTINE functions. | `-------------------------------------------------------------------------*/ RECODE_SINGLE declare_single (RECODE_OUTER outer, const char *before_name, const char *after_name, struct recode_quality quality, Recode_init init_routine, Recode_transform transform_routine) { RECODE_SINGLE single = new_single_step (outer); if (!single) return NULL; if (strcmp (before_name, "data") == 0) { single->before = outer->data_symbol; single->after = find_alias (outer, after_name, SYMBOL_CREATE_DATA_SURFACE)->symbol; } else if (strcmp(after_name, "data") == 0) { single->before = find_alias (outer, before_name, SYMBOL_CREATE_DATA_SURFACE)->symbol; single->after = outer->data_symbol; } else if (strcmp (before_name, "tree") == 0) { single->before = outer->tree_symbol; single->after = find_alias (outer, after_name, SYMBOL_CREATE_TREE_SURFACE)->symbol; } else if (strcmp(after_name, "tree") == 0) { single->before = find_alias (outer, before_name, SYMBOL_CREATE_TREE_SURFACE)->symbol; single->after = outer->tree_symbol; } else { single->before = find_alias (outer, before_name, SYMBOL_CREATE_CHARSET)->symbol; single->after = find_alias (outer, after_name, SYMBOL_CREATE_CHARSET)->symbol; } #if 0 /* FIXME: We should delink from the list of charsets before freeing. The alias should also be freed. */ if (!before || !after) { free (single->before); return NULL; } #endif single->quality = quality; single->init_routine = init_routine; single->transform_routine = transform_routine; if (single->before == outer->data_symbol || single->before == outer->tree_symbol) { if (single->after->resurfacer) recode_error (outer, _("Resurfacer set more than once for `%s'"), after_name); single->after->resurfacer = single; } else if (single->after == outer->data_symbol || single->after == outer->tree_symbol) { if (single->before->unsurfacer) recode_error (outer, _("Unsurfacer set more than once for `%s'"), before_name); single->before->unsurfacer = single; } return single; } #if 0 /*-------------------------------------------. | Create and initialize a new data surface. | `-------------------------------------------*/ bool declare_data_surface (RECODE_OUTER outer, const char *name, struct recode_quality resurfacer_quality, Recode_init resurfacer_init_routine, Recode_transform resurfacer_transform_routine, struct recode_quality unsurfacer_quality, Recode_init unsurfacer_init_routine, Recode_transform unsurfacer_transform_routine) { } /*-------------------------------------------------. | Create and initialize a new structural surface. | `-------------------------------------------------*/ bool declare_tree_surface (RECODE_OUTER outer, const char *name, struct recode_quality resurfacer_quality, Recode_init resurfacer_init_routine, Recode_transform resurfacer_transform_routine, struct recode_quality unsurfacer_quality, Recode_init unsurfacer_init_routine, Recode_transform unsurfacer_transform_routine) { } #endif /*---------------------------------------------------------------------------. | Declare a charset available through `libiconv', given the NAME of this | | charset (which might already exist as an alias). Make two single steps in | | and out of it. | `---------------------------------------------------------------------------*/ static bool internal_iconv (RECODE_SUBTASK subtask) { SET_SUBTASK_ERROR (RECODE_USER_ERROR, subtask); SUBTASK_RETURN (subtask); } bool declare_libiconv (RECODE_OUTER outer, const char *name) { RECODE_ALIAS alias; RECODE_SINGLE single; if (alias = find_alias (outer, name, ALIAS_FIND_AS_EITHER), !alias) if (alias = find_alias (outer, name, SYMBOL_CREATE_CHARSET), !alias) return false; assert(alias->symbol->type == RECODE_CHARSET); if (single = new_single_step (outer), !single) return false; single->before = alias->symbol; single->after = outer->libiconv_pivot; single->quality = outer->quality_variable_to_variable; single->init_routine = NULL; single->transform_routine = internal_iconv; if (single = new_single_step (outer), !single) return false; single->before = outer->libiconv_pivot; single->after = alias->symbol; single->quality = outer->quality_variable_to_variable; single->init_routine = NULL; single->transform_routine = internal_iconv; return true; } #if 0 /*------------------------------------------------. | Save explode data within the symbol structure. | `------------------------------------------------*/ bool register_explode_data PARAMS ((RECODE_OUTER, const char *, const unsigned short *)); bool register_explode_data (RECODE_OUTER outer, const char *name, const unsigned short *data) { RECODE_SYMBOL symbol; symbol = find_alias (outer, name, SYMBOL_CREATE_CHARSET); if (!symbol) return false; assert(symbol->type = RECODE_CHARSET); symbol->data_type = RECODE_EXPLODE_DATA; /* The cast is a way to silently discard the const. */ symbol->data = (void *) data; return true; } #endif /*--------------------------------------------------------------------------. | Associate an explode format DATA structure with charset NAME_COMBINED, an | | 8-bit charset. A NULL value for NAME_EXPLODED implies UCS-2. Otherwise, | | NAME_EXPLODED should be the name of a 8-bit based charset. | `--------------------------------------------------------------------------*/ bool declare_explode_data (RECODE_OUTER outer, const unsigned short *data, const char *name_combined, const char *name_exploded) { RECODE_ALIAS alias; RECODE_SYMBOL charset_combined; RECODE_SYMBOL charset_exploded; RECODE_SINGLE single; if (alias = find_alias (outer, name_combined, SYMBOL_CREATE_CHARSET), !alias) return false; charset_combined = alias->symbol; assert(charset_combined->type == RECODE_CHARSET); if (name_exploded) { if (alias = find_alias (outer, name_exploded, SYMBOL_CREATE_CHARSET), !alias) return false; charset_exploded = alias->symbol; assert(charset_exploded->type == RECODE_CHARSET); } else { charset_combined->data_type = RECODE_EXPLODE_DATA; charset_combined->data = (void *) data; charset_exploded = outer->ucs2_charset; } single = new_single_step (outer); if (!single) return false; single->before = charset_combined; single->after = charset_exploded; single->quality = outer->quality_byte_to_variable; single->initial_step_table = (void *) data; single->init_routine = init_explode; single->transform_routine = name_exploded ? explode_byte_byte : explode_byte_ucs2; single = new_single_step (outer); if (!single) return false; single->before = charset_exploded; single->after = charset_combined; single->quality = outer->quality_variable_to_byte; single->initial_step_table = (void *) data; single->init_routine = init_combine; single->transform_routine = name_exploded ? combine_byte_byte : combine_ucs2_byte; return true; } /*-------------------------------------------------------------------. | Associate an UCS-2 strip format DATA structure with charset NAME. | `-------------------------------------------------------------------*/ bool declare_strip_data (RECODE_OUTER outer, struct strip_data *data, const char *name) { RECODE_ALIAS alias; RECODE_SYMBOL charset; RECODE_SINGLE single; if (alias = find_alias (outer, name, SYMBOL_CREATE_CHARSET), !alias) return false; charset = alias->symbol; assert(charset->type == RECODE_CHARSET); charset->data_type = RECODE_STRIP_DATA; charset->data = data; single = new_single_step (outer); if (!single) return false; single->before = charset; single->after = outer->ucs2_charset; single->quality = outer->quality_byte_to_ucs2; single->transform_routine = transform_byte_to_ucs2; single = new_single_step (outer); if (!single) return false; single->before = outer->ucs2_charset; single->after = charset; single->quality = outer->quality_ucs2_to_byte; single->init_routine = init_ucs2_to_byte; single->transform_routine = transform_ucs2_to_byte; return true; } /*---------------------------------------------------------------. | For a given SINGLE step, roughly establish a conversion cost. | `---------------------------------------------------------------*/ static void estimate_single_cost (RECODE_OUTER outer, RECODE_SINGLE single) { int cost; /* Ensure a small average cost for each single step, yet much trying to avoid single steps prone to loosing information. */ cost = single->quality.reversible ? 10 : 200; /* Use a few heuristics based on the byte size of both charsets. */ switch (single->quality.in_size) { case RECODE_1: /* The fastest is to get one character per read byte. */ cost += 15; break; case RECODE_2: /* Reading two require a routine call and swapping considerations. */ cost += 25; break; case RECODE_4: /* Reading four is more work than reading two. */ cost += 30; break; case RECODE_N: /* Analysing varysizes is surely much harder than producing them. */ cost += 60; } switch (single->quality.out_size) { case RECODE_1: /* Information might be more often lost when not going through UCS. */ cost += 20; break; case RECODE_2: /* This is our best bet while writing. */ cost += 10; break; case RECODE_4: /* Writing four is more work than writing two. */ cost += 15; break; case RECODE_N: /* Writing varysizes requires loops and such. */ cost += 35; break; } /* Consider speed for fine tuning the cost. */ if (single->quality.slower) cost += 3; else if (single->quality.faster) cost -= 2; /* Write the price on the ticket. */ single->conversion_cost = cost; return; } /*------------------------------------------------------------------------. | Initialize all collected single steps. If STRICT_MAPPING is true, many | | recodings loose their reversibility. | `------------------------------------------------------------------------*/ #include "decsteps.h" bool module_libiconv PARAMS ((struct recode_outer *)); void delmodule_libiconv PARAMS ((struct recode_outer *)); static bool register_all_modules (RECODE_OUTER outer) { RECODE_ALIAS alias; RECODE_SINGLE single; unsigned counter; unsigned char *table; if (!ALLOC (table, 256, unsigned char)) return false; for (counter = 0; counter < 256; counter++) table[counter] = counter; outer->one_to_same = table; prepare_for_aliases (outer); outer->single_list = NULL; outer->number_of_singles = 0; if (alias = find_alias (outer, "data", SYMBOL_CREATE_CHARSET), !alias) return false; outer->data_symbol = alias->symbol; if (alias = find_alias (outer, "tree", SYMBOL_CREATE_CHARSET), !alias) return false; outer->tree_symbol = alias->symbol; if (alias = find_alias (outer, "ISO-10646-UCS-2", SYMBOL_CREATE_CHARSET), !alias) return false; assert(alias->symbol->type == RECODE_CHARSET); outer->ucs2_charset = alias->symbol; if (alias = find_alias (outer, ":libiconv:", SYMBOL_CREATE_CHARSET), !alias) return false; assert(alias->symbol->type == RECODE_CHARSET); outer->libiconv_pivot = alias->symbol; if (!declare_alias (outer, ":", ":libiconv:")) return false; if (alias = find_alias (outer, "CR-LF", SYMBOL_CREATE_CHARSET), !alias) return false; alias->symbol->type = RECODE_DATA_SURFACE; outer->crlf_surface = alias->symbol; if (alias = find_alias (outer, "CR", SYMBOL_CREATE_CHARSET), !alias) return false; alias->symbol->type = RECODE_DATA_SURFACE; outer->cr_surface = alias->symbol; #if 0 /* `.' might be later used for asking recode to guess the charset. */ if (!declare_alias (outer, ".", "RFC 1345")) return false; #endif if (!declare_alias (outer, "ASCII", "ANSI_X3.4-1968")) return false; if (!declare_alias (outer, "BS", "ASCII-BS")) return false; if (!declare_alias (outer, "Latin-1", "ISO-8859-1")) return false; /* Needed for compatibility with recode version 3.2. */ if (!declare_alias (outer, "lat1", "Latin-1")) return false; #include "inisteps.h" /* Force this one last: it does not segregate between charsets and aliases, confusing some other initialisations that would come after it. */ if (!make_argmatch_arrays (outer)) return false; if (!module_libiconv (outer)) return false; for (single = outer->single_list; single; single = single->next) estimate_single_cost (outer, single); return true; } void static unregister_all_modules (RECODE_OUTER outer) { #include "tersteps.h" } /* Library interface. */ /* See the recode manual for a more detailed description of the library interface. */ /*-------------------------. | GLOBAL level functions. | `-------------------------*/ RECODE_OUTER recode_new_outer (bool auto_abort) { RECODE_OUTER outer = malloc (sizeof (struct recode_outer)); if (!outer) { /* Diagnostic? FIXME! */ if (auto_abort) exit (1); return NULL; } memset (outer, 0, sizeof (struct recode_outer)); outer->auto_abort = auto_abort; if (!register_all_modules (outer) || !make_argmatch_arrays (outer)) { recode_delete_outer (outer); return NULL; } outer->quality_byte_reversible.in_size = RECODE_1; outer->quality_byte_reversible.out_size = RECODE_1; outer->quality_byte_reversible.reversible = true; outer->quality_byte_reversible.faster = true; outer->quality_byte_to_byte.in_size = RECODE_1; outer->quality_byte_to_byte.out_size = RECODE_1; outer->quality_byte_to_byte.faster = true; outer->quality_byte_to_ucs2.in_size = RECODE_1; outer->quality_byte_to_ucs2.out_size = RECODE_2; outer->quality_byte_to_variable.in_size = RECODE_1; outer->quality_byte_to_variable.out_size = RECODE_N; outer->quality_ucs2_to_byte.in_size = RECODE_2; outer->quality_ucs2_to_byte.out_size = RECODE_1; outer->quality_ucs2_to_variable.in_size = RECODE_2; outer->quality_ucs2_to_variable.out_size = RECODE_N; outer->quality_variable_to_byte.in_size = RECODE_N; outer->quality_variable_to_byte.out_size = RECODE_1; outer->quality_variable_to_byte.slower = true; outer->quality_variable_to_ucs2.in_size = RECODE_N; outer->quality_variable_to_ucs2.out_size = RECODE_2; outer->quality_variable_to_ucs2.slower = true; outer->quality_variable_to_variable.in_size = RECODE_N; outer->quality_variable_to_variable.out_size = RECODE_N; outer->quality_variable_to_variable.slower = true; return outer; } bool recode_delete_outer (RECODE_OUTER outer) { unregister_all_modules (outer); /* FIXME: Pawel Krawczyk reports that calling new_outer ... delete_outer 20000 times in a program has the effect of consuming all virtual memory. So there might be memory leaks should to track down and resolve. */ while (outer->number_of_symbols > 0) { RECODE_SYMBOL symbol = outer->symbol_list; outer->symbol_list = symbol->next; outer->number_of_symbols--; free (symbol); } while (outer->number_of_singles > 0) { RECODE_SINGLE single = outer->single_list; outer->single_list = single->next; outer->number_of_singles--; free (single); } if (outer->pair_restriction) free (outer->pair_restriction); if (outer->alias_table) hash_free (outer->alias_table); if (outer->argmatch_charset_array) free (outer->argmatch_charset_array); if (outer->one_to_same) free ((void *) outer->one_to_same); free (outer); return true; } recode-3.6/src/quotearg.c0100644000000000000000000002344607142144413014115 0ustar rootroot/* quotearg.c - quote arguments for output Copyright (C) 1998, 1999 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by Paul Eggert */ /* FIXME: Multibyte characters are not supported yet. */ #if HAVE_CONFIG_H # include #endif #include #include #include #include #if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) # define ISASCII(c) 1 #else # define ISASCII(c) isascii (c) #endif #ifdef isgraph # define ISGRAPH(c) (ISASCII (c) && isgraph (c)) #else # define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c)) #endif #if ENABLE_NLS # include # define _(text) gettext (text) #else # define _(text) text #endif #if HAVE_LIMITS_H # include #endif #ifndef CHAR_BIT # define CHAR_BIT 8 #endif #ifndef UCHAR_MAX # define UCHAR_MAX ((unsigned char) -1) #endif #if HAVE_STDLIB_H # include #endif #if HAVE_STRING_H # include #endif #define INT_BITS (sizeof (int) * CHAR_BIT) struct quoting_options { /* Basic quoting style. */ enum quoting_style style; /* Quote the chararacters indicated by this bit vector even if the quoting style would not normally require them to be quoted. */ int quote_these_too[((UCHAR_MAX + 1) / INT_BITS + ((UCHAR_MAX + 1) % INT_BITS != 0))]; }; /* Names of quoting styles. */ char const *const quoting_style_args[] = { "literal", "shell", "shell-always", "c", "escape", "locale", 0 }; /* Correspondances to quoting style names. */ enum quoting_style const quoting_style_vals[] = { literal_quoting_style, shell_quoting_style, shell_always_quoting_style, c_quoting_style, escape_quoting_style, locale_quoting_style }; /* The default quoting options. */ static struct quoting_options default_quoting_options; /* Allocate a new set of quoting options, with contents initially identical to O if O is not null, or to the default if O is null. It is the caller's responsibility to free the result. */ struct quoting_options * clone_quoting_options (struct quoting_options *o) { struct quoting_options *p = (struct quoting_options *) xmalloc (sizeof (struct quoting_options)); *p = *(o ? o : &default_quoting_options); return p; } /* Get the value of O's quoting style. If O is null, use the default. */ enum quoting_style get_quoting_style (struct quoting_options *o) { return (o ? o : &default_quoting_options)->style; } /* In O (or in the default if O is null), set the value of the quoting style to S. */ void set_quoting_style (struct quoting_options *o, enum quoting_style s) { (o ? o : &default_quoting_options)->style = s; } /* In O (or in the default if O is null), set the value of the quoting options for character C to I. Return the old value. Currently, the only values defined for I are 0 (the default) and 1 (which means to quote the character even if it would not otherwise be quoted). */ int set_char_quoting (struct quoting_options *o, char c, int i) { unsigned char uc = c; int *p = (o ? o : &default_quoting_options)->quote_these_too + uc / INT_BITS; int shift = uc % INT_BITS; int r = (*p >> shift) & 1; *p ^= ((i & 1) ^ r) << shift; return r; } /* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of argument ARG (of size ARGSIZE), using O to control quoting. If O is null, use the default. Terminate the output with a null character, and return the written size of the output, not counting the terminating null. If BUFFERSIZE is too small to store the output string, return the value that would have been returned had BUFFERSIZE been large enough. If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */ size_t quotearg_buffer (char *buffer, size_t buffersize, char const *arg, size_t argsize, struct quoting_options const *o) { unsigned char c; size_t i; size_t len = 0; char const *quote_string; size_t quote_string_len; struct quoting_options const *p = o ? o : &default_quoting_options; enum quoting_style quoting_style = p->style; #define STORE(c) \ do \ { \ if (len < buffersize) \ buffer[len] = (c); \ len++; \ } \ while (0) switch (quoting_style) { case shell_quoting_style: if (! (argsize == (size_t) -1 ? arg[0] == '\0' : argsize == 0)) { switch (arg[0]) { case '#': case '~': break; default: for (i = 0; ; i++) { if (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize) goto done; c = arg[i]; switch (c) { case '\t': case '\n': case ' ': case '!': /* special in csh */ case '"': case '$': case '&': case '\'': case '(': case ')': case '*': case ';': case '<': case '>': case '?': case '[': case '\\': case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */ case '`': case '|': goto needs_quoting; } if (p->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS))) goto needs_quoting; STORE (c); } needs_quoting:; len = 0; break; } } /* Fall through. */ case shell_always_quoting_style: STORE ('\''); quote_string = "'"; quote_string_len = 1; break; case c_quoting_style: STORE ('"'); quote_string = "\""; quote_string_len = 1; break; case locale_quoting_style: for (quote_string = _("`"); *quote_string; quote_string++) STORE (*quote_string); quote_string = _("'"); quote_string_len = strlen (quote_string); break; default: quote_string = 0; quote_string_len = 0; break; } for (i = 0; ! (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize); i++) { c = arg[i]; switch (quoting_style) { case literal_quoting_style: break; case shell_quoting_style: case shell_always_quoting_style: if (c == '\'') { STORE ('\''); STORE ('\\'); STORE ('\''); } break; case c_quoting_style: case escape_quoting_style: case locale_quoting_style: switch (c) { case '?': /* Do not generate trigraphs. */ case '\\': goto store_escape; /* Not all C compilers know what \a means. */ case 7 : c = 'a'; goto store_escape; case '\b': c = 'b'; goto store_escape; case '\f': c = 'f'; goto store_escape; case '\n': c = 'n'; goto store_escape; case '\r': c = 'r'; goto store_escape; case '\t': c = 't'; goto store_escape; case '\v': c = 'v'; goto store_escape; case ' ': break; default: if (quote_string_len && strncmp (arg + i, quote_string, quote_string_len) == 0) goto store_escape; if (!ISGRAPH (c)) { STORE ('\\'); STORE ('0' + (c >> 6)); STORE ('0' + ((c >> 3) & 7)); c = '0' + (c & 7); goto store_c; } break; } if (! (p->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS)))) goto store_c; store_escape: STORE ('\\'); } store_c: STORE (c); } if (quote_string) for (; *quote_string; quote_string++) STORE (*quote_string); done: if (len < buffersize) buffer[len] = '\0'; return len; } /* Use storage slot N to return a quoted version of the string ARG. OPTIONS specifies the quoting options. The returned value points to static storage that can be reused by the next call to this function with the same value of N. N must be nonnegative. N is deliberately declared with type `int' to allow for future extensions (using negative values). */ static char * quotearg_n_options (int n, char const *arg, struct quoting_options const *options) { static unsigned int nslots; static struct slotvec { size_t size; char *val; } *slotvec; if (nslots <= n) { int n1 = n + 1; size_t s = n1 * sizeof (struct slotvec); if (! (0 < n1 && n1 == s / sizeof (struct slotvec))) abort (); slotvec = (struct slotvec *) xrealloc (slotvec, s); memset (slotvec + nslots, 0, (n1 - nslots) * sizeof (struct slotvec)); nslots = n; } { size_t size = slotvec[n].size; char *val = slotvec[n].val; size_t qsize = quotearg_buffer (val, size, arg, (size_t) -1, options); if (size <= qsize) { slotvec[n].size = size = qsize + 1; slotvec[n].val = val = xrealloc (val, size); quotearg_buffer (val, size, arg, (size_t) -1, options); } return val; } } char * quotearg_n (unsigned int n, char const *arg) { return quotearg_n_options (n, arg, &default_quoting_options); } char * quotearg (char const *arg) { return quotearg_n (0, arg); } char * quotearg_n_style (unsigned int n, enum quoting_style s, char const *arg) { struct quoting_options o; o.style = s; memset (o.quote_these_too, 0, sizeof o.quote_these_too); return quotearg_n_options (n, arg, &o); } char * quotearg_style (enum quoting_style s, char const *arg) { return quotearg_n_style (0, s, arg); } char * quotearg_char (char const *arg, char ch) { struct quoting_options options; options = default_quoting_options; set_char_quoting (&options, ch, 1); return quotearg_n_options (0, arg, &options); } char * quotearg_colon (char const *arg) { return quotearg_char (arg, ':'); } recode-3.6/src/recode.c0100644000000000000000000004315207127433377013540 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /* Global declarations and definitions. */ #include #if HAVE_UNISTD_H # include #endif #if WITH_DMALLOC # include #endif #include "hash.h" extern const char *program_name; /* Error handling. */ #if HAVE_VPRINTF || HAVE_DOPRNT # if __STDC__ # include # define VA_START(args, lastarg) va_start(args, lastarg) # else # include # define VA_START(args, lastarg) va_start(args) # endif #else # define va_alist a1, a2, a3, a4, a5, a6, a7, a8 # define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8; #endif void #if defined(VA_START) && __STDC__ recode_error (RECODE_OUTER outer, const char *format, ...) #else recode_error (outer, format, va_alist) RECODE_OUTER outer; const char *format; va_dcl #endif { #ifdef VA_START va_list args; VA_START (args, format); # if HAVE_VPRINTF vfprintf (stderr, format, args); # else _doprnt (format, args, stderr); # endif va_end (args); #else fprintf (stderr, format, a1, a2, a3, a4, a5, a6, a7, a8); #endif putc ('\n', stderr); fflush (stderr); } void #if defined(VA_START) && __STDC__ recode_perror (RECODE_OUTER outer, const char *format, ...) #else recode_perror (outer, format, va_alist) RECODE_OUTER outer; const char *format; va_dcl #endif { int saved_errno = errno; #ifdef VA_START va_list args; VA_START (args, format); # if HAVE_VPRINTF vfprintf (stderr, format, args); # else _doprnt (format, args, stderr); # endif va_end (args); #else fprintf (stderr, format, a1, a2, a3, a4, a5, a6, a7, a8); #endif fprintf (stderr, ": %s\n", strerror (saved_errno)); fflush (stderr); } void * recode_malloc (RECODE_OUTER outer, size_t size) { void *result; result = malloc (size); if (!result) recode_error (outer, _("Virtual memory exhausted")); return result; } void * recode_realloc (RECODE_OUTER outer, void *pointer, size_t size) { void *result; result = realloc (pointer, size); if (!result) recode_error (outer, _("Virtual memory exhausted")); return result; } /* Single step handling. */ /*------------------------------------------------------------------. | Create a one to one table which is the inverse of the given one. | `------------------------------------------------------------------*/ unsigned char * invert_table (RECODE_OUTER outer, const unsigned char *table) { unsigned char flag[256]; unsigned char *result; bool table_error; unsigned counter; if (!ALLOC (result, 256, unsigned char)) return NULL; memset (flag, 0, 256); table_error = false; for (counter = 0; counter < 256; counter++) { if (flag[table[counter]]) { recode_error (outer, _("Codes %3d and %3d both recode to %3d"), result[table[counter]], counter, table[counter]); table_error = true; } else { result[table[counter]] = counter; flag[table[counter]] = 1; } } if (table_error) { for (counter = 0; counter < 256; counter++) if (!flag[counter]) recode_error (outer, _("No character recodes to %3d"), counter); recode_error (outer, _("Cannot invert given one-to-one table")); } return result; } /*---------------------------------------------------------------------------. | Complete a STEP descriptor by a constructed recoding array for 256 chars | | and the adequate recoding routine. Use a KNOWN_PAIRS array of | | NUMBER_OF_PAIRS constraints. If FIRST_HALF_IMPLIED is not zero, default | | the unconstrained characters of the first 128 to the identity mapping. If | | REVERSE is not zero, use right_table instead of left_table to complete the | | table, yet new pairs are created only when fallback is reversibility. | `---------------------------------------------------------------------------*/ bool complete_pairs (RECODE_OUTER outer, RECODE_STEP step, const struct recode_known_pair *known_pairs, unsigned number_of_pairs, bool first_half_implied, bool reverse) { unsigned char left_flag[256]; unsigned char right_flag[256]; unsigned char left_table[256]; unsigned char right_table[256]; bool table_error; unsigned char *flag; unsigned char *table; const char **table2; char *cursor; unsigned char left; unsigned char right; unsigned char search; unsigned counter; unsigned used; /* Init tables with zeroes. */ memset (left_flag, 0, 256); memset (right_flag, 0, 256); table_error = false; /* Establish known data. */ for (counter = 0; counter < number_of_pairs; counter++) { left = known_pairs[counter].left; right = known_pairs[counter].right; /* Set one known correspondence. */ if (left_flag[left]) { if (!table_error) { recode_error (outer, _("Following diagnostics for `%s' to `%s'"), step->before->name, step->after->name); table_error = true; } recode_error (outer, _("Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>"), counter, left, right, left, left_table[left]); } else if (right_flag[right]) { if (!table_error) { recode_error (outer, _("Following diagnostics for `%s' to `%s'"), step->before->name, step->after->name); table_error = true; } recode_error (outer, _("Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>"), counter, left, right, right_table[right], right); } else { left_flag[left] = 1; left_table[left] = right; right_flag[right] = 1; right_table[right] = left; } } /* Set all the implied correspondances. */ if (first_half_implied) for (counter = 0; counter < 128; counter++) if (!left_flag[counter] && !right_flag[counter]) { left_flag[counter] = 1; left_table[counter] = counter; right_flag[counter] = 1; right_table[counter] = counter; } if (step->fallback_routine == reversibility) { /* If the recoding is not strict, compute a reversible one to one table. */ if (table_error) recode_error (outer, _("Cannot complete table from set of known pairs")); /* Close the table with small permutation cycles. */ for (counter = 0; counter < 256; counter++) if (!right_flag[counter]) { search = counter; while (left_flag[search]) search = left_table[search]; left_flag[search] = 1; left_table[search] = counter; right_flag[counter] = 1; right_table[counter] = search; } /* Save a copy of the proper table. */ step->transform_routine = transform_byte_to_byte; if (!ALLOC (table, 256, unsigned char)) return false; memcpy (table, reverse ? right_table : left_table, 256); step->step_type = RECODE_BYTE_TO_BYTE; step->step_table = table; /* Upgrade step quality to reversible. */ step->quality = outer->quality_byte_reversible; } else { /* If the recoding is strict, prepare a one to many table, each entry being NULL or a string of a single character. */ /* Select the proper table. */ if (reverse) { flag = right_flag; table = right_table; } else { flag = left_flag; table = left_table; } /* Allocate everything in one blow, so it will be freed likewise. */ used = 0; for (counter = 0; counter < 256; counter++) if (flag[counter]) used++; if (!ALLOC_SIZE (table2, 256 * sizeof (char *) + 2 * used, const char *)) return false; cursor = (char *) (table2 + 256); /* Construct the table and the strings in parallel. */ for (counter = 0; counter < 256; counter++) if (flag[counter]) { table2[counter] = cursor; *cursor++ = table[counter]; *cursor++ = NUL; } else table2[counter] = NULL; /* Save a one to many recoding table. */ step->transform_routine = transform_byte_to_variable; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table2; } return true; } /* Special handling for UCS-2 tables. */ /*-------------------------------------------------------------------------. | Recode a file from one byte characters to double byte UCS-2 characters. | `-------------------------------------------------------------------------*/ bool transform_byte_to_ucs2 (RECODE_SUBTASK subtask) { int input_char; /* current character */ int output_value; /* value being output */ if (input_char = get_byte (subtask), input_char != EOF) { if (subtask->task->byte_order_mark) put_ucs2 (BYTE_ORDER_MARK, subtask); while (input_char != EOF) { output_value = code_to_ucs2 (subtask->step->before, input_char); if (output_value < 0) { RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); put_ucs2 (REPLACEMENT_CHARACTER, subtask); } else put_ucs2 (output_value, subtask); input_char = get_byte (subtask); } } SUBTASK_RETURN (subtask); } /*-------------------------------------------------------------------------. | Recode a file from double byte UCS-2 characters to one byte characters. | `-------------------------------------------------------------------------*/ static unsigned ucs2_to_byte_hash (const void *void_data, unsigned table_size) { const struct ucs2_to_byte *data = void_data; return data->code % table_size; } static bool ucs2_to_byte_compare (const void *void_first, const void *void_second) { const struct ucs2_to_byte *first = void_first; const struct ucs2_to_byte *second = void_second; return first->code == second->code; } bool init_ucs2_to_byte (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; Hash_table *table; struct ucs2_to_byte *data; unsigned counter; if (before_options || after_options) return false; table = hash_initialize (0, NULL, ucs2_to_byte_hash, ucs2_to_byte_compare, NULL); if (!table) return false; if (!ALLOC (data, 256, struct ucs2_to_byte)) { hash_free (table); return false; } for (counter = 0; counter < 256; counter++) { data[counter].code = code_to_ucs2 (step->after, counter); data[counter].byte = counter; if (!hash_insert (table, data + counter)) { hash_free (table); free (data); return false; } } step->local = table; return true; } bool transform_ucs2_to_byte (RECODE_SUBTASK subtask) { Hash_table *table = subtask->step->local; struct ucs2_to_byte lookup; struct ucs2_to_byte *entry; unsigned input_value; /* current UCS-2 character */ while (get_ucs2 (&input_value, subtask)) { lookup.code = input_value; entry = hash_lookup (table, &lookup); if (entry) put_byte (entry->byte, subtask); else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); } SUBTASK_RETURN (subtask); } /* Table editing on stdout. */ /*------------------------------------------------------------------------. | Produce an include file representing the recoding, on standard output. | `------------------------------------------------------------------------*/ bool recode_format_table (RECODE_REQUEST request, enum recode_programming_language header_language, const char *header_name) { RECODE_OUTER outer = request->outer; RECODE_CONST_STEP step; /* step being analysed */ unsigned column; /* column counter */ char *name; /* constructed name */ char *cursor; /* cursor in constructed name */ const char *cursor2; /* cursor to study strings */ unsigned counter; /* general purpose counter */ bool underline; /* previous character was underline */ const char *start_comment; /* string starting a comment block */ const char *wrap_comment; /* string separating two comment lines */ const char *end_comment; /* string ending a comment block */ if (request->sequence_length == 0) { recode_error (outer, _("Identity recoding, not worth a table")); return false; } if (request->sequence_length > 1 || request->sequence_array[0].step_type == RECODE_NO_STEP_TABLE) { recode_error (outer, _("Recoding is too complex for a mere table")); return false; } switch (header_language) { case RECODE_LANGUAGE_C: start_comment = "/* "; wrap_comment = "\n "; end_comment = " */\n"; break; case RECODE_LANGUAGE_PERL: start_comment = "# "; wrap_comment = "\n# "; end_comment = "\n"; break; default: /* So lint is happy! */ start_comment = NULL; wrap_comment = NULL; end_comment = NULL; } /* This function is called only when the recoding sequence contains a single step, so it is safe to use request->sequence_array[0] for the step. */ step = request->sequence_array; /* Print the header of the header file. */ printf (_("%sConversion table generated mechanically by Free `%s' %s"), start_comment, PACKAGE, VERSION); printf (_("%sfor sequence %s.%s"), wrap_comment, edit_sequence (request, 1), end_comment); printf ("\n"); /* Construct the name of the resulting table. */ if (header_name) { if (!ALLOC (name, strlen (header_name) + 1, char)) return false; strcpy (name, header_name); } else name = edit_sequence (request, 0); /* Ensure the table name contains only valid characters for a C identifier. */ underline = false; cursor = name; for (cursor2 = name; *cursor2; cursor2++) if ((*cursor2 >= 'a' && *cursor2 <= 'z') || (*cursor2 >= 'A' && *cursor2 <= 'Z') || (*cursor2 >= '0' && *cursor2 <= '9')) { if (underline) { *cursor++ = '_'; underline =false; } *cursor++ = *cursor2; } else if (cursor != name) underline = true; *cursor = NUL; /* Produce the recoding table in the correct format. */ if (step->step_type == RECODE_BYTE_TO_BYTE) { const unsigned char *table = step->step_table; /* Produce a one to one recoding table. */ switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf ("unsigned char const %s[256] =\n", name); printf (" {\n"); break; case RECODE_LANGUAGE_PERL: printf ("@%s =\n", name); printf (" (\n"); break; } for (counter = 0; counter < 256; counter++) { printf ("%s%3d,", counter % 8 == 0 ? " " : " ", table[counter]); if (counter % 8 == 7) printf ("\t%s%3d - %3d%s", start_comment, counter - 7, counter, end_comment); } switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf (" };\n"); break; case RECODE_LANGUAGE_PERL: printf (" );\n"); break; } } else if (step->step_type == RECODE_BYTE_TO_STRING) { const char *const *table = step->step_table; /* Produce a one to many recoding table. */ switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf ("const char *%s[256] =\n", name); printf (" {\n"); break; case RECODE_LANGUAGE_PERL: printf ("@%s =\n", name); printf (" (\n"); break; } for (counter = 0; counter < 256; counter++) { printf (" "); column = 4; if (table[counter]) { printf ("\""); column++; for (cursor2 = table[counter]; *cursor2; cursor2++) switch (*cursor2) { case ' ': printf (" "); column++; break; case '\b': printf ("\\b"); column += 2; break; case '\t': printf ("\\t"); column += 2; break; case '\n': printf ("\\n"); column += 2; break; case '"': printf ("\\\""); column += 2; break; case '\\': printf ("\\\\"); column += 2; break; case '$': if (header_language == RECODE_LANGUAGE_PERL) { printf ("\\$"); column += 2; break; } default: if (isprint (*cursor2)) { printf ("%c", *cursor2); column++; } else { printf ("\\%.3o", *(const unsigned char *) cursor2); column += 4; } } printf ("\""); column++; } else switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf ("0"); column++; break; case RECODE_LANGUAGE_PERL: printf ("''"); column += 2; break; } printf (","); column++; while (column < 32) { printf ("\t"); column += 8 - column % 8; } printf ("%s%3d%s", start_comment, counter, end_comment); } switch (header_language) { case RECODE_NO_LANGUAGE: assert (0); case RECODE_LANGUAGE_C: printf (" };\n"); break; case RECODE_LANGUAGE_PERL: printf (" );\n"); break; } } else { recode_error (outer, _("No table to print")); free (name); return false; } free (name); return true; } recode-3.6/src/request.c0100644000000000000000000011124007126443225013751 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /* Quality handling. */ /*---------------------------------------. | Return a string describing a quality. | `---------------------------------------*/ static const char * quality_to_string (struct recode_quality quality) { static char buffer[100]; if (quality.reversible) return _("reversible"); sprintf (buffer, _("%s to %s"), (quality.in_size == RECODE_1 ? _("byte") : quality.in_size == RECODE_2 ? _("ucs2") : _("variable")), (quality.out_size == RECODE_1 ? _("byte") : quality.out_size == RECODE_2 ? _("ucs2") : _("variable"))); return buffer; } /*-----------------------------------------------------------------------. | Adjust the FIRST quality of a step for the result of merging this step | | with another succeeding one, given its SECOND quality. | `-----------------------------------------------------------------------*/ static void merge_qualities (struct recode_quality *first, const struct recode_quality second) { first->out_size = second.out_size; first->reversible = first->reversible && second.reversible; first->slower = first->slower || second.slower; first->faster = first->faster && second.faster; } /* Editing out sequences. */ /*---------------------------------------------. | Add CHARACTER to the generated work string. | `---------------------------------------------*/ static void add_work_character (RECODE_REQUEST request, int character) { if (request->work_string_length + 1 >= request->work_string_allocated) { char *new_work_string; request->work_string_allocated += 100; new_work_string = (char *) realloc (request->work_string, request->work_string_allocated); if (new_work_string) { request->work_string = new_work_string; request->work_string[request->work_string_length++] = character; } /* else, the diagnostic gets truncated, no need to fuss about it. */ } else request->work_string[request->work_string_length++] = character; } /*----------------------------------. | Add a STRING to the work string. | `----------------------------------*/ static void add_work_string (RECODE_REQUEST request, const char *string) { while (*string) add_work_character (request, *string++); } /*----------------------------------------------------------------------. | Generate a string describing the current sequence and return it. | | Include a description of recoding quality only if EDIT_QUALITY is not | | zero. | `----------------------------------------------------------------------*/ char * edit_sequence (RECODE_REQUEST request, bool edit_quality) { RECODE_OUTER outer = request->outer; request->work_string_length = 0; if (request->sequence_length < 0) add_work_string (request, _("*Unachievable*")); else if (request->sequence_length == 0) add_work_string (request, _("*mere copy*")); else { RECODE_SYMBOL last_charset_printed = NULL; RECODE_STEP step = request->sequence_array; while (step < request->sequence_array + request->sequence_length) { RECODE_STEP unsurfacer_start = step; RECODE_STEP unsurfacer_end; /* Find unsurfacers. */ while (step < request->sequence_array + request->sequence_length && (step->after == outer->data_symbol || step->after == outer->tree_symbol)) step++; unsurfacer_end = step; /* Print BEFORE, sparing it if syntax permits. */ if (step != unsurfacer_start || step == request->sequence_array + request->sequence_length || step->before != last_charset_printed) { if (unsurfacer_start != request->sequence_array) add_work_character (request, ','); if (step < request->sequence_array + request->sequence_length) { last_charset_printed = step->before; add_work_string (request, last_charset_printed->name); #if 0 if (unsurfacer_start == unsurfacer_end && last_charset_printed && last_charset_printed->implied_surfaces) add_work_character (request, '/'); #endif } } /* Print unsurfacers. */ for (step = unsurfacer_end - 1; step >= unsurfacer_start; step--) { add_work_character (request, '/'); add_work_string (request, step->before->name); } step = unsurfacer_end; /* Print AFTER. */ add_work_string (request, ".."); if (step < request->sequence_array + request->sequence_length && step->before != outer->data_symbol && step->before != outer->tree_symbol) { last_charset_printed = step->after; add_work_string (request, last_charset_printed->name); step++; #if 0 if ((step == request->sequence_array + request->sequence_length || (step->before != outer->data_symbol && step->before != outer->tree_symbol)) && last_charset_printed && last_charset_printed->implied_surfaces) add_work_character (request, '/'); #endif } else { last_charset_printed = outer->data_symbol; /* FIXME: why not outer->tree_symbol? */ add_work_string (request, last_charset_printed->name); } /* Print resurfacers. */ while (step < request->sequence_array + request->sequence_length && (step->before == outer->data_symbol || step->before == outer->tree_symbol)) { add_work_character (request, '/'); last_charset_printed = NULL; add_work_string (request, step->after->name); step++; } } if (edit_quality) { struct recode_quality quality = outer->quality_byte_reversible; RECODE_CONST_STEP step2; for (step2 = request->sequence_array; step2 < request->sequence_array + request->sequence_length; step2++) merge_qualities (&quality, step2->quality); add_work_character (request, ' '); add_work_character (request, '('); add_work_string (request, quality_to_string (quality)); add_work_character (request, ')'); } } add_work_character (request, NUL); return request->work_string; } /* Sequence construction and optimisation. */ /*-------------------------------------------------------------------------. | To the end of a given SEQUENCE, add a new recoding step initialised from | | SINGLE. | `-------------------------------------------------------------------------*/ static bool add_to_sequence (RECODE_REQUEST request, RECODE_SINGLE single, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; RECODE_STEP step; if (request->sequence_length == request->sequence_allocated) { if (request->sequence_allocated == 0) request->sequence_allocated = 16; else request->sequence_allocated *= 2; if (!REALLOC (request->sequence_array, request->sequence_allocated, struct recode_step)) { recode_error (outer, _("Virtual memory exhausted!")); return false; } } step = request->sequence_array + request->sequence_length++; step->before = single->before; step->after = single->after; step->step_table = single->initial_step_table; step->step_type = step->step_table ? RECODE_COMBINE_EXPLODE : RECODE_NO_STEP_TABLE; step->transform_routine = single->transform_routine; step->fallback_routine = single->fallback_routine; if (single->init_routine) { if (!(*single->init_routine) (step, request, before_options, after_options)) { recode_error (outer, _("Step initialisation failed")); return false; } } else if (before_options || after_options) { recode_error (outer, _("Step initialisation failed (unprocessed options)")); return false; } return true; } /*----------------------------------------------------------------------. | Find a SEQUENCE of single steps to achieve a conversion from charset | | BEFORE to charset AFTER. Return false only if no sequence could been | | found. Explain what was selected if VERBOSE. | `----------------------------------------------------------------------*/ /* Cost corresponding to an impossible conversion. */ #define UNREACHABLE 30000 static bool find_sequence (RECODE_REQUEST request, RECODE_CONST_SYMBOL before, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_SYMBOL after, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; struct search { RECODE_SINGLE single; /* single step aiming towards after */ int cost; /* cost from here through after */ }; struct search *search_array; /* critical path search tree */ struct search *search; /* item in search_array for charset */ RECODE_SINGLE single; /* cursor in possible single_singles */ int cost; /* cost under consideration */ bool modified; /* if modified since last iteration */ RECODE_CONST_SYMBOL charset; /* charset while reconstructing */ if (!ALLOC (search_array, outer->number_of_symbols, struct search)) return false; /* Search for an economical route, looking our way backward from the after towards the before. */ for (search = search_array; search < search_array + outer->number_of_symbols; search++) { search->single = NULL; search->cost = UNREACHABLE; } search_array[after->ordinal].cost = 0; modified = true; while (modified) { modified = false; for (single = outer->single_list; single; single = single->next) if (!single->before->ignore) { cost = search_array[single->after->ordinal].cost; if (cost != UNREACHABLE) { cost += single->conversion_cost; search = search_array + single->before->ordinal; if (cost < search->cost) { search->single = single; search->cost = cost; modified = true; } } } } if (search_array[before->ordinal].cost == UNREACHABLE) { /* No path has been found. */ free (search_array); return false; } /* Save the retained best path in the sequence array. */ for (charset = before; charset != after; charset = single->after) { single = search_array[charset->ordinal].single; if (!add_to_sequence (request, single, charset == before ? before_options : NULL, single->after == after ? after_options : NULL)) break; } free (search_array); return charset == after; } /*---------------------------------------------------------------------------. | If the step table is usable for step merging, return its type. Otherwise, | | return RECODE_NO_STEP_TABLE. Any non-trivial algorithm for the step | | prevents step merging. | `---------------------------------------------------------------------------*/ static enum recode_step_type table_type (RECODE_CONST_REQUEST request, RECODE_CONST_STEP step) { /* When producing source headers, we do not care about algorithms. */ if (!request->make_header_flag) switch (step->step_type) { case RECODE_BYTE_TO_BYTE: if (step->transform_routine != transform_byte_to_byte) return RECODE_NO_STEP_TABLE; break; case RECODE_BYTE_TO_STRING: if (step->transform_routine != transform_byte_to_variable) return RECODE_NO_STEP_TABLE; break; default: return RECODE_NO_STEP_TABLE; } return step->step_type; } /*---------------------------------------------------------------. | Order two struct item's lexicographically of their key value. | `---------------------------------------------------------------*/ struct item { unsigned short code; /* UCS-2 value */ unsigned char byte; /* charset code [0..255] */ }; static int compare_struct_item (const void *void_first, const void *void_second) { return (((const struct item *) void_first)->code - ((const struct item *) void_second)->code); } /*------------------------------------------------------------------------. | Complete the initialisation of a double step which just has been merged | | into a single STEP. Establish known pairings by comparing UCS-2 values | | between the before and after charsets. Create new pairs only when | | fallback is reversibility. | `------------------------------------------------------------------------*/ static bool complete_double_ucs2_step (RECODE_OUTER outer, RECODE_STEP step) { struct side { RECODE_SYMBOL charset; /* charset */ struct item item[256]; /* array of binding items */ size_t number_of_items; /* number of binding items in array */ }; const struct strip_data *data; /* UCS-2 data table */ struct side side_array[2]; /* information for each side */ struct side *side; /* cursor into side_array */ bool reversed; /* if both sides reversed */ const recode_ucs2 *pool; /* pool for fetching UCS-2 characters */ unsigned offset; /* cursor in double table strings */ unsigned byte; /* character code */ unsigned row_counter; /* double table row counter */ unsigned position_counter; /* double table column counter */ struct item *item_cursor; /* cursor in arrays of binding items */ struct item *left; /* left binding items cursor */ struct item *left_limit; /* limit value for left */ struct item *right; /* right binding items cursor */ struct item *right_limit; /* limit value for right */ struct recode_known_pair pair_array[256]; /* obtained pairings */ struct recode_known_pair *pair_cursor; /* cursor in array of pairings */ /* For ensuring reversibility, known pairs should be computed the same way regardless of the direction of recoding. This canonalisation is ensured through the charset values, which are increasing along the initialisation order. This should also reflect the charset order in rfc1345.txt. */ if (step->before < step->after) { side_array[0].charset = step->before; side_array[1].charset = step->after; reversed = false; } else { side_array[0].charset = step->after; side_array[1].charset = step->before; reversed = true; } for (side = side_array; side < side_array + 2; side++) { /* Construct the array of binding items for the charset. */ data = side->charset->data; pool = data->pool; item_cursor = side->item; byte = 0; for (row_counter = 0; row_counter < (256 / STRIP_SIZE); row_counter++) if (offset = data->offset[row_counter], offset) for (position_counter = 0; position_counter < STRIP_SIZE; position_counter++) { unsigned code = pool[offset + position_counter]; if (code != MASK (16)) { /* Establish a new binding item. */ item_cursor->byte = byte; item_cursor->code = code; item_cursor++; } byte++; } else byte += STRIP_SIZE; side->number_of_items = item_cursor - side->item; } /* Sort both arrays of binding items into lexicographical order. The taken time, which is O(n.log(n)), is gained back when the further pairing is completed in a time which is linear instead of quadratic. */ qsort (side_array[0].item, side_array[0].number_of_items, sizeof (struct item), compare_struct_item); qsort (side_array[1].item, side_array[1].number_of_items, sizeof (struct item), compare_struct_item); /* Scan both arrays of binding items simultaneously, saving as pairs those codes having the same UCS-2 value. */ left = side_array[0].item; left_limit = left + side_array[0].number_of_items; right = side_array[1].item; right_limit = right + side_array[1].number_of_items; pair_cursor = pair_array; while (left < left_limit && right < right_limit) { int value = left->code - right->code; if (value < 0) left++; else if (value > 0) right++; else { pair_cursor->left = (left++)->byte; pair_cursor->right = (right++)->byte; pair_cursor++; } } /* Complete the recoding table out of this. */ return complete_pairs (outer, step, pair_array, pair_cursor - pair_array, false, reversed); } /*---------------------------------------------------------------------. | Optimize a SEQUENCE of single steps by creating new single steps, if | | this can be done by merging adjacent steps which are simple enough. | `---------------------------------------------------------------------*/ static bool simplify_sequence (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; unsigned saved_steps; /* number of saved steps */ RECODE_STEP in; /* next studied sequence step */ RECODE_STEP out; /* next rewritten sequence step */ RECODE_STEP limit; /* last value for IN */ unsigned char *accum; /* byte_to_byte accumulated recoding */ const char **string; /* byte_to_variable recoding */ unsigned char temp[256]; /* temporary value for accum array */ unsigned counter; /* all purpose counter */ /* Tell users what is the goal. */ if (request->verbose_flag) fprintf (stderr, _("Request: %s\n"), edit_sequence (request, 0)); saved_steps = 0; /* See if there are some double steps to merge. */ in = request->sequence_array; out = request->sequence_array; limit = in + request->sequence_length; while (in < limit) if (in < limit - 1 && in[0].before->data_type == RECODE_STRIP_DATA && in[0].after == outer->ucs2_charset && in[1].before == outer->ucs2_charset && in[1].after->data_type == RECODE_STRIP_DATA) { /* This is a double UCS-2 step. */ out->before = in[0].before; out->after = in[1].after; out->quality = in[0].quality; merge_qualities (&out->quality, in[1].quality); out->transform_routine = transform_byte_to_byte; /* Initialize the new single step, so it can be later merged with others. */ if (!complete_double_ucs2_step (outer, out)) return false; in += 2; saved_steps++; out++; } else if (in < limit - 1 && in[0].after == outer->libiconv_pivot && in[1].before == outer->libiconv_pivot) { /* This is a double `libiconv' step. */ out->before = in[0].before; out->after = in[1].after; out->quality = in[0].quality; merge_qualities (&out->quality, in[1].quality); out->transform_routine = transform_with_libiconv; in += 2; saved_steps++; out++; } else if (out != in) *out++ = *in++; else out++, in++; request->sequence_length = out - request->sequence_array; /* Recopy the sequence array over itself, while merging subsequences of one or more consecutive one-to-one recodings, including an optional final one-to-many recoding. */ in = request->sequence_array; out = request->sequence_array; limit = in + request->sequence_length; while (in < limit) if (in < limit - 1 && table_type (request, in) == RECODE_BYTE_TO_BYTE && table_type (request, in + 1) != RECODE_NO_STEP_TABLE /* Initialise a cumulative one-to-one recoding with the identity permutation. Just avoid doing it if not enough memory. */ && ALLOC (accum, 256, unsigned char)) { memcpy (accum, in->step_table, 256); out->before = in->before; out->after = in->after; out->quality = in->quality; in++; /* Merge in all consecutive one-to-one recodings. */ while (in < limit && (table_type (request, in) == RECODE_BYTE_TO_BYTE)) { const unsigned char *table = in->step_table; for (counter = 0; counter < 256; counter++) temp[counter] = table[accum[counter]]; memcpy (accum, temp, 256); out->after = in->after; merge_qualities (&out->quality, in->quality); in++; saved_steps++; } /* Check for *one* possible one-to-many recoding. */ if (in < limit && (table_type (request, in) == RECODE_BYTE_TO_STRING) /* Merge in the one-to-many recoding. Just avoid doing it if not enough memory. */ && (ALLOC (string, 256, const char *))) { const char *const *table = in->step_table; for (counter = 0; counter < 256; counter++) string[counter] = table[accum[counter]]; free (accum); out->step_type = RECODE_BYTE_TO_STRING; out->step_table = string; out->transform_routine = transform_byte_to_variable; out->after = in->after; merge_qualities (&out->quality, in->quality); in++; saved_steps++; } else { /* Make the new single step be a one-to-one recoding. */ out->step_type = RECODE_BYTE_TO_BYTE; out->step_table = accum; out->transform_routine = transform_byte_to_byte; } out++; } else if (out != in) *out++ = *in++; else out++, in++; request->sequence_length = out - request->sequence_array; /* Delete a single remaining step, if it happens to be the identity one-to-one recoding. */ in = request->sequence_array; if (request->sequence_length == 1 && table_type (request, in) == RECODE_BYTE_TO_BYTE && memcmp (in->step_table, outer->one_to_same, 256) == 0) { request->sequence_length = 0; saved_steps++; } /* Tell the user if something changed. */ if (saved_steps > 0 && request->verbose_flag) fprintf (stderr, _("Shrunk to: %s\n"), edit_sequence (request, 0)); return true; } /* Decoging step sequence parameters. */ /*-------------------------------------. | Scan next name into SCANNED_STRING. | `-------------------------------------*/ static bool scan_identifier (RECODE_REQUEST request) { char *cursor = request->scanned_string; while (*request->scan_cursor && *request->scan_cursor != ',' && (request->scan_cursor[0] != '.' || request->scan_cursor[1] != '.') && *request->scan_cursor != '/' && *request->scan_cursor != '+') *cursor++ = *request->scan_cursor++; *cursor = NUL; return true; } /*---------------------------------------------. | Scan all options and return a list of them. | `---------------------------------------------*/ static RECODE_OPTION_LIST scan_options (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; RECODE_OPTION_LIST list = NULL; RECODE_OPTION_LIST last = NULL; while (*request->scan_cursor == '+') { RECODE_OPTION_LIST new = ALLOC (new, 1, struct recode_option_list); char *copy; if (!new) break; /* FIXME: should interrupt decoding */ request->scan_cursor++; scan_identifier (request); ALLOC (copy, strlen (request->scanned_string) + 1, char); if (!copy) break; /* FIXME: should interrupt decoding */ strcpy (copy, request->scanned_string); new->option = copy; if (!list) list = new; new->next = last; last = new; } return list; } /*--------------------------------------------------------------------------. | See if there is another charset after the current one in the subrequest. | | In such case, skip and ignore current surfaces, and return false. | `--------------------------------------------------------------------------*/ static bool scan_check_if_last_charset (RECODE_REQUEST request) { const char *cursor = request->scan_cursor; while (*cursor && *cursor != ',' && !(cursor[0] == '.' && cursor[1] != '.')) cursor++; if (*cursor && *cursor != ',') { request->scan_cursor = cursor; return false; } return true; } /*------------------------------------------------------------------------. | Program, in the SEQUENCE under construction, the removal of surfaces in | | reverse order of their appearance, using recursion. | `------------------------------------------------------------------------*/ static bool scan_unsurfacers (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; RECODE_SYMBOL surface = NULL; RECODE_OPTION_LIST surface_options = NULL; request->scan_cursor++; scan_identifier (request); if (*request->scanned_string) { RECODE_ALIAS alias = find_alias (outer, request->scanned_string, ALIAS_FIND_AS_SURFACE); if (!alias) { recode_error (outer, _("Unrecognised surface name `%s'"), request->scanned_string); return false; } surface = alias->symbol; /* FIXME: Should check that it does not itself have implied surfaces? */ } if (*request->scan_cursor == '+') surface_options = scan_options (request); if (*request->scan_cursor == '/') if (!scan_unsurfacers (request)) return false; if (surface && surface->unsurfacer) return add_to_sequence (request, surface->unsurfacer, surface_options, NULL); return true; } /*------------------------------------------------------------------------. | Program, in the SEQUENCE under construction, the removal of surfaces in | | reverse order of the given list, using recursion. | `------------------------------------------------------------------------*/ static bool add_unsurfacers_to_sequence (RECODE_REQUEST request, struct recode_surface_list *list) { if (list->next) if (!add_unsurfacers_to_sequence (request, list->next)) return false; if (list->surface->unsurfacer) return add_to_sequence (request, list->surface->unsurfacer, NULL, NULL); return true; } /*---------------------------------------------------------------------------. | Scan next surfaced charset of the form CHARSET[/SURFACE]*, and return this | | charset after having added it to the SEQUENCE under construction. If | | BEFORE is not NULL (BEFORE_OPTIONS then holds associated options), this | | charset is in another position then the first, and then, a sequence of | | steps will be generated. If BEFORE is NULL, then this charset is in a | | before position (seen options will be returned at the position indicated | | by OPTIONS_POINTER), surfaces should be removed from right to left instead | | of applied from left to right. If neither in an initial position nor in a | | final position, surfaces are ignored, that is optimised out. Tell what is | | going on if VERBOSE. | `---------------------------------------------------------------------------*/ static RECODE_SYMBOL scan_charset (RECODE_REQUEST request, RECODE_CONST_SYMBOL before, RECODE_CONST_OPTION_LIST before_options, RECODE_OPTION_LIST *options_pointer) { RECODE_OUTER outer = request->outer; RECODE_ALIAS alias; RECODE_SYMBOL charset; RECODE_OPTION_LIST charset_options = NULL; scan_identifier (request); alias = find_alias (outer, request->scanned_string, ALIAS_FIND_AS_EITHER); if (*request->scan_cursor == '+') charset_options = scan_options (request); if (!alias) return NULL; charset = alias->symbol; if (before) { /* We are scanning in an AFTER position. */ if (!find_sequence (request, before, before_options, charset, charset_options)) { recode_error (outer, _("No way to recode from `%s' to `%s'"), before->name, charset->name); return NULL; } /* Ignore everything about surfaces, except in last position of a subrequest. This optimises out the application of surfaces, when these would be immediately followed by their removal. */ if (scan_check_if_last_charset (request)) { if (*request->scan_cursor == '/') { while (*request->scan_cursor == '/') { RECODE_SYMBOL surface = NULL; RECODE_OPTION_LIST surface_options = NULL; request->scan_cursor++; scan_identifier (request); if (*request->scanned_string) { RECODE_ALIAS alias2 = find_alias (outer, request->scanned_string, ALIAS_FIND_AS_SURFACE); if (!alias2) { recode_error (outer, _("Unrecognised surface name `%s'"), request->scanned_string); return NULL; } surface = alias2->symbol; /* FIXME: Should check that it does not itself have implied surfaces? */ } if (*request->scan_cursor == '+') surface_options = scan_options (request); if (surface && surface->resurfacer) if (!add_to_sequence (request, surface->resurfacer, NULL, surface_options)) return NULL; } } else if (alias->implied_surfaces && !request->make_header_flag) { struct recode_surface_list *list; for (list = alias->implied_surfaces; list; list = list->next) if (list->surface->resurfacer) if (!add_to_sequence (request, list->surface->resurfacer, NULL, NULL)) return NULL; } } } else { /* We are scanning in a BEFORE position. */ *options_pointer = charset_options; if (*request->scan_cursor == '/') { if (!scan_unsurfacers (request)) return NULL; } else if (alias->implied_surfaces && !request->make_header_flag) { if (!add_unsurfacers_to_sequence (request, alias->implied_surfaces)) return NULL; } } return charset; } /*-------------------------------------------------------------------. | Into SEQUENCE, scan next request of the form CHARSET[..CHARSET]*. | `-------------------------------------------------------------------*/ static bool scan_request (RECODE_REQUEST request) { RECODE_OUTER outer = request->outer; RECODE_OPTION_LIST options; RECODE_SYMBOL charset = scan_charset (request, NULL, NULL, &options); if (!charset) return false; if (request->scan_cursor[0] == '.' && request->scan_cursor[1] == '.') while (request->scan_cursor[0] == '.' && request->scan_cursor[1] == '.') { request->scan_cursor += 2; charset = scan_charset (request, charset, options, NULL); if (!charset) return false; } else if (*request->scan_cursor == NUL) { /* No `..' at all implies a conversion to the default charset. */ charset = scan_charset (request, charset, options, NULL); if (!charset) return false; } else { recode_error (outer, _("Expecting `..' in request")); return false; } return true; } /*-------------------------------------------------------------------------. | Establish a SEQUENCE of recoding steps described by the STRING argument, | | which should have the form: REQUEST[,REQUEST]*. | `-------------------------------------------------------------------------*/ static bool decode_request (RECODE_REQUEST request, const char *string) { RECODE_OUTER outer = request->outer; request->scan_cursor = string; if (!ALLOC (request->scanned_string, strlen (string) + 1, char)) return false; request->sequence_length = 0; if (*request->scan_cursor) { if (!scan_request (request)) { free (request->scanned_string); return false; } while (*request->scan_cursor == ',') { request->scan_cursor++; if (!scan_request (request)) { free (request->scanned_string); return false; } } } free (request->scanned_string); return true; } /* Library interface. */ /* See the recode manual for a more detailed description of the library interface. */ /*--------------------------. | REQUEST level functions. | `--------------------------*/ /* Guarantee four NULs at the end of the output memory buffer for TASK, yet not counting them as data. The number of NULs should depend on the goal charset: often one, but two for UCS-2 and four for UCS-4. FIXME! */ static void guarantee_nul_terminator (RECODE_TASK task) { if (task->output.cursor + 4 >= task->output.limit) { RECODE_OUTER outer = task->request->outer; size_t old_size = task->output.limit - task->output.buffer; size_t new_size = task->output.cursor + 4 - task->output.buffer; /* FIXME: Rethink about how the error should be reported. */ if (REALLOC (task->output.buffer, new_size, char)) { task->output.cursor = task->output.buffer + old_size; task->output.limit = task->output.buffer + new_size; } } task->output.cursor[0] = NUL; task->output.cursor[1] = NUL; task->output.cursor[2] = NUL; task->output.cursor[3] = NUL; } RECODE_REQUEST recode_new_request (RECODE_OUTER outer) { RECODE_REQUEST request; if (!ALLOC (request, 1, struct recode_request)) return NULL; memset (request, 0, sizeof (struct recode_request)); request->outer = outer; request->diaeresis_char = '"'; request->work_string_allocated = 0; return request; } bool recode_delete_request (RECODE_REQUEST request) { if (request->sequence_array) free (request->sequence_array); if (request->work_string) free (request->work_string); free (request); return true; } bool recode_scan_request (RECODE_REQUEST request, const char *string) { return decode_request (request, string) && simplify_sequence (request); } char * recode_string (RECODE_CONST_REQUEST request, const char *input_string) { char *output_buffer = NULL; size_t output_length = 0; size_t output_allocated = 0; recode_buffer_to_buffer (request, input_string, strlen (input_string), &output_buffer, &output_length, &output_allocated); return output_buffer; } bool recode_string_to_buffer (RECODE_CONST_REQUEST request, const char *input_string, char **output_buffer_pointer, size_t *output_length_pointer, size_t *output_allocated_pointer) { return recode_buffer_to_buffer (request, input_string, strlen (input_string), output_buffer_pointer, output_length_pointer, output_allocated_pointer); } bool recode_string_to_file (RECODE_CONST_REQUEST request, const char *input_string, FILE *output_file) { return recode_buffer_to_file (request, input_string, strlen (input_string), output_file); } bool recode_buffer_to_buffer (RECODE_CONST_REQUEST request, const char *input_buffer, size_t input_length, char **output_buffer_pointer, size_t *output_length_pointer, size_t *output_allocated_pointer) { RECODE_TASK task = recode_new_task (request); bool success; if (!task) return false; task->input.buffer = input_buffer; task->input.cursor = input_buffer; task->input.limit = input_buffer + input_length; task->output.buffer = *output_buffer_pointer; task->output.cursor = *output_buffer_pointer; task->output.limit = *output_buffer_pointer + *output_allocated_pointer; task->strategy = RECODE_SEQUENCE_IN_MEMORY; success = recode_perform_task (task); guarantee_nul_terminator (task); *output_buffer_pointer = task->output.buffer; *output_length_pointer = task->output.cursor - task->output.buffer; *output_allocated_pointer = task->output.limit - task->output.buffer; recode_delete_task (task); return success; } bool recode_buffer_to_file (RECODE_CONST_REQUEST request, const char *input_buffer, size_t input_length, FILE *output_file) { RECODE_TASK task = recode_new_task (request); bool success; if (!task) return false; task->input.buffer = input_buffer; task->input.cursor = input_buffer; task->input.limit = input_buffer + input_length; task->output.file = output_file; task->strategy = RECODE_SEQUENCE_IN_MEMORY; success = recode_perform_task (task); recode_delete_task (task); return success; } bool recode_file_to_buffer (RECODE_CONST_REQUEST request, FILE *input_file, char **output_buffer_pointer, size_t *output_length_pointer, size_t *output_allocated_pointer) { RECODE_TASK task = recode_new_task (request); bool success; if (!task) return false; task->input.file = input_file; task->output.buffer = *output_buffer_pointer; task->output.cursor = *output_buffer_pointer; task->output.limit = *output_buffer_pointer + *output_allocated_pointer; task->strategy = RECODE_SEQUENCE_IN_MEMORY; success = recode_perform_task (task); guarantee_nul_terminator (task); *output_buffer_pointer = task->output.buffer; *output_length_pointer = task->output.cursor - task->output.buffer; *output_allocated_pointer = task->output.limit - task->output.buffer; recode_delete_task (task); return success; } bool recode_file_to_file (RECODE_CONST_REQUEST request, FILE *input_file, FILE *output_file) { RECODE_TASK task = recode_new_task (request); bool success; if (!task) return false; task->input.file = input_file; task->output.file = output_file; success = recode_perform_task (task); recode_delete_task (task); return success; } recode-3.6/src/strip-pool.c0100644000000000000000000024721207126661707014411 0ustar rootroot/* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" const recode_ucs2 ucs2_data_pool[8560] = { /* 0 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 8 */ 0x0020, 0x0021, 0x0022, 0xFFFF, 0xFFFF, 0x0025, 0x0026, 0x0027, /* 16 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 24 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 32 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 40 */ 0xFFFF, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 48 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 56 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 64 */ 0x0058, 0x0059, 0x005A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x005F, /* 72 */ 0xFFFF, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 80 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 88 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 96 */ 0x0078, 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 104 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, /* 112 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 120 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, /* 128 */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, /* 136 */ 0x0078, 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x007F, /* 144 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x00A4, 0x0025, 0x0026, 0x0027, /* 152 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 160 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 168 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 176 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, 0x007F, /* 184 */ 0x0020, 0x0021, 0x0022, 0x00A3, 0x0024, 0x0025, 0x0026, 0x0027, /* 192 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 200 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 208 */ 0xE018, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 216 */ 0x0058, 0x0059, 0x005A, 0x00C4, 0x00D6, 0x00C5, 0x25A0, 0x005F, /* 224 */ 0xE019, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 232 */ 0x0078, 0x0079, 0x007A, 0x00E4, 0x00F6, 0x00E5, 0x2013, 0x007F, /* 240 */ 0xFFFF, 0x00C0, 0xFFFF, 0xFFFF, 0x0110, 0x00C9, 0xFFFF, 0xFFFF, /* 248 */ 0x00DE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DC, 0xFFFF, 0xFFFF, /* 256 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00C6, 0x00D8, 0xFFFF, 0xFFFF, 0xFFFF, /* 264 */ 0xFFFF, 0x00E0, 0xFFFF, 0xFFFF, 0x0111, 0x00E9, 0xFFFF, 0xFFFF, /* 272 */ 0x00FE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FC, 0xFFFF, 0xFFFF, /* 280 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00E6, 0x00F8, 0xFFFF, 0xFFFF, 0xFFFF, /* 288 */ 0x0020, 0x0021, 0x00AB, 0x00BB, 0x0024, 0x0025, 0x0026, 0x0027, /* 296 */ 0x0058, 0x0059, 0x005A, 0x00C6, 0x00D8, 0x00C5, 0x25A0, 0x005F, /* 304 */ 0x0078, 0x0079, 0x007A, 0x00E6, 0x00F8, 0x00E5, 0x2013, 0x007F, /* 312 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00C4, 0x00D6, 0xFFFF, 0xFFFF, 0xFFFF, /* 320 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00E4, 0x00F6, 0xFFFF, 0xFFFF, 0xFFFF, /* 328 */ 0x0058, 0x0059, 0x005A, 0x00C4, 0x00D6, 0x00C5, 0x005E, 0x005F, /* 336 */ 0x0078, 0x0079, 0x007A, 0x00E4, 0x00F6, 0x00E5, 0x203E, 0x007F, /* 344 */ 0x00C9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 352 */ 0x0058, 0x0059, 0x005A, 0x00C4, 0x00D6, 0x00C5, 0x00DC, 0x005F, /* 360 */ 0x00E9, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 368 */ 0x0078, 0x0079, 0x007A, 0x00E4, 0x00F6, 0x00E5, 0x00FC, 0x007F, /* 376 */ 0x0020, 0x3002, 0x300C, 0x300D, 0x3001, 0x30FB, 0x30F2, 0x30A1, /* 384 */ 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30E3, 0x30E5, 0x30E7, 0x30C3, /* 392 */ 0x30FC, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, /* 400 */ 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, 0x30B9, 0x30BB, 0x30BD, /* 408 */ 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, 0x30CC, /* 416 */ 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30DE, /* 424 */ 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, /* 432 */ 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F3, 0x309B, 0x309C, /* 440 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x007F, /* 448 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, /* 456 */ 0x00A7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 464 */ 0x0058, 0x0059, 0x005A, 0x00B0, 0x00E7, 0x00E9, 0x005E, 0x005F, /* 472 */ 0x00F9, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 480 */ 0x0078, 0x0079, 0x007A, 0x00E0, 0x00F2, 0x00E8, 0x00EC, 0x007F, /* 488 */ 0x0058, 0x0059, 0x005A, 0x00C3, 0x00C7, 0x00D5, 0x005E, 0x005F, /* 496 */ 0x0078, 0x0079, 0x007A, 0x00E3, 0x00E7, 0x00F5, 0x00B0, 0x007F, /* 504 */ 0x0058, 0x0059, 0x005A, 0x00A1, 0x00D1, 0x00BF, 0x005E, 0x005F, /* 512 */ 0x0078, 0x0079, 0x007A, 0x00B0, 0x00F1, 0x00E7, 0x007E, 0x007F, /* 520 */ 0x00B4, 0x03B1, 0x03B2, 0x03C8, 0x03B4, 0x03B5, 0x03C6, 0x03B3, /* 528 */ 0x03B7, 0x03B9, 0x03BE, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF, /* 536 */ 0x03C0, 0x037A, 0x03C1, 0x03C3, 0x03C4, 0x03B8, 0x03C9, 0x03C2, /* 544 */ 0x03C7, 0x03C5, 0x03B6, 0x1FCF, 0x1FBF, 0x1FCE, 0x007E, 0x005F, /* 552 */ 0x0060, 0x0391, 0x0392, 0x03A8, 0x0394, 0x0395, 0x03A6, 0x0393, /* 560 */ 0x0397, 0x0399, 0x039E, 0x039A, 0x039B, 0x039C, 0x039D, 0x039F, /* 568 */ 0x03A0, 0xFFFF, 0x03A1, 0x03A3, 0x03A4, 0x0398, 0x03A9, 0x00B7, /* 576 */ 0x03A7, 0x03A5, 0x0396, 0x1FDF, 0x1FFE, 0x1FDE, 0x00A8, 0x007F, /* 584 */ 0x03A7, 0x03A5, 0x0396, 0x007B, 0x007C, 0x007D, 0x00A8, 0x007F, /* 592 */ 0x0058, 0x0059, 0x005A, 0x00C4, 0x00D6, 0x00DC, 0x005E, 0x005F, /* 600 */ 0x0078, 0x0079, 0x007A, 0x00E4, 0x00F6, 0x00FC, 0x00DF, 0x007F, /* 608 */ 0x00E0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 616 */ 0x0058, 0x0059, 0x005A, 0x00B0, 0x00E7, 0x00A7, 0x005E, 0x005F, /* 624 */ 0x0078, 0x0079, 0x007A, 0x00E9, 0x00F9, 0x00E8, 0x00A8, 0x007F, /* 632 */ 0x0020, 0x039E, 0x0022, 0x0393, 0x00A4, 0x0025, 0x0026, 0x0027, /* 640 */ 0x0038, 0x0039, 0x03A8, 0x003B, 0x003C, 0x003D, 0x003E, 0x03A0, /* 648 */ 0x0394, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 656 */ 0x0058, 0x0059, 0x005A, 0x03A9, 0x0398, 0x03A6, 0x039B, 0x03A3, /* 664 */ 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 672 */ 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 680 */ 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 688 */ 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, /* 696 */ 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 704 */ 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 712 */ 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 720 */ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x007F, /* 728 */ 0x0058, 0x0059, 0x005A, 0x2190, 0x00BD, 0x2192, 0x2191, 0x25A1, /* 736 */ 0x0078, 0x0079, 0x007A, 0x00BC, 0x2225, 0x00BE, 0x00F7, 0x007F, /* 744 */ 0x0020, 0xFFFF, 0xFFFF, 0xFFFF, 0x0024, 0x0025, 0xFFFF, 0x0027, /* 752 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0xFFFF, /* 760 */ 0x0058, 0x0059, 0x005A, 0x005B, 0xFFFF, 0x005D, 0xFFFF, 0xFFFF, /* 768 */ 0x0078, 0x0079, 0x007A, 0xFFFF, 0x007C, 0xFFFF, 0xFFFF, 0x007F, /* 776 */ 0x0020, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 784 */ 0xFFFF, 0xFFFF, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x039E, 0xFFFF, /* 792 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2192, 0x222B, /* 800 */ 0x2070, 0x00B9, 0x00B2, 0x00B3, 0x2074, 0x2075, 0x2076, 0x2077, /* 808 */ 0x2078, 0x2079, 0x207A, 0x207B, 0x30EB, 0x0394, 0x039B, 0x03A9, /* 816 */ 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, /* 824 */ 0x2088, 0x2089, 0x03A3, 0x03BC, 0x03BD, 0x03C9, 0x03C0, 0x007F, /* 832 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x221A, 0xFFFF, 0x2192, 0x222B, /* 840 */ 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03A3, 0x03BC, 0x03BD, 0x03C9, /* 848 */ 0x03C0, 0x039E, 0x0394, 0x039B, 0x03A9, 0x042A, 0x207B, 0x207A, /* 856 */ 0x0491, 0x0452, 0x0453, 0x0454, 0x0451, 0x0455, 0x0456, 0x0457, /* 864 */ 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x045E, 0x045F, 0xFFFF, /* 872 */ 0x0463, 0x0473, 0x0475, 0x046B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 880 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x005B, 0xFFFF, 0x005D, 0xFFFF, 0x005F, /* 888 */ 0x0490, 0x0402, 0x0403, 0x0404, 0x0401, 0x0405, 0x0406, 0x0407, /* 896 */ 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x040E, 0x040F, 0x042A, /* 904 */ 0x0462, 0x0472, 0x0474, 0x046A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 912 */ 0x0020, 0xE002, 0xE003, 0xE009, 0xE005, 0xE012, 0xE013, 0xE014, /* 920 */ 0x00AB, 0x00BB, 0x201D, 0x201C, 0x0374, 0x0375, 0xFFFF, 0xFFFF, /* 928 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x00B7, 0xFFFF, 0xFFFF, 0xFFFF, 0x003B, /* 936 */ 0xFFFF, 0x0391, 0x0392, 0xFFFF, 0x0393, 0x0394, 0x0395, 0x03DA, /* 944 */ 0x03DC, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, /* 952 */ 0x039D, 0x039E, 0x039F, 0x03A0, 0x03DE, 0x03A1, 0x03A3, 0xFFFF, /* 960 */ 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03E0, 0xFFFF, /* 968 */ 0xFFFF, 0x03B1, 0x03B2, 0x03D0, 0x03B3, 0x03B4, 0x03B5, 0xE01A, /* 976 */ 0xE01B, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, /* 984 */ 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0xE01C, 0x03C1, 0x03C3, 0x03C2, /* 992 */ 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0xE01D, 0x007F, /* 1000 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x00A5, 0x0025, 0x0026, 0x0027, /* 1008 */ 0x0058, 0x0059, 0x005A, 0x00C6, 0x00D8, 0x00C5, 0x005E, 0x005F, /* 1016 */ 0x0078, 0x0079, 0x007A, 0x00E6, 0x00F8, 0x00E5, 0x203E, 0x007F, /* 1024 */ 0x0020, 0x0021, 0x0022, 0x00A7, 0x0024, 0x0025, 0x0026, 0x0027, /* 1032 */ 0x0078, 0x0079, 0x007A, 0x00E6, 0x00F8, 0x00E5, 0x007C, 0x007F, /* 1040 */ 0x00B5, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 1048 */ 0x00B4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 1056 */ 0x0078, 0x0079, 0x007A, 0x00E3, 0x00E7, 0x00F5, 0x007E, 0x007F, /* 1064 */ 0x2022, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 1072 */ 0x0058, 0x0059, 0x005A, 0x00A1, 0x00D1, 0x00C7, 0x00BF, 0x005F, /* 1080 */ 0x0078, 0x0079, 0x007A, 0x00B4, 0x00F1, 0x00E7, 0x00A8, 0x007F, /* 1088 */ 0x00C1, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 1096 */ 0x0058, 0x0059, 0x005A, 0x00C9, 0x00D6, 0x00DC, 0x005E, 0x005F, /* 1104 */ 0x00E1, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 1112 */ 0x0078, 0x0079, 0x007A, 0x00E9, 0x00F6, 0x00FC, 0x02DD, 0x007F, /* 1120 */ 0x0040, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 1128 */ 0x0398, 0x0399, 0xFFFF, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, /* 1136 */ 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0xFFFF, /* 1144 */ 0x03A7, 0x03A8, 0x03A9, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 1152 */ 0x0060, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 1160 */ 0x03B8, 0x03B9, 0xFFFF, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, /* 1168 */ 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C2, /* 1176 */ 0x03C7, 0x03C8, 0x03C9, 0x007B, 0x007C, 0x007D, 0x203E, 0x007F, /* 1184 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x060C, 0x002D, 0x002E, 0x002F, /* 1192 */ 0x0038, 0x0039, 0x003A, 0x061B, 0x003C, 0x003D, 0x003E, 0x061F, /* 1200 */ 0x0040, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 1208 */ 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, /* 1216 */ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, /* 1224 */ 0x0638, 0x0639, 0x063A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 1232 */ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, /* 1240 */ 0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, /* 1248 */ 0x0650, 0x0651, 0x0652, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 1256 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x007B, 0x007C, 0x007D, 0x203E, 0x007F, /* 1264 */ 0x0020, 0xFFFF, 0x0022, 0x00A3, 0x0024, 0x0025, 0x0026, 0x0027, /* 1272 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x2440, 0x003D, 0x2441, 0x003F, /* 1280 */ 0x0058, 0x0059, 0x005A, 0xFFFF, 0x00A5, 0x2442, 0x005E, 0x005F, /* 1288 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2443, 0xFFFF, 0xFFFF, 0x007F, /* 1296 */ 0x0058, 0x0059, 0x005A, 0x2329, 0x00A5, 0x232A, 0x005E, 0x005F, /* 1304 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0xFFFF, 0x007F, /* 1312 */ 0x0020, 0xFFFF, 0xFFFF, 0x00A3, 0x00A4, 0x005C, 0xFFFF, 0x00A7, /* 1320 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x007C, 0xFFFF, 0xFFFF, 0x007F, /* 1328 */ 0x0020, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x005C, 0xFFFF, 0xFFFF, /* 1336 */ 0x0020, 0xFFFF, 0x300C, 0x300D, 0xFFFF, 0xFFFF, 0x30F2, 0xFFFF, /* 1344 */ 0x0038, 0x0039, 0x2446, 0x2447, 0x2448, 0x2449, 0xFFFF, 0xFFFF, /* 1352 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, /* 1360 */ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, /* 1368 */ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, /* 1376 */ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, /* 1384 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 1392 */ 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 1400 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 1408 */ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, /* 1416 */ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, /* 1424 */ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, /* 1432 */ 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 1440 */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 1448 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, /* 1456 */ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, /* 1464 */ 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 1472 */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, /* 1480 */ 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, /* 1488 */ 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, /* 1496 */ 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, /* 1504 */ 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, /* 1512 */ 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, /* 1520 */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, /* 1528 */ 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, /* 1536 */ 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, /* 1544 */ 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, /* 1552 */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, /* 1560 */ 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, /* 1568 */ 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9, /* 1576 */ 0x0058, 0x0059, 0x005A, 0x005B, 0xFFFF, 0x005D, 0xFFFF, 0x005F, /* 1584 */ 0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0xFFFF, 0x0124, 0x00A7, /* 1592 */ 0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0xFFFF, 0x017B, /* 1600 */ 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, /* 1608 */ 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0xFFFF, 0x017C, /* 1616 */ 0x00C0, 0x00C1, 0x00C2, 0xFFFF, 0x00C4, 0x010A, 0x0108, 0x00C7, /* 1624 */ 0xFFFF, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, /* 1632 */ 0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, /* 1640 */ 0x00E0, 0x00E1, 0x00E2, 0xFFFF, 0x00E4, 0x010B, 0x0109, 0x00E7, /* 1648 */ 0xFFFF, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, /* 1656 */ 0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9, /* 1664 */ 0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, /* 1672 */ 0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, /* 1680 */ 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, /* 1688 */ 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, /* 1696 */ 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, /* 1704 */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, /* 1712 */ 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 1720 */ 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, /* 1728 */ 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, /* 1736 */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, /* 1744 */ 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 1752 */ 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9, /* 1760 */ 0x00A0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, /* 1768 */ 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00AD, 0x045E, 0x045F, /* 1776 */ 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, /* 1784 */ 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00A4, 0x040E, 0x040F, /* 1792 */ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A, /* 1800 */ 0x0058, 0x0059, 0x005A, 0x00E2, 0x00E7, 0x00EA, 0x00EE, 0x005F, /* 1808 */ 0x00F4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 1816 */ 0x0078, 0x0079, 0x007A, 0x00E9, 0x00F9, 0x00E8, 0x00FB, 0x007F, /* 1824 */ 0x0058, 0x0059, 0x005A, 0x00E2, 0x00E7, 0x00EA, 0x00C9, 0x005F, /* 1832 */ 0x00A0, 0x00A1, 0x00A8, 0x00A3, 0x00A2, 0x00A5, 0x00B1, 0x00B4, /* 1840 */ 0x207D, 0x207E, 0x00BD, 0x207A, 0x00B8, 0x00AD, 0x00B7, 0x207B, /* 1848 */ 0x2078, 0x2079, 0x00BC, 0x00BE, 0x21D0, 0x2260, 0x2265, 0x00BF, /* 1856 */ 0x00C0, 0x00C1, 0x00C2, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, /* 1864 */ 0x00CD, 0x00CE, 0x00CF, 0x00D1, 0x00D3, 0x00D4, 0x00D9, 0x00DA, /* 1872 */ 0x00DB, 0x00DC, 0x00AE, 0x00A7, 0x00B6, 0x00B5, 0x00AA, 0x00BA, /* 1880 */ 0x2018, 0x2019, 0x201C, 0x201D, 0x00AB, 0x00BB, 0x00B0, 0x00A6, /* 1888 */ 0x00E0, 0x00E1, 0x00E2, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, /* 1896 */ 0x00ED, 0x00EE, 0x00EF, 0x00F1, 0x00F3, 0x00F4, 0x00F9, 0x00FA, /* 1904 */ 0x00FB, 0x00FC, 0x00A9, 0x2500, 0x2502, 0x2514, 0x2518, 0x2510, /* 1912 */ 0x250C, 0x251C, 0x2534, 0x2524, 0x252C, 0x253C, 0x00AC, 0x2588, /* 1920 */ 0x00A0, 0x201B, 0x2019, 0x00A3, 0xFFFF, 0xFFFF, 0x00A6, 0x00A7, /* 1928 */ 0x00A8, 0x00A9, 0xFFFF, 0x00AB, 0x00AC, 0x00AD, 0xFFFF, 0x2014, /* 1936 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x0385, 0x0386, 0x00B7, /* 1944 */ 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, /* 1952 */ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 1960 */ 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, /* 1968 */ 0x03A0, 0x03A1, 0xFFFF, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, /* 1976 */ 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, /* 1984 */ 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 1992 */ 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, /* 2000 */ 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 2008 */ 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xFFFF, /* 2016 */ 0x00A0, 0xFFFF, 0xFFFF, 0xFFFF, 0x00A4, 0xFFFF, 0xFFFF, 0xFFFF, /* 2024 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x060C, 0x00AD, 0xFFFF, 0xFFFF, /* 2032 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x061B, 0xFFFF, 0xFFFF, 0xFFFF, 0x061F, /* 2040 */ 0xFFFF, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 2048 */ 0x0638, 0x0639, 0x063A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2056 */ 0x00A0, 0xFFFF, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 2064 */ 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x203E, /* 2072 */ 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0xFFFF, /* 2080 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2017, /* 2088 */ 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, /* 2096 */ 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, /* 2104 */ 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, /* 2112 */ 0x05E8, 0x05E9, 0x05EA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2120 */ 0x00A0, 0x0104, 0x02D8, 0x0141, 0x0024, 0x013D, 0x015A, 0x00A7, /* 2128 */ 0x017D, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 2136 */ 0x0058, 0x0059, 0x005A, 0x0160, 0x0110, 0x0106, 0x010C, 0x005F, /* 2144 */ 0x017E, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 2152 */ 0x0078, 0x0079, 0x007A, 0x0161, 0x0111, 0x0107, 0x010D, 0x007F, /* 2160 */ 0x02C7, 0x2261, 0x2227, 0x2228, 0x2229, 0x222A, 0x2282, 0x2283, /* 2168 */ 0x21D0, 0x21D2, 0x2234, 0x2235, 0x2208, 0x220B, 0x2286, 0x2287, /* 2176 */ 0x222B, 0x222E, 0x221E, 0x2207, 0x2202, 0x223C, 0x2248, 0x2243, /* 2184 */ 0x2245, 0x2264, 0x2260, 0x2265, 0x2194, 0x00AC, 0x2200, 0x2203, /* 2192 */ 0x05D0, 0x25A1, 0x2225, 0x0393, 0x0394, 0x22A5, 0x2220, 0x221F, /* 2200 */ 0x0398, 0x2329, 0x232A, 0x039B, 0x2032, 0x2033, 0x039E, 0x2213, /* 2208 */ 0x03A0, 0x00B2, 0x03A3, 0x00D7, 0x00B3, 0x03A5, 0x03A6, 0x00B7, /* 2216 */ 0x03A8, 0x03A9, 0x2205, 0x21C0, 0x221A, 0x0192, 0x221D, 0x00B1, /* 2224 */ 0x00B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 2232 */ 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x2030, /* 2240 */ 0x03C0, 0x03C1, 0x03C3, 0x00F7, 0x03C4, 0x03C5, 0x03C6, 0x03C7, /* 2248 */ 0x03C8, 0x03C9, 0x2020, 0x2190, 0x2191, 0x2192, 0x2193, 0x203E, /* 2256 */ 0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, /* 2264 */ 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F, /* 2272 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 2280 */ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 2288 */ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 2296 */ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 2304 */ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 2312 */ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 2320 */ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 2328 */ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, /* 2336 */ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, /* 2344 */ 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F, /* 2352 */ 0x0416, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 2360 */ 0x0425, 0x0418, 0x0408, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, /* 2368 */ 0x041F, 0x0409, 0x0420, 0x0421, 0x0422, 0x0423, 0x0412, 0x040A, /* 2376 */ 0x040F, 0x0405, 0x0417, 0x0428, 0x0402, 0x040B, 0x0427, 0x005F, /* 2384 */ 0x0436, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 2392 */ 0x0445, 0x0438, 0x0458, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, /* 2400 */ 0x043F, 0x0459, 0x0440, 0x0441, 0x0442, 0x0443, 0x0432, 0x045A, /* 2408 */ 0x045F, 0x0455, 0x0437, 0x0448, 0x0452, 0x045B, 0x0447, 0x007F, /* 2416 */ 0x040F, 0x0405, 0x0417, 0x0428, 0x0403, 0x040C, 0x0427, 0x005F, /* 2424 */ 0x045F, 0x0455, 0x0437, 0x0448, 0x0453, 0x045C, 0x0447, 0x007F, /* 2432 */ 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, /* 2440 */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, /* 2448 */ 0x00E8, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, /* 2456 */ 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, /* 2464 */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF, /* 2472 */ 0x03A8, 0x03A9, 0xFFFF, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 2480 */ 0xFFFF, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, /* 2488 */ 0x03C8, 0x03C9, 0xFFFF, 0x007B, 0x007C, 0x007D, 0x00AF, 0x007F, /* 2496 */ 0x0058, 0x0059, 0x005A, 0x00A1, 0x00D1, 0x005D, 0x00BF, 0x005F, /* 2504 */ 0x0078, 0x0079, 0x007A, 0x00B4, 0x00F1, 0x005B, 0x00A8, 0x007F, /* 2512 */ 0x00A0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2520 */ 0xFFFF, 0xFFFF, 0x201C, 0xFFFF, 0x2190, 0x2191, 0x2192, 0x2193, /* 2528 */ 0xFFFF, 0xFFFF, 0x201D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2536 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2122, 0x266A, 0xFFFF, 0xFFFF, /* 2544 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x215B, 0x215C, 0x215D, 0x215E, /* 2552 */ 0x2126, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0132, 0x013F, /* 2560 */ 0xFFFF, 0xFFFF, 0x0152, 0xFFFF, 0x0174, 0x0176, 0x0178, 0x0149, /* 2568 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0133, 0x0140, /* 2576 */ 0xFFFF, 0xFFFF, 0x0153, 0xFFFF, 0x0175, 0x0177, 0xFFFF, 0xFFFF, /* 2584 */ 0x00A0, 0x0401, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2592 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00AD, 0xFFFF, 0xFFFF, /* 2600 */ 0xFFFF, 0x0451, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 2608 */ 0xFFFF, 0xFFFF, 0x0100, 0x0108, 0x010A, 0xFFFF, 0x0116, 0x0112, /* 2616 */ 0x011C, 0x2018, 0x201C, 0x2122, 0x2190, 0x2191, 0x2192, 0x2193, /* 2624 */ 0xFFFF, 0xFFFF, 0x0101, 0x0109, 0x010B, 0x00F0, 0x0117, 0x0113, /* 2632 */ 0x011D, 0x2019, 0x201D, 0x266A, 0x215B, 0x215C, 0x215D, 0x215E, /* 2640 */ 0xFFFF, 0x011E, 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x0130, /* 2648 */ 0x012A, 0x012E, 0x0132, 0x0134, 0x0136, 0x013B, 0x013F, 0x0145, /* 2656 */ 0x2014, 0x014A, 0x014C, 0x0152, 0x0156, 0x015C, 0x0166, 0x00DE, /* 2664 */ 0x0168, 0x016C, 0x016A, 0x0172, 0x0174, 0x00DD, 0x0176, 0x0178, /* 2672 */ 0x2126, 0x011F, 0x0121, 0x0123, 0x0125, 0x0127, 0x0129, 0x0131, /* 2680 */ 0x012B, 0x012F, 0x0133, 0x0135, 0x0137, 0x013C, 0x0140, 0x0146, /* 2688 */ 0x0138, 0x014B, 0x014D, 0x0153, 0x0157, 0x015D, 0x0167, 0x00FE, /* 2696 */ 0x0169, 0x016D, 0x016B, 0x0173, 0x0175, 0x00FD, 0x0177, 0x0149, /* 2704 */ 0x2551, 0x2550, 0x2554, 0x2557, 0x255A, 0x255D, 0x2560, 0x2563, /* 2712 */ 0x2566, 0x2569, 0x256C, 0xE019, 0x2584, 0x2588, 0x25AA, 0xFFFF, /* 2720 */ 0x2502, 0x2500, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 2728 */ 0x252C, 0x2534, 0x253C, 0x2591, 0x2592, 0x2593, 0xFFFF, 0xFFFF, /* 2736 */ 0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, /* 2744 */ 0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A, /* 2752 */ 0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7, /* 2760 */ 0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2014, 0x016B, 0x014B, /* 2768 */ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF, /* 2776 */ 0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168, /* 2784 */ 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, /* 2792 */ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF, /* 2800 */ 0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, /* 2808 */ 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138, /* 2816 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7, /* 2824 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7, /* 2832 */ 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, /* 2840 */ 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, /* 2848 */ 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 2856 */ 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, /* 2864 */ 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, /* 2872 */ 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, /* 2880 */ 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 2888 */ 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019, /* 2896 */ 0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, /* 2904 */ 0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x1E61, /* 2912 */ 0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56, /* 2920 */ 0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x0178, /* 2928 */ 0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A, /* 2936 */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, /* 2944 */ 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, /* 2952 */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF, /* 2960 */ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, /* 2968 */ 0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, /* 2976 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7, /* 2984 */ 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, /* 2992 */ 0x00B4, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3000 */ 0x02BB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3008 */ 0x0102, 0x00C0, 0x01DE, 0x01E0, 0x01E2, 0x0114, 0x00C8, 0x01E4, /* 3016 */ 0x01E6, 0x01E8, 0x014E, 0x00D2, 0x01EA, 0x01EC, 0x01B7, 0x01EE, /* 3024 */ 0x0103, 0x00E0, 0x01DF, 0x01E1, 0x01E3, 0x0115, 0x00E8, 0x01E5, /* 3032 */ 0x01E7, 0x01E9, 0x014F, 0x00F2, 0x01EB, 0x01ED, 0x0292, 0x01EF, /* 3040 */ 0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 3048 */ 0x00D8, 0x00A9, 0x201E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 3056 */ 0x00F8, 0x00B9, 0x201C, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 3064 */ 0x012E, 0x0116, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0104, 0x010C, /* 3072 */ 0x0122, 0x00C9, 0x017D, 0x0118, 0x0112, 0x0136, 0x012A, 0x013B, /* 3080 */ 0x0141, 0x0145, 0x0143, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, /* 3088 */ 0x0172, 0x0160, 0x015A, 0x016A, 0x00DC, 0x017B, 0x0179, 0x00DF, /* 3096 */ 0x012F, 0x0117, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0105, 0x010D, /* 3104 */ 0x0123, 0x00E9, 0x017E, 0x0119, 0x0113, 0x0137, 0x012B, 0x013C, /* 3112 */ 0x0142, 0x0146, 0x0144, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, /* 3120 */ 0x0173, 0x0161, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017A, 0x0138, /* 3128 */ 0x0078, 0x0079, 0x007A, 0x00E6, 0x00F8, 0x00E5, 0x007E, 0x007F, /* 3136 */ 0xFFFF, 0x3002, 0x300C, 0x300D, 0x3001, 0x30FB, 0x30F2, 0x30A1, /* 3144 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x20A9, 0x005D, 0x005E, 0x005F, /* 3152 */ 0xFFFF, 0x00A1, 0x00A2, 0x00A3, 0xFFFF, 0x00A5, 0xFFFF, 0x00A7, /* 3160 */ 0x00A4, 0x00A9, 0x00AA, 0x00AB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3168 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0xFFFF, 0x00B5, 0x00B6, 0x00B7, /* 3176 */ 0xFFFF, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0xFFFF, 0x00BF, /* 3184 */ 0xFFFF, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0152, /* 3192 */ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0178, 0xFFFF, 0x00DF, /* 3200 */ 0xFFFF, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0153, /* 3208 */ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FF, 0xFFFF, 0xFFFF, /* 3216 */ 0x00A0, 0x00C0, 0x00C2, 0x00C8, 0x00CA, 0x00CB, 0x00CE, 0x00CF, /* 3224 */ 0x00B4, 0x02CB, 0x02C6, 0x00A8, 0x02DC, 0x00D9, 0x00DB, 0x20A4, /* 3232 */ 0x00AF, 0x00DD, 0x00FD, 0x00B0, 0x00C7, 0x00E7, 0x00D1, 0x00F1, /* 3240 */ 0x00A1, 0x00BF, 0x00A4, 0x00A3, 0x00A5, 0x00A7, 0x0192, 0x00A2, /* 3248 */ 0x00E2, 0x00EA, 0x00F4, 0x00FB, 0x00E1, 0x00E9, 0x00F3, 0x00FA, /* 3256 */ 0x00E0, 0x00E8, 0x00F2, 0x00F9, 0x00E4, 0x00EB, 0x00F6, 0x00FC, /* 3264 */ 0x00C5, 0x00EE, 0x00D8, 0x00C6, 0x00E5, 0x00ED, 0x00F8, 0x00E6, /* 3272 */ 0x00C4, 0x00EC, 0x00D6, 0x00DC, 0x00C9, 0x00EF, 0x00DF, 0x00D4, /* 3280 */ 0x00C1, 0x00C3, 0x00E3, 0x00D0, 0x00F0, 0x00CD, 0x00CC, 0x00D3, /* 3288 */ 0x00D2, 0x00D5, 0x00F5, 0x0160, 0x0161, 0x00DA, 0x0178, 0x00FF, /* 3296 */ 0x00DE, 0x00FE, 0x00B7, 0x00B5, 0x00B6, 0x00BE, 0x2014, 0x00BC, /* 3304 */ 0x00BD, 0x00AA, 0x00BA, 0x00AB, 0x25A0, 0x00BB, 0x00B1, 0xFFFF, /* 3312 */ 0x00A0, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, /* 3320 */ 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D9, /* 3328 */ 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00B5, 0x00D7, 0x00F7, /* 3336 */ 0x00A9, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x00A5, 0x0192, 0x00A7, /* 3344 */ 0x00A4, 0xFFFF, 0x201C, 0x00AB, 0xFFFF, 0xFFFF, 0xFB01, 0xFB02, /* 3352 */ 0x00AE, 0x2013, 0x2020, 0x2021, 0x00B7, 0x00A6, 0x00B6, 0x2022, /* 3360 */ 0xFFFF, 0xFFFF, 0x201D, 0x00BB, 0x2026, 0x2030, 0x00AC, 0x00BF, /* 3368 */ 0x00B9, 0x02CB, 0x00B4, 0x02C6, 0x02DC, 0x00AF, 0x02D8, 0x02D9, /* 3376 */ 0x00A8, 0x00B2, 0x02DA, 0x00B8, 0x00B3, 0x02DD, 0x02DB, 0x02C7, /* 3384 */ 0x2014, 0x00B1, 0x00BC, 0x00BD, 0x00BE, 0x00E0, 0x00E1, 0x00E2, /* 3392 */ 0x00E3, 0x00E4, 0x00E5, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, /* 3400 */ 0x00EC, 0x00C6, 0x00ED, 0x00AA, 0x00EE, 0x00EF, 0x00F0, 0x00F1, /* 3408 */ 0x0141, 0x00D8, 0x0152, 0x00BA, 0x00F2, 0x00F3, 0x00F4, 0x00F5, /* 3416 */ 0x00F6, 0x00E6, 0x00F9, 0x00FA, 0x00FB, 0x0131, 0x00FC, 0x00FD, /* 3424 */ 0x0142, 0x00F8, 0x0153, 0x00DF, 0x00FE, 0x00FF, 0xFFFF, 0xFFFF, /* 3432 */ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, /* 3440 */ 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, /* 3448 */ 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, /* 3456 */ 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, /* 3464 */ 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, /* 3472 */ 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, /* 3480 */ 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, /* 3488 */ 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, /* 3496 */ 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x0394, 0x00AB, /* 3504 */ 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x2126, 0x0152, 0x0153, /* 3512 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, /* 3520 */ 0x00FF, 0x0178, 0x2044, 0x00A4, 0x2039, 0x203A, 0xFB01, 0xFB02, /* 3528 */ 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, /* 3536 */ 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, /* 3544 */ 0xE01E, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0xFFFF, 0xFFFF, /* 3552 */ 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, /* 3560 */ 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, /* 3568 */ 0x2014, 0x2013, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25C6, /* 3576 */ 0x00FF, 0x0178, 0x2044, 0x00A4, 0x0110, 0x0111, 0x00DE, 0x00FE, /* 3584 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, /* 3592 */ 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 3600 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, /* 3608 */ 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, /* 3616 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, /* 3624 */ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, /* 3632 */ 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, /* 3640 */ 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, /* 3648 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5, /* 3656 */ 0x00E7, 0x00F1, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 3664 */ 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, /* 3672 */ 0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 3680 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5, /* 3688 */ 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 3696 */ 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, /* 3704 */ 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 3712 */ 0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 3720 */ 0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1, /* 3728 */ 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 3736 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4, /* 3744 */ 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 3752 */ 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE, /* 3760 */ 0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, /* 3768 */ 0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7, /* 3776 */ 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 3784 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5, /* 3792 */ 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 3800 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF, /* 3808 */ 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 3816 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5, /* 3824 */ 0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F, /* 3832 */ 0xFFFF, 0xFFFF, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 3840 */ 0x0026, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3848 */ 0xFFFF, 0xFFFF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 3856 */ 0x002D, 0x002F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3864 */ 0xFFFF, 0xFFFF, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 3872 */ 0xFFFF, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 3880 */ 0x0068, 0x0069, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3888 */ 0xFFFF, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 3896 */ 0x0071, 0x0072, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3904 */ 0xFFFF, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 3912 */ 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3920 */ 0x0048, 0x0049, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3928 */ 0x0051, 0x0052, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3936 */ 0x005C, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 3944 */ 0x0059, 0x005A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 3952 */ 0x0038, 0x0039, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x009F, /* 3960 */ 0x00E7, 0x00F1, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 3968 */ 0x00EC, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 3976 */ 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, 0x00A7, 0x00B6, 0x00BC, /* 3984 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x203E, 0x00A8, 0x00B4, 0x2017, /* 3992 */ 0x005C, 0x2003, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4000 */ 0x0020, 0x00A0, 0x00E2, 0x007B, 0x00E0, 0x00E1, 0x00E3, 0x00E5, /* 4008 */ 0x00E7, 0x00F1, 0x00C4, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4016 */ 0x00EC, 0x007E, 0x00DC, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 4024 */ 0x002D, 0x002F, 0x00C2, 0x005B, 0x00C0, 0x00C1, 0x00C3, 0x00C5, /* 4032 */ 0x00C7, 0x00D1, 0x00F6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4040 */ 0x00CC, 0x0060, 0x003A, 0x0023, 0x00A7, 0x0027, 0x003D, 0x0022, /* 4048 */ 0x00B5, 0x00DF, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4056 */ 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x0040, 0x00B6, 0x00BC, /* 4064 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x203E, 0x00A8, 0x00B4, 0x00D7, /* 4072 */ 0x00E4, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4080 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00A6, 0x00F2, 0x00F3, 0x00F5, /* 4088 */ 0x00FC, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4096 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x007D, 0x00F9, 0x00FA, 0x00FF, /* 4104 */ 0x00D6, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4112 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x005C, 0x00D2, 0x00D3, 0x00D5, /* 4120 */ 0x0038, 0x0039, 0x00B3, 0x00DB, 0x005D, 0x00D9, 0x00DA, 0x009F, /* 4128 */ 0xFFFF, 0xFFFF, 0x00F9, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4136 */ 0xFFFF, 0x0060, 0x003A, 0x0023, 0x00E0, 0x0027, 0x003D, 0x0022, /* 4144 */ 0xFFFF, 0x00A8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4152 */ 0x00E9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4160 */ 0x00E8, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4168 */ 0x00E7, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4176 */ 0xFFFF, 0xFFFF, 0x00C9, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4184 */ 0xFFFF, 0xFFFF, 0x0024, 0x00C7, 0x002A, 0x0029, 0x003B, 0x005E, /* 4192 */ 0xFFFF, 0xFFFF, 0x00E7, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4200 */ 0xFFFF, 0x00E3, 0x003A, 0x00D5, 0x00C3, 0x0027, 0x003D, 0x0022, /* 4208 */ 0x00F5, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4216 */ 0x00E9, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4224 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x007D, /* 4232 */ 0x00E7, 0x00F1, 0x0023, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4240 */ 0x00EC, 0x00DF, 0x00A4, 0x00C5, 0x002A, 0x0029, 0x003B, 0x005E, /* 4248 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x0024, /* 4256 */ 0x00C7, 0x00D1, 0x00F8, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4264 */ 0x00A6, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, /* 4272 */ 0x00CC, 0x0060, 0x003A, 0x00C6, 0x00D8, 0x0027, 0x003D, 0x0022, /* 4280 */ 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 4288 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x007B, 0x00B8, 0x005B, 0x005D, /* 4296 */ 0x00B5, 0x00FC, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4304 */ 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, /* 4312 */ 0x00E6, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4320 */ 0x00E5, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4328 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x007E, 0x00F9, 0x00FA, 0x00FF, /* 4336 */ 0x0020, 0x00A0, 0x00E2, 0x007B, 0x00E0, 0x00E1, 0x00E3, 0x007D, /* 4344 */ 0x00E7, 0x00F1, 0x00A7, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4352 */ 0x0026, 0x0060, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, /* 4360 */ 0x002D, 0x002F, 0x00C2, 0x0023, 0x00C0, 0x00C1, 0x00C3, 0x0024, /* 4368 */ 0x00CC, 0x00E9, 0x003A, 0x00C4, 0x00D6, 0x0027, 0x003D, 0x0022, /* 4376 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x005D, /* 4384 */ 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x005B, 0x00B6, 0x00BC, /* 4392 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x0040, 0x00D2, 0x00D3, 0x00D5, /* 4400 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x007B, 0x00E1, 0x00E3, 0x00E5, /* 4408 */ 0x005C, 0x00F1, 0x00B0, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4416 */ 0x0026, 0x005D, 0x00EA, 0x00EB, 0x007D, 0x00ED, 0x00EE, 0x00EF, /* 4424 */ 0x007E, 0x00DF, 0x00E9, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 4432 */ 0x00C7, 0x00D1, 0x00F2, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4440 */ 0x00CC, 0x00F9, 0x003A, 0x00A3, 0x00A7, 0x0027, 0x003D, 0x0022, /* 4448 */ 0x005B, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 4456 */ 0x00B5, 0x00EC, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4464 */ 0x00A2, 0x0023, 0x00A5, 0x00B7, 0x00A9, 0x0040, 0x00B6, 0x00BC, /* 4472 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00A6, 0x00F3, 0x00F5, /* 4480 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x0060, 0x00FA, 0x00FF, /* 4488 */ 0x00E7, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4496 */ 0xFFFF, 0xFFFF, 0x00A3, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4504 */ 0xFFFF, 0xFFFF, 0x0021, 0x00A5, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4512 */ 0xFFFF, 0x203E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4520 */ 0x0024, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4528 */ 0x00E7, 0x00A6, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4536 */ 0x00EC, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4544 */ 0x00C7, 0x0023, 0x00F1, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4552 */ 0x00CC, 0x0060, 0x003A, 0x00D1, 0x0040, 0x0027, 0x003D, 0x0022, /* 4560 */ 0x00B5, 0x00A8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4568 */ 0x00BD, 0x00BE, 0x005E, 0x0021, 0x203E, 0x007E, 0x00B4, 0x00D7, /* 4576 */ 0x00E7, 0x00F1, 0x0024, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4584 */ 0x00EC, 0x00DF, 0x0021, 0x00A3, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4592 */ 0x00B5, 0x203E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4600 */ 0x00A2, 0x005B, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, /* 4608 */ 0x00BD, 0x00BE, 0x005E, 0x005D, 0x007E, 0x00A8, 0x00B4, 0x00D7, /* 4616 */ 0x30A3, 0x30A5, 0x00A3, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4624 */ 0x0026, 0x30A7, 0x30A9, 0x30E3, 0x30E5, 0x30E7, 0x30C3, 0xFFFF, /* 4632 */ 0x30FC, 0xFFFF, 0x0021, 0x00A5, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4640 */ 0xFFFF, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, /* 4648 */ 0x30AF, 0x30B1, 0x30B3, 0xFFFF, 0x30B5, 0x30B7, 0x30B9, 0x30BB, /* 4656 */ 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, /* 4664 */ 0x30CC, 0x30CD, 0x30CE, 0xFFFF, 0xFFFF, 0x30CF, 0x30D2, 0x30D5, /* 4672 */ 0xFFFF, 0x203E, 0x30D8, 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, /* 4680 */ 0x30E2, 0x30E4, 0x30E6, 0xFFFF, 0x30E8, 0x30E9, 0x30EA, 0x30EB, /* 4688 */ 0xFFFF, 0xFFFF, 0x30EC, 0x30ED, 0x30EF, 0x30F3, 0x309B, 0x309C, /* 4696 */ 0xFFFF, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4704 */ 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x0040, 0x00E1, 0x00E3, 0x00E5, /* 4712 */ 0x0026, 0x007B, 0x00EA, 0x00EB, 0x007D, 0x00ED, 0x00EE, 0x00EF, /* 4720 */ 0x00EC, 0x00DF, 0x00A7, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 4728 */ 0x00C7, 0x00D1, 0x00F9, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4736 */ 0x00CC, 0x00B5, 0x003A, 0x00A3, 0x00E0, 0x0027, 0x003D, 0x0022, /* 4744 */ 0x0060, 0x00A8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4752 */ 0x00A2, 0x0023, 0x00A5, 0x00B7, 0x00A9, 0x005D, 0x00B6, 0x00BC, /* 4760 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x203E, 0x007E, 0x00B4, 0x00D7, /* 4768 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00A6, 0x00FA, 0x00FF, /* 4776 */ 0x0020, 0x00A0, 0x0651, 0xFE7D, 0x0640, 0xFFFF, 0x0621, 0x0622, /* 4784 */ 0xFE82, 0x0623, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 4792 */ 0x0026, 0xFE84, 0x0624, 0xFFFF, 0xFFFF, 0x0626, 0x0627, 0xFE8E, /* 4800 */ 0x0628, 0xFE91, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 4808 */ 0x002D, 0x002F, 0x0629, 0x062A, 0xFE97, 0x062B, 0xFE9B, 0x062C, /* 4816 */ 0xFE9F, 0x062D, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 4824 */ 0xFEA3, 0x062E, 0xFEA7, 0x062F, 0x0630, 0x0631, 0x0632, 0x0633, /* 4832 */ 0xFEB3, 0x060C, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 4840 */ 0x0634, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 4848 */ 0x0068, 0x0069, 0xFEB7, 0x0635, 0xFEBB, 0x0636, 0xFEBF, 0x0637, /* 4856 */ 0x0638, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 4864 */ 0x0071, 0x0072, 0x0639, 0xFECA, 0xFECB, 0xFECC, 0x063A, 0xFECE, /* 4872 */ 0xFECF, 0x00F7, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 4880 */ 0x0079, 0x007A, 0xFED0, 0x0641, 0xFED3, 0x0642, 0xFED7, 0x0643, /* 4888 */ 0xFEDB, 0x0644, 0xFEF5, 0xFEF6, 0xFEF7, 0xFEF8, 0xFFFF, 0xFFFF, /* 4896 */ 0xFEFB, 0xFEFC, 0xFEDF, 0x0645, 0xFEE3, 0x0646, 0xFEE7, 0x0647, /* 4904 */ 0x061B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 4912 */ 0x0048, 0x0049, 0x00AD, 0xFEEB, 0xFFFF, 0xFEEC, 0xFFFF, 0x0648, /* 4920 */ 0x061F, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 4928 */ 0x0051, 0x0052, 0x0649, 0xFEF0, 0x064A, 0xFEF2, 0xFEF3, 0x0660, /* 4936 */ 0x00D7, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 4944 */ 0x0059, 0x005A, 0x0661, 0x0662, 0xFFFF, 0x0663, 0x0664, 0x0665, /* 4952 */ 0x0038, 0x0039, 0xFFFF, 0x0666, 0x0667, 0x0668, 0x0669, 0x009F, /* 4960 */ 0x0020, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 4968 */ 0x0398, 0x0399, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 4976 */ 0x0026, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, /* 4984 */ 0x03A1, 0x03A3, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 4992 */ 0x002D, 0x002F, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, /* 5000 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 5008 */ 0xFFFF, 0x0386, 0x0388, 0x0389, 0xFFFF, 0x038A, 0x038C, 0x038E, /* 5016 */ 0x038F, 0x0060, 0x003A, 0x00A3, 0x00A7, 0x0027, 0x003D, 0x0022, /* 5024 */ 0x00C4, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 5032 */ 0x0068, 0x0069, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, /* 5040 */ 0x00D6, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 5048 */ 0x0071, 0x0072, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, /* 5056 */ 0x00DC, 0x00A8, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 5064 */ 0x0079, 0x007A, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C2, /* 5072 */ 0xFFFF, 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, 0x03CD, /* 5080 */ 0x03CB, 0x03CE, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, /* 5088 */ 0x00B8, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 5096 */ 0x0048, 0x0049, 0xFFFF, 0x03C9, 0x00C2, 0x00E0, 0x00E4, 0x00EA, /* 5104 */ 0x00B4, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 5112 */ 0x0051, 0x0052, 0x00B1, 0x00E9, 0x00E8, 0x00EB, 0x00EE, 0x00EF, /* 5120 */ 0x00B0, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 5128 */ 0x0059, 0x005A, 0x00BD, 0x00F6, 0x00F4, 0x00FB, 0x00F9, 0x00FC, /* 5136 */ 0x0038, 0x0039, 0x00FF, 0x00E7, 0x00C7, 0xFFFF, 0xFFFF, 0x009F, /* 5144 */ 0x0020, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, /* 5152 */ 0x05D7, 0x05D8, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 5160 */ 0x0026, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, /* 5168 */ 0x05E0, 0x05E1, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 5176 */ 0x002D, 0x002F, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, /* 5184 */ 0x05E8, 0x05E9, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 5192 */ 0xFFFF, 0x05EA, 0xFFFF, 0xFFFF, 0x00A0, 0xFFFF, 0xFFFF, 0xFFFF, /* 5200 */ 0x21D4, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 5208 */ 0x0068, 0x0069, 0x00AB, 0x00BB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 5216 */ 0x0071, 0x0072, 0xFFFF, 0xFFFF, 0xFFFF, 0x00B8, 0xFFFF, 0x00A4, /* 5224 */ 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00AE, /* 5232 */ 0x00BD, 0x00BE, 0x005B, 0x005D, 0x203E, 0x00A8, 0x00B4, 0x00D7, /* 5240 */ 0x0048, 0x0049, 0x00AD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 5248 */ 0x0051, 0x0052, 0x00B9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 5256 */ 0x0059, 0x005A, 0x00B2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 5264 */ 0x0038, 0x0039, 0x00B3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x009F, /* 5272 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, /* 5280 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, /* 5288 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, /* 5296 */ 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, /* 5304 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, /* 5312 */ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 5320 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 5328 */ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 5336 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 5344 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 5352 */ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 5360 */ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 5368 */ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 5376 */ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 5384 */ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 5392 */ 0x00B0, 0x00B7, 0x2022, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, /* 5400 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x00AF, 0x00A8, 0x00B4, 0x00D7, /* 5408 */ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, /* 5416 */ 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 5424 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, /* 5432 */ 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, /* 5440 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, /* 5448 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, /* 5456 */ 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, /* 5464 */ 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, /* 5472 */ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, /* 5480 */ 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, /* 5488 */ 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, /* 5496 */ 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, /* 5504 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x0386, 0x00E7, /* 5512 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0388, 0x00C4, 0x0389, /* 5520 */ 0x038A, 0xFFFF, 0x038C, 0x00F4, 0x00F6, 0x038E, 0x00FB, 0x00F9, /* 5528 */ 0x038F, 0x00D6, 0x00DC, 0x03AC, 0x00A3, 0x03AD, 0x03AE, 0x03AF, /* 5536 */ 0x03CA, 0x0390, 0x03CC, 0x03CD, 0x0391, 0x0392, 0x0393, 0x0394, /* 5544 */ 0x0395, 0x0396, 0x0397, 0x00BD, 0x0398, 0x0399, 0x00AB, 0x00BB, /* 5552 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, 0x039B, 0x039D, /* 5560 */ 0x039C, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, 0x039F, 0x2510, /* 5568 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x03A0, 0x03A1, /* 5576 */ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x03A3, /* 5584 */ 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, /* 5592 */ 0x03B3, 0x2518, 0x250C, 0x2588, 0x2584, 0x03B4, 0x03B5, 0x2580, /* 5600 */ 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, /* 5608 */ 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x00B4, /* 5616 */ 0x00AD, 0x00B1, 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x02DB, /* 5624 */ 0x00B0, 0x00A8, 0x03C9, 0x03CB, 0x03B0, 0x03CE, 0x25A0, 0x00A0, /* 5632 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7, /* 5640 */ 0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106, /* 5648 */ 0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A, /* 5656 */ 0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D, /* 5664 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E, /* 5672 */ 0x0118, 0x0119, 0x00AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB, /* 5680 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A, /* 5688 */ 0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510, /* 5696 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103, /* 5704 */ 0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE, /* 5712 */ 0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580, /* 5720 */ 0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, /* 5728 */ 0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4, /* 5736 */ 0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8, /* 5744 */ 0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0, /* 5752 */ 0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, /* 5760 */ 0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, /* 5768 */ 0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x0093, 0x045C, 0x040C, /* 5776 */ 0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A, /* 5784 */ 0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, /* 5792 */ 0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB, /* 5800 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, /* 5808 */ 0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510, /* 5816 */ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A, /* 5824 */ 0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E, /* 5832 */ 0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580, /* 5840 */ 0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, /* 5848 */ 0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x00B4, /* 5856 */ 0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D, /* 5864 */ 0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0xFFFF, 0x25A0, 0x00A0, /* 5872 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5, /* 5880 */ 0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F, /* 5888 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F, /* 5896 */ 0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8, 0xFFFF, 0x00CD, 0x00CE, /* 5904 */ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0xFFFF, /* 5912 */ 0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x2014, 0x00B4, /* 5920 */ 0x00AD, 0x00B1, 0xFFFF, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x02DB, /* 5928 */ 0x00B0, 0x00A8, 0x02D9, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, /* 5936 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, /* 5944 */ 0x00EA, 0x00CA, 0x00E8, 0x00CE, 0x00D4, 0x00EC, 0x00C3, 0x00C2, /* 5952 */ 0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, /* 5960 */ 0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D2, /* 5968 */ 0x00BF, 0x00D3, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 5976 */ 0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, /* 5984 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, /* 5992 */ 0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x00D2, /* 6000 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, /* 6008 */ 0x00BF, 0xFFFF, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 6016 */ 0x05E8, 0x05E9, 0x05EA, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D2, /* 6024 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, /* 6032 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C0, 0x00A7, /* 6040 */ 0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, /* 6048 */ 0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, /* 6056 */ 0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF, /* 6064 */ 0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, /* 6072 */ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x2205, 0x03B5, 0x2229, /* 6080 */ 0x2218, 0x00B7, 0x2022, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, /* 6088 */ 0x00B0, 0x00B7, 0x2218, 0x221A, 0x2592, 0x2500, 0x2502, 0x253C, /* 6096 */ 0x2524, 0x252C, 0x251C, 0x2534, 0x2510, 0x250C, 0x2514, 0x2518, /* 6104 */ 0x00DF, 0x221E, 0x00F8, 0x00B1, 0x00BD, 0x00BC, 0x2248, 0x00AB, /* 6112 */ 0x00BB, 0xFEF7, 0xFEF8, 0xFFFF, 0xFFFF, 0xFEFB, 0xFEFC, 0xE016, /* 6120 */ 0xFFFF, 0x00AD, 0xFE82, 0x00A3, 0x00A4, 0xFE84, 0xFFFF, 0xFFFF, /* 6128 */ 0xFE8E, 0x0628, 0x062A, 0x062B, 0x060C, 0x062C, 0x062D, 0x062E, /* 6136 */ 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, /* 6144 */ 0x0668, 0x0669, 0x06A4, 0x061B, 0x0633, 0x0634, 0x0635, 0x061F, /* 6152 */ 0x00A2, 0x0621, 0x0622, 0x0623, 0x0624, 0xFECA, 0x0626, 0x0627, /* 6160 */ 0xFE91, 0x0629, 0xFE97, 0xFE9B, 0xFE9F, 0xFEA3, 0xFEA7, 0x062F, /* 6168 */ 0x0630, 0x0631, 0x0632, 0xFEB3, 0xFEB7, 0xFEBB, 0xFEBF, 0x0637, /* 6176 */ 0x0638, 0xFECB, 0xFECF, 0x00A6, 0x00AC, 0x00F7, 0x00D7, 0x0639, /* 6184 */ 0x0640, 0xFED2, 0xFED6, 0xFEDB, 0xFEDE, 0xFEE3, 0xFEE6, 0xFEEB, /* 6192 */ 0x0648, 0x0649, 0xFEF3, 0x0636, 0xFEE2, 0xFECE, 0x063A, 0x0645, /* 6200 */ 0xFE7D, 0x0651, 0x0646, 0x0647, 0xFEEC, 0xFEF0, 0xFEF2, 0x0641, /* 6208 */ 0x0642, 0xFEF5, 0xFEF6, 0x0644, 0x0643, 0x064A, 0x25A0, 0x00A0, /* 6216 */ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, /* 6224 */ 0x0668, 0x0669, 0x060C, 0x061B, 0x061F, 0x0622, 0x0627, 0xFE8E, /* 6232 */ 0xE016, 0x0628, 0xFE91, 0x067E, 0xFFFF, 0x0629, 0x062A, 0xFE97, /* 6240 */ 0xFFFF, 0xFFFF, 0x062B, 0xFE9B, 0x062C, 0xFE9F, 0xFFFF, 0xFFFF, /* 6248 */ 0x062D, 0xFEA3, 0x062E, 0xFEA7, 0x062F, 0xFFFF, 0x0630, 0x0631, /* 6256 */ 0xFFFF, 0x0632, 0xFFFF, 0x0633, 0xFEB3, 0x0634, 0x00AB, 0x00BB, /* 6264 */ 0xFEB7, 0x0635, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xFEBB, /* 6272 */ 0x0636, 0xFEBF, 0x0637, 0x2563, 0x2551, 0x2557, 0x255D, 0x0638, /* 6280 */ 0x0639, 0x2510, 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, /* 6288 */ 0xFECA, 0xFECB, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, /* 6296 */ 0x256C, 0xFECC, 0x063A, 0xFECE, 0xFECF, 0xFED0, 0x0641, 0xFED3, /* 6304 */ 0x0642, 0xFED7, 0xFEDA, 0x2518, 0x250C, 0x2588, 0x2580, 0xFEDB, /* 6312 */ 0xFFFF, 0x2584, 0xFFFF, 0x0644, 0xFEDE, 0xFEE0, 0x0645, 0xFEE3, /* 6320 */ 0xFFFF, 0x0646, 0xFEE7, 0xFFFF, 0x0648, 0xFFFF, 0xFFFF, 0xFFFF, /* 6328 */ 0xFFFF, 0x0621, 0x00AD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 6336 */ 0xFFFF, 0xFFFF, 0xFFFF, 0x0651, 0xFE7D, 0xFFFF, 0x25A0, 0x00A0, /* 6344 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0386, 0xFFFF, /* 6352 */ 0x00B7, 0x00AC, 0x00A6, 0x201B, 0x2019, 0x0388, 0x2014, 0x0389, /* 6360 */ 0x038A, 0x03AA, 0x038C, 0xFFFF, 0xFFFF, 0x038E, 0x03AB, 0x00A9, /* 6368 */ 0x038F, 0x00B2, 0x00B3, 0x03AC, 0x00A3, 0x03AD, 0x03AE, 0x03AF, /* 6376 */ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, 0x039B, 0x039C, /* 6384 */ 0x039D, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, 0x039F, 0x2510, /* 6392 */ 0x00AD, 0x00B1, 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x0385, /* 6400 */ 0x0020, 0x00A0, 0xFFFF, 0x00E4, 0xFFFF, 0x00E1, 0x0103, 0x010D, /* 6408 */ 0x00E7, 0x0107, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 6416 */ 0x0026, 0x00E9, 0xFFFF, 0x00EB, 0x016F, 0x00ED, 0xFFFF, 0x013E, /* 6424 */ 0x013A, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 6432 */ 0x002D, 0x002F, 0xFFFF, 0x00C4, 0x02DD, 0x00C1, 0xFFFF, 0x010C, /* 6440 */ 0x00C7, 0x0106, 0x007C, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 6448 */ 0x02C7, 0x00C9, 0xFFFF, 0x00CB, 0x016E, 0x00CD, 0xFFFF, 0x013D, /* 6456 */ 0x0139, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 6464 */ 0x02D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 6472 */ 0x0068, 0x0069, 0x015B, 0x0148, 0x0111, 0x00FD, 0x0159, 0xFFFF, /* 6480 */ 0x0071, 0x0072, 0x0142, 0x0144, 0x0161, 0x00B8, 0x02DB, 0x00A4, /* 6488 */ 0x0105, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 6496 */ 0x0079, 0x007A, 0x015A, 0x0147, 0x0110, 0x00DD, 0x0158, 0xFFFF, /* 6504 */ 0x00B7, 0x0104, 0x017C, 0xFFFF, 0x017B, 0x00A7, 0x00B6, 0x017E, /* 6512 */ 0x017A, 0x017D, 0x0179, 0x0143, 0x0160, 0x00A8, 0x00B4, 0x00D7, /* 6520 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x0155, 0x00F3, 0x0151, /* 6528 */ 0x0051, 0x0052, 0x011A, 0x0171, 0x00FC, 0x0165, 0x00FA, 0x011B, /* 6536 */ 0x0059, 0x005A, 0x010F, 0x00D4, 0x00D6, 0x0154, 0x00D3, 0x0150, /* 6544 */ 0x0038, 0x0039, 0x010E, 0x0170, 0x00DC, 0x0164, 0x00DA, 0x009F, /* 6552 */ 0x00E7, 0x00F1, 0x00FE, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 6560 */ 0x00EC, 0x00DF, 0x00C6, 0x0024, 0x002A, 0x0029, 0x003B, 0x00D6, /* 6568 */ 0x00CC, 0x00F0, 0x003A, 0x0023, 0x00D0, 0x0027, 0x003D, 0x0022, /* 6576 */ 0x0068, 0x0069, 0x00AB, 0x00BB, 0x0060, 0x00FD, 0x007B, 0x00B1, /* 6584 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x007D, 0x00B8, 0x005D, 0x00A4, /* 6592 */ 0x00B5, 0x00F6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 6600 */ 0x0079, 0x007A, 0x00A1, 0x00BF, 0x0040, 0x00DD, 0x005B, 0x00AE, /* 6608 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x00AF, 0x00A8, 0x005C, 0x00D7, /* 6616 */ 0x00DE, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 6624 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x007E, 0x00F2, 0x00F3, 0x00F5, /* 6632 */ 0x00E6, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 6640 */ 0x00B4, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 6648 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x005E, 0x00D2, 0x00D3, 0x00D5, /* 6656 */ 0x03AA, 0x03AB, 0xFFFF, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 6664 */ 0x00A8, 0x0386, 0x0388, 0x0389, 0x2207, 0x038A, 0x038C, 0x038E, /* 6672 */ 0x038F, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 6680 */ 0x0385, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 6688 */ 0x00B4, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 6696 */ 0x0079, 0x007A, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, /* 6704 */ 0x00A3, 0x03AC, 0x03AD, 0x03AE, 0x0390, 0x03AF, 0x03CC, 0x03CD, /* 6712 */ 0x03B0, 0x03CE, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, /* 6720 */ 0x0048, 0x0049, 0x00AD, 0x03C9, 0x03CA, 0x03CB, 0x2018, 0x2015, /* 6728 */ 0x0051, 0x0052, 0x00B1, 0x00BD, 0xFFFF, 0x00B7, 0x2019, 0x00A6, /* 6736 */ 0x0059, 0x005A, 0x00B2, 0x00A7, 0xFFFF, 0xFFFF, 0x00AB, 0x00AC, /* 6744 */ 0x0038, 0x0039, 0x00B3, 0x00A9, 0xFFFF, 0xFFFF, 0x00BB, 0x009F, /* 6752 */ 0x0020, 0xFFFF, 0x0452, 0x0453, 0x0451, 0xFFFF, 0x0455, 0x0456, /* 6760 */ 0x0457, 0x0458, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 6768 */ 0x0026, 0x0459, 0x045A, 0x045B, 0x045C, 0xFFFF, 0x045F, 0x042A, /* 6776 */ 0x2116, 0x0402, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 6784 */ 0x002D, 0x002F, 0x0403, 0x0401, 0xFFFF, 0x0405, 0x0406, 0x0407, /* 6792 */ 0x0408, 0x0409, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 6800 */ 0x040A, 0x040B, 0x040C, 0xFFFF, 0xFFFF, 0x040F, 0x044E, 0x0430, /* 6808 */ 0x0431, 0xFFFF, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 6816 */ 0x0446, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 6824 */ 0x0068, 0x0069, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, /* 6832 */ 0x0439, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, /* 6840 */ 0x0071, 0x0072, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 6848 */ 0x044F, 0xFFFF, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 6856 */ 0x0079, 0x007A, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 6864 */ 0x0048, 0x0049, 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, /* 6872 */ 0x0051, 0x0052, 0x041D, 0x041E, 0x041F, 0x042F, 0x0420, 0x0421, /* 6880 */ 0x005C, 0x00A4, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 6888 */ 0x0059, 0x005A, 0x0422, 0x0423, 0x0416, 0x0412, 0x042C, 0x042B, /* 6896 */ 0x0038, 0x0039, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x009F, /* 6904 */ 0x00A2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 6912 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00AC, 0x00A6, 0xFFFF, /* 6920 */ 0x0020, 0xFFFF, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0xFFFF, 0x010B, /* 6928 */ 0x007B, 0x00F1, 0x00C7, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 6936 */ 0x00EC, 0x00DF, 0x011E, 0x0130, 0x002A, 0x0029, 0x003B, 0x005E, /* 6944 */ 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0xFFFF, 0x010A, /* 6952 */ 0x005B, 0x00D1, 0x015F, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 6960 */ 0xFFFF, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, /* 6968 */ 0x00CC, 0x0131, 0x003A, 0x00D6, 0x015E, 0x0027, 0x003D, 0x00DC, /* 6976 */ 0x0068, 0x0069, 0x0127, 0x0109, 0x015D, 0x016D, 0xFFFF, 0x007C, /* 6984 */ 0x0071, 0x0072, 0x0125, 0x011D, 0x0135, 0x02DB, 0xFFFF, 0x00A4, /* 6992 */ 0x0079, 0x007A, 0x0126, 0x0108, 0x015C, 0x016C, 0xFFFF, 0x0040, /* 7000 */ 0x00B7, 0x00A3, 0x017C, 0x007D, 0x017B, 0x00A7, 0x005D, 0xFFFF, /* 7008 */ 0x00BD, 0x0024, 0x0124, 0x011C, 0x0134, 0x00A8, 0x00B4, 0x00D7, /* 7016 */ 0x00E7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 7024 */ 0x0048, 0x0049, 0x00AD, 0x00F4, 0x007E, 0x00F2, 0x00F3, 0x0121, /* 7032 */ 0x011F, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, /* 7040 */ 0x0051, 0x0052, 0x0060, 0x00FB, 0x005C, 0x00F9, 0x00FA, 0xFFFF, /* 7048 */ 0x00FC, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7056 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x0023, 0x00D2, 0x00D3, 0x0120, /* 7064 */ 0x0038, 0x0039, 0x00B3, 0x00DB, 0x0022, 0x00D9, 0x00DA, 0x009F, /* 7072 */ 0x0020, 0x00A0, 0x060C, 0x061B, 0x061F, 0x0623, 0x0627, 0xFE8E, /* 7080 */ 0xFFFF, 0x0628, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7088 */ 0x0026, 0xFE91, 0x067E, 0xFFFF, 0x0629, 0x062A, 0xFE97, 0xFFFF, /* 7096 */ 0xFFFF, 0x062B, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7104 */ 0x002D, 0x002F, 0xFE9B, 0x062C, 0xFE9F, 0xFFFF, 0xFFFF, 0x062D, /* 7112 */ 0xFEA3, 0x062E, 0x0060, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7120 */ 0x0668, 0x0669, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, /* 7128 */ 0xFEA7, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 7136 */ 0x0068, 0x0069, 0x062F, 0xFFFF, 0x0630, 0x0631, 0xFFFF, 0x0632, /* 7144 */ 0x0071, 0x0072, 0x0633, 0xFEB3, 0x0634, 0xFEB7, 0x0635, 0xFEBB, /* 7152 */ 0x0636, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 7160 */ 0x0079, 0x007A, 0xFEBF, 0x0637, 0x0638, 0x0639, 0xFECA, 0xFECB, /* 7168 */ 0xFECC, 0x063A, 0xFECE, 0xFECF, 0xFED0, 0x0641, 0xFED3, 0x0642, /* 7176 */ 0xFED7, 0x0643, 0xFEDB, 0x007C, 0xFFFF, 0xFFFF, 0x0644, 0xFEDE, /* 7184 */ 0x0048, 0x0049, 0x00AD, 0xFFFF, 0x0645, 0xFEE3, 0xFFFF, 0x0646, /* 7192 */ 0x0051, 0x0052, 0xFEE7, 0xFFFF, 0x0648, 0xFFFF, 0xFFFF, 0xFFFF, /* 7200 */ 0x0059, 0x005A, 0x0621, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7208 */ 0x0038, 0x0039, 0xFFFF, 0xFFFF, 0xFFFF, 0x0651, 0xFE7D, 0x009F, /* 7216 */ 0xFFFF, 0xFFFF, 0x201A, 0xFFFF, 0x201E, 0x2026, 0x2020, 0x2021, /* 7224 */ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFF, 0xFFFF, 0xFFFF, /* 7232 */ 0xFFFF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 7240 */ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFF, 0xFFFF, 0x0178, /* 7248 */ 0x0068, 0x0069, 0x00AB, 0x00BB, 0x007D, 0x0060, 0x00A6, 0x00B1, /* 7256 */ 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x02DB, 0x00C6, 0x00A4, /* 7264 */ 0x0079, 0x007A, 0x00A1, 0x00BF, 0x005D, 0x0024, 0x0040, 0x00AE, /* 7272 */ 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x2014, 0x00A8, 0x00B4, 0x00D7, /* 7280 */ 0x0051, 0x0052, 0x00B9, 0x00FB, 0x005C, 0x00F9, 0x00FA, 0x00FF, /* 7288 */ 0x0059, 0x005A, 0x00B2, 0x00D4, 0x0023, 0x00D2, 0x00D3, 0x00D5, /* 7296 */ 0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7304 */ 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x005B, 0x00DE, 0x00AE, /* 7312 */ 0x00AC, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, /* 7320 */ 0x00BD, 0x00BE, 0x00DD, 0x00A8, 0x00AF, 0x005D, 0x00B4, 0x00D7, /* 7328 */ 0x20AC, 0xFFFF, 0x201A, 0xFFFF, 0x201E, 0x2026, 0x2020, 0x2021, /* 7336 */ 0xFFFF, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, /* 7344 */ 0xFFFF, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, /* 7352 */ 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, /* 7360 */ 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, /* 7368 */ 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, /* 7376 */ 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, /* 7384 */ 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, /* 7392 */ 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, /* 7400 */ 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 7408 */ 0xFFFF, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, /* 7416 */ 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, /* 7424 */ 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, /* 7432 */ 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, /* 7440 */ 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, /* 7448 */ 0x20AC, 0xFFFF, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, /* 7456 */ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFF, 0x017D, 0x017E, /* 7464 */ 0xFFFF, 0x2030, 0xFFFF, 0x2039, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7472 */ 0xFFFF, 0x2122, 0xFFFF, 0x203A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7480 */ 0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, /* 7488 */ 0x00A8, 0x00A9, 0xFFFF, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, /* 7496 */ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, /* 7504 */ 0x05E8, 0x05E9, 0x05EA, 0xFFFF, 0xFFFF, 0x200E, 0x200F, 0xFFFF, /* 7512 */ 0x20AC, 0x0660, 0x201A, 0x0661, 0x201E, 0x2026, 0x2020, 0x2021, /* 7520 */ 0x0662, 0x0663, 0x0664, 0x2039, 0x0665, 0x0666, 0x0667, 0x0668, /* 7528 */ 0x0669, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, /* 7536 */ 0x061B, 0x2122, 0x061F, 0x203A, 0x0621, 0x0622, 0x0623, 0x0178, /* 7544 */ 0x00A0, 0x0624, 0x0625, 0x00A3, 0x00A4, 0x0626, 0x00A6, 0x00A7, /* 7552 */ 0x0627, 0x00A9, 0x0628, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x067E, /* 7560 */ 0x00B0, 0x00B1, 0x0629, 0x062A, 0x062B, 0x00B5, 0x00B6, 0x00B7, /* 7568 */ 0x062C, 0x0686, 0x062D, 0x00BB, 0x062E, 0x062F, 0x0630, 0x0631, /* 7576 */ 0x00C0, 0x0632, 0x00C2, 0x0698, 0x0633, 0x0634, 0x0635, 0x00C7, /* 7584 */ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0636, 0x0637, 0x00CE, 0x00CF, /* 7592 */ 0x3113, 0x0639, 0x063A, 0x0640, 0x00D4, 0x0641, 0x0642, 0x00D7, /* 7600 */ 0x0643, 0x00D9, 0x06AF, 0x00DB, 0x00DC, 0x0644, 0x0645, 0x0646, /* 7608 */ 0x00E0, 0x0647, 0x00E2, 0x0681, 0x0648, 0x0649, 0x064A, 0x00E7, /* 7616 */ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x064B, 0x064C, 0x00EE, 0x00EF, /* 7624 */ 0x064D, 0x064E, 0x064F, 0x0650, 0x00F4, 0x0651, 0x0652, 0x00F7, /* 7632 */ 0xFFFF, 0x00F9, 0xFFFF, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x00FF, /* 7640 */ 0x00A0, 0xFFFF, 0x00A2, 0x00A3, 0x00A4, 0xFFFF, 0x00A6, 0x00A7, /* 7648 */ 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, /* 7656 */ 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, /* 7664 */ 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0xFFFF, /* 7672 */ 0xFFFF, 0xFFFF, 0x00C4, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7680 */ 0xFFFF, 0xFFFF, 0x00DC, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7688 */ 0xFFFF, 0xFFFF, 0x00F6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7696 */ 0xFFFF, 0x0060, 0x003A, 0x0023, 0x00A7, 0x0027, 0x003D, 0x0022, /* 7704 */ 0xFFFF, 0x00DF, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 7712 */ 0x00D6, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7720 */ 0xFFFF, 0xFFFF, 0x00F6, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 7728 */ 0xFFFF, 0xFFFF, 0x00FC, 0x00DC, 0x002A, 0x0029, 0x003B, 0x00AC, /* 7736 */ 0xFFFF, 0xFFFF, 0x00DF, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7744 */ 0xFFFF, 0xFFFF, 0x003A, 0x00C4, 0x00D6, 0x0027, 0x003D, 0x00E4, /* 7752 */ 0xFFFF, 0xFFFF, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 7760 */ 0xFFFF, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7768 */ 0x0020, 0xFFFF, 0x00E2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7776 */ 0x00E7, 0xFFFF, 0x00E0, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7784 */ 0x0026, 0xFFFF, 0x00EA, 0x00EB, 0xFFFF, 0xFFFF, 0x00EE, 0x00EF, /* 7792 */ 0xFFFF, 0xFFFF, 0x00B4, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7800 */ 0x002D, 0x002F, 0x00C2, 0xFFFF, 0x00C0, 0xFFFF, 0xFFFF, 0xFFFF, /* 7808 */ 0x00C7, 0xFFFF, 0x00F9, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7816 */ 0xFFFF, 0x00C9, 0x00CA, 0x00CB, 0xFFFF, 0x00CE, 0x00CF, 0xFFFF, /* 7824 */ 0x0048, 0x0049, 0xFFFF, 0x00F4, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7832 */ 0x0051, 0x0052, 0xFFFF, 0x00FB, 0x00FC, 0xFFFF, 0xFFFF, 0xFFFF, /* 7840 */ 0x00B8, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7848 */ 0x0059, 0x005A, 0xFFFF, 0x00D4, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, /* 7856 */ 0x0038, 0x0039, 0xFFFF, 0x00DB, 0x00DC, 0x00D9, 0xFFFF, 0x009F, /* 7864 */ 0xFFFF, 0xFFFF, 0x0023, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7872 */ 0xFFFF, 0xFFFF, 0x00A4, 0x00C5, 0x002A, 0x0029, 0x003B, 0x005E, /* 7880 */ 0xFFFF, 0xFFFF, 0x00F8, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7888 */ 0xFFFF, 0x0060, 0x003A, 0x00C6, 0x00D8, 0x0027, 0x003D, 0x0022, /* 7896 */ 0xFFFF, 0x00FC, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 7904 */ 0xFFFF, 0xFFFF, 0x00F8, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 7912 */ 0xFFFF, 0xFFFF, 0x00E5, 0x00C5, 0x002A, 0x0029, 0x003B, 0x00AC, /* 7920 */ 0xFFFF, 0xFFFF, 0x003A, 0x00C6, 0x00D8, 0x0027, 0x003D, 0x00E6, /* 7928 */ 0xFFFF, 0xFFFF, 0x00A7, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7936 */ 0xFFFF, 0x00E9, 0x003A, 0x00C4, 0x00D6, 0x0027, 0x003D, 0x0022, /* 7944 */ 0x00C9, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 7952 */ 0xFFFF, 0xFFFF, 0x00B0, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, /* 7960 */ 0xFFFF, 0xFFFF, 0x00A7, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7968 */ 0xFFFF, 0x0060, 0x003A, 0x00A3, 0x00E0, 0x0027, 0x003D, 0x0022, /* 7976 */ 0xFFFF, 0xFFFF, 0x00E9, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, /* 7984 */ 0xFFFF, 0xFFFF, 0x00F2, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 7992 */ 0xFFFF, 0x00F9, 0x003A, 0x00A3, 0x00A7, 0x0027, 0x003D, 0x0022, /* 8000 */ 0xFFFF, 0x00EC, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 8008 */ 0xFFFF, 0xFFFF, 0x00F5, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 8016 */ 0xFFFF, 0x0060, 0x003A, 0x00C3, 0x00D5, 0x0027, 0x003D, 0x0022, /* 8024 */ 0xFFFF, 0x00E7, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 8032 */ 0x00E3, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 8040 */ 0x00C7, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 8048 */ 0xFFFF, 0xFFFF, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 8056 */ 0xFFFF, 0xFFFF, 0x0021, 0x20A7, 0x002A, 0x0029, 0x003B, 0x00AC, /* 8064 */ 0xFFFF, 0xFFFF, 0x00F1, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, /* 8072 */ 0xFFFF, 0x0060, 0x003A, 0x00D1, 0x0040, 0x0027, 0x003D, 0x0022, /* 8080 */ 0xFFFF, 0xFFFF, 0x003A, 0x00D1, 0x0040, 0x0027, 0x003D, 0x00F1, /* 8088 */ 0xFFFF, 0xFFFF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, /* 8096 */ 0xFFFF, 0xFFFF, 0x0024, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, /* 8104 */ 0xFFFF, 0xFFFF, 0x0021, 0x00A3, 0x002A, 0x0029, 0x003B, 0x00AC, /* 8112 */ 0x0020, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E1, 0xFFFF, 0xFFFF, /* 8120 */ 0xFFFF, 0xFFFF, 0x003C, 0x002E, 0x00C1, 0x0028, 0x002B, 0x0021, /* 8128 */ 0x00D0, 0x00E9, 0xFFFF, 0xFFFF, 0xFFFF, 0x00ED, 0xFFFF, 0xFFFF, /* 8136 */ 0xFFFF, 0x0024, 0x0025, 0x00C9, 0x002A, 0x0029, 0x003B, 0x0026, /* 8144 */ 0xFFFF, 0x0023, 0x2018, 0x002C, 0x00DE, 0x005F, 0x003E, 0x003F, /* 8152 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00CD, 0xFFFF, 0xFFFF, /* 8160 */ 0x007C, 0x00F0, 0x003A, 0x00C6, 0x00D6, 0x0027, 0x003D, 0x0022, /* 8168 */ 0x0068, 0x0069, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DD, 0xFFFF, 0xFFFF, /* 8176 */ 0x00B0, 0x00F6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, /* 8184 */ 0x0079, 0x007A, 0xFFFF, 0xFFFF, 0x005B, 0x00FD, 0xFFFF, 0xFFFF, /* 8192 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x005D, 0x00A8, 0xFFFF, 0xFFFF, /* 8200 */ 0x00FE, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 8208 */ 0x0048, 0x0049, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00F3, 0xFFFF, /* 8216 */ 0x0051, 0x0052, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FA, 0xFFFF, /* 8224 */ 0x00B4, 0xFFFF, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, /* 8232 */ 0x0059, 0x005A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00D3, 0xFFFF, /* 8240 */ 0x0038, 0x0039, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00DA, 0x007F, /* 8248 */ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0xFFFF, /* 8256 */ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, /* 8264 */ 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, /* 8272 */ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2022, 0x221A, 0x2248, /* 8280 */ 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, /* 8288 */ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, /* 8296 */ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, /* 8304 */ 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, /* 8312 */ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9, /* 8320 */ 0x2591, 0x2592, 0x2593, 0x201C, 0x25A0, 0x2022, 0x201D, 0x2014, /* 8328 */ 0x2116, 0x2122, 0x00A0, 0x00BB, 0x00AE, 0x00AB, 0x00B7, 0x00A4, /* 8336 */ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, /* 8344 */ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x045E, 0x255E, /* 8352 */ 0x255F, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407, /* 8360 */ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x040E, 0x00A9, /* 8368 */ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248, /* 8376 */ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x255D, 0x255E, /* 8384 */ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x256C, 0x00A9, /* 8392 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00CD, 0x00C4, 0x00C1, /* 8400 */ 0x00C9, 0x00E6, 0x00C6, 0x0151, 0x00F6, 0x00D3, 0x0171, 0x00DA, /* 8408 */ 0x0170, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0xE01F, /* 8416 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x0150, /* 8424 */ 0x03B1, 0x03B2, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x03BC, 0x03C4, /* 8432 */ 0x00C4, 0x0100, 0x0101, 0x00C9, 0x0104, 0x00D6, 0x00DC, 0x00E1, /* 8440 */ 0x0105, 0x010C, 0x00E4, 0x010D, 0x0106, 0x0107, 0x00E9, 0x0179, /* 8448 */ 0x017A, 0x010E, 0x00ED, 0x010F, 0x0112, 0x0113, 0x0116, 0x00F3, /* 8456 */ 0x0117, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x011A, 0x011B, 0x00FC, /* 8464 */ 0x2020, 0x00B0, 0x0118, 0x00A3, 0x00A7, 0x2219, 0x00B6, 0x00DF, /* 8472 */ 0x00AE, 0x00A9, 0x2122, 0x0119, 0x00A8, 0x2260, 0x01F5, 0x012E, /* 8480 */ 0x012F, 0x012A, 0x2264, 0x2265, 0x012B, 0x0136, 0x2202, 0x2211, /* 8488 */ 0x0142, 0x013B, 0x013C, 0x013D, 0x013E, 0x0139, 0x013A, 0x0145, /* 8496 */ 0x0146, 0x0143, 0x00AC, 0x221A, 0x0144, 0x0147, 0x0394, 0x00AB, /* 8504 */ 0x00BB, 0x2026, 0x00A0, 0x0148, 0x0150, 0x00D5, 0x0151, 0x014C, /* 8512 */ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25C6, /* 8520 */ 0x014D, 0x0154, 0x0155, 0x0158, 0x2039, 0x203A, 0x0159, 0x0156, /* 8528 */ 0x0157, 0x0160, 0x201A, 0x201E, 0x0161, 0x015A, 0x015B, 0x00C1, /* 8536 */ 0x0164, 0x0165, 0x00CD, 0x017D, 0x017E, 0x016A, 0x00D3, 0x00D4, /* 8544 */ 0x016B, 0x016E, 0x00DA, 0x016F, 0x0170, 0x0171, 0x0172, 0x0173, /* 8552 */ 0x00DD, 0x00FD, 0x0137, 0x017B, 0x0141, 0x017C, 0x0122, 0x02C7 }; recode-3.6/src/task.c0100644000000000000000000010111007127427563013226 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. Contributed by François Pinard , 1990. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #if HAVE_UNISTD_H # include #endif #include #include /* Bruno suggests the following, from GNU make 3.79.0.2 in `job.c'. He also remarks that on Linux, WEXITSTATUS are bits 15..8 and WTERMSIG are bits 7..0, while BeOS uses the contrary. */ #if HAVE_UNION_WAIT # define WAIT_T union wait # ifndef WTERMSIG # define WTERMSIG(x) ((x).w_termsig) # endif # ifndef WCOREDUMP # define WCOREDUMP(x) ((x).w_coredump) # endif # ifndef WEXITSTATUS # define WEXITSTATUS(x) ((x).w_retcode) # endif # ifndef WIFSIGNALED # define WIFSIGNALED(x) (WTERMSIG(x) != 0) # endif # ifndef WIFEXITED # define WIFEXITED(x) (WTERMSIG(x) == 0) # endif #else # define WAIT_T int # ifndef WTERMSIG # define WTERMSIG(x) ((x) & 0x7f) # endif # ifndef WCOREDUMP # define WCOREDUMP(x) ((x) & 0x80) # endif # ifndef WEXITSTATUS # define WEXITSTATUS(x) (((x) >> 8) & 0xff) # endif # ifndef WIFSIGNALED # define WIFSIGNALED(x) (WTERMSIG (x) != 0) # endif # ifndef WIFEXITED # define WIFEXITED(x) (WTERMSIG (x) == 0) # endif #endif /* Buffer size used in transform_mere_copy. */ #define BUFFER_SIZE (16 * 1024) /* Input or output helpers. */ /*-------------------------------------------------------------------. | Read one byte from the input text of TASK, or EOF is none remain. | `-------------------------------------------------------------------*/ /* This function is directly called by get_byte whenever USE_HELPERS is defined. Otherwise, get_byte does everything necessary and this routine is not needed. */ #if USE_HELPERS int get_byte_helper (RECODE_TASK task) { if (task->input.file) return getc (task->input.file); else if (task->input.cursor == task->input.limit) return EOF; else return (unsigned char) *task->input.cursor++; } #endif /* USE_HELPERS */ /*-----------------------------------------. | Write BYTE on the output text for TASK. | `-----------------------------------------*/ /* This function is directly called by put_byte whenever USE_HELPERS is defined. It is also called when the output buffer needs to be reallocated, which put_byte does not know how to handle itself. Note that when INLINE_HARDER is not defined, USE_HELPERS is implied for Flex generated code. */ void put_byte_helper (int byte, RECODE_SUBTASK subtask) { if (subtask->output.file) putc (byte, subtask->output.file); else if (subtask->output.cursor == subtask->output.limit) { RECODE_OUTER outer = subtask->task->request->outer; size_t old_size = subtask->output.limit - subtask->output.buffer; size_t new_size = old_size * 3 / 2 + 40; /* FIXME: Rethink about how the error should be reported. */ if (REALLOC (subtask->output.buffer, new_size, char)) { subtask->output.cursor = subtask->output.buffer + old_size; subtask->output.limit = subtask->output.buffer + new_size; *subtask->output.cursor++ = byte; } } else *subtask->output.cursor++ = byte; } /* Error processing. */ /*------------------------------------------------------------------------. | Handle a given ERROR, while executing STEP within TASK. Return true if | | the abort level has been reached. | `------------------------------------------------------------------------*/ bool recode_if_nogo (enum recode_error new_error, RECODE_SUBTASK subtask) { RECODE_TASK task = subtask->task; if (new_error > task->error_so_far) { task->error_so_far = new_error; task->error_at_step = subtask->step; } return task->error_so_far >= task->abort_level; } /* Recoding execution control. */ /*--------------. | Copy a file. | `--------------*/ static bool transform_mere_copy (RECODE_SUBTASK subtask) { if (subtask->input.file && subtask->output.file) { /* File to file. */ char buffer[BUFFER_SIZE]; size_t size; while (size = fread (buffer, 1, BUFFER_SIZE, subtask->input.file), size == BUFFER_SIZE) if (fwrite (buffer, BUFFER_SIZE, 1, subtask->output.file) != 1) { recode_perror (NULL, "fwrite ()"); return false; } if (size > 0) if (fwrite (buffer, size, 1, subtask->output.file) != 1) { recode_perror (NULL, "fwrite ()"); return false; } } else if (subtask->input.file) { /* File to buffer. */ int character; /* FIXME: buy now, pay (optimise) only later. */ while (character = get_byte (subtask), character != EOF) put_byte (character, subtask); } else if (subtask->output.file) { /* Buffer to file. */ if (subtask->input.cursor < subtask->input.limit) if (fwrite (subtask->input.cursor, (unsigned) (subtask->input.limit - subtask->input.cursor), 1, subtask->output.file) != 1) { recode_perror (NULL, "fwrite ()"); return false; } } else { /* Buffer to buffer. */ int character; /* FIXME: buy now, pay (optimise) only later. */ while (character = get_byte (subtask), character != EOF) put_byte (character, subtask); } return true; } /*--------------------------------------------------. | Recode a file using a one-to-one recoding table. | `--------------------------------------------------*/ bool transform_byte_to_byte (RECODE_SUBTASK subtask) { unsigned const char *table = subtask->step->step_table; int input_char; while (input_char = get_byte (subtask), input_char != EOF) put_byte (table[input_char], subtask); SUBTASK_RETURN (subtask); } /*---------------------------------------------------. | Recode a file using a one-to-many recoding table. | `---------------------------------------------------*/ bool transform_byte_to_variable (RECODE_SUBTASK subtask) { const char *const *table = subtask->step->step_table; int input_char; const char *output_string; /* Copy the file through the one to many recoding table. */ while (input_char = get_byte (subtask), input_char != EOF) if (output_string = table[input_char], output_string) while (*output_string) { put_byte (*output_string, subtask); output_string++; } else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); SUBTASK_RETURN (subtask); } /*---------------------------------------------------------------------. | Execute the conversion sequence for a recoding TASK, using several | | passes with two alternating memory buffers. This routine assumes at | | least one needed recoding step. | `---------------------------------------------------------------------*/ static bool perform_memory_sequence (RECODE_TASK task) { RECODE_CONST_REQUEST request = task->request; struct recode_subtask subtask_block; RECODE_SUBTASK subtask = &subtask_block; struct recode_read_write_text input; struct recode_read_write_text output; unsigned sequence_index; RECODE_CONST_STEP step; memset (subtask, 0, sizeof (struct recode_subtask)); memset (&input, 0, sizeof (struct recode_read_write_text)); memset (&output, 0, sizeof (struct recode_read_write_text)); subtask->task = task; /* Execute one pass for each step of the sequence. */ for (sequence_index = 0; sequence_index < request->sequence_length && task->error_so_far < task->abort_level; sequence_index++) { /* Select the input text for this step. */ if (sequence_index == 0) { subtask->input = task->input; if (subtask->input.name) { if (!*subtask->input.name) subtask->input.file = stdin; else if (subtask->input.file = fopen (subtask->input.name, "r"), subtask->input.file == NULL) { recode_perror (NULL, "fopen (%s)", subtask->input.name); return false; } } } else { subtask->input.buffer = input.buffer; subtask->input.cursor = input.buffer; subtask->input.limit = input.cursor; } /* Select the output text for this step. */ if (sequence_index < request->sequence_length - 1) { subtask->output = output; subtask->output.cursor = subtask->output.buffer; } else { subtask->output = task->output; if (subtask->output.name) { if (!*subtask->output.name) subtask->output.file = stdout; else if (subtask->output.file = fopen (subtask->output.name, "w"), subtask->output.file == NULL) { recode_perror (NULL, "fopen (%s)", subtask->output.name); return false; } } } /* Execute one recoding step. */ step = request->sequence_array + sequence_index; subtask->step = step; (*step->transform_routine) (subtask); /* Post-step clean up. */ if (sequence_index == 0) { if (subtask->input.name && *subtask->input.name) fclose (subtask->input.file); task->input = subtask->input; subtask->input.name = NULL; subtask->input.file = NULL; } /* Prepare for next step. */ task->swap_input = RECODE_SWAP_UNDECIDED; if (sequence_index < request->sequence_length - 1) { output = input; input = subtask->output; } else { if (subtask->output.name && *subtask->output.name) fclose (subtask->output.file); task->output = subtask->output; } } /* Final clean up. */ /* FIXME: Maybe we should manage this so it could wait, instead, for avoiding buffer reallocation each time a new recoding is done? */ if (input.buffer) free (input.buffer); if (output.buffer) free (output.buffer); SUBTASK_RETURN (subtask); } /*-------------------------------------------------------------------------. | Execute the conversion sequence for a recoding TASK, using several | | passes with two alternating intermediate files. This routine assumes at | | least one needed recoding step. | `-------------------------------------------------------------------------*/ /* tmpnam/tmpname/mktemp/tmpfile and the associate logic has been the main portability headache of `recode' :-(. People reported that tmpname does not exist everywhere. Further, on OS/2, recode aborts if the prefix has more than five characters. tmpnam seems to exist everywhere so far. But NeXT's tmpnam() is such that, if called many times in succession, it will always return the same value, one has to really open a file with the returned name first for the next call to tmpnam() to return a different value; even worse, it cycles after 25 unique file names. I can manage it for a single invocation of recode, but using two recode invocations connected with a shell pipe, on the NeXT, creates a race by which both copies may call tmpnam() in parallel, then getting the same value, and will consequently open the same temporary file. Noah Friedman suggests opening the file with O_EXCL, and when the open presumably fails, call tmpnam again, or try the mktemp routine in the GNU C library: maybe that will work better. Michael I Bushnell suggests always using tmpfile, which opens the file too, using the O_EXCL option to open. I'm trying this last suggestion, but rewinding instead of closing. Someone reported, a long while ago, that rewind did not work on his system, so I reverted to opening and closing the temporary files all the time. I lost the precise references for this problem. In any case, I'm reusing rewind with tmpfile, now. Hopefully, someone will tell me if this still creates a problem somewhere! */ /* The previous round used tmpnam(3). This one tries tmpfile(3). */ #undef USE_TMPNAM #define USE_TMPFILE 1 /* Guarantee some value for L_tmpnam. */ #if USE_TMPNAM # if DOSWIN # ifndef L_tmpnam # define L_tmpnam 13 # endif # else char *tmpnam (); # ifndef L_tmpnam # include "pathmax.h" # define L_tmpnam PATH_MAX # endif # endif #endif #if USE_TMPFILE FILE *tmpfile PARAMS ((void)); #endif static bool perform_pass_sequence (RECODE_TASK task) { RECODE_CONST_REQUEST request = task->request; struct recode_subtask subtask_block; RECODE_SUBTASK subtask = &subtask_block; struct recode_read_write_text input; struct recode_read_write_text output; unsigned sequence_index; RECODE_CONST_STEP step; #if USE_TMPNAM char temporary_name_1[L_tmpnam]; char temporary_name_2[L_tmpnam]; #endif memset (subtask, 0, sizeof (struct recode_subtask)); memset (&input, 0, sizeof (struct recode_read_write_text)); memset (&output, 0, sizeof (struct recode_read_write_text)); subtask->task = task; #if USE_TMPNAM # if DOSWIN_OR_OS2 strcpy (temporary_name_1, "recodex1.tmp"); strcpy (temporary_name_2, "recodex2.tmp"); # else /* Delay name attribution, so NeXT's work. */ temporary_name_1[0] = NUL; temporary_name_2[0] = NUL; # endif subtask->input.name = temporary_name_1; subtask->output.name = temporary_name_2; #endif /* Execute one pass for each step of the sequence. */ for (sequence_index = 0; sequence_index < request->sequence_length && task->error_so_far < task->abort_level; sequence_index++) { /* Select the input text for this step. */ if (sequence_index == 0) { subtask->input = task->input; if (subtask->input.name) { if (!*subtask->input.name) subtask->input.file = stdin; else if (subtask->input.file = fopen (subtask->input.name, "r"), subtask->input.file == NULL) { recode_perror (NULL, "fopen (%s)", subtask->input.name); return false; } } } else { #if USE_TMPNAM if (subtask->input.file = fopen (input.name, "r"), subtask->input.file == NULL) { recode_perror (outer, "fopen (%s)", input.name); return false; } #endif #if USE_TMPFILE subtask->input.file = input.file; rewind (subtask->input.file); #endif } /* Select the output text for this step. */ if (sequence_index < request->sequence_length - 1) { subtask->output = output; #if USE_TMPNAM # if DOSWIN_OR_OS2 if (*subtask->output.name == NUL) tmpnam (subtask->output.name); # endif if (subtask->output.file = fopen (subtask->output.name, "w"), subtask->output.file == NULL) { recode_perror (outer, "fopen (%s)", subtask->output.name); return false; } #endif #if USE_TMPFILE if (subtask->output.file = tmpfile (), subtask->output.file == NULL) { recode_perror (NULL, "tmpfile ()"); return false; } #endif } else { subtask->output = task->output; if (subtask->output.name) { if (!*subtask->output.name) subtask->output.file = stdout; else if (subtask->output.file = fopen (subtask->output.name, "w"), subtask->output.file == NULL) { recode_perror (NULL, "fopen (%s)", subtask->output.name); return false; } } } /* Execute one recoding step. */ step = request->sequence_array + sequence_index; subtask->step = step; (*step->transform_routine) (subtask); /* Post-step clean up. */ if (sequence_index == 0) { if (subtask->input.name && *subtask->input.name) fclose (subtask->input.file); task->input = subtask->input; subtask->input.name = NULL; subtask->input.buffer = NULL; subtask->input.cursor = NULL; subtask->input.limit = NULL; } else { fclose (subtask->input.file); #if USE_TMPNAM unlink (subtask->input.name); #endif } #if USE_TMPNAM fclose (subtask->output.file); #endif /* Prepare for next step. */ task->swap_input = RECODE_SWAP_UNDECIDED; if (sequence_index < request->sequence_length - 1) { output = input; input = subtask->output; } else { if (subtask->output.name && *subtask->output.name) fclose (subtask->output.file); task->output = subtask->output; } } SUBTASK_RETURN (subtask); } #if HAVE_PIPE #if !HAVE_DUP2 /*------------------------------------------------------------------------. | Duplicate the OLD_FD file descriptor into NEW_FD, closing NEW_FD first | | if it is used. This implementation presumes both OLD_FD and NEW_FD are | | valid file descriptors. | `------------------------------------------------------------------------*/ /* Overall idea taken from GNU Emacs 18.55 dup2 (), in src/sysdep.c. */ #include #ifndef F_DUPFD static bool dup2_recursive (int old_fd, int new_fd) { int fd; /* Attempt to dup OLD_FD to NEW_FD. If not successful, call dup2 recursively, filling the file descriptor table until NEW_FD is reached. Then close all the spurious file descriptors we created. */ if (fd = dup (old_fd) && fd != new_fd) if (fd < 0 || dup2_recursive (old_fd, new_fd) < 0 || close (fd) < 0) return false; return true; } #endif /* not F_DUPFD */ static int dup2 (int old_fd, int new_fd) { /* If OLD_FD or NEW_FD were not valid file descriptors, dup2 should ideally return -1 with errno set to EBADF. This is not checked. */ if (old_fd != new_fd) { close (new_fd); #ifdef F_DUPFD if (fcntl (old_fd, F_DUPFD, new_fd) != new_fd) return -1; #else if (!dup2_recursive (old_fd, new_fd)) return -1; #endif } return new_fd; } #endif /* not HAVE_DUP2 */ /*-------------------------------------------------------------------------. | Execute the conversion sequence, forking the program many times for all | | elementary steps, interconnecting them with pipes. This routine assumes | | that more than one recoding step is needed. | `-------------------------------------------------------------------------*/ #if 1 /* FIXME: This is no good. The main process might open too many files for one thing. All of it should create children from left to right, instead of all children to a single parent right to left. */ static bool perform_pipe_sequence (RECODE_TASK task) { RECODE_CONST_REQUEST request = task->request; RECODE_OUTER outer = request->outer; struct recode_subtask subtask_block; RECODE_SUBTASK subtask = &subtask_block; unsigned sequence_index; /* index into sequence */ RECODE_CONST_STEP step; /* pointer into single_steps */ int pipe_pair[2]; /* pair of file descriptors for a pipe */ int child_process; /* child process number, zero if child */ WAIT_T wait_status; /* status returned by wait() */ memset (subtask, 0, sizeof (struct recode_subtask)); subtask->task = task; subtask->input = task->input; subtask->output = task->output; /* Prepare the final output file. */ if (!*subtask->output.name) subtask->output.file = stdout; else if (subtask->output.file = fopen (subtask->output.name, "w"), subtask->output.file == NULL) { recode_perror (outer, "fopen (%s)", subtask->output.name); return false; } /* Create all subprocesses, from the last to the first, and interconnect them. */ for (sequence_index = request->sequence_length - 1; sequence_index > 0; sequence_index--) { if (pipe (pipe_pair) < 0) { recode_perror (outer, "pipe ()"); return false; } if (child_process = fork (), child_process < 0) { recode_perror (outer, "fork ()"); return false; } if (child_process == 0) { /* The child executes its recoding step, reading from the pipe and writing to the current output file; then it exits. */ if (close (pipe_pair[1]) < 0) { recode_perror (outer, "close ()"); return false; } if (subtask->input.file = fdopen (pipe_pair[0], "r"), subtask->input.file == NULL) { recode_perror (outer, "fdopen ()"); return false; } step = request->sequence_array + sequence_index; subtask->step = step; (*step->transform_routine) (subtask); fclose (subtask->input.file); if (sequence_index < request->sequence_length - 1 || *subtask->output.name) fclose (subtask->output.file); exit (task->error_so_far < task->fail_level ? EXIT_SUCCESS : EXIT_FAILURE); } else { /* The parent redirects the current output file to the pipe. */ if (dup2 (pipe_pair[1], fileno (subtask->output.file)) < 0) { recode_perror (outer, "dup2 ()"); return false; } if (close (pipe_pair[0]) < 0) { recode_perror (outer, "close ()"); return false; } if (close (pipe_pair[1]) < 0) { recode_perror (outer, "close ()"); return false; } } } /* All the children are created, blocked on read. Now, feed the whole chain of processes with the output of the first recoding step. */ if (!*subtask->input.name) subtask->input.file = stdin; else if (subtask->input.file = fopen (subtask->input.name, "r"), subtask->input.file == NULL) { recode_perror (outer, "fopen (%s)", subtask->input.name); return false; } step = request->sequence_array; subtask->step = step; (*step->transform_routine) (subtask); if (*subtask->input.name) fclose (subtask->input.file); fclose (subtask->output.file); /* Wait on all children, mainly to avoid synchronisation problems on output file contents, but also to reduce the number of zombie processes in case the user recodes many files at once. */ while (wait (&wait_status) > 0) { /* Diagnose and abort on any abnormally terminating child. */ #if 0 /* FIXME: Bruno would prefer this. */ if (!(WIFEXITED (wait_status) || (WIFSIGNALED (wait_status) && WTERMSIG (wait_status) == SIGPIPE))) #endif if ((wait_status & MASK (8)) != 0 && (wait_status & MASK (8)) != SIGPIPE) { recode_error (outer, _("Child process wait status is 0x%0.2x"), wait_status); return false; } /* Check for a nonzero exit from the terminating child. */ if (WIFEXITED (wait_status) ? WEXITSTATUS (wait_status) != 0 : WTERMSIG (wait_status) != 0) /* FIXME: It is not very clear what happened in sub-processes. */ if (task->error_so_far < task->fail_level) { task->error_so_far = task->fail_level; task->error_at_step = step; } } #if FIXME if (interrupted) /* FIXME: It is not very clear what happened in sub-processes. */ if (task->error_so_far < task->fail_level) { task->error_so_far = task->fail_level; task->error_at_step = step; } #endif SUBTASK_RETURN (subtask); } #else /* not 1 */ static bool perform_pipe_sequence (RECODE_TASK task) { RECODE_CONST_REQUEST request = task->request; struct recode_subtask subtask_block; RECODE_SUBTASK subtask = &subtask_block; unsigned sequence_index; /* index into sequence */ RECODE_CONST_STEP step; /* pointer into single_steps */ int pipe_pair[2]; /* pair of file descriptors for a pipe */ int child_process; /* child process number, zero if child */ WAIT_T wait_status; /* status returned by wait() */ memset (subtask, 0, sizeof (struct recode_subtask)); subtask->task = task; subtask->input = task->input; subtask->output = task->output; /* Prepare the final files. */ if (!*subtask->input.name) subtask->input.file = stdin; else if (subtask->input.file = fopen (subtask->input.name, "r"), subtask->input.file == NULL) { recode_perror (outer, "fopen (%s)", subtask->input.name); return false; } if (!*subtask->output.name) subtask->output.file = stdout; else if (subtask->output.file = fopen (subtask->output.name, "w"), subtask->output.file == NULL) { recode_perror (outer, "fopen (%s)", subtask->output.name); return false; } /* Create all subprocesses, from the first to the last, and interconnect them. */ for (sequence_index = 0; sequence_index < request->sequence_length - 1; sequence_index++) { if (pipe (pipe_pair) < 0) { recode_perror (outer, "pipe ()"); return false; } if (child_process = fork (), child_process < 0) { recode_perror (outer, "fork ()"); return false; } if (child_process == 0) { /* The child executes its recoding step, reading from the pipe and writing to the current output file; then it exits. */ if (close (pipe_pair[1]) < 0) { recode_perror (outer, "close ()"); return false; } if (subtask->input.file = fdopen (pipe_pair[0], "r"), subtask->input.file == NULL) { recode_perror (outer, "fdopen ()"); return false; } step = request->sequence_array[sequence_index]; subtask->step = step; (*step->transform_routine) (subtask); fclose (subtask->input.file); if (sequence_index < request->sequence_length - 1 || *subtask->output.name) fclose (subtask->output.file); exit (task->error_so_far < task->fail_level ? EXIT_SUCCESS : EXIT_FAILURE); } else { /* The parent redirects the current output file to the pipe. */ if (dup2 (pipe_pair[1], fileno (subtask->output.file)) < 0) { recode_perror (outer, "dup2 ()"); return false; } if (close (pipe_pair[0]) < 0) { recode_perror (outer, "close ()"); return false; } if (close (pipe_pair[1]) < 0) { recode_perror (outer, "close ()"); return false; } } } /* All processes execute the following common code, each with its proper value for SEQUENCE_INDEX, CHILD_PROCESS, etc. */ /* All the children are created, blocked on read. Now, feed the whole chain of processes with the output of the first recoding step. */ if (!*subtask->input.name) subtask->input.file = stdin; else if (subtask->input.file = fopen (subtask->input.name, "r"), subtask->input.file == NULL) { recode_perror (outer, "fopen (%s)", subtask->input.name); return false; } step = request->sequence_array[0]; subtask->step = step; (*step->transform_routine) (subtask); if (*subtask->input.name) fclose (subtask->input.file); fclose (subtask->output.file); /* Wait on all children, mainly to avoid synchronisation problems on output file contents, but also to reduce the number of zombie processes in case the user recodes many files at once. */ while (wait (&wait_status) > 0) { /* Diagnose and abort on any abnormally terminating child. */ if (!(WIFEXITED (wait_status) || (WIFSIGNALED (wait_status) && WTERMSIG (wait_status) == SIGPIPE))) { recode_error (outer, _("Child process wait status is 0x%0.2x"), wait_status); return false; } /* Check for a nonzero exit from the terminating child. */ if (WIFEXITED (wait_status) ? WEXITSTATUS (wait_status) != 0 : WTERMSIG (wait_status) != 0) /* FIXME: It is not very clear what happened in sub-processes. */ if (task->error_so_far < task->fail_level) { task->error_so_far = task->fail_level; task->error_at_step = step; } } if (interrupted) /* FIXME: It is not very clear what happened in sub-processes. */ if (task->error_so_far < task->fail_level) { task->error_so_far = task->fail_level; task->error_at_step = step; } SUBTASK_RETURN (subtask); } #endif /* not 1 */ #endif /* HAVE_PIPE */ /* Library interface. */ /* See the recode manual for a more detailed description of the library interface. */ /*-----------------------. | TASK level functions. | `-----------------------*/ RECODE_TASK recode_new_task (RECODE_CONST_REQUEST request) { RECODE_OUTER outer = request->outer; RECODE_TASK task; if (!ALLOC (task, 1, struct recode_task)) return NULL; memset (task, 0, sizeof (struct recode_task)); task->request = request; task->strategy = RECODE_STRATEGY_UNDECIDED; task->fail_level = RECODE_NOT_CANONICAL; task->abort_level = RECODE_USER_ERROR; task->error_so_far = RECODE_NO_ERROR; task->swap_input = RECODE_SWAP_UNDECIDED; task->byte_order_mark = true; return task; } bool recode_delete_task (RECODE_TASK task) { free (task); return true; } #if DOSWIN # if HAVE_UNISTD_H # include /* for isatty */ # endif # include /* for O_BINARY and _fmode */ # include /* for setmode */ #endif /*------------------------------------------------------------------------. | Execute the conversion sequence for a recoding TASK, using the selected | | strategy whenever more than one conversion step is needed. If no | | conversion are needed, merely copy the input onto the output. Returns | | zero if the recoding has been found to be non-reversible. Tell what | | goes on if VERBOSE. | `------------------------------------------------------------------------*/ /* If some sequencing strategies are missing, this routine automatically uses fallback strategies. */ bool recode_perform_task (RECODE_TASK task) { RECODE_CONST_REQUEST request = task->request; bool success; #if DOSWIN_OR_OS2 /* Don't switch the console device to binary mode. On several DOSish systems this has unpleasant side effects. For example, the Ctrl-Z character is no longer interpreted as EOF, and thus the poor user cannot signal end of input; the INTR character also doesn't work, so they cannot even interrupt the program, and are stuck. On the other hand, output to the screen doesn't have to follow the end-of-line format exactly, since it is going to be discarded anyway. */ if (task->input.name && !*task->input.name && !isatty (fileno (stdin))) setmode (fileno (stdin), O_BINARY); if (task->output.name && !*task->output.name && !isatty (fileno (stdout))) setmode (fileno (stdout), O_BINARY); # ifdef __EMX__ { extern int _fmode_bin; _fmode_bin = 1; } # else _fmode = O_BINARY; # endif #endif if (request->sequence_length > 1) switch (task->strategy) { case RECODE_STRATEGY_UNDECIDED: /* Let's use only memory if either end is memory, or only temporary files if both ends are files. This is a crude choice, FIXME! Leave task->strategy alone, as the same task may be used many times differently, and the fact the strategy is undecided is a clue we want to protect between calls. */ if ((task->input.name || task->input.file) && (task->output.name || task->output.file)) success = perform_pass_sequence (task); else success = perform_memory_sequence (task); break; case RECODE_SEQUENCE_IN_MEMORY: success = perform_memory_sequence (task); break; case RECODE_SEQUENCE_WITH_PIPE: #if HAVE_PIPE success = perform_pipe_sequence (task); break; #else /* Fall through on files if there are no pipes. */ #endif case RECODE_SEQUENCE_WITH_FILES: success = perform_pass_sequence (task); break; default: success = false; /* for lint */ } else { struct recode_subtask subtask_block; RECODE_SUBTASK subtask = &subtask_block; /* Execute a simple recoding (a single step, or no step at all). */ memset (subtask, 0, sizeof (struct recode_subtask)); subtask->task = task; subtask->input = task->input; subtask->output = task->output; if (subtask->input.name) { if (!*subtask->input.name) subtask->input.file = stdin; else if (subtask->input.file = fopen (subtask->input.name, "r"), subtask->input.file == NULL) { recode_perror (NULL, "fopen (%s)", subtask->input.name); return false; } } if (subtask->output.name) { if (!*subtask->output.name) subtask->output.file = stdout; else if (subtask->output.file = fopen (subtask->output.name, "w"), subtask->output.file == NULL) { recode_perror (NULL, "fopen (%s)", subtask->output.name); return false; } } if (request->sequence_length == 1) { RECODE_CONST_STEP step = request->sequence_array; subtask->step = step; success = (*step->transform_routine) (subtask); } else success = transform_mere_copy (subtask); if (subtask->input.name && *subtask->input.name) fclose (subtask->input.file); if (subtask->output.name && *subtask->output.name) fclose (subtask->output.file); } return success; } recode-3.6/src/xmalloc.c0100644000000000000000000000556707142144411013727 0ustar rootroot/* xmalloc.c -- malloc with out of memory checking Copyright (C) 1990-1997, 98, 99 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if HAVE_CONFIG_H # include #endif #include #if STDC_HEADERS # include #else void *calloc (); void *malloc (); void *realloc (); void free (); #endif #if ENABLE_NLS # include # define _(Text) gettext (Text) #else # define textdomain(Domain) # define _(Text) Text #endif #define N_(Text) Text #include "error.h" #include "xalloc.h" #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #ifndef HAVE_DONE_WORKING_MALLOC_CHECK you must run the autoconf test for a properly working malloc -- see malloc.m4 #endif #ifndef HAVE_DONE_WORKING_REALLOC_CHECK you must run the autoconf test for a properly working realloc -- see realloc.m4 #endif /* Exit value when the requested amount of memory is not available. The caller may set it to some other value. */ int xalloc_exit_failure = EXIT_FAILURE; /* If non NULL, call this function when memory is exhausted. */ void (*xalloc_fail_func) PARAMS ((void)) = 0; /* If XALLOC_FAIL_FUNC is NULL, or does return, display this message before exiting when memory is exhausted. Goes through gettext. */ char *const xalloc_msg_memory_exhausted = N_("Memory exhausted"); void xalloc_die (void) { if (xalloc_fail_func) (*xalloc_fail_func) (); error (xalloc_exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted)); /* The `noreturn' cannot be given to error, since it may return if its first argument is 0. To help compilers understand the xalloc_die does terminate, call exit. */ exit (EXIT_FAILURE); } /* Allocate N bytes of memory dynamically, with error checking. */ void * xmalloc (size_t n) { void *p; p = malloc (n); if (p == 0) xalloc_die (); return p; } /* Change the size of an allocated block of memory P to N bytes, with error checking. If P is NULL, run xmalloc. */ void * xrealloc (void *p, size_t n) { p = realloc (p, n); if (p == 0) xalloc_die (); return p; } /* Allocate memory for N elements of S bytes, with error checking. */ void * xcalloc (size_t n, size_t s) { void *p; p = calloc (n, s); if (p == 0) xalloc_die (); return p; } recode-3.6/src/african.c0100644000000000000000000000634607126661003013672 0ustar rootroot/* Traitement de certaines tables africaines. Copyright © 1999, 2000 Progiciels Bourbeau-Pinard inc. François Pinard , 1997. */ #include "common.h" /* Bambara, Ewondo and Fulfude. */ static const unsigned short ful_data[] = { 161, 0x0181, DONE, 162, 0x018A, DONE, 163, 0x0194, DONE, 164, 0x0198, DONE, 165, 0x01A4, DONE, 166, 0x01AC, DONE, 167, 0x01A9, DONE, 168, 0x019D, DONE, 169, 0x014A, DONE, 170, 0x0189, DONE, 172, 0x0191, DONE, 174, 0x01B3, DONE, 175, 0x0193, DONE, 177, 0x0253, DONE, 178, 0x0257, DONE, 179, 0x0263, DONE, 180, 0x0199, DONE, 181, 0x01A5, DONE, 182, 0x01AD, DONE, 183, 0x0283, DONE, 184, 0x0272, DONE, 185, 0x014B, DONE, 186, 0x0256, DONE, 188, 0x0192, DONE, 189, 0x0294, DONE, 190, 0x01B4, DONE, 191, 0x0260, DONE, 197, 0x018E, DONE, 208, 0x0190, DONE, 215, 0x0152, DONE, 216, 0x0186, DONE, 221, 0x018E, 0x0301, DONE, 222, 0x0186, 0x0301, DONE, 223, 0x01B2, DONE, 229, 0x0259, DONE, 240, 0x025B, DONE, 247, 0x0153, DONE, 248, 0x0254, DONE, 253, 0x0259, 0x0301, DONE, 254, 0x0254, 0x0301, DONE, 255, 0x028B, DONE, DONE }; /* Linguala, Sango and Wolof. */ static const unsigned short lin_data[] = { 161, 0x0190, 0x0300, DONE, 162, 0x0190, 0x0301, DONE, 163, 0x0190, 0x0302, DONE, 164, 0x0190, 0x030C, DONE, 165, 0x0186, 0x0300, DONE, 166, 0x0186, 0x0301, DONE, 167, 0x0186, 0x0302, DONE, 168, 0x019D, DONE, 169, 0x014A, DONE, 170, 0x004E, 0x0302, DONE, 172, 0x004E, 0x0308, DONE, 174, 0x01B3, DONE, 175, 0x0186, 0x030C, DONE, 177, 0x025B, 0x0300, DONE, 178, 0x025B, 0x0301, DONE, 179, 0x025B, 0x0302, DONE, 180, 0x025B, 0x030C, DONE, 181, 0x0254, 0x0300, DONE, 182, 0x0254, 0x0301, DONE, 183, 0x0254, 0x0302, DONE, 184, 0x0272, DONE, 185, 0x014B, DONE, 186, 0x006E, 0x0302, DONE, 188, 0x006E, 0x0308, DONE, 189, 0x0294, DONE, 190, 0x01B4, DONE, 191, 0x0254, 0x030C, DONE, 195, 0x01CD, DONE, 197, 0x018E, DONE, 208, 0x0190, DONE, 213, 0x01D1, DONE, 215, 0x0152, DONE, 216, 0x0186, DONE, 221, 0x011A, DONE, 222, 0x01CF, DONE, 223, 0x01D3, DONE, 227, 0x01CE, DONE, 229, 0x0259, DONE, 240, 0x025B, DONE, 245, 0x01D2, DONE, 247, 0x0153, DONE, 248, 0x0254, DONE, 253, 0x011B, DONE, 254, 0x01D0, DONE, 255, 0x01D4, DONE, DONE }; bool module_african (RECODE_OUTER outer) { if (!declare_explode_data (outer, ful_data, "AFRFUL-102-BPI_OCIL", NULL)) return false; if (!declare_alias (outer, "bambara", "AFRFUL-102-BPI_OCIL")) return false; if (!declare_alias (outer, "bra", "AFRFUL-102-BPI_OCIL")) return false; if (!declare_alias (outer, "ewondo", "AFRFUL-102-BPI_OCIL")) return false; if (!declare_alias (outer, "fulfulde", "AFRFUL-102-BPI_OCIL")) return false; if (!declare_explode_data (outer, lin_data, "AFRLIN-104-BPI_OCIL", NULL)) return false; if (!declare_alias (outer, "lingala", "AFRLIN-104-BPI_OCIL")) return false; if (!declare_alias (outer, "lin", "AFRLIN-104-BPI_OCIL")) return false; if (!declare_alias (outer, "sango", "AFRLIN-104-BPI_OCIL")) return false; if (!declare_alias (outer, "wolof", "AFRLIN-104-BPI_OCIL")) return false; return true; } void delmodule_african (RECODE_OUTER outer) { } recode-3.6/src/afrtran.c0100644000000000000000000002253307126661005013722 0ustar rootroot/* Traitement de certaines tables africaines. Copyright © 1999, 2000 Progiciels Bourbeau-Pinard inc. François Pinard , 1997. */ #include "common.h" static const unsigned short ful_data[] = { 160, '/', '_', DONE, 161, 'B', '[', DONE, 162, 'D', '[', DONE, 163, 'G', ']', DONE, 164, 'K', '[', DONE, 165, 'P', '[', DONE, 166, 'T', '[', DONE, 167, 'S', ']', DONE, 168, 'N', ']', DONE, 169, 'N', '[', DONE, 170, 'D', ']', DONE, 171, '<', '<', DONE, 172, 'F', ']', DONE, 173, '\\', '-', DONE, 174, 'Y', '[', DONE, 175, 'G', '[', DONE, 176, '_', 'D', 'G', DONE, 177, 'b', '[', DONE, 178, 'd', '[', DONE, 179, 'g', ']', DONE, 180, 'k', '[', DONE, 181, 'p', '[', DONE, 182, 't', '[', DONE, 183, 's', ']', DONE, 184, 'n', ']', DONE, 185, 'n', '[', DONE, 186, 'd', ']', DONE, 187, '>', '>', DONE, 188, 'f', ']', DONE, 189, '?', '^', DONE, 190, 'y', '[', DONE, 191, 'g', '[', DONE, 192, 'A', '`', DONE, 193, 'A', '\\', '\'', DONE, 194, 'A', '^', DONE, 195, 'A', '~', DONE, 196, 'A', '"', DONE, 197, 'E', '<', DONE, 198, 'A', 'E', '+', DONE, 199, 'C', '\\', ',', DONE, 200, 'E', '`', DONE, 201, 'E', '\\', '\'', DONE, 202, 'E', '^', DONE, 203, 'E', '"', DONE, 204, 'I', '`', DONE, 205, 'I', '\\', '\'', DONE, 206, 'I', '^', DONE, 207, 'I', '"', DONE, 208, 'E', '[', DONE, 209, 'N', '~', DONE, 210, 'O', '`', DONE, 211, 'O', '\\', '\'', DONE, 212, 'O', '^', DONE, 213, 'O', '~', DONE, 214, 'O', '"', DONE, 215, 'O', 'E', '+', DONE, 216, 'O', '[', DONE, 217, 'U', '`', DONE, 218, 'U', '\\', '\'', DONE, 219, 'U', '^', DONE, 220, 'U', '"', DONE, 221, 'E', '<', '\'', DONE, 222, 'O', '[', '\'', DONE, 223, 'V', '[', DONE, 224, 'a', '`', DONE, 225, 'a', '\\', '\'', DONE, 226, 'a', '^', DONE, 227, 'a', '~', DONE, 228, 'a', '"', DONE, 229, 'e', '<', DONE, 230, 'a', 'e', '+', DONE, 231, 'c', '\\', ',', DONE, 232, 'e', '`', DONE, 233, 'e', '\\', '\'', DONE, 234, 'e', '^', DONE, 235, 'e', '"', DONE, 236, 'i', '`', DONE, 237, 'i', '\\', '\'', DONE, 238, 'i', '^', DONE, 239, 'i', '"', DONE, 240, 'e', '[', DONE, 241, 'n', '~', DONE, 242, 'o', '`', DONE, 243, 'o', '\\', '\'', DONE, 244, 'o', '^', DONE, 245, 'o', '~', DONE, 246, 'o', '"', DONE, 247, 'o', 'e', '+', DONE, 248, 'o', '[', DONE, 249, 'u', '`', DONE, 250, 'u', '\\', '\'', DONE, 251, 'u', '^', DONE, 252, 'u', '"', DONE, 253, 'e', '<', '\'', DONE, 254, 'o', '[', '\'', DONE, 255, 'v', '[', DONE, DONE }; /* -- */ static const unsigned short l1_data[] = { 160, '/', '_', DONE, 161, '!', '<', DONE, 162, '_', 'C', 't', DONE, 163, '_', 'P', 'd', DONE, 164, '_', 'C', 'u', DONE, 165, '_', 'Y', 'e', DONE, 166, '_', 'B', 'B', DONE, 167, '_', 'S', 'E', DONE, 168, '/', '\\', '"', DONE, 169, '_', 'C', 'o', DONE, 170, '_', 'F', 'o', DONE, 171, '<', '<', DONE, 172, '_', 'N', 'O', DONE, 173, '\\', '-', DONE, 174, '_', 'R', 'g', DONE, 175, '/', '\\', '=', DONE, 176, '_', 'D', 'G', DONE, 177, '_', '+', '-', DONE, 178, '2', '^', DONE, 179, '3', '^', DONE, 180, '/', '\\', '\'', DONE, 181, '_', 'M', 'y', DONE, 182, '_', 'P', 'I', DONE, 183, '_', 'M', 'D', DONE, 184, '/', '\\', ',', DONE, 185, '1', '^', DONE, 186, '_', 'M', 'o', DONE, 187, '>', '>', DONE, 188, '_', '1', '4', DONE, 189, '_', '1', '2', DONE, 190, '_', '3', '4', DONE, 191, '?', '<', DONE, 192, 'A', '`', DONE, 193, 'A', '\\', '\'', DONE, 194, 'A', '^', DONE, 195, 'A', '~', DONE, 196, 'A', '"', DONE, 197, 'A', '\\', 'R', DONE, 198, 'A', 'E', '+', DONE, 199, 'C', '\\', ',', DONE, 200, 'E', '`', DONE, 201, 'E', '\\', '\'', DONE, 202, 'E', '^', DONE, 203, 'E', '"', DONE, 204, 'I', '`', DONE, 205, 'I', '\\', '\'', DONE, 206, 'I', '^', DONE, 207, 'I', '"', DONE, 208, 'D', '\\', 'x', DONE, 209, 'N', '~', DONE, 210, 'O', '`', DONE, 211, 'O', '\\', '\'', DONE, 212, 'O', '^', DONE, 213, 'O', '~', DONE, 214, 'O', '"', DONE, 215, '_', 'X', 's', DONE, 216, 'O', '\\', 'X', DONE, 217, 'U', '`', DONE, 218, 'U', '\\', '\'', DONE, 219, 'U', '^', DONE, 220, 'U', '"', DONE, 221, 'Y', '\\', '\'', DONE, 222, '_', 'T', 'H', DONE, 223, 's', 's', '+', DONE, 224, 'a', '`', DONE, 225, 'a', '\\', '\'', DONE, 226, 'a', '^', DONE, 227, 'a', '~', DONE, 228, 'a', '"', DONE, 229, 'a', '\\', 'R', DONE, 230, 'a', 'e', '+', DONE, 231, 'c', '\\', ',', DONE, 232, 'e', '`', DONE, 233, 'e', '\\', '\'', DONE, 234, 'e', '^', DONE, 235, 'e', '"', DONE, 236, 'i', '`', DONE, 237, 'i', '\\', '\'', DONE, 238, 'i', '^', DONE, 239, 'i', '"', DONE, 240, 'd', '\\', 'x', DONE, 241, 'n', '~', DONE, 242, 'o', '`', DONE, 243, 'o', '\\', '\'', DONE, 244, 'o', '^', DONE, 245, 'o', '~', DONE, 246, 'o', '"', DONE, 247, '_', 'D', 's', DONE, 248, 'o', '\\', 'X', DONE, 249, 'u', '`', DONE, 250, 'u', '\\', '\'', DONE, 251, 'u', '^', DONE, 252, 'u', '"', DONE, 253, 'y', '\\', '\'', DONE, 254, '_', 't', 'h', DONE, 255, 'y', '"', DONE, DONE }; /* -- */ static const unsigned short lin_data[] = { 160, '/', '_', DONE, 161, 'E', '[', '`', DONE, 162, 'E', '[', '\'', DONE, 163, 'E', '[', '^', DONE, 164, 'E', '[', '\\', 'v', DONE, 165, 'O', '[', '`', DONE, 166, 'O', '[', '\'', DONE, 167, 'O', '[', '^', DONE, 168, 'N', ']', DONE, 169, 'N', '[', DONE, 170, 'N', '^', DONE, 171, '<', '<', DONE, 172, 'N', '"', DONE, 173, '\\', '-', DONE, 174, 'Y', '[', DONE, 175, 'O', '[', '\\', 'v', DONE, 176, '_', 'D', 'G', DONE, 177, 'e', '[', '`', DONE, 178, 'e', '[', '\'', DONE, 179, 'e', '[', '^', DONE, 180, 'e', '[', '\\', 'v', DONE, 181, 'o', '[', '`', DONE, 182, 'o', '[', '\'', DONE, 183, 'o', '[', '^', DONE, 184, 'n', ']', DONE, 185, 'n', '[', DONE, 186, 'n', '^', DONE, 187, '>', '>', DONE, 188, 'n', '"', DONE, 189, '?', '^', DONE, 190, 'y', '[', DONE, 191, 'o', '[', '\\', 'v', DONE, 192, 'A', '`', DONE, 193, 'A', '\\', '\'', DONE, 194, 'A', '^', DONE, 195, 'A', '\\', 'v', DONE, 196, 'A', '"', DONE, 197, 'E', '<', DONE, 198, 'A', 'E', '+', DONE, 199, 'C', '\\', ',', DONE, 200, 'E', '`', DONE, 201, 'E', '\\', '\'', DONE, 202, 'E', '^', DONE, 203, 'E', '"', DONE, 204, 'I', '`', DONE, 205, 'I', '\\', '\'', DONE, 206, 'I', '^', DONE, 207, 'I', '"', DONE, 208, 'E', '[', DONE, 209, 'N', '~', DONE, 210, 'O', '`', DONE, 211, 'O', '\\', '\'', DONE, 212, 'O', '^', DONE, 213, 'O', '\\', 'v', DONE, 214, 'O', '"', DONE, 215, 'O', 'E', '+', DONE, 216, 'O', '[', DONE, 217, 'U', '`', DONE, 218, 'U', '\\', '\'', DONE, 219, 'U', '^', DONE, 220, 'U', '"', DONE, 221, 'E', '\\', 'v', DONE, 222, 'I', '\\', 'v', DONE, 223, 'U', '\\', 'v', DONE, 224, 'a', '`', DONE, 225, 'a', '\\', '\'', DONE, 226, 'a', '^', DONE, 227, 'a', '\\', 'v', DONE, 228, 'a', '"', DONE, 229, 'e', '<', DONE, 230, 'a', 'e', '+', DONE, 231, 'c', '\\', ',', DONE, 232, 'e', '`', DONE, 233, 'e', '\\', '\'', DONE, 234, 'e', '^', DONE, 235, 'e', '"', DONE, 236, 'i', '`', DONE, 237, 'i', '\\', '\'', DONE, 238, 'i', '^', DONE, 239, 'i', '"', DONE, 240, 'e', '[', DONE, 241, 'n', '~', DONE, 242, 'o', '`', DONE, 243, 'o', '\\', '\'', DONE, 244, 'o', '^', DONE, 245, 'o', '\\', 'v', DONE, 246, 'o', '"', DONE, 247, 'o', 'e', '+', DONE, 248, 'o', '[', DONE, 249, 'u', '`', DONE, 250, 'u', '\\', '\'', DONE, 251, 'u', '^', DONE, 252, 'u', '"', DONE, 253, 'e', '\\', 'v', DONE, 254, 'i', '\\', 'v', DONE, 255, 'u', '\\', 'v', DONE, DONE }; /* -- */ bool module_afrtran (RECODE_OUTER outer) { if (!declare_explode_data (outer, ful_data, "AFRFUL-102-BPI_OCIL", "AFRFUL-103-BPI_OCIL")) return false; if (!declare_alias (outer, "t-bambara", "AFRFUL-103-BPI_OCIL")) return false; if (!declare_alias (outer, "t-bra", "AFRFUL-103-BPI_OCIL")) return false; if (!declare_alias (outer, "t-ewondo", "AFRFUL-103-BPI_OCIL")) return false; if (!declare_alias (outer, "t-fulfulde", "AFRFUL-103-BPI_OCIL")) return false; if (!declare_explode_data (outer, l1_data, "ISO-8859-1", "AFRL1-101-BPI_OCIL")) return false; if (!declare_alias (outer, "t-francais", "AFRL1-101-BPI_OCIL")) return false; if (!declare_alias (outer, "t-fra", "AFRL1-101-BPI_OCIL")) return false; if (!declare_explode_data (outer, lin_data, "AFRLIN-104-BPI_OCIL", "AFRLIN-105-BPI_OCIL")) return false; if (!declare_alias (outer, "t-lingala", "AFRLIN-105-BPI_OCIL")) return false; if (!declare_alias (outer, "t-lin", "AFRLIN-105-BPI_OCIL")) return false; if (!declare_alias (outer, "t-sango", "AFRLIN-105-BPI_OCIL")) return false; if (!declare_alias (outer, "t-wolof", "AFRLIN-105-BPI_OCIL")) return false; return true; } void delmodule_afrtran (RECODE_OUTER outer) { } recode-3.6/src/applemac.c0100644000000000000000000001615507126660107014054 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /* Previously, the LF surface was built-in. It is now handled through a separate, optional step. An optimisation might use a flag to trigger old built-in code. For now, depend on a variable preset to false. */ static const bool auto_cr = false; /* Data for Apple Macintosh to ISO Latin-1 code conversions. */ static struct recode_known_pair known_pairs[] = { { 13, 10}, /* (recoding end of lines for Unix) */ /* The previous pair should be first, for being skippable. */ {128, 196}, /* capital letter A diaeresis */ {129, 197}, /* capital letter A with ring above */ {130, 199}, /* capital letter C with cedilla */ {131, 201}, /* capital letter E with acute accent */ {132, 209}, /* capital letter N with tilde */ {133, 214}, /* capital letter O with diaeresis */ {134, 220}, /* capital letter U with diaeresis */ {135, 225}, /* small letter a with acute accent */ {136, 224}, /* small letter a with grave accent */ {137, 226}, /* small letter a with circumflex accent */ {138, 228}, /* small letter a with diaeresis */ {139, 227}, /* small letter a with tilde */ {140, 229}, /* small letter a with ring above */ {141, 231}, /* small letter c with cedilla */ {142, 233}, /* small letter e with acute accent */ {143, 232}, /* small letter e with grave accent */ {144, 234}, /* small letter e with circumflex accent */ {145, 235}, /* small letter e with diaeresis */ {146, 237}, /* small letter i with acute accent */ {147, 236}, /* small letter i with grave accent */ {148, 238}, /* small letter i with circumflex accent */ {149, 239}, /* small letter i with diaeresis */ {150, 241}, /* small letter n with tilde */ {151, 243}, /* small letter o with acute accent */ {152, 242}, /* small letter o with grave accent */ {153, 244}, /* small letter o with circumflex accent */ {154, 246}, /* small letter o with diaeresis */ {155, 245}, /* small letter o with tilde */ {156, 250}, /* small letter u with acute accent */ {157, 249}, /* small letter u with grave accent */ {158, 251}, /* small letter u with circumflex accent */ {159, 252}, /* small letter u with diaeresis */ {161, 176}, /* degree sign */ {162, 162}, /* cent sign */ {163, 163}, /* pound sign */ {164, 167}, /* paragraph sign, section sign */ {166, 182}, /* pilcrow sign */ {167, 223}, /* small german letter sharp s */ {168, 174}, /* registered trade mark sign */ {169, 169}, /* copyright sign */ {174, 198}, /* capital diphthong A with E */ {175, 216}, /* capital letter O with oblique stroke */ {177, 177}, /* plus-minus sign */ {180, 165}, /* yen sign */ {181, 181}, /* small greek letter mu, micro sign */ {187, 170}, /* feminine ordinal indicator */ {188, 186}, /* masculine ordinal indicator */ {190, 230}, /* small diphthong a with e */ {191, 248}, /* small letter o with oblique stroke */ {192, 191}, /* inverted question mark */ {193, 161}, /* inverted exclamation mark */ {194, 172}, /* not sign */ {199, 171}, /* left angle quotation mark */ {200, 187}, /* right angle quotation mark */ {203, 192}, /* capital letter A with grave accent */ {204, 195}, /* capital letter A with tilde */ {205, 213}, /* capital letter O with tilde */ {214, 247}, /* division sign */ {216, 255}, /* small letter y with diaeresis */ {217, 221}, /* capital letter Y with acute accent */ {229, 194}, /* capital letter A with circumflex accent */ {230, 202}, /* capital letter E with circumflex accent */ {231, 193}, /* capital letter A with acute accent */ {232, 203}, /* capital letter E with diaeresis */ {233, 200}, /* capital letter E with grave accent */ {234, 205}, /* capital letter I with acute accent */ {235, 206}, /* capital letter I with circumflex accent */ {236, 207}, /* capital letter I with diaeresis */ {237, 204}, /* capital letter I with grave accent */ {238, 211}, /* capital letter O with acute accent */ {239, 212}, /* capital letter O with circumflex accent */ {241, 210}, /* capital letter O with grave accent */ {242, 218}, /* capital letter U with acute accent */ {243, 219}, /* capital letter U with circumflex accent */ {244, 217}, /* capital letter U with grave accent */ }; #define NUMBER_OF_PAIRS (sizeof (known_pairs) / sizeof (struct recode_known_pair)) static bool init_latin1_applemac (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; return auto_cr ? complete_pairs (request->outer, step, known_pairs, NUMBER_OF_PAIRS, true, true) : complete_pairs (request->outer, step, known_pairs + 1, NUMBER_OF_PAIRS - 1, true, true); } static bool init_applemac_latin1 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; return auto_cr ? complete_pairs (request->outer, step, known_pairs, NUMBER_OF_PAIRS, true, false) : complete_pairs (request->outer, step, known_pairs + 1, NUMBER_OF_PAIRS - 1, true, false); } bool module_applemac (RECODE_OUTER outer) { RECODE_ALIAS alias; if (!declare_single (outer, "Latin-1", "Apple-Mac", outer->quality_byte_to_variable, init_latin1_applemac, NULL)) return false; if (!declare_single (outer, "Apple-Mac", "Latin-1", outer->quality_byte_to_variable, init_applemac_latin1, NULL)) return false; if (alias = declare_alias (outer, "Apple-Mac", "Apple-Mac"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; #if 0 /* FIXME! */ if (!declare_alias (outer, "Apple-Mac", "macintosh")) return false; #endif return true; } void delmodule_applemac (RECODE_OUTER outer) { } recode-3.6/src/atarist.c0100644000000000000000000002036607126660134013740 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1993, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Define for using a double step. */ #define USE_RFC1345_STEP 1 #include "common.h" /* RFC 1345 style description for AtariST (non official). NUSHSXEXETEQAKBLBSHTLFVTFFCRSOSIDLD1D2D3D4NKSYEBCNEMSBECFSGSRSUS SP! " NbDO% & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? AtA B C D E F G H I J K L M N O P Q R S T U V W X Y Z <(//)>'>_ '!a b c d e f g h i j k l m n o p q r s t u v w x y z (!!!!)'?DT C,u:e'a>a:a!aac,e>e:e!i:i>i!A:AAE'aeAEo>o:o!u>u!y:O:U:CtPdYessf2 a'i'o'u'n?N?-a-o?ININO1214!I<<>>a?o?O/o/oeOEA!A?O?':''/-PICoRgTM ijIJA+B+G+D+H+W+Z+X+TjJ+K+L+M+N+S+E+P+ZJQ+R+ShT+N%K%M%P%ZjSECa00 a*b*G*p*S*s*Myt*F*h*Omd*Iof*(-*P=3+->==outer, step, known_pairs, NUMBER_OF_PAIRS, true, true); } static void init_atarist_latin1 (RECODE_STEP step, RECODE_CONST_REQUEST request) { return complete_pairs (request->outer, step, known_pairs, NUMBER_OF_PAIRS, true, false); } #endif /* not USE_RFC1345_STEP */ /* Have this routine only once, for {dec,ini}steps.h to be proper. */ bool module_atarist (RECODE_OUTER outer) { #if USE_RFC1345_STEP return declare_strip_data (outer, &table, "AtariST"); #else return declare_single (outer, "Latin-1", "AtariST", outer->quality_byte_to_variable, init_latin1_atarist, NULL) && declare_single (outer, "AtariST", "Latin-1", outer->quality_byte_to_variable, init_atarist_latin1, NULL); #endif } void delmodule_atarist (RECODE_OUTER outer) { } recode-3.6/src/bangbang.c0100644000000000000000000003027507126660217014032 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static const char *const translation_table[256] = { "!!@", /* 0 */ "!!a", /* 1 */ "!!b", /* 2 */ "!!c", /* 3 */ "!!d", /* 4 */ "!!e", /* 5 */ "!!f", /* 6 */ "!!g", /* 7 */ "!!h", /* 8 */ "!!i", /* 9 */ "\n", /* 10, would have been "!!j" */ "!!k", /* 11 */ "!!l", /* 12 */ "!!m", /* 13 */ "!!n", /* 14 */ "!!o", /* 15 */ "!!p", /* 16 */ "!!q", /* 17 */ "!!r", /* 18 */ "!!s", /* 19 */ "!!t", /* 20 */ "!!u", /* 21 */ "!!v", /* 22 */ "!!w", /* 23 */ "!!x", /* 24 */ "!!y", /* 25 */ "!!z", /* 26 */ "!![", /* 27 */ "!!\\", /* 28 */ "!!]", /* 29 */ "!!^", /* 30 */ "!!_", /* 31 */ " ", /* 32 */ "!\"", /* 33 */ "\"", /* 34 */ "#", /* 35 */ "$", /* 36 */ "%", /* 37 */ "&", /* 38 */ "'", /* 39 */ "(", /* 40 */ ")", /* 41 */ "*", /* 42 */ "+", /* 43 */ ",", /* 44 */ "-", /* 45 */ ".", /* 46 */ "/", /* 47 */ "0", /* 48 */ "1", /* 49 */ "2", /* 50 */ "3", /* 51 */ "4", /* 52 */ "5", /* 53 */ "6", /* 54 */ "7", /* 55 */ "8", /* 56 */ "9", /* 57 */ ":", /* 58 */ ";", /* 59 */ "<", /* 60 */ "=", /* 61 */ ">", /* 62 */ "?", /* 63 */ "@", /* 64 */ "!a", /* 65 */ "!b", /* 66 */ "!c", /* 67 */ "!d", /* 68 */ "!e", /* 69 */ "!f", /* 70 */ "!g", /* 71 */ "!h", /* 72 */ "!i", /* 73 */ "!j", /* 74 */ "!k", /* 75 */ "!l", /* 76 */ "!m", /* 77 */ "!n", /* 78 */ "!o", /* 79 */ "!p", /* 80 */ "!q", /* 81 */ "!r", /* 82 */ "!s", /* 83 */ "!t", /* 84 */ "!u", /* 85 */ "!v", /* 86 */ "!w", /* 87 */ "!x", /* 88 */ "!y", /* 89 */ "!z", /* 90 */ "[", /* 91 */ "\\", /* 92 */ "]", /* 93 */ "^", /* 94 */ "_", /* 95 */ "!@", /* 96 */ "a", /* 97 */ "b", /* 98 */ "c", /* 99 */ "d", /* 100 */ "e", /* 101 */ "f", /* 102 */ "g", /* 103 */ "h", /* 104 */ "i", /* 105 */ "j", /* 106 */ "k", /* 107 */ "l", /* 108 */ "m", /* 109 */ "n", /* 110 */ "o", /* 111 */ "p", /* 112 */ "q", /* 113 */ "r", /* 114 */ "s", /* 115 */ "t", /* 116 */ "u", /* 117 */ "v", /* 118 */ "w", /* 119 */ "x", /* 120 */ "y", /* 121 */ "z", /* 122 */ "![", /* 123 */ "!\\", /* 124 */ "!]", /* 125 */ "!^", /* 126 */ "!_", /* 127 */ NULL, /* 128 */ NULL, /* 129 */ NULL, /* 130 */ NULL, /* 131 */ NULL, /* 132 */ NULL, /* 133 */ NULL, /* 134 */ NULL, /* 135 */ NULL, /* 136 */ NULL, /* 137 */ NULL, /* 138 */ NULL, /* 139 */ NULL, /* 140 */ NULL, /* 141 */ NULL, /* 142 */ NULL, /* 143 */ NULL, /* 144 */ NULL, /* 145 */ NULL, /* 146 */ NULL, /* 147 */ NULL, /* 148 */ NULL, /* 149 */ NULL, /* 150 */ NULL, /* 151 */ NULL, /* 152 */ NULL, /* 153 */ NULL, /* 154 */ NULL, /* 155 */ NULL, /* 156 */ NULL, /* 157 */ NULL, /* 158 */ NULL, /* 159 */ " ", /* 160 no-break space */ NULL, /* 161 inverted exclamation mark */ NULL, /* 162 cent sign */ NULL, /* 163 pound sign */ NULL, /* 164 currency sign */ NULL, /* 165 yen sign */ NULL, /* 166 broken bar */ NULL, /* 167 paragraph sign, section sign */ NULL, /* 168 diaeresis */ NULL, /* 169 copyright sign */ NULL, /* 170 feminine ordinal indicator */ "!>", /* 171 left angle quotation mark */ NULL, /* 172 not sign */ NULL, /* 173 soft hyphen */ NULL, /* 174 registered trade mark sign */ NULL, /* 175 macron */ NULL, /* 176 degree sign */ NULL, /* 177 plus-minus sign */ NULL, /* 178 superscript two */ NULL, /* 179 superscript three */ NULL, /* 180 acute accent */ NULL, /* 181 small greek mu, micro sign */ NULL, /* 182 pilcrow sign */ NULL, /* 183 middle dot */ NULL, /* 184 cedilla */ NULL, /* 185 superscript one */ NULL, /* 186 masculine ordinal indicator */ "!?", /* 187 right angle quotation mark */ NULL, /* 188 vulgar fraction one quarter */ NULL, /* 189 vulgar fraction one half */ NULL, /* 190 vulgar fraction three quarters */ NULL, /* 191 inverted question mark */ NULL, /* 192 capital A with grave accent */ NULL, /* 193 capital A with acute accent */ NULL, /* 194 capital A with circumflex accent */ NULL, /* 195 capital A with tilde */ NULL, /* 196 capital A diaeresis */ NULL, /* 197 capital A with ring above */ NULL, /* 198 capital diphthong A with E */ NULL, /* 199 capital C with cedilla */ NULL, /* 200 capital E with grave accent */ NULL, /* 201 capital E with acute accent */ NULL, /* 202 capital E with circumflex accent */ NULL, /* 203 capital E with diaeresis */ NULL, /* 204 capital I with grave accent */ NULL, /* 205 capital I with acute accent */ NULL, /* 206 capital I with circumflex accent */ NULL, /* 207 capital I with diaeresis */ NULL, /* 208 capital icelandic ETH */ NULL, /* 209 capital N with tilde */ NULL, /* 210 capital O with grave accent */ NULL, /* 211 capital O with acute accent */ NULL, /* 212 capital O with circumflex accent */ NULL, /* 213 capital O with tilde */ NULL, /* 214 capital O with diaeresis */ NULL, /* 215 multiplication sign */ NULL, /* 216 capital O with oblique stroke */ NULL, /* 217 capital U with grave accent */ NULL, /* 218 capital U with acute accent */ NULL, /* 219 capital U with circumflex accent */ NULL, /* 220 capital U with diaeresis */ NULL, /* 221 capital Y with acute accent */ NULL, /* 222 capital icelandic THORN */ NULL, /* 223 small german sharp s */ "!0", /* 224 small a with grave accent */ NULL, /* 225 small a with acute accent */ "!1", /* 226 small a with circumflex accent */ NULL, /* 227 small a with tilde */ NULL, /* 228 small a with diaeresis */ NULL, /* 229 small a with ring above */ "!;", /* 230 small diphthong a with e */ "!=", /* 231 small c with cedilla */ "!3", /* 232 small e with grave accent */ "!2", /* 233 small e with acute accent */ "!5", /* 234 small e with circumflex accent */ "!4", /* 235 small e with diaeresis */ NULL, /* 236 small i with grave accent */ NULL, /* 237 small i with acute accent */ "!7", /* 238 small i with circumflex accent */ "!6", /* 239 small i with diaeresis */ NULL, /* 240 small icelandic eth */ NULL, /* 241 small n with tilde */ NULL, /* 242 small o with grave accent */ NULL, /* 243 small o with acute accent */ "!8", /* 244 small o with circumflex accent */ NULL, /* 245 small o with tilde */ NULL, /* 246 small o with diaeresis */ "!<", /* 247 division sign (or French oe?) */ NULL, /* 248 small o with oblique stroke */ "!9", /* 249 small u with grave accent */ NULL, /* 250 small u with acute accent */ "!:", /* 251 small u with circumflex accent */ NULL, /* 252 small u with diaeresis */ NULL, /* 253 small y with acute accent */ NULL, /* 254 small icelandic thorn */ NULL, /* 255 small y with diaeresis */ }; static bool init_latin1_bangbang (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; step->step_type = RECODE_BYTE_TO_STRING; /* The cast is a way to silently discard the const. */ step->step_table = (void *) translation_table; return true; } static bool transform_bangbang_latin1 (RECODE_SUBTASK subtask) { int input_char; /* current character */ while (input_char = get_byte (subtask), input_char != EOF) { if (input_char >= 'A' && input_char <= 'Z') input_char += 'a' - 'A'; else if (input_char == '!') { input_char = get_byte (subtask); if (input_char >= 'a' && input_char <= 'z') input_char += 'A' - 'a'; else if (input_char < 'A' || input_char > 'Z') switch (input_char) { case '"': input_char = '!'; break; case '0': input_char = 224; break; /* a` */ case '1': input_char = 226; break; /* a^ */ case '2': input_char = 233; break; /* e' */ case '3': input_char = 232; break; /* e` */ case '4': input_char = 235; break; /* e" */ case '5': input_char = 234; break; /* e^ */ case '6': input_char = 236; break; /* e" */ case '7': input_char = 238; break; /* i^ */ case '8': input_char = 244; break; /* o^ */ case '9': input_char = 249; break; /* u` */ case ':': input_char = 251; break; /* u^ */ case '=': input_char = 231; break; /* c, */ case '>': input_char = 171; break; /* `` */ case '?': input_char = 187; break; /* '' */ case ';': input_char = 230; break; /* ae */ case '<': input_char = 247; break; /* oe ??? */ case '@': input_char = '`'; break; case '[': input_char = '{'; break; case '\\': input_char = '|'; break; case ']': input_char = '}'; break; case '^': input_char = '~'; break; case '_': input_char = 127; break; /* del */ case '!': input_char = get_byte (subtask); if (input_char == 'J' || input_char == 'j') RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); /* FIXME: What is canonical? Upper case or lower case? */ if (input_char >= 'A' && input_char <= 'Z') input_char += 1 - 'A'; else if (input_char >= 'a' && input_char <= 'z') input_char += 1 - 'a'; else switch (input_char) { case '@': input_char = 0; break; case '[': input_char = 27; break; case '\\': input_char = 28; break; case ']': input_char = 29; break; case '^': input_char = 30; break; case '_': input_char = 31; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte ('!', subtask); put_byte ('!', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte ('!', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } } put_byte (input_char, subtask); } SUBTASK_RETURN (subtask); } bool module_bangbang (RECODE_OUTER outer) { return declare_single (outer, "Latin-1", "Bang-Bang", outer->quality_byte_to_variable, init_latin1_bangbang, transform_byte_to_variable) && declare_single (outer, "Bang-Bang", "Latin-1", outer->quality_variable_to_byte, NULL, transform_bangbang_latin1); } void delmodule_bangbang (RECODE_OUTER outer) { } recode-3.6/src/cdcnos.c0100644000000000000000000002174007126660232013536 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static const char *const translation_table[128] = { "^5", /* 0 */ "^6", /* 1 */ "^7", /* 2 */ "^8", /* 3 */ "^9", /* 4 */ "^+", /* 5 */ "^-", /* 6 */ "^*", /* 7 */ "^/", /* 8 */ "^(", /* 9 */ "\n", /* 10, would have been "^)" */ "^$", /* 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 */ "$", /* 36 */ "%", /* 37 */ "&", /* 38 */ "'", /* 39 */ "(", /* 40 */ ")", /* 41 */ "*", /* 42 */ "+", /* 43 */ ",", /* 44 */ "-", /* 45 */ ".", /* 46 */ "/", /* 47 */ "0", /* 48 */ "1", /* 49 */ "2", /* 50 */ "3", /* 51 */ "4", /* 52 */ "5", /* 53 */ "6", /* 54 */ "7", /* 55 */ "8", /* 56 */ "9", /* 57 */ "@D", /* 58 */ ";", /* 59 */ "<", /* 60 */ "=", /* 61 */ ">", /* 62 */ "?", /* 63 */ "@A", /* 64 */ "A", /* 65 */ "B", /* 66 */ "C", /* 67 */ "D", /* 68 */ "E", /* 69 */ "F", /* 70 */ "G", /* 71 */ "H", /* 72 */ "I", /* 73 */ "J", /* 74 */ "K", /* 75 */ "L", /* 76 */ "M", /* 77 */ "N", /* 78 */ "O", /* 79 */ "P", /* 80 */ "Q", /* 81 */ "R", /* 82 */ "S", /* 83 */ "T", /* 84 */ "U", /* 85 */ "V", /* 86 */ "W", /* 87 */ "X", /* 88 */ "Y", /* 89 */ "Z", /* 90 */ "[", /* 91 */ "\\", /* 92 */ "]", /* 93 */ "@B", /* 94 */ "_", /* 95 */ "@G", /* 96 */ "^A", /* 97 */ "^B", /* 98 */ "^C", /* 99 */ "^D", /* 100 */ "^E", /* 101 */ "^F", /* 102 */ "^G", /* 103 */ "^H", /* 104 */ "^I", /* 105 */ "^J", /* 106 */ "^K", /* 107 */ "^L", /* 108 */ "^M", /* 109 */ "^N", /* 110 */ "^O", /* 111 */ "^P", /* 112 */ "^Q", /* 113 */ "^R", /* 114 */ "^S", /* 115 */ "^T", /* 116 */ "^U", /* 117 */ "^V", /* 118 */ "^W", /* 119 */ "^X", /* 120 */ "^Y", /* 121 */ "^Z", /* 122 */ "^0", /* 123 */ "^1", /* 124 */ "^2", /* 125 */ "^3", /* 126 */ "^4", /* 127 */ }; static bool init_ascii_cdcnos (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; const char **table; int counter; if (before_options || after_options) return false; if (!ALLOC (table, 256, const char *)) return false; for (counter = 0; counter < 128; counter++) table[counter] = translation_table[counter]; for (; counter < 256; counter++) table[counter] = NULL; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table; return true; } /* Previous obsolete lex code: @A { put_byte ('@', subtask); } @B { put_byte ('^', subtask); } @D { put_byte (':', subtask); } @G { put_byte ('`', subtask); } \^" " { put_byte ( 13, subtask); } \^! { put_byte ( 22, subtask); } \^\" { put_byte ( 20, subtask); } \^# { put_byte ( 16, subtask); } \^$ { put_byte ( 11, subtask); } \^\% { put_byte ( 19, subtask); } \^& { put_byte ( 23, subtask); } \^' { put_byte ( 24, subtask); } \^\( { put_byte ( 9, subtask); } \^\) { put_byte ( 10, subtask); } \^\* { put_byte ( 7, subtask); } \^\+ { put_byte ( 5, subtask); } \^\, { put_byte ( 14, subtask); } \^- { put_byte ( 6, subtask); } \^\. { put_byte ( 15, subtask); } \^\/ { put_byte ( 8, subtask); } \^0 { put_byte ('{', subtask); } \^1 { put_byte ('|', subtask); } \^2 { put_byte ('}', subtask); } \^3 { put_byte ('~', subtask); } \^4 { put_byte (127, subtask); } \^5 { put_byte ( 0, subtask); } \^6 { put_byte ( 1, subtask); } \^7 { put_byte ( 2, subtask); } \^8 { put_byte ( 3, subtask); } \^9 { put_byte ( 4, subtask); } \^; { put_byte ( 31, subtask); } \^< { put_byte ( 26, subtask); } \^= { put_byte ( 12, subtask); } \^> { put_byte ( 27, subtask); } \^? { put_byte ( 25, subtask); } \^@ { put_byte ( 28, subtask); } \^[A-Z] { put_byte (yytext[1]-'A'+'a', subtask); } \^\[ { put_byte ( 17, subtask); } \^\\ { put_byte ( 29, subtask); } \^] { put_byte ( 18, subtask); } \^\^ { put_byte ( 30, subtask); } \^_ { put_byte ( 21, subtask); } \^[a-z] { put_byte (yytext[1], subtask); } */ static bool transform_cdcnos_ascii (RECODE_SUBTASK subtask) { int input_char; /* current character */ while (input_char = get_byte (subtask), input_char != EOF) { switch (input_char) { case '@': switch (input_char = get_byte (subtask), input_char) { case 'A': case 'a': input_char = '@'; break; case 'B': case 'b': input_char = '^'; break; case 'D': case 'd': input_char = ':'; break; case 'G': case 'g': input_char = '`'; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte ('@', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case '^': input_char = get_byte (subtask); if (input_char >= 'A' && input_char <= 'Z') input_char += 'a' - 'A'; else if (input_char < 'a' || input_char > 'z') switch (input_char) { case ' ': input_char = 13; break; case '!': input_char = 22; break; case '"': input_char = 20; break; case '#': input_char = 16; break; case '$': input_char = 11; break; case '%': input_char = 19; break; case '&': input_char = 23; break; case '\'': input_char = 24; break; case '(': input_char = 9; break; case ')': RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); input_char = '\n'; /* 10 */ break; case '*': input_char = 7; break; case '+': input_char = 5; break; case ',': input_char = 14; break; case '-': input_char = 6; break; case '.': input_char = 15; break; case '/': input_char = 8; break; case '0': input_char = '{'; break; case '1': input_char = '|'; break; case '2': input_char = '}'; break; case '3': input_char = '~'; break; case '4': input_char = 127; break; case '5': input_char = 0; break; case '6': input_char = 1; break; case '7': input_char = 2; break; case '8': input_char = 3; break; case '9': input_char = 4; break; case ';': input_char = 31; break; case '<': input_char = 26; break; case '=': input_char = 12; break; case '>': input_char = 27; break; case '?': input_char = 25; break; case '@': input_char = 28; break; case '[': input_char = 17; break; case '\\': input_char = 29; break; case ']': input_char = 18; break; case '^': input_char = 30; break; case '_': input_char = 21; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte ('^', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; } put_byte (input_char, subtask); } SUBTASK_RETURN (subtask); } bool module_cdcnos (RECODE_OUTER outer) { return declare_single (outer, "ASCII-BS", "CDC-NOS", outer->quality_byte_to_variable, init_ascii_cdcnos, transform_byte_to_variable) && declare_single (outer, "CDC-NOS", "ASCII-BS", outer->quality_variable_to_byte, NULL, transform_cdcnos_ascii) && declare_alias (outer, "NOS", "CDC-NOS"); } void delmodule_cdcnos (RECODE_OUTER outer) { } recode-3.6/src/ebcdic.c0100644000000000000000000002573707126660157013516 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define ASCII "ASCII" /* Previously: #define ASCII "ASCII-BS" */ #include "common.h" static unsigned char const ascii_to_ebcdic[256] = { 0, 1, 2, 3, 55, 45, 46, 47, /* 0 - 7 */ 22, 5, 37, 11, 12, 13, 14, 15, /* 8 - 15 */ 16, 17, 18, 19, 60, 61, 50, 38, /* 16 - 23 */ 24, 25, 63, 39, 28, 29, 30, 31, /* 24 - 31 */ 64, 79, 127, 123, 91, 108, 80, 125, /* 32 - 39 */ 77, 93, 92, 78, 107, 96, 75, 97, /* 40 - 47 */ 240, 241, 242, 243, 244, 245, 246, 247, /* 48 - 55 */ 248, 249, 122, 94, 76, 126, 110, 111, /* 56 - 63 */ 124, 193, 194, 195, 196, 197, 198, 199, /* 64 - 71 */ 200, 201, 209, 210, 211, 212, 213, 214, /* 72 - 79 */ 215, 216, 217, 226, 227, 228, 229, 230, /* 80 - 87 */ 231, 232, 233, 74, 224, 90, 95, 109, /* 88 - 95 */ 121, 129, 130, 131, 132, 133, 134, 135, /* 96 - 103 */ 136, 137, 145, 146, 147, 148, 149, 150, /* 104 - 111 */ 151, 152, 153, 162, 163, 164, 165, 166, /* 112 - 119 */ 167, 168, 169, 192, 106, 208, 161, 7, /* 120 - 127 */ 32, 33, 34, 35, 36, 21, 6, 23, /* 128 - 135 */ 40, 41, 42, 43, 44, 9, 10, 27, /* 136 - 143 */ 48, 49, 26, 51, 52, 53, 54, 8, /* 144 - 151 */ 56, 57, 58, 59, 4, 20, 62, 225, /* 152 - 159 */ 65, 66, 67, 68, 69, 70, 71, 72, /* 160 - 167 */ 73, 81, 82, 83, 84, 85, 86, 87, /* 168 - 175 */ 88, 89, 98, 99, 100, 101, 102, 103, /* 176 - 183 */ 104, 105, 112, 113, 114, 115, 116, 117, /* 184 - 191 */ 118, 119, 120, 128, 138, 139, 140, 141, /* 192 - 199 */ 142, 143, 144, 154, 155, 156, 157, 158, /* 200 - 207 */ 159, 160, 170, 171, 172, 173, 174, 175, /* 208 - 215 */ 176, 177, 178, 179, 180, 181, 182, 183, /* 216 - 223 */ 184, 185, 186, 187, 188, 189, 190, 191, /* 224 - 231 */ 202, 203, 204, 205, 206, 207, 218, 219, /* 232 - 239 */ 220, 221, 222, 223, 234, 235, 236, 237, /* 240 - 247 */ 238, 239, 250, 251, 252, 253, 254, 255, /* 248 - 255 */ }; static unsigned char const ascii_to_ebcdic_ccc[256] = { 0, 1, 2, 3, 55, 45, 46, 47, /* 0 - 7 */ 22, 5, 37, 11, 12, 13, 14, 15, /* 8 - 15 */ 16, 17, 18, 19, 60, 61, 50, 38, /* 16 - 23 */ 24, 25, 63, 39, 28, 29, 30, 31, /* 24 - 31 */ 64, 90, 127, 123, 91, 108, 80, 125, /* 32 - 39 */ 77, 93, 92, 78, 107, 96, 75, 97, /* 40 - 47 */ 240, 241, 242, 243, 244, 245, 246, 247, /* 48 - 55 */ 248, 249, 122, 94, 76, 126, 110, 111, /* 56 - 63 */ 124, 193, 194, 195, 196, 197, 198, 199, /* 64 - 71 */ 200, 201, 209, 210, 211, 212, 213, 214, /* 72 - 79 */ 215, 216, 217, 226, 227, 228, 229, 230, /* 80 - 87 */ 231, 232, 233, 74, 224, 79, 95, 109, /* 88 - 95 */ 121, 129, 130, 131, 132, 133, 134, 135, /* 96 - 103 */ 136, 137, 145, 146, 147, 148, 149, 150, /* 104 - 111 */ 151, 152, 153, 162, 163, 164, 165, 166, /* 112 - 119 */ 167, 168, 169, 192, 106, 208, 161, 7, /* 120 - 127 */ 4, 6, 8, 9, 10, 20, 21, 23, /* 128 - 135 */ 26, 27, 138, 139, 140, 141, 142, 143, /* 136 - 143 */ 32, 33, 34, 35, 36, 40, 41, 42, /* 144 - 151 */ 43, 44, 154, 155, 156, 157, 158, 159, /* 152 - 159 */ 48, 49, 51, 52, 53, 54, 56, 57, /* 160 - 167 */ 58, 59, 170, 171, 172, 173, 174, 175, /* 168 - 175 */ 176, 177, 178, 179, 180, 181, 182, 183, /* 176 - 183 */ 184, 185, 186, 187, 188, 189, 190, 191, /* 184 - 191 */ 128, 65, 66, 67, 68, 69, 70, 71, /* 192 - 199 */ 72, 73, 202, 203, 204, 205, 206, 207, /* 200 - 207 */ 144, 81, 82, 83, 84, 85, 86, 87, /* 208 - 215 */ 88, 89, 218, 219, 220, 221, 222, 223, /* 216 - 223 */ 160, 225, 98, 99, 100, 101, 102, 103, /* 224 - 231 */ 104, 105, 234, 235, 236, 237, 238, 239, /* 232 - 239 */ 112, 113, 114, 115, 116, 117, 118, 119, /* 240 - 247 */ 120, 62, 250, 251, 252, 253, 254, 255, /* 248 - 255 */ }; /* This is almost identical to GNU dd's "ibm" table. In dd's "ibm" table, both 91 and 213 recode to 173, both 93 and 229 recode to 189, and no character recodes to 74 or 106. I suspect two errors in there. So, I arbitrarily choose to recode 213 by 74 and 229 by 106. */ static unsigned char const ascii_to_ebcdic_ibm[256] = { 0, 1, 2, 3, 55, 45, 46, 47, /* 0 - 7 */ 22, 5, 37, 11, 12, 13, 14, 15, /* 8 - 15 */ 16, 17, 18, 19, 60, 61, 50, 38, /* 16 - 23 */ 24, 25, 63, 39, 28, 29, 30, 31, /* 24 - 31 */ 64, 90, 127, 123, 91, 108, 80, 125, /* 32 - 39 */ 77, 93, 92, 78, 107, 96, 75, 97, /* 40 - 47 */ 240, 241, 242, 243, 244, 245, 246, 247, /* 48 - 55 */ 248, 249, 122, 94, 76, 126, 110, 111, /* 56 - 63 */ 124, 193, 194, 195, 196, 197, 198, 199, /* 64 - 71 */ 200, 201, 209, 210, 211, 212, 213, 214, /* 72 - 79 */ 215, 216, 217, 226, 227, 228, 229, 230, /* 80 - 87 */ 231, 232, 233, 173, 224, 189, 95, 109, /* 88 - 95 */ 121, 129, 130, 131, 132, 133, 134, 135, /* 96 - 103 */ 136, 137, 145, 146, 147, 148, 149, 150, /* 104 - 111 */ 151, 152, 153, 162, 163, 164, 165, 166, /* 112 - 119 */ 167, 168, 169, 192, 79, 208, 161, 7, /* 120 - 127 */ 32, 33, 34, 35, 36, 21, 6, 23, /* 128 - 135 */ 40, 41, 42, 43, 44, 9, 10, 27, /* 136 - 143 */ 48, 49, 26, 51, 52, 53, 54, 8, /* 144 - 151 */ 56, 57, 58, 59, 4, 20, 62, 225, /* 152 - 159 */ 65, 66, 67, 68, 69, 70, 71, 72, /* 160 - 167 */ 73, 81, 82, 83, 84, 85, 86, 87, /* 168 - 175 */ 88, 89, 98, 99, 100, 101, 102, 103, /* 176 - 183 */ 104, 105, 112, 113, 114, 115, 116, 117, /* 184 - 191 */ 118, 119, 120, 128, 138, 139, 140, 141, /* 192 - 199 */ 142, 143, 144, 154, 155, 156, 157, 158, /* 200 - 207 */ 159, 160, 170, 171, 172, 74, 174, 175, /* 208 - 215 */ 176, 177, 178, 179, 180, 181, 182, 183, /* 216 - 223 */ 184, 185, 186, 187, 188, 106, 190, 191, /* 224 - 231 */ 202, 203, 204, 205, 206, 207, 218, 219, /* 232 - 239 */ 220, 221, 222, 223, 234, 235, 236, 237, /* 240 - 247 */ 238, 239, 250, 251, 252, 253, 254, 255, /* 248 - 255 */ }; static bool init_ascii_ebcdic (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; step->step_type = RECODE_BYTE_TO_BYTE; /* The cast is a way to silently discard the const. */ step->step_table = (void *) ascii_to_ebcdic; return true; } static bool init_ebcdic_ascii (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; if (step->step_table = invert_table (request->outer, ascii_to_ebcdic), step->step_table) { step->step_type = RECODE_BYTE_TO_BYTE; return true; } else return false; } static bool init_ascii_ebcdic_ccc (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; step->step_type = RECODE_BYTE_TO_BYTE; /* The cast is a way to silently discard the const. */ step->step_table = (void *) ascii_to_ebcdic_ccc; return true; } static bool init_ebcdic_ccc_ascii (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; if (step->step_table = invert_table (request->outer, ascii_to_ebcdic_ccc), step->step_table) { step->step_type = RECODE_BYTE_TO_BYTE; return true; } else return false; } static bool init_ascii_ebcdic_ibm (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; step->step_type = RECODE_BYTE_TO_BYTE; /* The cast is a way to silently discard the const. */ step->step_table = (void *) ascii_to_ebcdic_ibm; return true; } static bool init_ebcdic_ibm_ascii (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; if (step->step_table = invert_table (request->outer, ascii_to_ebcdic_ibm), step->step_table) { step->step_type = RECODE_BYTE_TO_BYTE; return true; } else return false; } bool module_ebcdic (RECODE_OUTER outer) { return declare_single (outer, ASCII, "EBCDIC", outer->quality_byte_reversible, init_ascii_ebcdic, transform_byte_to_byte) && declare_single (outer, "EBCDIC", ASCII, outer->quality_byte_reversible, init_ebcdic_ascii, transform_byte_to_byte) && declare_single (outer, ASCII, "EBCDIC-CCC", outer->quality_byte_reversible, init_ascii_ebcdic_ccc, transform_byte_to_byte) && declare_single (outer, "EBCDIC-CCC", ASCII, outer->quality_byte_reversible, init_ebcdic_ccc_ascii, transform_byte_to_byte) && declare_single (outer, ASCII, "EBCDIC-IBM", outer->quality_byte_reversible, init_ascii_ebcdic_ibm, transform_byte_to_byte) && declare_single (outer, "EBCDIC-IBM", ASCII, outer->quality_byte_reversible, init_ebcdic_ibm_ascii, transform_byte_to_byte); } void delmodule_ebcdic (RECODE_OUTER outer) { } recode-3.6/src/ibmpc.c0100644000000000000000000002653107126660106013362 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /* Previously, the CR-LF surface was built-in. It is now handled through a separate, optional step. An optimisation might use a flag to trigger old built-in code. For now, depend on a variable preset to false. */ static const bool auto_crlf = false; #define DOS_EOF 26 /* oldish end of file */ #define DOS_CR 13 /* carriage return */ #define DOS_LF 10 /* line feed */ /* Correspondance for IBM PC ruler graphics characters into ASCII graphics approximations. The current principles are: - Single horizontal rulers are made up of dashes. - Double horizontal rulers are made up of equal signs. - Both single and double vertical are made up with `|'. - Both upper corners are rounded down with periods. - Lower corners are rounded up with grave/acute accent on left/right. - Other crossing rulers are approximated with plus signs, with exceptions for double horizontal ruler crossings but not at corners: they are equal signs inside a table, and `|' at left or right margin. */ unsigned char convert_rulers[48] = { '#', /* 176 */ '#', /* 177 */ '#', /* 178 */ '|', /* 179 */ '+', /* 180 */ '|', /* 181 */ '+', /* 182 */ '.', /* 183 */ '.', /* 184 */ '|', /* 185 */ '|', /* 186 */ '.', /* 187 */ '\'', /* 188 */ '\'', /* 189 */ '\'', /* 190 */ '.', /* 191 */ '`', /* 192 */ '+', /* 193 */ '+', /* 194 */ '+', /* 195 */ '-', /* 196 */ '+', /* 197 */ '|', /* 198 */ '+', /* 199 */ '`', /* 200 */ '.', /* 201 */ '=', /* 202 */ '=', /* 203 */ '|', /* 204 */ '=', /* 205 */ '=', /* 206 */ '=', /* 207 */ '+', /* 208 */ '=', /* 209 */ '+', /* 210 */ '`', /* 211 */ '`', /* 212 */ '.', /* 213 */ '.', /* 214 */ '+', /* 215 */ '=', /* 216 */ '\'', /* 217 */ '.', /* 218 */ '#', /* 219 */ '#', /* 220 */ '#', /* 221 */ '#', /* 222 */ '#', /* 223 */ }; /* Data for IBM PC to ISO Latin-1 code conversions. */ static struct recode_known_pair known_pairs[] = { { 20, 182}, /* pilcrow sign */ { 21, 167}, /* section sign */ {128, 199}, /* capital letter C with cedilla */ {129, 252}, /* small letter u with diaeresis */ {130, 233}, /* small letter e with acute accent */ {131, 226}, /* small letter a with circumflex accent */ {132, 228}, /* small letter a with diaeresis */ {133, 224}, /* small letter a with grave accent */ {134, 229}, /* small letter a with ring above */ {135, 231}, /* small letter c with cedilla */ {136, 234}, /* small letter e with circumflex accent */ {137, 235}, /* small letter e with diaeresis */ {138, 232}, /* small letter e with grave accent */ {139, 239}, /* small letter i with diaeresis */ {140, 238}, /* small letter i with circumflex accent */ {141, 236}, /* small letter i with grave accent */ {142, 196}, /* capital letter A with diaeresis */ {143, 197}, /* capital letter A with ring above */ {144, 201}, /* capital letter E with acute accent */ {145, 230}, /* small ligature a with e */ {146, 198}, /* capital ligature A with E */ {147, 244}, /* small letter o with circumblex accent */ {148, 246}, /* small letter o with diaeresis */ {149, 242}, /* small letter o with grave accent */ {150, 251}, /* small letter u with circumflex accent */ {151, 249}, /* small letter u with grave accent */ {152, 255}, /* small letter y with diaeresis */ {153, 214}, /* capital letter O with diaeresis */ {154, 220}, /* capital letter U with diaeresis */ {155, 162}, /* cent sign */ {156, 163}, /* pound sign */ {157, 165}, /* yen sign */ {160, 225}, /* small letter a with acute accent */ {161, 237}, /* small letter i with acute accent */ {162, 243}, /* small letter o with acute accent */ {163, 250}, /* small letter u with acute accent */ {164, 241}, /* small letter n with tilde */ {165, 209}, /* capital letter N with tilde */ {166, 170}, /* feminine ordinal indicator */ {167, 186}, /* masculine ordinal indicator */ {168, 191}, /* inverted question mark */ {170, 172}, /* not sign */ {171, 189}, /* vulgar fraction one half */ {172, 188}, /* vulgar fraction one quarter */ {173, 161}, /* inverted exclamation mark */ {174, 171}, /* left angle quotation mark */ {175, 187}, /* right angle quotation mark */ {225, 223}, /* small german letter sharp s */ {230, 181}, /* small Greek letter mu micro sign */ {241, 177}, /* plus-minus sign */ {246, 247}, /* division sign */ {248, 176}, /* degree sign */ {250, 183}, /* middle dot */ {253, 178}, /* superscript two */ {255, 160}, /* no-break space */ }; #define NUMBER_OF_PAIRS (sizeof (known_pairs) / sizeof (struct recode_known_pair)) static bool transform_latin1_ibmpc (RECODE_SUBTASK subtask) { if (subtask->step->fallback_routine == reversibility) { const unsigned char *table = subtask->step->step_table; int input_char; while (input_char = get_byte (subtask), input_char != EOF) if (input_char == '\n') { put_byte (DOS_CR, subtask); put_byte (DOS_LF, subtask); } else put_byte (table[input_char], subtask); } else { const char *const *table = subtask->step->step_table; int input_char; while (input_char = get_byte (subtask), input_char != EOF) if (input_char == '\n') { put_byte (DOS_CR, subtask); put_byte (DOS_LF, subtask); } else if (table[input_char]) put_byte (*table[input_char], subtask); else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); } SUBTASK_RETURN (subtask); } static bool transform_ibmpc_latin1 (RECODE_SUBTASK subtask) { if (subtask->step->fallback_routine == reversibility) { const unsigned char *table = subtask->step->step_table; int input_char = get_byte (subtask); while (input_char != EOF) switch (input_char) { case DOS_EOF: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); input_char = EOF; break; case DOS_CR: input_char = get_byte (subtask); if (input_char == DOS_LF) { put_byte ('\n', subtask); input_char = get_byte (subtask); } else put_byte (table[DOS_CR], subtask); break; case DOS_LF: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); /* Fall through. */ default: put_byte (table[input_char], subtask); input_char = get_byte (subtask); } } else { const char *const *table = subtask->step->step_table; int input_char = get_byte (subtask); while (input_char != EOF) switch (input_char) { case DOS_EOF: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); input_char = EOF; break; case DOS_CR: input_char = get_byte (subtask); if (input_char == DOS_LF) { put_byte ('\n', subtask); input_char = get_byte (subtask); } else if (table[DOS_CR]) put_byte (*table[DOS_CR], subtask); else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); break; case DOS_LF: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); /* Fall through. */ default: if (table[input_char]) put_byte (*table[input_char], subtask); else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); input_char = get_byte (subtask); } } SUBTASK_RETURN (subtask); } static bool init_latin1_ibmpc (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options || after_options) return false; if (!complete_pairs (request->outer, step, known_pairs, NUMBER_OF_PAIRS, true, true)) return false; if (auto_crlf) step->transform_routine = transform_latin1_ibmpc; else if (step->fallback_routine == reversibility) step->transform_routine = transform_byte_to_byte; else step->transform_routine = transform_byte_to_variable; return true; } static bool init_ibmpc_latin1 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; unsigned char *table; if (before_options || after_options) return false; if (!complete_pairs (outer, step, known_pairs, NUMBER_OF_PAIRS, true, false)) return false; if (auto_crlf) step->transform_routine = transform_ibmpc_latin1; else if (step->fallback_routine == reversibility) step->transform_routine = transform_byte_to_byte; else step->transform_routine = transform_byte_to_variable; /* FIXME: Allow ascii_graphics even with strict mapping. Reported by David E. A. Wilson . */ if (request->ascii_graphics) { if (!ALLOC (table, 256, unsigned char)) return false; memcpy (table, step->step_table, 256); memcpy (table + 176, convert_rulers, 48); free (step->step_table); step->step_table = table; } return true; } bool module_ibmpc (RECODE_OUTER outer) { RECODE_ALIAS alias; if (!declare_single (outer, "Latin-1", "IBM-PC", outer->quality_byte_to_variable, init_latin1_ibmpc, transform_latin1_ibmpc)) return false; if (!declare_single (outer, "IBM-PC", "Latin-1", outer->quality_variable_to_variable, init_ibmpc_latin1, transform_ibmpc_latin1)) return false; if (alias = declare_alias (outer, "IBM-PC", "IBM-PC"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "dos", "IBM-PC"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "MSDOS", "IBM-PC"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "pc", "IBM-PC"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; #if 0 /* FIXME! */ if (!declare_alias (outer, "IBM-PC", "ibm437")) return false; #endif return true; } void delmodule_ibmpc (RECODE_OUTER outer) { } recode-3.6/src/iconqnx.c0100644000000000000000000001407507126660125013750 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #define DOS_CR 13 /* carriage return */ #define DOS_LF 10 /* line feed */ #define DOS_EOF 26 /* old end of file */ #define ESCAPE 25 /* escape for diacritic application */ #define ENDLINE 30 /* end-line code for QNX */ #define TRANSLATE_AND_BREAK(c2, c3) \ put_byte (ESCAPE, subtask); \ put_byte (c2, subtask); \ put_byte (c3, subtask); \ input_char = get_byte (subtask); \ break; static bool transform_ibmpc_iconqnx (RECODE_SUBTASK subtask) { int input_char; input_char = get_byte (subtask); while (true) switch (input_char) { case DOS_EOF: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); /* Fall through. */ case EOF: SUBTASK_RETURN (subtask); case 133: TRANSLATE_AND_BREAK ('A', 'a'); case 138: TRANSLATE_AND_BREAK ('A', 'e'); case 151: TRANSLATE_AND_BREAK ('A', 'u'); case 130: TRANSLATE_AND_BREAK ('B', 'e'); case 144: TRANSLATE_AND_BREAK ('B', 'E'); case 131: TRANSLATE_AND_BREAK ('C', 'a'); case 136: TRANSLATE_AND_BREAK ('C', 'e'); case 140: TRANSLATE_AND_BREAK ('C', 'i'); case 147: TRANSLATE_AND_BREAK ('C', 'o'); case 150: TRANSLATE_AND_BREAK ('C', 'u'); case 137: TRANSLATE_AND_BREAK ('H', 'e'); case 139: TRANSLATE_AND_BREAK ('H', 'i'); case 129: TRANSLATE_AND_BREAK ('H', 'u'); case 135: TRANSLATE_AND_BREAK ('K', 'c'); case 128: TRANSLATE_AND_BREAK ('K', 'C'); case DOS_CR: input_char = get_byte (subtask); if (input_char == DOS_LF) { put_byte (ENDLINE, subtask); input_char = get_byte (subtask); } else put_byte (DOS_CR, subtask); break; case ENDLINE: case ESCAPE: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); /* Fall through. */ default: put_byte (input_char, subtask); input_char = get_byte (subtask); } } static bool transform_iconqnx_ibmpc (RECODE_SUBTASK subtask) { int input_char; /* current character */ input_char = get_byte (subtask); while (true) switch (input_char) { case EOF: SUBTASK_RETURN (subtask); case ENDLINE: put_byte (DOS_CR, subtask); put_byte (DOS_LF, subtask); input_char = get_byte (subtask); break; case DOS_CR: input_char = get_byte (subtask); if (input_char == DOS_LF) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); put_byte (DOS_CR, subtask); break; case ESCAPE: input_char = get_byte (subtask); switch (input_char) { case 'A': input_char = get_byte (subtask); switch (input_char) { case 'a': input_char = 133; break; case 'e': input_char = 138; break; case 'u': input_char = 151; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (ESCAPE, subtask); put_byte ('A', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case 'B': input_char = get_byte (subtask); switch (input_char) { case 'e': input_char = 130; break; case 'E': input_char = 144; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (ESCAPE, subtask); put_byte ('B', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case 'C': input_char = get_byte (subtask); switch (input_char) { case 'a': input_char = 131; break; case 'e': input_char = 136; break; case 'i': input_char = 140; break; case 'o': input_char = 147; break; case 'u': input_char = 150; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (ESCAPE, subtask); put_byte ('C', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case 'H': input_char = get_byte (subtask); switch (input_char) { case 'e': input_char = 137; break; case 'i': input_char = 139; break; case 'u': input_char = 129; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (ESCAPE, subtask); put_byte ('H', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; case 'K': input_char = get_byte (subtask); switch (input_char) { case 'c': input_char = 135; break; case 'C': input_char = 128; break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (ESCAPE, subtask); put_byte ('K', subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } break; default: RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (ESCAPE, subtask); if (input_char == EOF) SUBTASK_RETURN (subtask); } /* Fall through. */ default: put_byte (input_char, subtask); input_char = get_byte (subtask); } } bool module_iconqnx (RECODE_OUTER outer) { return declare_single (outer, "IBM-PC", "Icon-QNX", outer->quality_variable_to_variable, NULL, transform_ibmpc_iconqnx) && declare_single (outer, "Icon-QNX", "IBM-PC", outer->quality_variable_to_variable, NULL, transform_iconqnx_ibmpc) && declare_alias (outer, "QNX", "Icon-QNX"); } void delmodule_iconqnx (RECODE_OUTER outer) { } recode-3.6/src/lat1asci.c0100644000000000000000000001614707126660104013771 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static const char *const translation_table[128] = { NULL, /* 128 */ NULL, /* 129 */ NULL, /* 130 */ NULL, /* 131 */ NULL, /* 132 */ NULL, /* 133 */ NULL, /* 134 */ NULL, /* 135 */ NULL, /* 136 */ NULL, /* 137 */ NULL, /* 138 */ NULL, /* 139 */ NULL, /* 140 */ NULL, /* 141 */ NULL, /* 142 */ NULL, /* 143 */ NULL, /* 144 */ NULL, /* 145 */ NULL, /* 146 */ NULL, /* 147 */ NULL, /* 148 */ NULL, /* 149 */ NULL, /* 150 */ NULL, /* 151 */ NULL, /* 152 */ NULL, /* 153 */ NULL, /* 154 */ NULL, /* 155 */ NULL, /* 156 */ NULL, /* 157 */ NULL, /* 158 */ NULL, /* 159 */ " ", /* 160 no-break space */ NULL, /* 161 inverted exclamation mark */ NULL, /* 162 cent sign */ NULL, /* 163 pound sign */ NULL, /* 164 currency sign */ NULL, /* 165 yen sign */ NULL, /* 166 broken bar */ NULL, /* 167 paragraph sign, section sign */ NULL, /* 168 diaeresis */ NULL, /* 169 copyright sign */ NULL, /* 170 feminine ordinal indicator */ "<\b\"", /* 171 left angle quotation mark */ NULL, /* 172 not sign */ NULL, /* 173 soft hyphen */ NULL, /* 174 registered trade mark sign */ NULL, /* 175 macron */ NULL, /* 176 degree sign */ NULL, /* 177 plus-minus sign */ NULL, /* 178 superscript two */ NULL, /* 179 superscript three */ NULL, /* 180 acute accent */ NULL, /* 181 small greek mu, micro sign */ NULL, /* 182 pilcrow sign */ NULL, /* 183 middle dot */ NULL, /* 184 cedilla */ NULL, /* 185 superscript one */ NULL, /* 186 masculine ordinal indicator */ ">\b\"", /* 187 right angle quotation mark */ NULL, /* 188 vulgar fraction one quarter */ NULL, /* 189 vulgar fraction one half */ NULL, /* 190 vulgar fraction three quarters */ NULL, /* 191 inverted question mark */ "`\bA", /* 192 capital A with grave accent */ "'\bA", /* 193 capital A with acute accent */ "^\bA", /* 194 capital A with circumflex accent */ "~\bA", /* 195 capital A with tilde */ "\"\bA", /* 196 capital A diaeresis */ NULL, /* 197 capital A with ring above */ NULL, /* 198 capital diphthong A with E */ ",\bC", /* 199 capital C with cedilla */ "`\bE", /* 200 capital E with grave accent */ "'\bE", /* 201 capital E with acute accent */ "^\bE", /* 202 capital E with circumflex accent */ "\"\bE", /* 203 capital E with diaeresis */ "`\bI", /* 204 capital I with grave accent */ "'\bI", /* 205 capital I with acute accent */ "^\bI", /* 206 capital I with circumflex accent */ "\"\bI", /* 207 capital I with diaeresis */ NULL, /* 208 capital icelandic ETH */ "~\bN", /* 209 capital N with tilde */ "`\bO", /* 210 capital O with grave accent */ "'\bO", /* 211 capital O with acute accent */ "^\bO", /* 212 capital O with circumflex accent */ "~\bO", /* 213 capital O with tilde */ "\"\bO", /* 214 capital O with diaeresis */ NULL, /* 215 multiplication sign */ "/\bO", /* 216 capital O with oblique stroke */ "`\bU", /* 217 capital U with grave accent */ "'\bU", /* 218 capital U with acute accent */ "^\bU", /* 219 capital U with circumflex accent */ "\"\bU", /* 220 capital U with diaeresis */ "'\bY", /* 221 capital Y with acute accent */ NULL, /* 222 capital icelandic THORN */ "\"\bs", /* 223 small german sharp s */ "`\ba", /* 224 small a with grave accent */ "'\ba", /* 225 small a with acute accent */ "^\ba", /* 226 small a with circumflex accent */ "~\ba", /* 227 small a with tilde */ "\"\ba", /* 228 small a with diaeresis */ NULL, /* 229 small a with ring above */ NULL, /* 230 small diphthong a with e */ ",\bc", /* 231 small c with cedilla */ "`\be", /* 232 small e with grave accent */ "'\be", /* 233 small e with acute accent */ "^\be", /* 234 small e with circumflex accent */ "\"\be", /* 235 small e with diaeresis */ "`\bi", /* 236 small i with grave accent */ "'\bi", /* 237 small i with acute accent */ "^\bi", /* 238 small i with circumflex accent */ "\"\bi", /* 239 small i with diaeresis */ NULL, /* 240 small icelandic eth */ "~\bn", /* 241 small n with tilde */ "`\bo", /* 242 small o with grave accent */ "'\bo", /* 243 small o with acute accent */ "^\bo", /* 244 small o with circumflex accent */ "~\bo", /* 245 small o with tilde */ "\"\bo", /* 246 small o with diaeresis */ NULL, /* 247 division sign */ "/\bo", /* 248 small o with oblique stroke */ "`\bu", /* 249 small u with grave accent */ "'\bu", /* 250 small u with acute accent */ "^\bu", /* 251 small u with circumflex accent */ "\"\bu", /* 252 small u with diaeresis */ "'\by", /* 253 small y with acute accent */ NULL, /* 254 small icelandic thorn */ "\"\by", /* 255 small y with diaeresis */ }; static bool init_latin1_ascii (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; const char **table; char *pool; unsigned counter; if (before_options || after_options) return false; if (!ALLOC_SIZE (table, 256 * sizeof (char *) + 256, const char *)) return false; pool = (char *) (table + 256); for (counter = 0; counter < 128; counter++) { table[counter] = pool; *pool++ = counter; *pool++ = NUL; } for (; counter < 256; counter++) table[counter] = translation_table[counter - 128]; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table; return true; } bool module_latin1_ascii (RECODE_OUTER outer) { if (!declare_single (outer, "Latin-1", "ASCII-BS", outer->quality_byte_to_variable, init_latin1_ascii, transform_byte_to_variable)) return false; return true; } void delmodule_latin1_ascii (RECODE_OUTER outer) { } recode-3.6/src/mule.c0100644000000000000000000000657407126660111013233 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1997, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static bool transform_latin_mule (RECODE_SUBTASK subtask, unsigned prefix) { int character; while (character = get_byte (subtask), character != EOF) { if (!IS_ASCII (character)) put_byte (prefix, subtask); put_byte (character, subtask); } SUBTASK_RETURN (subtask); } static bool transform_mule_latin (RECODE_SUBTASK subtask, unsigned prefix) { int character; while (character = get_byte (subtask), character != EOF) if (IS_ASCII (character)) put_byte (character, subtask); else if ((character & MASK (8)) == prefix) { character = get_byte (subtask); while ((character & MASK (8)) == prefix) { /* This happens in practice, sometimes, that Emacs goes a bit berzerk and generates strings of prefix characters. Remove all succeeding prefixes in a row. This is irreversible. */ RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); character = get_byte (subtask); } if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } if (IS_ASCII (character)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); put_byte (character, subtask); } else RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); SUBTASK_RETURN (subtask); } #define TRANSFORM_LATIN(To_mule, From_mule, Prefix) \ \ static bool \ To_mule (RECODE_SUBTASK subtask) \ { \ return transform_latin_mule (subtask, Prefix); \ } \ \ static bool \ From_mule (RECODE_SUBTASK subtask) \ { \ return transform_mule_latin (subtask, Prefix); \ } TRANSFORM_LATIN (transform_latin1_mule, transform_mule_latin1, 129) TRANSFORM_LATIN (transform_latin2_mule, transform_mule_latin2, 130) /*-------------------. | Register methods. | `-------------------*/ bool module_mule (RECODE_OUTER outer) { return declare_single (outer, "ISO-8859-1", "Mule", outer->quality_byte_to_variable, NULL, transform_latin1_mule) && declare_single (outer, "Mule", "ISO-8859-1", outer->quality_variable_to_byte, NULL, transform_mule_latin1) && declare_single (outer, "ISO-8859-2", "Mule", outer->quality_byte_to_variable, NULL, transform_latin2_mule) && declare_single (outer, "Mule", "ISO-8859-2", outer->quality_variable_to_byte, NULL, transform_mule_latin2); } void delmodule_mule (RECODE_OUTER outer) { } recode-3.6/src/strip-data.c0100644000000000000000000033556307126661707014360 0ustar rootroot/* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /* ISO_646.basic ref ISO_646.basic:1983 */ static struct strip_data data_0 = { ucs2_data_pool, { 0, 0, 0, 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* INVARIANT iso-ir-170 */ static struct strip_data data_1 = { ucs2_data_pool, { 104, 112, 120, 128, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_646.irv iso-ir-2 ISO_646.irv:1983 irv */ static struct strip_data data_2 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* BS_4730 iso-ir-4 ISO646-GB gb uk */ static struct strip_data data_3 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ANSI_X3.4-1968 iso-ir-6 ANSI_X3.4-1986 ISO_646.irv:1991 ASCII ISO646-US US-ASCII us IBM367 CP367 367 */ static struct strip_data data_4 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NATS-SEFI iso-ir-8-1 */ static struct strip_data data_5 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 208, 48, 56, 216, 224, 80, 88, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NATS-SEFI-ADD iso-ir-8-2 */ static struct strip_data data_6 = { ucs2_data_pool, { 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 248, 256, 264, 0, 272, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NATS-DANO iso-ir-9-1 */ static struct strip_data data_7 = { ucs2_data_pool, { 104, 112, 120, 128, 288, 16, 24, 32, 208, 48, 56, 296, 224, 80, 88, 304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NATS-DANO-ADD iso-ir-9-2 */ static struct strip_data data_8 = { ucs2_data_pool, { 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 248, 312, 264, 0, 272, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* SEN_850200_B iso-ir-10 FI ISO646-FI ISO646-SE se SS636127 */ static struct strip_data data_9 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 328, 168, 80, 88, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* SEN_850200_C iso-ir-11 ISO646-SE2 se2 */ static struct strip_data data_10 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 344, 48, 56, 352, 360, 80, 88, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6220-1969-jp JIS_C6220-1969 iso-ir-13 katakana x0201-7 */ static struct strip_data data_11 = { ucs2_data_pool, { 104, 112, 120, 128, 376, 384, 392, 400, 408, 416, 424, 432, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6220-1969-ro iso-ir-14 jp ISO646-JP */ static struct strip_data data_12 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 448, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* IT iso-ir-15 ISO646-IT */ static struct strip_data data_13 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 456, 48, 56, 464, 472, 80, 88, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* PT iso-ir-16 ISO646-PT */ static struct strip_data data_14 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 456, 48, 56, 488, 168, 80, 88, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ES iso-ir-17 ISO646-ES */ static struct strip_data data_15 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 456, 48, 56, 504, 168, 80, 88, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* greek7-old iso-ir-18 */ static struct strip_data data_16 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 520, 528, 536, 544, 552, 560, 568, 576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* latin-greek iso-ir-19 */ static struct strip_data data_17 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 152, 48, 56, 160, 552, 560, 568, 584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* DIN_66003 iso-ir-21 de ISO646-DE */ static struct strip_data data_18 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 456, 48, 56, 592, 168, 80, 88, 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NF_Z_62-010_(1973) iso-ir-25 ISO646-FR1 */ static struct strip_data data_19 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 608, 48, 56, 616, 168, 80, 88, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* Latin-greek-1 iso-ir-27 */ static struct strip_data data_20 = { ucs2_data_pool, { 104, 112, 120, 128, 632, 16, 24, 640, 648, 48, 56, 656, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_5427 iso-ir-37 */ static struct strip_data data_21 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 664, 672, 680, 688, 696, 704, 712, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* BS_viewdata iso-ir-47 */ static struct strip_data data_22 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 152, 48, 56, 728, 168, 80, 88, 736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* INIS iso-ir-49 */ static struct strip_data data_23 = { ucs2_data_pool, { 104, 112, 120, 128, 744, 16, 24, 752, 40, 48, 56, 760, 72, 80, 88, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* INIS-8 iso-ir-50 */ static struct strip_data data_24 = { ucs2_data_pool, { 104, 112, 120, 128, 776, 0, 0, 784, 0, 0, 0, 792, 800, 808, 816, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* INIS-cyrillic iso-ir-51 */ static struct strip_data data_25 = { ucs2_data_pool, { 104, 112, 120, 128, 776, 832, 840, 848, 664, 672, 680, 688, 696, 704, 712, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_5427-ext iso-ir-54 ISO_5427:1981 */ static struct strip_data data_26 = { ucs2_data_pool, { 104, 112, 120, 128, 776, 0, 0, 0, 856, 864, 872, 880, 888, 896, 904, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_5428 iso-ir-55 ISO_5428:1980 */ static struct strip_data data_27 = { ucs2_data_pool, { 104, 112, 120, 128, 912, 0, 920, 928, 936, 944, 952, 960, 968, 976, 984, 992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* GB_1988-80 iso-ir-57 cn ISO646-CN */ static struct strip_data data_28 = { ucs2_data_pool, { 104, 112, 120, 128, 1000, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NS_4551-1 iso-ir-60 ISO646-NO no */ static struct strip_data data_29 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 1008, 168, 80, 88, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NS_4551-2 ISO646-NO2 iso-ir-61 no2 */ static struct strip_data data_30 = { ucs2_data_pool, { 104, 112, 120, 128, 1024, 16, 24, 32, 152, 48, 56, 1008, 168, 80, 88, 1032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NF_Z_62-010 iso-ir-69 ISO646-FR fr */ static struct strip_data data_31 = { ucs2_data_pool, { 104, 112, 120, 128, 184, 16, 24, 32, 608, 48, 56, 616, 1040, 80, 88, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* PT2 iso-ir-84 ISO646-PT2 */ static struct strip_data data_32 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 1048, 48, 56, 488, 168, 80, 88, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ES2 iso-ir-85 ISO646-ES2 */ static struct strip_data data_33 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 1064, 48, 56, 1072, 168, 80, 88, 1080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* MSZ_7795.3 iso-ir-86 ISO646-HU hu */ static struct strip_data data_34 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 1088, 48, 56, 1096, 1104, 80, 88, 1112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* greek7 iso-ir-88 */ static struct strip_data data_35 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 1120, 1128, 1136, 1144, 1152, 1160, 1168, 1176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ASMO_449 ISO_9036 arabic7 iso-ir-89 */ static struct strip_data data_36 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 1184, 24, 1192, 1200, 1208, 1216, 1224, 1232, 1240, 1248, 1256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-a iso-ir-91 jp-ocr-a */ static struct strip_data data_37 = { ucs2_data_pool, { 104, 112, 120, 128, 1264, 16, 24, 1272, 40, 48, 56, 1280, 0, 0, 0, 1288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-b iso-ir-92 ISO646-JP-OCR-B jp-ocr-b */ static struct strip_data data_38 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 1296, 72, 80, 88, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-b-add iso-ir-93 jp-ocr-b-add */ static struct strip_data data_39 = { ucs2_data_pool, { 104, 112, 120, 128, 1312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-hand iso-ir-94 jp-ocr-hand */ static struct strip_data data_40 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 1296, 0, 0, 0, 1320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-hand-add iso-ir-95 jp-ocr-hand-add */ static struct strip_data data_41 = { ucs2_data_pool, { 104, 112, 120, 128, 1328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_C6229-1984-kana iso-ir-96 */ static struct strip_data data_42 = { ucs2_data_pool, { 104, 112, 120, 128, 1336, 0, 392, 400, 408, 416, 424, 432, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_2033-1983 iso-ir-98 e13b */ static struct strip_data data_43 = { ucs2_data_pool, { 104, 112, 120, 128, 776, 0, 24, 1344, 0, 0, 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO-8859-1 iso-ir-100 ISO_8859-1:1987 ISO_8859-1 ISO8859-1 latin1 l1 IBM819 CP819 819 */ static struct strip_data data_44 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472 } }; /* ISO-8859-2 iso-ir-101 ISO_8859-2:1987 ISO_8859-2 ISO8859-2 latin2 l2 IBM912 CP912 912 */ static struct strip_data data_45 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560, 1568 } }; /* T.61-7bit iso-ir-102 */ static struct strip_data data_46 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 1576, 72, 80, 88, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO-8859-3 iso-ir-109 ISO_8859-3:1988 ISO_8859-3 ISO8859-3 latin3 l3 */ static struct strip_data data_47 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1584, 1592, 1600, 1608, 1616, 1424, 1624, 1632, 1640, 1456, 1648, 1656 } }; /* ISO-8859-4 iso-ir-110 ISO_8859-4:1988 ISO_8859-4 ISO8859-4 latin4 l4 */ static struct strip_data data_48 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1664, 1672, 1680, 1688, 1696, 1704, 1712, 1720, 1728, 1736, 1744, 1752 } }; /* ECMA-cyrillic iso-ir-111 ECMA-113:1986 ECMA-113 */ static struct strip_data data_49 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1760, 1768, 1776, 1784, 664, 672, 680, 688, 696, 704, 712, 1792 } }; /* CSA_Z243.4-1985-1 iso-ir-121 ISO646-CA csa7-1 ca */ static struct strip_data data_50 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 608, 48, 56, 1800, 1808, 80, 88, 1816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* CSA_Z243.4-1985-2 iso-ir-122 ISO646-CA2 csa7-2 */ static struct strip_data data_51 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 608, 48, 56, 1824, 1808, 80, 88, 1816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* CSA_Z243.4-1985-gr iso-ir-123 */ static struct strip_data data_52 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1832, 1840, 800, 1848, 1856, 1864, 1872, 1880, 1888, 1896, 1904, 1912 } }; /* ISO-8859-7 iso-ir-126 ISO_8859-7:1987 ISO_8859-7 ISO8859-7 ELOT_928 ECMA-118 greek greek8 */ static struct strip_data data_53 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1920, 1928, 1936, 1944, 1952, 1960, 1968, 1976, 1984, 1992, 2000, 2008 } }; /* ISO-8859-6 iso-ir-127 ISO_8859-6:1987 ISO_8859-6 ISO8859-6 ECMA-114 ASMO-708 arabic */ static struct strip_data data_54 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2016, 2024, 0, 2032, 2040, 1208, 1216, 2048, 1232, 1240, 1248, 0 } }; /* ISO-8859-8 iso-ir-138 ISO_8859-8:1988 ISO_8859-8 ISO8859-8 hebrew */ static struct strip_data data_55 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2056, 2064, 1400, 2072, 0, 0, 0, 2080, 2088, 2096, 2104, 2112 } }; /* CSN_369103 iso-ir-139 KOI-8_L2 koi8l2 */ static struct strip_data data_56 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2120, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560, 1568 } }; /* JUS_I.B1.002 iso-ir-141 ISO646-YU js yu */ static struct strip_data data_57 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 2128, 48, 56, 2136, 2144, 80, 88, 2152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* IEC_P27-1 iso-ir-143 */ static struct strip_data data_58 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2160, 2168, 2176, 2184, 2192, 2200, 2208, 2216, 2224, 2232, 2240, 2248 } }; /* ISO-8859-5 iso-ir-144 ISO_8859-5:1988 ISO_8859-5 ISO8859-5 cyrillic */ static struct strip_data data_59 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2256, 2264, 2272, 2280, 2288, 2296, 2304, 2312, 2320, 2328, 2336, 2344 } }; /* JUS_I.B1.003-serb iso-ir-146 serbian */ static struct strip_data data_60 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 2352, 2360, 2368, 2376, 2384, 2392, 2400, 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JUS_I.B1.003-mac macedonian iso-ir-147 */ static struct strip_data data_61 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 2352, 2360, 2368, 2416, 2384, 2392, 2400, 2424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO-8859-9 iso-ir-148 ISO_8859-9:1989 ISO_8859-9 ISO8859-9 latin5 l5 */ static struct strip_data data_62 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 1384, 1392, 1400, 1408, 1416, 1424, 2432, 2440, 1448, 2448, 2456, 2464 } }; /* greek-ccitt iso-ir-150 */ static struct strip_data data_63 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 1120, 1960, 1968, 2472, 2480, 1992, 2000, 2488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* NC_NC00-10 cuba NC_NC00-10:81 iso-ir-151 ISO646-CU */ static struct strip_data data_64 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 2496, 168, 80, 88, 2504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* ISO_6937-2-25 iso-ir-152 */ static struct strip_data data_65 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2512, 2520, 0, 2528, 0, 0, 2536, 2544, 2552, 2560, 2568, 2576 } }; /* GOST_19768-87 ST_SEV_358-88 iso-ir-153 */ static struct strip_data data_66 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2584, 2592, 2272, 2280, 2288, 2296, 2304, 2312, 2320, 2328, 2600, 0 } }; /* ISO_8859-supp iso-ir-154 latin1-2-5 */ static struct strip_data data_67 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2608, 2616, 2624, 2632, 2640, 2648, 2656, 2664, 2672, 2680, 2688, 2696 } }; /* ISO_10367-box iso-ir-155 */ static struct strip_data data_68 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 0, 0, 0, 0, 2704, 2712, 2720, 2728, 0, 0, 0, 0 } }; /* ISO-8859-10 iso-ir-157 ISO_8859-10:1993 ISO_8859-10 ISO8859-10 L6 latin6 */ static struct strip_data data_69 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2736, 2744, 2752, 2760, 1696, 2768, 2776, 2784, 1728, 2792, 2800, 2808 } }; /* ISO-8859-13 iso-ir-179a ISO_8859-13:1998 ISO_8859-13 ISO8859-13 latin7 iso-baltic l7 */ static struct strip_data data_70 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2816, 1392, 2824, 1408, 2832, 2840, 2848, 2856, 2864, 2872, 2880, 2888 } }; /* ISO-8859-14 iso-ir-199 ISO_8859-14:1998 ISO_8859-14 ISO8859-14 latin8 iso-celtic l8 */ static struct strip_data data_71 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2896, 2904, 2912, 2920, 1416, 1424, 2928, 2936, 1448, 1456, 2944, 2952 } }; /* ISO-8859-15 iso-ir-203 ISO_8859-15:1998 ISO_8859-15 ISO8859-15 latin9 l9 */ static struct strip_data data_72 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2960, 2968, 2976, 2984, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472 } }; /* sami latin-lap lap iso-ir-158 */ static struct strip_data data_73 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 2992, 0, 3000, 0, 3008, 3016, 0, 0, 3024, 3032, 0, 0 } }; /* baltic iso-ir-179 */ static struct strip_data data_74 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 3040, 3048, 1400, 3056, 3064, 3072, 3080, 3088, 3096, 3104, 3112, 3120 } }; /* DS_2089 DS2089 ISO646-DK dk */ static struct strip_data data_75 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 1008, 168, 80, 88, 3128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* JIS_X0201 X0201 */ static struct strip_data data_76 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 448, 168, 80, 88, 176, 1352, 1360, 1368, 1376, 3136, 384, 392, 400, 408, 416, 424, 432, 0, 0, 0, 0 } }; /* KSC5636 ISO646-KR */ static struct strip_data data_77 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 3144, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* DEC-MCS dec */ static struct strip_data data_78 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 3152, 3160, 3168, 3176, 1416, 1424, 3184, 3192, 1448, 1456, 3200, 3208 } }; /* hp-roman8 roman8 r8 */ static struct strip_data data_79 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 1352, 1360, 1368, 1376, 3216, 3224, 3232, 3240, 3248, 3256, 3264, 3272, 3280, 3288, 3296, 3304 } }; /* NeXTSTEP next */ static struct strip_data data_80 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 3312, 1424, 3320, 3328, 3336, 3344, 3352, 3360, 3368, 3376, 3384, 3392, 3400, 3408, 3416, 3424 } }; /* macintosh mac */ static struct strip_data data_81 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 3432, 3440, 3448, 3456, 3464, 3472, 3480, 3488, 3496, 3504, 3512, 3520, 3528, 3536, 3544, 3552 } }; /* mac-is */ static struct strip_data data_82 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 3432, 3440, 3448, 3456, 3464, 3472, 3480, 3488, 3496, 3560, 3568, 3576, 3528, 3536, 3544, 3552 } }; /* IBM037 CP037 037 ebcdic-cp-us ebcdic-cp-ca ebcdic-cp-wt ebcdic-cp-nl */ static struct strip_data data_83 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 3656, 3664, 3672, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 3744, 3752, 3760, 3768, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* IBM038 EBCDIC-INT CP038 038 */ static struct strip_data data_84 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 3832, 3840, 3848, 3856, 3864, 0, 3872, 72, 3880, 3888, 3896, 3904, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* IBM256 EBCDIC-INT1 CP256 256 */ static struct strip_data data_85 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 3960, 3664, 3968, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 3744, 3752, 3976, 3984, 3776, 3784, 3792, 3800, 3992, 3816, 24, 3824 } }; /* IBM273 CP273 273 */ static struct strip_data data_86 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4000, 4008, 3664, 4016, 4024, 4032, 3696, 4040, 3712, 3720, 3728, 3736, 4048, 3752, 4056, 4064, 4072, 4080, 4088, 4096, 4104, 4112, 24, 4120 } }; /* IBM274 EBCDIC-BE CP274 274 */ static struct strip_data data_87 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 3832, 3840, 3848, 3856, 4128, 0, 4136, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 4152, 3920, 4160, 3928, 4168, 3944, 24, 3952 } }; /* IBM275 EBCDIC-BR CP275 275 */ static struct strip_data data_88 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 4176, 3840, 4184, 3856, 4192, 0, 4200, 72, 3880, 3888, 3896, 3904, 3912, 0, 0, 4208, 3920, 4216, 3928, 3936, 3944, 24, 3952 } }; /* IBM277 EBCDIC-CP-DK EBCDIC-CP-NO */ static struct strip_data data_89 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4224, 4232, 3664, 4240, 4248, 4256, 4264, 4272, 4280, 3720, 3728, 4288, 4296, 3752, 4304, 4064, 4312, 3784, 4320, 4328, 3808, 3816, 24, 3824 } }; /* IBM278 CP278 278 ebcdic-cp-fi ebcdic-cp-se */ static struct strip_data data_90 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4336, 4344, 4352, 4240, 4360, 4032, 3696, 4368, 3712, 3720, 3728, 4376, 4296, 3752, 4384, 4064, 4072, 4080, 4320, 4328, 3808, 4392, 24, 3824 } }; /* IBM280 CP280 280 ebcdic-cp-it */ static struct strip_data data_91 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4400, 4408, 4416, 4424, 3680, 4432, 3696, 4440, 3712, 3720, 4448, 3736, 4456, 3752, 4464, 4064, 608, 4472, 4160, 4480, 4488, 3816, 24, 3824 } }; /* IBM281 EBCDIC-JP-E CP281 281 */ static struct strip_data data_92 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 4496, 3840, 4504, 3856, 3864, 0, 3872, 72, 3880, 3888, 3896, 4512, 3912, 0, 0, 3776, 3920, 3792, 3928, 4520, 3944, 24, 3952 } }; /* IBM284 CP284 284 ebcdic-cp-es */ static struct strip_data data_93 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 4528, 3664, 4536, 3680, 4544, 3696, 4552, 3712, 3720, 3728, 3736, 4560, 3752, 4304, 4568, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* IBM285 CP285 285 ebcdic-cp-gb */ static struct strip_data data_94 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 4576, 3664, 4584, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 4592, 3752, 4600, 4608, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* IBM290 CP290 290 EBCDIC-JP-kana */ static struct strip_data data_95 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 376, 4616, 4624, 4632, 3856, 3864, 0, 3872, 4640, 4648, 4656, 4664, 4672, 4680, 0, 4688, 40, 3920, 4696, 3928, 4520, 3944, 24, 3952 } }; /* IBM297 CP297 297 ebcdic-cp-fr */ static struct strip_data data_96 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4704, 4408, 4712, 4720, 3680, 4728, 3696, 4736, 3712, 3720, 4448, 3736, 4744, 3752, 4752, 4760, 4152, 3784, 4160, 4768, 4488, 3816, 24, 3824 } }; /* IBM420 CP420 420 ebcdic-cp-ar1 */ static struct strip_data data_97 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4776, 4784, 4792, 4800, 4808, 4816, 4824, 4832, 4840, 4848, 4856, 4864, 4872, 4880, 4888, 4896, 4904, 4912, 4920, 4928, 4936, 4944, 24, 4952 } }; /* IBM423 CP423 423 ebcdic-cp-gr */ static struct strip_data data_98 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4960, 4968, 4976, 4984, 4992, 5000, 5008, 5016, 5024, 5032, 5040, 5048, 5056, 5064, 5072, 5080, 5088, 5096, 5104, 5112, 5120, 5128, 24, 5136 } }; /* IBM424 CP424 424 ebcdic-cp-he */ static struct strip_data data_99 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 5144, 5152, 5160, 5168, 5176, 5184, 5192, 5200, 72, 5208, 3728, 5216, 3744, 5224, 3760, 5232, 3776, 5240, 3792, 5248, 3808, 5256, 24, 5264 } }; /* IBM437 CP437 437 */ static struct strip_data data_100 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5280, 5288, 5296, 5304, 5312, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 5376, 5384, 5392 } }; /* IBM500 CP500 500 500V1 ebcdic-cp-be ebcdic-cp-ch */ static struct strip_data data_101 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 3960, 3664, 3968, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 3744, 3752, 4304, 5400, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* IBM850 CP850 850 */ static struct strip_data data_102 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5280, 5288, 5408, 5304, 5416, 5424, 5432, 5440, 5448, 5456, 5464, 5472, 5480, 5488, 5496 } }; /* IBM851 CP851 851 */ static struct strip_data data_103 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5504, 5512, 5520, 5528, 5536, 5544, 5552, 5560, 5568, 5576, 5584, 5592, 5600, 5608, 5616, 5624 } }; /* IBM852 CP852 852 pcl2 pclatin2 */ static struct strip_data data_104 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5632, 5640, 5648, 5656, 5664, 5672, 5680, 5688, 5696, 5448, 5704, 5712, 5720, 5728, 5736, 5744 } }; /* IBM855 CP855 855 */ static struct strip_data data_105 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5752, 5760, 5768, 5776, 5784, 5792, 5800, 5808, 5816, 5448, 5824, 5832, 5840, 5848, 5856, 5864 } }; /* IBM857 CP857 857 */ static struct strip_data data_106 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5872, 5288, 5880, 5888, 5416, 5424, 5432, 5440, 5448, 5896, 5464, 5904, 5912, 5920, 5928 } }; /* IBM860 CP860 860 */ static struct strip_data data_107 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5936, 5944, 5952, 5960, 5304, 5968, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 5376, 5384, 5392 } }; /* IBM861 CP861 861 cp-is */ static struct strip_data data_108 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5976, 5984, 5992, 6000, 6008, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 5376, 5384, 5392 } }; /* IBM862 CP862 862 */ static struct strip_data data_109 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 2088, 2096, 2104, 6016, 5304, 6008, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 5376, 5384, 5392 } }; /* IBM863 CP863 863 */ static struct strip_data data_110 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6024, 6032, 6040, 6048, 6056, 6064, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 6072, 5384, 6080 } }; /* IBM864 CP864 864 */ static struct strip_data data_111 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6088, 6096, 6104, 6112, 6120, 6128, 6136, 6144, 6152, 6160, 6168, 6176, 6184, 6192, 6200, 6208 } }; /* IBM865 CP865 865 */ static struct strip_data data_112 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 5280, 5288, 6216, 5304, 5312, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 6072, 5384, 6080 } }; /* IBM868 CP868 868 cp-ar */ static struct strip_data data_113 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6136, 6224, 6232, 6240, 6248, 6256, 6264, 6272, 6280, 6288, 6296, 6304, 6312, 6320, 6328, 6336 } }; /* IBM869 CP869 869 cp-gr */ static struct strip_data data_114 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6344, 6352, 6360, 6368, 5536, 5544, 6376, 6384, 5568, 5576, 5584, 5592, 5600, 5608, 6392, 5624 } }; /* IBM870 CP870 870 ebcdic-cp-roece ebcdic-cp-yu */ static struct strip_data data_115 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 6400, 6408, 6416, 6424, 6432, 6440, 6448, 6456, 6464, 6472, 3728, 6480, 6488, 6496, 6504, 6512, 3776, 6520, 3792, 6528, 3808, 6536, 24, 6544 } }; /* IBM871 CP871 871 ebcdic-cp-is */ static struct strip_data data_116 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 6552, 3664, 6560, 3680, 3688, 3696, 6568, 3712, 6576, 3728, 6584, 6592, 6600, 4304, 6608, 6616, 6624, 6632, 3800, 6640, 6648, 24, 3824 } }; /* IBM875 CP875 875 EBCDIC-Greek */ static struct strip_data data_117 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 4960, 4968, 4976, 4984, 4992, 6656, 6664, 6672, 6680, 5032, 3728, 5048, 6688, 6696, 6704, 6712, 3776, 6720, 3792, 6728, 3936, 6736, 24, 6744 } }; /* IBM880 CP880 880 EBCDIC-Cyrillic */ static struct strip_data data_118 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 6752, 6760, 6768, 6776, 6784, 6792, 6800, 6808, 6816, 6824, 6832, 6840, 6848, 6856, 688, 696, 40, 6864, 4696, 6872, 6880, 6888, 24, 6896 } }; /* IBM891 CP891 891 */ static struct strip_data data_119 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* IBM903 CP903 903 */ static struct strip_data data_120 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* IBM904 CP904 904 */ static struct strip_data data_121 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 6904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6912 } }; /* IBM905 CP905 905 ebcdic-cp-tr */ static struct strip_data data_122 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 6920, 6928, 3664, 6936, 6944, 6952, 6960, 6968, 6464, 6976, 3728, 6984, 6592, 6992, 7000, 7008, 7016, 7024, 7032, 7040, 7048, 7056, 24, 7064 } }; /* IBM918 CP918 918 ebcdic-cp-ar2 */ static struct strip_data data_123 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 7072, 7080, 7088, 7096, 7104, 7112, 6136, 7120, 7128, 7136, 3888, 7144, 7152, 7160, 7168, 7176, 3776, 7184, 3792, 7192, 3936, 7200, 24, 7208 } }; /* IBM1004 CP1004 1004 os2latin1 */ static struct strip_data data_124 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7216, 7224, 7232, 7240, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472 } }; /* IBM1026 CP1026 1026 */ static struct strip_data data_125 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 6928, 3664, 6936, 3680, 6952, 3696, 6968, 3712, 7248, 3728, 7256, 6592, 7264, 4304, 7272, 7016, 6624, 7032, 7280, 7048, 7288, 24, 7064 } }; /* IBM1047 CP1047 1047 */ static struct strip_data data_126 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 3648, 3656, 3664, 7296, 3680, 3688, 3696, 3704, 3712, 3720, 3728, 3736, 3744, 7304, 7312, 7320, 3776, 3784, 3792, 3800, 3808, 3816, 24, 3824 } }; /* CP1250 ms-ee 1250 windows-1250 */ static struct strip_data data_127 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7328, 7336, 7232, 7344, 7352, 7360, 7368, 7376, 1512, 1520, 1528, 1536, 1544, 1552, 1560, 1568 } }; /* CP1251 ms-cyrl 1251 windows-1251 */ static struct strip_data data_128 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7384, 7392, 7400, 7408, 7416, 7424, 7432, 7440, 2272, 2280, 2288, 2296, 2304, 2312, 2320, 2328 } }; /* CP1252 ms-ansi 1252 windows-1252 */ static struct strip_data data_129 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7448, 7456, 7232, 7240, 1384, 1392, 1400, 1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472 } }; /* CP1253 ms-greek 1253 windows-1253 */ static struct strip_data data_130 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7448, 7464, 7232, 7472, 7480, 7488, 7496, 1944, 1952, 1960, 1968, 1976, 1984, 1992, 2000, 2008 } }; /* CP1254 ms-turk 1254 windows-1254 */ static struct strip_data data_131 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7448, 7224, 7232, 7240, 1384, 1392, 1400, 1408, 1416, 1424, 2432, 2440, 1448, 2448, 2456, 2464 } }; /* CP1255 ms-hebr 1255 windows-1255 */ static struct strip_data data_132 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7448, 7464, 7232, 7472, 2056, 2064, 1400, 2072, 0, 0, 0, 2080, 2088, 2096, 2104, 7504 } }; /* CP1256 ms-arab 1256 windows-1256 */ static struct strip_data data_133 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7512, 7520, 7528, 7536, 7544, 7552, 7560, 7568, 7576, 7584, 7592, 7600, 7608, 7616, 7624, 7632 } }; /* CP1257 WinBaltRim 1257 windows-1257 */ static struct strip_data data_134 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 7328, 7464, 7232, 7472, 7640, 7648, 3168, 7656, 2832, 2840, 2848, 2856, 2864, 2872, 2880, 7664 } }; /* EBCDIC-AT-DE */ static struct strip_data data_135 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7672, 3840, 7680, 3856, 7688, 0, 7696, 72, 3880, 3888, 3896, 7704, 3912, 0, 0, 4072, 3920, 4088, 3928, 7712, 3944, 24, 3952 } }; /* EBCDIC-AT-DE-A */ static struct strip_data data_136 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7720, 3840, 7728, 3856, 7736, 0, 7744, 72, 3880, 3888, 3896, 7752, 3912, 0, 0, 40, 3920, 4696, 3928, 7760, 3944, 24, 3952 } }; /* EBCDIC-CA-FR */ static struct strip_data data_137 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 7768, 7776, 7784, 7792, 7800, 7808, 7816, 3872, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 4152, 7824, 4160, 7832, 7840, 7848, 24, 7856 } }; /* EBCDIC-DK-NO */ static struct strip_data data_138 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7864, 3840, 7872, 3856, 7880, 0, 7888, 72, 3880, 3888, 3896, 7896, 3912, 0, 0, 4312, 3920, 4320, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-DK-NO-A */ static struct strip_data data_139 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7904, 3840, 7912, 3856, 3864, 0, 7920, 72, 3880, 3888, 3896, 7752, 3912, 0, 0, 40, 3920, 4696, 3928, 7760, 3944, 24, 3952 } }; /* EBCDIC-FI-SE */ static struct strip_data data_140 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7928, 3840, 7872, 3856, 7688, 0, 7936, 72, 3880, 3888, 3896, 7896, 3912, 0, 0, 4072, 3920, 4320, 3928, 7944, 3944, 24, 3952 } }; /* EBCDIC-FI-SE-A */ static struct strip_data data_141 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7720, 3840, 7912, 3856, 3864, 0, 7744, 72, 3880, 3888, 3896, 7752, 3912, 0, 0, 40, 3920, 4696, 3928, 7760, 3944, 24, 3952 } }; /* EBCDIC-FR */ static struct strip_data data_142 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7952, 3840, 7960, 3856, 4128, 0, 7968, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 4152, 3920, 4160, 3928, 4168, 3944, 24, 3952 } }; /* EBCDIC-IT */ static struct strip_data data_143 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 7952, 3840, 7976, 3856, 7984, 0, 7992, 72, 3880, 3888, 3896, 8000, 3912, 0, 0, 608, 3920, 4160, 3928, 4168, 3944, 24, 3952 } }; /* EBCDIC-PT */ static struct strip_data data_144 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 3832, 3840, 3848, 3856, 8008, 0, 8016, 72, 3880, 3888, 3896, 8024, 3912, 0, 0, 8032, 3920, 5104, 3928, 8040, 3944, 24, 3952 } }; /* EBCDIC-ES */ static struct strip_data data_145 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8048, 3840, 8056, 3856, 8064, 0, 8072, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-ES-A */ static struct strip_data data_146 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8048, 3840, 8056, 3856, 3864, 0, 8080, 72, 3880, 3888, 3896, 7752, 3912, 0, 0, 40, 3920, 4696, 3928, 7760, 3944, 24, 3952 } }; /* EBCDIC-ES-S */ static struct strip_data data_147 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8048, 3840, 8088, 3856, 8064, 0, 8072, 72, 3880, 3888, 3896, 4144, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-UK */ static struct strip_data data_148 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8096, 3840, 8104, 3856, 3864, 0, 3872, 72, 3880, 3888, 3896, 4512, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-US */ static struct strip_data data_149 = { ucs2_data_pool, { 3584, 3592, 3600, 3608, 3616, 3624, 3632, 3640, 776, 8048, 3840, 8088, 3856, 3864, 0, 3872, 72, 3880, 3888, 3896, 3904, 3912, 0, 0, 3776, 3920, 3792, 3928, 3936, 3944, 24, 3952 } }; /* EBCDIC-IS-FRISS friss */ static struct strip_data data_150 = { ucs2_data_pool, { 104, 112, 120, 128, 0, 0, 0, 0, 8112, 8120, 8128, 8136, 3856, 8144, 8152, 8160, 72, 8168, 3888, 3896, 8176, 8184, 0, 8192, 8200, 8208, 6632, 8216, 8224, 8232, 24, 8240 } }; /* KOI-7 */ static struct strip_data data_151 = { ucs2_data_pool, { 104, 112, 120, 128, 144, 16, 24, 32, 152, 48, 56, 160, 696, 704, 712, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* KOI-8 GOST_19768-74 */ static struct strip_data data_152 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 0, 0, 0, 0, 0, 0, 0, 0, 664, 672, 680, 688, 696, 704, 712, 8248 } }; /* KOI8-R */ static struct strip_data data_153 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 8256, 8264, 8272, 8280, 8288, 8296, 8304, 8312, 664, 672, 680, 688, 696, 704, 712, 1792 } }; /* KOI8-RU */ static struct strip_data data_154 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 8256, 8264, 8320, 8328, 8336, 8344, 8352, 8360, 664, 672, 680, 688, 696, 704, 712, 1792 } }; /* KOI8-U */ static struct strip_data data_155 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 8256, 8264, 8368, 8280, 8336, 8376, 8352, 8384, 664, 672, 680, 688, 696, 704, 0, 0 } }; /* CWI CWI-2 cp-hu */ static struct strip_data data_156 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 5272, 8392, 8400, 8408, 8416, 5312, 5320, 5328, 5336, 5344, 5352, 5360, 8424, 6072, 5384, 6080 } }; /* macintosh_ce macce */ static struct strip_data data_157 = { ucs2_data_pool, { 104, 112, 120, 128, 192, 16, 24, 32, 152, 48, 56, 160, 168, 80, 88, 200, 8432, 8440, 8448, 8456, 8464, 8472, 8480, 8488, 8496, 8504, 8512, 8520, 8528, 8536, 8544, 8552 } }; bool module_strips (struct recode_outer *outer) { RECODE_ALIAS alias; if (!declare_strip_data (outer, &data_0, "ISO_646.basic")) return false; if (!declare_strip_data (outer, &data_1, "INVARIANT")) return false; if (!declare_strip_data (outer, &data_2, "ISO_646.irv")) return false; if (!declare_strip_data (outer, &data_3, "BS_4730")) return false; if (!declare_strip_data (outer, &data_4, "ANSI_X3.4-1968")) return false; if (!declare_strip_data (outer, &data_5, "NATS-SEFI")) return false; if (!declare_strip_data (outer, &data_6, "NATS-SEFI-ADD")) return false; if (!declare_strip_data (outer, &data_7, "NATS-DANO")) return false; if (!declare_strip_data (outer, &data_8, "NATS-DANO-ADD")) return false; if (!declare_strip_data (outer, &data_9, "SEN_850200_B")) return false; if (!declare_strip_data (outer, &data_10, "SEN_850200_C")) return false; if (!declare_strip_data (outer, &data_11, "JIS_C6220-1969-jp")) return false; if (!declare_strip_data (outer, &data_12, "JIS_C6220-1969-ro")) return false; if (!declare_strip_data (outer, &data_13, "IT")) return false; if (!declare_strip_data (outer, &data_14, "PT")) return false; if (!declare_strip_data (outer, &data_15, "ES")) return false; if (!declare_strip_data (outer, &data_16, "greek7-old")) return false; if (!declare_strip_data (outer, &data_17, "latin-greek")) return false; if (!declare_strip_data (outer, &data_18, "DIN_66003")) return false; if (!declare_strip_data (outer, &data_19, "NF_Z_62-010_(1973)")) return false; if (!declare_strip_data (outer, &data_20, "Latin-greek-1")) return false; if (!declare_strip_data (outer, &data_21, "ISO_5427")) return false; if (!declare_strip_data (outer, &data_22, "BS_viewdata")) return false; if (!declare_strip_data (outer, &data_23, "INIS")) return false; if (!declare_strip_data (outer, &data_24, "INIS-8")) return false; if (!declare_strip_data (outer, &data_25, "INIS-cyrillic")) return false; if (!declare_strip_data (outer, &data_26, "ISO_5427-ext")) return false; if (!declare_strip_data (outer, &data_27, "ISO_5428")) return false; if (!declare_strip_data (outer, &data_28, "GB_1988-80")) return false; if (!declare_strip_data (outer, &data_29, "NS_4551-1")) return false; if (!declare_strip_data (outer, &data_30, "NS_4551-2")) return false; if (!declare_strip_data (outer, &data_31, "NF_Z_62-010")) return false; if (!declare_strip_data (outer, &data_32, "PT2")) return false; if (!declare_strip_data (outer, &data_33, "ES2")) return false; if (!declare_strip_data (outer, &data_34, "MSZ_7795.3")) return false; if (!declare_strip_data (outer, &data_35, "greek7")) return false; if (!declare_strip_data (outer, &data_36, "ASMO_449")) return false; if (!declare_strip_data (outer, &data_37, "JIS_C6229-1984-a")) return false; if (!declare_strip_data (outer, &data_38, "JIS_C6229-1984-b")) return false; if (!declare_strip_data (outer, &data_39, "JIS_C6229-1984-b-add")) return false; if (!declare_strip_data (outer, &data_40, "JIS_C6229-1984-hand")) return false; if (!declare_strip_data (outer, &data_41, "JIS_C6229-1984-hand-add")) return false; if (!declare_strip_data (outer, &data_42, "JIS_C6229-1984-kana")) return false; if (!declare_strip_data (outer, &data_43, "ISO_2033-1983")) return false; if (!declare_strip_data (outer, &data_44, "ISO-8859-1")) return false; if (!declare_strip_data (outer, &data_45, "ISO-8859-2")) return false; if (!declare_strip_data (outer, &data_46, "T.61-7bit")) return false; if (!declare_strip_data (outer, &data_47, "ISO-8859-3")) return false; if (!declare_strip_data (outer, &data_48, "ISO-8859-4")) return false; if (!declare_strip_data (outer, &data_49, "ECMA-cyrillic")) return false; if (!declare_strip_data (outer, &data_50, "CSA_Z243.4-1985-1")) return false; if (!declare_strip_data (outer, &data_51, "CSA_Z243.4-1985-2")) return false; if (!declare_strip_data (outer, &data_52, "CSA_Z243.4-1985-gr")) return false; if (!declare_strip_data (outer, &data_53, "ISO-8859-7")) return false; if (!declare_strip_data (outer, &data_54, "ISO-8859-6")) return false; if (!declare_strip_data (outer, &data_55, "ISO-8859-8")) return false; if (!declare_strip_data (outer, &data_56, "CSN_369103")) return false; if (!declare_strip_data (outer, &data_57, "JUS_I.B1.002")) return false; if (!declare_strip_data (outer, &data_58, "IEC_P27-1")) return false; if (!declare_strip_data (outer, &data_59, "ISO-8859-5")) return false; if (!declare_strip_data (outer, &data_60, "JUS_I.B1.003-serb")) return false; if (!declare_strip_data (outer, &data_61, "JUS_I.B1.003-mac")) return false; if (!declare_strip_data (outer, &data_62, "ISO-8859-9")) return false; if (!declare_strip_data (outer, &data_63, "greek-ccitt")) return false; if (!declare_strip_data (outer, &data_64, "NC_NC00-10")) return false; if (!declare_strip_data (outer, &data_65, "ISO_6937-2-25")) return false; if (!declare_strip_data (outer, &data_66, "GOST_19768-87")) return false; if (!declare_strip_data (outer, &data_67, "ISO_8859-supp")) return false; if (!declare_strip_data (outer, &data_68, "ISO_10367-box")) return false; if (!declare_strip_data (outer, &data_69, "ISO-8859-10")) return false; if (!declare_strip_data (outer, &data_70, "ISO-8859-13")) return false; if (!declare_strip_data (outer, &data_71, "ISO-8859-14")) return false; if (!declare_strip_data (outer, &data_72, "ISO-8859-15")) return false; if (!declare_strip_data (outer, &data_73, "sami")) return false; if (!declare_strip_data (outer, &data_74, "baltic")) return false; if (!declare_strip_data (outer, &data_75, "DS_2089")) return false; if (!declare_strip_data (outer, &data_76, "JIS_X0201")) return false; if (!declare_strip_data (outer, &data_77, "KSC5636")) return false; if (!declare_strip_data (outer, &data_78, "DEC-MCS")) return false; if (!declare_strip_data (outer, &data_79, "hp-roman8")) return false; if (!declare_strip_data (outer, &data_80, "NeXTSTEP")) return false; if (!declare_strip_data (outer, &data_81, "macintosh")) return false; if (!declare_strip_data (outer, &data_82, "mac-is")) return false; if (!declare_strip_data (outer, &data_83, "IBM037")) return false; if (!declare_strip_data (outer, &data_84, "IBM038")) return false; if (!declare_strip_data (outer, &data_85, "IBM256")) return false; if (!declare_strip_data (outer, &data_86, "IBM273")) return false; if (!declare_strip_data (outer, &data_87, "IBM274")) return false; if (!declare_strip_data (outer, &data_88, "IBM275")) return false; if (!declare_strip_data (outer, &data_89, "IBM277")) return false; if (!declare_strip_data (outer, &data_90, "IBM278")) return false; if (!declare_strip_data (outer, &data_91, "IBM280")) return false; if (!declare_strip_data (outer, &data_92, "IBM281")) return false; if (!declare_strip_data (outer, &data_93, "IBM284")) return false; if (!declare_strip_data (outer, &data_94, "IBM285")) return false; if (!declare_strip_data (outer, &data_95, "IBM290")) return false; if (!declare_strip_data (outer, &data_96, "IBM297")) return false; if (!declare_strip_data (outer, &data_97, "IBM420")) return false; if (!declare_strip_data (outer, &data_98, "IBM423")) return false; if (!declare_strip_data (outer, &data_99, "IBM424")) return false; if (!declare_strip_data (outer, &data_100, "IBM437")) return false; if (!declare_strip_data (outer, &data_101, "IBM500")) return false; if (!declare_strip_data (outer, &data_102, "IBM850")) return false; if (!declare_strip_data (outer, &data_103, "IBM851")) return false; if (!declare_strip_data (outer, &data_104, "IBM852")) return false; if (!declare_strip_data (outer, &data_105, "IBM855")) return false; if (!declare_strip_data (outer, &data_106, "IBM857")) return false; if (!declare_strip_data (outer, &data_107, "IBM860")) return false; if (!declare_strip_data (outer, &data_108, "IBM861")) return false; if (!declare_strip_data (outer, &data_109, "IBM862")) return false; if (!declare_strip_data (outer, &data_110, "IBM863")) return false; if (!declare_strip_data (outer, &data_111, "IBM864")) return false; if (!declare_strip_data (outer, &data_112, "IBM865")) return false; if (!declare_strip_data (outer, &data_113, "IBM868")) return false; if (!declare_strip_data (outer, &data_114, "IBM869")) return false; if (!declare_strip_data (outer, &data_115, "IBM870")) return false; if (!declare_strip_data (outer, &data_116, "IBM871")) return false; if (!declare_strip_data (outer, &data_117, "IBM875")) return false; if (!declare_strip_data (outer, &data_118, "IBM880")) return false; if (!declare_strip_data (outer, &data_119, "IBM891")) return false; if (!declare_strip_data (outer, &data_120, "IBM903")) return false; if (!declare_strip_data (outer, &data_121, "IBM904")) return false; if (!declare_strip_data (outer, &data_122, "IBM905")) return false; if (!declare_strip_data (outer, &data_123, "IBM918")) return false; if (!declare_strip_data (outer, &data_124, "IBM1004")) return false; if (!declare_strip_data (outer, &data_125, "IBM1026")) return false; if (!declare_strip_data (outer, &data_126, "IBM1047")) return false; if (!declare_strip_data (outer, &data_127, "CP1250")) return false; if (!declare_strip_data (outer, &data_128, "CP1251")) return false; if (!declare_strip_data (outer, &data_129, "CP1252")) return false; if (!declare_strip_data (outer, &data_130, "CP1253")) return false; if (!declare_strip_data (outer, &data_131, "CP1254")) return false; if (!declare_strip_data (outer, &data_132, "CP1255")) return false; if (!declare_strip_data (outer, &data_133, "CP1256")) return false; if (!declare_strip_data (outer, &data_134, "CP1257")) return false; if (!declare_strip_data (outer, &data_135, "EBCDIC-AT-DE")) return false; if (!declare_strip_data (outer, &data_136, "EBCDIC-AT-DE-A")) return false; if (!declare_strip_data (outer, &data_137, "EBCDIC-CA-FR")) return false; if (!declare_strip_data (outer, &data_138, "EBCDIC-DK-NO")) return false; if (!declare_strip_data (outer, &data_139, "EBCDIC-DK-NO-A")) return false; if (!declare_strip_data (outer, &data_140, "EBCDIC-FI-SE")) return false; if (!declare_strip_data (outer, &data_141, "EBCDIC-FI-SE-A")) return false; if (!declare_strip_data (outer, &data_142, "EBCDIC-FR")) return false; if (!declare_strip_data (outer, &data_143, "EBCDIC-IT")) return false; if (!declare_strip_data (outer, &data_144, "EBCDIC-PT")) return false; if (!declare_strip_data (outer, &data_145, "EBCDIC-ES")) return false; if (!declare_strip_data (outer, &data_146, "EBCDIC-ES-A")) return false; if (!declare_strip_data (outer, &data_147, "EBCDIC-ES-S")) return false; if (!declare_strip_data (outer, &data_148, "EBCDIC-UK")) return false; if (!declare_strip_data (outer, &data_149, "EBCDIC-US")) return false; if (!declare_strip_data (outer, &data_150, "EBCDIC-IS-FRISS")) return false; if (!declare_strip_data (outer, &data_151, "KOI-7")) return false; if (!declare_strip_data (outer, &data_152, "KOI-8")) return false; if (!declare_strip_data (outer, &data_153, "KOI8-R")) return false; if (!declare_strip_data (outer, &data_154, "KOI8-RU")) return false; if (!declare_strip_data (outer, &data_155, "KOI8-U")) return false; if (!declare_strip_data (outer, &data_156, "CWI")) return false; if (!declare_strip_data (outer, &data_157, "macintosh_ce")) return false; if (!declare_alias (outer, "ref", "ISO_646.basic")) return false; if (!declare_alias (outer, "ISO_646.basic:1983", "ISO_646.basic")) return false; if (!declare_alias (outer, "iso-ir-170", "INVARIANT")) return false; if (!declare_alias (outer, "iso-ir-2", "ISO_646.irv")) return false; if (!declare_alias (outer, "ISO_646.irv:1983", "ISO_646.irv")) return false; if (!declare_alias (outer, "irv", "ISO_646.irv")) return false; if (!declare_alias (outer, "iso-ir-4", "BS_4730")) return false; if (!declare_alias (outer, "ISO646-GB", "BS_4730")) return false; if (!declare_alias (outer, "gb", "BS_4730")) return false; if (!declare_alias (outer, "uk", "BS_4730")) return false; if (!declare_alias (outer, "iso-ir-6", "ANSI_X3.4-1968")) return false; if (!declare_alias (outer, "ANSI_X3.4-1986", "ANSI_X3.4-1968")) return false; if (!declare_alias (outer, "ISO_646.irv:1991", "ANSI_X3.4-1968")) return false; if (!declare_alias (outer, "ASCII", "ANSI_X3.4-1968")) return false; if (!declare_alias (outer, "ISO646-US", "ANSI_X3.4-1968")) return false; if (!declare_alias (outer, "US-ASCII", "ANSI_X3.4-1968")) return false; if (!declare_alias (outer, "us", "ANSI_X3.4-1968")) return false; if (alias = declare_alias (outer, "IBM367", "ANSI_X3.4-1968"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP367", "ANSI_X3.4-1968"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "367", "ANSI_X3.4-1968"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "iso-ir-8-1", "NATS-SEFI")) return false; if (!declare_alias (outer, "iso-ir-8-2", "NATS-SEFI-ADD")) return false; if (!declare_alias (outer, "iso-ir-9-1", "NATS-DANO")) return false; if (!declare_alias (outer, "iso-ir-9-2", "NATS-DANO-ADD")) return false; if (!declare_alias (outer, "iso-ir-10", "SEN_850200_B")) return false; if (!declare_alias (outer, "FI", "SEN_850200_B")) return false; if (!declare_alias (outer, "ISO646-FI", "SEN_850200_B")) return false; if (!declare_alias (outer, "ISO646-SE", "SEN_850200_B")) return false; if (!declare_alias (outer, "se", "SEN_850200_B")) return false; if (!declare_alias (outer, "SS636127", "SEN_850200_B")) return false; if (!declare_alias (outer, "iso-ir-11", "SEN_850200_C")) return false; if (!declare_alias (outer, "ISO646-SE2", "SEN_850200_C")) return false; if (!declare_alias (outer, "se2", "SEN_850200_C")) return false; if (!declare_alias (outer, "JIS_C6220-1969", "JIS_C6220-1969-jp")) return false; if (!declare_alias (outer, "iso-ir-13", "JIS_C6220-1969-jp")) return false; if (!declare_alias (outer, "katakana", "JIS_C6220-1969-jp")) return false; if (!declare_alias (outer, "x0201-7", "JIS_C6220-1969-jp")) return false; if (!declare_alias (outer, "iso-ir-14", "JIS_C6220-1969-ro")) return false; if (!declare_alias (outer, "jp", "JIS_C6220-1969-ro")) return false; if (!declare_alias (outer, "ISO646-JP", "JIS_C6220-1969-ro")) return false; if (!declare_alias (outer, "iso-ir-15", "IT")) return false; if (!declare_alias (outer, "ISO646-IT", "IT")) return false; if (!declare_alias (outer, "iso-ir-16", "PT")) return false; if (!declare_alias (outer, "ISO646-PT", "PT")) return false; if (!declare_alias (outer, "iso-ir-17", "ES")) return false; if (!declare_alias (outer, "ISO646-ES", "ES")) return false; if (!declare_alias (outer, "iso-ir-18", "greek7-old")) return false; if (!declare_alias (outer, "iso-ir-19", "latin-greek")) return false; if (!declare_alias (outer, "iso-ir-21", "DIN_66003")) return false; if (!declare_alias (outer, "de", "DIN_66003")) return false; if (!declare_alias (outer, "ISO646-DE", "DIN_66003")) return false; if (!declare_alias (outer, "iso-ir-25", "NF_Z_62-010_(1973)")) return false; if (!declare_alias (outer, "ISO646-FR1", "NF_Z_62-010_(1973)")) return false; if (!declare_alias (outer, "iso-ir-27", "Latin-greek-1")) return false; if (!declare_alias (outer, "iso-ir-37", "ISO_5427")) return false; if (!declare_alias (outer, "iso-ir-47", "BS_viewdata")) return false; if (!declare_alias (outer, "iso-ir-49", "INIS")) return false; if (!declare_alias (outer, "iso-ir-50", "INIS-8")) return false; if (!declare_alias (outer, "iso-ir-51", "INIS-cyrillic")) return false; if (!declare_alias (outer, "iso-ir-54", "ISO_5427-ext")) return false; if (!declare_alias (outer, "ISO_5427:1981", "ISO_5427-ext")) return false; if (!declare_alias (outer, "iso-ir-55", "ISO_5428")) return false; if (!declare_alias (outer, "ISO_5428:1980", "ISO_5428")) return false; if (!declare_alias (outer, "iso-ir-57", "GB_1988-80")) return false; if (!declare_alias (outer, "cn", "GB_1988-80")) return false; if (!declare_alias (outer, "ISO646-CN", "GB_1988-80")) return false; if (!declare_alias (outer, "iso-ir-60", "NS_4551-1")) return false; if (!declare_alias (outer, "ISO646-NO", "NS_4551-1")) return false; if (!declare_alias (outer, "no", "NS_4551-1")) return false; if (!declare_alias (outer, "ISO646-NO2", "NS_4551-2")) return false; if (!declare_alias (outer, "iso-ir-61", "NS_4551-2")) return false; if (!declare_alias (outer, "no2", "NS_4551-2")) return false; if (!declare_alias (outer, "iso-ir-69", "NF_Z_62-010")) return false; if (!declare_alias (outer, "ISO646-FR", "NF_Z_62-010")) return false; if (!declare_alias (outer, "fr", "NF_Z_62-010")) return false; if (!declare_alias (outer, "iso-ir-84", "PT2")) return false; if (!declare_alias (outer, "ISO646-PT2", "PT2")) return false; if (!declare_alias (outer, "iso-ir-85", "ES2")) return false; if (!declare_alias (outer, "ISO646-ES2", "ES2")) return false; if (!declare_alias (outer, "iso-ir-86", "MSZ_7795.3")) return false; if (!declare_alias (outer, "ISO646-HU", "MSZ_7795.3")) return false; if (!declare_alias (outer, "hu", "MSZ_7795.3")) return false; if (!declare_alias (outer, "iso-ir-88", "greek7")) return false; if (!declare_alias (outer, "ISO_9036", "ASMO_449")) return false; if (!declare_alias (outer, "arabic7", "ASMO_449")) return false; if (!declare_alias (outer, "iso-ir-89", "ASMO_449")) return false; if (!declare_alias (outer, "jp-ocr-a", "JIS_C6229-1984-a")) return false; if (!declare_alias (outer, "ISO646-JP-OCR-B", "JIS_C6229-1984-b")) return false; if (!declare_alias (outer, "jp-ocr-b", "JIS_C6229-1984-b")) return false; if (!declare_alias (outer, "iso-ir-93", "JIS_C6229-1984-b-add")) return false; if (!declare_alias (outer, "jp-ocr-b-add", "JIS_C6229-1984-b-add")) return false; if (!declare_alias (outer, "iso-ir-94", "JIS_C6229-1984-hand")) return false; if (!declare_alias (outer, "jp-ocr-hand", "JIS_C6229-1984-hand")) return false; if (!declare_alias (outer, "iso-ir-95", "JIS_C6229-1984-hand-add")) return false; if (!declare_alias (outer, "jp-ocr-hand-add", "JIS_C6229-1984-hand-add")) return false; if (!declare_alias (outer, "iso-ir-96", "JIS_C6229-1984-kana")) return false; if (!declare_alias (outer, "iso-ir-98", "ISO_2033-1983")) return false; if (!declare_alias (outer, "e13b", "ISO_2033-1983")) return false; if (!declare_alias (outer, "iso-ir-100", "ISO-8859-1")) return false; if (!declare_alias (outer, "ISO_8859-1:1987", "ISO-8859-1")) return false; if (!declare_alias (outer, "ISO_8859-1", "ISO-8859-1")) return false; if (!declare_alias (outer, "ISO8859-1", "ISO-8859-1")) return false; if (!declare_alias (outer, "latin1", "ISO-8859-1")) return false; if (!declare_alias (outer, "l1", "ISO-8859-1")) return false; if (alias = declare_alias (outer, "IBM819", "ISO-8859-1"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP819", "ISO-8859-1"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "819", "ISO-8859-1"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "iso-ir-101", "ISO-8859-2")) return false; if (!declare_alias (outer, "ISO_8859-2:1987", "ISO-8859-2")) return false; if (!declare_alias (outer, "ISO_8859-2", "ISO-8859-2")) return false; if (!declare_alias (outer, "ISO8859-2", "ISO-8859-2")) return false; if (!declare_alias (outer, "latin2", "ISO-8859-2")) return false; if (!declare_alias (outer, "l2", "ISO-8859-2")) return false; if (alias = declare_alias (outer, "IBM912", "ISO-8859-2"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP912", "ISO-8859-2"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "912", "ISO-8859-2"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "iso-ir-102", "T.61-7bit")) return false; if (!declare_alias (outer, "iso-ir-109", "ISO-8859-3")) return false; if (!declare_alias (outer, "ISO_8859-3:1988", "ISO-8859-3")) return false; if (!declare_alias (outer, "ISO_8859-3", "ISO-8859-3")) return false; if (!declare_alias (outer, "ISO8859-3", "ISO-8859-3")) return false; if (!declare_alias (outer, "latin3", "ISO-8859-3")) return false; if (!declare_alias (outer, "l3", "ISO-8859-3")) return false; if (!declare_alias (outer, "iso-ir-110", "ISO-8859-4")) return false; if (!declare_alias (outer, "ISO_8859-4:1988", "ISO-8859-4")) return false; if (!declare_alias (outer, "ISO_8859-4", "ISO-8859-4")) return false; if (!declare_alias (outer, "ISO8859-4", "ISO-8859-4")) return false; if (!declare_alias (outer, "latin4", "ISO-8859-4")) return false; if (!declare_alias (outer, "l4", "ISO-8859-4")) return false; if (!declare_alias (outer, "iso-ir-111", "ECMA-cyrillic")) return false; if (!declare_alias (outer, "ECMA-113:1986", "ECMA-cyrillic")) return false; if (!declare_alias (outer, "ECMA-113", "ECMA-cyrillic")) return false; if (!declare_alias (outer, "iso-ir-121", "CSA_Z243.4-1985-1")) return false; if (!declare_alias (outer, "ISO646-CA", "CSA_Z243.4-1985-1")) return false; if (!declare_alias (outer, "csa7-1", "CSA_Z243.4-1985-1")) return false; if (!declare_alias (outer, "ca", "CSA_Z243.4-1985-1")) return false; if (!declare_alias (outer, "iso-ir-122", "CSA_Z243.4-1985-2")) return false; if (!declare_alias (outer, "ISO646-CA2", "CSA_Z243.4-1985-2")) return false; if (!declare_alias (outer, "csa7-2", "CSA_Z243.4-1985-2")) return false; if (!declare_alias (outer, "iso-ir-123", "CSA_Z243.4-1985-gr")) return false; if (!declare_alias (outer, "iso-ir-126", "ISO-8859-7")) return false; if (!declare_alias (outer, "ISO_8859-7:1987", "ISO-8859-7")) return false; if (!declare_alias (outer, "ISO_8859-7", "ISO-8859-7")) return false; if (!declare_alias (outer, "ISO8859-7", "ISO-8859-7")) return false; if (!declare_alias (outer, "ELOT_928", "ISO-8859-7")) return false; if (!declare_alias (outer, "ECMA-118", "ISO-8859-7")) return false; if (!declare_alias (outer, "greek", "ISO-8859-7")) return false; if (!declare_alias (outer, "greek8", "ISO-8859-7")) return false; if (!declare_alias (outer, "iso-ir-127", "ISO-8859-6")) return false; if (!declare_alias (outer, "ISO_8859-6:1987", "ISO-8859-6")) return false; if (!declare_alias (outer, "ISO_8859-6", "ISO-8859-6")) return false; if (!declare_alias (outer, "ISO8859-6", "ISO-8859-6")) return false; if (!declare_alias (outer, "ECMA-114", "ISO-8859-6")) return false; if (!declare_alias (outer, "ASMO-708", "ISO-8859-6")) return false; if (!declare_alias (outer, "arabic", "ISO-8859-6")) return false; if (!declare_alias (outer, "iso-ir-138", "ISO-8859-8")) return false; if (!declare_alias (outer, "ISO_8859-8:1988", "ISO-8859-8")) return false; if (!declare_alias (outer, "ISO_8859-8", "ISO-8859-8")) return false; if (!declare_alias (outer, "ISO8859-8", "ISO-8859-8")) return false; if (!declare_alias (outer, "hebrew", "ISO-8859-8")) return false; if (!declare_alias (outer, "iso-ir-139", "CSN_369103")) return false; if (!declare_alias (outer, "KOI-8_L2", "CSN_369103")) return false; if (!declare_alias (outer, "koi8l2", "CSN_369103")) return false; if (!declare_alias (outer, "iso-ir-141", "JUS_I.B1.002")) return false; if (!declare_alias (outer, "ISO646-YU", "JUS_I.B1.002")) return false; if (!declare_alias (outer, "js", "JUS_I.B1.002")) return false; if (!declare_alias (outer, "yu", "JUS_I.B1.002")) return false; if (!declare_alias (outer, "iso-ir-143", "IEC_P27-1")) return false; if (!declare_alias (outer, "iso-ir-144", "ISO-8859-5")) return false; if (!declare_alias (outer, "ISO_8859-5:1988", "ISO-8859-5")) return false; if (!declare_alias (outer, "ISO_8859-5", "ISO-8859-5")) return false; if (!declare_alias (outer, "ISO8859-5", "ISO-8859-5")) return false; if (!declare_alias (outer, "cyrillic", "ISO-8859-5")) return false; if (!declare_alias (outer, "iso-ir-146", "JUS_I.B1.003-serb")) return false; if (!declare_alias (outer, "serbian", "JUS_I.B1.003-serb")) return false; if (!declare_alias (outer, "macedonian", "JUS_I.B1.003-mac")) return false; if (!declare_alias (outer, "iso-ir-147", "JUS_I.B1.003-mac")) return false; if (!declare_alias (outer, "iso-ir-148", "ISO-8859-9")) return false; if (!declare_alias (outer, "ISO_8859-9:1989", "ISO-8859-9")) return false; if (!declare_alias (outer, "ISO_8859-9", "ISO-8859-9")) return false; if (!declare_alias (outer, "ISO8859-9", "ISO-8859-9")) return false; if (!declare_alias (outer, "latin5", "ISO-8859-9")) return false; if (!declare_alias (outer, "l5", "ISO-8859-9")) return false; if (!declare_alias (outer, "iso-ir-150", "greek-ccitt")) return false; if (!declare_alias (outer, "cuba", "NC_NC00-10")) return false; if (!declare_alias (outer, "NC_NC00-10:81", "NC_NC00-10")) return false; if (!declare_alias (outer, "iso-ir-151", "NC_NC00-10")) return false; if (!declare_alias (outer, "ISO646-CU", "NC_NC00-10")) return false; if (!declare_alias (outer, "iso-ir-152", "ISO_6937-2-25")) return false; if (!declare_alias (outer, "ST_SEV_358-88", "GOST_19768-87")) return false; if (!declare_alias (outer, "iso-ir-153", "GOST_19768-87")) return false; if (!declare_alias (outer, "iso-ir-154", "ISO_8859-supp")) return false; if (!declare_alias (outer, "latin1-2-5", "ISO_8859-supp")) return false; if (!declare_alias (outer, "iso-ir-155", "ISO_10367-box")) return false; if (!declare_alias (outer, "iso-ir-157", "ISO-8859-10")) return false; if (!declare_alias (outer, "ISO_8859-10:1993", "ISO-8859-10")) return false; if (!declare_alias (outer, "ISO_8859-10", "ISO-8859-10")) return false; if (!declare_alias (outer, "ISO8859-10", "ISO-8859-10")) return false; if (!declare_alias (outer, "L6", "ISO-8859-10")) return false; if (!declare_alias (outer, "latin6", "ISO-8859-10")) return false; if (!declare_alias (outer, "iso-ir-179a", "ISO-8859-13")) return false; if (!declare_alias (outer, "ISO_8859-13:1998", "ISO-8859-13")) return false; if (!declare_alias (outer, "ISO_8859-13", "ISO-8859-13")) return false; if (!declare_alias (outer, "ISO8859-13", "ISO-8859-13")) return false; if (!declare_alias (outer, "latin7", "ISO-8859-13")) return false; if (!declare_alias (outer, "iso-baltic", "ISO-8859-13")) return false; if (!declare_alias (outer, "l7", "ISO-8859-13")) return false; if (!declare_alias (outer, "iso-ir-199", "ISO-8859-14")) return false; if (!declare_alias (outer, "ISO_8859-14:1998", "ISO-8859-14")) return false; if (!declare_alias (outer, "ISO_8859-14", "ISO-8859-14")) return false; if (!declare_alias (outer, "ISO8859-14", "ISO-8859-14")) return false; if (!declare_alias (outer, "latin8", "ISO-8859-14")) return false; if (!declare_alias (outer, "iso-celtic", "ISO-8859-14")) return false; if (!declare_alias (outer, "l8", "ISO-8859-14")) return false; if (!declare_alias (outer, "iso-ir-203", "ISO-8859-15")) return false; if (!declare_alias (outer, "ISO_8859-15:1998", "ISO-8859-15")) return false; if (!declare_alias (outer, "ISO_8859-15", "ISO-8859-15")) return false; if (!declare_alias (outer, "ISO8859-15", "ISO-8859-15")) return false; if (!declare_alias (outer, "latin9", "ISO-8859-15")) return false; if (!declare_alias (outer, "l9", "ISO-8859-15")) return false; if (!declare_alias (outer, "latin-lap", "sami")) return false; if (!declare_alias (outer, "lap", "sami")) return false; if (!declare_alias (outer, "iso-ir-158", "sami")) return false; if (!declare_alias (outer, "iso-ir-179", "baltic")) return false; if (!declare_alias (outer, "DS2089", "DS_2089")) return false; if (!declare_alias (outer, "ISO646-DK", "DS_2089")) return false; if (!declare_alias (outer, "dk", "DS_2089")) return false; if (!declare_alias (outer, "X0201", "JIS_X0201")) return false; if (!declare_alias (outer, "ISO646-KR", "KSC5636")) return false; if (!declare_alias (outer, "dec", "DEC-MCS")) return false; if (!declare_alias (outer, "roman8", "hp-roman8")) return false; if (!declare_alias (outer, "r8", "hp-roman8")) return false; if (!declare_alias (outer, "next", "NeXTSTEP")) return false; if (alias = declare_alias (outer, "macintosh", "macintosh"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; if (alias = declare_alias (outer, "mac", "macintosh"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; if (alias = declare_alias (outer, "IBM037", "IBM037"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP037", "IBM037"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "037", "IBM037"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-us", "IBM037")) return false; if (!declare_alias (outer, "ebcdic-cp-ca", "IBM037")) return false; if (!declare_alias (outer, "ebcdic-cp-wt", "IBM037")) return false; if (!declare_alias (outer, "ebcdic-cp-nl", "IBM037")) return false; if (alias = declare_alias (outer, "IBM038", "IBM038"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-INT", "IBM038")) return false; if (alias = declare_alias (outer, "CP038", "IBM038"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "038", "IBM038"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM256", "IBM256"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-INT1", "IBM256")) return false; if (alias = declare_alias (outer, "CP256", "IBM256"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "256", "IBM256"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM273", "IBM273"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP273", "IBM273"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "273", "IBM273"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM274", "IBM274"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-BE", "IBM274")) return false; if (alias = declare_alias (outer, "CP274", "IBM274"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "274", "IBM274"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM275", "IBM275"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-BR", "IBM275")) return false; if (alias = declare_alias (outer, "CP275", "IBM275"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "275", "IBM275"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM277", "IBM277"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-CP-DK", "IBM277")) return false; if (!declare_alias (outer, "EBCDIC-CP-NO", "IBM277")) return false; if (alias = declare_alias (outer, "IBM278", "IBM278"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP278", "IBM278"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "278", "IBM278"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-fi", "IBM278")) return false; if (!declare_alias (outer, "ebcdic-cp-se", "IBM278")) return false; if (alias = declare_alias (outer, "IBM280", "IBM280"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP280", "IBM280"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "280", "IBM280"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-it", "IBM280")) return false; if (alias = declare_alias (outer, "IBM281", "IBM281"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-JP-E", "IBM281")) return false; if (alias = declare_alias (outer, "CP281", "IBM281"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "281", "IBM281"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM284", "IBM284"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP284", "IBM284"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "284", "IBM284"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-es", "IBM284")) return false; if (alias = declare_alias (outer, "IBM285", "IBM285"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP285", "IBM285"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "285", "IBM285"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-gb", "IBM285")) return false; if (alias = declare_alias (outer, "IBM290", "IBM290"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP290", "IBM290"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "290", "IBM290"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-JP-kana", "IBM290")) return false; if (alias = declare_alias (outer, "IBM297", "IBM297"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP297", "IBM297"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "297", "IBM297"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-fr", "IBM297")) return false; if (alias = declare_alias (outer, "IBM420", "IBM420"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP420", "IBM420"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "420", "IBM420"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-ar1", "IBM420")) return false; if (alias = declare_alias (outer, "IBM423", "IBM423"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP423", "IBM423"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "423", "IBM423"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-gr", "IBM423")) return false; if (alias = declare_alias (outer, "IBM424", "IBM424"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP424", "IBM424"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "424", "IBM424"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-he", "IBM424")) return false; if (alias = declare_alias (outer, "IBM437", "IBM437"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP437", "IBM437"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "437", "IBM437"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM500", "IBM500"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP500", "IBM500"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "500", "IBM500"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "500V1", "IBM500")) return false; if (!declare_alias (outer, "ebcdic-cp-be", "IBM500")) return false; if (!declare_alias (outer, "ebcdic-cp-ch", "IBM500")) return false; if (alias = declare_alias (outer, "IBM850", "IBM850"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP850", "IBM850"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "850", "IBM850"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM851", "IBM851"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP851", "IBM851"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "851", "IBM851"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM852", "IBM852"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP852", "IBM852"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "852", "IBM852"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "pcl2", "IBM852")) return false; if (!declare_alias (outer, "pclatin2", "IBM852")) return false; if (alias = declare_alias (outer, "IBM855", "IBM855"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP855", "IBM855"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "855", "IBM855"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM857", "IBM857"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP857", "IBM857"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "857", "IBM857"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM860", "IBM860"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP860", "IBM860"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "860", "IBM860"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM861", "IBM861"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP861", "IBM861"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "861", "IBM861"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "cp-is", "IBM861")) return false; if (alias = declare_alias (outer, "IBM862", "IBM862"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP862", "IBM862"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "862", "IBM862"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM863", "IBM863"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP863", "IBM863"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "863", "IBM863"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM864", "IBM864"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP864", "IBM864"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "864", "IBM864"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM865", "IBM865"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP865", "IBM865"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "865", "IBM865"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM868", "IBM868"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP868", "IBM868"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "868", "IBM868"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "cp-ar", "IBM868")) return false; if (alias = declare_alias (outer, "IBM869", "IBM869"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP869", "IBM869"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "869", "IBM869"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "cp-gr", "IBM869")) return false; if (alias = declare_alias (outer, "IBM870", "IBM870"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP870", "IBM870"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "870", "IBM870"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-roece", "IBM870")) return false; if (!declare_alias (outer, "ebcdic-cp-yu", "IBM870")) return false; if (alias = declare_alias (outer, "IBM871", "IBM871"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP871", "IBM871"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "871", "IBM871"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-is", "IBM871")) return false; if (alias = declare_alias (outer, "IBM875", "IBM875"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP875", "IBM875"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "875", "IBM875"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-Greek", "IBM875")) return false; if (alias = declare_alias (outer, "IBM880", "IBM880"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP880", "IBM880"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "880", "IBM880"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "EBCDIC-Cyrillic", "IBM880")) return false; if (alias = declare_alias (outer, "IBM891", "IBM891"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP891", "IBM891"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "891", "IBM891"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM903", "IBM903"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP903", "IBM903"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "903", "IBM903"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM904", "IBM904"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP904", "IBM904"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "904", "IBM904"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM905", "IBM905"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP905", "IBM905"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "905", "IBM905"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-tr", "IBM905")) return false; if (alias = declare_alias (outer, "IBM918", "IBM918"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP918", "IBM918"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "918", "IBM918"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ebcdic-cp-ar2", "IBM918")) return false; if (alias = declare_alias (outer, "IBM1004", "IBM1004"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP1004", "IBM1004"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "1004", "IBM1004"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "os2latin1", "IBM1004")) return false; if (alias = declare_alias (outer, "IBM1026", "IBM1026"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP1026", "IBM1026"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "1026", "IBM1026"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "IBM1047", "IBM1047"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP1047", "IBM1047"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "1047", "IBM1047"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (alias = declare_alias (outer, "CP1250", "CP1250"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-ee", "CP1250")) return false; if (alias = declare_alias (outer, "1250", "CP1250"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1250", "CP1250")) return false; if (alias = declare_alias (outer, "CP1251", "CP1251"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-cyrl", "CP1251")) return false; if (alias = declare_alias (outer, "1251", "CP1251"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1251", "CP1251")) return false; if (alias = declare_alias (outer, "CP1252", "CP1252"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-ansi", "CP1252")) return false; if (alias = declare_alias (outer, "1252", "CP1252"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1252", "CP1252")) return false; if (alias = declare_alias (outer, "CP1253", "CP1253"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-greek", "CP1253")) return false; if (alias = declare_alias (outer, "1253", "CP1253"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1253", "CP1253")) return false; if (alias = declare_alias (outer, "CP1254", "CP1254"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-turk", "CP1254")) return false; if (alias = declare_alias (outer, "1254", "CP1254"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1254", "CP1254")) return false; if (alias = declare_alias (outer, "CP1255", "CP1255"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-hebr", "CP1255")) return false; if (alias = declare_alias (outer, "1255", "CP1255"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1255", "CP1255")) return false; if (alias = declare_alias (outer, "CP1256", "CP1256"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "ms-arab", "CP1256")) return false; if (alias = declare_alias (outer, "1256", "CP1256"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1256", "CP1256")) return false; if (alias = declare_alias (outer, "CP1257", "CP1257"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "WinBaltRim", "CP1257")) return false; if (alias = declare_alias (outer, "1257", "CP1257"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->crlf_surface)) return false; if (!declare_alias (outer, "windows-1257", "CP1257")) return false; if (!declare_alias (outer, "friss", "EBCDIC-IS-FRISS")) return false; if (!declare_alias (outer, "GOST_19768-74", "KOI-8")) return false; if (!declare_alias (outer, "CWI-2", "CWI")) return false; if (!declare_alias (outer, "cp-hu", "CWI")) return false; if (alias = declare_alias (outer, "macintosh_ce", "macintosh_ce"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; if (alias = declare_alias (outer, "macce", "macintosh_ce"), !alias) return false; if (!declare_implied_surface (outer, alias, outer->cr_surface)) return false; return true; } void delmodule_strips (struct recode_outer *outer) { } recode-3.6/src/testdump.c0100644000000000000000000002160207126665010014126 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "hash.h" /*------------------------. | Produce test patterns. | `------------------------*/ /* One should _remove_ pseudo-surfaces to _produce_ test patterns. This strange-looking decision comes from the fact that test patterns are usually requested from the `before' position in the request. */ static bool test7_data (RECODE_SUBTASK subtask) { unsigned counter; int value; for (counter = 0; counter < 1 << 7; counter++) put_byte (counter, subtask); /* Copy the rest verbatim. */ while (value = get_byte (subtask), value != EOF) put_byte (value, subtask); SUBTASK_RETURN (subtask); } static bool test8_data (RECODE_SUBTASK subtask) { unsigned counter; int value; for (counter = 0; counter < 1 << 8; counter++) put_byte (counter, subtask); /* Copy the rest verbatim. */ while (value = get_byte (subtask), value != EOF) put_byte (value, subtask); SUBTASK_RETURN (subtask); } static bool test15_data (RECODE_SUBTASK subtask) { unsigned counter; unsigned value; put_ucs2 (BYTE_ORDER_MARK, subtask); /* Before surrogate area. */ for (counter = 0; counter < 0xDC00; counter++) put_ucs2 (counter, subtask); /* After surrogate area. */ for (counter = 0xE000; counter < 1 << 16; counter++) switch (counter) { case BYTE_ORDER_MARK: case REPLACEMENT_CHARACTER: case BYTE_ORDER_MARK_SWAPPED: case NOT_A_CHARACTER: break; default: put_ucs2 (counter, subtask); } /* Copy the rest verbatim. */ while (value = get_byte (subtask), value != EOF) put_byte (value, subtask); SUBTASK_RETURN (subtask); } static bool test16_data (RECODE_SUBTASK subtask) { unsigned counter; unsigned value; for (counter = 0; counter < 1 << 16; counter++) put_ucs2 (counter, subtask); /* Copy the rest verbatim. */ while (value = get_byte (subtask), value != EOF) put_byte (value, subtask); SUBTASK_RETURN (subtask); } /*-----------------------------------------------. | Produce frequency count for UCS-2 characters. | `-----------------------------------------------*/ struct ucs2_to_count { recode_ucs2 code; /* UCS-2 value */ unsigned count; /* corresponding count */ }; static unsigned ucs2_to_count_hash (const void *void_data, unsigned table_size) { const struct ucs2_to_count *data = void_data; return data->code % table_size; } static bool ucs2_to_count_compare (const void *void_first, const void *void_second) { const struct ucs2_to_count *first = void_first; const struct ucs2_to_count *second = void_second; return first->code == second->code; } static int compare_item (const void *void_first, const void *void_second) { struct ucs2_to_count *const *first = void_first; struct ucs2_to_count *const *second = void_second; return (*first)->code - (*second)->code; } static bool produce_count (RECODE_SUBTASK subtask) { RECODE_OUTER outer = subtask->task->request->outer; Hash_table *table; /* hash table for UCS-2 characters */ size_t size; /* number of different characters */ struct ucs2_to_count **array; /* array into hash table items */ table = hash_initialize (0, NULL, ucs2_to_count_hash, ucs2_to_count_compare, free); if (!table) return false; /* Count characters. */ { unsigned character; /* current character being counted */ while (get_ucs2 (&character, subtask)) { struct ucs2_to_count lookup; struct ucs2_to_count *entry; lookup.code = character; entry = hash_lookup (table, &lookup); if (entry) entry->count++; else { if (!ALLOC (entry, 1, struct ucs2_to_count)) { hash_free (table); return false; } entry->code = character; entry->count = 1; if (!hash_insert (table, entry)) { hash_free (table); free (entry); return false; } } } } /* Sort results. */ size = hash_get_n_entries (table); if (!ALLOC (array, size, struct ucs2_to_count *)) { hash_free (table); return false; } hash_get_entries (table, (void **) array, size); qsort (array, size, sizeof (struct ucs2_to_count *), compare_item); /* Produce the report. */ /* FIXME: Produce it column-wise. (See transp.c). */ { const unsigned non_count_width = 12; char buffer[50]; struct ucs2_to_count **cursor; unsigned count_width; unsigned maximum_count = 0; unsigned column = 0; unsigned delayed = 0; for (cursor = array; cursor < array + size; cursor++) if ((*cursor)->count > maximum_count) maximum_count = (*cursor)->count; sprintf (buffer, "%d", maximum_count); count_width = strlen (buffer); for (cursor = array; cursor < array + size; cursor++) { unsigned character = (*cursor)->code; const char *mnemonic = ucs2_to_rfc1345 (character); if (column + count_width + non_count_width > 80) { putchar ('\n'); delayed = 0; column = 0; } else while (delayed) { putchar (' '); delayed--; } printf ("%*d %.4X", count_width, (*cursor)->count, character); if (mnemonic) { putchar (' '); fputs (mnemonic, stdout); delayed = 6 - 1 - strlen (mnemonic); } else delayed = 6; column += count_width + non_count_width; } if (column) putchar ('\n'); } /* Clean-up. */ free (array); hash_free (table); SUBTASK_RETURN (subtask); } /*---------------------------. | Fully dump an UCS-2 file. | `---------------------------*/ static bool produce_full_dump (RECODE_SUBTASK subtask) { unsigned character; /* character to dump */ /* Dump all characters. */ if (get_ucs2 (&character, subtask)) { const char *charname; /* charname for code */ bool french; /* if output should be in French */ const char *string; /* environment value */ /* Decide if we prefer French or English output. */ french = false; string = getenv ("LANGUAGE"); if (string && string[0] == 'f' && string[1] == 'r') french = true; else { string = getenv ("LANG"); if (string && string[0] == 'f' && string[1] == 'r') french = true; } fputs (_("UCS2 Mne Description\n\n"), stdout); while (1) { const char *mnemonic = ucs2_to_rfc1345 (character); printf ("%.4X", character); if (mnemonic) printf (" %-3s", mnemonic); else fputs (" ", stdout); if (french) { charname = ucs2_to_french_charname (character); if (!charname) charname = ucs2_to_charname (character); } else { charname = ucs2_to_charname (character); if (!charname) charname = ucs2_to_french_charname (character); } if (charname) { fputs (" ", stdout); fputs (charname, stdout); } printf ("\n"); if (!get_ucs2 (&character, subtask)) break; } } SUBTASK_RETURN (subtask); } /*-----------------------------------------. | Declare charsets, surfaces and aliases. | `-----------------------------------------*/ bool module_testdump (RECODE_OUTER outer) { /* Test surfaces. */ if (!declare_single (outer, "test7", "data", outer->quality_variable_to_byte, NULL, test7_data)) return false; if (!declare_single (outer, "test8", "data", outer->quality_variable_to_byte, NULL, test8_data)) return false; if (!declare_single (outer, "test15", "data", outer->quality_variable_to_ucs2, NULL, test15_data)) return false; if (!declare_single (outer, "test16", "data", outer->quality_variable_to_ucs2, NULL, test16_data)) return false; /* Analysis charsets. */ if (!declare_single (outer, "ISO-10646-UCS-2", "count-characters", outer->quality_ucs2_to_variable, NULL, produce_count)) return false; if (!declare_single (outer, "ISO-10646-UCS-2", "dump-with-names", outer->quality_ucs2_to_variable, NULL, produce_full_dump)) return false; return true; } void delmodule_testdump (RECODE_OUTER outer) { } recode-3.6/src/ucs.c0100644000000000000000000004700007126660155013060 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /* Description of some UCS-2 combinings. */ #define DONE NOT_A_CHARACTER #define ELSE BYTE_ORDER_MARK_SWAPPED static const unsigned short combining_data [] = { /* Diacriticized letters. */ 0x00C0, 0x0041, 0x0300, DONE, 0x00C1, 0x0041, 0x0301, DONE, 0x00C2, 0x0041, 0x0302, DONE, 0x00C3, 0x0041, 0x0303, DONE, 0x00C4, 0x0041, 0x0308, DONE, 0x00C5, 0x0041, 0x030A, DONE, 0x00C7, 0x0043, 0x0327, DONE, 0x00C8, 0x0045, 0x0300, DONE, 0x00C9, 0x0045, 0x0301, DONE, 0x00CA, 0x0045, 0x0302, DONE, 0x00CB, 0x0045, 0x0308, DONE, 0x00CC, 0x0049, 0x0300, DONE, 0x00CD, 0x0049, 0x0301, DONE, 0x00CE, 0x0049, 0x0302, DONE, 0x00CF, 0x0049, 0x0308, DONE, 0x00D1, 0x004E, 0x0303, DONE, 0x00D2, 0x004F, 0x0300, DONE, 0x00D3, 0x004F, 0x0301, DONE, 0x00D4, 0x004F, 0x0302, DONE, 0x00D5, 0x004F, 0x0303, DONE, 0x00D6, 0x004F, 0x0308, DONE, 0x00D8, 0x004F, 0x0338, DONE, 0x00D9, 0x0055, 0x0300, DONE, 0x00DA, 0x0055, 0x0301, DONE, 0x00DB, 0x0055, 0x0302, DONE, 0x00DC, 0x0055, 0x0308, DONE, 0x00DD, 0x0059, 0x0301, DONE, 0x00E0, 0x0061, 0x0300, DONE, 0x00E1, 0x0061, 0x0301, DONE, 0x00E2, 0x0061, 0x0302, DONE, 0x00E3, 0x0061, 0x0303, DONE, 0x00E4, 0x0061, 0x0308, DONE, 0x00E5, 0x0061, 0x030A, DONE, 0x00E7, 0x0063, 0x0327, DONE, 0x00E8, 0x0065, 0x0300, DONE, 0x00E9, 0x0065, 0x0301, DONE, 0x00EA, 0x0065, 0x0302, DONE, 0x00EB, 0x0065, 0x0308, DONE, 0x00EC, 0x0069, 0x0300, DONE, 0x00ED, 0x0069, 0x0301, DONE, 0x00EE, 0x0069, 0x0302, DONE, 0x00EF, 0x0069, 0x0308, DONE, 0x00F1, 0x006E, 0x0303, DONE, 0x00F2, 0x006F, 0x0300, DONE, 0x00F3, 0x006F, 0x0301, DONE, 0x00F4, 0x006F, 0x0302, DONE, 0x00F5, 0x006F, 0x0303, DONE, 0x00F6, 0x006F, 0x0308, DONE, 0x00F8, 0x006F, 0x0338, DONE, 0x00F9, 0x0075, 0x0300, DONE, 0x00FA, 0x0075, 0x0301, DONE, 0x00FB, 0x0075, 0x0302, DONE, 0x00FC, 0x0075, 0x0308, DONE, 0x00FD, 0x0079, 0x0301, DONE, 0x00FF, 0x0079, 0x0308, DONE, 0x0100, 0x0041, 0x0304, DONE, 0x0101, 0x0061, 0x0304, DONE, 0x0102, 0x0041, 0x0306, DONE, 0x0103, 0x0061, 0x0306, DONE, 0x0104, 0x0041, 0x0328, DONE, 0x0105, 0x0061, 0x0328, DONE, 0x0106, 0x0043, 0x0301, DONE, 0x0107, 0x0063, 0x0301, DONE, 0x0108, 0x0043, 0x0302, DONE, 0x0109, 0x0063, 0x0302, DONE, 0x010A, 0x0043, 0x0307, DONE, 0x010B, 0x0063, 0x0307, DONE, 0x010C, 0x0043, 0x030C, DONE, 0x010D, 0x0063, 0x030C, DONE, 0x010E, 0x0044, 0x030C, DONE, 0x010F, 0x0064, 0x030C, DONE, 0x0110, 0x0044, 0x0335, DONE, 0x0111, 0x0064, 0x0335, DONE, 0x0112, 0x0045, 0x0304, DONE, 0x0113, 0x0065, 0x0304, DONE, 0x0114, 0x0045, 0x0306, DONE, 0x0115, 0x0065, 0x0306, DONE, 0x0116, 0x0045, 0x0307, DONE, 0x0117, 0x0065, 0x0307, DONE, 0x0118, 0x0045, 0x0328, DONE, 0x0119, 0x0065, 0x0328, DONE, 0x011A, 0x0045, 0x030C, DONE, 0x011B, 0x0065, 0x030C, DONE, 0x011C, 0x0047, 0x0302, DONE, 0x011D, 0x0067, 0x0302, DONE, 0x011E, 0x0047, 0x0306, DONE, 0x011F, 0x0067, 0x0306, DONE, 0x0120, 0x0047, 0x0307, DONE, 0x0121, 0x0067, 0x0307, DONE, 0x0122, 0x0047, 0x0327, DONE, 0x0123, 0x0067, 0x0327, DONE, 0x0124, 0x0048, 0x0302, DONE, 0x0125, 0x0068, 0x0302, DONE, 0x0126, 0x0048, 0x0335, DONE, 0x0127, 0x0068, 0x0335, DONE, 0x0128, 0x0049, 0x0303, DONE, 0x0129, 0x0069, 0x0303, DONE, 0x012A, 0x0049, 0x0304, DONE, 0x012B, 0x0069, 0x0304, DONE, 0x012C, 0x0049, 0x0306, DONE, 0x012D, 0x0069, 0x0306, DONE, 0x012E, 0x0049, 0x0328, DONE, 0x012F, 0x0069, 0x0328, DONE, 0x0130, 0x0049, 0x0307, DONE, 0x0134, 0x004A, 0x0302, DONE, 0x0135, 0x006A, 0x0302, DONE, 0x0136, 0x004B, 0x0327, DONE, 0x0137, 0x006B, 0x0327, DONE, 0x0139, 0x004C, 0x0301, DONE, 0x013A, 0x006C, 0x0301, DONE, 0x013B, 0x004C, 0x0327, DONE, 0x013C, 0x006C, 0x0327, DONE, 0x013D, 0x004C, 0x030C, DONE, 0x013E, 0x006C, 0x030C, DONE, 0x0141, 0x004C, 0x0337, DONE, 0x0142, 0x006C, 0x0337, DONE, 0x0143, 0x004E, 0x0301, DONE, 0x0144, 0x006E, 0x0301, DONE, 0x0145, 0x004E, 0x0327, DONE, 0x0146, 0x006E, 0x0327, DONE, 0x0147, 0x004E, 0x030C, DONE, 0x0148, 0x006E, 0x030C, DONE, 0x014C, 0x004F, 0x0304, DONE, 0x014D, 0x006F, 0x0304, DONE, 0x014E, 0x004F, 0x0306, DONE, 0x014F, 0x006F, 0x0306, DONE, 0x0150, 0x004F, 0x030B, DONE, 0x0151, 0x006F, 0x030B, DONE, 0x0154, 0x0052, 0x0301, DONE, 0x0155, 0x0072, 0x0301, DONE, 0x0156, 0x0052, 0x0327, DONE, 0x0157, 0x0072, 0x0327, DONE, 0x0158, 0x0052, 0x030C, DONE, 0x0159, 0x0072, 0x030C, DONE, 0x015A, 0x0053, 0x0301, DONE, 0x015B, 0x0073, 0x0301, DONE, 0x015C, 0x0053, 0x0302, DONE, 0x015D, 0x0073, 0x0302, DONE, 0x015E, 0x0053, 0x0327, DONE, 0x015F, 0x0073, 0x0327, DONE, 0x0160, 0x0053, 0x030C, DONE, 0x0161, 0x0073, 0x030C, DONE, 0x0162, 0x0054, 0x0327, DONE, 0x0163, 0x0074, 0x0327, DONE, 0x0164, 0x0054, 0x030C, DONE, 0x0165, 0x0074, 0x030C, DONE, 0x0166, 0x0054, 0x0335, DONE, 0x0167, 0x0074, 0x0335, DONE, 0x0168, 0x0055, 0x0303, DONE, 0x0169, 0x0075, 0x0303, DONE, 0x016A, 0x0055, 0x0304, DONE, 0x016B, 0x0075, 0x0304, DONE, 0x016C, 0x0055, 0x0306, DONE, 0x016D, 0x0075, 0x0306, DONE, 0x016E, 0x0055, 0x030A, DONE, 0x016F, 0x0075, 0x030A, DONE, 0x0170, 0x0055, 0x030B, DONE, 0x0171, 0x0075, 0x030B, DONE, 0x0172, 0x0055, 0x0328, DONE, 0x0173, 0x0075, 0x0328, DONE, 0x0174, 0x0057, 0x0302, DONE, 0x0175, 0x0077, 0x0302, DONE, 0x0176, 0x0059, 0x0302, DONE, 0x0177, 0x0079, 0x0302, DONE, 0x0178, 0x0059, 0x0308, DONE, 0x0179, 0x005A, 0x0301, DONE, 0x017A, 0x007A, 0x0301, DONE, 0x017B, 0x005A, 0x0307, DONE, 0x017C, 0x007A, 0x0307, DONE, 0x017D, 0x005A, 0x030C, DONE, 0x017E, 0x007A, 0x030C, DONE, 0x0180, 0x0062, 0x0335, DONE, 0x0197, 0x0049, 0x0335, DONE, 0x019A, 0x006C, 0x0335, DONE, 0x019B, 0x03BB, 0x0335, DONE, 0x019F, 0x004F, 0x0335, DONE, 0x01A0, 0x004F, 0x031B, DONE, 0x01A1, 0x006F, 0x031B, DONE, 0x01AB, 0x0074, 0x0321, DONE, 0x01AE, 0x0054, 0x0322, DONE, 0x01AF, 0x0055, 0x031B, DONE, 0x01B0, 0x0075, 0x031B, DONE, 0x01CD, 0x0041, 0x030C, DONE, 0x01CE, 0x0061, 0x030C, DONE, 0x01CF, 0x0049, 0x030C, DONE, 0x01D0, 0x0069, 0x030C, DONE, 0x01D1, 0x004F, 0x030C, DONE, 0x01D2, 0x006F, 0x030C, DONE, 0x01D3, 0x0055, 0x030C, DONE, 0x01D4, 0x0075, 0x030C, DONE, 0x01D5, 0x0055, 0x0308, 0x0304, ELSE, 0x00DC, 0x0304, DONE, 0x01D6, 0x0075, 0x0308, 0x0304, ELSE, 0x00FC, 0x0304, DONE, 0x01D7, 0x0055, 0x0308, 0x0301, ELSE, 0x00DC, 0x0301, DONE, 0x01D8, 0x0075, 0x0308, 0x0301, ELSE, 0x00FC, 0x0301, DONE, 0x01D9, 0x0055, 0x0308, 0x030C, ELSE, 0x00DC, 0x030C, DONE, 0x01DA, 0x0075, 0x0308, 0x030C, ELSE, 0x00FC, 0x030C, DONE, 0x01DB, 0x0055, 0x0308, 0x0300, ELSE, 0x00DC, 0x0300, DONE, 0x01DC, 0x0075, 0x0308, 0x0300, ELSE, 0x00FC, 0x0300, DONE, 0x01DE, 0x0041, 0x0308, 0x0304, ELSE, 0x00C4, 0x0304, DONE, 0x01DF, 0x0061, 0x0308, 0x0304, ELSE, 0x00E4, 0x0304, DONE, 0x01E0, 0x0041, 0x0307, 0x0304, DONE, 0x01E1, 0x0061, 0x0307, 0x0304, DONE, 0x01E2, 0x00C6, 0x0304, DONE, 0x01E3, 0x00E6, 0x0304, DONE, 0x01E4, 0x0047, 0x0335, DONE, 0x01E5, 0x0067, 0x0335, DONE, 0x01E6, 0x0047, 0x030C, DONE, 0x01E7, 0x0067, 0x030C, DONE, 0x01E8, 0x004B, 0x030C, DONE, 0x01E9, 0x006B, 0x030C, DONE, 0x01EA, 0x004F, 0x0328, DONE, 0x01EB, 0x006F, 0x0328, DONE, 0x01EC, 0x004F, 0x0328, 0x0304, ELSE, 0x01EA, 0x0304, DONE, 0x01ED, 0x006F, 0x0328, 0x0304, ELSE, 0x01EB, 0x0304, DONE, 0x01EE, 0x01B7, 0x030C, DONE, 0x01EF, 0x0292, 0x030C, DONE, 0x01F0, 0x006A, 0x030C, DONE, 0x0386, 0x0391, 0x0384, DONE, 0x0388, 0x0395, 0x0384, DONE, 0x0389, 0x0397, 0x0384, DONE, 0x038A, 0x0399, 0x0384, DONE, 0x038C, 0x039F, 0x0384, DONE, 0x038E, 0x03A5, 0x0384, DONE, 0x038F, 0x03A9, 0x0384, DONE, 0x0390, 0x03B9, 0x0385, DONE, 0x03AA, 0x0399, 0x0308, DONE, 0x03AB, 0x03A5, 0x0308, DONE, 0x03AC, 0x03B1, 0x0384, DONE, 0x03AD, 0x03B5, 0x0384, DONE, 0x03AE, 0x03B7, 0x0384, DONE, 0x03AF, 0x03B9, 0x0384, DONE, 0x03B0, 0x03C5, 0x0385, DONE, 0x03CA, 0x03B9, 0x0308, DONE, 0x03CB, 0x03C5, 0x0308, DONE, 0x03CC, 0x03BF, 0x0384, DONE, 0x03CD, 0x03C5, 0x0384, DONE, 0x03CE, 0x03C9, 0x0384, DONE, 0x03D3, 0x03D2, 0x0384, DONE, 0x03D4, 0x03D2, 0x0308, DONE, 0x0401, 0x0415, 0x0308, DONE, 0x0403, 0x0413, 0x0301, DONE, 0x0407, 0x0406, 0x0308, DONE, 0x040C, 0x041A, 0x0301, DONE, 0x040E, 0x0423, 0x0306, DONE, 0x0419, 0x0418, 0x0306, DONE, 0x0439, 0x0438, 0x0306, DONE, 0x0451, 0x0435, 0x0308, DONE, 0x0453, 0x0433, 0x0301, DONE, 0x0457, 0x0456, 0x0308, DONE, 0x045C, 0x043A, 0x0301, DONE, 0x045E, 0x0443, 0x0306, DONE, 0x0476, 0x0474, 0x030F, DONE, 0x0477, 0x0475, 0x030F, DONE, 0x0492, 0x0413, 0x0335, DONE, 0x0493, 0x0433, 0x0335, DONE, 0x0498, 0x0417, 0x0327, DONE, 0x0499, 0x0437, 0x0327, DONE, 0x04AA, 0x0421, 0x0327, DONE, 0x04AB, 0x0441, 0x0327, DONE, 0x04B0, 0x04AE, 0x0335, DONE, 0x04B1, 0x04AF, 0x0335, DONE, 0x04BE, 0x04BC, 0x0328, DONE, 0x04BF, 0x04BD, 0x0328, DONE, 0x04C1, 0x0416, 0x0306, DONE, 0x04C2, 0x0436, 0x0306, DONE, 0x04C5, 0x041A, 0x0328, DONE, 0x04C6, 0x043A, 0x0328, DONE, 0x04C9, 0x0425, 0x0328, DONE, 0x04CA, 0x0445, 0x0328, DONE, 0x0958, 0x0915, 0x093C, DONE, 0x0959, 0x0916, 0x093C, DONE, 0x095A, 0x0917, 0x093C, DONE, 0x095B, 0x091C, 0x093C, DONE, 0x095C, 0x0921, 0x093C, DONE, 0x095D, 0x0922, 0x093C, DONE, 0x095E, 0x092B, 0x093C, DONE, 0x095F, 0x092F, 0x093C, DONE, 0x09DC, 0x09A1, 0x09BC, DONE, 0x09DD, 0x09A2, 0x09BC, DONE, 0x09DF, 0x09AF, 0x09BC, DONE, 0x0A59, 0x0A16, 0x0A3C, DONE, 0x0A5A, 0x0A17, 0x0A3C, DONE, 0x0A5B, 0x0A1C, 0x0A3C, DONE, 0x0A5C, 0x0A21, 0x0A3C, DONE, 0x0A5E, 0x0A2B, 0x0A3C, DONE, 0x0B5C, 0x0B21, 0x0B3C, DONE, 0x0B5D, 0x0B22, 0x0B3C, DONE, 0x0B5F, 0x0B2F, 0x0B3C, DONE, 0x1014, 0x1004, 0x104C, DONE, 0x1015, 0x1005, 0x104C, DONE, 0x1016, 0x1006, 0x104C, DONE, /* Ligatures, digraphs. */ 0x00C6, 0x0041, 0x0045, DONE, 0x00E6, 0x0061, 0x0065, DONE, 0x0132, 0x0049, 0x004A, DONE, 0x0133, 0x0069, 0x006A, DONE, 0x013F, 0x004C, 0x00B7, DONE, 0x0140, 0x006C, 0x00B7, DONE, 0x0149, 0x0027, 0x006E, DONE, 0x0152, 0x004F, 0x0045, DONE, 0x0153, 0x006F, 0x0065, DONE, 0x01C4, 0x0044, 0x005A, 0x030C, ELSE, 0x0044, 0x017D, DONE, 0x01C5, 0x0044, 0x007A, 0x030C, ELSE, 0x0044, 0x017E, DONE, 0x01C6, 0x0064, 0x007A, 0x030C, ELSE, 0x0064, 0x017E, DONE, 0x01C7, 0x004C, 0x004A, DONE, 0x01C8, 0x004C, 0x006A, DONE, 0x01C9, 0x006C, 0x006A, DONE, 0x01CA, 0x004E, 0x004A, DONE, 0x01CB, 0x004E, 0x006A, DONE, 0x01CC, 0x006E, 0x006A, DONE, 0x02A3, 0x0064, 0x007A, DONE, 0x02A4, 0x0064, 0x0292, DONE, 0x02A5, 0x0064, 0x0291, DONE, 0x02A6, 0x0074, 0x0073, DONE, 0x02A7, 0x0074, 0x0283, DONE, 0x02A8, 0x0074, 0x0255, DONE, 0x0409, 0x041B, 0x042C, DONE, 0x040A, 0x041D, 0x042C, DONE, 0x0459, 0x043B, 0x044C, DONE, 0x045A, 0x043D, 0x044C, DONE, 0x0EDC, 0x0EAB, 0x0E99, DONE, 0x0EDD, 0x0EAB, 0x0EA1, DONE, 0x203C, 0x0021, 0x0021, DONE, 0x203D, 0x003F, 0x0021, DONE, DONE }; /* UCS-2 input and output. */ /*-------------------------------------------------------------------------. | Get one UCS-2 VALUE for TASK, maybe swapping pair of bytes as we go. | | Whenever a byte order mark is seen, either straight or swapped, always | | use it to decide whether itself and subsequent UCS-2 values should be | | swapped, or not. At the very beginning of the text stream, a byte order | | mark is merely swallowed and never returned. Everywhere else, it is | | transmitted as a zero-width non-breaking space. | `-------------------------------------------------------------------------*/ /* An UCS-2 file canonically has a byte order mark at its very beginning. So, concatenating many UCS-2 files might produce some spurious, but valid zero-width non-breaking spaces. Those are produced for each file, after the first, starting with a byte order mark, regardless of byte order. */ bool get_ucs2 (unsigned *value, RECODE_SUBTASK subtask) { while (true) { int character1; int character2; unsigned chunk; character1 = get_byte (subtask); if (character1 == EOF) return false; character2 = get_byte (subtask); if (character2 == EOF) { SET_SUBTASK_ERROR (RECODE_INVALID_INPUT, subtask); return false; } switch (subtask->task->swap_input) { case RECODE_SWAP_UNDECIDED: chunk = ((MASK (8) & character1) << 8) | (MASK (8) & character2); switch (chunk) { case BYTE_ORDER_MARK: subtask->task->swap_input = RECODE_SWAP_NO; break; case BYTE_ORDER_MARK_SWAPPED: subtask->task->swap_input = RECODE_SWAP_YES; break; default: *value = chunk; subtask->task->swap_input = RECODE_SWAP_NO; if (subtask->task->byte_order_mark) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); return true; } break; case RECODE_SWAP_NO: chunk = ((MASK (8) & character1) << 8) | (MASK (8) & character2); switch (chunk) { case BYTE_ORDER_MARK: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; case BYTE_ORDER_MARK_SWAPPED: subtask->task->swap_input = RECODE_SWAP_YES; RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; default: *value = chunk; return true; } break; case RECODE_SWAP_YES: chunk = ((MASK (8) & character2) << 8) | (MASK (8) & character1); switch (chunk) { case BYTE_ORDER_MARK: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; case BYTE_ORDER_MARK_SWAPPED: subtask->task->swap_input = RECODE_SWAP_NO; RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; default: *value = chunk; return true; } break; } } } /*-------------------------------. | Put one UCS-2 VALUE for TASK. | `-------------------------------*/ bool put_ucs2 (unsigned value, RECODE_SUBTASK subtask) { put_byte (MASK (8) & value >> 8, subtask); put_byte (MASK (8) & value, subtask); return true; } /* UCS-4 input and output. */ /*-------------------------------. | Get one UCS-4 VALUE for TASK. | `-------------------------------*/ bool get_ucs4 (unsigned *value, RECODE_SUBTASK subtask) { int character; unsigned chunk; character = get_byte (subtask); if (character == EOF) return false; chunk = (MASK (8) & character) << 24; character = get_byte (subtask); if (character == EOF) { SET_SUBTASK_ERROR (RECODE_INVALID_INPUT, subtask); return false; } chunk |= (MASK (8) & character) << 16; character = get_byte (subtask); if (character == EOF) { SET_SUBTASK_ERROR (RECODE_INVALID_INPUT, subtask); return false; } chunk |= (MASK (8) & character) << 8; character = get_byte (subtask); if (character == EOF) { SET_SUBTASK_ERROR (RECODE_INVALID_INPUT, subtask); return false; } chunk |= MASK (8) & character; *value = chunk; return true; } /*-------------------------------. | Put one UCS-4 VALUE for TASK. | `-------------------------------*/ bool put_ucs4 (unsigned value, RECODE_SUBTASK subtask) { put_byte (MASK (8) & value >> 24, subtask); put_byte (MASK (8) & value >> 16, subtask); put_byte (MASK (8) & value >> 8, subtask); put_byte (MASK (8) & value, subtask); return true; } /* Provided steps. */ /*-----------. | Combined. | `-----------*/ static bool init_combined_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { step->before->data_type = RECODE_EXPLODE_DATA; step->before->data = (void *) combining_data; return init_explode (step, request, before_options, after_options); } static bool init_ucs2_combined (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { step->after->data_type = RECODE_EXPLODE_DATA; step->after->data = (void *) combining_data; return init_combine (step, request, before_options, after_options); } /*-----------------------------. | Transform Latin-1 to UCS-4. | `-----------------------------*/ static bool transform_latin1_ucs4 (RECODE_SUBTASK subtask) { int character; while (character = get_byte (subtask), character != EOF) put_ucs4 (MASK (8) & character, subtask); SUBTASK_RETURN (subtask); } /*---------------------------. | Transform UCS-2 to UCS-4. | `---------------------------*/ static bool transform_ucs2_ucs4 (RECODE_SUBTASK subtask) { unsigned value; while (get_ucs2 (&value, subtask)) put_ucs4 (value, subtask); SUBTASK_RETURN (subtask); } /*-----------------------------------------------------------------. | Declare the basic UCS-2 and UCS-4 charsets and transformations. | `-----------------------------------------------------------------*/ bool module_ucs (RECODE_OUTER outer) { return declare_single (outer, "combined-UCS-2", "ISO-10646-UCS-2", outer->quality_ucs2_to_variable, init_combined_ucs2, explode_ucs2_ucs2) && declare_single (outer, "ISO-10646-UCS-2", "combined-UCS-2", outer->quality_variable_to_ucs2, init_ucs2_combined, combine_ucs2_ucs2) && declare_single (outer, "latin1", "ISO-10646-UCS-4", outer->quality_byte_to_variable, NULL, transform_latin1_ucs4) && declare_single (outer, "ISO-10646-UCS-2", "ISO-10646-UCS-4", outer->quality_variable_to_variable, NULL, transform_ucs2_ucs4) && declare_alias (outer, "UCS", "ISO-10646-UCS-4") && declare_alias (outer, "UCS-4", "ISO-10646-UCS-4") && declare_alias (outer, "ISO_10646", "ISO-10646-UCS-4") && declare_alias (outer, "10646", "ISO-10646-UCS-4") && declare_alias (outer, "u4", "ISO-10646-UCS-4") && declare_alias (outer, "UCS-2", "ISO-10646-UCS-2") && declare_alias (outer, "UNICODE-1-1", "ISO-10646-UCS-2") /* RFC1641 */ && declare_alias (outer, "BMP", "ISO-10646-UCS-2") && declare_alias (outer, "u2", "ISO-10646-UCS-2") && declare_alias (outer, "rune", "ISO-10646-UCS-2") && declare_alias (outer, "co", "combined-UCS-2"); } void delmodule_ucs (RECODE_OUTER outer) { } recode-3.6/src/utf16.c0100644000000000000000000001226507126660070013234 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static bool transform_ucs4_utf16 (RECODE_SUBTASK subtask) { unsigned value; if (get_ucs4 (&value, subtask)) { if (subtask->task->byte_order_mark) put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) { if (value & ~MASK (16)) if (value < (1 << 16 | 1 << 20)) { /* Double UCS-2 character. */ value -= 1 << 16; put_ucs2 (0xD800 | (MASK (10) & value >> 10), subtask); put_ucs2 (0xDC00 | (MASK (10) & value), subtask); } else { RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); put_ucs2 (REPLACEMENT_CHARACTER, subtask); } else { /* Single UCS-2 character. */ if (value >= 0xD800 && value < 0xE000) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); put_ucs2 (value, subtask); } if (!get_ucs4 (&value, subtask)) break; } } SUBTASK_RETURN (subtask); } static bool transform_utf16_ucs4 (RECODE_SUBTASK subtask) { unsigned value; if (get_ucs2 (&value, subtask)) { while (true) if (value >= 0xD800 && value < 0xE000) if (value < 0xDC00) { unsigned chunk; if (!get_ucs2 (&chunk, subtask)) break; if (chunk >= 0xDC00 && chunk < 0xE000) { put_ucs4 ((((1 << 16) + ((value - 0xD800) << 10)) | (chunk - 0xDC00)), subtask); if (!get_ucs2 (&value, subtask)) break; } else { /* Discard the first chunk if the pair is invalid. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); value = chunk; } } else { /* Discard a second chunk when presented first. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); if (!get_ucs2 (&value, subtask)) break; } else { put_ucs4 (value, subtask); if (!get_ucs2 (&value, subtask)) break; } } SUBTASK_RETURN (subtask); } static bool transform_ucs2_utf16 (RECODE_SUBTASK subtask) { unsigned value; /* This function does nothing, besides checking that the number of input bytes is even, and that special UTF-16 values do not appear. */ while (get_ucs2 (&value, subtask)) { if (value >= 0xD800 && value < 0xE000) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); put_ucs2 (value, subtask); } SUBTASK_RETURN (subtask); } static bool transform_utf16_ucs2 (RECODE_SUBTASK subtask) { unsigned value; /* This function does almost nothing, besides checking that the input is valid UTF-16, and replacing UTF-16 extended values with the replacement character. */ if (get_ucs2 (&value, subtask)) { if (subtask->task->byte_order_mark) put_ucs2 (BYTE_ORDER_MARK, subtask); while (true) if (value >= 0xD800 && value < 0xE000) if (value < 0xDC00) { unsigned chunk; if (!get_ucs2 (&chunk, subtask)) break; if (chunk >= 0xDC00 && chunk < 0xE000) { RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); put_ucs2 (REPLACEMENT_CHARACTER, subtask); if (!get_ucs2 (&value, subtask)) break; } else { /* Discard the first chunk if the pair is invalid. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); value = chunk; } } else { /* Discard a second chunk when presented first. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); if (!get_ucs2 (&value, subtask)) break; } else { put_ucs2 (value, subtask); if (!get_ucs2 (&value, subtask)) break; } } SUBTASK_RETURN (subtask); } bool module_utf16 (RECODE_OUTER outer) { return declare_single (outer, "ISO-10646-UCS-4", "UTF-16", outer->quality_variable_to_variable, NULL, transform_ucs4_utf16) && declare_single (outer, "UTF-16", "ISO-10646-UCS-4", outer->quality_variable_to_variable, NULL, transform_utf16_ucs4) && declare_single (outer, "ISO-10646-UCS-2", "UTF-16", outer->quality_variable_to_variable, NULL, transform_ucs2_utf16) && declare_single (outer, "UTF-16", "ISO-10646-UCS-2", outer->quality_variable_to_variable, NULL, transform_utf16_ucs2) && declare_alias (outer, "Unicode", "UTF-16") && declare_alias (outer, "TF-16", "UTF-16") && declare_alias (outer, "u6", "UTF-16"); } void delmodule_utf16 (RECODE_OUTER outer) { } recode-3.6/src/utf7.c0100644000000000000000000002203107126660154013147 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "base64.h" /* Classification of first 128 UCS-2 characters. */ #define D 1 /* set D -- direct character */ #define O 2 /* set O -- optional direct character */ #define W 4 /* direct white space */ #define z 0 static char classification[128] = { z, z, z, z, z, z, z, z, z, W, W, z, z, W, z, z, z, z, z, z, /* 0- 19 */ z, z, z, z, z, z, z, z, z, z, z, z, W, O, O, O, O, O, O, D, /* 20- 39 */ D, D, O, z, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, O, /* 40- 59 */ O, O, O, D, O, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, /* 60- 79 */ D, D, D, D, D, D, D, D, D, D, D, O, z, O, O, O, O, D, D, D, /* 80- 99 */ D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, /* 100-119 */ D, D, D, O, O, O, z, z /* 120-127 */ }; #undef z /* Should the character be directly represented in message headers? */ #define IS_HEADER_DIRECT(Character) \ (IS_ASCII (Character) && classification[Character] & (D | W)) /* Should the character be directly represented in message bodies? Here, & (D | O | W) is implied, since these are the only flags. */ #define IS_BODY_DIRECT(Character) \ (IS_ASCII (Character) && classification[Character]) /* Transformation routines. */ /* The following diagram shows the logical steps by which three UCS-2 characters get transformed into eight Base64 characters. It helps understanding shifts and masks in the transformation functions. .--------+--------. .--------+--------. .--------+--------. |aaaaaabb|bbbbcccc| |ccdddddd|eeeeeeff| |ffffgggg|gghhhhhh| `--------+--------' `--------+--------' `--------+--------' 6 2 4 4 2 6 6 2 4 4 2 6 .--------+--------+--------+--------+--------+--------+--------+--------. |00aaaaaa|00bbbbbb|00cccccc|00dddddd|00eeeeee|00ffffff|00gggggg|00hhhhhh| `--------+--------+--------+--------+--------+--------+--------+--------' .--------+--------+--------+--------+--------+--------+--------+--------. |AAAAAAAA|BBBBBBBB|CCCCCCCC|DDDDDDDD|EEEEEEEE|FFFFFFFF|GGGGGGGG|HHHHHHHH| `--------+--------+--------+--------+--------+--------+--------+--------' The UCS-2 characters are divided into 6 bit chunks, which are then encoded into Base64 characters. */ static bool transform_utf16_utf7 (RECODE_SUBTASK subtask) { unsigned value; if (!get_ucs2 (&value, subtask)) SUBTASK_RETURN (subtask); while (true) if (IS_BODY_DIRECT (value)) { /* Copy one direct character. */ put_byte (value, subtask); if (!get_ucs2 (&value, subtask)) SUBTASK_RETURN (subtask); } else { /* Copy a string of non-direct characters. */ put_byte ('+', subtask); while (!IS_BODY_DIRECT (value)) { unsigned split; /* Process first UCS-2 value of a triplet. */ put_byte (base64_value_to_char[MASK (6) & value >> 10], subtask); put_byte (base64_value_to_char[MASK (6) & value >> 4], subtask); split = (value & MASK (4)) << 2; if (!get_ucs2 (&value, subtask)) { put_byte (base64_value_to_char[split], subtask); SUBTASK_RETURN (subtask); } /* Process second UCS-2 value of a triplet. */ if (IS_BODY_DIRECT (value)) { put_byte (base64_value_to_char[split], subtask); break; } put_byte (base64_value_to_char[split | (MASK (2) & value >> 14)], subtask); put_byte (base64_value_to_char[MASK (6) & value >> 8], subtask); put_byte (base64_value_to_char[MASK (6) & value >> 2], subtask); split = (value & MASK (2)) << 4; if (!get_ucs2 (&value, subtask)) { put_byte (base64_value_to_char[split], subtask); SUBTASK_RETURN (subtask); } /* Process third UCS-2 value of a triplet. */ if (IS_BODY_DIRECT (value)) { put_byte (base64_value_to_char[split], subtask); break; } put_byte (base64_value_to_char[split | (MASK (4) & value >> 12)], subtask); put_byte (base64_value_to_char[MASK (6) & value >> 6], subtask); put_byte (base64_value_to_char[MASK (6) & value], subtask); if (!get_ucs2 (&value, subtask)) SUBTASK_RETURN (subtask); } if (IS_BASE64 (value)) put_byte ('-', subtask); } SUBTASK_RETURN (subtask); } static bool transform_utf7_utf16 (RECODE_SUBTASK subtask) { int character; unsigned value; unsigned split; character = get_byte (subtask); if (character != EOF && subtask->task->byte_order_mark) put_ucs2 (BYTE_ORDER_MARK, subtask); while (character != EOF) if (character == '+') { character = get_byte (subtask); while (IS_BASE64 (character)) { /* Process first byte of first quadruplet. */ value = base64_char_to_value[character] << 10; character = get_byte (subtask); /* Process second byte of first quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value |= base64_char_to_value[character] << 4; character = get_byte (subtask); /* Process third byte of first quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } split = base64_char_to_value[character]; value |= split >> 2; if (IS_BODY_DIRECT (value)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); put_ucs2 (value, subtask); character = get_byte (subtask); /* Process fourth byte of first quadruplet. */ if (!IS_BASE64 (character)) { if (MASK (2) & split) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value = ((MASK (2) & split) << 14 | base64_char_to_value[character] << 8); character = get_byte (subtask); /* Process first byte of second quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value |= base64_char_to_value[character] << 2; character = get_byte (subtask); /* Process second byte of second quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } split = base64_char_to_value[character]; value |= split >> 4; if (IS_BODY_DIRECT (value)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); put_ucs2 (value, subtask); character = get_byte (subtask); /* Process third byte of second quadruplet. */ if (!IS_BASE64 (character)) { if (MASK (4) & split) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value = ((MASK (4) & split) << 12 | base64_char_to_value[character] << 6); character = get_byte (subtask); /* Process fourth byte of second quadruplet. */ if (!IS_BASE64 (character)) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } value |= base64_char_to_value[character]; if (IS_BODY_DIRECT (value)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); put_ucs2 (value, subtask); character = get_byte (subtask); } if (character == '-') { character = get_byte (subtask); if (!IS_BASE64 (character)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); } } else { if (!IS_BODY_DIRECT (character)) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); put_byte (NUL, subtask); put_byte (character, subtask); character = get_byte (subtask); } SUBTASK_RETURN (subtask); } bool module_utf7 (RECODE_OUTER outer) { return declare_single (outer, "UTF-16", "UNICODE-1-1-UTF-7", /* RFC1642 */ outer->quality_variable_to_variable, NULL, transform_utf16_utf7) && declare_single (outer, "UNICODE-1-1-UTF-7", "UTF-16", outer->quality_variable_to_variable, NULL, transform_utf7_utf16) && declare_alias (outer, "UTF-7", "UNICODE-1-1-UTF-7") && declare_alias (outer, "TF-7", "UNICODE-1-1-UTF-7") && declare_alias (outer, "u7", "UNICODE-1-1-UTF-7") /* Simple UCS-2 does not have to go through UTF-16. */ && declare_single (outer, "ISO-10646-UCS-2", "UNICODE-1-1-UTF-7", outer->quality_variable_to_variable, NULL, transform_utf16_utf7); } void delmodule_utf7 (RECODE_OUTER outer) { } recode-3.6/src/utf8.c0100644000000000000000000002163107126660073013155 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /* Define HANDLE_32_BITS if you want conversion for 2^32 codes instead of 2^31. But this would not be ISO-10646, which says 2^31. */ /* Read next data byte and check its value, discard an illegal sequence. This macro is meant to be used only within the `while' loop in `transform_utf8_ucs[24]'. */ #define GET_DATA_BYTE \ character = get_byte (subtask); \ if (character == EOF) \ { \ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); \ break; \ } \ else if ((MASK (2) << 6 & character) != 1 << 7) \ { \ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); \ continue; \ } \ else /* Read next data byte and check its value, discard an illegal sequence. Merge it into `value' at POSITION. This macro is meant to be used only within the `while' loop in `transform_utf8_ucs[24]'. */ #define GET_DATA_BYTE_AT(Position) \ GET_DATA_BYTE /* ... else */ value |= (MASK (6) & character) << Position static bool transform_ucs2_utf8 (RECODE_SUBTASK subtask) { unsigned value; while (get_ucs2 (&value, subtask)) { if (value & ~MASK (7)) if (value & ~MASK (11)) { /* 3 bytes - more than 11 bits, but not more than 16. */ put_byte ((MASK (3) << 5) | (MASK (6) & value >> 12), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 6), subtask); put_byte ((1 << 7) | (MASK (6) & value), subtask); } else { /* 2 bytes - more than 7 bits, but not more than 11. */ put_byte ((MASK (2) << 6) | (MASK (6) & value >> 6), subtask); put_byte ((1 << 7) | (MASK (6) & value), subtask); } else /* 1 byte - not more than 7 bits (that is, ASCII). */ put_byte (value, subtask); } SUBTASK_RETURN (subtask); } static bool transform_ucs4_utf8 (RECODE_SUBTASK subtask) { unsigned value; while (get_ucs4 (&value, subtask)) if (value & ~MASK (16)) if (value & ~MASK (26)) if (value & ~MASK (31)) { #if HANDLE_32_BITS /* 7 bytes - more than 31 bits (that is, exactly 32 :-). */ put_byte (MASK (7) << 1); put_byte ((1 << 7) | (MASK (6) & value >> 30), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 24), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 18), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 12), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 6), subtask); put_byte ((1 << 7) | (MASK (6) & value), subtask); #else RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); #endif } else { /* 6 bytes - more than 26 bits, but not more than 31. */ put_byte ((MASK (6) << 2) | (MASK (6) & value >> 30), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 24), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 18), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 12), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 6), subtask); put_byte ((1 << 7) | (MASK (6) & value), subtask); } else if (value & ~MASK (21)) { /* 5 bytes - more than 21 bits, but not more than 26. */ put_byte ((MASK (5) << 3) | (MASK (6) & value >> 24), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 18), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 12), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 6), subtask); put_byte ((1 << 7) | (MASK (6) & value), subtask); } else { /* 4 bytes - more than 16 bits, but not more than 21. */ put_byte ((MASK (4) << 4) | (MASK (6) & value >> 18), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 12), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 6), subtask); put_byte ((1 << 7) | (MASK (6) & value), subtask); } else if (value & ~MASK (7)) if (value & ~MASK (11)) { /* 3 bytes - more than 11 bits, but not more than 16. */ put_byte ((MASK (3) << 5) | (MASK (6) & value >> 12), subtask); put_byte ((1 << 7) | (MASK (6) & value >> 6), subtask); put_byte ((1 << 7) | (MASK (6) & value), subtask); } else { /* 2 bytes - more than 7 bits, but not more than 11. */ put_byte ((MASK (2) << 6) | (MASK (6) & value >> 6), subtask); put_byte ((1 << 7) | (MASK (6) & value), subtask); } else /* 1 byte - not more than 7 bits (that is, ASCII). */ put_byte (value, subtask); SUBTASK_RETURN (subtask); } /* FIXME: The UTF-8 decoding algorithms do not validate that the minimum length surface was indeed used. This would be necessary for ensuring that the recoding is exactly reversible. In fact, this minimum length surface is also a requirement of UTF-8 specification. */ static bool transform_utf8_ucs4 (RECODE_SUBTASK subtask) { int character = get_byte (subtask); unsigned value; while (character != EOF) /* Process one UTF-8 value. EOF is acceptable on first byte only. */ if ((character & MASK (4) << 4) == MASK (4) << 4) if ((character & MASK (6) << 2) == MASK (6) << 2) if ((character & MASK (7) << 1) == MASK (7) << 1) { /* 7 bytes - more than 31 bits (that is, exactly 32 :-). */ #if HANDLE_32_BITS value = 0; GET_DATA_BYTE_AT (30); GET_DATA_BYTE_AT (24); GET_DATA_BYTE_AT (18); GET_DATA_BYTE_AT (12); GET_DATA_BYTE_AT (6); GET_DATA_BYTE_AT (0); put_ucs4 (value, subtask); character = get_byte (subtask); #else RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); character = get_byte (subtask); #endif } else { /* 6 bytes - more than 26 bits, but not more than 31. */ value = (MASK (1) & character) << 30; GET_DATA_BYTE_AT (24); GET_DATA_BYTE_AT (18); GET_DATA_BYTE_AT (12); GET_DATA_BYTE_AT (6); GET_DATA_BYTE_AT (0); put_ucs4 (value, subtask); character = get_byte (subtask); } else if ((character & MASK (5) << 3) == MASK (5) << 3) { /* 5 bytes - more than 21 bits, but not more than 26. */ value = (MASK (2) & character) << 24; GET_DATA_BYTE_AT (18); GET_DATA_BYTE_AT (12); GET_DATA_BYTE_AT (6); GET_DATA_BYTE_AT (0); put_ucs4 (value, subtask); character = get_byte (subtask); } else { /* 4 bytes - more than 16 bits, but not more than 21. */ value = (MASK (3) & character) << 18; GET_DATA_BYTE_AT (12); GET_DATA_BYTE_AT (6); GET_DATA_BYTE_AT (0); put_ucs4 (value, subtask); character = get_byte (subtask); } else if ((character & MASK (2) << 6) == MASK (2) << 6) if ((character & MASK (3) << 5) == MASK (3) << 5) { /* 3 bytes - more than 11 bits, but not more than 16. */ value = (MASK (4) & character) << 12; GET_DATA_BYTE_AT (6); GET_DATA_BYTE_AT (0); put_ucs4 (value, subtask); character = get_byte (subtask); } else { /* 2 bytes - more than 7 bits, but not more than 11. */ value = (MASK (5) & character) << 6; GET_DATA_BYTE_AT (0); put_ucs4 (value, subtask); character = get_byte (subtask); } else if ((character & 1 << 7) == 1 << 7) { /* Valid only as a continuation byte. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); character = get_byte (subtask); } else { /* 1 byte - not more than 7 bits (that is, ASCII). */ put_ucs4 (MASK (8) & character, subtask); character = get_byte (subtask); } SUBTASK_RETURN (subtask); } bool module_utf8 (RECODE_OUTER outer) { return declare_single (outer, "ISO-10646-UCS-4", "UTF-8", outer->quality_variable_to_variable, NULL, transform_ucs4_utf8) && declare_single (outer, "UTF-8", "ISO-10646-UCS-4", outer->quality_variable_to_variable, NULL, transform_utf8_ucs4) && declare_alias (outer, "UTF-2", "UTF-8") && declare_alias (outer, "UTF-FSS", "UTF-8") && declare_alias (outer, "FSS_UTF", "UTF-8") && declare_alias (outer, "TF-8", "UTF-8") && declare_alias (outer, "u8", "UTF-8") /* Simple UCS-2 does not have to go through UTF-16. */ && declare_single (outer, "ISO-10646-UCS-2", "UTF-8", outer->quality_variable_to_variable, NULL, transform_ucs2_utf8); } void delmodule_utf8 (RECODE_OUTER outer) { } recode-3.6/src/varia.c0100644000000000000000000004220707126660102013364 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1999, 2000 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /* This file contains various temporary tables. These would ideally all go away once Keld will be given references, solid enough, to really integrate these tables in RFC1345 (.bis, .ter :-). */ /* Czech tables. */ /* Lukas Petrlik , 1996-04-02, and Martin Mares , 1999-01-05, both sent Kamenicky and Cork tables. The following two macros are used to document the contradicting spots. */ #define LUKAS 1 /* define to 1 for Lukas definitions */ #define MARTIN 0 /* define to 1 for Martin definitions */ /* These tables use standard latin alphabet with Czech accented letters. They use a subset of ISO-8859-2, plus a few strange characters. */ /* KEYBCS2, Kamenicky. "Source: the Reality :-)", as says Lukas. According to Martin, several sources list CP859 as being equivalent to the Kamenicky Brothers code, but neither of them seems to be authoritative enough. */ static const unsigned short data_kamenicky[] = { #if MARTIN /* Non-Czech characters copied from IBM charset. */ 1, 0x263A, DONE, /* white smiling face */ 2, 0x263B, DONE, /* black smiling face */ 3, 0x2665, DONE, /* black heart suit */ 4, 0x2666, DONE, /* black diamond suit */ 5, 0x2663, DONE, /* black club suit */ 6, 0x2660, DONE, /* black spade suit */ 7, 0x2022, DONE, /* bullet */ 8, 0x25D8, DONE, /* inverse bullet */ 9, 0x25CB, DONE, /* white circle */ 10, 0x25D9, DONE, /* inverse white circle */ 11, 0x2642, DONE, /* male sign */ 12, 0x2640, DONE, /* female sign */ 13, 0x266A, DONE, /* eighth note */ 14, 0x266B, DONE, /* beamed eighth notes */ 15, 0x263C, DONE, /* white sun with rays */ 16, 0x25B6, DONE, /* black right-pointing triangle */ 17, 0x25C0, DONE, /* black left-pointing triangle */ 18, 0x2195, DONE, /* up down arrow */ 19, 0x203C, DONE, /* double exclamation mark */ 20, 0x00B6, DONE, /* pilcrow sign */ 21, 0x00A7, DONE, /* section sign */ 22, 0x25AC, DONE, /* black rectangle */ 23, 0x21A8, DONE, /* up down arrow with base */ 24, 0x2191, DONE, /* upwards arrow */ 25, 0x2193, DONE, /* downwards arrow */ 26, 0x2192, DONE, /* rightwards arrow */ 27, 0x2190, DONE, /* leftwards arrow */ 28, 0x221F, DONE, /* right angle */ 29, 0x2194, DONE, /* left right arrow */ 30, 0x25B2, DONE, /* black up-pointing triangle */ 31, 0x25BC, DONE, /* black down-pointing triangle */ 127, 0x2302, DONE, /* house */ #endif /* MARTIN */ 128, 0x010C, DONE, 129, 0x00FC, DONE, 130, 0x00E9, DONE, 131, 0x010F, DONE, 132, 0x00E4, DONE, 133, 0x010E, DONE, 134, 0x0164, DONE, 135, 0x010D, DONE, 136, 0x011B, DONE, 137, 0x011A, DONE, 138, 0x0139, DONE, 139, 0x00CD, DONE, 140, 0x013E, DONE, 141, 0x013A, DONE, 142, 0x00C4, DONE, 143, 0x00C1, DONE, 144, 0x00C9, DONE, 145, 0x017E, DONE, 146, 0x017D, DONE, 147, 0x00F4, DONE, 148, 0x00F6, DONE, 149, 0x00D3, DONE, 150, 0x016F, DONE, 151, 0x00DA, DONE, 152, 0x00FD, DONE, 153, 0x00D6, DONE, 154, 0x00DC, DONE, 155, 0x0160, DONE, 156, 0x013D, DONE, 157, 0x00DD, DONE, 158, 0x0158, DONE, 159, 0x0165, DONE, /* latin small letter t with caron */ 160, 0x00E1, DONE, 161, 0x00ED, DONE, 162, 0x00F3, DONE, 163, 0x00FA, DONE, 164, 0x0148, DONE, 165, 0x0147, DONE, 166, 0x016E, DONE, 167, 0x00D4, DONE, 168, 0x0161, DONE, 169, 0x0159, DONE, 170, 0x0155, DONE, 171, 0x0154, DONE, 172, 0x00BC, DONE, 173, 0x00A7, DONE, #if LUKAS 174, 0x00AB, DONE, 175, 0x00BB, DONE, #endif #if MARTIN 174, 0x00BB, DONE, /* right-pointing double angle quotation mark */ 175, 0x00AB, DONE, /* left-pointing double angle quotation mark */ #endif 176, 0x2591, DONE, 177, 0x2592, DONE, 178, 0x2593, DONE, 179, 0x2502, DONE, 180, 0x2524, DONE, 181, 0x2561, DONE, 182, 0x2562, DONE, 183, 0x2556, DONE, 184, 0x2555, DONE, 185, 0x2563, DONE, 186, 0x2551, DONE, 187, 0x2557, DONE, 188, 0x255D, DONE, 189, 0x255C, DONE, 190, 0x255B, DONE, 191, 0x2510, DONE, 192, 0x2514, DONE, 193, 0x2534, DONE, 194, 0x252C, DONE, 195, 0x251C, DONE, 196, 0x2500, DONE, 197, 0x253C, DONE, 198, 0x255E, DONE, 199, 0x255F, DONE, 200, 0x255A, DONE, 201, 0x2554, DONE, 202, 0x2569, DONE, 203, 0x2566, DONE, 204, 0x2560, DONE, 205, 0x2550, DONE, 206, 0x256C, DONE, 207, 0x2567, DONE, 208, 0x2568, DONE, 209, 0x2564, DONE, 210, 0x2565, DONE, 211, 0x2559, DONE, 212, 0x2558, DONE, 213, 0x2552, DONE, 214, 0x2553, DONE, 215, 0x256B, DONE, 216, 0x256A, DONE, 217, 0x2518, DONE, 218, 0x250C, DONE, 219, 0x2588, DONE, 220, 0x2584, DONE, 221, 0x258C, DONE, 222, 0x2590, DONE, 223, 0x2580, DONE, 224, 0x03B1, DONE, 225, 0x03B2, DONE, #if LUKAS 226, 0x0393, DONE, #endif #if MARTIN 226, 0x0194, DONE, /* latin capital letter gamma */ #endif 227, 0x03C0, DONE, 228, 0x03A3, DONE, 229, 0x03C3, DONE, 230, 0x03BC, DONE, 231, 0x03C4, DONE, 232, 0x03A6, DONE, 233, 0x0398, DONE, 234, 0x03A9, DONE, 235, 0x03B4, DONE, 236, 0x221E, DONE, #if LUKAS 237, 0x2205, DONE, 238, 0x03B5, DONE, 239, 0x2229, DONE, 240, 0x2261, DONE, #endif #if MARTIN 237, 0x03C6, DONE, /* greek small letter phi */ 238, 0x2208, DONE, /* element of */ 239, 0x2229, DONE, /* intersection */ 240, 0x224D, DONE, /* equivalent to */ #endif 241, 0x00B1, DONE, 242, 0x2265, DONE, 243, 0x2264, DONE, 244, 0x2320, DONE, 245, 0x2321, DONE, 246, 0x00F7, DONE, 247, 0x2248, DONE, #if LUKAS 248, 0x2218, DONE, 249, 0x00B7, DONE, 250, 0x2219, DONE, #endif #if MARTIN 248, 0x00B0, DONE, /* degree sign */ 249, 0x2219, DONE, /* bullet operator */ 250, 0x00B7, DONE, /* middle dot */ #endif 251, 0x221A, DONE, 252, 0x207F, DONE, 253, 0x00B2, DONE, 254, 0x25A0, DONE, 255, 0x00A0, DONE, DONE }; /* CORK, T1. */ static const unsigned short data_cork[] = { #if LUKAS /* I suspect Lukas used this mapping to convey T1 and CORK in a single table, which may not be such a good thing. I'm not sure... */ 0, 0x0060, DONE, 1, 0x00B4, DONE, 2, 0x005E, DONE, 3, 0x007E, DONE, 4, 0x00A8, DONE, 5, 0x02DD, DONE, 6, 0x02DA, DONE, 7, 0x02C7, DONE, 8, 0x02D8, DONE, 9, 0x00AF, DONE, 10, 0x02D9, DONE, 11, 0x00B8, DONE, 12, 0x02DB, DONE, 13, 0x201A, DONE, 14, 0x2039, DONE, 15, 0x203A, DONE, 16, 0x201C, DONE, 17, 0x201D, DONE, 18, 0x201E, DONE, 19, 0x00AB, DONE, 20, 0x00BB, DONE, 21, 0x2013, DONE, 22, 0x2014, DONE, 23, DONE, 24, 0x2080, DONE, 25, 0x0131, DONE, 26, DONE, /* latin small letter j dotless, FIXME! */ 27, 0xFB00, DONE, 28, 0xFB01, DONE, 29, 0xFB02, DONE, 30, 0xFB03, DONE, 31, 0xFB04, DONE, #endif /* LUKAS */ 127, 0x2010, DONE, 128, 0x0102, DONE, 129, 0x0104, DONE, 130, 0x0106, DONE, 131, 0x010C, DONE, 132, 0x010E, DONE, 133, 0x011A, DONE, 134, 0x0118, DONE, 135, 0x011E, DONE, 136, 0x0139, DONE, 137, 0x013D, DONE, 138, 0x0141, DONE, 139, 0x0143, DONE, 140, 0x0147, DONE, 141, 0x014A, DONE, 142, 0x0150, DONE, 143, 0x0154, DONE, 144, 0x0158, DONE, 145, 0x015A, DONE, 146, 0x0160, DONE, 147, 0x015E, DONE, 148, 0x0164, DONE, 149, 0x0162, DONE, 150, 0x0170, DONE, 151, 0x016E, DONE, 152, 0x0178, DONE, 153, 0x0179, DONE, 154, 0x017D, DONE, 155, 0x017B, DONE, 156, 0x0132, DONE, 157, 0x0130, DONE, 158, 0x00F0, DONE, 159, 0x00A7, DONE, 160, 0x0103, DONE, 161, 0x0105, DONE, 162, 0x0107, DONE, 163, 0x010D, DONE, 164, 0x010F, DONE, 165, 0x011B, DONE, 166, 0x0119, DONE, 167, 0x011F, DONE, 168, 0x013A, DONE, 169, 0x013E, DONE, 170, 0x0142, DONE, 171, 0x0144, DONE, 172, 0x0148, DONE, 173, 0x014B, DONE, 174, 0x0151, DONE, 175, 0x0155, DONE, 176, 0x0159, DONE, 177, 0x015B, DONE, 178, 0x0161, DONE, 179, 0x015F, DONE, 180, 0x0165, DONE, 181, 0x0163, DONE, 182, 0x0171, DONE, 183, 0x016F, DONE, 184, 0x00FF, DONE, 185, 0x017A, DONE, 186, 0x017E, DONE, 187, 0x017C, DONE, 188, 0x0133, DONE, 189, 0x00A1, DONE, 190, 0x00BF, DONE, 191, 0x00A3, DONE, 215, 0x0152, DONE, 223, DONE, /* latin capital letter sharp s (german) (it is the SS ligature), FIXME! */ 247, 0x0153, DONE, 255, 0x00DF, DONE, DONE }; /* KOI-8_CS2. Source: CSN 36 9103. From Lukas Petrlik , 1996-04-02. &g1esc x2d49 &g2esc x2e49 &g3esc x2f49 */ static const unsigned short data_koi8cs2[] = { 36, 0x00A4, DONE, 161, DONE, 162, 0x00B4, DONE, 163, DONE, 164, 0x007E, DONE, 165, DONE, 166, 0x02D8, DONE, 167, 0x02D9, DONE, 169, DONE, 170, 0x02DA, DONE, 171, 0x00B8, DONE, 172, DONE, 173, 0x02DD, DONE, 174, 0x02DB, DONE, 175, 0x02C7, DONE, 176, 0x00A9, DONE, 177, 0x2122, DONE, 178, 0x250C, DONE, 179, 0x2510, DONE, 180, 0x2514, DONE, 181, 0x2518, DONE, 182, 0x2500, DONE, 183, 0x2193, DONE, 184, 0x03A9, DONE, 185, 0x00A7, DONE, 186, 0x03B1, DONE, 187, 0x03B3, DONE, 188, 0x03B5, DONE, 189, 0x03BC, DONE, 190, 0x03C0, DONE, 191, 0x03C9, DONE, 192, 0x00E0, DONE, 193, 0x00E1, DONE, 194, 0x01CE, DONE, 195, 0x010D, DONE, 196, 0x010F, DONE, 197, 0x011B, DONE, 198, 0x0155, DONE, 199, DONE, /* ch digraph as a single character, as used in the Czech alphabet, FIXME! */ 200, 0x00FC, DONE, 201, 0x00ED, DONE, 202, 0x016F, DONE, 203, 0x013A, DONE, 204, 0x013E, DONE, 205, 0x00F6, DONE, 206, 0x0148, DONE, 207, 0x00F3, DONE, 208, 0x00F4, DONE, 209, 0x00E4, DONE, 210, 0x0159, DONE, 211, 0x0161, DONE, 212, 0x0165, DONE, 213, 0x00FA, DONE, 214, 0x00EB, DONE, 215, 0x00E9, DONE, 216, 0x0171, DONE, 217, 0x00FD, DONE, 218, 0x017E, DONE, 219, DONE, 220, DONE, 221, 0x0151, DONE, 222, 0x0117, DONE, 224, 0x00C0, DONE, 225, 0x00C1, DONE, 226, 0x01CD, DONE, 227, 0x010C, DONE, 228, 0x010E, DONE, 229, 0x011A, DONE, 230, 0x0154, DONE, 231, DONE, /* CH digraph as a single character, as used in the Czech alphabet, FIXME! */ 232, 0x00DC, DONE, 233, 0x00CD, DONE, 234, 0x016E, DONE, 235, 0x0139, DONE, 236, 0x013D, DONE, 237, 0x00D6, DONE, 238, 0x0147, DONE, 239, 0x00D3, DONE, 240, 0x00D4, DONE, 241, 0x00C4, DONE, 242, 0x0158, DONE, 243, 0x0160, DONE, 244, 0x0164, DONE, 245, 0x00DA, DONE, 246, 0x00CB, DONE, 247, 0x00C9, DONE, 248, 0x0170, DONE, 249, 0x00DD, DONE, 250, 0x017D, DONE, 251, DONE, 252, DONE, 253, 0x0150, DONE, 254, 0x0116, DONE, 255, DONE, DONE }; /* Cyrillic tables? */ /* Helping people. "Alexander L. Belikoff" Andrey A. Chernov Andries Brouwer Roman Czyborra */ /* What is apparently still missing, from various mail I got, is: IBM866 CP866, alt KOI8-Unified Here are various sources of information. Andrey A. Chernov http://www.nagual.pp.ru/~ache/ &charset KOI8-Unified &rem source: http://www.cyrillic.com/ref/cyrillic/koi8-uni.html */ /* @item IBM866 @code{866}, @code{cp866}, and @code{alt} are aliases for this charset. source: unknown @item KOI8-R @code{878}, @code{cp878}, @code{ibm878}, @code{koi8r}, and @code{rfc1489} are aliases for this charset. source: RFC1489 */ static unsigned char const koi8r_to_ibm866[256-128] = { 196, 179, 218, 191, 192, 217, 195, 180, /* 128 - 135 */ 194, 193, 197, 223, 220, 219, 221, 222, /* 136 - 143 */ 176, 177, 178, 244, 254, 249, 251, 247, /* 144 - 151 */ 243, 242, 255, 245, 248, 253, 250, 246, /* 152 - 159 */ 205, 186, 213, 241, 214, 201, 184, 183, /* 160 - 167 */ 187, 212, 211, 200, 190, 189, 188, 198, /* 168 - 175 */ 199, 204, 181, 240, 182, 185, 209, 210, /* 176 - 183 */ 203, 207, 208, 202, 216, 215, 206, 252, /* 184 - 191 */ 238, 160, 161, 230, 164, 165, 228, 163, /* 192 - 199 */ 229, 168, 169, 170, 171, 172, 173, 174, /* 200 - 207 */ 175, 239, 224, 225, 226, 227, 166, 162, /* 208 - 215 */ 236, 235, 167, 232, 237, 233, 231, 234, /* 216 - 223 */ 158, 128, 129, 150, 132, 133, 148, 131, /* 224 - 231 */ 149, 136, 137, 138, 139, 140, 141, 142, /* 232 - 239 */ 143, 159, 144, 145, 146, 147, 134, 130, /* 240 - 247 */ 156, 155, 135, 152, 157, 153, 151, 154 /* 248 - 255 */ }; static unsigned char const koi8r_to_cp1251[256-128] = { 128, 129, 130, 131, 132, 133, 134, 135, /* 128 - 135 */ 136, 137, 138, 139, 140, 141, 142, 143, /* 136 - 143 */ 144, 145, 146, 147, 148, 149, 150, 151, /* 144 - 151 */ 152, 153, 154, 155, 156, 157, 158, 159, /* 152 - 159 */ 160, 161, 162, 163, 164, 165, 166, 167, /* 160 - 167 */ 168, 169, 170, 171, 172, 173, 174, 175, /* 168 - 175 */ 176, 177, 178, 179, 180, 181, 182, 183, /* 176 - 183 */ 184, 185, 186, 187, 188, 189, 190, 191, /* 184 - 191 */ 254, 224, 225, 246, 228, 229, 244, 227, /* 192 - 199 */ 245, 232, 233, 234, 235, 236, 237, 238, /* 200 - 207 */ 239, 255, 240, 241, 242, 243, 230, 226, /* 208 - 215 */ 252, 251, 231, 248, 253, 249, 247, 250, /* 216 - 223 */ 222, 192, 193, 214, 196, 197, 212, 195, /* 224 - 231 */ 213, 200, 201, 202, 203, 204, 205, 206, /* 232 - 239 */ 207, 223, 208, 209, 210, 211, 198, 194, /* 240 - 247 */ 220, 219, 199, 216, 221, 217, 215, 218 /* 248 - 255 */ }; static unsigned char const koi8r_to_iso8859_5[256-128] = { 128, 129, 130, 131, 132, 133, 134, 135, /* 128 - 135 */ 136, 137, 138, 139, 140, 141, 142, 143, /* 136 - 143 */ 144, 145, 146, 147, 148, 149, 150, 151, /* 144 - 151 */ 152, 153, 154, 155, 156, 157, 158, 159, /* 152 - 159 */ 160, 161, 162, 163, 164, 165, 166, 167, /* 160 - 167 */ 168, 169, 170, 171, 172, 173, 174, 175, /* 168 - 175 */ 240, 241, 242, 243, 244, 245, 246, 247, /* 176 - 183 */ 248, 249, 250, 251, 252, 253, 254, 255, /* 184 - 191 */ 238, 208, 209, 230, 212, 213, 228, 211, /* 192 - 199 */ 229, 216, 217, 218, 219, 220, 221, 222, /* 200 - 207 */ 223, 239, 224, 225, 226, 227, 214, 210, /* 208 - 215 */ 236, 235, 215, 232, 237, 233, 231, 234, /* 216 - 223 */ 206, 176, 177, 198, 180, 181, 196, 179, /* 224 - 231 */ 197, 184, 185, 186, 187, 188, 189, 190, /* 232 - 239 */ 191, 207, 192, 193, 194, 195, 182, 178, /* 240 - 247 */ 204, 203, 183, 200, 205, 201, 199, 202 /* 248 - 255 */ }; bool module_varia (RECODE_OUTER outer) { /* Czech tables. */ if (!declare_explode_data (outer, data_kamenicky, "KEYBCS2", NULL)) return false; if (!declare_explode_data (outer, data_cork, "CORK", NULL)) return false; if (!declare_explode_data (outer, data_koi8cs2, "KOI-8_CS2", NULL)) return false; if (!declare_alias (outer, "Kamenicky", "KEYBCS2")) return false; if (!declare_alias (outer, "T1", "CORK")) return false; #if NOT_ACTIVE_YET return && declare_single(outer, "KOI8-R", "IBM866", outer->quality_byte_reversible, NULL, transform_byte_to_byte); /* Suggested by Alexander L. Belikoff. */ if (!declare_alias("866", "IBM866")) return false; if (!declare_alias("CP866", "IBM866")) return false; if (!declare_alias("alt", "IBM866")) return false; /* Suggested by Alexander L. Belikoff. */ if (!declare_alias ("1489", "KOI8-R")) return false; if (!declare_alias ("RFC1489", "KOI8-R")) return false; /* Suggested by Alexander L. Belikoff. */ if (!declare_alias ("878", "KOI8-R")) return false; if (!declare_alias ("CP878", "KOI8-R")) return false; if (!declare_alias ("IBM878", "KOI8-R");) return false; #endif return true; } void delmodule_varia (RECODE_OUTER outer) { } recode-3.6/src/vn.c0100644000000000000000000004300507126660071012707 0ustar rootroot/* Vietnamese charset processing. Copyright © 1999, 2000 Progiciels Bourbeau-Pinard inc. Contributed by François Pinard , 1999. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static const recode_ucs2 tcvn_pool[256] = { /* 0 */ 0x0000, 0x00DA, 0x1EE4, 0x0003, 0x1EEA, 0x1EEC, 0x1EEE, 0x0007, /* 8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 16 */ 0x0010, 0x1EE8, 0x1EF0, 0x1EF2, 0x1EF6, 0x1EF8, 0x00DD, 0x1EF4, /* 24 */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, /* 32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 128 */ 0x00C0, 0x1EA2, 0x00C3, 0x00C1, 0x1EA0, 0x1EB6, 0x1EAC, 0x00C8, /* 136 */ 0x1EBA, 0x1EBC, 0x00C9, 0x1EB8, 0x1EC6, 0x00CC, 0x1EC8, 0x0128, /* 144 */ 0x00CD, 0x1ECA, 0x00D2, 0x1ECE, 0x00D5, 0x00D3, 0x1ECC, 0x1ED8, /* 152 */ 0x1EDC, 0x1EDE, 0x1EE0, 0x1EDA, 0x1EE2, 0x00D9, 0x1EE6, 0x0168, /* 160 */ 0xFFFF, 0x0102, 0x00C2, 0x00CA, 0x00D4, 0x01A0, 0x01AF, 0x0110, /* 168 */ 0x0103, 0x00E2, 0x00EA, 0x00F4, 0x01A1, 0x01B0, 0x0111, 0x1EB0, /* 176 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E0, 0x1EA3, 0x00E3, /* 184 */ 0x00E1, 0x1EA1, 0x1EB2, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EAF, 0x1EB4, /* 192 */ 0x1EAE, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EA4, 0x1EC0, 0x1EB7, 0x1EA7, /* 200 */ 0x1EA9, 0x1EAB, 0x1EA5, 0x1EAD, 0x00E8, 0x1EC2, 0x1EBB, 0x1EBD, /* 208 */ 0x00E9, 0x1EB9, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EBF, 0x1EC7, 0x00EC, /* 216 */ 0x1EC9, 0x1EC4, 0x1EBE, 0x1ED2, 0x0129, 0x00ED, 0x1ECB, 0x00F2, /* 224 */ 0x1ED4, 0x1ECF, 0x00F5, 0x00F3, 0x1ECD, 0x1ED3, 0x1ED5, 0x1ED7, /* 232 */ 0x1ED1, 0x1ED9, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EDB, 0x1EE3, 0x00F9, /* 240 */ 0x1ED6, 0x1EE7, 0x0169, 0x00FA, 0x1EE5, 0x1EEB, 0x1EED, 0x1EEF, /* 248 */ 0x1EE9, 0x1EF1, 0x1EF3, 0x1EF7, 0x1EF9, 0x00FD, 0x1EF5, 0x1ED0, }; static struct strip_data tcvn_strip_data = { tcvn_pool, { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248 } }; static const recode_ucs2 viscii_pool[256] = { /* 0 */ 0x0000, 0x0001, 0x1EB2, 0x0003, 0x0004, 0x1EB4, 0x1EAA, 0x0007, /* 8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 16 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x1EF6, 0x0015, 0x0016, 0x0017, /* 24 */ 0x0018, 0x1EF8, 0x001A, 0x001B, 0x001C, 0x001D, 0x1EF4, 0x001F, /* 32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 128 */ 0x1EA0, 0x1EAE, 0x1EB0, 0x1EB6, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAC, /* 136 */ 0x1EBC, 0x1EB8, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1ED0, /* 144 */ 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EE2, 0x1EDA, 0x1EDC, 0x1EDE, /* 152 */ 0x1ECA, 0x1ECE, 0x1ECC, 0x1EC8, 0x1EE6, 0x0168, 0x1EE4, 0x1EF2, /* 160 */ 0x00D5, 0x1EAF, 0x1EB1, 0x1EB7, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAD, /* 168 */ 0x1EBD, 0x1EB9, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1ED1, /* 176 */ 0x1ED3, 0x1ED5, 0x1ED7, 0x1EE0, 0x01A0, 0x1ED9, 0x1EDD, 0x1EDF, /* 184 */ 0x1ECB, 0x1EF0, 0x1EE8, 0x1EEA, 0x1EEC, 0x01A1, 0x1EDB, 0x01AF, /* 192 */ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x1EA2, 0x0102, 0x1EB3, 0x1EB5, /* 200 */ 0x00C8, 0x00C9, 0x00CA, 0x1EBA, 0x00CC, 0x00CD, 0x0128, 0x1EF3, /* 208 */ 0x0110, 0x1EE9, 0x00D2, 0x00D3, 0x00D4, 0x1EA1, 0x1EF7, 0x1EEB, /* 216 */ 0x1EED, 0x00D9, 0x00DA, 0x1EF9, 0x1EF5, 0x00DD, 0x1EE1, 0x01B0, /* 224 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x1EA3, 0x0103, 0x1EEF, 0x1EAB, /* 232 */ 0x00E8, 0x00E9, 0x00EA, 0x1EBB, 0x00EC, 0x00ED, 0x0129, 0x1EC9, /* 240 */ 0x0111, 0x1EF1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x1ECF, 0x1ECD, /* 248 */ 0x1EE5, 0x00F9, 0x00FA, 0x0169, 0x1EE7, 0x00FD, 0x1EE3, 0x1EEE, }; static struct strip_data viscii_strip_data = { viscii_pool, { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248 } }; static const recode_ucs2 vps_pool[256] = { /* 0 */ 0x0000, 0x0001, 0x1EA0, 0x1EAC, 0x1EB6, 0x1EB8, 0x1EC6, 0x0007, /* 8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, /* 16 */ 0x1ECA, 0x1ECC, 0x1ED8, 0x1EE2, 0x1EE4, 0x1EF0, 0x0016, 0x0017, /* 24 */ 0x0018, 0x1EF4, 0x001A, 0x001B, 0x1EAA, 0x1EEE, 0x001E, 0x001F, /* 32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, /* 40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, /* 48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, /* 56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, /* 64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, /* 72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, /* 80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, /* 88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, /* 96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, /* 128 */ 0x00C0, 0x1EA2, 0x00C3, 0x1EA4, 0x1EA6, 0x1EA8, 0x1ECD, 0x1ED7, /* 136 */ 0x0102, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC7, 0x1EAE, 0x1EB0, 0x1EB2, /* 144 */ 0x1EBE, 0xFFFF, 0xFFFF, 0x1EC0, 0x1EC2, 0x1EC4, 0x1ED0, 0x1ED2, /* 152 */ 0x1ED4, 0xFFFF, 0x00FD, 0x1EF7, 0x1EF5, 0x1EDA, 0x1EDC, 0x1EDE, /* 160 */ 0xFFFF, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EE0, 0x1EDB, /* 168 */ 0x00D9, 0x1EDD, 0x1EDF, 0x1EE1, 0x0168, 0x1EE8, 0x1EE3, 0x1EEA, /* 176 */ 0x1ED5, 0x1EEC, 0x1EF2, 0x1EF8, 0x00CD, 0x00CC, 0x1ED9, 0x1EC8, /* 184 */ 0x0128, 0x00D3, 0x1EED, 0x1EEF, 0x00D2, 0x1ECE, 0x00D5, 0x1EF1, /* 192 */ 0x1EA7, 0x00C1, 0x00C2, 0x1EA5, 0x1EA9, 0x1EAB, 0x1EAD, 0x0111, /* 200 */ 0x1EBB, 0x00C9, 0x00CA, 0x1EB9, 0x1EC9, 0x1EC5, 0x1ECB, 0x1EF9, /* 208 */ 0x01AF, 0x1EE6, 0x1ED3, 0x1ED1, 0x00D4, 0x1ECF, 0x01A1, 0x00C8, /* 216 */ 0x1EEB, 0x1EE9, 0x00DA, 0x0169, 0x01B0, 0x00DD, 0x1EBA, 0xFFFF, /* 224 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x1EA3, 0x1EA1, 0x0103, 0xFFFF, /* 232 */ 0x00E8, 0x00E9, 0x00EA, 0x1EBD, 0x00EC, 0x00ED, 0xFFFF, 0x0129, /* 240 */ 0x1EB4, 0x0110, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0xFFFF, 0x01A0, /* 248 */ 0x1EE5, 0x00F9, 0x00FA, 0x1EE7, 0xFFFF, 0x1EF6, 0x1EBC, 0x1EF3, }; static struct strip_data vps_strip_data = { vps_pool, { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248 } }; static const unsigned short viscii_viqr_data[] = { 2, 'A', '(', '?', DONE, 5, 'A', '(', '~', DONE, 6, 'A', '^', '~', DONE, 20, 'Y', '?', DONE, 25, 'Y', '~', DONE, 30, 'Y', '.', DONE, 128, 'A', '.', DONE, 129, 'A', '(', '\'', DONE, 130, 'A', '(', '`', DONE, 131, 'A', '(', '.', DONE, 132, 'A', '^', '\'', DONE, 133, 'A', '^', '`', DONE, 134, 'A', '^', '?', DONE, 135, 'A', '^', '.', DONE, 136, 'E', '~', DONE, 137, 'E', '.', DONE, 138, 'E', '^', '\'', DONE, 139, 'E', '^', '`', DONE, 140, 'E', '^', '?', DONE, 141, 'E', '^', '~', DONE, 142, 'E', '^', '.', DONE, 143, 'O', '^', '\'', DONE, 144, 'O', '^', '`', DONE, 145, 'O', '^', '?', DONE, 146, 'O', '^', '~', DONE, 147, 'O', '^', '.', DONE, 148, 'O', '+', '.', DONE, 149, 'O', '+', '\'', DONE, 150, 'O', '+', '`', DONE, 151, 'O', '+', '?', DONE, 152, 'I', '.', DONE, 153, 'O', '?', DONE, 154, 'O', '.', DONE, 155, 'I', '?', DONE, 156, 'U', '?', DONE, 157, 'U', '~', DONE, 158, 'U', '.', DONE, 159, 'Y', '`', DONE, 160, 'O', '~', DONE, 161, 'a', '(', '\'', DONE, 162, 'a', '(', '`', DONE, 163, 'a', '(', '.', DONE, 164, 'a', '^', '\'', DONE, 165, 'a', '^', '`', DONE, 166, 'a', '^', '?', DONE, 167, 'a', '^', '.', DONE, 168, 'e', '~', DONE, 169, 'e', '.', DONE, 170, 'e', '^', '\'', DONE, 171, 'e', '^', '`', DONE, 172, 'e', '^', '?', DONE, 173, 'e', '^', '~', DONE, 174, 'e', '^', '.', DONE, 175, 'o', '^', '\'', DONE, 176, 'o', '^', '`', DONE, 177, 'o', '^', '?', DONE, 178, 'o', '^', '~', DONE, 179, 'O', '+', '~', DONE, 180, 'O', '+', DONE, 181, 'o', '^', '.', DONE, 182, 'o', '+', '`', DONE, 183, 'o', '+', '?', DONE, 184, 'i', '.', DONE, 185, 'U', '+', '.', DONE, 186, 'U', '+', '\'', DONE, 187, 'U', '+', '`', DONE, 188, 'U', '+', '?', DONE, 189, 'o', '+', DONE, 190, 'o', '+', '\'', DONE, 191, 'U', '+', DONE, 192, 'A', '`', DONE, 193, 'A', '\'', DONE, 194, 'A', '^', DONE, 195, 'A', '~', DONE, 196, 'A', '?', DONE, 197, 'A', '(', DONE, 198, 'a', '(', '?', DONE, 199, 'a', '(', '~', DONE, 200, 'E', '`', DONE, 201, 'E', '\'', DONE, 202, 'E', '^', DONE, 203, 'E', '?', DONE, 204, 'I', '`', DONE, 205, 'I', '\'', DONE, 206, 'I', '~', DONE, 207, 'y', '`', DONE, 208, 'D', 'D', ELSE, 'D', 'd', ELSE, 'd', 'D', DONE, 209, 'u', '+', '\'', DONE, 210, 'O', '`', DONE, 211, 'O', '\'', DONE, 212, 'O', '^', DONE, 213, 'a', '.', DONE, 214, 'y', '?', DONE, 215, 'u', '+', '`', DONE, 216, 'u', '+', '?', DONE, 217, 'U', '`', DONE, 218, 'U', '\'', DONE, 219, 'y', '~', DONE, 220, 'y', '.', DONE, 221, 'Y', '\'', DONE, 222, 'o', '+', '~', DONE, 223, 'u', '+', DONE, 224, 'a', '`', DONE, 225, 'a', '\'', DONE, 226, 'a', '^', DONE, 227, 'a', '~', DONE, 228, 'a', '?', DONE, 229, 'a', '(', DONE, 230, 'u', '+', '~', DONE, 231, 'a', '^', '~', DONE, 232, 'e', '`', DONE, 233, 'e', '\'', DONE, 234, 'e', '^', DONE, 235, 'e', '?', DONE, 236, 'i', '`', DONE, 237, 'i', '\'', DONE, 238, 'i', '~', DONE, 239, 'i', '?', DONE, 240, 'd', 'd', DONE, 241, 'u', '+', '.', DONE, 242, 'o', '`', DONE, 243, 'o', '\'', DONE, 244, 'o', '^', DONE, 245, 'o', '~', DONE, 246, 'o', '?', DONE, 247, 'o', '.', DONE, 248, 'u', '.', DONE, 249, 'u', '`', DONE, 250, 'u', '\'', DONE, 251, 'u', '~', DONE, 252, 'u', '?', DONE, 253, 'y', '\'', DONE, 254, 'o', '+', '.', DONE, 255, 'U', '+', '~', DONE, DONE }; #define u(Character) ((unsigned char) (Character)) /* FIXME: Should not use Latin-1 characters, anyway. */ static const unsigned short viscii_vni_data[] = { 2, u('A'), u('Ú'), DONE, 5, u('A'), u('Ü'), DONE, 6, u('A'), u('Ã'), DONE, 20, u('Y'), u('Û'), DONE, 25, u('Y'), u('Õ'), DONE, 30, u('Î'), DONE, 128, u('A'), u('Ï'), DONE, 129, u('A'), u('È'), DONE, 130, u('A'), u('É'), DONE, 131, u('A'), u('Ë'), DONE, 132, u('A'), u('Á'), DONE, 133, u('A'), u('À'), DONE, 134, u('A'), u('Å'), DONE, 135, u('A'), u('Ä'), DONE, 136, u('E'), u('Õ'), DONE, 137, u('E'), u('Ï'), DONE, 138, u('E'), u('Á'), DONE, 139, u('E'), u('À'), DONE, 140, u('E'), u('Å'), DONE, 141, u('E'), u('Ã'), DONE, 142, u('E'), u('Ä'), DONE, 143, u('O'), u('Á'), DONE, 144, u('O'), u('À'), DONE, 145, u('O'), u('Å'), DONE, 146, u('O'), u('Ã'), DONE, 147, u('O'), u('Ä'), DONE, 148, u('Ô'), u('Ï'), DONE, 149, u('Ô'), u('Ù'), DONE, 150, u('Ô'), u('Ø'), DONE, 151, u('Ô'), u('Û'), DONE, 152, u('Ò'), DONE, 153, u('O'), u('Û'), DONE, 154, u('O'), u('Ï'), DONE, 155, u('Æ'), DONE, 156, u('U'), u('Û'), DONE, 157, u('U'), u('Õ'), DONE, 158, u('U'), u('Ï'), DONE, 159, u('Y'), u('Ø'), DONE, 160, u('O'), u('Õ'), DONE, 161, u('a'), u('é'), DONE, 162, u('a'), u('è'), DONE, 163, u('a'), u('ë'), DONE, 164, u('a'), u('á'), DONE, 165, u('a'), u('à'), DONE, 166, u('a'), u('å'), DONE, 167, u('a'), u('ä'), DONE, 168, u('e'), u('õ'), DONE, 169, u('e'), u('ï'), DONE, 170, u('e'), u('á'), DONE, 171, u('e'), u('à'), DONE, 172, u('e'), u('å'), DONE, 173, u('e'), u('ã'), DONE, 174, u('e'), u('ä'), DONE, 175, u('o'), u('á'), DONE, 176, u('o'), u('à'), DONE, 177, u('o'), u('å'), DONE, 178, u('o'), u('ã'), DONE, 179, u('Ô'), u('Õ'), DONE, 180, u('Ô'), DONE, 181, u('o'), u('ä'), DONE, 182, u('ô'), u('ø'), DONE, 183, u('ô'), u('û'), DONE, 184, u('ò'), DONE, 185, u('Ö'), u('Ï'), DONE, 186, u('Ö'), u('Ù'), DONE, 187, u('Ö'), u('Ø'), DONE, 188, u('Ö'), u('Û'), DONE, 189, u('ô'), DONE, 190, u('ô'), u('ù'), DONE, 191, u('Ö'), DONE, 192, u('A'), u('Ø'), DONE, 193, u('A'), u('Ù'), DONE, 194, u('A'), u('Â'), DONE, 195, u('A'), u('Õ'), DONE, 196, u('A'), u('Û'), DONE, 197, u('A'), u('Ê'), DONE, 198, u('a'), u('ú'), DONE, 199, u('a'), u('ü'), DONE, 200, u('E'), u('Ø'), DONE, 201, u('E'), u('Ù'), DONE, 202, u('E'), u('Â'), DONE, 203, u('E'), u('Û'), DONE, 204, u('Ì'), DONE, 205, u('Í'), DONE, 206, u('Ó'), DONE, 207, u('y'), u('ø'), DONE, 208, u('Ñ'), DONE, 209, u('ö'), u('ù'), DONE, 210, u('O'), u('Ø'), DONE, 211, u('O'), u('Ù'), DONE, 212, u('O'), u('Â'), DONE, 213, u('a'), u('ï'), DONE, 214, u('y'), u('û'), DONE, 215, u('ö'), u('ø'), DONE, 216, u('ö'), u('û'), DONE, 217, u('U'), u('Ø'), DONE, 218, u('U'), u('Ù'), DONE, 219, u('y'), u('õ'), DONE, 220, u('î'), DONE, 221, u('Y'), u('Ù'), DONE, 222, u('ô'), u('õ'), DONE, 223, u('ö'), DONE, 224, u('a'), u('ø'), DONE, 225, u('a'), u('ù'), DONE, 226, u('a'), u('â'), DONE, 227, u('a'), u('õ'), DONE, 228, u('a'), u('û'), DONE, 229, u('a'), u('ê'), DONE, 230, u('ö'), u('õ'), DONE, 231, u('a'), u('ã'), DONE, 232, u('e'), u('ø'), DONE, 233, u('e'), u('ù'), DONE, 234, u('e'), u('â'), DONE, 235, u('e'), u('û'), DONE, 236, u('ì'), DONE, 237, u('í'), DONE, 238, u('ó'), DONE, 239, u('æ'), DONE, 240, u('ñ'), DONE, 241, u('ö'), u('ï'), DONE, 242, u('o'), u('ø'), DONE, 243, u('o'), u('ù'), DONE, 244, u('o'), u('â'), DONE, 245, u('o'), u('õ'), DONE, 246, u('o'), u('û'), DONE, 247, u('o'), u('ï'), DONE, 248, u('u'), u('ï'), DONE, 249, u('u'), u('ø'), DONE, 250, u('u'), u('ù'), DONE, 251, u('u'), u('õ'), DONE, 252, u('u'), u('û'), DONE, 253, u('y'), u('ù'), DONE, 254, u('ô'), u('ï'), DONE, 255, u('Ö'), u('Õ'), DONE, DONE }; bool module_vietnamese (RECODE_OUTER outer) { if (!declare_strip_data (outer, &tcvn_strip_data, "TCVN")) return false; if (!declare_strip_data (outer, &viscii_strip_data, "VISCII")) return false; if (!declare_strip_data (outer, &vps_strip_data, "VPS")) return false; if (!declare_explode_data (outer, viscii_viqr_data, "VISCII", "VIQR")) return false; if (!declare_explode_data (outer, viscii_vni_data, "VISCII", "VNI")) return false; return true; } void delmodule_vietnamese (RECODE_OUTER outer) { } recode-3.6/src/flat.c0100644000000000000000000000535107126660165013220 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static bool transform_ascii_flat (RECODE_SUBTASK subtask) { int input_char; /* current character */ int temp_char; /* look ahead character */ input_char = get_byte (subtask); while (true) switch (input_char) { case EOF: SUBTASK_RETURN (subtask); case '\n': case '\t': put_byte (input_char, subtask); input_char = get_byte (subtask); break; case '\b': input_char = get_byte (subtask); switch (input_char) { case '\'': case '`': case '^': case '"': case '~': case ',': case '_': RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); input_char = get_byte (subtask); break; default: put_byte ('\b', subtask); } break; case '\'': case '`': case '^': case '"': case '~': case ',': case '_': temp_char = get_byte (subtask); if (temp_char == '\b') { RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); input_char = get_byte (subtask); } else { put_byte (input_char, subtask); input_char = temp_char; } break; default: if (!IS_ASCII (input_char)) { RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); put_byte ('M', subtask); put_byte ('-', subtask); input_char &= MASK (7); } if (input_char < ' ' || input_char == MASK (7)) { RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); put_byte ('^', subtask); input_char ^= (1 << 6); } put_byte (input_char, subtask); input_char = get_byte (subtask); } } bool module_flat (RECODE_OUTER outer) { if (!declare_single (outer, "ASCII-BS", "flat", outer->quality_variable_to_variable, NULL, transform_ascii_flat)) return false; return true; } void delmodule_flat (RECODE_OUTER outer) { } recode-3.6/src/html.c0100644000000000000000000010111407147325744013234 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "hash.h" /* FIXME: An @code{HTML} text which has spurious semi-colons to end entities (in strict mode) or does not always have them (in non-strict mode) is not canonical. */ /* Tables. */ /* The following entities, said to be from Emacs-w3, are ignored for the time being, as recode is not too fond on graphical approximations:   \   \ \ – - — -- ‘ ` ’ ' “ `` ” '' ⅛ 1/8 ⅜ 3/8 ⅝ 5/8 ⅞ 7/8 … . . . ← <-- → --> ™ (TM) */ /* XML with stand-alone=yes */ #define V00 (1 << 0) /* Old Emacs-W3, HTML 1.1 ? */ #define V11 (1 << 1) /* RFC1866, HTML 2.0 */ #define V20 (1 << 2) /* RFC2070, HTML-i18n */ #define V27 (1 << 3) /* HTML 3.2 */ #define V32 (1 << 4) /* HTML 4.0 */ #define V40 (1 << 5) #define ENTRY(Code, String, Flags) \ { Code, Flags, String } static struct ucs2_to_string translations [] = { ENTRY (33, "excl", 0 ), ENTRY (34, "quot", 0 | V00 | V20 | V27 | V32 | V40), ENTRY (35, "num", 0 ), ENTRY (36, "dollar", 0 ), ENTRY (37, "percnt", 0 ), ENTRY (38, "amp", 0 | V00 | V11 | V20 | V27 | V32 | V40), ENTRY (39, "apos", 0 | V00 ), ENTRY (40, "lpar", 0 ), ENTRY (41, "rpar", 0 ), ENTRY (42, "ast", 0 ), ENTRY (43, "plus", 0 ), ENTRY (44, "comma", 0 ), ENTRY (45, "horbar", 0 ), ENTRY (46, "period", 0 ), ENTRY (58, "colon", 0 ), ENTRY (59, "semi", 0 ), ENTRY (60, "lt", 0 | V00 | V11 | V20 | V27 | V32 | V40), ENTRY (61, "equals", 0 ), ENTRY (62, "gt", 0 | V00 | V11 | V20 | V27 | V32 | V40), ENTRY (63, "quest", 0 ), ENTRY (64, "commat", 0 ), ENTRY (91, "lsqb", 0 ), ENTRY (93, "rsqb", 0 ), ENTRY (94, "uarr", 0 ), ENTRY (95, "lowbar", 0 ), ENTRY (96, "grave", 0 ), ENTRY (123, "lcub", 0 ), ENTRY (124, "verbar", 0 ), ENTRY (125, "rcub", 0 ), ENTRY (126, "tilde", 0 ), ENTRY (160, "nbsp", 0 | V27 | V32 | V40), ENTRY (161, "iexcl", 0 | V27 | V32 | V40), ENTRY (162, "cent", 0 | V27 | V32 | V40), ENTRY (163, "pound", 0 | V27 | V32 | V40), ENTRY (164, "curren", 0 | V27 | V32 | V40), ENTRY (165, "yen", 0 | V27 | V32 | V40), ENTRY (166, "brkbar", 0 | V11 ), ENTRY (166, "brvbar", 0 | V27 | V32 | V40), ENTRY (167, "sect", 0 | V27 | V32 | V40), ENTRY (168, "die", 0 | V11 ), ENTRY (168, "uml", 0 | V27 | V32 | V40), ENTRY (169, "copy", 0 | V27 | V32 | V40), ENTRY (170, "ordf", 0 | V27 | V32 | V40), ENTRY (171, "laquo", 0 | V27 | V32 | V40), ENTRY (172, "not", 0 | V27 | V32 | V40), ENTRY (173, "hyphen", 0 | V11 ), ENTRY (173, "shy", 0 | V27 | V32 | V40), ENTRY (174, "reg", 0 | V27 | V32 | V40), ENTRY (175, "hibar", 0 | V11 ), ENTRY (175, "macr", 0 | V27 | V32 | V40), ENTRY (176, "deg", 0 | V27 | V32 | V40), ENTRY (177, "plusmn", 0 | V27 | V32 | V40), ENTRY (178, "sup2", 0 | V27 | V32 | V40), ENTRY (179, "sup3", 0 | V27 | V32 | V40), ENTRY (180, "acute", 0 | V27 | V32 | V40), ENTRY (181, "micro", 0 | V27 | V32 | V40), ENTRY (182, "para", 0 | V27 | V32 | V40), ENTRY (183, "middot", 0 | V27 | V32 | V40), ENTRY (184, "cedil", 0 | V27 | V32 | V40), ENTRY (185, "sup1", 0 | V27 | V32 | V40), ENTRY (186, "ordm", 0 | V27 | V32 | V40), ENTRY (187, "raquo", 0 | V27 | V32 | V40), ENTRY (188, "frac14", 0 | V27 | V32 | V40), ENTRY (189, "half", 0 | V11 ), ENTRY (189, "frac12", 0 | V27 | V32 | V40), ENTRY (190, "frac34", 0 | V27 | V32 | V40), ENTRY (191, "iquest", 0 | V27 | V32 | V40), ENTRY (192, "Agrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (193, "Aacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (194, "Acircu", 0 | V11 ), ENTRY (194, "Acirc", 0 | V20 | V27 | V32 | V40), ENTRY (195, "Atilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (196, "Adiaer", 0 | V11 ), ENTRY (196, "Auml", 0 | V20 | V27 | V32 | V40), ENTRY (197, "Aring", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (198, "AE", 0 | V11 ), ENTRY (198, "AElig", 0 | V20 | V27 | V32 | V40), ENTRY (199, "Ccedil", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (200, "Egrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (201, "Eacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (202, "Ecircu", 0 | V11 ), ENTRY (202, "Ecirc", 0 | V20 | V27 | V32 | V40), ENTRY (203, "Ediaer", 0 | V11 ), ENTRY (203, "Euml", 0 | V20 | V27 | V32 | V40), ENTRY (204, "Igrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (205, "Iacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (206, "Icircu", 0 | V11 ), ENTRY (206, "Icirc", 0 | V20 | V27 | V32 | V40), ENTRY (207, "Idiaer", 0 | V11 ), ENTRY (207, "Iuml", 0 | V20 | V27 | V32 | V40), ENTRY (208, "ETH", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (209, "Ntilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (210, "Ograve", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (211, "Oacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (212, "Ocircu", 0 | V11 ), ENTRY (212, "Ocirc", 0 | V20 | V27 | V32 | V40), ENTRY (213, "Otilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (214, "Odiaer", 0 | V11 ), ENTRY (214, "Ouml", 0 | V20 | V27 | V32 | V40), ENTRY (215, "MULT", 0 | V11 ), ENTRY (215, "times", 0 | V27 | V32 | V40), ENTRY (216, "Ostroke", 0 | V11 ), ENTRY (216, "Oslash", 0 | V20 | V27 | V32 | V40), ENTRY (217, "Ugrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (218, "Uacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (219, "Ucircu", 0 | V11 ), ENTRY (219, "Ucirc", 0 | V20 | V27 | V32 | V40), ENTRY (220, "Udiaer", 0 | V11 ), ENTRY (220, "Uuml", 0 | V20 | V27 | V32 | V40), ENTRY (221, "Yacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (222, "THORN", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (223, "ssharp", 0 | V11 ), ENTRY (223, "szlig", 0 | V20 | V27 | V32 | V40), ENTRY (224, "agrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (225, "aacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (226, "acircu", 0 | V11 ), ENTRY (226, "acirc", 0 | V20 | V27 | V32 | V40), ENTRY (227, "atilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (228, "adiaer", 0 | V11 ), ENTRY (228, "auml", 0 | V20 | V27 | V32 | V40), ENTRY (229, "aring", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (230, "ae", 0 | V11 ), ENTRY (230, "aelig", 0 | V20 | V27 | V32 | V40), ENTRY (231, "ccedil", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (232, "egrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (233, "eacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (234, "ecircu", 0 | V11 ), ENTRY (234, "ecirc", 0 | V20 | V27 | V32 | V40), ENTRY (235, "ediaer", 0 | V11 ), ENTRY (235, "euml", 0 | V20 | V27 | V32 | V40), ENTRY (236, "igrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (237, "iacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (238, "icircu", 0 | V11 ), ENTRY (238, "icirc", 0 | V20 | V27 | V32 | V40), ENTRY (239, "idiaer", 0 | V11 ), ENTRY (239, "iuml", 0 | V20 | V27 | V32 | V40), ENTRY (240, "eth", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (241, "ntilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (242, "ograve", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (243, "oacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (244, "ocircu", 0 | V11 ), ENTRY (244, "ocirc", 0 | V20 | V27 | V32 | V40), ENTRY (245, "otilde", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (246, "odiaer", 0 | V11 ), ENTRY (246, "ouml", 0 | V20 | V27 | V32 | V40), ENTRY (247, "DIVIS", 0 | V11 ), ENTRY (247, "divide", 0 | V27 | V32 | V40), ENTRY (248, "ostroke", 0 | V11 ), ENTRY (248, "oslash", 0 | V20 | V27 | V32 | V40), ENTRY (249, "ugrave", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (250, "uacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (251, "ucircu", 0 | V11 ), ENTRY (251, "ucirc", 0 | V20 | V27 | V32 | V40), ENTRY (252, "udiaer", 0 | V11 ), ENTRY (252, "uuml", 0 | V20 | V27 | V32 | V40), ENTRY (253, "yacute", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (254, "thorn", 0 | V11 | V20 | V27 | V32 | V40), ENTRY (255, "ydiaer", 0 | V11 ), ENTRY (255, "yuml", 0 | V20 | V27 | V32 | V40), ENTRY (338, "OElig", 0 | V40), ENTRY (339, "oelig", 0 | V40), ENTRY (352, "Scaron", 0 | V40), ENTRY (353, "scaron", 0 | V40), ENTRY (376, "Yuml", 0 | V40), ENTRY (402, "fnof", 0 | V40), ENTRY (710, "circ", 0 | V40), ENTRY (732, "tilde", 0 | V40), ENTRY (913, "Alpha", 0 | V40), ENTRY (914, "Beta", 0 | V40), ENTRY (915, "Gamma", 0 | V40), ENTRY (916, "Delta", 0 | V40), ENTRY (917, "Epsilon", 0 | V40), ENTRY (918, "Zeta", 0 | V40), ENTRY (919, "Eta", 0 | V40), ENTRY (920, "Theta", 0 | V40), ENTRY (921, "Iota", 0 | V40), ENTRY (922, "Kappa", 0 | V40), ENTRY (923, "Lambda", 0 | V40), ENTRY (924, "Mu", 0 | V40), ENTRY (925, "Nu", 0 | V40), ENTRY (926, "Xi", 0 | V40), ENTRY (927, "Omicron", 0 | V40), ENTRY (928, "Pi", 0 | V40), ENTRY (929, "Rho", 0 | V40), ENTRY (931, "Sigma", 0 | V40), ENTRY (932, "Tau", 0 | V40), ENTRY (933, "Upsilon", 0 | V40), ENTRY (934, "Phi", 0 | V40), ENTRY (935, "Chi", 0 | V40), ENTRY (936, "Psi", 0 | V40), ENTRY (937, "Omega", 0 | V40), ENTRY (945, "alpha", 0 | V40), ENTRY (946, "beta", 0 | V40), ENTRY (947, "gamma", 0 | V40), ENTRY (948, "delta", 0 | V40), ENTRY (949, "epsilon", 0 | V40), ENTRY (950, "zeta", 0 | V40), ENTRY (951, "eta", 0 | V40), ENTRY (952, "theta", 0 | V40), ENTRY (953, "iota", 0 | V40), ENTRY (954, "kappa", 0 | V40), ENTRY (955, "lambda", 0 | V40), ENTRY (956, "mu", 0 | V40), ENTRY (957, "nu", 0 | V40), ENTRY (958, "xi", 0 | V40), ENTRY (959, "omicron", 0 | V40), ENTRY (960, "pi", 0 | V40), ENTRY (961, "rho", 0 | V40), ENTRY (962, "sigmaf", 0 | V40), ENTRY (963, "sigma", 0 | V40), ENTRY (964, "tau", 0 | V40), ENTRY (965, "upsilon", 0 | V40), ENTRY (966, "phi", 0 | V40), ENTRY (967, "chi", 0 | V40), ENTRY (968, "psi", 0 | V40), ENTRY (969, "omega", 0 | V40), ENTRY (977, "thetasym", 0 | V40), ENTRY (978, "upsih", 0 | V40), ENTRY (982, "piv", 0 | V40), ENTRY (8194, "ensp", 0 | V40), ENTRY (8195, "emsp", 0 | V40), ENTRY (8201, "thinsp", 0 | V40), ENTRY (8204, "zwnj", 0 | V27 | V40), ENTRY (8205, "zwj", 0 | V27 | V40), ENTRY (8206, "lrm", 0 | V27 | V40), ENTRY (8207, "rlm", 0 | V27 | V40), ENTRY (8211, "ndash", 0 | V40), ENTRY (8212, "mdash", 0 | V40), ENTRY (8216, "lsquo", 0 | V40), ENTRY (8217, "rsquo", 0 | V40), ENTRY (8218, "sbquo", 0 | V40), ENTRY (8220, "ldquo", 0 | V40), ENTRY (8221, "rdquo", 0 | V40), ENTRY (8222, "bdquo", 0 | V40), ENTRY (8224, "dagger", 0 | V40), ENTRY (8225, "Dagger", 0 | V40), ENTRY (8226, "bull", 0 | V40), ENTRY (8230, "hellip", 0 | V40), ENTRY (8240, "permil", 0 | V40), ENTRY (8242, "prime", 0 | V40), ENTRY (8243, "Prime", 0 | V40), ENTRY (8249, "lsaquo", 0 | V40), ENTRY (8250, "rsaquo", 0 | V40), ENTRY (8254, "oline", 0 | V40), ENTRY (8260, "frasl", 0 | V40), ENTRY (8364, "euro", 0 | V40), ENTRY (8465, "image", 0 | V40), ENTRY (8472, "weierp", 0 | V40), ENTRY (8476, "real", 0 | V40), ENTRY (8482, "trade", 0 | V40), ENTRY (8501, "alefsym", 0 | V40), ENTRY (8592, "larr", 0 | V40), ENTRY (8593, "uarr", 0 | V40), ENTRY (8594, "rarr", 0 | V40), ENTRY (8595, "darr", 0 | V40), ENTRY (8596, "harr", 0 | V40), ENTRY (8629, "crarr", 0 | V40), ENTRY (8656, "lArr", 0 | V40), ENTRY (8657, "uArr", 0 | V40), ENTRY (8658, "rArr", 0 | V40), ENTRY (8659, "dArr", 0 | V40), ENTRY (8660, "hArr", 0 | V40), ENTRY (8704, "forall", 0 | V40), ENTRY (8706, "part", 0 | V40), ENTRY (8707, "exist", 0 | V40), ENTRY (8709, "empty", 0 | V40), ENTRY (8711, "nabla", 0 | V40), ENTRY (8712, "isin", 0 | V40), ENTRY (8713, "notin", 0 | V40), ENTRY (8715, "ni", 0 | V40), ENTRY (8719, "prod", 0 | V40), ENTRY (8721, "sum", 0 | V40), ENTRY (8722, "minus", 0 | V40), ENTRY (8727, "lowast", 0 | V40), ENTRY (8730, "radic", 0 | V40), ENTRY (8733, "prop", 0 | V40), ENTRY (8734, "infin", 0 | V40), ENTRY (8736, "ang", 0 | V40), ENTRY (8743, "and", 0 | V40), ENTRY (8744, "or", 0 | V40), ENTRY (8745, "cap", 0 | V40), ENTRY (8746, "cup", 0 | V40), ENTRY (8747, "int", 0 | V40), ENTRY (8756, "there4", 0 | V40), ENTRY (8764, "sim", 0 | V40), ENTRY (8773, "cong", 0 | V40), ENTRY (8776, "asymp", 0 | V40), ENTRY (8800, "ne", 0 | V40), ENTRY (8801, "equiv", 0 | V40), ENTRY (8804, "le", 0 | V40), ENTRY (8805, "ge", 0 | V40), ENTRY (8834, "sub", 0 | V40), ENTRY (8835, "sup", 0 | V40), ENTRY (8836, "nsub", 0 | V40), ENTRY (8838, "sube", 0 | V40), ENTRY (8839, "supe", 0 | V40), ENTRY (8853, "oplus", 0 | V40), ENTRY (8855, "otimes", 0 | V40), ENTRY (8869, "perp", 0 | V40), ENTRY (8901, "sdot", 0 | V40), ENTRY (8968, "lceil", 0 | V40), ENTRY (8969, "rceil", 0 | V40), ENTRY (8970, "lfloor", 0 | V40), ENTRY (8971, "rfloor", 0 | V40), ENTRY (9001, "lang", 0 | V40), ENTRY (9002, "rang", 0 | V40), ENTRY (9674, "loz", 0 | V40), ENTRY (9824, "spades", 0 | V40), ENTRY (9827, "clubs", 0 | V40), ENTRY (9829, "hearts", 0 | V40), ENTRY (9830, "diams", 0 | V40), ENTRY (0, NULL, 0 ) }; #undef ENTRY /* UCS-2 towards HTML. */ /*-------------------------------------. | Return hash value given TABLE_SIZE. | `-------------------------------------*/ static unsigned code_hash (const void *void_data, unsigned table_size) { struct ucs2_to_string const *data = void_data; return data->code % table_size; } /*----------------------------------------. | Say if two translations are identical. | `----------------------------------------*/ static bool code_compare (const void *void_first, const void *void_second) { struct ucs2_to_string const *first = void_first; struct ucs2_to_string const *second = void_second; return first->code == second->code; } /*-----------------. | Initialisation. | `-----------------*/ static bool init_ucs2_html (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options, unsigned mask) { Hash_table *table; struct ucs2_to_string const *cursor; if (before_options || after_options) return false; table = hash_initialize (0, NULL, code_hash, code_compare, NULL); if (!table) return false; for (cursor = translations; cursor->code; cursor++) if (cursor->flags & mask && (!request->diacritics_only || cursor->code > 128)) if (!hash_insert (table, cursor)) return false; step->step_type = RECODE_UCS2_TO_STRING; step->step_table = table; return true; } static bool init_ucs2_html_v00 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V00); } static bool init_ucs2_html_v11 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V11); } static bool init_ucs2_html_v20 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V20); } static bool init_ucs2_html_v27 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V27); } static bool init_ucs2_html_v32 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V32); } static bool init_ucs2_html_v40 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_ucs2_html (step, request, before_options, after_options, V40); } /*-----------------. | Transformation. | `-----------------*/ static bool transform_ucs2_html (RECODE_SUBTASK subtask) { Hash_table *table = subtask->step->step_table; unsigned value; while (get_ucs2 (&value, subtask)) { struct ucs2_to_string lookup; struct ucs2_to_string *entry; lookup.code = value; entry = hash_lookup (table, &lookup); if (entry) { const char *cursor = entry->string; put_byte ('&', subtask); while (*cursor) { put_byte (*cursor, subtask); cursor++; } put_byte (';', subtask); } else if ((value < 32 && value != '\n' && value != '\t') || value >= 127) { unsigned divider = 10000; put_byte ('&', subtask); put_byte ('#', subtask); while (divider > value) divider /= 10; while (divider > 1) { put_byte ('0' + value / divider, subtask); value %= divider; divider /= 10; } put_byte ('0' + value, subtask); put_byte (';', subtask); } else put_byte(value, subtask); } SUBTASK_RETURN (subtask); } /* HTML towards UCS-2. */ #define ENTITY_BUFFER_LENGTH 20 /* " { if (request->diacritics_only) ECHO; else put_ucs2 (34, subtask); } & { if (request->diacritics_only) ECHO; else put_ucs2 (38, subtask); } < { if (request->diacritics_only) ECHO; else put_ucs2 (60, subtask); } > { if (request->diacritics_only) ECHO; else put_ucs2 (62, subtask); } */ /*-------------------------------------. | Return hash value given TABLE_SIZE. | `-------------------------------------*/ static unsigned string_hash (const void *void_data, unsigned table_size) { struct ucs2_to_string const *data = void_data; return hash_string (data->string, table_size); } /*----------------------------------------. | Say if two translations are identical. | `----------------------------------------*/ static bool string_compare (const void *void_first, const void *void_second) { struct ucs2_to_string const *first = void_first; struct ucs2_to_string const *second = void_second; return strcmp (first->string, second->string) == 0; } /*-----------------. | Initialisation. | `-----------------*/ static bool init_html_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options, unsigned mask) { Hash_table *table; struct ucs2_to_string const *cursor; if (before_options || after_options) return false; table = hash_initialize (0, NULL, string_hash, string_compare, NULL); if (!table) return false; for (cursor = translations; cursor->code; cursor++) if (cursor->flags & mask && (!request->diacritics_only || cursor->code > 128)) if (!hash_insert (table, cursor)) return false; step->step_type = RECODE_STRING_TO_UCS2; step->step_table = table; return true; } static bool init_html_v00_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V00); } static bool init_html_v11_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V11); } static bool init_html_v20_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V20); } static bool init_html_v27_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V27); } static bool init_html_v32_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V32); } static bool init_html_v40_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { return init_html_ucs2 (step, request, before_options, after_options, V40); } /*-----------------. | Transformation. | `-----------------*/ static bool transform_html_ucs2 (RECODE_SUBTASK subtask) { RECODE_CONST_REQUEST request = subtask->task->request; int input_char; input_char = get_byte (subtask); if (input_char != EOF) put_ucs2 (BYTE_ORDER_MARK, subtask); /* FIXME: experimental */ while (input_char != EOF) if (input_char == '&') { char buffer[ENTITY_BUFFER_LENGTH]; char *cursor = buffer; bool valid = true; bool echo = false; input_char = get_byte (subtask); if (input_char == '#') { input_char = get_byte (subtask); if (input_char == 'x' || input_char == 'X') { unsigned value = 0; /* Scan &#[xX][0-9a-fA-F]+; notation. */ *cursor++ = '#'; *cursor++ = input_char; input_char = get_byte (subtask); while (valid) { if (input_char >= '0' && input_char <= '9') value = 16 * value + input_char - '0'; else if (input_char >= 'A' && input_char <= 'F') value = 16 * value + input_char - 'A' + 10; else if (input_char >= 'a' && input_char <= 'f') value = 16 * value + input_char - 'a' + 10; else break; if (value >= 65535) valid = false; else if (cursor == buffer + ENTITY_BUFFER_LENGTH - 2) valid = false; else { *cursor++ = input_char; input_char = get_byte (subtask); } } if (valid) if (request->diacritics_only) { echo = true; *cursor = '\0'; } else { put_ucs2 (value, subtask); if (input_char == ';') input_char = get_byte (subtask); } else *cursor = '\0'; } else { unsigned value = 0; /* Scan &#[0-9]+; notation. */ *cursor++ = '#'; while (valid) { if (input_char >= '0' && input_char <= '9') value = 10 * value + input_char - '0'; else break; if (value >= 65535) valid = false; else if (cursor == buffer + ENTITY_BUFFER_LENGTH - 2) valid = false; else { *cursor++ = input_char; input_char = get_byte (subtask); } } if (valid) if (request->diacritics_only) { echo = true; *cursor = '\0'; } else { put_ucs2 (value, subtask); if (input_char == ';') input_char = get_byte (subtask); } else *cursor = '\0'; } } else if ((input_char >= 'A' && input_char <= 'Z') || (input_char >= 'a' && input_char <= 'z')) { /* Scan &[A-Za-z][A-Za-z0-9]*; notation. */ *cursor++ = input_char; input_char = get_byte (subtask); while (valid && input_char != EOF && ((input_char >= 'A' && input_char <= 'Z') || (input_char >= 'a' && input_char <= 'z') || (input_char >= '0' && input_char <= '9'))) if (cursor == buffer + ENTITY_BUFFER_LENGTH - 2) valid = false; else { *cursor++ = input_char; input_char = get_byte (subtask); } *cursor = '\0'; if (valid) { struct ucs2_to_string lookup; struct ucs2_to_string *entry; lookup.string = buffer; entry = hash_lookup (subtask->step->step_table, &lookup); if (entry) { put_ucs2 (entry->code, subtask); if (input_char == ';') input_char = get_byte (subtask); } else valid = false; } } if (echo || !valid) { put_ucs2 ('&', subtask); for (cursor = buffer; *cursor; cursor++) put_ucs2 (*cursor, subtask); } } else { put_ucs2 (input_char, subtask); input_char = get_byte (subtask); } SUBTASK_RETURN (subtask); } /* Module declaration. */ bool module_html (RECODE_OUTER outer) { return declare_single (outer, "ISO-10646-UCS-2", "XML-standalone", outer->quality_byte_to_variable, init_ucs2_html_v00, transform_ucs2_html) && declare_single (outer, "XML-standalone", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v00_ucs2, transform_html_ucs2) && declare_single (outer, "ISO-10646-UCS-2", "HTML_1.1", outer->quality_byte_to_variable, init_ucs2_html_v11, transform_ucs2_html) && declare_single (outer, "HTML_1.1", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v11_ucs2, transform_html_ucs2) && declare_single (outer, "ISO-10646-UCS-2", "HTML_2.0", outer->quality_byte_to_variable, init_ucs2_html_v20, transform_ucs2_html) && declare_single (outer, "HTML_2.0", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v20_ucs2, transform_html_ucs2) && declare_single (outer, "ISO-10646-UCS-2", "HTML-i18n", outer->quality_byte_to_variable, init_ucs2_html_v27, transform_ucs2_html) && declare_single (outer, "HTML-i18n", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v27_ucs2, transform_html_ucs2) && declare_single (outer, "ISO-10646-UCS-2", "HTML_3.2", outer->quality_byte_to_variable, init_ucs2_html_v32, transform_ucs2_html) && declare_single (outer, "HTML_3.2", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v32_ucs2, transform_html_ucs2) && declare_single (outer, "ISO-10646-UCS-2", "HTML_4.0", outer->quality_byte_to_variable, init_ucs2_html_v40, transform_ucs2_html) && declare_single (outer, "HTML_4.0", "ISO-10646-UCS-2", outer->quality_variable_to_byte, init_html_v40_ucs2, transform_html_ucs2) && declare_alias (outer, "h0", "XML-standalone") && declare_alias (outer, "h1", "HTML_1.1") && declare_alias (outer, "RFC1866", "HTML_2.0") && declare_alias (outer, "1866", "HTML_2.0") && declare_alias (outer, "h2", "HTML_2.0") && declare_alias (outer, "RFC2070", "HTML-i18n") && declare_alias (outer, "2070", "HTML-i18n") && declare_alias (outer, "h3", "HTML_3.2") && declare_alias (outer, "h4", "HTML_4.0") /* HTML defaults to the highest level available. */ && declare_alias (outer, "HTML", "HTML_4.0") && declare_alias (outer, "h", "HTML_4.0"); } void delmodule_html (RECODE_OUTER outer) { } recode-3.6/src/lat1ltex.c0100644000000000000000000001552107126660130014020 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" struct translation { unsigned code; /* code being translated */ const char *string; /* translation string */ }; static struct translation const diacritic_translations [] = { {192, "\\`A"}, /* capital A with grave accent */ {193, "\\'A"}, /* capital A with acute accent */ {194, "\\^A"}, /* capital A with circumflex accent */ {195, "\\~A"}, /* capital A with tilde */ {196, "\\\"A"}, /* capital A diaeresis */ {197, "\\AA{}"}, /* capital A with ring above */ {198, "\\AE{}"}, /* capital diphthong A with E */ {199, "\\c{C}"}, /* capital C with cedilla */ {200, "\\`E"}, /* capital E with grave accent */ {201, "\\'E"}, /* capital E with acute accent */ {202, "\\^E"}, /* capital E with circumflex accent */ {203, "\\\"E"}, /* capital E with diaeresis */ {204, "\\`I"}, /* capital I with grave accent */ {205, "\\'I"}, /* capital I with acute accent */ {206, "\\^I"}, /* capital I with circumflex accent */ {207, "\\\"I"}, /* capital I with diaeresis */ {209, "\\~N"}, /* capital N with tilde */ {210, "\\`O"}, /* capital O with grave accent */ {211, "\\'O"}, /* capital O with acute accent */ {212, "\\^O"}, /* capital O with circumflex accent */ {213, "\\~O"}, /* capital O with tilde */ {214, "\\\"O"}, /* capital O with diaeresis */ {216, "\\O{}"}, /* capital O with oblique stroke */ {217, "\\`U"}, /* capital U with grave accent */ {218, "\\'U"}, /* capital U with acute accent */ {219, "\\^U"}, /* capital U with circumflex accent */ {220, "\\\"U"}, /* capital U with diaeresis */ {221, "\\'Y"}, /* capital Y with acute accent */ {223, "\\ss{}"}, /* small german sharp s */ {224, "\\`a"}, /* small a with grave accent */ {225, "\\'a"}, /* small a with acute accent */ {226, "\\^a"}, /* small a with circumflex accent */ {227, "\\~a"}, /* small a with tilde */ {228, "\\\"a"}, /* small a with diaeresis */ {229, "\\aa{}"}, /* small a with ring above */ {230, "\\ae{}"}, /* small diphthong a with e */ {231, "\\c{c}"}, /* small c with cedilla */ {232, "\\`e"}, /* small e with grave accent */ {233, "\\'e"}, /* small e with acute accent */ {234, "\\^e"}, /* small e with circumflex accent */ {235, "\\\"e"}, /* small e with diaeresis */ {236, "\\`{\\i}"}, /* small i with grave accent */ {237, "\\'{\\i}"}, /* small i with acute accent */ {238, "\\^{\\i}"}, /* small i with circumflex accent */ {239, "\\\"{\\i}"}, /* small i with diaeresis */ {241, "\\~n"}, /* small n with tilde */ {242, "\\`o"}, /* small o with grave accent */ {243, "\\'o"}, /* small o with acute accent */ {244, "\\^o"}, /* small o with circumflex accent */ {245, "\\~o"}, /* small o with tilde */ {246, "\\\"o"}, /* small o with diaeresis */ {248, "\\o{}"}, /* small o with oblique stroke */ {249, "\\`u"}, /* small u with grave accent */ {250, "\\'u"}, /* small u with acute accent */ {251, "\\^u"}, /* small u with circumflex accent */ {252, "\\\"u"}, /* small u with diaeresis */ {253, "\\'y"}, /* small y with acute accent */ {255, "\\\"y"}, /* small y with diaeresis */ {0, NULL} }; static struct translation const other_translations [] = { { 35, "\\#"}, { 36, "\\$"}, { 37, "\\%"}, { 38, "\\&"}, { 92, "\\backslash{}"}, { 95, "\\_"}, {123, "\\{"}, {125, "\\}"}, {160, "~"}, /* no-break space */ {161, "!`"}, /* inverted exclamation mark */ {163, "\\pound{}"}, /* pound sign */ {167, "\\S{}"}, /* paragraph sign, section sign */ {168, "\\\"{}"}, /* diaeresis */ {169, "\\copyright{}"}, /* copyright sign */ {171, "``"}, /* left angle quotation mark */ {172, "\\neg{}"}, /* not sign */ {173, "\\-"}, /* soft hyphen */ {176, "\\mbox{$^\\circ$}"}, /* degree sign */ {177, "\\mbox{$\\pm$}"}, /* plus-minus sign */ {178, "\\mbox{$^2$}"}, /* superscript two */ {179, "\\mbox{$^3$}"}, /* superscript three */ {180, "\\'{}"}, /* acute accent */ {181, "\\mbox{$\\mu$}"}, /* small greek mu, micro sign */ {183, "\\cdotp"}, /* middle dot */ {184, "\\,{}"}, /* cedilla */ {185, "\\mbox{$^1$}"}, /* superscript one */ {187, "''"}, /* right angle quotation mark */ {188, "\\frac1/4{}"}, /* vulgar fraction one quarter */ {189, "\\frac1/2{}"}, /* vulgar fraction one half */ {190, "\\frac3/4{}"}, /* vulgar fraction three quarters */ {191, "?`"}, /* inverted question mark */ {0, NULL} }; static bool init_latin1_latex (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; char *pool; const char **table; unsigned counter; struct translation const *cursor; if (before_options || after_options) return false; if (!ALLOC_SIZE (table, 256 * sizeof (char *) + 256, const char *)) return false; pool = (char *) (table + 256); for (counter = 0; counter < 128; counter++) { table[counter] = pool; *pool++ = counter; *pool++ = NUL; } for (counter = 128; counter < 256; counter++) table[counter] = NULL; for (cursor = diacritic_translations; cursor->code; cursor++) table[cursor->code] = cursor->string; if (!request->diacritics_only) for (cursor = other_translations; cursor->code; cursor++) table[cursor->code] = cursor->string; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table; return true; } bool module_latin1_latex (RECODE_OUTER outer) { return declare_single (outer, "Latin-1", "LaTeX", outer->quality_byte_to_variable, init_latin1_latex, transform_byte_to_variable) && declare_alias (outer, "TeX", "LaTeX") && declare_alias (outer, "ltex", "LaTeX"); } void delmodule_latin1_latex (RECODE_OUTER outer) { } recode-3.6/src/lat1txte.c0100644000000000000000000002005507126660123014030 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static const char *const translation_table[128] = { NULL, /* 128 */ NULL, /* 129 */ NULL, /* 130 */ NULL, /* 131 */ NULL, /* 132 */ NULL, /* 133 */ NULL, /* 134 */ NULL, /* 135 */ NULL, /* 136 */ NULL, /* 137 */ NULL, /* 138 */ NULL, /* 139 */ NULL, /* 140 */ NULL, /* 141 */ NULL, /* 142 */ NULL, /* 143 */ NULL, /* 144 */ NULL, /* 145 */ NULL, /* 146 */ NULL, /* 147 */ NULL, /* 148 */ NULL, /* 149 */ NULL, /* 150 */ NULL, /* 151 */ NULL, /* 152 */ NULL, /* 153 */ NULL, /* 154 */ NULL, /* 155 */ NULL, /* 156 */ NULL, /* 157 */ NULL, /* 158 */ NULL, /* 159 */ " ", /* 160 no-break space */ NULL, /* 161 inverted exclamation mark */ NULL, /* 162 cent sign */ NULL, /* 163 pound sign */ NULL, /* 164 currency sign */ NULL, /* 165 yen sign */ NULL, /* 166 broken bar */ NULL, /* 167 paragraph sign, section sign */ NULL, /* 168 diaeresis */ NULL, /* 169 copyright sign */ NULL, /* 170 feminine ordinal indicator */ "``", /* 171 left angle quotation mark */ NULL, /* 172 not sign */ NULL, /* 173 soft hyphen */ NULL, /* 174 registered trade mark sign */ NULL, /* 175 macron */ NULL, /* 176 degree sign */ NULL, /* 177 plus-minus sign */ NULL, /* 178 superscript two */ NULL, /* 179 superscript three */ NULL, /* 180 acute accent */ NULL, /* 181 small greek mu, micro sign */ NULL, /* 182 pilcrow sign */ NULL, /* 183 middle dot */ NULL, /* 184 cedilla */ NULL, /* 185 superscript one */ NULL, /* 186 masculine ordinal indicator */ "''", /* 187 right angle quotation mark */ NULL, /* 188 vulgar fraction one quarter */ NULL, /* 189 vulgar fraction one half */ NULL, /* 190 vulgar fraction three quarters */ NULL, /* 191 inverted question mark */ "A`", /* 192 capital A with grave accent */ NULL, /* 193 capital A with acute accent */ "A^", /* 194 capital A with circumflex accent */ NULL, /* 195 capital A with tilde */ "A\"", /* 196 capital A diaeresis */ NULL, /* 197 capital A with ring above */ NULL, /* 198 capital diphthong A with E */ "C,", /* 199 capital C with cedilla */ "E`", /* 200 capital E with grave accent */ "E\'", /* 201 capital E with acute accent */ "E^", /* 202 capital E with circumflex accent */ "E\"", /* 203 capital E with diaeresis */ NULL, /* 204 capital I with grave accent */ NULL, /* 205 capital I with acute accent */ "I^", /* 206 capital I with circumflex accent */ "I\"", /* 207 capital I with diaeresis */ NULL, /* 208 capital icelandic ETH */ NULL, /* 209 capital N with tilde */ "O`", /* 210 capital O with grave accent */ NULL, /* 211 capital O with acute accent */ "O^", /* 212 capital O with circumflex accent */ NULL, /* 213 capital O with tilde */ "O\"", /* 214 capital O with diaeresis */ NULL, /* 215 multiplication sign */ NULL, /* 216 capital O with oblique stroke */ "U`", /* 217 capital U with grave accent */ NULL, /* 218 capital U with acute accent */ "U^", /* 219 capital U with circumflex accent */ "U\"", /* 220 capital U with diaeresis */ NULL, /* 221 capital Y with acute accent */ NULL, /* 222 capital icelandic THORN */ NULL, /* 223 small german sharp s */ "a`", /* 224 small a with grave accent */ NULL, /* 225 small a with acute accent */ "a^", /* 226 small a with circumflex accent */ NULL, /* 227 small a with tilde */ "a\"", /* 228 small a with diaeresis */ NULL, /* 229 small a with ring above */ NULL, /* 230 small diphthong a with e */ "c,", /* 231 small c with cedilla */ "e`", /* 232 small e with grave accent */ "e\'", /* 233 small e with acute accent */ "e^", /* 234 small e with circumflex accent */ "e\"", /* 235 small e with diaeresis */ NULL, /* 236 small i with grave accent */ NULL, /* 237 small i with acute accent */ "i^", /* 238 small i with circumflex accent */ "i\"", /* 239 small i with diaeresis */ NULL, /* 240 small icelandic eth */ NULL, /* 241 small n with tilde */ "o`", /* 242 small o with grave accent */ NULL, /* 243 small o with acute accent */ "o^", /* 244 small o with circumflex accent */ NULL, /* 245 small o with tilde */ "o\"", /* 246 small o with diaeresis */ NULL, /* 247 division sign */ NULL, /* 248 small o with oblique stroke */ "u`", /* 249 small u with grave accent */ NULL, /* 250 small u with acute accent */ "u^", /* 251 small u with circumflex accent */ "u\"", /* 252 small u with diaeresis */ NULL, /* 253 small y with acute accent */ NULL, /* 254 small icelandic thorn */ NULL, /* 255 small y with diaeresis */ }; static bool init_latin1_texte (RECODE_STEP step, const struct recode_request *request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { RECODE_OUTER outer = request->outer; unsigned rewritten; /* number of rewritten translations */ const char **table; /* allocated structure, including pool */ char *pool; /* cursor in character pool */ unsigned counter; /* general purpose counter */ if (before_options || after_options) return false; /* The algorithm for proper processing of -c option depends on the fact that quotes to be changed in colons are exactly those, in strings from translation_table, which are in second position while the string is two characters in length. This is sufficient for now. */ rewritten = 0; if (request->diaeresis_char != '"') for (counter = 128; counter < 256; counter++) if (translation_table[counter - 128] && translation_table[counter - 128][1] == '"' && translation_table[counter - 128][2] == NUL) rewritten++; if (!ALLOC_SIZE (table, sizeof (char *) * 256 + 2 * 128 + 3 * rewritten, const char *)) return false; pool = (char *) (table + 256); for (counter = 0; counter < 128; counter++) { table[counter] = pool; *pool++ = counter; *pool++ = NUL; } for (; counter < 256; counter++) if (request->diaeresis_char != '"' && translation_table[counter - 128] && translation_table[counter - 128][1] == '"' && translation_table[counter - 128][2] == NUL) { table[counter] = pool; *pool++ = translation_table[counter - 128][0]; *pool++ = request->diaeresis_char; *pool++ = NUL; } else table[counter] = translation_table[counter - 128]; step->step_type = RECODE_BYTE_TO_STRING; step->step_table = table; return true; } bool module_latin1_texte (RECODE_OUTER outer) { return declare_single (outer, "Latin-1", "Texte", outer->quality_byte_to_variable, init_latin1_texte, transform_byte_to_variable) && declare_alias (outer, "txte", "Texte"); } void delmodule_latin1_texte (RECODE_OUTER outer) { } recode-3.6/src/rfc1345.c0100644000000000000000000001603207126660167013361 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1993, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1993. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "rfc1345.h" /* This module takes care only of short RFC 1345 forms. Module charname.c takes care of the full descriptive name for characters. */ /*----------------------------------------------------------------------. | Return an RFC 1345 short form in a CHARSET for a given UCS2 value, or | | NULL if this value has no such known short form. | `----------------------------------------------------------------------*/ const char * ucs2_to_rfc1345 (recode_ucs2 code) { int first = 0; int last = TABLE_LENGTH; while (first < last) { int middle = (first + last) / 2; const struct entry *entry = &table[middle]; if (entry->code < code) first = middle + 1; else if (entry->code > code) last = middle; else return entry->rfc1345; } return NULL; } /*---------------------------------------------------------------------. | Return an UCS-2 value, given an RFC 1345 short form in a CHARSET, or | | MASK (16) if the short form is unknown. | `---------------------------------------------------------------------*/ static recode_ucs2 rfc1345_to_ucs2 (const char *string) { int first = 0; int last = TABLE_LENGTH; while (first < last) { int middle = (first + last) / 2; const struct entry *entry = &table[inverse[middle]]; int value = strcmp (entry->rfc1345, string); if (value < 0) first = middle + 1; else if (value > 0) last = middle; else return entry->code; } return NOT_A_CHARACTER; } /* Steps. */ struct local { char intro; /* RFC 1345 intro character */ }; /*-----------------------------------------------. | Transform a whole file from UCS-2 to RFC1345. | `-----------------------------------------------*/ static bool transform_ucs2_rfc1345 (RECODE_SUBTASK subtask) { struct local *local = subtask->step->local; const char intro = local->intro; unsigned value; while (get_ucs2 (&value, subtask)) if (IS_ASCII (value)) if (value == intro) { put_byte (intro, subtask); put_byte (intro, subtask); } else put_byte (value, subtask); else { const char *string = ucs2_to_rfc1345 (value); if (!string || !string[0]) RETURN_IF_NOGO (RECODE_UNTRANSLATABLE, subtask); else if (!string[1]) put_byte (string[0], subtask); else if (!string[2]) { put_byte (intro, subtask); put_byte (string[0], subtask); put_byte (string[1], subtask); } else { const char *cursor = string; put_byte (intro, subtask); put_byte ('_', subtask); while (*cursor) { put_byte (*cursor, subtask); cursor++; } put_byte ('_', subtask); } } SUBTASK_RETURN (subtask); } /*-----------------------------------------------. | Transform a whole file from RFC1345 to UCS-2. | `-----------------------------------------------*/ static bool transform_rfc1345_ucs2 (RECODE_SUBTASK subtask) { struct local *local = subtask->step->local; const char intro = local->intro; int character; while (character = get_byte (subtask), character != EOF) if (character == intro) { character = get_byte (subtask); if (character == EOF) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); if (character == intro) put_ucs2 (intro, subtask); else if (character == '_') { char buffer[MAX_MNEMONIC_LENGTH + 1]; char *cursor = buffer; character = get_byte (subtask); while (true) if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } else if (character == '_') { recode_ucs2 value; *cursor = NUL; value = rfc1345_to_ucs2 (buffer); if (value == NOT_A_CHARACTER) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); else put_ucs2 (value, subtask); break; } else if (cursor == buffer + MAX_MNEMONIC_LENGTH) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } else { *cursor++ = character; character = get_byte (subtask); } } else { char buffer[3]; recode_ucs2 value; buffer[0] = character; character = get_byte (subtask); if (character == EOF) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); buffer[1] = character; buffer[2] = NUL; value = rfc1345_to_ucs2 (buffer); if (value == NOT_A_CHARACTER) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); else { if (IS_ASCII (value)) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); put_ucs2 (value, subtask); } } } else put_ucs2 (character, subtask); SUBTASK_RETURN (subtask); } /*-----------------------. | Initialise the steps. | `-----------------------*/ static bool init_rfc1345 (RECODE_CONST_REQUEST request, RECODE_STEP step, RECODE_CONST_OPTION_LIST options) { RECODE_OUTER outer = request->outer; struct local *local; if (!ALLOC (local, 1, struct local)) return false; local->intro = '&'; step->local = local; return true; } static bool init_ucs2_rfc1345 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (before_options) return false; return init_rfc1345 (request, step, after_options); } static bool init_rfc1345_ucs2 (RECODE_STEP step, RECODE_CONST_REQUEST request, RECODE_CONST_OPTION_LIST before_options, RECODE_CONST_OPTION_LIST after_options) { if (after_options) return false; return init_rfc1345 (request, step, before_options); } /*---------------------. | Declare the module. | `---------------------*/ bool module_rfc1345 (RECODE_OUTER outer) { return declare_single (outer, "ISO-10646-UCS-2", "RFC1345", outer->quality_variable_to_variable, init_ucs2_rfc1345, transform_ucs2_rfc1345) && declare_single (outer, "RFC1345", "ISO-10646-UCS-2", outer->quality_variable_to_variable, init_rfc1345_ucs2, transform_rfc1345_ucs2) && declare_alias (outer, "1345", "RFC1345") && declare_alias (outer, "mnemonic", "RFC1345"); } void delmodule_rfc1345 (RECODE_OUTER outer) { } recode-3.6/src/texinfo.c0100644000000000000000000000555307126660126013747 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static const unsigned short texinfo_data[] = { 160, '@', ' ', DONE, 161, '@', 'e', 'x', 'c', 'l', 'a', 'm', 'd', 'o', 'w', 'n', '{', '}', DONE, 171, '`', '`', DONE, 187, '\'', '\'', DONE, 191, '@', 'q', 'u', 'e', 's', 't', 'i', 'o', 'n', 'd', 'o', 'w', 'n', '{', '}', DONE, 192, '@', '`', 'A', DONE, 194, '@', '^', 'A', DONE, 196, '@', '"', 'A', DONE, 197, '@', 'A', 'A', '{', '}', DONE, 199, '@', ',', '{', 'C', '}', DONE, 200, '@', '`', 'E', DONE, 201, '@', '\'', 'E', DONE, 202, '@', '^', 'E', DONE, 203, '@', '"', 'E', DONE, 206, '@', '^', 'I', DONE, 207, '@', '"', 'I', DONE, 210, '@', '`', 'O', DONE, 212, '@', '^', 'O', DONE, 214, '@', '"', 'O', DONE, 216, '@', 'O', '{', '}', DONE, 217, '@', '`', 'U', DONE, 219, '@', '^', 'U', DONE, 220, '@', '"', 'U', DONE, 223, '@', 's', 's', '{', '}', DONE, 224, '@', '`', 'a', DONE, 226, '@', '^', 'a', DONE, 228, '@', '"', 'a', DONE, 229, '@', 'a', 'a', '{', '}', DONE, 231, '@', ',', '{', 'c', '}', DONE, 232, '@', '`', 'e', DONE, 233, '@', '\'', 'e', DONE, 234, '@', '^', 'e', DONE, 235, '@', '"', 'e', DONE, 236, '@', '`', 'i', DONE, 237, '@', '\'', 'i', DONE, 238, '@', '^', '{', '@', 'd', 'o', 't', 'l', 'e', 's', 's', '{', 'i', '}', '}', DONE, 239, '@', '"', '{', '@', 'd', 'o', 't', 'l', 'e', 's', 's', '{', 'i', '}', '}', DONE, 242, '@', '`', 'o', DONE, 244, '@', '^', 'o', DONE, 246, '@', '"', 'o', DONE, 249, '@', '`', 'u', DONE, 251, '@', '^', 'u', DONE, 252, '@', '"', 'u', DONE, DONE }; bool module_texinfo (RECODE_OUTER outer) { return declare_explode_data (outer, texinfo_data, "Latin-1", "Texinfo") && declare_alias (outer, "texi", "Texinfo") && declare_alias (outer, "ti", "Texinfo"); } void delmodule_texinfo (RECODE_OUTER outer) { } recode-3.6/src/base64.c0100644000000000000000000001625307126660163013357 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include "base64.h" /* Table of characters coding the 64 values. */ char base64_value_to_char[64] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', /* 0- 9 */ 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', /* 10-19 */ 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', /* 20-29 */ 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', /* 30-39 */ 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', /* 40-49 */ 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', /* 50-59 */ '8', '9', '+', '/' /* 60-63 */ }; /* Table of base64 values for first 128 characters. */ #define z -1 short base64_char_to_value[128] = { z, z, z, z, z, z, z, z, z, z, /* 0- 9 */ z, z, z, z, z, z, z, z, z, z, /* 10- 19 */ z, z, z, z, z, z, z, z, z, z, /* 20- 29 */ z, z, z, z, z, z, z, z, z, z, /* 30- 39 */ z, z, z, 62, z, z, z, 63, 52, 53, /* 40- 49 */ 54, 55, 56, 57, 58, 59, 60, 61, z, z, /* 50- 59 */ z, z, z, z, z, 0, 1, 2, 3, 4, /* 60- 69 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 70- 79 */ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, /* 80- 89 */ 25, z, z, z, z, z, z, 26, 27, 28, /* 90- 99 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, /* 100-109 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, /* 110-119 */ 49, 50, 51, z, z, z, z, z /* 120-127 */ }; #undef z /* The following diagram shows the logical steps by which three octets get transformed into eight Base64 characters. It helps understanding shifts and masks in the transformation functions. .--------. .--------. .--------. |aaaaaabb| |bbbbcccc| |ccdddddd| `--------' `--------' `--------' 6 2 4 4 2 6 .--------+--------+--------+--------. |00aaaaaa|00bbbbbb|00cccccc|00dddddd| `--------+--------+--------+--------' .--------+--------+--------+--------. |AAAAAAAA|BBBBBBBB|CCCCCCCC|DDDDDDDD| `--------+--------+--------+--------' The octets are divided into 6 bit chunks, which are then encoded into Base64 characters. */ static bool transform_data_base64 (RECODE_SUBTASK subtask) { int counter; int character; unsigned value; counter = 0; while (true) { character = get_byte (subtask); if (character == EOF) break; /* Wrap line every 76 characters. */ if (counter < MIME_LINE_LENGTH / 4) counter++; else { put_byte ('\n', subtask); counter = 1; } /* Process first byte of a triplet. */ put_byte (base64_value_to_char[MASK (6) & character >> 2], subtask); value = (MASK (2) & character) << 4; /* Process second byte of a triplet. */ character = get_byte (subtask); if (character == EOF) { put_byte (base64_value_to_char[value], subtask); put_byte ('=', subtask); put_byte ('=', subtask); break; } put_byte (base64_value_to_char[value | (MASK (4) & character >> 4)], subtask); value = (MASK (4) & character) << 2; /* Process third byte of a triplet. */ character = get_byte (subtask); if (character == EOF) { put_byte (base64_value_to_char[value], subtask); put_byte ('=', subtask); break; } put_byte (base64_value_to_char[value | (MASK (2) & character >> 6)], subtask); put_byte (base64_value_to_char[MASK (6) & character], subtask); } /* Complete last partial line. */ if (counter > 0) put_byte ('\n', subtask); SUBTASK_RETURN (subtask); } static bool transform_base64_data (RECODE_SUBTASK subtask) { int counter = 0; int character; unsigned value; while (true) { /* Accept wrapping lines, reversibly if at each 76 characters. */ character = get_byte (subtask); if (character == EOF) { if (counter != 0) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); SUBTASK_RETURN (subtask); } if (character == '\n') { if (counter != MIME_LINE_LENGTH / 4) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; continue; } if (character == '\r') { RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; continue; } /* Process first byte of a quadruplet. */ counter++; if (IS_BASE64 (character)) value = base64_char_to_value[character] << 18; else { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); value = 0; } /* Process second byte of a quadruplet. */ character = get_byte (subtask); if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); SUBTASK_RETURN (subtask); } if (IS_BASE64 (character)) value |= base64_char_to_value[character] << 12; else RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (value >> 16, subtask); /* Process third byte of a quadruplet. */ character = get_byte (subtask); if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); SUBTASK_RETURN (subtask); } if (character == '=') { character = get_byte (subtask); if (character != '=') RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); continue; } if (IS_BASE64 (character)) value |= base64_char_to_value[character] << 6; else RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (MASK (8) & value >> 8, subtask); /* Process fourth byte of a quadruplet. */ character = get_byte (subtask); if (character == EOF) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); SUBTASK_RETURN (subtask); } if (character == '=') continue; if (IS_BASE64 (character)) value |= base64_char_to_value[character]; else RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (MASK (8) & value, subtask); } } bool module_base64 (RECODE_OUTER outer) { return declare_single (outer, "data", "Base64", outer->quality_variable_to_variable, NULL, transform_data_base64) && declare_single (outer, "Base64", "data", outer->quality_variable_to_variable, NULL, transform_base64_data) && declare_alias (outer, "b64", "Base64") && declare_alias (outer, "64", "Base64"); } void delmodule_base64 (RECODE_OUTER outer) { } recode-3.6/src/dump.c0100644000000000000000000003102707126660161013232 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1997, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /* Constants for the possible bases. If these are reordered, so should be the initialisers for the three tables which follow. */ enum base { OCTAL, DECIMAL, HEXADECIMAL }; /* Printing format to use, depending on both the base and the actual number of bytes. The zero byte case is unused. */ static const char *format_table[3][5] = {{ NULL, "0%03o", "0%06o", "0%08o", "0%011o" }, { NULL, "%3u", "%5u", "%8u", "%10u" }, { NULL, "0x%02X", "0x%04X", "0x%06X", "0x%08X" }}; /* Number of active digits to expect, depending on both the base and the actual number of bytes. The zero byte case is unused. The values do not include the `0' octal prefix nor the `0x' for hexadecimal. */ static unsigned width_table[3][5] = {{ 0, 3, 6, 8, 11 }, { 0, 3, 5, 8, 10 }, { 0, 2, 4, 6, 8 }}; /* Number of printed values per output line, depending on both the base and the actual number of bytes. The zero byte case is unused. The three byte case is also unused, even if the table offers a value for it. */ static unsigned per_line_table[3][5] = {{ 0, 12, 8, 6, 4 }, { 0, 15, 10, 7, 5 }, { 0, 12, 8, 7, 6 }}; static bool dump (RECODE_SUBTASK subtask, enum base base, unsigned size) { unsigned per_line = per_line_table[base][size]; unsigned column = 0; int character = get_byte (subtask); while (character != EOF) { unsigned value = MASK (8) & character; unsigned byte_count; char buffer[14]; const char *cursor; for (byte_count = 1; byte_count < size; byte_count++) { character = get_byte (subtask); if (character == EOF) break; value = (value << 8) | (MASK (8) & character); } /* Write delimiters. */ if (column == per_line) { put_byte (',', subtask); put_byte ('\n', subtask); column = 1; } else if (column == 0) column = 1; else { put_byte (',', subtask); put_byte (' ', subtask); column++; } /* Write formatted value. */ sprintf (buffer, format_table[base][byte_count], value); for (cursor = buffer; *cursor; cursor++) put_byte (*cursor, subtask); /* Prepare for next iteration. */ if (character != EOF) character = get_byte (subtask); } put_byte ('\n', subtask); SUBTASK_RETURN (subtask); } static bool undump (RECODE_SUBTASK subtask, enum base expected_base, unsigned expected_size) { unsigned per_line = per_line_table[expected_base][expected_size]; unsigned column = 0; int character = get_byte (subtask); bool last_is_short = false; bool comma_on_last = character != EOF; while (character != EOF) { unsigned width = 0; unsigned value = 0; enum base base; unsigned size; /* Skip whitespace. But count it, in case of a decimal number. */ while (character == ' ' || character == '\t' || character =='\n') { if (character == ' ') width++; else RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); character = get_byte (subtask); } if (character == EOF) { if (width != 0) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); break; } /* Decide the base for the incoming character, possibly abort the recoding if not the proper base. */ if (character == '0') { character = get_byte (subtask); if (character == 'x') { if (width != 0) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); width = 0; base = HEXADECIMAL; character = get_byte (subtask); } else if (character >= '0' && character <= '9') { /* If followed by 8 or 9, declare it octal nevertheless. It is the proper thing to do, a reject might occur below. */ if (width != 0) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); width = 0; base = OCTAL; } else { /* Otherwise, this is a simple, mere, happy decimal zero. */ width++; base = DECIMAL; } } else if (character >= '1' && character <= '9') base = DECIMAL; else { /* This might be some other line of a C header. Merely skip the line. FIXME: This should probably skip multi-line comments or string constants, so to not get fooled by them. */ RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); while (character != '\n' && character != EOF) character = get_byte (subtask); if (character == '\n') character = get_byte (subtask); continue; } if (base != expected_base) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); /* Decode one value. */ switch (base) { case OCTAL: while (character >= '0' && character <= '7') { value = (value << 3) | (character - '0'); width++; character = get_byte (subtask); } break; case DECIMAL: while (character >= '0' && character <= '9') { value = value * 10 + character - '0'; width++; character = get_byte (subtask); } break; case HEXADECIMAL: while (true) if (character >= '0' && character <= '9') { value = (value << 4) | (character - '0'); width++; character = get_byte (subtask); } else if (character >= 'A' && character <= 'F') { value = (value << 4) | (character - 'A' + 10); width++; character = get_byte (subtask); } else if (character >= 'a' && character <= 'f') { value = (value << 4) | (character - 'a' + 10); width++; character = get_byte (subtask); } else break; break; } if (width == 0 || width > width_table[base][expected_size]) { /* If the observed width is greater than expected, the input is invalid, even if the value is in range. */ RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); } else { if (last_is_short) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); if (!comma_on_last) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); /* Decide how many bytes to produce. */ last_is_short = width < width_table[base][expected_size]; if (last_is_short) { /* If the observed width is smaller than expected, accept the value as representing less than the expected number of bytes. However, the width has to match very exactly. */ for (size = 1; size < 4; size++) if (width_table[base][size] == width) break; if (size == 4) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); continue; } } else size = expected_size; /* Produce the output bytes. */ { unsigned shift; for (shift = size * 8; shift != 0; shift -= 8) put_byte (MASK (8) & value >> (shift - 8), subtask); } } /* Skip separators. */ comma_on_last = character == ','; if (!comma_on_last) { if (character == '\n') character = get_byte (subtask); else RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); } else { character = get_byte (subtask); if (character == ' ') { column++; character = get_byte (subtask); } else if (character == '\n') { if (column + 1!= per_line) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); column = 0; character = get_byte (subtask); } } } if (comma_on_last) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); SUBTASK_RETURN (subtask); } #define TRANSFORM(Name, Service, Base, Size) \ static bool \ Name (RECODE_SUBTASK subtask) \ { \ return Service (subtask, Base, Size); \ } TRANSFORM (data_oct1, dump, OCTAL, 1) TRANSFORM (data_dec1, dump, DECIMAL, 1) TRANSFORM (data_hex1, dump, HEXADECIMAL, 1) TRANSFORM (data_oct2, dump, OCTAL, 2) TRANSFORM (data_dec2, dump, DECIMAL, 2) TRANSFORM (data_hex2, dump, HEXADECIMAL, 2) TRANSFORM (data_oct4, dump, OCTAL, 4) TRANSFORM (data_dec4, dump, DECIMAL, 4) TRANSFORM (data_hex4, dump, HEXADECIMAL, 4) TRANSFORM (oct1_data, undump, OCTAL, 1) TRANSFORM (dec1_data, undump, DECIMAL, 1) TRANSFORM (hex1_data, undump, HEXADECIMAL, 1) TRANSFORM (oct2_data, undump, OCTAL, 2) TRANSFORM (dec2_data, undump, DECIMAL, 2) TRANSFORM (hex2_data, undump, HEXADECIMAL, 2) TRANSFORM (oct4_data, undump, OCTAL, 4) TRANSFORM (dec4_data, undump, DECIMAL, 4) TRANSFORM (hex4_data, undump, HEXADECIMAL, 4) bool module_dump (RECODE_OUTER outer) { /* Single bytes. */ if (!declare_single (outer, "data", "Octal-1", outer->quality_variable_to_variable, NULL, data_oct1)) return false; if (!declare_single (outer, "data", "Decimal-1", outer->quality_variable_to_variable, NULL, data_dec1)) return false; if (!declare_single (outer, "data", "Hexadecimal-1", outer->quality_variable_to_variable, NULL, data_hex1)) return false; if (!declare_single (outer, "Octal-1", "data", outer->quality_variable_to_variable, NULL, oct1_data)) return false; if (!declare_single (outer, "Decimal-1", "data", outer->quality_variable_to_variable, NULL, dec1_data)) return false; if (!declare_single (outer, "Hexadecimal-1", "data", outer->quality_variable_to_variable, NULL, hex1_data)) return false; if (!declare_alias (outer, "o1", "Octal-1")) return false; if (!declare_alias (outer, "d1", "Decimal-1")) return false; if (!declare_alias (outer, "x1", "Hexadecimal-1")) return false; if (!declare_alias (outer, "o", "Octal-1")) return false; if (!declare_alias (outer, "d", "Decimal-1")) return false; if (!declare_alias (outer, "x", "Hexadecimal-1")) return false; /* Double bytes. */ if (!declare_single (outer, "data", "Octal-2", outer->quality_variable_to_variable, NULL, data_oct2)) return false; if (!declare_single (outer, "data", "Decimal-2", outer->quality_variable_to_variable, NULL, data_dec2)) return false; if (!declare_single (outer, "data", "Hexadecimal-2", outer->quality_variable_to_variable, NULL, data_hex2)) return false; if (!declare_single (outer, "Octal-2", "data", outer->quality_variable_to_variable, NULL, oct2_data)) return false; if (!declare_single (outer, "Decimal-2", "data", outer->quality_variable_to_variable, NULL, dec2_data)) return false; if (!declare_single (outer, "Hexadecimal-2", "data", outer->quality_variable_to_variable, NULL, hex2_data)) return false; if (!declare_alias (outer, "o2", "Octal-2")) return false; if (!declare_alias (outer, "d2", "Decimal-2")) return false; if (!declare_alias (outer, "x2", "Hexadecimal-2")) return false; /* Quadruple bytes. */ if (!declare_single (outer, "data", "Octal-4", outer->quality_variable_to_variable, NULL, data_oct4)) return false; if (!declare_single (outer, "data", "Decimal-4", outer->quality_variable_to_variable, NULL, data_dec4)) return false; if (!declare_single (outer, "data", "Hexadecimal-4", outer->quality_variable_to_variable, NULL, data_hex4)) return false; if (!declare_single (outer, "Octal-4", "data", outer->quality_variable_to_variable, NULL, oct4_data)) return false; if (!declare_single (outer, "Decimal-4", "data", outer->quality_variable_to_variable, NULL, dec4_data)) return false; if (!declare_single (outer, "Hexadecimal-4", "data", outer->quality_variable_to_variable, NULL, hex4_data)) return false; if (!declare_alias (outer, "o4", "Octal-4")) return false; if (!declare_alias (outer, "d4", "Decimal-4")) return false; if (!declare_alias (outer, "x4", "Hexadecimal-4")) return false; return true; } void delmodule_dump (RECODE_OUTER outer) { } recode-3.6/src/endline.c0100644000000000000000000000776407126660075013722 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #define CR 13 /* carriage return */ #define LF 10 /* line feed */ #define OLD_EOF 26 /* oldish end of file */ static bool transform_data_cr (RECODE_SUBTASK subtask) { bool strict = subtask->step->fallback_routine != reversibility; int character; while (character = get_byte (subtask), character != EOF) switch (character) { case '\n': put_byte (CR, subtask); break; case CR: if (!strict) { put_byte ('\n', subtask); break; } RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); /* Fall through. */ default: put_byte (character, subtask); } SUBTASK_RETURN (subtask); } static bool transform_cr_data (RECODE_SUBTASK subtask) { bool strict = subtask->step->fallback_routine != reversibility; int character; while (character = get_byte (subtask), character != EOF) switch (character) { case CR: put_byte ('\n', subtask); break; case '\n': if (!strict) { put_byte (CR, subtask); break; } RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); /* Fall through. */ default: put_byte (character, subtask); } SUBTASK_RETURN (subtask); } static bool transform_data_crlf (RECODE_SUBTASK subtask) { int character = get_byte (subtask); while (character != EOF) switch (character) { case '\n': put_byte (CR, subtask); put_byte (LF, subtask); character = get_byte (subtask); break; case CR: character = get_byte (subtask); if (character == LF) RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); put_byte (CR, subtask); break; case OLD_EOF: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); /* Fall through. */ default: put_byte (character, subtask); character = get_byte (subtask); } SUBTASK_RETURN (subtask); } static bool transform_crlf_data (RECODE_SUBTASK subtask) { int character = get_byte (subtask); while (character != EOF) switch (character) { case OLD_EOF: RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); SUBTASK_RETURN (subtask); case CR: character = get_byte (subtask); if (character == LF) { put_byte ('\n', subtask); character = get_byte (subtask); } else put_byte (CR, subtask); break; case LF: RETURN_IF_NOGO (RECODE_AMBIGUOUS_OUTPUT, subtask); /* Fall through. */ default: put_byte (character, subtask); character = get_byte (subtask); } SUBTASK_RETURN (subtask); } bool module_endline (RECODE_OUTER outer) { return declare_single (outer, "data", "CR", outer->quality_byte_to_byte, NULL, transform_data_cr) && declare_single (outer, "CR", "data", outer->quality_byte_to_byte, NULL, transform_cr_data) && declare_single (outer, "data", "CR-LF", outer->quality_byte_to_variable, NULL, transform_data_crlf) && declare_single (outer, "CR-LF", "data", outer->quality_variable_to_byte, NULL, transform_crlf_data) && declare_alias (outer, "cl", "CR-LF"); } void delmodule_endline (RECODE_OUTER outer) { } recode-3.6/src/permut.c0100644000000000000000000000571307126660066013610 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1997, 98, 99, 00 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by François Pinard , 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static bool permute_21 (RECODE_SUBTASK subtask) { int character1; int character2; while (true) { character1 = get_byte (subtask); if (character1 == EOF) break; character2 = get_byte (subtask); if (character2 == EOF) { put_byte (character1, subtask); break; } put_byte (character2, subtask); put_byte (character1, subtask); } SUBTASK_RETURN (subtask); } static bool permute_4321 (RECODE_SUBTASK subtask) { int character1; int character2; int character3; int character4; while (true) { character1 = get_byte (subtask); if (character1 == EOF) break; character2 = get_byte (subtask); if (character2 == EOF) { put_byte (character1, subtask); break; } character3 = get_byte (subtask); if (character3 == EOF) { put_byte (character2, subtask); put_byte (character1, subtask); break; } character4 = get_byte (subtask); if (character4 == EOF) { put_byte (character3, subtask); put_byte (character2, subtask); put_byte (character1, subtask); break; } put_byte (character4, subtask); put_byte (character3, subtask); put_byte (character2, subtask); put_byte (character1, subtask); } SUBTASK_RETURN (subtask); } bool module_permutations (RECODE_OUTER outer) { return declare_single (outer, "data", "21-Permutation", outer->quality_variable_to_variable, NULL, permute_21) && declare_single (outer, "21-Permutation", "data", outer->quality_variable_to_variable, NULL, permute_21) && declare_single (outer, "data", "4321-Permutation", outer->quality_variable_to_variable, NULL, permute_4321) && declare_single (outer, "4321-Permutation", "data", outer->quality_variable_to_variable, NULL, permute_4321) && declare_alias (outer, "swabytes", "21-Permutation"); } void delmodule_permutations (RECODE_OUTER outer) { } recode-3.6/src/quoted.c0100644000000000000000000002302007126660063013561 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1996, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" static const bool bitnet_flag = false; /* Maximum number of characters per MIME line. */ #define MIME_LINE_LENGTH 76 /* Characters from 33 to 60 inclusive and from 62 to 126 inclusive do not need be quoted. */ static const char safe_char_usual[1 << 7] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0- 15 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 16- 31 */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32- 47 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, /* 48- 63 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 64- 79 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 80- 95 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 96-111 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 /* 112-127 */ }; /* In a Bitnet environment, also quote: ! " # $ @ [ \ ] ^ ` { | } ~ */ static const char safe_char_bitnet[1 << 7] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0- 15 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 16- 31 */ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 32- 47 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, /* 48- 63 */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 64- 79 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 80- 95 */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 96-111 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 /* 112-127 */ }; #define PUT_QUOTED(Character) \ do { \ unsigned nibble; \ \ put_byte ('=', subtask); \ nibble = MASK (4) & (Character) >> 4; \ put_byte ((nibble < 10 ? '0' : 'A' - 10) + nibble, subtask); \ nibble = MASK (4) & (Character); \ put_byte ((nibble < 10 ? '0' : 'A' - 10) + nibble, subtask); \ } while (false) static bool transform_data_quoted_printable (RECODE_SUBTASK subtask) { const char *safe_char = bitnet_flag ? safe_char_bitnet : safe_char_usual; unsigned available = MIME_LINE_LENGTH; int character = get_byte (subtask); int next_character; /* Proper maximum filling of quoted-printable lines, avoiding a line buffer nor much look-ahead, is a bit trickier than I initially expected. */ while (character != EOF) if (!(character & (1 << 7)) && safe_char[character]) /* Case of a safe character. */ if (available > 1) { put_byte (character, subtask); available--; character = get_byte (subtask); } else { next_character = get_byte (subtask); if (next_character == '\n') { put_byte (character, subtask); put_byte ('\n', subtask); available = MIME_LINE_LENGTH; character = get_byte (subtask); } else if (next_character == EOF) { put_byte (character, subtask); available--; character = EOF; } else { put_byte ('=', subtask); put_byte ('\n', subtask); put_byte (character, subtask); available = MIME_LINE_LENGTH - 1; character = next_character; } } else switch (character) { case '\n': /* Case of a newline. */ put_byte ('\n', subtask); available = MIME_LINE_LENGTH; character = get_byte (subtask); break; case '\t': case ' ': /* Case of a space character. */ next_character = get_byte (subtask); if (next_character == '\n') { if (available < 3) { put_byte ('=', subtask); put_byte ('\n', subtask); } PUT_QUOTED (character); put_byte ('\n', subtask); available = MIME_LINE_LENGTH; character = get_byte (subtask); } else if (next_character == EOF) { if (available < 3) { put_byte ('=', subtask); put_byte ('\n', subtask); available = MIME_LINE_LENGTH; } PUT_QUOTED (character); available--; character = EOF; } else { if (available == 1) { put_byte ('=', subtask); put_byte ('\n', subtask); available = MIME_LINE_LENGTH; } put_byte (character, subtask); available--; character = next_character; } break; default: /* Case of an inconditional quotable character. */ if (available > 3) { PUT_QUOTED (character); available -= 3; character = get_byte (subtask); } else { next_character = get_byte (subtask); if (available == 3 && next_character == '\n') { PUT_QUOTED (character); put_byte ('\n', subtask); available = MIME_LINE_LENGTH; character = get_byte (subtask); } else if (next_character == EOF) { PUT_QUOTED (character); available--; character = EOF; } else { put_byte ('=', subtask); put_byte ('\n', subtask); PUT_QUOTED (character); available = MIME_LINE_LENGTH - 3; character = next_character; } } } if (available != MIME_LINE_LENGTH) { /* The last line was incomplete. */ put_byte ('=', subtask); put_byte ('\n', subtask); } SUBTASK_RETURN (subtask); } static bool transform_quoted_printable_data (RECODE_SUBTASK subtask) { const char *safe_char = bitnet_flag ? safe_char_bitnet : safe_char_usual; unsigned counter = 0; int character = get_byte (subtask); char buffer[MIME_LINE_LENGTH + 1]; char *cursor; unsigned value; while (character != EOF) switch (character) { case '\n': /* Process hard line break. */ if (counter > MIME_LINE_LENGTH) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; put_byte ('\n', subtask); character = get_byte (subtask); break; case ' ': case '\t': /* Process white space. */ cursor = buffer; while (character == ' ' || character == '\t') { if (cursor == buffer + MIME_LINE_LENGTH) { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); for (cursor = buffer; cursor < buffer + MIME_LINE_LENGTH; cursor++) put_byte (*cursor, subtask); } counter++; *cursor++ = character; character = get_byte (subtask); } if (character == '\n' || character == EOF) { RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; break; } *cursor = '\0'; for (cursor = buffer; *cursor; cursor++) put_byte (*cursor, subtask); break; case '=': counter++; character = get_byte (subtask); if (character == ' ' || character == '\t' || character == '\n') { /* Process soft line break. */ if (character == ' ' || character == '\t') { RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); while (character == ' ' || character == '\t') { counter++; character = get_byte (subtask); } } if (character != '\n') { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } if (counter > MIME_LINE_LENGTH) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); counter = 0; character = get_byte (subtask); break; } /* Process quoted value. */ counter++; if (character >= '0' && character <= '9') value = (character - '0') << 4; else if (character >= 'a' && character <= 'f') value = (character - 'a' + 10) << 4; else if (character >= 'A' && character <= 'F') value = (character - 'A' + 10) << 4; else { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } character = get_byte (subtask); counter++; if (character >= '0' && character <= '9') value |= character - '0'; else if (character >= 'a' && character <= 'f') value |= character - 'a' + 10; else if (character >= 'A' && character <= 'F') value |= character - 'A' + 10; else { RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); break; } if (!(value & (1 << 7)) && safe_char[value]) RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); put_byte (value, subtask); character = get_byte (subtask); break; default: /* Process safe character. */ counter++; if (character & (1 << 7) || !safe_char[character]) RETURN_IF_NOGO (RECODE_INVALID_INPUT, subtask); put_byte (character, subtask); character = get_byte (subtask); } if (counter != 0) /* Last line is not terminated. */ RETURN_IF_NOGO (RECODE_NOT_CANONICAL, subtask); SUBTASK_RETURN (subtask); } bool module_quoted_printable (RECODE_OUTER outer) { return declare_single (outer, "data", "Quoted-Printable", outer->quality_variable_to_variable, NULL, transform_data_quoted_printable) && declare_single (outer, "Quoted-Printable", "data", outer->quality_variable_to_variable, NULL, transform_quoted_printable_data) && declare_alias (outer, "quote-printable", "Quoted-Printable") && declare_alias (outer, "QP", "Quoted-Printable"); } void delmodule_quoted_printable (RECODE_OUTER outer) { } recode-3.6/src/main.c0100644000000000000000000006432707213513473013222 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. François Pinard , 1990. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" #include #include #include #include "getopt.h" #if HAVE_UNISTD_H # include #endif #if HAVE_STRUCT_UTIMBUF # if HAVE_UTIME_H # include # endif #else struct utimbuf { time_t actime; time_t modtime; }; #endif #include #if OS2 # include # include #endif /* Variables. */ /* The name this program was run with. */ const char *program_name; /* If nonzero, display usage information and exit. */ static int show_help = 0; /* If nonzero, print the version on standard output and exit. */ static int show_version = 0; /* If true, show a list of one or all known charsets, then exit. */ static bool show_symbols = false; /* If true, dump all tables as a big C module. */ static bool freeze_tables = false; /* If true, check all charsets for subsets, then exit. */ static bool find_subsets = false; /* User provided list of charset restrictions (option -k). */ static const char *charset_restrictions = NULL; /* Indicates the format for showing only one charset. */ enum recode_list_format list_format = RECODE_NO_FORMAT; /* Table name in generated language code. */ static const char *header_name; /* Language to use for generated code. */ static enum recode_programming_language header_language; /* This option asks recode to report the progress while recoding many files in a single call. */ static bool verbose_flag = false; /* This option merely inhibits messages about non-reversible recodings, but it does not prevent recodings to be aborted or exit status to be set. */ static bool quiet_flag = false; /* If the recoding yields some problems in reversibility in some file, this file replacement is denied and it is left unrecoded or, if recode is used as a mere filter, the recoding is interrupted. The following flag forces the recoding to run to completion and the replacement to be done even if the recoding is not reversible. */ static bool force_flag = false; /* When a file is recoded over itself, precautions are taken to move the timestamps of the original file into the recoded file, so to make the recoding the most transparent possible to make, and other tools. However, selecting the following option inhibit the timestamps handling, thus effectively `touching' the file. */ bool touch_option = false; /* With strict mapping, all reversibility fallbacks get defeated. */ bool strict_mapping = false; /* The following charset name will be ignored, if given. */ static const char *ignored_name = NULL; #if 0 /* Unabridged names of BEFORE and AFTER charsets, even if still aliases. These are used for naming the array in produced C code. */ static const char *before_full_name; static const char *after_full_name; #endif /* Ordinals of list, BEFORE and AFTER charset. */ static RECODE_SYMBOL list_charset; #if 0 static RECODE_SYMBOL before_charset; static RECODE_SYMBOL after_charset; #endif /* Flag telling usage that we are decoding charsets. */ bool decoding_charset_flag = false; /* Error handling. */ /*-------------------------------------------------. | Produce a message explaining the error in TASK. | `-------------------------------------------------*/ static const char * task_perror (RECODE_CONST_TASK task) { switch (task->error_so_far) { case RECODE_NO_ERROR: return _("No error"); case RECODE_NOT_CANONICAL: return _("Non canonical input"); case RECODE_AMBIGUOUS_OUTPUT: return _("Ambiguous output"); case RECODE_UNTRANSLATABLE: return _("Untranslatable input"); case RECODE_INVALID_INPUT: return _("Invalid input"); case RECODE_SYSTEM_ERROR: return _("System detected problem"); case RECODE_USER_ERROR: return _("Misuse of recoding library"); default: return _("Internal recoding bug"); } } /*-----------------. | Signal handler. | `-----------------*/ #if FIXME static jmp_buf signal_label; /* where to jump when signal received */ #endif static bool interrupted = 0; /* set when some signal has been received */ static RETSIGTYPE signal_handler (int number) { interrupted = 1; signal (number, signal_handler); } /*------------------------------------------------------------------------. | Prepare to handle signals, intercept willingful requests for stopping. | `------------------------------------------------------------------------*/ static void setup_signals (void) { #ifdef SIGPIPE signal (SIGPIPE, signal_handler); #endif #if 0 signal (SIGINT, signal_handler); signal (SIGTERM, signal_handler); #endif } /* Main control. */ /*-----------------------------------. | Prints a more detailed Copyright. | `-----------------------------------*/ static void print_copyright (void) { fputs (_("\ This program is free software; you can redistribute it and/or modify\n\ it under the terms of the GNU General Public License as published by\n\ the Free Software Foundation; either version 2, or (at your option)\n\ any later version.\n\ \n\ This program is distributed in the hope that it will be useful,\n\ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\ GNU General Public License for more details.\n\ \n\ You should have received a copy of the GNU General Public License\n\ along with this program; if not, write to the Free Software Foundation,\n\ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"), stdout); } /*-----------------------------------------------. | Explain how to use the program, then get out. | `-----------------------------------------------*/ static void usage (int status, bool list) { if (status != EXIT_SUCCESS) fprintf (stderr, _("Try `%s %s' for more information.\n"), program_name, list ? "--list" : "--help"); else { fputs (_("\ Free `recode' converts files between various character sets and surfaces.\n\ "), stdout); printf (_("\ \n\ Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"), program_name); fputs (_("\ \n\ If a long option shows an argument as mandatory, then it is mandatory\n\ for the equivalent short option also. Similarly for optional arguments.\n\ "), stdout); fputs (_("\ \n\ Listings:\n\ -l, --list[=FORMAT] list one or all known charsets and aliases\n\ -k, --known=PAIRS restrict charsets according to known PAIRS list\n\ -h, --header[=[LN/]NAME] write table NAME on stdout using LN, then exit\n\ -F, --freeze-tables write out a C module holding all tables\n\ -T, --find-subsets report all charsets being subset of others\n\ -C, --copyright display Copyright and copying conditions\n\ --help display this help and exit\n\ --version output version information and exit\n\ "), stdout); fputs (_("\ \n\ Operation modes:\n\ -v, --verbose explain sequence of steps and report progress\n\ -q, --quiet, --silent inhibit messages about irreversible recodings\n\ -f, --force force recodings even when not reversible\n\ -t, --touch touch the recoded files after replacement\n\ -i, --sequence=files use intermediate files for sequencing passes\n\ --sequence=memory use memory buffers for sequencing passes\n\ "), stdout); #if HAVE_PIPE fputs (_("\ -p, --sequence=pipe use pipe machinery for sequencing passes\n\ "), stdout); #else fputs (_("\ -p, --sequence=pipe same as -i (on this system)\n\ "), stdout); #endif fputs (_("\ \n\ Fine tuning:\n\ -s, --strict use strict mappings, even loose characters\n\ -d, --diacritics convert only diacritics or alike for HTML/LaTeX\n\ -S, --source[=LN] limit recoding to strings and comments as for LN\n\ -c, --colons use colons instead of double quotes for diaeresis\n\ -g, --graphics approximate IBMPC rulers by ASCII graphics\n\ -x, --ignore=CHARSET ignore CHARSET while choosing a recoding path\n\ "), stdout); fputs (_("\ \n\ Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n\ FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n\ "), stdout); fputs (_("\ Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale\n\ dependent encoding, determined by LC_ALL, LC_CTYPE, LANG.\n\ "), stdout); fputs (_("\ With -k, possible before charsets are listed for the given after CHARSET,\n\ both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n\ and BEFs and AFTs being codes are given as decimal numbers.\n"), stdout); fputs (_("\ LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"), stdout); fputs (_("\ \n\ REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n\ ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n\ with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual\n\ charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n\ with an empty surface name means no surfaces at all. See the manual.\n"), stdout); fputs (_("\ \n\ If none of -i and -p are given, presume -p if no FILE, else -i.\n\ Each FILE is recoded over itself, destroying the original. If no\n\ FILE is specified, then act as a filter and recode stdin to stdout.\n"), stdout); fputs (_("\ \n\ Report bugs to .\n"), stdout); } exit (status); } /*----------------------------------------------------------------------. | Main program. Decode ARGC arguments passed through the ARGV array of | | strings, then launch execution. | `----------------------------------------------------------------------*/ /* Long options equivalences. */ static const struct option long_options[] = { {"colons", no_argument, NULL, 'c'}, {"copyright", no_argument, NULL, 'C'}, {"diacritics", no_argument, NULL, 'd'}, {"find-subsets", no_argument, NULL, 'T'}, {"force", no_argument, NULL, 'f'}, {"freeze-tables", no_argument, NULL, 'F'}, {"header", optional_argument, NULL, 'h'}, {"help", no_argument, &show_help, 1}, {"ignore", required_argument, NULL, 'x'}, {"known", required_argument, NULL, 'k'}, {"list", optional_argument, NULL, 'l'}, {"quiet", no_argument, NULL, 'q'}, {"sequence", required_argument, NULL, '\n'}, {"source", optional_argument, NULL, 'S'}, {"silent", no_argument, NULL, 'q'}, {"strict", no_argument, NULL, 's'}, {"touch", no_argument, NULL, 't'}, {"verbose", no_argument, NULL, 'v'}, {"version", no_argument, &show_version, 1}, {0, 0, 0, 0}, }; static const char *const format_strings[] = { "decimal", "octal", "hexadecimal", "full", NULL }; static const char *const language_strings[] = { "c", "perl", "po", NULL }; static const char *const sequence_strings[] = { "memory", "files", "pipe", NULL }; int main (int argc, char *const *argv) { int option_char; /* option character */ bool success = true; /* reversibility of all recodings */ static bool (*processor) PARAMS ((RECODE_TASK)); struct recode_outer outer_option; struct recode_request request_option; struct recode_task task_option; RECODE_OUTER outer; RECODE_REQUEST request; program_name = argv[0]; /* libtool creates a temporary executable whose names is prefixed with "lt-". Remove this prefix here. */ if (strncmp (program_name, "lt-", 3) == 0) program_name += 3; setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); /* Decode command options. */ if (argc == 1) usage (EXIT_SUCCESS, 0); processor = recode_perform_task; memset (&outer_option, 0, sizeof (struct recode_outer)); memset (&request_option, 0, sizeof (struct recode_request)); memset (&task_option, 0, sizeof (struct recode_task)); request_option.diaeresis_char = '"'; task_option.strategy = RECODE_STRATEGY_UNDECIDED; task_option.fail_level = RECODE_AMBIGUOUS_OUTPUT; task_option.abort_level = RECODE_AMBIGUOUS_OUTPUT; while (option_char = getopt_long (argc, argv, "CFS::Tcdfgh::ik:l::pqstvx:", long_options, NULL), option_char != EOF) switch (option_char) { default: usage (EXIT_FAILURE, 0); case NUL: break; case '\n': switch (argmatch (optarg, sequence_strings, NULL, 0)) { case -2: error (0, 0, _("Sequence `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); case -1: error (0, 0, _("Sequence `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); case 0: task_option.strategy = RECODE_SEQUENCE_IN_MEMORY; break; case 1: task_option.strategy = RECODE_SEQUENCE_WITH_FILES; break; case 2: task_option.strategy = RECODE_SEQUENCE_WITH_PIPE; break; } break; case 'C': print_copyright (); exit (EXIT_SUCCESS); case 'F': freeze_tables = true; break; case 'S': if (optarg) switch (argmatch (optarg, language_strings, NULL, 0)) { case -2: error (0, 0, _("Language `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); default: /* -1 */ error (0, 0, _("Language `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); case 0: processor = transform_c_source; break; case 2: processor = transform_po_source; break; } else processor = transform_c_source; break; case 'T': find_subsets = true; break; case 'c': request_option.diaeresis_char = ':'; break; case 'd': request_option.diacritics_only = true; break; case 'f': task_option.fail_level = RECODE_SYSTEM_ERROR; task_option.abort_level = RECODE_USER_ERROR; break; case 'g': request_option.ascii_graphics = true; break; case 'h': request_option.make_header_flag = true; header_name = optarg ? strrchr (optarg, '/') : NULL; if (header_name) { char *buffer; unsigned counter; header_name++; buffer = (char *) xmalloc ((size_t) (header_name - optarg)); if (*header_name == NUL) header_name = NULL; for (counter = 0; optarg[counter] != '/'; counter++) buffer[counter] = tolower (optarg[counter]); buffer[counter] = NUL; switch (argmatch (buffer, language_strings, NULL, 0)) { case -2: error (0, 0, _("Language `%s' is ambiguous"), buffer); usage (EXIT_FAILURE, 0); default: /* -1 */ error (0, 0, _("Language `%s' is unknown"), buffer); usage (EXIT_FAILURE, 0); case 0: header_language = RECODE_LANGUAGE_C; break; case 1: header_language = RECODE_LANGUAGE_PERL; break; } free (buffer); } else { header_name = optarg; header_language = RECODE_LANGUAGE_C; } break; case 'i': task_option.strategy = RECODE_SEQUENCE_WITH_FILES; break; case 'k': charset_restrictions = optarg; break; case 'l': show_symbols = true; if (optarg) switch (argmatch (optarg, format_strings, NULL, 0)) { case -2: error (0, 0, _("Format `%s' is ambiguous"), optarg); usage (EXIT_FAILURE, 0); case -1: error (0, 0, _("Format `%s' is unknown"), optarg); usage (EXIT_FAILURE, 0); case 0: list_format = RECODE_DECIMAL_FORMAT; break; case 1: list_format = RECODE_OCTAL_FORMAT; break; case 2: list_format = RECODE_HEXADECIMAL_FORMAT; break; case 3: list_format = RECODE_FULL_FORMAT; break; } break; case 'p': task_option.strategy = RECODE_SEQUENCE_WITH_PIPE; break; case 'q': quiet_flag = true; break; case 's': strict_mapping = true; task_option.fail_level = RECODE_NOT_CANONICAL; task_option.abort_level = RECODE_NOT_CANONICAL; break; case 't': touch_option = true; break; case 'v': verbose_flag = true; request_option.verbose_flag = true; break; case 'x': ignored_name = optarg; break; } if (request_option.ascii_graphics) force_flag = true; /* Process trivial options. */ if (show_version) { printf ("Free %s %s\n", PACKAGE, VERSION); fputs (_("\ Written by Franc,ois Pinard .\n"), stdout); fputs (_("\ \n\ Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"), stdout); fputs (_("\ This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), stdout); exit (EXIT_SUCCESS); } if (show_help) usage (EXIT_SUCCESS, 0); /* Register all modules and build internal tables. */ outer = recode_new_outer (true); if (!outer) abort (); if (freeze_tables) { recode_freeze_tables (outer); exit (EXIT_SUCCESS); } /* Set strict mapping. */ if (strict_mapping) { RECODE_SINGLE single; for (single = outer->single_list; single; single = single->next) single->fallback_routine = NULL; } /* Set the ignored charset. */ if (ignored_name) { RECODE_ALIAS alias = find_alias (outer, ignored_name, ALIAS_FIND_AS_CHARSET); if (!alias) { error (0, 0, _("Symbol `%s' is unknown"), ignored_name); usage (EXIT_FAILURE, 1); } alias->symbol->ignore = true; } /* Process charset listing options. */ if (find_subsets) { if (find_and_report_subsets (outer)) exit (EXIT_SUCCESS); else exit (EXIT_FAILURE); } if (show_symbols || charset_restrictions) { if (charset_restrictions) if (!decode_known_pairs (outer, charset_restrictions)) { error (0, 0, "Could not understand `%s'", charset_restrictions); usage (EXIT_FAILURE, 0); } if (optind + 1 < argc) { error (0, 0, "Argument `%s' is extraneous", argv[optind]); usage (EXIT_FAILURE, 0); } /* Select a possible charset and a default format. */ if (optind < argc) { RECODE_ALIAS alias = find_alias (outer, argv[optind], ALIAS_FIND_AS_CHARSET); if (!alias) { error (0, 0, _("Charset `%s' is unknown or ambiguous"), argv[optind]); usage (EXIT_FAILURE, 1); } list_charset = alias->symbol; } else if (list_format != RECODE_NO_FORMAT || charset_restrictions) { RECODE_ALIAS alias = find_alias (outer, NULL, ALIAS_FIND_AS_CHARSET); if (!alias) { error (0, 0, _("Charset `%s' is unknown or ambiguous"), argv[optind]); usage (EXIT_FAILURE, 1); } list_charset = alias->symbol; } else list_charset = NULL; /* List the charset(s) appropriately. */ if (charset_restrictions) list_all_symbols (outer, list_charset); else if (list_charset) if (list_format == RECODE_FULL_FORMAT) list_full_charset (outer, list_charset); else list_concise_charset (outer, list_charset, list_format); else list_all_symbols (outer, NULL); /* Then get out. */ exit (EXIT_SUCCESS); } /* Decode the REQUEST argument. */ if (optind + 1 > argc) { error (0, 0, _("Required argument is missing")); usage (EXIT_FAILURE, 0); } request = recode_new_request (outer); request->ascii_graphics = request_option.ascii_graphics; request->diacritics_only = request_option.diacritics_only; request->diaeresis_char = request_option.diaeresis_char; request->make_header_flag = request_option.make_header_flag; request->verbose_flag = request_option.verbose_flag; { const char *user_request = argv[optind++]; char *rewritten_request = NULL; const char *colon = strchr (user_request, ':'); /* Try to detect old syntax, that is, no `..' and a single `:'. In such case, issue a warning, and rewrite the request to new syntax. */ if (colon && !strchr (colon + 1, ':')) { const char *cursor; for (cursor = user_request; *cursor; cursor++) if (cursor[0] == '.' && cursor[1] == '.') break; if (!*cursor) { char *cursor2; rewritten_request = (char *) xmalloc (strlen (user_request) + 2); cursor2 = rewritten_request; for (cursor = user_request; *cursor != ':'; cursor++) *cursor2++ = *cursor; *cursor2++ = '.'; *cursor2++ = '.'; for (cursor++; *cursor; cursor++) *cursor2++ = *cursor; *cursor2 = NUL; user_request = rewritten_request; if (!quiet_flag) error (0, 0, _("Syntax is deprecated, please prefer `%s'"), user_request); } } if (!recode_scan_request (request, user_request)) error (EXIT_FAILURE, 0, _("Request `%s' is erroneous"), user_request); if (rewritten_request) free (rewritten_request); } /* If we merely want source code, do it and get out. */ if (request_option.make_header_flag) { recode_format_table (request, header_language, header_name); exit (EXIT_SUCCESS); } setup_signals (); { RECODE_TASK task; task = recode_new_task (request); task->strategy = task_option.strategy; task->fail_level = task_option.fail_level; task->abort_level = task_option.fail_level; /* If there is no input file, act as a filter. Else, recode all files over themselves. */ if (optind < argc) { /* When reading and writing files, unless the user selected otherwise, avoid forking and use intermediate files. */ /* FIXME: On a file per file basis, force recoding to be done in memory whenever files are small, which is the usual case. */ if (task->strategy == RECODE_STRATEGY_UNDECIDED) task->strategy = RECODE_SEQUENCE_WITH_FILES; /* In case files are recoded over themselves and there is no recoding step at all, do not even try to touch the files. */ if (request->sequence_length > 0) /* Process files, one at a time. */ for (; optind < argc; optind++) { const char *input_name; char output_name[200]; /* FIXME: dangerous limit */ FILE *file; struct stat file_stat; struct utimbuf file_utime; input_name = argv[optind]; /* Check if the file can be read and rewritten. */ if (file = fopen (input_name, "r+"), file == NULL) error (EXIT_FAILURE, errno, "fopen (%s)", input_name); /* Save the input file attrobites. */ fstat (fileno (file), &file_stat); fclose (file); { char *cursor; /* Choose an output file in the same directory. */ /* FIXME: Scott Schwartz writes: "There's no reason to think that that name is unique." */ strcpy (output_name, input_name); #if DOSWIN_OR_OS2 for (cursor = output_name + strlen (output_name); cursor > output_name && cursor[-1] != '/' && cursor[-1] != '\\' && cursor[-1] != ':'; cursor--) ; # if __DJGPP__ sprintf (cursor, "rec%d.tmp", getpid ()); # else strcpy (cursor, "recodeXX.TMP"); # endif #else for (cursor = output_name + strlen (output_name); cursor > output_name && cursor[-1] != '/'; cursor--) ; sprintf (cursor, "rec%d.tmp", getpid ()); #endif } /* Recode the file. */ task->input.name = input_name; task->output.name = output_name; if (verbose_flag) { fprintf (stderr, _("Recoding %s..."), task->input.name); fflush (stderr); } if ((*processor) (task)) { /* Recoding was successful. */ if (verbose_flag) { fprintf (stderr, _(" done\n")); fflush (stderr); } /* Move the new file over the original. */ if (unlink (input_name) < 0) error (EXIT_FAILURE, errno, "unlink (%s)", input_name); /* Preserve the file permissions. */ if (chmod (output_name, file_stat.st_mode & 07777) < 0) error (EXIT_FAILURE, errno, "chmod (%s)", output_name); #if HAVE_RENAME if (rename (output_name, input_name) < 0) error (EXIT_FAILURE, errno, "rename (%s, %s)", output_name, input_name); #else if (link (output_name, input_name) < 0) error (EXIT_FAILURE, errno, "link (%s, %s)", output_name, input_name); if (unlink (output_name) < 0) error (EXIT_FAILURE, errno, "unlink (%s)", output_name); #endif /* Adjust the time stamp for the new file. */ if (!touch_option) { file_utime.actime = file_stat.st_atime; file_utime.modtime = file_stat.st_mtime; utime (input_name, &file_utime); } } else { /* Recoding failed, discard output. */ success = false; if (verbose_flag) { fprintf (stderr, _(" failed: %s in step `%s..%s'\n"), task_perror (task), task->error_at_step->before->name, task->error_at_step->after->name); fflush (stderr); } else if (!quiet_flag) error (0, 0, _("%s failed: %s in step `%s..%s'"), input_name, task_perror (task), task->error_at_step->before->name, task->error_at_step->after->name); unlink (output_name); } } } else { /* When reading stdin and writing stdout, unless the user selected otherwise, fork processes interconnected with pipes. */ if (task->strategy == RECODE_STRATEGY_UNDECIDED) task->strategy = RECODE_SEQUENCE_WITH_PIPE; task->input.name = ""; task->output.name = ""; if (!(*processor) (task)) { success = false; if (!quiet_flag) error (0, 0, _("%s in step `%s..%s'"), task_perror (task), task->error_at_step->before->name, task->error_at_step->after->name); } } } /* Exit with an appropriate status. */ exit (success ? EXIT_SUCCESS : EXIT_FAILURE); } recode-3.6/src/freeze.c0100644000000000000000000000622407126443235013547 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1998, 99, 00 Free Software Foundation, Inc. François Pinard , 1998. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*===================================================================\ | This module is merely a sand box for now, and is not operational. | \===================================================================*/ #include "common.h" /* FIXME: From charset.c. */ /* Hash table size for charset names. */ #define HASH_TABLE_SIZE 997 /* This file takes care of dynamically loading supplementary tables in source form, or later dumping them as compilable C code. */ void recode_freeze_tables (RECODE_OUTER outer) { #if 0 /* Produce header block comment. */ fputs ("\ /* DO NOT MODIFY THIS FILE! It was generated by `recode --freeze-tables'. */\n\ \n\ /* Conversion of files between different charsets and surfaces.\n\ Copyright © 1998 Free Software Foundation, Inc.\n\ Contributed by François Pinard , 1998.\n\ \n\ This library is free software; you can redistribute it and/or\n\ modify it under the terms of the GNU Lesser General Public License\n\ as published by the Free Software Foundation; either version 2 of the\n\ License, or (at your option) any later version.\n\ \n\ This library is distributed in the hope that it will be\n\ useful, but WITHOUT ANY WARRANTY; without even the implied warranty\n\ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n\ Lesser General Public License for more details.\n\ \n\ You should have received a copy of the GNU Lesser General Public\n\ License along with the `recode' Library; see the file `COPYING.LIB'.\n\ If not, write to the Free Software Foundation, Inc., 59 Temple Place -\n\ Suite 330, Boston, MA 02111-1307, USA. */\n\ \n\ #include \"common.h\"\n", stdout); #endif #if 0 /* Save the hash table. */ { struct recode_hash *hash; fputs ("\n", stdout); printf ("struct recode_hash hash_table[%d] =\n", HASH_TABLE_SIZE); fputs (" {\n", stdout); for (hash = outer->hash_table; hash < outer->hash_table + HASH_TABLE_SIZE; hash++) { fputs (" {", stdout); if (hash->name) printf ("\"%s\"", hash->name); else fputs ("NULL", stdout); fputs (", CHARSET", stdout); fputs (", ", stdout); if (hash->next) printf ("NEXT", hash->next); else fputs ("NULL", stdout); fputs ("},\n", stdout); } fputs (" };\n", stdout); } #endif } recode-3.6/src/mixed.c0100644000000000000000000002400307142144667013375 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990,92,93,94,96,97,98,99,00 Free Software Foundation, Inc. François Pinard , 1990. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "common.h" /*================================\ | Mixed charset file processors. | \================================*/ struct mixed { /* File names saved from original task. */ const char *input_name; const char *output_name; /* Subtask, from input directly to either output or in memory buffer. */ struct recode_subtask subtask; /* In memory buffer. */ struct recode_read_write_text buffer; }; static bool open_mixed (struct mixed *mixed, RECODE_TASK task) { mixed->input_name = task->input.name; mixed->output_name = task->output.name; task->strategy = RECODE_SEQUENCE_IN_MEMORY; task->byte_order_mark = false; /* Open both files ourselves. */ if (!*(task->input.name)) task->input.file = stdin; else if (task->input.file = fopen (mixed->input_name, "r"), !task->input.file) { recode_perror (NULL, "fopen (%s)", task->input.name); return false; } task->input.name = NULL; if (!*(task->output.name)) task->output.file = stdout; else if (task->output.file = fopen (mixed->output_name, "w"), !task->output.file) { recode_perror (NULL, "fopen (%s)", task->output.name); if (*(task->input.name)) fclose (task->input.file); return false; } task->output.name = NULL; /* Prepare for dynamic plumbing copy. */ memset (&mixed->subtask, 0, sizeof (struct recode_subtask)); mixed->subtask.task = task; mixed->subtask.input = task->input; mixed->subtask.output = task->output; memset (&mixed->buffer, 0, sizeof (struct recode_read_write_text)); return true; } static void close_mixed (struct mixed *mixed) { /* Clean up. */ if (*(mixed->input_name)) fclose (mixed->subtask.task->input.file); if (*(mixed->output_name)) fclose (mixed->subtask.task->output.file); } static /*inline*/ void start_accumulation (struct mixed *mixed) { mixed->buffer.cursor = mixed->buffer.buffer; mixed->subtask.output = mixed->buffer; } static /*inline*/ bool recode_accumulated (struct mixed *mixed) { RECODE_TASK task = mixed->subtask.task; struct recode_read_only_text saved_input = task->input; bool status; mixed->buffer = mixed->subtask.output; task->input.file = NULL; task->input.buffer = mixed->buffer.buffer; task->input.cursor = mixed->buffer.buffer; task->input.limit = mixed->buffer.cursor; status = recode_perform_task (task); task->input = saved_input; mixed->subtask.output = task->output; return status; } /*-----------------------------------------------------------------------. | Transform only strings or comments in an C source, expected in ASCII. | `-----------------------------------------------------------------------*/ bool transform_c_source (RECODE_TASK task) { struct mixed mixed; bool status = true; int character; if (!open_mixed (&mixed, task)) return false; character = get_byte (&mixed.subtask); while (character != EOF) switch (character) { case '\'': /* Skip character constant, while copying it untranslated. */ put_byte ('\'', &mixed.subtask); character = get_byte (&mixed.subtask); if (character == EOF) { status = false; break; } if (character == '\\') { put_byte ('\\', &mixed.subtask); character = get_byte (&mixed.subtask); if (character == EOF) { status = false; break; } put_byte (character, &mixed.subtask); character = get_byte (&mixed.subtask); } if (character == '\'') { put_byte ('\'', &mixed.subtask); character = get_byte (&mixed.subtask); } else status = false; break; case '"': /* Copy the string, translated. */ put_byte ('"', &mixed.subtask); character = get_byte (&mixed.subtask); /* Read in string. */ start_accumulation (&mixed); while (true) { if (character == EOF) { recode_accumulated (&mixed); status = false; break; } if (character == '"') break; if (character == '\\') { put_byte ('\\', &mixed.subtask); character = get_byte (&mixed.subtask); if (character == EOF) { recode_accumulated (&mixed); status = false; break; } } put_byte (character, &mixed.subtask); character = get_byte (&mixed.subtask); } if (character == EOF) break; /* Translate string and dump it. */ if (!recode_accumulated (&mixed)) status = false; put_byte ('"', &mixed.subtask); character = get_byte (&mixed.subtask); break; case '/': put_byte ('/', &mixed.subtask); character = get_byte (&mixed.subtask); if (character == EOF) break; if (character == '*') { /* Copy the comment, translated. */ put_byte ('*', &mixed.subtask); character = get_byte (&mixed.subtask); /* Read in comment. */ start_accumulation (&mixed); while (true) { if (character == EOF) { recode_accumulated (&mixed); status = false; break; } if (character == '*') { character = get_byte (&mixed.subtask); if (character == EOF) { recode_accumulated (&mixed); status = false; put_byte ('*', &mixed.subtask); break; } if (character == '/') break; put_byte ('*', &mixed.subtask); } else { put_byte (character, &mixed.subtask); character = get_byte (&mixed.subtask); } } if (character == EOF) break; /* Translate comment and dump it. */ if (!recode_accumulated (&mixed)) status = false; put_byte ('*', &mixed.subtask); put_byte ('/', &mixed.subtask); character = get_byte (&mixed.subtask); } break; default: put_byte (character, &mixed.subtask); character = get_byte (&mixed.subtask); break; } close_mixed (&mixed); return status; } /*------------------------------------------------------------------------. | Transform only strings or comments in an PO source, expected in ASCII. | `------------------------------------------------------------------------*/ /* There is a limitation to -Spo: if `recode' converts some `msgstr' in a way that might produce quotes (or backslashes), these should then be requoted. Doing this would then also require to fully unquote the original `msgstr' string. But it seems that such a need does not occur in most cases I can imagine as practical, as the ASCII subset is generally invariant under recoding. My guess is that we should wait for someone to report the bug with a real case, to believe it is worth adding the complexity. */ bool transform_po_source (RECODE_TASK task) { struct mixed mixed; bool status = true; bool recode = false; bool msgstr = false; int character; if (!open_mixed (&mixed, task)) return false; character = get_byte (&mixed.subtask); while (character != EOF) switch (character) { case '#': /* Copy a comment, recoding only those written by translators. */ put_byte ('#', &mixed.subtask); character = get_byte (&mixed.subtask); if (character == EOF) break; recode = character == ' ' || character == '\t'; if (recode) start_accumulation (&mixed); while (character != '\n' && character != EOF) { put_byte (character, &mixed.subtask); character = get_byte (&mixed.subtask); } if (recode) { if (!recode_accumulated (&mixed)) status = false; } if (character == EOF) break; put_byte ('\n', &mixed.subtask); character = get_byte (&mixed.subtask); break; case 'm': /* Attempt to recognise `msgstr'. */ msgstr = false; put_byte ('m', &mixed.subtask); character = get_byte (&mixed.subtask); if (character != 's') break; put_byte ('s', &mixed.subtask); character = get_byte (&mixed.subtask); if (character != 'g') break; put_byte ('g', &mixed.subtask); character = get_byte (&mixed.subtask); if (character != 's') break; put_byte ('s', &mixed.subtask); character = get_byte (&mixed.subtask); if (character != 't') break; put_byte ('t', &mixed.subtask); character = get_byte (&mixed.subtask); if (character != 'r') break; put_byte ('r', &mixed.subtask); character = get_byte (&mixed.subtask); msgstr = true; break; case '"': /* Copy the string, translating only the `msgstr' ones. */ put_byte ('"', &mixed.subtask); character = get_byte (&mixed.subtask); recode = msgstr; if (recode) start_accumulation (&mixed); while (true) { if (character == EOF) { if (recode) { recode_accumulated (&mixed); status = false; } break; } if (character == '"') break; if (character == '\\') { put_byte ('\\', &mixed.subtask); character = get_byte (&mixed.subtask); if (character == EOF) { if (recode) { recode_accumulated (&mixed); status = false; } break; } } put_byte (character, &mixed.subtask); character = get_byte (&mixed.subtask); } if (character == EOF) break; if (recode) { if (!recode_accumulated (&mixed)) status = false; } put_byte ('"', &mixed.subtask); character = get_byte (&mixed.subtask); break; default: put_byte (character, &mixed.subtask); character = get_byte (&mixed.subtask); break; } close_mixed (&mixed); return status; } recode-3.6/src/recode.h0100644000000000000000000000773207126443220013534 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef PARAMS # if __STDC__ # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif #endif /* Published (opaque) typedefs. */ typedef struct recode_outer * RECODE_OUTER; typedef struct recode_request * RECODE_REQUEST; typedef struct recode_task * RECODE_TASK; typedef const struct recode_request * RECODE_CONST_REQUEST; typedef const struct recode_symbol * RECODE_CONST_SYMBOL; /* Description of list formats. */ enum recode_list_format { RECODE_NO_FORMAT, /* format not decided yet */ RECODE_DECIMAL_FORMAT, /* concise tabular list using decimal */ RECODE_OCTAL_FORMAT, /* concise tabular list using octal */ RECODE_HEXADECIMAL_FORMAT, /* concise tabular list using hexadecimal */ RECODE_FULL_FORMAT /* full list, one character per line */ }; /* Description of programming languages. */ enum recode_programming_language { RECODE_NO_LANGUAGE, /* language not decided yet */ RECODE_LANGUAGE_C, /* C (or C++) */ RECODE_LANGUAGE_PERL /* Perl */ }; /* Function prototypes. */ #ifdef __cplusplus extern "C" { #endif /*--------------------------------. | Recode library at OUTER level. | `--------------------------------*/ RECODE_OUTER recode_new_outer PARAMS ((bool)); bool recode_delete_outer PARAMS ((RECODE_OUTER)); bool list_all_symbols PARAMS ((RECODE_OUTER, RECODE_CONST_SYMBOL)); bool list_concise_charset PARAMS ((RECODE_OUTER, RECODE_CONST_SYMBOL, const enum recode_list_format)); bool list_full_charset PARAMS ((RECODE_OUTER, RECODE_CONST_SYMBOL)); /*----------------------------------. | Recode library at REQUEST level. | `----------------------------------*/ RECODE_REQUEST recode_new_request PARAMS ((RECODE_OUTER)); bool recode_delete_request PARAMS ((RECODE_REQUEST)); bool recode_scan_request PARAMS ((RECODE_REQUEST, const char *)); bool recode_format_table PARAMS ((RECODE_REQUEST, enum recode_programming_language, const char *)); char *recode_string PARAMS ((RECODE_CONST_REQUEST, const char *)); bool recode_string_to_buffer PARAMS ((RECODE_CONST_REQUEST, const char *, char **, size_t *, size_t *)); bool recode_string_to_file PARAMS ((RECODE_CONST_REQUEST, const char *, FILE *)); bool recode_buffer_to_buffer PARAMS ((RECODE_CONST_REQUEST, const char *, size_t, char **, size_t *, size_t *)); bool recode_buffer_to_file PARAMS ((RECODE_CONST_REQUEST, const char *, size_t, FILE *)); bool recode_file_to_buffer PARAMS ((RECODE_CONST_REQUEST, FILE *, char **, size_t *, size_t *)); bool recode_file_to_file PARAMS ((RECODE_CONST_REQUEST, FILE *, FILE *)); /*-------------------------------. | Recode library at TASK level. | `-------------------------------*/ RECODE_TASK recode_new_task PARAMS ((RECODE_CONST_REQUEST)); bool recode_delete_task PARAMS ((RECODE_TASK)); bool recode_perform_task PARAMS ((RECODE_TASK)); /* FILE *recode_filter_open PARAMS ((RECODE_TASK, FILE *)); */ /* bool recode_filter_close PARAMS ((RECODE_TASK)); */ #ifdef __cplusplus } #endif recode-3.6/src/recodext.h0100644000000000000000000006314107225105206014103 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 96-99, 2000, 2001 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Extended definitions, for externally written steps. */ #include "recode.h" /* Internal typedefs, to supplement those in "recode.h". */ typedef struct recode_symbol * RECODE_SYMBOL; typedef struct recode_option_list * RECODE_OPTION_LIST; typedef struct recode_single * RECODE_SINGLE; typedef struct recode_step * RECODE_STEP; typedef struct recode_alias * RECODE_ALIAS; typedef struct recode_subtask * RECODE_SUBTASK; typedef const struct recode_option_list * RECODE_CONST_OPTION_LIST; typedef const struct recode_outer * RECODE_CONST_OUTER; typedef const struct recode_step * RECODE_CONST_STEP; typedef const struct recode_alias * RECODE_CONST_ALIAS; typedef const struct recode_task * RECODE_CONST_TASK; /*---------------------------------------------------------. | Maintain maximum of ERROR and current error in SUBTASK. | `---------------------------------------------------------*/ #define SET_SUBTASK_ERROR(Error, Subtask) \ recode_if_nogo (Error, Subtask) /*--------------------------------------------------------------------------. | Return from SUBTASK with `false', if the failure level has been reached. | `--------------------------------------------------------------------------*/ #define SUBTASK_RETURN(Subtask) \ return (Subtask)->task->error_so_far < (Subtask)->task->fail_level /*-------------------------------------------------------------------------. | Maintain maximum of ERROR and current error in SUBTASK. If the abort | | level has been reached, then return immediately as with SUBTASK_RETURN. | `-------------------------------------------------------------------------*/ #define RETURN_IF_NOGO(Error, Subtask) \ do { \ if (recode_if_nogo (Error, Subtask)) \ SUBTASK_RETURN (Subtask); \ } while (false) /* Various structure declarations. */ /*-----------------------------------------. | Outer variables for the recode library. | `-----------------------------------------*/ /* Error codes, in increasing severity. */ enum recode_error { RECODE_NO_ERROR, /* no error so far */ RECODE_NOT_CANONICAL, /* input is not exact, but equivalent */ RECODE_AMBIGUOUS_OUTPUT, /* output will be misleading */ RECODE_UNTRANSLATABLE, /* input is getting lost, while valid */ RECODE_INVALID_INPUT, /* input is getting lost, but was invalid */ RECODE_SYSTEM_ERROR, /* system returned input/output failure */ RECODE_USER_ERROR, /* library is being misused */ RECODE_INTERNAL_ERROR, /* programming botch in the library */ RECODE_MAXIMUM_ERROR /* impossible value (should be kept last) */ }; /* Structure for relating alias names to charsets and surfaces. */ struct recode_alias { const char *name; /* charset, surface or alias name */ RECODE_SYMBOL symbol; /* associated symbol */ /* If a charset, list of surfaces usually applied by default. */ struct recode_surface_list *implied_surfaces; }; /* The sole purpose of qualities is for later attributing step costs. */ enum recode_size { RECODE_1, /* roughly one byte per character */ RECODE_2, /* roughly two bytes per character */ RECODE_4, /* roughly four bytes per character */ RECODE_N /* variable number of bytes per character */ }; struct recode_quality { enum recode_size in_size : 3; /* rough byte size of input characters */ enum recode_size out_size : 3; /* rough byte size of output characters */ bool reversible : 1; /* transformation is known to be reversible */ bool slower : 1; /* transformation is slower than average */ bool faster : 1; /* transformation is faster than average */ }; /* Main variables of the initialised library. */ struct recode_outer { /* This flag asks the library to diagnose and abort itself if errors. */ bool auto_abort; /* If new steps should automatically have reversibility for fallback. */ bool auto_reversibility; /* charset.c */ /* --------- */ /* Known pairs (for restricting listing). */ struct recode_known_pair *pair_restriction; unsigned pair_restrictions; /* Opaque Hash_table pointer giving access to the single table holding all names and aliases for charsets, surfaces and fallback methods. */ void *alias_table; /* Unique symbols are linked into a list and counted. */ RECODE_SYMBOL symbol_list; unsigned number_of_symbols; /* Arrays of strings ready for argmatch. */ char **argmatch_charset_array; char **argmatch_surface_array; const char **realname_charset_array; const char **realname_surface_array; /* recode.c */ /* -------- */ /* Known single steps. */ struct recode_single *single_list; unsigned number_of_singles; /* Identity recoding table. */ const unsigned char *one_to_same; /* Preset charsets and surfaces. */ RECODE_SYMBOL data_symbol;/* special charset defining surfaces */ RECODE_SYMBOL tree_symbol; /* special charset defining structures */ RECODE_SYMBOL ucs2_charset; /* UCS-2 */ RECODE_SYMBOL libiconv_pivot; /* `libiconv' internal UCS */ RECODE_SYMBOL crlf_surface; /* for IBM PC machines */ RECODE_SYMBOL cr_surface; /* for Macintosh machines */ /* Preset qualities, to make step initialisation simpler. */ struct recode_quality quality_byte_reversible; struct recode_quality quality_byte_to_byte; struct recode_quality quality_byte_to_ucs2; struct recode_quality quality_byte_to_variable; struct recode_quality quality_ucs2_to_byte; struct recode_quality quality_ucs2_to_variable; struct recode_quality quality_variable_to_byte; struct recode_quality quality_variable_to_ucs2; struct recode_quality quality_variable_to_variable; }; /*--------------------------. | Description of a symbol. | `--------------------------*/ enum recode_symbol_type { RECODE_NO_SYMBOL_TYPE, /* missing value */ RECODE_CHARSET, /* visible in the space of charsets */ RECODE_DATA_SURFACE, /* this is a mere data surface */ RECODE_TREE_SURFACE /* this is a structural surface */ }; enum recode_data_type { RECODE_NO_CHARSET_DATA, /* the charset_table field is unused */ RECODE_STRIP_DATA, /* pool pointer and array of strips */ RECODE_EXPLODE_DATA /* explode variable length data */ }; struct recode_symbol { /* Chaining of all known symbols (charsets and surfaces). */ RECODE_SYMBOL next; /* Unique ordinal for this symbol, counted from zero. */ unsigned ordinal; /* Main name. */ const char *name; /* Type of table. */ enum recode_data_type data_type; /* Recoding table. */ void *data; /* Step for data..CHARSET transformation, if any, or NULL. */ struct recode_single *resurfacer; /* Step for CHARSET..data transformation, if any, or NULL. */ struct recode_single *unsurfacer; /* Non zero if this is an acceptable charset (not only a surface). */ enum recode_symbol_type type : 3; /* Non zero if this one should be ignored. */ bool ignore : 2; }; struct recode_surface_list { RECODE_CONST_SYMBOL surface; struct recode_surface_list *next; }; /*-------------------------------------------. | Description of a single step of recoding. | `-------------------------------------------*/ typedef bool (*Recode_init) PARAMS ((RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST)); typedef bool (*Recode_term) PARAMS ((RECODE_STEP, RECODE_CONST_REQUEST)); typedef bool (*Recode_transform) PARAMS ((RECODE_SUBTASK)); typedef bool (*Recode_fallback) PARAMS ((RECODE_SUBTASK, unsigned)); /* The `single' structure holds data needed to decide of sequences, and is invariant over actual requests. The `step' structure holds data needed for task execution, it may take care of fallback and option variance. */ struct recode_single { /* Chaining of all known single steps. */ struct recode_single *next; /* Charset before conversion. */ RECODE_SYMBOL before; /* Charset after conversion. */ RECODE_SYMBOL after; /* Cost for this single step only. */ short conversion_cost; /* Initial value for step_table. */ void *initial_step_table; /* Recoding quality. */ struct recode_quality quality; /* Initialisation handler, to be called before step optimisation. */ Recode_init init_routine; /* Transformation handler, for doing the actual recoding work. */ Recode_transform transform_routine; /* Default fallback for the step. Merely to implement `-s' option. */ Recode_fallback fallback_routine; }; enum recode_step_type { RECODE_NO_STEP_TABLE, /* the step_table field is unused */ RECODE_BYTE_TO_BYTE, /* array of 256 bytes */ RECODE_BYTE_TO_STRING, /* array of 256 strings */ RECODE_UCS2_TO_BYTE, /* hash from ucs2 to byte */ RECODE_UCS2_TO_STRING, /* hash from ucs2 to string */ RECODE_STRING_TO_UCS2, /* hash from ucs2 to string, reversed */ RECODE_COMBINE_EXPLODE, /* raw data for combining or exploding */ RECODE_COMBINE_STEP, /* special hash for combining */ RECODE_EXPLODE_STEP /* special hash for exploding */ }; struct recode_step { /* Charset before conversion. */ RECODE_SYMBOL before; /* Charset after conversion. */ RECODE_SYMBOL after; /* Recoding quality. */ struct recode_quality quality; /* Type of table. */ enum recode_step_type step_type; /* Recoding table. */ void *step_table; /* Step specific variables. */ void *local; /* Transformation handler, for doing the actual recoding work. */ Recode_transform transform_routine; /* Fallback for the step. */ Recode_fallback fallback_routine; /* Cleanup handler, to be called after the recoding is done. */ Recode_term term_routine; }; struct recode_option_list { const char *option; RECODE_OPTION_LIST next; }; /*------------------------------------------------------------------------. | A recoding request holds, among other things, a selected path among the | | available recoding steps, it so represents a kind of recoding plan. | `------------------------------------------------------------------------*/ struct recode_request { /* A request is always associated with a recoding system. */ RECODE_OUTER outer; /* By setting the following flag, the program will echo to stderr the sequence of elementary recoding steps needed to achieve the requested recoding. */ bool verbose_flag : 1; /* In `texte' charset, some countries use double quotes to mark diaeresis, while some other prefer colons. This field contains the diaeresis character for `texte' charset. Nominally set to a double quote, it can be forced to a colon. Those are the only two acceptable values. */ char diaeresis_char; /* If producing a recoding table in source form, there will be no actual recoding done, and consequently, the optimisation of step sequence can be attempted more aggressively. If the step sequence cannot be reduced to a single step, table production will fail. */ bool make_header_flag : 1; /* For `latex' charset, it is often convenient to recode the diacritics only, while letting other LaTeX code using backslashes unrecoded. In the other charset, one can edit text as well as LaTeX directives. */ bool diacritics_only : 1; /* For `ibmpc' charset, characters 176 to 223 are use to draw boxes. If this field is set, while getting out of `ibmpc', ASCII characters are selected so to approximate these boxes. */ bool ascii_graphics : 1; /* Array stating the sequence of conversions. */ RECODE_STEP sequence_array; size_t sequence_allocated; short sequence_length; /* Internal variables used while scanning request text. */ char *work_string; /* buffer space for generated work strings */ size_t work_string_length; /* length of work_string */ size_t work_string_allocated; /* allocated length of work_string */ const char *scan_cursor; /* next character to be seen */ char *scanned_string; /* buffer space to scan strings */ }; /*--------------------------------------------------------------------. | A recoding text is either an external file or an in memory buffer. | `--------------------------------------------------------------------*/ /* While the recoding is going on, FILE being non-NULL has precedence over BUFFER. Moreover, if NAME is not NULL at start of recoding, this is interpreted as a request for the library to open the named file, either in read or write mode, and also to close it afterwards. Standard input or output is denoted by NAME being non-NULL, but otherwise empty. If FILE is NULL in input mode, the in-memory read-only text extends from BUFFER to LIMIT. There is no clue about if the buffer has been allocated bigger. When CURSOR reaches LIMIT, there is no more data to get. If FILE is NULL in output mode, the in-memory text extends from BUFFER to CURSOR, but the buffer has been allocated until LIMIT. When CURSOR reaches LIMIT, the buffer should be reallocated bigger, as needed. */ struct recode_read_only_text { const char *name; FILE *file; const char *buffer; const char *cursor; const char *limit; }; struct recode_read_write_text { const char *name; FILE *file; char *buffer; char *cursor; char *limit; }; /* Tells how various passes are interconnected. */ enum recode_sequence_strategy { RECODE_STRATEGY_UNDECIDED, /* sequencing strategy is undecided yet */ RECODE_SEQUENCE_IN_MEMORY, /* keep intermediate recodings in memory */ RECODE_SEQUENCE_WITH_FILES, /* do not fork, use intermediate files */ RECODE_SEQUENCE_WITH_PIPE /* fork processes connected with `pipe(2)' */ }; /* Tells how to swap the incoming pair of bytes, while reading UCS-2. */ enum recode_swap_input { RECODE_SWAP_UNDECIDED, /* the text has not been read yet */ RECODE_SWAP_NO, /* no need to swap pair of bytes */ RECODE_SWAP_YES /* should swap incoming pair of bytes */ }; /*--------------------------------------------------------------------------. | A recoding subtask associates a particular recoding step to a given input | | text, for producing a corresponding output text. It also holds error | | related statistics for the execution of that step. | `--------------------------------------------------------------------------*/ struct recode_subtask { /* Task for which this subtask is an element. */ RECODE_TASK task; /* Step being executed by this subtask. */ RECODE_CONST_STEP step; /* Current input and output. */ struct recode_read_only_text input; struct recode_read_write_text output; /* Line count and character count in last line, both zero-based. */ unsigned newline_count; unsigned character_count; }; #define GOT_CHARACTER(Subtask) \ ((Subtask)->character_count++) #define GOT_NEWLINE(Subtask) \ ((Subtask)->newline_count++, (Subtask)->character_count = 0) /*--------------------------------------------------------------------------. | A recoding task associates a sequence of steps to a given input text, for | | producing a corresponding output text. It holds an array of subtasks. | `--------------------------------------------------------------------------*/ struct recode_task { /* Associated request. */ RECODE_CONST_REQUEST request; /* Initial input and final output. */ struct recode_read_only_text input; struct recode_read_write_text output; /* Tells how various recoding steps (passes) will be interconnected. */ enum recode_sequence_strategy strategy : 3; /* Produce a byte order mark on UCS-2 output, insist for it on input. */ bool byte_order_mark : 1; /* The input UCS-2 stream might have bytes swapped (status variable). */ enum recode_swap_input swap_input : 3; /* Error processing. */ /* ----------------- */ /* At this level, there will be failure. */ enum recode_error fail_level : 5; /* At this level, task should be interrupted. */ enum recode_error abort_level : 5; /* Maximum error level met so far (status variable). */ enum recode_error error_so_far : 5; /* Step being executed when error_so_far was last set. */ RECODE_CONST_STEP error_at_step; }; /* Specialities for some function arguments. */ /* For restricting charset lists. */ struct recode_known_pair { unsigned char left; /* first character in pair */ unsigned char right; /* second character in pair */ }; /*----------------------. | Various definitions. | `----------------------*/ typedef unsigned short recode_ucs2; /* Double tables are generated as arrays of indices into a pool of strips, each strip holds STRIP_SIZE UCS-2 characters. Some memory is saved by not allowing duplicate strips in the pool. A smaller strip size yields more duplicates and so, a smaller pool, but then, tables get longer because more strip indices are needed for each table. It is difficult to predict the optimal strip size. Tests made on 1997-09-22 showed that a strip size of 4 needs 27808 bytes total, 8 needs 22656, 16 needs 23584 and 32 needs 25568, so we decided to stick to a strip size of 8. Change $STRIP_SIZE in `doc/tables.pl' if you change the value here. */ /* "Are we speaking slips, strips or bars?" (of gold press'latinum :-) */ #define STRIP_SIZE 8 /* An struct strip_data is a pointer to a pool of strips, and an array of 256/STRIP_SIZE offsets for the start of strips into the pool, each strip describes STRIP_SIZE UCS-2 characters. A missing character in a strip is indicated by all 16 bits set. */ struct strip_data { const recode_ucs2 *pool; const short offset[256 / STRIP_SIZE]; }; struct ucs2_to_byte { recode_ucs2 code; /* UCS-2 value */ unsigned char byte; /* corresponding byte */ }; struct ucs2_to_string { recode_ucs2 code; /* UCS-2 value */ unsigned short flags; /* various flags */ const char *string; /* corresponding string */ }; /* Per module declarations. */ #ifdef __cplusplus extern "C" { #endif /* recode.c. */ #define ALLOC_SIZE(Variable, Size, Type) \ (Variable = (Type *) recode_malloc (outer, (Size)), Variable) #define ALLOC(Variable, Count, Type) \ ALLOC_SIZE (Variable, (Count) * sizeof (Type), Type) #define REALLOC(Variable, Count, Type) \ (Variable = (Type *) recode_realloc (outer, Variable, \ (Count) * sizeof(Type)), \ Variable) void recode_error PARAMS ((RECODE_OUTER, const char *, ...)); void recode_perror PARAMS ((RECODE_OUTER, const char *, ...)); void *recode_malloc PARAMS ((RECODE_OUTER, size_t)); void *recode_realloc PARAMS ((RECODE_OUTER, void *, size_t)); unsigned char *invert_table PARAMS ((RECODE_OUTER, const unsigned char *)); bool complete_pairs PARAMS ((RECODE_OUTER, RECODE_STEP, const struct recode_known_pair *, unsigned, bool, bool)); bool transform_byte_to_ucs2 PARAMS ((RECODE_SUBTASK)); bool init_ucs2_to_byte PARAMS ((RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST)); bool transform_ucs2_to_byte PARAMS ((RECODE_SUBTASK)); /* charname.c and fr-charname.c. */ const char *ucs2_to_charname PARAMS ((int)); const char *ucs2_to_french_charname PARAMS ((int)); /* charset.c. */ enum alias_find_type { SYMBOL_CREATE_CHARSET, /* charset as given, create as needed */ SYMBOL_CREATE_DATA_SURFACE, /* data surface as given, create as needed */ SYMBOL_CREATE_TREE_SURFACE, /* tree surface as given, create as needed */ ALIAS_FIND_AS_CHARSET, /* disambiguate only as a charset */ ALIAS_FIND_AS_SURFACE, /* disambiguate only as a surface */ ALIAS_FIND_AS_EITHER /* disambiguate as a charset or a surface */ }; int code_to_ucs2 (RECODE_CONST_SYMBOL, unsigned); bool prepare_for_aliases PARAMS ((RECODE_OUTER)); RECODE_ALIAS declare_alias PARAMS ((RECODE_OUTER, const char *, const char *)); bool declare_implied_surface PARAMS ((RECODE_OUTER, RECODE_ALIAS, RECODE_CONST_SYMBOL)); bool make_argmatch_arrays PARAMS ((RECODE_OUTER)); RECODE_ALIAS find_alias PARAMS ((RECODE_OUTER, const char *, enum alias_find_type)); bool find_and_report_subsets PARAMS ((RECODE_OUTER)); bool decode_known_pairs PARAMS ((RECODE_OUTER, const char *)); /* combine.c. */ #define DONE NOT_A_CHARACTER #define ELSE BYTE_ORDER_MARK_SWAPPED bool init_explode PARAMS ((RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST)); bool explode_byte_byte PARAMS ((RECODE_SUBTASK)); bool explode_ucs2_byte PARAMS ((RECODE_SUBTASK)); bool explode_byte_ucs2 PARAMS ((RECODE_SUBTASK)); bool explode_ucs2_ucs2 PARAMS ((RECODE_SUBTASK)); bool init_combine PARAMS ((RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST)); bool combine_byte_byte PARAMS ((RECODE_SUBTASK)); bool combine_ucs2_byte PARAMS ((RECODE_SUBTASK)); bool combine_byte_ucs2 PARAMS ((RECODE_SUBTASK)); bool combine_ucs2_ucs2 PARAMS ((RECODE_SUBTASK)); /* freeze.c. */ void recode_freeze_tables PARAMS ((RECODE_OUTER)); /* libiconv.c. */ bool transform_with_libiconv PARAMS ((RECODE_SUBTASK)); /* mixed.c. */ bool transform_c_source PARAMS ((RECODE_TASK)); bool transform_po_source PARAMS ((RECODE_TASK)); /* outer.c. */ bool reversibility PARAMS ((RECODE_SUBTASK, unsigned)); RECODE_SINGLE declare_single PARAMS ((RECODE_OUTER, const char *, const char *, struct recode_quality, bool (*) (RECODE_STEP, RECODE_CONST_REQUEST, RECODE_CONST_OPTION_LIST, RECODE_CONST_OPTION_LIST), bool (*) (RECODE_SUBTASK))); bool declare_libiconv PARAMS ((RECODE_OUTER, const char *)); bool declare_explode_data PARAMS ((RECODE_OUTER, const unsigned short *, const char *, const char *)); bool declare_strip_data PARAMS ((RECODE_OUTER, struct strip_data *, const char *)); /* pool.c. */ extern const recode_ucs2 ucs2_data_pool[]; /* request.c. */ char *edit_sequence PARAMS ((RECODE_REQUEST, bool)); /* rfc1345.c. */ const char *ucs2_to_rfc1345 PARAMS ((recode_ucs2)); /* task.c. */ #if USE_HELPERS int get_byte_helper PARAMS ((RECODE_SUBTASK)); #endif void put_byte_helper PARAMS ((int, RECODE_SUBTASK)); bool recode_if_nogo PARAMS ((enum recode_error, RECODE_SUBTASK)); bool transform_byte_to_byte PARAMS ((RECODE_SUBTASK)); bool transform_byte_to_variable PARAMS ((RECODE_SUBTASK)); /* ucs.c. */ /* Replacement character for when correctly formed character has no equivalent. It is not used for ill-formed characters, however. */ #define REPLACEMENT_CHARACTER 0xFFFD /* Device for detetcing if bytes are swapped. This value should appear first in UCS-2 files. */ #define BYTE_ORDER_MARK 0xFEFF #define BYTE_ORDER_MARK_SWAPPED 0xFFFE /* Never an UCS-2 character. */ #define NOT_A_CHARACTER 0xFFFF bool get_ucs2 PARAMS ((unsigned *, RECODE_SUBTASK)); bool get_ucs4 PARAMS ((unsigned *, RECODE_SUBTASK)); bool put_ucs2 PARAMS ((unsigned, RECODE_SUBTASK)); bool put_ucs4 PARAMS ((unsigned, RECODE_SUBTASK)); #ifdef __cplusplus } #endif /* Global macros specifically for `recode'. */ /* Giving a name to the ASCII character assigned to position 0. */ #define NUL '\0' #if USE_HELPERS # define get_byte(Subtask) \ get_byte_helper ((Subtask)) # define put_byte(Byte, Subtask) \ put_byte_helper ((Byte), (Subtask)) #else /* not USE_HELPERS */ # define get_byte(Subtask) \ ((Subtask)->input.file \ ? getc ((Subtask)->input.file) \ : (Subtask)->input.cursor == (Subtask)->input.limit \ ? EOF \ : (unsigned char) *(Subtask)->input.cursor++) # define put_byte(Byte, Subtask) \ ((Subtask)->output.file \ ? (putc ((char) (Byte), (Subtask)->output.file), 0) \ : (Subtask)->output.cursor == (Subtask)->output.limit \ ? (put_byte_helper ((int) (Byte), (Subtask)), 0) \ : (*(Subtask)->output.cursor++ = (Byte), 0)) #endif /* not USE_HELPERS */ #ifdef FLEX_SCANNER # if !INLINE_HARDER # undef put_byte # define put_byte(Byte, Subtask) \ put_byte_helper ((Byte), (Subtask)) # endif # define PUT_NON_DIACRITIC_BYTE(Byte, Subtask) \ if (request->diacritics_only) \ ECHO; \ else \ put_byte ((Byte), (Subtask)) /* ECHO may not have a (Subtask) argument, because some ECHO without argument is generated by Flex -- yet Vern tells me it won't happen if I inhibit the rule about default copying. Happily enough, within Flex, Subtask is `subtask' quite systematically, so it may be used as a constant, here. */ # define ECHO \ do { \ const char *cursor = yytext; int counter = yyleng; \ for (; counter > 0; cursor++, counter--) \ put_byte (*cursor, subtask); \ } while (false) #endif /* FLEX_SCANNER */ recode-3.6/src/argmatch.h0100644000000000000000000001075207142144413014055 0ustar rootroot/* argmatch.h -- definitions and prototypes for argmatch.c Copyright (C) 1990, 1998, 1999 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by David MacKenzie Modified by Akim Demaille */ #ifndef ARGMATCH_H_ # define ARGMATCH_H_ 1 # if HAVE_CONFIG_H # include # endif # include # ifndef PARAMS # if PROTOTYPES || (defined (__STDC__) && __STDC__) # define PARAMS(args) args # else # define PARAMS(args) () # endif /* GCC. */ # endif /* Not PARAMS. */ /* Assert there are as many real arguments as there are values (argument list ends with a NULL guard). There is no execution cost, since it will be statically evalauted to `assert (0)' or `assert (1)'. Unfortunately there is no -Wassert-0. */ # undef ARRAY_CARDINALITY # define ARRAY_CARDINALITY(Array) (sizeof ((Array)) / sizeof (*(Array))) # define ARGMATCH_ASSERT(Arglist, Vallist) \ assert (ARRAY_CARDINALITY ((Arglist)) == ARRAY_CARDINALITY ((Vallist)) + 1) /* Return the index of the element of ARGLIST (NULL terminated) that matches with ARG. If VALLIST is not NULL, then use it to resolve false ambiguities (i.e., different matches of ARG but corresponding to the same values in VALLIST). */ int argmatch PARAMS ((const char *arg, const char *const *arglist, const char *vallist, size_t valsize)); int argcasematch PARAMS ((const char *arg, const char *const *arglist, const char *vallist, size_t valsize)); # define ARGMATCH(Arg, Arglist, Vallist) \ argmatch ((Arg), (Arglist), (const char *) (Vallist), sizeof (*(Vallist))) # define ARGCASEMATCH(Arg, Arglist, Vallist) \ argcasematch ((Arg), (Arglist), (const char *) (Vallist), sizeof (*(Vallist))) /* xargmatch calls this function when it fails. This function should not return. By default, this is a function that calls ARGMATCH_DIE which in turn defaults to `exit (EXIT_FAILURE)'. */ typedef void (*argmatch_exit_fn) PARAMS ((void)); extern argmatch_exit_fn argmatch_die; /* Report on stderr why argmatch failed. Report correct values. */ void argmatch_invalid PARAMS ((const char *context, const char *value, int problem)); /* Left for compatibility with the old name invalid_arg */ # define invalid_arg(Context, Value, Problem) \ argmatch_invalid ((Context), (Value), (Problem)) /* Report on stderr the list of possible arguments. */ void argmatch_valid PARAMS ((const char *const *arglist, const char *vallist, size_t valsize)); # define ARGMATCH_VALID(Arglist, Vallist) \ argmatch_valid (Arglist, (const char *) Vallist, sizeof (*(Vallist))) /* Same as argmatch, but upon failure, reports a explanation on the failure, and exits using the function EXIT_FN. */ int __xargmatch_internal PARAMS ((const char *context, const char *arg, const char *const *arglist, const char *vallist, size_t valsize, int case_sensitive, argmatch_exit_fn exit_fn)); /* Programmer friendly interface to __xargmatch_internal. */ # define XARGMATCH(Context, Arg, Arglist, Vallist) \ (Vallist [__xargmatch_internal ((Context), (Arg), (Arglist), \ (const char *) (Vallist), \ sizeof (*(Vallist)), \ 1, argmatch_die)]) # define XARGCASEMATCH(Context, Arg, Arglist, Vallist) \ (Vallist [__xargmatch_internal ((Context), (Arg), (Arglist), \ (const char *) (Vallist), \ sizeof (*(Vallist)), \ 0, argmatch_die)]) /* Convert a value into a corresponding argument. */ const char *argmatch_to_argument PARAMS ((char const *value, const char *const *arglist, const char *vallist, size_t valsize)); # define ARGMATCH_TO_ARGUMENT(Value, Arglist, Vallist) \ argmatch_to_argument ((char const *) &(Value), (Arglist), \ (const char *) (Vallist), sizeof (*(Vallist))) #endif /* ARGMATCH_H_ */ recode-3.6/src/charname.h0100644000000000000000000032024707126661727014066 0ustar rootroot/* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define NUMBER_OF_SINGLES 252 #define MAX_CHARNAME_LENGTH 56 #define NUMBER_OF_CHARNAMES 1827 static const char *const word[794] = { "letter", /* \001 */ "latin", /* \002 */ "with", /* \003 */ "small", /* \004 */ "capital", /* \005 */ "arabic", /* \006 */ "and", /* \007 */ "form", /* \010 */ "cyrillic", /* \011 */ "greek", /* \012 */ "acute", /* \013 */ "katakana", /* \014 */ "dot", /* \015 */ "above", /* \016 */ "hiragana", /* \017 */ "below", /* \020 */ "box", /* \021 */ "drawings", /* \022 */ "o", /* \023 */ "u", /* \024 */ "digit", /* \025 */ "circled", /* \026 */ "circumflex", /* \027 */ "a", /* \030 */ "light", /* \031 */ "heavy", /* \032 */ "e", /* \033 */ "left", /* \034 */ "right", /* \035 */ "sign", /* \036 */ "diaeresis", /* \037 */ "parenthesized", /* \040 */ "i", /* \041 */ "tilde", /* \042 */ "bopomofo", /* \043 */ "final", /* \044 */ "caron", /* \045 */ "mark", /* \046 */ "grave", /* \047 */ "macron", /* \050 */ "isolated", /* \051 */ "line", /* \052 */ "up", /* \053 */ "down", /* \054 */ "numeral", /* \055 */ "hebrew", /* \056 */ "breve", /* \057 */ "cedilla", /* \060 */ "n", /* \061 */ "roman", /* \062 */ "vertical", /* \063 */ "double", /* \064 */ "hook", /* \065 */ "horizontal", /* \066 */ "white", /* \067 */ "s", /* \070 */ "black", /* \071 */ "medial", /* \072 */ "alef", /* \073 */ "full", /* \074 */ "g", /* \075 */ "initial", /* \076 */ "l", /* \077 */ "non-spacing", /* \100 */ "stop", /* \101 */ "y", /* \102 */ "d", /* \103 */ "h", /* \104 */ "horn", /* \105 */ "t", /* \106 */ "z", /* \107 */ "of", /* \110 */ "to", /* \111 */ "bracket", /* \112 */ "c", /* \113 */ "ligature", /* \114 */ "one", /* \115 */ "r", /* \116 */ "(character", /* \117 */ "superscript", /* \120 */ "w", /* \121 */ "fraction", /* \122 */ "k", /* \123 */ "stroke", /* \124 */ "two", /* \125 */ "square", /* \126 */ "subscript", /* \127 */ "three", /* \130 */ "vulgar", /* \131 */ "(iso-ir-103", /* \132 */ "number", /* \133 */ "ogonek", /* \134 */ "arrow", /* \135 */ "b", /* \136 */ "lam", /* \137 */ "quotation", /* \140 */ "ring", /* \141 */ "dash", /* \142 */ "five", /* \143 */ "four", /* \144 */ "m", /* \145 */ "space", /* \146 */ "accent", /* \147 */ "seven", /* \150 */ "x", /* \151 */ "angle", /* \152 */ "arabic-indic", /* \153 */ "eastern", /* \154 */ "eight", /* \155 */ "equal", /* \156 */ "half", /* \157 */ "hamza", /* \160 */ "ideograph", /* \161 */ "nine", /* \162 */ "p", /* \163 */ "part)", /* \164 */ "six", /* \165 */ "triangle", /* \166 */ "v", /* \167 */ "iota", /* \170 */ "j", /* \171 */ "f", /* \172 */ "lower", /* \173 */ "ocr", /* \174 */ "single", /* \175 */ "suit", /* \176 */ "teh", /* \177 */ "character", /* \200 */ "ideographic", /* \201 */ "kaf", /* \202 */ "operator", /* \203 */ "upsilon", /* \204 */ "(macedonian)", /* \205 */ "ae", /* \206 */ "block", /* \207 */ "circle", /* \210 */ "control", /* \211 */ "end", /* \212 */ "fill", /* \213 */ "or", /* \214 */ "parenthesis", /* \215 */ "pe", /* \216 */ "prime", /* \217 */ "q", /* \220 */ "triple", /* \221 */ "ya", /* \222 */ "yeh", /* \223 */ "yu", /* \224 */ "zero", /* \225 */ "ain", /* \226 */ "beh", /* \227 */ "dad", /* \230 */ "dasia", /* \231 */ "device", /* \232 */ "en", /* \233 */ "feh", /* \234 */ "ghain", /* \235 */ "hah", /* \236 */ "heh", /* \237 */ "integral", /* \240 */ "iteration", /* \241 */ "jeem", /* \242 */ "ka", /* \243 */ "khah", /* \244 */ "left-pointing", /* \245 */ "meem", /* \246 */ "middle", /* \247 */ "noon", /* \250 */ "not", /* \251 */ "psili", /* \252 */ "qaf", /* \253 */ "right-pointing", /* \254 */ "sad", /* \255 */ "seen", /* \256 */ "sheen", /* \257 */ "start", /* \260 */ "tabulation", /* \261 */ "tah", /* \262 */ "theh", /* \263 */ "upper", /* \264 */ "zah", /* \265 */ "(icelandic)", /* \266 */ "(serbocroatian)", /* \267 */ "alpha", /* \270 */ "area", /* \271 */ "be", /* \272 */ "corner", /* \273 */ "de", /* \274 */ "diamond", /* \275 */ "em", /* \276 */ "epsilon", /* \277 */ "eta", /* \300 */ "ezh", /* \301 */ "ghe", /* \302 */ "greater-than", /* \303 */ "ha", /* \304 */ "ie", /* \305 */ "inverted", /* \306 */ "koppa", /* \307 */ "lenticular", /* \310 */ "less-than", /* \311 */ "low", /* \312 */ "madda", /* \313 */ "mu", /* \314 */ "nu", /* \315 */ "omega", /* \316 */ "omicron", /* \317 */ "perispomeni", /* \320 */ "pi", /* \321 */ "pneumata", /* \322 */ "quadruple", /* \323 */ "reversed", /* \324 */ "separator", /* \325 */ "set", /* \326 */ "short", /* \327 */ "sound", /* \330 */ "te", /* \331 */ "ten", /* \332 */ "tu", /* \333 */ "varia", /* \334 */ "wa", /* \335 */ "waw", /* \336 */ "yo", /* \337 */ "ze", /* \340 */ "(iso-10646-1dis", /* \341 */ "(iso-ir-149", /* \342 */ "(iso-ir-18", /* \343 */ "(iso-ir-55", /* \344 */ "beta", /* \345 */ "comma", /* \346 */ "dal", /* \347 */ "degree", /* \350 */ "diagonal", /* \351 */ "eighth", /* \352 */ "eighths", /* \353 */ "eleven", /* \354 */ "eng", /* \355 */ "equals", /* \356 */ "er", /* \357 */ "exclamation", /* \360 */ "feed", /* \361 */ "fifths", /* \362 */ "he", /* \363 */ "index", /* \364 */ "introducer", /* \365 */ "katakana-hiragana", /* \366 */ "ke", /* \367 */ "maksura", /* \370 */ "marbuta", /* \371 */ "minus", /* \372 */ "music", /* \373 */ "no", /* \374 */ "partial", /* \375\001 */ "plus", /* \375\002 */ "question", /* \375\003 */ "reh", /* \375\004 */ "rightwards", /* \375\005 */ "shade", /* \375\006 */ "sigma", /* \375\007 */ "soft", /* \375\010 */ "solidus", /* \375\011 */ "string", /* \375\012 */ "telephone", /* \375\013 */ "thal", /* \375\014 */ "twelve", /* \375\015 */ "unit", /* \375\016 */ "ve", /* \375\017 */ "voiced", /* \375\020 */ "zain", /* \375\021 */ "(byelorussian)", /* \375\022 */ "(iso-ir-38", /* \375\023 */ "(iso-ir-8-1", /* \375\024 */ "(lappish)", /* \375\025 */ "(ukrainian)", /* \375\026 */ "201)", /* \375\027 */ "204)", /* \375\030 */ "206)", /* \375\031 */ "acknowledge", /* \375\032 */ "all", /* \375\033 */ "apostrophe", /* \375\034 */ "approximately", /* \375\035 */ "asterisk", /* \375\036 */ "ba", /* \375\037 */ "bar", /* \375\040 */ "barred", /* \375\041 */ "bi", /* \375\042 */ "big", /* \375\043 */ "bo", /* \375\044 */ "break", /* \375\045 */ "bu", /* \375\046 */ "bullet", /* \375\047 */ "byelorussian-ukrainian", /* \375\050 */ "cancel", /* \375\051 */ "ceiling", /* \375\052 */ "che", /* \375\053 */ "check", /* \375\054 */ "chi", /* \375\055 */ "club", /* \375\056 */ "command", /* \375\057 */ "compatibility", /* \375\060 */ "copyright", /* \375\061 */ "crosshatch", /* \375\062 */ "curly", /* \375\063 */ "da", /* \375\064 */ "dagger", /* \375\065 */ "delta", /* \375\066 */ "di", /* \375\067 */ "digamma", /* \375\070 */ "ditto", /* \375\071 */ "dje", /* \375\072 */ "do", /* \375\073 */ "down-pointing", /* \375\074 */ "du", /* \375\075 */ "dze", /* \375\076 */ "dzhe", /* \375\077 */ "east", /* \375\100 */ "ef", /* \375\101 */ "el", /* \375\102 */ "ellipsis", /* \375\103 */ "es", /* \375\104 */ "escape", /* \375\105 */ "eth", /* \375\106 */ "face", /* \375\107 */ "fifty", /* \375\110 */ "fita", /* \375\111 */ "floor", /* \375\112 */ "fork", /* \375\113 */ "ga", /* \375\114 */ "gamma", /* \375\115 */ "ge", /* \375\116 */ "gi", /* \375\117 */ "gje", /* \375\120 */ "go", /* \375\121 */ "gu", /* \375\122 */ "guarded", /* \375\123 */ "hard", /* \375\124 */ "heart", /* \375\125 */ "here", /* \375\126 */ "hi", /* \375\127 */ "high-reversed-9", /* \375\130 */ "ho", /* \375\131 */ "hu", /* \375\132 */ "hyphen", /* \375\133 */ "ij", /* \375\134 */ "indicator", /* \375\135 */ "inverse", /* \375\136 */ "io", /* \375\137 */ "izhitsa", /* \375\140 */ "je", /* \375\141 */ "kappa", /* \375\142 */ "ki", /* \375\143 */ "kje", /* \375\144 */ "ko", /* \375\145 */ "ku", /* \375\146 */ "lamda", /* \375\147 */ "leftwards", /* \375\150 */ "lje", /* \375\151 */ "logical", /* \375\152 */ "low-9", /* \375\153 */ "ma", /* \375\154 */ "me", /* \375\155 */ "medium", /* \375\156 */ "mem", /* \375\157 */ "meridiam", /* \375\160 */ "message", /* \375\161 */ "mi", /* \375\162 */ "mo", /* \375\163 */ "much", /* \375\164 */ "n-ary", /* \375\165 */ "na", /* \375\166 */ "ne", /* \375\167 */ "next", /* \375\170 */ "ni", /* \375\171 */ "nje", /* \375\172 */ "north", /* \375\173 */ "note", /* \375\174 */ "notes", /* \375\175 */ "nun", /* \375\176 */ "oe", /* \375\177 */ "oi", /* \375\200 */ "ordinal", /* \375\201 */ "pa", /* \375\202 */ "phi", /* \375\203 */ "po", /* \375\204 */ "pointing", /* \375\205 */ "private", /* \375\206 */ "psi", /* \375\207 */ "pu", /* \375\210 */ "quarter", /* \375\211 */ "ra", /* \375\212 */ "re", /* \375\213 */ "rectangle", /* \375\214 */ "reverse", /* \375\215 */ "rho", /* \375\216 */ "ri", /* \375\217 */ "ro", /* \375\220 */ "ru", /* \375\221 */ "sa", /* \375\222 */ "sampi", /* \375\223 */ "se", /* \375\224 */ "selected", /* \375\225 */ "semicolon", /* \375\226 */ "sha", /* \375\227 */ "shadda", /* \375\230 */ "sharp", /* \375\231 */ "shcha", /* \375\232 */ "shell", /* \375\233 */ "shift", /* \375\234 */ "si", /* \375\235 */ "single-shift", /* \375\236 */ "smiling", /* \375\237 */ "so", /* \375\240 */ "south", /* \375\241 */ "spade", /* \375\242 */ "star", /* \375\243 */ "stigma", /* \375\244 */ "su", /* \375\245 */ "subset", /* \375\246 */ "superset", /* \375\247 */ "ta", /* \375\250 */ "tau", /* \375\251 */ "text", /* \375\252 */ "theta", /* \375\253 */ "thorn", /* \375\254 */ "ti", /* \375\255 */ "tortoise", /* \375\256 */ "transmission", /* \375\257 */ "tsadi", /* \375\260 */ "tse", /* \375\261 */ "tshe", /* \375\262 */ "ukrainian", /* \375\263 */ "up-pointing", /* \375\264 */ "upturn", /* \375\265 */ "use", /* \375\266 */ "vu", /* \375\267 */ "we", /* \375\270 */ "west", /* \375\271 */ "wi", /* \375\272 */ "wo", /* \375\273 */ "xi", /* \375\274 */ "yat", /* \375\275 */ "yeru", /* \375\276 */ "yi", /* \375\277 */ "yus", /* \375\300 */ "za", /* \375\301 */ "zeta", /* \375\302 */ "zhe", /* \375\303 */ "zi", /* \375\304 */ "zo", /* \375\305 */ "zu", /* \375\306 */ "(ack)", /* \375\307 */ "(apc)", /* \375\310 */ "(bel)", /* \375\311 */ "(bph)", /* \375\312 */ "(bs)", /* \375\313 */ "(can)", /* \375\314 */ "(cch)", /* \375\315 */ "(cr)", /* \375\316 */ "(csi)", /* \375\317 */ "(dc1)", /* \375\320 */ "(dc2)", /* \375\321 */ "(dc3)", /* \375\322 */ "(dc4)", /* \375\323 */ "(dcs)", /* \375\324 */ "(del)", /* \375\325 */ "(dle)", /* \375\326 */ "(em)", /* \375\327 */ "(enq)", /* \375\330 */ "(eot)", /* \375\331 */ "(epa)", /* \375\332 */ "(esa)", /* \375\333 */ "(esc)", /* \375\334 */ "(etb)", /* \375\335 */ "(etx)", /* \375\336 */ "(ff)", /* \375\337 */ "(german)", /* \375\340 */ "(greenlandic)", /* \375\341 */ "(hop)", /* \375\342 */ "(ht)", /* \375\343 */ "(htj)", /* \375\344 */ "(hts)", /* \375\345 */ "(ibm437", /* \375\346 */ "(ibm868", /* \375\347 */ "(ind)", /* \375\350 */ "(is1)", /* \375\351 */ "(is2)", /* \375\352 */ "(is3)", /* \375\353 */ "(is4)", /* \375\354 */ "(iso-ir-128", /* \375\355 */ "(iso-ir-158", /* \375\356 */ "(iso-ir-70", /* \375\357 */ "(iso-ir-83", /* \375\360 */ "(lf)", /* \375\361 */ "(mnemonic)", /* \375\362 */ "(mw)", /* \375\363 */ "(nak)", /* \375\364 */ "(nbh)", /* \375\365 */ "(nel)", /* \375\366 */ "(nul)", /* \375\367 */ "(osc)", /* \375\370 */ "(pad)", /* \375\371 */ "(pld)", /* \375\372 */ "(plu)", /* \375\373 */ "(pm)", /* \375\374 */ "(pu1)", /* \375\375 */ "(pu2)", /* \375\376 */ "(ri)", /* \375\377 */ "(sci)", /* \376\001 */ "(sgci)", /* \376\002 */ "(si)", /* \376\003 */ "(so)", /* \376\004 */ "(soh)", /* \376\005 */ "(sos)", /* \376\006 */ "(spa)", /* \376\007 */ "(ss2)", /* \376\010 */ "(ss3)", /* \376\011 */ "(ssa)", /* \376\012 */ "(st)", /* \376\013 */ "(sts)", /* \376\014 */ "(stx)", /* \376\015 */ "(sub)", /* \376\016 */ "(syn)", /* \376\017 */ "(tonos", /* \376\020 */ "(vt)", /* \376\021 */ "(vts)", /* \376\022 */ "0267)", /* \376\023 */ "0268)", /* \376\024 */ "0269)", /* \376\025 */ "0294)", /* \376\026 */ "032/032/038/046)", /* \376\027 */ "032/032/042/164)", /* \376\030 */ "032/032/042/165)", /* \376\031 */ "064)", /* \376\032 */ "096)", /* \376\033 */ "124)", /* \376\034 */ "142)", /* \376\035 */ "144)", /* \376\036 */ "159)", /* \376\037 */ "192)", /* \376\040 */ "193)", /* \376\041 */ "194)", /* \376\042 */ "195)", /* \376\043 */ "196)", /* \376\044 */ "197)", /* \376\045 */ "198)", /* \376\046 */ "199)", /* \376\047 */ "200)", /* \376\050 */ "202)", /* \376\051 */ "203)", /* \376\052 */ "217)", /* \376\053 */ "37)", /* \376\054 */ "38)", /* \376\055 */ "39)", /* \376\056 */ "92)", /* \376\057 */ "99)", /* \376\060 */ "account", /* \376\061 */ "accute", /* \376\062 */ "ai", /* \376\063 */ "almost", /* \376\064 */ "amount", /* \376\065 */ "ampersand", /* \376\066 */ "an", /* \376\067 */ "ang", /* \376\070 */ "angstroem", /* \376\071 */ "ante", /* \376\072 */ "application", /* \376\073 */ "arc", /* \376\074 */ "as", /* \376\075 */ "asymptotically", /* \376\076 */ "at", /* \376\077 */ "au", /* \376\100 */ "ayin", /* \376\101 */ "backspace", /* \376\102 */ "backward", /* \376\103 */ "ballot", /* \376\104 */ "bank", /* \376\105 */ "because", /* \376\106 */ "bell", /* \376\107 */ "bet", /* \376\110 */ "bottom", /* \376\111 */ "branch", /* \376\112 */ "broken", /* \376\113 */ "bullseye", /* \376\114 */ "by", /* \376\115 */ "care", /* \376\116 */ "caret", /* \376\117 */ "carriage", /* \376\120 */ "cent", /* \376\121 */ "centigrade", /* \376\122 */ "ch", /* \376\123 */ "chair", /* \376\124 */ "closing", /* \376\125 */ "colon", /* \376\126 */ "commercial", /* \376\127 */ "containing", /* \376\130 */ "contains", /* \376\131 */ "contour", /* \376\132 */ "corners", /* \376\133 */ "cross", /* \376\134 */ "currency", /* \376\135 */ "customer", /* \376\136 */ "dalet", /* \376\137 */ "damma", /* \376\140 */ "dammatan", /* \376\141 */ "dark", /* \376\142 */ "datalink", /* \376\143 */ "delete", /* \376\144 */ "dialytika)", /* \376\145 */ "differential", /* \376\146 */ "division", /* \376\147 */ "dollar", /* \376\150 */ "dotless", /* \376\151 */ "downwards", /* \376\152 */ "dutch", /* \376\153 */ "eh", /* \376\154 */ "ei", /* \376\155 */ "eighteen", /* \376\156 */ "element", /* \376\157 */ "empty", /* \376\160 */ "enquiry", /* \376\161 */ "exists", /* \376\162 */ "fahrenheit", /* \376\163 */ "fatha", /* \376\164 */ "fathatan", /* \376\165 */ "female", /* \376\166 */ "feminine", /* \376\167 */ "ff", /* \376\170 */ "ffi", /* \376\171 */ "ffl", /* \376\172 */ "fi", /* \376\173 */ "fifteen", /* \376\174 */ "fifth", /* \376\175 */ "file", /* \376\176 */ "fl", /* \376\177 */ "flat", /* \376\200 */ "for", /* \376\201 */ "forward", /* \376\202 */ "four-per-em", /* \376\203 */ "fourteen", /* \376\204 */ "gaf", /* \376\205 */ "geta", /* \376\206 */ "gimel", /* \376\207 */ "gn", /* \376\210 */ "graphic", /* \376\211 */ "group", /* \376\212 */ "guilder", /* \376\213 */ "hair", /* \376\214 */ "heading", /* \376\215 */ "het", /* \376\216 */ "high", /* \376\217 */ "house", /* \376\220 */ "hyphen-minus", /* \376\221 */ "identical", /* \376\222 */ "identification", /* \376\223 */ "idle", /* \376\224 */ "image", /* \376\225 */ "in", /* \376\226 */ "increment", /* \376\227 */ "infinity", /* \376\230 */ "intersection", /* \376\231 */ "iu", /* \376\232 */ "join", /* \376\233 */ "justification", /* \376\234 */ "kasra", /* \376\235 */ "kasratan", /* \376\236 */ "korean", /* \376\237 */ "kra", /* \376\240 */ "lamed", /* \376\241 */ "lazy", /* \376\242 */ "leader", /* \376\243 */ "lira", /* \376\244 */ "long", /* \376\245 */ "lozenge", /* \376\246 */ "male", /* \376\247 */ "maltese", /* \376\250 */ "masculine", /* \376\251 */ "member", /* \376\252 */ "micro", /* \376\253 */ "midline", /* \376\254 */ "mille", /* \376\255 */ "minus-or-plus", /* \376\256 */ "modifier", /* \376\257 */ "multiplication", /* \376\260 */ "nabla", /* \376\261 */ "natural", /* \376\262 */ "negative", /* \376\263 */ "ng", /* \376\264 */ "nineteen", /* \376\265 */ "no-break", /* \376\266 */ "null", /* \376\267 */ "numero", /* \376\270 */ "octet", /* \376\271 */ "ohm", /* \376\272 */ "open", /* \376\273 */ "operating", /* \376\274 */ "orthogonal", /* \376\275 */ "ou", /* \376\276 */ "out", /* \376\277 */ "overline", /* \376\300 */ "padding", /* \376\301 */ "parallel", /* \376\302 */ "peh", /* \376\303 */ "per", /* \376\304 */ "percent", /* \376\305 */ "period", /* \376\306 */ "permitted", /* \376\307 */ "peseta", /* \376\310 */ "pilcrow", /* \376\311 */ "plus-minus", /* \376\312 */ "post", /* \376\313 */ "postal", /* \376\314 */ "pound", /* \376\315 */ "preceded", /* \376\316 */ "prescription", /* \376\317 */ "preset", /* \376\320 */ "privacy", /* \376\321 */ "product", /* \376\322 */ "program", /* \376\323 */ "prolonged", /* \376\324 */ "proportion", /* \376\325 */ "proportional", /* \376\326 */ "qof", /* \376\327 */ "quarters", /* \376\330 */ "ratio", /* \376\331 */ "rays", /* \376\332 */ "record", /* \376\333 */ "recorder", /* \376\334 */ "recording", /* \376\335 */ "reference", /* \376\336 */ "registered", /* \376\337 */ "resh", /* \376\340 */ "return", /* \376\341 */ "root", /* \376\342 */ "rounded", /* \376\343 */ "samekh", /* \376\344 */ "section", /* \376\345 */ "semi-voiced", /* \376\346 */ "sequence", /* \376\347 */ "service", /* \376\350 */ "seventeen", /* \376\351 */ "sh", /* \376\352 */ "shin", /* \376\353 */ "six-per-em", /* \376\354 */ "sixteen", /* \376\355 */ "sixteenth", /* \376\356 */ "sixth", /* \376\357 */ "sixths", /* \376\360 */ "slash", /* \376\361 */ "st", /* \376\362 */ "standard", /* \376\363 */ "state", /* \376\364 */ "substitute", /* \376\365 */ "sukun", /* \376\366 */ "summation", /* \376\367 */ "sun", /* \376\370 */ "symbol", /* \376\371 */ "syncronous", /* \376\372 */ "system", /* \376\373 */ "tack", /* \376\374 */ "take", /* \376\375 */ "tatweel", /* \376\376 */ "tav", /* \376\377 */ "tel", /* \377\001 */ "terminator", /* \377\002 */ "tet", /* \377\003 */ "there", /* \377\004 */ "therefore", /* \377\005 */ "thin", /* \377\006 */ "third", /* \377\007 */ "thirds", /* \377\010 */ "thirteen", /* \377\011 */ "this", /* \377\012 */ "three-per-em", /* \377\013 */ "top", /* \377\014 */ "trade", /* \377\015 */ "transmit", /* \377\016 */ "twenty", /* \377\017 */ "umlaut", /* \377\020 */ "union", /* \377\021 */ "upwards", /* \377\022 */ "va", /* \377\023 */ "vav", /* \377\024 */ "vector", /* \377\025 */ "veh", /* \377\026 */ "vi", /* \377\027 */ "vo", /* \377\030 */ "waiting", /* \377\031 */ "wave", /* \377\032 */ "won", /* \377\033 */ "yen", /* \377\034 */ "yod", /* \377\035 */ "yr", /* \377\036 */ "zayin", /* \377\037 */ "zh", /* \377\040 */ }; struct charname { recode_ucs2 code; const char *crypted; }; static const struct charname charname[NUMBER_OF_CHARNAMES] = { {0x0000, "\376\267\375\367"}, {0x0001, "\260\110\376\215\376\005"}, {0x0002, "\260\110\375\252\376\015"}, {0x0003, "\212\110\375\252\375\336"}, {0x0004, "\212\110\375\257\375\331"}, {0x0005, "\376\161\375\330"}, {0x0006, "\375\032\375\307"}, {0x0007, "\376\107\375\311"}, {0x0008, "\376\102\375\313"}, {0x0009, "\200\261\375\343"}, {0x000A, "\052\361\375\361"}, {0x000B, "\052\261\376\021"}, {0x000C, "\010\361\375\337"}, {0x000D, "\376\120\376\341\375\316"}, {0x000E, "\375\234\376\277\376\004"}, {0x000F, "\375\234\376\226\376\003"}, {0x0010, "\376\143\375\105\375\326"}, {0x0011, "\232\211\115\375\320"}, {0x0012, "\232\211\125\375\321"}, {0x0013, "\232\211\130\375\322"}, {0x0014, "\232\211\144\375\323"}, {0x0015, "\376\263\375\032\375\364"}, {0x0016, "\376\372\376\224\376\017"}, {0x0017, "\212\110\375\257\207\375\335"}, {0x0018, "\375\051\375\314"}, {0x0019, "\212\110\375\156\375\327"}, {0x001A, "\376\365\376\016"}, {0x001B, "\375\105\375\334"}, {0x001C, "\376\176\325\375\354"}, {0x001D, "\376\212\325\375\353"}, {0x001E, "\376\333\325\375\352"}, {0x001F, "\375\016\325\375\351"}, {0x0020, "\146"}, {0x0021, "\360\046"}, {0x0022, "\140\046"}, {0x0023, "\133\036"}, {0x0024, "\376\150\036"}, {0x0025, "\376\305\036"}, {0x0026, "\376\066"}, {0x0027, "\375\034"}, {0x0028, "\034\215"}, {0x0029, "\035\215"}, {0x002A, "\375\036"}, {0x002B, "\375\002\036"}, {0x002C, "\346"}, {0x002D, "\376\221"}, {0x002E, "\074\101"}, {0x002F, "\375\011"}, {0x0030, "\025\225"}, {0x0031, "\025\115"}, {0x0032, "\025\125"}, {0x0033, "\025\130"}, {0x0034, "\025\144"}, {0x0035, "\025\143"}, {0x0036, "\025\165"}, {0x0037, "\025\150"}, {0x0038, "\025\155"}, {0x0039, "\025\162"}, {0x003A, "\376\126"}, {0x003B, "\375\226"}, {0x003C, "\311\036"}, {0x003D, "\356\036"}, {0x003E, "\303\036"}, {0x003F, "\375\003\046"}, {0x0040, "\376\127\376\077"}, {0x0041, "\002\005\001\030"}, {0x0042, "\002\005\001\136"}, {0x0043, "\002\005\001\113"}, {0x0044, "\002\005\001\103"}, {0x0045, "\002\005\001\033"}, {0x0046, "\002\005\001\172"}, {0x0047, "\002\005\001\075"}, {0x0048, "\002\005\001\104"}, {0x0049, "\002\005\001\041"}, {0x004A, "\002\005\001\171"}, {0x004B, "\002\005\001\123"}, {0x004C, "\002\005\001\077"}, {0x004D, "\002\005\001\145"}, {0x004E, "\002\005\001\061"}, {0x004F, "\002\005\001\023"}, {0x0050, "\002\005\001\163"}, {0x0051, "\002\005\001\220"}, {0x0052, "\002\005\001\116"}, {0x0053, "\002\005\001\070"}, {0x0054, "\002\005\001\106"}, {0x0055, "\002\005\001\024"}, {0x0056, "\002\005\001\167"}, {0x0057, "\002\005\001\121"}, {0x0058, "\002\005\001\151"}, {0x0059, "\002\005\001\102"}, {0x005A, "\002\005\001\107"}, {0x005B, "\034\126\112"}, {0x005C, "\375\215\375\011"}, {0x005D, "\035\126\112"}, {0x005E, "\027\147"}, {0x005F, "\312\052"}, {0x0060, "\047\147"}, {0x0061, "\002\004\001\030"}, {0x0062, "\002\004\001\136"}, {0x0063, "\002\004\001\113"}, {0x0064, "\002\004\001\103"}, {0x0065, "\002\004\001\033"}, {0x0066, "\002\004\001\172"}, {0x0067, "\002\004\001\075"}, {0x0068, "\002\004\001\104"}, {0x0069, "\002\004\001\041"}, {0x006A, "\002\004\001\171"}, {0x006B, "\002\004\001\123"}, {0x006C, "\002\004\001\077"}, {0x006D, "\002\004\001\145"}, {0x006E, "\002\004\001\061"}, {0x006F, "\002\004\001\023"}, {0x0070, "\002\004\001\163"}, {0x0071, "\002\004\001\220"}, {0x0072, "\002\004\001\116"}, {0x0073, "\002\004\001\070"}, {0x0074, "\002\004\001\106"}, {0x0075, "\002\004\001\024"}, {0x0076, "\002\004\001\167"}, {0x0077, "\002\004\001\121"}, {0x0078, "\002\004\001\151"}, {0x0079, "\002\004\001\102"}, {0x007A, "\002\004\001\107"}, {0x007B, "\034\375\063\112"}, {0x007C, "\063\052"}, {0x007D, "\035\375\063\112"}, {0x007E, "\042"}, {0x007F, "\376\144\375\325"}, {0x0080, "\376\301\200\375\371"}, {0x0081, "\376\217\376\271\376\320\375\342"}, {0x0082, "\375\045\376\307\375\126\375\312"}, {0x0083, "\374\375\045\375\126\375\365"}, {0x0084, "\364\375\350"}, {0x0085, "\375\170\052\375\366"}, {0x0086, "\260\110\375\225\271\376\012"}, {0x0087, "\212\110\375\225\271\375\333"}, {0x0088, "\200\261\326\375\345"}, {0x0089, "\200\261\003\376\234\375\344"}, {0x008A, "\052\261\326\376\022"}, {0x008B, "\375\001\052\376\202\375\372"}, {0x008C, "\375\001\052\376\103\375\373"}, {0x008D, "\375\215\052\361\375\377"}, {0x008E, "\375\236\125\376\010"}, {0x008F, "\375\236\130\376\011"}, {0x0090, "\232\211\375\012\375\324"}, {0x0091, "\375\206\375\266\115\375\375"}, {0x0092, "\375\206\375\266\125\375\376"}, {0x0093, "\326\377\016\376\364\376\014"}, {0x0094, "\375\051\200\375\315"}, {0x0095, "\375\161\377\031\375\363"}, {0x0096, "\260\110\375\123\271\376\007"}, {0x0097, "\212\110\375\123\271\375\332"}, {0x0098, "\260\110\375\012\376\006"}, {0x0099, "\175\376\211\200\365\376\002"}, {0x009A, "\175\200\365\376\001"}, {0x009B, "\211\376\347\365\375\317"}, {0x009C, "\375\012\377\002\376\013"}, {0x009D, "\376\274\376\373\375\057\375\370"}, {0x009E, "\376\321\375\161\375\374"}, {0x009F, "\376\073\376\323\375\057\375\310"}, {0x00A0, "\376\266\146"}, {0x00A1, "\306\360\046"}, {0x00A2, "\376\121\036"}, {0x00A3, "\376\315\036"}, {0x00A4, "\376\135\036"}, {0x00A5, "\377\034\036"}, {0x00A6, "\376\113\375\040"}, {0x00A7, "\376\345\036"}, {0x00A8, "\037"}, {0x00A9, "\375\061\036"}, {0x00AA, "\376\167\375\201\375\135"}, {0x00AB, "\245\064\152\140\046"}, {0x00AC, "\251\036"}, {0x00AD, "\375\010\375\133"}, {0x00AE, "\376\337\036"}, {0x00AF, "\050"}, {0x00B0, "\350\036"}, {0x00B1, "\376\312\036"}, {0x00B2, "\120\125"}, {0x00B3, "\120\130"}, {0x00B4, "\013\147"}, {0x00B5, "\376\253\036"}, {0x00B6, "\376\311\036"}, {0x00B7, "\247\015"}, {0x00B8, "\060"}, {0x00B9, "\120\115"}, {0x00BA, "\376\251\375\201\375\135"}, {0x00BB, "\254\064\152\140\046"}, {0x00BC, "\131\122\115\375\211"}, {0x00BD, "\131\122\115\157"}, {0x00BE, "\131\122\130\376\330"}, {0x00BF, "\306\375\003\046"}, {0x00C0, "\002\005\001\030\003\047"}, {0x00C1, "\002\005\001\030\003\013"}, {0x00C2, "\002\005\001\030\003\027"}, {0x00C3, "\002\005\001\030\003\042"}, {0x00C4, "\002\005\001\030\003\037"}, {0x00C5, "\002\005\001\030\003\141\016"}, {0x00C6, "\002\005\001\206"}, {0x00C7, "\002\005\001\113\003\060"}, {0x00C8, "\002\005\001\033\003\047"}, {0x00C9, "\002\005\001\033\003\013"}, {0x00CA, "\002\005\001\033\003\027"}, {0x00CB, "\002\005\001\033\003\037"}, {0x00CC, "\002\005\001\041\003\047"}, {0x00CD, "\002\005\001\041\003\013"}, {0x00CE, "\002\005\001\041\003\027"}, {0x00CF, "\002\005\001\041\003\037"}, {0x00D0, "\002\005\001\375\106\266"}, {0x00D1, "\002\005\001\061\003\042"}, {0x00D2, "\002\005\001\023\003\047"}, {0x00D3, "\002\005\001\023\003\013"}, {0x00D4, "\002\005\001\023\003\027"}, {0x00D5, "\002\005\001\023\003\042"}, {0x00D6, "\002\005\001\023\003\037"}, {0x00D7, "\376\260\036"}, {0x00D8, "\002\005\001\023\003\124"}, {0x00D9, "\002\005\001\024\003\047"}, {0x00DA, "\002\005\001\024\003\013"}, {0x00DB, "\002\005\001\024\003\027"}, {0x00DC, "\002\005\001\024\003\037"}, {0x00DD, "\002\005\001\102\003\013"}, {0x00DE, "\002\005\001\375\254\266"}, {0x00DF, "\002\004\001\375\231\070\375\340"}, {0x00E0, "\002\004\001\030\003\047"}, {0x00E1, "\002\004\001\030\003\013"}, {0x00E2, "\002\004\001\030\003\027"}, {0x00E3, "\002\004\001\030\003\042"}, {0x00E4, "\002\004\001\030\003\037"}, {0x00E5, "\002\004\001\030\003\141\016"}, {0x00E6, "\002\004\001\206"}, {0x00E7, "\002\004\001\113\003\060"}, {0x00E8, "\002\004\001\033\003\047"}, {0x00E9, "\002\004\001\033\003\013"}, {0x00EA, "\002\004\001\033\003\027"}, {0x00EB, "\002\004\001\033\003\037"}, {0x00EC, "\002\004\001\041\003\047"}, {0x00ED, "\002\004\001\041\003\013"}, {0x00EE, "\002\004\001\041\003\027"}, {0x00EF, "\002\004\001\041\003\037"}, {0x00F0, "\002\004\001\375\106\266"}, {0x00F1, "\002\004\001\061\003\042"}, {0x00F2, "\002\004\001\023\003\047"}, {0x00F3, "\002\004\001\023\003\013"}, {0x00F4, "\002\004\001\023\003\027"}, {0x00F5, "\002\004\001\023\003\042"}, {0x00F6, "\002\004\001\023\003\037"}, {0x00F7, "\376\147\036"}, {0x00F8, "\002\004\001\023\003\124"}, {0x00F9, "\002\004\001\024\003\047"}, {0x00FA, "\002\004\001\024\003\013"}, {0x00FB, "\002\004\001\024\003\027"}, {0x00FC, "\002\004\001\024\003\037"}, {0x00FD, "\002\004\001\102\003\013"}, {0x00FE, "\002\004\001\375\254\266"}, {0x00FF, "\002\004\001\102\003\037"}, {0x0100, "\002\005\001\030\003\050"}, {0x0101, "\002\004\001\030\003\050"}, {0x0102, "\002\005\001\030\003\057"}, {0x0103, "\002\004\001\030\003\057"}, {0x0104, "\002\005\001\030\003\134"}, {0x0105, "\002\004\001\030\003\134"}, {0x0106, "\002\005\001\113\003\013"}, {0x0107, "\002\004\001\113\003\013"}, {0x0108, "\002\005\001\113\003\027"}, {0x0109, "\002\004\001\113\003\027"}, {0x010A, "\002\005\001\113\003\015\016"}, {0x010B, "\002\004\001\113\003\015\016"}, {0x010C, "\002\005\001\113\003\045"}, {0x010D, "\002\004\001\113\003\045"}, {0x010E, "\002\005\001\103\003\045"}, {0x010F, "\002\004\001\103\003\045"}, {0x0110, "\002\005\001\103\003\124"}, {0x0111, "\002\004\001\103\003\124"}, {0x0112, "\002\005\001\033\003\050"}, {0x0113, "\002\004\001\033\003\050"}, {0x0114, "\002\005\001\033\003\057"}, {0x0115, "\002\004\001\033\003\057"}, {0x0116, "\002\005\001\033\003\015\016"}, {0x0117, "\002\004\001\033\003\015\016"}, {0x0118, "\002\005\001\033\003\134"}, {0x0119, "\002\004\001\033\003\134"}, {0x011A, "\002\005\001\033\003\045"}, {0x011B, "\002\004\001\033\003\045"}, {0x011C, "\002\005\001\075\003\027"}, {0x011D, "\002\004\001\075\003\027"}, {0x011E, "\002\005\001\075\003\057"}, {0x011F, "\002\004\001\075\003\057"}, {0x0120, "\002\005\001\075\003\015\016"}, {0x0121, "\002\004\001\075\003\015\016"}, {0x0122, "\002\005\001\075\003\060"}, {0x0123, "\002\004\001\075\003\060"}, {0x0124, "\002\005\001\104\003\027"}, {0x0125, "\002\004\001\104\003\027"}, {0x0126, "\002\005\001\104\003\124"}, {0x0127, "\002\004\001\104\003\124"}, {0x0128, "\002\005\001\041\003\042"}, {0x0129, "\002\004\001\041\003\042"}, {0x012A, "\002\005\001\041\003\050"}, {0x012B, "\002\004\001\041\003\050"}, {0x012C, "\002\005\001\041\003\057"}, {0x012D, "\002\004\001\041\003\057"}, {0x012E, "\002\005\001\041\003\134"}, {0x012F, "\002\004\001\041\003\134"}, {0x0130, "\002\005\001\041\003\015\016"}, {0x0131, "\002\004\001\041\376\151"}, {0x0132, "\002\005\114\375\134"}, {0x0133, "\002\004\114\375\134"}, {0x0134, "\002\005\001\171\003\027"}, {0x0135, "\002\004\001\171\003\027"}, {0x0136, "\002\005\001\123\003\060"}, {0x0137, "\002\004\001\123\003\060"}, {0x0138, "\002\004\001\376\240\375\341"}, {0x0139, "\002\005\001\077\003\013"}, {0x013A, "\002\004\001\077\003\013"}, {0x013B, "\002\005\001\077\003\060"}, {0x013C, "\002\004\001\077\003\060"}, {0x013D, "\002\005\001\077\003\045"}, {0x013E, "\002\004\001\077\003\045"}, {0x013F, "\002\005\001\077\003\247\015"}, {0x0140, "\002\004\001\077\003\247\015"}, {0x0141, "\002\005\001\077\003\124"}, {0x0142, "\002\004\001\077\003\124"}, {0x0143, "\002\005\001\061\003\013"}, {0x0144, "\002\004\001\061\003\013"}, {0x0145, "\002\005\001\061\003\060"}, {0x0146, "\002\004\001\061\003\060"}, {0x0147, "\002\005\001\061\003\045"}, {0x0148, "\002\004\001\061\003\045"}, {0x0149, "\002\004\001\061\376\316\376\115\375\034"}, {0x014A, "\002\005\001\355\375\025"}, {0x014B, "\002\004\001\355\375\025"}, {0x014C, "\002\005\001\023\003\050"}, {0x014D, "\002\004\001\023\003\050"}, {0x014E, "\002\005\001\023\003\057"}, {0x014F, "\002\004\001\023\003\057"}, {0x0150, "\002\005\001\023\003\064\013"}, {0x0151, "\002\004\001\023\003\064\013"}, {0x0152, "\002\005\114\375\177"}, {0x0153, "\002\004\114\375\177"}, {0x0154, "\002\005\001\116\003\013"}, {0x0155, "\002\004\001\116\003\013"}, {0x0156, "\002\005\001\116\003\060"}, {0x0157, "\002\004\001\116\003\060"}, {0x0158, "\002\005\001\116\003\045"}, {0x0159, "\002\004\001\116\003\045"}, {0x015A, "\002\005\001\070\003\013"}, {0x015B, "\002\004\001\070\003\013"}, {0x015C, "\002\005\001\070\003\027"}, {0x015D, "\002\004\001\070\003\027"}, {0x015E, "\002\005\001\070\003\060"}, {0x015F, "\002\004\001\070\003\060"}, {0x0160, "\002\005\001\070\003\045"}, {0x0161, "\002\004\001\070\003\045"}, {0x0162, "\002\005\001\106\003\060"}, {0x0163, "\002\004\001\106\003\060"}, {0x0164, "\002\005\001\106\003\045"}, {0x0165, "\002\004\001\106\003\045"}, {0x0166, "\002\005\001\106\003\124"}, {0x0167, "\002\004\001\106\003\124"}, {0x0168, "\002\005\001\024\003\042"}, {0x0169, "\002\004\001\024\003\042"}, {0x016A, "\002\005\001\024\003\050"}, {0x016B, "\002\004\001\024\003\050"}, {0x016C, "\002\005\001\024\003\057"}, {0x016D, "\002\004\001\024\003\057"}, {0x016E, "\002\005\001\024\003\141\016"}, {0x016F, "\002\004\001\024\003\141\016"}, {0x0170, "\002\005\001\024\003\064\013"}, {0x0171, "\002\004\001\024\003\064\013"}, {0x0172, "\002\005\001\024\003\134"}, {0x0173, "\002\004\001\024\003\134"}, {0x0174, "\002\005\001\121\003\027"}, {0x0175, "\002\004\001\121\003\027"}, {0x0176, "\002\005\001\102\003\027"}, {0x0177, "\002\004\001\102\003\027"}, {0x0178, "\002\005\001\102\003\037"}, {0x0179, "\002\005\001\107\003\013"}, {0x017A, "\002\004\001\107\003\013"}, {0x017B, "\002\005\001\107\003\015\016"}, {0x017C, "\002\004\001\107\003\015\016"}, {0x017D, "\002\005\001\107\003\045"}, {0x017E, "\002\004\001\107\003\045"}, {0x01A0, "\002\005\001\023\003\105"}, {0x01A1, "\002\004\001\023\003\105"}, {0x01A2, "\002\005\001\375\200"}, {0x01A3, "\002\004\001\375\200"}, {0x01A6, "\002\001\377\036"}, {0x01AF, "\002\005\001\024\003\105"}, {0x01B0, "\002\004\001\024\003\105"}, {0x01B5, "\002\005\001\107\003\124"}, {0x01B6, "\002\004\001\107\003\124"}, {0x01B7, "\002\005\001\301"}, {0x01CD, "\002\005\001\030\003\045"}, {0x01CE, "\002\004\001\030\003\045"}, {0x01CF, "\002\005\001\041\003\045"}, {0x01D0, "\002\004\001\041\003\045"}, {0x01D1, "\002\005\001\023\003\045"}, {0x01D2, "\002\004\001\023\003\045"}, {0x01D3, "\002\005\001\024\003\045"}, {0x01D4, "\002\004\001\024\003\045"}, {0x01D5, "\002\005\001\024\003\037\007\050"}, {0x01D6, "\002\004\001\024\003\037\007\050"}, {0x01D7, "\002\005\001\024\003\037\007\013"}, {0x01D8, "\002\004\001\024\003\037\007\013"}, {0x01D9, "\002\005\001\024\003\037\007\045"}, {0x01DA, "\002\004\001\024\003\037\007\045"}, {0x01DB, "\002\005\001\024\003\037\007\047"}, {0x01DC, "\002\004\001\024\003\037\007\047"}, {0x01DE, "\002\005\001\030\003\037\007\050"}, {0x01DF, "\002\004\001\030\003\037\007\050"}, {0x01E0, "\002\005\001\030\003\015\016\007\050"}, {0x01E1, "\002\004\001\030\003\015\016\007\050"}, {0x01E2, "\002\005\001\206\003\050"}, {0x01E3, "\002\004\001\206\003\050"}, {0x01E4, "\002\005\001\075\003\124"}, {0x01E5, "\002\004\001\075\003\124"}, {0x01E6, "\002\005\001\075\003\045"}, {0x01E7, "\002\004\001\075\003\045"}, {0x01E8, "\002\005\001\123\003\045"}, {0x01E9, "\002\004\001\123\003\045"}, {0x01EA, "\002\005\001\023\003\134"}, {0x01EB, "\002\004\001\023\003\134"}, {0x01EC, "\002\005\001\023\003\134\007\050"}, {0x01ED, "\002\004\001\023\003\134\007\050"}, {0x01EE, "\002\005\001\301\003\045"}, {0x01EF, "\002\004\001\301\003\045"}, {0x01F0, "\002\004\001\171\003\045"}, {0x01F4, "\002\005\001\075\003\013"}, {0x01F5, "\002\004\001\075\003\013"}, {0x01FA, "\002\005\001\030\003\141\016\007\013"}, {0x01FB, "\002\004\001\030\003\141\016\007\013"}, {0x01FC, "\002\005\001\206\003\013"}, {0x01FD, "\002\004\001\206\003\013"}, {0x01FE, "\002\005\001\023\003\124\007\013"}, {0x01FF, "\002\004\001\023\003\124\007\013"}, {0x0292, "\002\004\001\301\375\356\376\035"}, {0x02BB, "\376\257\001\034\157\141"}, {0x02C7, "\045"}, {0x02D8, "\057"}, {0x02D9, "\015\016"}, {0x02DA, "\141\016"}, {0x02DB, "\134"}, {0x02DD, "\064\013\147"}, {0x0374, "\012\055\036"}, {0x0375, "\012\173\055\036"}, {0x037A, "\012\170\020"}, {0x0385, "\013\147\007\037\376\020\007\376\145"}, {0x0386, "\012\005\001\270\003\013"}, {0x0388, "\012\005\001\277\003\013"}, {0x0389, "\012\005\001\300\003\013"}, {0x038A, "\012\005\001\170\003\013"}, {0x038C, "\012\005\001\317\003\013"}, {0x038E, "\012\005\001\204\003\013"}, {0x038F, "\012\005\001\316\003\013"}, {0x0390, "\012\004\001\170\003\013\007\037"}, {0x0391, "\012\005\001\270"}, {0x0392, "\012\005\001\345"}, {0x0393, "\012\005\001\375\115"}, {0x0394, "\012\005\001\375\066"}, {0x0395, "\012\005\001\277"}, {0x0396, "\012\005\001\375\302"}, {0x0397, "\012\005\001\300"}, {0x0398, "\012\005\001\375\253"}, {0x0399, "\012\005\001\170"}, {0x039A, "\012\005\001\375\142"}, {0x039B, "\012\005\001\375\147"}, {0x039C, "\012\005\001\314"}, {0x039D, "\012\005\001\315"}, {0x039E, "\012\005\001\375\274"}, {0x039F, "\012\005\001\317"}, {0x03A0, "\012\005\001\321"}, {0x03A1, "\012\005\001\375\216"}, {0x03A3, "\012\005\001\375\007"}, {0x03A4, "\012\005\001\375\251"}, {0x03A5, "\012\005\001\204"}, {0x03A6, "\012\005\001\375\203"}, {0x03A7, "\012\005\001\375\055"}, {0x03A8, "\012\005\001\375\207"}, {0x03A9, "\012\005\001\316"}, {0x03AA, "\012\005\001\170\003\037"}, {0x03AB, "\012\005\001\204\003\037"}, {0x03AC, "\012\004\001\270\003\013"}, {0x03AD, "\012\004\001\277\003\013"}, {0x03AE, "\012\004\001\300\003\013"}, {0x03AF, "\012\004\001\170\003\013"}, {0x03B0, "\012\004\001\204\003\013\007\037"}, {0x03B1, "\012\004\001\270"}, {0x03B2, "\012\004\001\345"}, {0x03B3, "\012\004\001\375\115"}, {0x03B4, "\012\004\001\375\066"}, {0x03B5, "\012\004\001\277"}, {0x03B6, "\012\004\001\375\302"}, {0x03B7, "\012\004\001\300"}, {0x03B8, "\012\004\001\375\253"}, {0x03B9, "\012\004\001\170"}, {0x03BA, "\012\004\001\375\142"}, {0x03BB, "\012\004\001\375\147"}, {0x03BC, "\012\004\001\314"}, {0x03BD, "\012\004\001\315"}, {0x03BE, "\012\004\001\375\274"}, {0x03BF, "\012\004\001\317"}, {0x03C0, "\012\004\001\321"}, {0x03C1, "\012\004\001\375\216"}, {0x03C2, "\012\004\001\044\375\007"}, {0x03C3, "\012\004\001\375\007"}, {0x03C4, "\012\004\001\375\251"}, {0x03C5, "\012\004\001\204"}, {0x03C6, "\012\004\001\375\203"}, {0x03C7, "\012\004\001\375\055"}, {0x03C8, "\012\004\001\375\207"}, {0x03C9, "\012\004\001\316"}, {0x03CA, "\012\004\001\170\003\037"}, {0x03CB, "\012\004\001\204\003\037"}, {0x03CC, "\012\004\001\317\003\013"}, {0x03CD, "\012\004\001\204\003\013"}, {0x03CE, "\012\004\001\316\003\013"}, {0x03D0, "\012\004\001\247\345\343\376\060"}, {0x03DA, "\012\005\001\375\244"}, {0x03DC, "\012\005\001\375\070"}, {0x03DE, "\012\005\001\307"}, {0x03E0, "\012\005\001\375\223"}, {0x0401, "\011\005\001\375\137"}, {0x0402, "\011\005\001\375\072\267"}, {0x0403, "\011\005\001\375\120\205"}, {0x0404, "\011\005\001\375\263\305"}, {0x0405, "\011\005\001\375\076\205"}, {0x0406, "\011\005\001\375\050\041"}, {0x0407, "\011\005\001\375\277\375\026"}, {0x0408, "\011\005\001\375\141"}, {0x0409, "\011\005\001\375\151"}, {0x040A, "\011\005\001\375\172"}, {0x040B, "\011\005\001\375\262\267"}, {0x040C, "\011\005\001\375\144\205"}, {0x040E, "\011\005\001\327\024\375\022"}, {0x040F, "\011\005\001\375\077"}, {0x0410, "\011\005\001\030"}, {0x0411, "\011\005\001\272"}, {0x0412, "\011\005\001\375\017"}, {0x0413, "\011\005\001\302"}, {0x0414, "\011\005\001\274"}, {0x0415, "\011\005\001\305"}, {0x0416, "\011\005\001\375\303"}, {0x0417, "\011\005\001\340"}, {0x0418, "\011\005\001\041"}, {0x0419, "\011\005\001\327\041"}, {0x041A, "\011\005\001\243"}, {0x041B, "\011\005\001\375\102"}, {0x041C, "\011\005\001\276"}, {0x041D, "\011\005\001\233"}, {0x041E, "\011\005\001\023"}, {0x041F, "\011\005\001\216"}, {0x0420, "\011\005\001\357"}, {0x0421, "\011\005\001\375\104"}, {0x0422, "\011\005\001\331"}, {0x0423, "\011\005\001\024"}, {0x0424, "\011\005\001\375\101"}, {0x0425, "\011\005\001\304"}, {0x0426, "\011\005\001\375\261"}, {0x0427, "\011\005\001\375\053"}, {0x0428, "\011\005\001\375\227"}, {0x0429, "\011\005\001\375\232"}, {0x042A, "\011\005\001\375\124\036"}, {0x042B, "\011\005\001\375\276"}, {0x042C, "\011\005\001\375\010\036"}, {0x042D, "\011\005\001\033"}, {0x042E, "\011\005\001\224"}, {0x042F, "\011\005\001\222"}, {0x0430, "\011\004\001\030"}, {0x0431, "\011\004\001\272"}, {0x0432, "\011\004\001\375\017"}, {0x0433, "\011\004\001\302"}, {0x0434, "\011\004\001\274"}, {0x0435, "\011\004\001\305"}, {0x0436, "\011\004\001\375\303"}, {0x0437, "\011\004\001\340"}, {0x0438, "\011\004\001\041"}, {0x0439, "\011\004\001\327\041"}, {0x043A, "\011\004\001\243"}, {0x043B, "\011\004\001\375\102"}, {0x043C, "\011\004\001\276"}, {0x043D, "\011\004\001\233"}, {0x043E, "\011\004\001\023"}, {0x043F, "\011\004\001\216"}, {0x0440, "\011\004\001\357"}, {0x0441, "\011\004\001\375\104"}, {0x0442, "\011\004\001\331"}, {0x0443, "\011\004\001\024"}, {0x0444, "\011\004\001\375\101"}, {0x0445, "\011\004\001\304"}, {0x0446, "\011\004\001\375\261"}, {0x0447, "\011\004\001\375\053"}, {0x0448, "\011\004\001\375\227"}, {0x0449, "\011\004\001\375\232"}, {0x044A, "\011\004\001\375\124\036"}, {0x044B, "\011\004\001\375\276"}, {0x044C, "\011\004\001\375\010\036"}, {0x044D, "\011\004\001\033"}, {0x044E, "\011\004\001\224"}, {0x044F, "\011\004\001\222"}, {0x0451, "\011\004\001\375\137"}, {0x0452, "\011\004\001\375\072\267"}, {0x0453, "\011\004\001\375\120\205"}, {0x0454, "\011\004\001\375\263\305"}, {0x0455, "\011\004\001\375\076\205"}, {0x0456, "\011\004\001\375\050\041"}, {0x0457, "\011\004\001\375\277\375\026"}, {0x0458, "\011\004\001\375\141"}, {0x0459, "\011\004\001\375\151"}, {0x045A, "\011\004\001\375\172"}, {0x045B, "\011\004\001\375\262\267"}, {0x045C, "\011\004\001\375\144\205"}, {0x045E, "\011\004\001\327\024\375\022"}, {0x045F, "\011\004\001\375\077"}, {0x0462, "\011\005\001\375\275"}, {0x0463, "\011\004\001\375\275"}, {0x046A, "\011\005\001\375\043\375\300"}, {0x046B, "\011\004\001\375\043\375\300"}, {0x0472, "\011\005\001\375\111"}, {0x0473, "\011\004\001\375\111"}, {0x0474, "\011\005\001\375\140"}, {0x0475, "\011\004\001\375\140"}, {0x0480, "\011\005\001\307"}, {0x0481, "\011\004\001\307"}, {0x0490, "\011\005\001\302\003\375\265"}, {0x0491, "\011\004\001\302\003\375\265"}, {0x05D0, "\056\001\073"}, {0x05D1, "\056\001\376\110"}, {0x05D2, "\056\001\376\207"}, {0x05D3, "\056\001\376\137"}, {0x05D4, "\056\001\363"}, {0x05D5, "\056\001\377\024"}, {0x05D6, "\056\001\377\037"}, {0x05D7, "\056\001\376\216"}, {0x05D8, "\056\001\377\003"}, {0x05D9, "\056\001\377\035"}, {0x05DA, "\056\001\044\202"}, {0x05DB, "\056\001\202"}, {0x05DC, "\056\001\376\241"}, {0x05DD, "\056\001\044\375\157"}, {0x05DE, "\056\001\375\157"}, {0x05DF, "\056\001\044\375\176"}, {0x05E0, "\056\001\375\176"}, {0x05E1, "\056\001\376\344"}, {0x05E2, "\056\001\376\101"}, {0x05E3, "\056\001\044\216"}, {0x05E4, "\056\001\216"}, {0x05E5, "\056\001\044\375\260"}, {0x05E6, "\056\001\375\260"}, {0x05E7, "\056\001\376\327"}, {0x05E8, "\056\001\376\340"}, {0x05E9, "\056\001\376\353"}, {0x05EA, "\056\001\376\377"}, {0x060C, "\006\346"}, {0x061B, "\006\375\226"}, {0x061F, "\006\375\003\046"}, {0x0621, "\006\001\160"}, {0x0622, "\006\001\073\003\313\016"}, {0x0623, "\006\001\073\003\160\016"}, {0x0624, "\006\001\336\003\160\016"}, {0x0625, "\006\001\073\003\160\020"}, {0x0626, "\006\001\223\003\160\016"}, {0x0627, "\006\001\073"}, {0x0628, "\006\001\227"}, {0x0629, "\006\001\177\371"}, {0x062A, "\006\001\177"}, {0x062B, "\006\001\263"}, {0x062C, "\006\001\242"}, {0x062D, "\006\001\236"}, {0x062E, "\006\001\244"}, {0x062F, "\006\001\347"}, {0x0630, "\006\001\375\014"}, {0x0631, "\006\001\375\004"}, {0x0632, "\006\001\375\021"}, {0x0633, "\006\001\256"}, {0x0634, "\006\001\257"}, {0x0635, "\006\001\255"}, {0x0636, "\006\001\230"}, {0x0637, "\006\001\262"}, {0x0638, "\006\001\265"}, {0x0639, "\006\001\226"}, {0x063A, "\006\001\235"}, {0x0640, "\006\376\376"}, {0x0641, "\006\001\234"}, {0x0642, "\006\001\253"}, {0x0643, "\006\001\202"}, {0x0644, "\006\001\137"}, {0x0645, "\006\001\246"}, {0x0646, "\006\001\250"}, {0x0647, "\006\001\237"}, {0x0648, "\006\001\336"}, {0x0649, "\006\001\073\370"}, {0x064A, "\006\001\223"}, {0x064B, "\006\376\165"}, {0x064C, "\006\376\141"}, {0x064D, "\006\376\236"}, {0x064E, "\006\376\164"}, {0x064F, "\006\376\140"}, {0x0650, "\006\376\235"}, {0x0651, "\006\375\230"}, {0x0652, "\006\376\366"}, {0x0660, "\154\153\025\225"}, {0x0661, "\154\153\025\115"}, {0x0662, "\154\153\025\125"}, {0x0663, "\154\153\025\130"}, {0x0664, "\154\153\025\144"}, {0x0665, "\154\153\025\143"}, {0x0666, "\154\153\025\165"}, {0x0667, "\154\153\025\150"}, {0x0668, "\154\153\025\155"}, {0x0669, "\154\153\025\162"}, {0x0670, "\120\006\001\073"}, {0x067E, "\006\001\376\303"}, {0x06A4, "\006\001\377\026"}, {0x06AF, "\006\001\376\205"}, {0x1E00, "\002\005\001\030\003\141\020"}, {0x1E01, "\002\004\001\030\003\141\020"}, {0x1E02, "\002\005\001\136\003\015\016"}, {0x1E03, "\002\004\001\136\003\015\016"}, {0x1E04, "\002\005\001\136\003\015\020"}, {0x1E05, "\002\004\001\136\003\015\020"}, {0x1E06, "\002\005\001\136\003\052\020"}, {0x1E07, "\002\004\001\136\003\052\020"}, {0x1E08, "\002\005\001\113\003\060\007\013"}, {0x1E09, "\002\004\001\113\003\060\007\013"}, {0x1E0A, "\002\005\001\103\003\015\016"}, {0x1E0B, "\002\004\001\103\003\015\016"}, {0x1E0C, "\002\005\001\103\003\015\020"}, {0x1E0D, "\002\004\001\103\003\015\020"}, {0x1E0E, "\002\005\001\103\003\052\020"}, {0x1E0F, "\002\004\001\103\003\052\020"}, {0x1E10, "\002\005\001\103\003\060"}, {0x1E11, "\002\004\001\103\003\060"}, {0x1E12, "\002\005\001\103\003\027\020"}, {0x1E13, "\002\004\001\103\003\027\020"}, {0x1E14, "\002\005\001\033\003\050\007\047"}, {0x1E15, "\002\004\001\033\003\050\007\047"}, {0x1E16, "\002\005\001\033\003\050\007\013"}, {0x1E17, "\002\004\001\033\003\050\007\013"}, {0x1E18, "\002\005\001\033\003\027\020"}, {0x1E19, "\002\004\001\033\003\027\020"}, {0x1E1A, "\002\005\001\033\003\042\020"}, {0x1E1B, "\002\004\001\033\003\042\020"}, {0x1E1C, "\002\005\001\033\003\060\007\057"}, {0x1E1D, "\002\004\001\033\003\060\007\057"}, {0x1E1E, "\002\005\001\172\003\015\016"}, {0x1E1F, "\002\004\001\172\003\015\016"}, {0x1E20, "\002\005\001\075\003\050"}, {0x1E21, "\002\004\001\075\003\050"}, {0x1E22, "\002\005\001\104\003\015\016"}, {0x1E23, "\002\004\001\104\003\015\016"}, {0x1E24, "\002\005\001\104\003\015\020"}, {0x1E25, "\002\004\001\104\003\015\020"}, {0x1E26, "\002\005\001\104\003\037"}, {0x1E27, "\002\004\001\104\003\037"}, {0x1E28, "\002\005\001\104\003\060"}, {0x1E29, "\002\004\001\104\003\060"}, {0x1E2A, "\002\005\001\104\003\057\020"}, {0x1E2B, "\002\004\001\104\003\057\020"}, {0x1E2C, "\002\005\001\041\003\042\020"}, {0x1E2D, "\002\004\001\041\003\042\020"}, {0x1E2E, "\002\005\001\041\003\037\007\013"}, {0x1E2F, "\002\004\001\041\003\037\007\013"}, {0x1E30, "\002\005\001\123\003\013"}, {0x1E31, "\002\004\001\123\003\013"}, {0x1E32, "\002\005\001\123\003\015\020"}, {0x1E33, "\002\004\001\123\003\015\020"}, {0x1E34, "\002\005\001\123\003\052\020"}, {0x1E35, "\002\004\001\123\003\052\020"}, {0x1E36, "\002\005\001\077\003\015\020"}, {0x1E37, "\002\004\001\077\003\015\020"}, {0x1E3A, "\002\005\001\077\003\052\020"}, {0x1E3B, "\002\004\001\077\003\052\020"}, {0x1E3C, "\002\005\001\077\003\027\020"}, {0x1E3D, "\002\004\001\077\003\027\020"}, {0x1E3E, "\002\005\001\145\003\013"}, {0x1E3F, "\002\004\001\145\003\013"}, {0x1E40, "\002\005\001\145\003\015\016"}, {0x1E41, "\002\004\001\145\003\015\016"}, {0x1E42, "\002\005\001\145\003\015\020"}, {0x1E43, "\002\004\001\145\003\015\020"}, {0x1E44, "\002\005\001\061\003\015\016"}, {0x1E45, "\002\004\001\061\003\015\016"}, {0x1E46, "\002\005\001\061\003\015\020"}, {0x1E47, "\002\004\001\061\003\015\020"}, {0x1E48, "\002\005\001\061\003\052\020"}, {0x1E49, "\002\004\001\061\003\052\020"}, {0x1E4A, "\002\004\001\061\003\027\020"}, {0x1E4C, "\002\005\001\023\003\042\007\013"}, {0x1E4D, "\002\004\001\023\003\042\007\013"}, {0x1E4E, "\002\005\001\023\003\042\007\037"}, {0x1E4F, "\002\004\001\023\003\042\007\037"}, {0x1E50, "\002\005\001\023\003\050\007\047"}, {0x1E51, "\002\004\001\023\003\050\007\047"}, {0x1E52, "\002\005\001\023\003\050\007\013"}, {0x1E53, "\002\004\001\023\003\050\007\013"}, {0x1E54, "\002\005\001\163\003\013"}, {0x1E55, "\002\004\001\163\003\013"}, {0x1E56, "\002\005\001\163\003\015\016"}, {0x1E57, "\002\004\001\163\003\015\016"}, {0x1E58, "\002\005\001\116\003\015\016"}, {0x1E59, "\002\004\001\116\003\015\016"}, {0x1E5A, "\002\005\001\116\003\015\020"}, {0x1E5B, "\002\004\001\116\003\015\020"}, {0x1E5E, "\002\005\001\116\003\052\020"}, {0x1E5F, "\002\004\001\116\003\052\020"}, {0x1E60, "\002\005\001\070\003\015\016"}, {0x1E61, "\002\004\001\070\003\015\016"}, {0x1E62, "\002\005\001\070\003\015\020"}, {0x1E63, "\002\004\001\070\003\015\020"}, {0x1E64, "\002\005\001\070\003\013\007\015\016"}, {0x1E65, "\002\004\001\070\003\013\007\015\016"}, {0x1E66, "\002\005\001\070\003\045\007\015\016"}, {0x1E67, "\002\004\001\070\003\045\007\015\016"}, {0x1E6A, "\002\005\001\106\003\015\016"}, {0x1E6B, "\002\004\001\106\003\015\016"}, {0x1E6C, "\002\005\001\106\003\015\020"}, {0x1E6D, "\002\004\001\106\003\015\020"}, {0x1E6E, "\002\005\001\106\003\052\020"}, {0x1E6F, "\002\004\001\106\003\052\020"}, {0x1E70, "\002\005\001\106\003\027\020"}, {0x1E71, "\002\004\001\106\003\027\020"}, {0x1E74, "\002\005\001\024\003\042\020"}, {0x1E75, "\002\004\001\024\003\042\020"}, {0x1E76, "\002\005\001\024\003\027\020"}, {0x1E77, "\002\004\001\024\003\027\020"}, {0x1E78, "\002\005\001\024\003\042\007\013"}, {0x1E79, "\002\004\001\024\003\042\007\013"}, {0x1E7A, "\002\005\001\024\003\050\007\037"}, {0x1E7B, "\002\004\001\024\003\050\007\037"}, {0x1E7C, "\002\005\001\167\003\042"}, {0x1E7D, "\002\004\001\167\003\042"}, {0x1E7E, "\002\005\001\167\003\015\020"}, {0x1E7F, "\002\004\001\167\003\015\020"}, {0x1E80, "\002\005\001\121\003\047"}, {0x1E81, "\002\004\001\121\003\047"}, {0x1E82, "\002\005\001\121\003\013"}, {0x1E83, "\002\004\001\121\003\013"}, {0x1E84, "\002\005\001\121\003\037"}, {0x1E85, "\002\004\001\121\003\037"}, {0x1E86, "\002\005\001\121\003\015\016"}, {0x1E87, "\002\004\001\121\003\015\016"}, {0x1E88, "\002\005\001\121\003\015\020"}, {0x1E89, "\002\004\001\121\003\015\020"}, {0x1E8A, "\002\005\001\151\003\015\016"}, {0x1E8B, "\002\004\001\151\003\015\016"}, {0x1E8C, "\002\005\001\151\003\037"}, {0x1E8D, "\002\004\001\151\003\037"}, {0x1E8E, "\002\005\001\102\003\015\016"}, {0x1E8F, "\002\004\001\102\003\015\016"}, {0x1E90, "\002\005\001\107\003\027"}, {0x1E91, "\002\004\001\107\003\027"}, {0x1E92, "\002\005\001\107\003\015\020"}, {0x1E93, "\002\004\001\107\003\015\020"}, {0x1E94, "\002\005\001\107\003\052\020"}, {0x1E95, "\002\004\001\107\003\052\020"}, {0x1EA0, "\002\005\001\030\003\015\020"}, {0x1EA1, "\002\004\001\030\003\015\020"}, {0x1EA2, "\002\005\001\030\003\065\016"}, {0x1EA3, "\002\004\001\030\003\065\016"}, {0x1EA4, "\002\005\001\030\003\027\007\013"}, {0x1EA5, "\002\004\001\030\003\027\007\013"}, {0x1EA6, "\002\005\001\030\003\027\007\047"}, {0x1EA7, "\002\004\001\030\003\027\007\047"}, {0x1EA8, "\002\005\001\030\003\027\007\065\016"}, {0x1EA9, "\002\004\001\030\003\027\007\065\016"}, {0x1EAA, "\002\005\001\030\003\027\007\042"}, {0x1EAB, "\002\004\001\030\003\027\007\042"}, {0x1EAE, "\002\005\001\030\003\057\007\013"}, {0x1EAF, "\002\004\001\030\003\057\007\013"}, {0x1EB0, "\002\005\001\030\003\057\007\047"}, {0x1EB1, "\002\004\001\030\003\057\007\047"}, {0x1EB2, "\002\005\001\030\003\057\007\065\016"}, {0x1EB3, "\002\004\001\030\003\057\007\065\016"}, {0x1EB4, "\002\005\001\030\003\057\007\042"}, {0x1EB5, "\002\004\001\030\003\057\007\042"}, {0x1EB8, "\002\005\001\033\003\015\020"}, {0x1EB9, "\002\004\001\033\003\015\020"}, {0x1EBA, "\002\005\001\033\003\065\016"}, {0x1EBB, "\002\004\001\033\003\065\016"}, {0x1EBC, "\002\005\001\033\003\042"}, {0x1EBD, "\002\004\001\033\003\042"}, {0x1EBE, "\002\005\001\033\003\027\007\013"}, {0x1EBF, "\002\004\001\033\003\027\007\013"}, {0x1EC0, "\002\005\001\033\003\027\007\047"}, {0x1EC1, "\002\004\001\033\003\027\007\047"}, {0x1EC2, "\002\005\001\033\003\027\007\065\016"}, {0x1EC3, "\002\004\001\033\003\027\007\065\016"}, {0x1EC4, "\002\005\001\033\003\027\007\042"}, {0x1EC5, "\002\004\001\033\003\027\007\042"}, {0x1EC8, "\002\005\001\041\003\065\016"}, {0x1EC9, "\002\004\001\041\003\065\016"}, {0x1ECA, "\002\005\001\041\003\015\020"}, {0x1ECB, "\002\004\001\041\003\015\020"}, {0x1ECC, "\002\005\001\023\003\015\020"}, {0x1ECD, "\002\004\001\023\003\015\020"}, {0x1ECE, "\002\005\001\023\003\065\016"}, {0x1ECF, "\002\004\001\023\003\065\016"}, {0x1ED0, "\002\005\001\023\003\027\007\013"}, {0x1ED1, "\002\004\001\023\003\027\007\013"}, {0x1ED2, "\002\005\001\023\003\027\007\047"}, {0x1ED3, "\002\004\001\023\003\027\007\047"}, {0x1ED4, "\002\005\001\023\003\027\007\065\016"}, {0x1ED5, "\002\004\001\023\003\027\007\065\016"}, {0x1ED6, "\002\005\001\023\003\027\007\042"}, {0x1ED7, "\002\004\001\023\003\027\007\042"}, {0x1EDA, "\002\005\001\023\003\105\007\013"}, {0x1EDB, "\002\004\001\023\003\105\007\013"}, {0x1EDC, "\002\005\001\023\003\105\007\047"}, {0x1EDD, "\002\004\001\023\003\105\007\047"}, {0x1EDE, "\002\005\001\023\003\105\007\065\016"}, {0x1EDF, "\002\004\001\023\003\105\007\065\016"}, {0x1EE0, "\002\005\001\023\003\105\007\042"}, {0x1EE1, "\002\004\001\023\003\105\007\042"}, {0x1EE4, "\002\005\001\024\003\015\020"}, {0x1EE5, "\002\004\001\024\003\015\020"}, {0x1EE6, "\002\005\001\024\003\065\016"}, {0x1EE7, "\002\004\001\024\003\065\016"}, {0x1EE8, "\002\005\001\024\003\105\007\013"}, {0x1EE9, "\002\004\001\024\003\105\007\013"}, {0x1EEA, "\002\005\001\024\003\105\007\047"}, {0x1EEB, "\002\004\001\024\003\105\007\047"}, {0x1EEC, "\002\005\001\024\003\105\007\065\016"}, {0x1EED, "\002\004\001\024\003\105\007\065\016"}, {0x1EEE, "\002\005\001\024\003\105\007\042"}, {0x1EEF, "\002\004\001\024\003\105\007\042"}, {0x1EF2, "\002\005\001\102\003\047"}, {0x1EF3, "\002\004\001\102\003\047"}, {0x1EF4, "\002\005\001\102\003\015\020"}, {0x1EF5, "\002\004\001\102\003\015\020"}, {0x1EF6, "\002\005\001\102\003\065\016"}, {0x1EF7, "\002\004\001\102\003\065\016"}, {0x1EF8, "\002\005\001\102\003\042"}, {0x1EF9, "\002\004\001\102\003\042"}, {0x1FBF, "\012\252\322\343\376\034"}, {0x1FC0, "\012\320\341\376\031"}, {0x1FC1, "\012\037\007\320"}, {0x1FCD, "\012\252\007\334"}, {0x1FCE, "\012\252\007\013\147"}, {0x1FCF, "\012\252\007\320"}, {0x1FDD, "\012\231\007\334"}, {0x1FDE, "\012\231\007\013\147"}, {0x1FDF, "\012\231\007\320"}, {0x1FED, "\012\037\007\334"}, {0x1FEF, "\012\334\341\376\030"}, {0x1FFE, "\012\231\322\343\376\057"}, {0x2002, "\233\146"}, {0x2003, "\276\146"}, {0x2004, "\377\013\146"}, {0x2005, "\376\203\146"}, {0x2006, "\376\354\146"}, {0x2009, "\377\006\146"}, {0x200A, "\376\214\146"}, {0x2010, "\375\133"}, {0x2013, "\233\142"}, {0x2014, "\276\142"}, {0x2015, "\066\375\040"}, {0x2016, "\064\063\052"}, {0x2017, "\064\312\052"}, {0x2018, "\034\175\140\046"}, {0x2019, "\035\175\140\046"}, {0x201A, "\175\375\153\140\046"}, {0x201B, "\175\375\130\140\046"}, {0x201C, "\034\064\140\046"}, {0x201D, "\035\064\140\046"}, {0x201E, "\064\375\153\140\046"}, {0x201F, "\064\375\130\140\046"}, {0x2020, "\375\065"}, {0x2021, "\064\375\065"}, {0x2025, "\125\015\376\243"}, {0x2026, "\376\254\066\375\103"}, {0x2030, "\376\304\376\255\036"}, {0x2032, "\217"}, {0x2033, "\064\217"}, {0x2034, "\221\217"}, {0x2035, "\324\217"}, {0x2036, "\324\064\217"}, {0x2037, "\324\221\217"}, {0x2038, "\376\117"}, {0x2039, "\175\245\152\140\046"}, {0x203A, "\175\254\152\140\046"}, {0x203B, "\376\336\046"}, {0x203C, "\064\360\046"}, {0x203E, "\376\300"}, {0x2044, "\122\376\361"}, {0x2070, "\120\025\225"}, {0x2074, "\120\025\144"}, {0x2075, "\120\025\143"}, {0x2076, "\120\025\165"}, {0x2077, "\120\025\150"}, {0x2078, "\120\025\155"}, {0x2079, "\120\025\162"}, {0x207A, "\120\375\002\036"}, {0x207B, "\120\372"}, {0x207C, "\120\356\036"}, {0x207D, "\120\034\215"}, {0x207E, "\120\035\215"}, {0x207F, "\120\002\004\001\061"}, {0x2080, "\127\025\225"}, {0x2081, "\127\025\115"}, {0x2082, "\127\025\125"}, {0x2083, "\127\025\130"}, {0x2084, "\127\025\144"}, {0x2085, "\127\025\143"}, {0x2086, "\127\025\165"}, {0x2087, "\127\025\150"}, {0x2088, "\127\025\155"}, {0x2089, "\127\025\162"}, {0x208A, "\127\375\002\036"}, {0x208B, "\127\372"}, {0x208C, "\127\356\036"}, {0x208D, "\127\034\215"}, {0x208E, "\127\035\215"}, {0x20A4, "\376\244\036"}, {0x20A7, "\376\310\036"}, {0x20A9, "\377\033\036"}, {0x2103, "\350\376\122"}, {0x2105, "\376\116\110"}, {0x2109, "\350\376\163"}, {0x2116, "\376\270\036"}, {0x2117, "\330\376\335\375\061"}, {0x211E, "\376\317\376\375"}, {0x2120, "\376\350\046"}, {0x2122, "\377\015\046\036"}, {0x2126, "\376\272\036"}, {0x212B, "\376\071\036"}, {0x2153, "\131\122\115\377\007"}, {0x2154, "\131\122\125\377\010"}, {0x2155, "\131\122\115\376\175"}, {0x2156, "\131\122\125\362"}, {0x2157, "\131\122\130\362"}, {0x2158, "\131\122\144\362"}, {0x2159, "\131\122\115\376\357"}, {0x215A, "\131\122\143\376\360"}, {0x215B, "\131\122\115\352"}, {0x215C, "\131\122\130\353"}, {0x215D, "\131\122\143\353"}, {0x215E, "\131\122\150\353"}, {0x2160, "\062\055\115"}, {0x2161, "\062\055\125"}, {0x2162, "\062\055\130"}, {0x2163, "\062\055\144"}, {0x2164, "\062\055\143"}, {0x2165, "\062\055\165"}, {0x2166, "\062\055\150"}, {0x2167, "\062\055\155"}, {0x2168, "\062\055\162"}, {0x2169, "\062\055\332"}, {0x216A, "\062\055\354"}, {0x216B, "\062\055\375\015"}, {0x216C, "\062\055\375\110"}, {0x2170, "\004\062\055\115"}, {0x2171, "\004\062\055\125"}, {0x2172, "\004\062\055\130"}, {0x2173, "\004\062\055\144"}, {0x2174, "\004\062\055\143"}, {0x2175, "\004\062\055\165"}, {0x2176, "\004\062\055\150"}, {0x2177, "\004\062\055\155"}, {0x2178, "\004\062\055\162"}, {0x2179, "\004\062\055\332"}, {0x217A, "\004\062\055\354"}, {0x217B, "\004\062\055\375\015"}, {0x217C, "\004\062\055\375\110"}, {0x2190, "\375\150\135"}, {0x2191, "\377\022\135"}, {0x2192, "\375\005\135"}, {0x2193, "\376\152\135"}, {0x2194, "\034\035\135"}, {0x2195, "\053\054\135"}, {0x2196, "\375\173\375\271\135"}, {0x2197, "\375\173\375\100\135"}, {0x2198, "\375\241\375\100\135"}, {0x2199, "\375\241\375\271\135"}, {0x21C0, "\375\005\377\025\016\341\376\027"}, {0x21D0, "\375\150\064\135"}, {0x21D2, "\375\005\064\135"}, {0x21D4, "\034\035\064\135"}, {0x2200, "\376\201\375\033"}, {0x2202, "\375\001\376\146"}, {0x2203, "\377\004\376\162"}, {0x2205, "\376\160\326"}, {0x2206, "\376\227"}, {0x2207, "\376\261"}, {0x2208, "\376\157\110"}, {0x220B, "\376\131\376\075\376\252"}, {0x220F, "\375\165\376\322"}, {0x2211, "\375\165\376\367"}, {0x2212, "\372\036"}, {0x2213, "\376\256\036"}, {0x2217, "\375\036\203"}, {0x2218, "\141\203"}, {0x2219, "\375\047\203"}, {0x221A, "\126\376\342"}, {0x221D, "\376\326\111"}, {0x221E, "\376\230"}, {0x221F, "\035\152"}, {0x2220, "\152"}, {0x2225, "\376\302\111"}, {0x2227, "\375\152\007"}, {0x2228, "\375\152\214"}, {0x2229, "\376\231"}, {0x222A, "\377\021"}, {0x222B, "\240"}, {0x222C, "\064\240"}, {0x222E, "\376\132\240"}, {0x2234, "\377\005"}, {0x2235, "\376\106"}, {0x2236, "\376\331"}, {0x2237, "\376\325"}, {0x223C, "\042\203"}, {0x223E, "\306\376\242\070"}, {0x2243, "\376\076\156\111"}, {0x2245, "\375\035\156\111"}, {0x2248, "\376\064\156\111"}, {0x224C, "\375\033\156\111"}, {0x2253, "\376\225\110\214\375\035\156\111"}, {0x2260, "\251\156\111"}, {0x2261, "\376\222\111"}, {0x2264, "\311\214\156\111"}, {0x2265, "\303\214\156\111"}, {0x226A, "\375\164\311"}, {0x226B, "\375\164\303"}, {0x226E, "\251\311"}, {0x226F, "\251\303"}, {0x2282, "\375\246\110"}, {0x2283, "\375\247\110"}, {0x2286, "\375\246\110\214\156\111"}, {0x2287, "\375\247\110\214\156\111"}, {0x2299, "\026\015\203"}, {0x229A, "\026\141\203"}, {0x22A5, "\053\376\374"}, {0x22C5, "\015\203"}, {0x22EE, "\063\375\103"}, {0x2302, "\376\220"}, {0x2308, "\034\375\052"}, {0x2309, "\035\375\052"}, {0x230A, "\034\375\112"}, {0x230B, "\035\375\112"}, {0x2310, "\324\251\036"}, {0x2312, "\376\074"}, {0x2315, "\375\013\376\334"}, {0x2320, "\377\014\157\240"}, {0x2321, "\376\111\157\240"}, {0x2329, "\245\152\112"}, {0x232A, "\254\152\112"}, {0x2423, "\376\273\021"}, {0x2440, "\174\065"}, {0x2441, "\174\376\124"}, {0x2442, "\174\375\113"}, {0x2443, "\174\306\375\113"}, {0x2446, "\174\376\112\376\105\376\223"}, {0x2447, "\174\376\065\110\375\054"}, {0x2448, "\174\142"}, {0x2449, "\174\376\136\376\061\133"}, {0x2460, "\026\025\115"}, {0x2461, "\026\025\125"}, {0x2462, "\026\025\130"}, {0x2463, "\026\025\144"}, {0x2464, "\026\025\143"}, {0x2465, "\026\025\165"}, {0x2466, "\026\025\150"}, {0x2467, "\026\025\155"}, {0x2468, "\026\025\162"}, {0x2474, "\040\025\115"}, {0x2475, "\040\025\125"}, {0x2476, "\040\025\130"}, {0x2477, "\040\025\144"}, {0x2478, "\040\025\143"}, {0x2479, "\040\025\165"}, {0x247A, "\040\025\150"}, {0x247B, "\040\025\155"}, {0x247C, "\040\025\162"}, {0x2488, "\025\115\074\101"}, {0x2489, "\025\125\074\101"}, {0x248A, "\025\130\074\101"}, {0x248B, "\025\144\074\101"}, {0x248C, "\025\143\074\101"}, {0x248D, "\025\165\074\101"}, {0x248E, "\025\150\074\101"}, {0x248F, "\025\155\074\101"}, {0x2490, "\025\162\074\101"}, {0x2491, "\133\332\074\101"}, {0x2492, "\133\354\074\101"}, {0x2493, "\133\375\015\074\101"}, {0x2494, "\133\377\011\074\101"}, {0x2495, "\133\376\204\074\101"}, {0x2496, "\133\376\174\074\101"}, {0x2497, "\133\376\355\074\101"}, {0x2498, "\133\376\351\074\101"}, {0x2499, "\133\376\156\074\101"}, {0x249A, "\133\376\265\074\101"}, {0x249B, "\133\377\017\074\101"}, {0x249C, "\040\002\004\001\030"}, {0x249D, "\040\002\004\001\136"}, {0x249E, "\040\002\004\001\113"}, {0x249F, "\040\002\004\001\103"}, {0x24A0, "\040\002\004\001\033"}, {0x24A1, "\040\002\004\001\172"}, {0x24A2, "\040\002\004\001\075"}, {0x24A3, "\040\002\004\001\104"}, {0x24A4, "\040\002\004\001\041"}, {0x24A5, "\040\002\004\001\171"}, {0x24A6, "\040\002\004\001\123"}, {0x24A7, "\040\002\004\001\077"}, {0x24A8, "\040\002\004\001\145"}, {0x24A9, "\040\002\004\001\061"}, {0x24AA, "\040\002\004\001\023"}, {0x24AB, "\040\002\004\001\163"}, {0x24AC, "\040\002\004\001\220"}, {0x24AD, "\040\002\004\001\116"}, {0x24AE, "\040\002\004\001\070"}, {0x24AF, "\040\002\004\001\106"}, {0x24B0, "\040\002\004\001\024"}, {0x24B1, "\040\002\004\001\167"}, {0x24B2, "\040\002\004\001\121"}, {0x24B3, "\040\002\004\001\151"}, {0x24B4, "\040\002\004\001\102"}, {0x24B5, "\040\002\004\001\107"}, {0x24B6, "\026\002\005\001\030"}, {0x24B7, "\026\002\005\001\136"}, {0x24B8, "\026\002\005\001\113"}, {0x24B9, "\026\002\005\001\103"}, {0x24BA, "\026\002\005\001\033"}, {0x24BB, "\026\002\005\001\172"}, {0x24BC, "\026\002\005\001\075"}, {0x24BD, "\026\002\005\001\104"}, {0x24BE, "\026\002\005\001\041"}, {0x24BF, "\026\002\005\001\171"}, {0x24C0, "\026\002\005\001\123"}, {0x24C1, "\026\002\005\001\077"}, {0x24C2, "\026\002\005\001\145"}, {0x24C3, "\026\002\005\001\061"}, {0x24C4, "\026\002\005\001\023"}, {0x24C5, "\026\002\005\001\163"}, {0x24C6, "\026\002\005\001\220"}, {0x24C7, "\026\002\005\001\116"}, {0x24C8, "\026\002\005\001\070"}, {0x24C9, "\026\002\005\001\106"}, {0x24CA, "\026\002\005\001\024"}, {0x24CB, "\026\002\005\001\167"}, {0x24CC, "\026\002\005\001\121"}, {0x24CD, "\026\002\005\001\151"}, {0x24CE, "\026\002\005\001\102"}, {0x24CF, "\026\002\005\001\107"}, {0x24D0, "\026\002\004\001\030"}, {0x24D1, "\026\002\004\001\136"}, {0x24D2, "\026\002\004\001\113"}, {0x24D3, "\026\002\004\001\103"}, {0x24D4, "\026\002\004\001\033"}, {0x24D5, "\026\002\004\001\172"}, {0x24D6, "\026\002\004\001\075"}, {0x24D7, "\026\002\004\001\104"}, {0x24D8, "\026\002\004\001\041"}, {0x24D9, "\026\002\004\001\171"}, {0x24DA, "\026\002\004\001\123"}, {0x24DB, "\026\002\004\001\077"}, {0x24DC, "\026\002\004\001\145"}, {0x24DD, "\026\002\004\001\061"}, {0x24DE, "\026\002\004\001\023"}, {0x24DF, "\026\002\004\001\163"}, {0x24E0, "\026\002\004\001\220"}, {0x24E1, "\026\002\004\001\116"}, {0x24E2, "\026\002\004\001\070"}, {0x24E3, "\026\002\004\001\106"}, {0x24E4, "\026\002\004\001\024"}, {0x24E5, "\026\002\004\001\167"}, {0x24E6, "\026\002\004\001\121"}, {0x24E7, "\026\002\004\001\151"}, {0x24E8, "\026\002\004\001\102"}, {0x24E9, "\026\002\004\001\107"}, {0x24EA, "\026\025\225"}, {0x2500, "\021\022\031\066"}, {0x2502, "\021\022\031\063"}, {0x2504, "\021\022\031\221\142\066"}, {0x2505, "\021\022\032\221\142\066"}, {0x2506, "\021\022\031\221\142\063"}, {0x2507, "\021\022\032\221\142\063"}, {0x2508, "\021\022\031\323\142\066"}, {0x2509, "\021\022\032\323\142\066"}, {0x250A, "\021\022\031\323\142\063"}, {0x250B, "\021\022\032\323\142\063"}, {0x250C, "\021\022\031\054\007\035"}, {0x2510, "\021\022\031\054\007\034"}, {0x2514, "\021\022\031\053\007\035"}, {0x2518, "\021\022\031\053\007\034"}, {0x251C, "\021\022\031\063\007\035"}, {0x251E, "\021\022\053\032\007\035\054\031"}, {0x251F, "\021\022\054\032\007\035\053\031"}, {0x2521, "\021\022\054\031\007\035\053\032"}, {0x2522, "\021\022\053\031\007\035\054\032"}, {0x2524, "\021\022\031\063\007\034"}, {0x2526, "\021\022\053\032\007\034\054\031"}, {0x2527, "\021\022\054\032\007\034\053\031"}, {0x2529, "\021\022\054\031\007\034\053\032"}, {0x252A, "\021\022\053\031\007\034\054\032"}, {0x252C, "\021\022\031\054\007\066"}, {0x252D, "\021\022\034\032\007\035\054\031"}, {0x252E, "\021\022\035\032\007\034\054\031"}, {0x2531, "\021\022\035\031\007\034\054\032"}, {0x2532, "\021\022\034\031\007\035\054\032"}, {0x2534, "\021\022\031\053\007\066"}, {0x2535, "\021\022\034\032\007\035\053\031"}, {0x2536, "\021\022\035\032\007\034\053\031"}, {0x2539, "\021\022\035\031\007\034\053\032"}, {0x253A, "\021\022\034\031\007\035\053\032"}, {0x253C, "\021\022\031\063\007\066"}, {0x253D, "\021\022\034\032\007\035\063\031"}, {0x253E, "\021\022\035\032\007\034\063\031"}, {0x2540, "\021\022\053\032\007\054\066\031"}, {0x2541, "\021\022\054\032\007\053\066\031"}, {0x2547, "\021\022\054\031\007\053\066\032"}, {0x2548, "\021\022\053\031\007\054\066\032"}, {0x2549, "\021\022\035\031\007\034\063\032"}, {0x254A, "\021\022\034\031\007\035\063\032"}, {0x2550, "\021\022\032\066"}, {0x2551, "\021\022\032\063"}, {0x2552, "\021\022\054\031\007\035\032"}, {0x2553, "\021\022\054\032\007\035\031"}, {0x2554, "\021\022\032\054\007\035"}, {0x2555, "\021\022\054\031\007\034\032"}, {0x2556, "\021\022\054\032\007\034\031"}, {0x2557, "\021\022\032\054\007\034"}, {0x2558, "\021\022\053\031\007\035\032"}, {0x2559, "\021\022\053\032\007\035\031"}, {0x255A, "\021\022\032\053\007\035"}, {0x255B, "\021\022\053\031\007\034\032"}, {0x255C, "\021\022\053\032\007\034\031"}, {0x255D, "\021\022\032\053\007\034"}, {0x255E, "\021\022\063\031\007\035\032"}, {0x255F, "\021\022\063\032\007\035\031"}, {0x2560, "\021\022\032\063\007\035"}, {0x2561, "\021\022\063\031\007\034\032"}, {0x2562, "\021\022\063\032\007\034\031"}, {0x2563, "\021\022\032\063\007\034"}, {0x2564, "\021\022\054\031\007\066\032"}, {0x2565, "\021\022\054\032\007\066\031"}, {0x2566, "\021\022\032\054\007\066"}, {0x2567, "\021\022\053\031\007\066\032"}, {0x2568, "\021\022\053\032\007\066\031"}, {0x2569, "\021\022\032\053\007\066"}, {0x256A, "\021\022\063\031\007\066\032"}, {0x256B, "\021\022\063\032\007\066\031"}, {0x256C, "\021\022\032\063\007\066"}, {0x2571, "\021\022\031\351\264\035\111\173\034"}, {0x2572, "\021\022\031\351\264\034\111\173\035"}, {0x2580, "\264\157\207"}, {0x2584, "\173\157\207"}, {0x2588, "\074\207"}, {0x258C, "\034\157\207"}, {0x2590, "\035\157\207"}, {0x2591, "\031\375\006"}, {0x2592, "\375\156\375\006"}, {0x2593, "\376\142\375\006"}, {0x25A0, "\071\126"}, {0x25A1, "\067\126"}, {0x25A2, "\067\126\003\376\343\376\133"}, {0x25A3, "\067\126\376\130\071\004\126"}, {0x25A4, "\126\003\066\213"}, {0x25A5, "\126\003\063\213"}, {0x25A6, "\126\003\376\275\375\062\213"}, {0x25A7, "\126\003\264\034\111\173\035\213"}, {0x25A8, "\126\003\264\035\111\173\034\213"}, {0x25A9, "\126\003\351\375\062\213"}, {0x25AA, "\071\004\126"}, {0x25AC, "\071\375\214"}, {0x25AD, "\067\375\214"}, {0x25B2, "\071\375\264\166"}, {0x25B3, "\067\375\264\166"}, {0x25B7, "\067\254\166"}, {0x25BA, "\071\254\166"}, {0x25BC, "\071\375\074\166"}, {0x25BD, "\067\375\074\166"}, {0x25C1, "\067\245\166"}, {0x25C4, "\071\245\166"}, {0x25C6, "\071\275"}, {0x25C7, "\067\275"}, {0x25CA, "\376\246"}, {0x25CB, "\067\210"}, {0x25CE, "\376\114"}, {0x25CF, "\071\210"}, {0x25D0, "\210\003\034\157\071"}, {0x25D1, "\210\003\035\157\071"}, {0x25D8, "\375\136\375\047"}, {0x25D9, "\375\136\067\210"}, {0x25E2, "\071\173\035\166"}, {0x25E3, "\071\173\034\166"}, {0x25EF, "\210\375\360\376\026"}, {0x2605, "\071\375\243"}, {0x2606, "\067\375\243"}, {0x260E, "\071\375\013"}, {0x260F, "\067\375\013"}, {0x261C, "\067\034\375\205\364"}, {0x261E, "\067\035\375\205\364"}, {0x263A, "\067\375\237\375\107"}, {0x263B, "\071\375\237\375\107"}, {0x263C, "\067\376\370\003\376\332"}, {0x2640, "\376\166\036"}, {0x2642, "\376\247\036"}, {0x2660, "\071\375\242\176"}, {0x2661, "\067\375\125\176"}, {0x2662, "\067\275\176"}, {0x2663, "\071\375\056\176"}, {0x2664, "\067\375\242\176"}, {0x2665, "\071\375\125\176"}, {0x2666, "\071\275\176"}, {0x2667, "\067\375\056\176"}, {0x2669, "\375\211\375\174"}, {0x266A, "\352\375\174"}, {0x266B, "\375\041\352\375\175"}, {0x266C, "\375\041\376\356\375\175"}, {0x266D, "\373\376\200\036"}, {0x266E, "\373\376\262\036"}, {0x266F, "\373\375\231\036"}, {0x2713, "\375\054\046"}, {0x2717, "\376\104\151"}, {0x2720, "\376\250\376\134"}, {0x3000, "\201\146"}, {0x3001, "\201\346"}, {0x3002, "\201\376\306"}, {0x3003, "\375\071\046"}, {0x3005, "\201\241\046"}, {0x3006, "\201\376\125\046"}, {0x3007, "\201\133\225"}, {0x300A, "\034\064\152\112"}, {0x300B, "\035\064\152\112"}, {0x300C, "\034\273\112"}, {0x300D, "\035\273\112"}, {0x300E, "\034\067\273\112"}, {0x300F, "\035\067\273\112"}, {0x3010, "\034\071\310\112"}, {0x3011, "\035\071\310\112"}, {0x3012, "\376\314\046"}, {0x3013, "\376\206\046"}, {0x3014, "\034\375\256\375\233\112"}, {0x3015, "\035\375\256\375\233\112"}, {0x3016, "\034\067\310\112"}, {0x3017, "\035\067\310\112"}, {0x301C, "\377\032\142"}, {0x3041, "\017\001\004\030"}, {0x3042, "\017\001\030"}, {0x3043, "\017\001\004\041"}, {0x3044, "\017\001\041"}, {0x3045, "\017\001\004\024"}, {0x3046, "\017\001\024"}, {0x3047, "\017\001\004\033"}, {0x3048, "\017\001\033"}, {0x3049, "\017\001\004\023"}, {0x304A, "\017\001\023"}, {0x304B, "\017\001\243"}, {0x304C, "\017\001\375\114"}, {0x304D, "\017\001\375\143"}, {0x304E, "\017\001\375\117"}, {0x304F, "\017\001\375\146"}, {0x3050, "\017\001\375\122"}, {0x3051, "\017\001\367"}, {0x3052, "\017\001\375\116"}, {0x3053, "\017\001\375\145"}, {0x3054, "\017\001\375\121"}, {0x3055, "\017\001\375\222"}, {0x3056, "\017\001\375\301"}, {0x3057, "\017\001\375\235"}, {0x3058, "\017\001\375\304"}, {0x3059, "\017\001\375\245"}, {0x305A, "\017\001\375\306"}, {0x305B, "\017\001\375\224"}, {0x305C, "\017\001\340"}, {0x305D, "\017\001\375\240"}, {0x305E, "\017\001\375\305"}, {0x305F, "\017\001\375\250"}, {0x3060, "\017\001\375\064"}, {0x3061, "\017\001\375\255"}, {0x3062, "\017\001\375\067"}, {0x3063, "\017\001\004\333"}, {0x3064, "\017\001\333"}, {0x3065, "\017\001\375\075"}, {0x3066, "\017\001\331"}, {0x3067, "\017\001\274"}, {0x3068, "\017\001\111"}, {0x3069, "\017\001\375\073"}, {0x306A, "\017\001\375\166"}, {0x306B, "\017\001\375\171"}, {0x306C, "\017\001\315"}, {0x306D, "\017\001\375\167"}, {0x306E, "\017\001\374"}, {0x306F, "\017\001\304"}, {0x3070, "\017\001\375\037"}, {0x3071, "\017\001\375\202"}, {0x3072, "\017\001\375\127"}, {0x3073, "\017\001\375\042"}, {0x3074, "\017\001\321"}, {0x3075, "\017\001\375\132"}, {0x3076, "\017\001\375\046"}, {0x3077, "\017\001\375\210"}, {0x3078, "\017\001\363"}, {0x3079, "\017\001\272"}, {0x307A, "\017\001\216"}, {0x307B, "\017\001\375\131"}, {0x307C, "\017\001\375\044"}, {0x307D, "\017\001\375\204"}, {0x307E, "\017\001\375\154"}, {0x307F, "\017\001\375\162"}, {0x3080, "\017\001\314"}, {0x3081, "\017\001\375\155"}, {0x3082, "\017\001\375\163"}, {0x3083, "\017\001\004\222"}, {0x3084, "\017\001\222"}, {0x3085, "\017\001\004\224"}, {0x3086, "\017\001\224"}, {0x3087, "\017\001\004\337"}, {0x3088, "\017\001\337"}, {0x3089, "\017\001\375\212"}, {0x308A, "\017\001\375\217"}, {0x308B, "\017\001\375\221"}, {0x308C, "\017\001\375\213"}, {0x308D, "\017\001\375\220"}, {0x308E, "\017\001\004\335"}, {0x308F, "\017\001\335"}, {0x3090, "\017\001\375\272"}, {0x3091, "\017\001\375\270"}, {0x3092, "\017\001\375\273"}, {0x3093, "\017\001\061"}, {0x3094, "\017\001\375\267"}, {0x309B, "\366\375\020\330\046"}, {0x309C, "\366\376\346\330\046"}, {0x309D, "\017\241\046"}, {0x309E, "\017\375\020\241\046"}, {0x30A1, "\014\001\004\030"}, {0x30A2, "\014\001\030"}, {0x30A3, "\014\001\004\041"}, {0x30A4, "\014\001\041"}, {0x30A5, "\014\001\004\024"}, {0x30A6, "\014\001\024"}, {0x30A7, "\014\001\004\033"}, {0x30A8, "\014\001\033"}, {0x30A9, "\014\001\004\023"}, {0x30AA, "\014\001\023"}, {0x30AB, "\014\001\243"}, {0x30AC, "\014\001\375\114"}, {0x30AD, "\014\001\375\143"}, {0x30AE, "\014\001\375\117"}, {0x30AF, "\014\001\375\146"}, {0x30B0, "\014\001\375\122"}, {0x30B1, "\014\001\367"}, {0x30B2, "\014\001\375\116"}, {0x30B3, "\014\001\375\145"}, {0x30B4, "\014\001\375\121"}, {0x30B5, "\014\001\375\222"}, {0x30B6, "\014\001\375\301"}, {0x30B7, "\014\001\375\235"}, {0x30B8, "\014\001\375\304"}, {0x30B9, "\014\001\375\245"}, {0x30BA, "\014\001\375\306"}, {0x30BB, "\014\001\375\224"}, {0x30BC, "\014\001\340"}, {0x30BD, "\014\001\375\240"}, {0x30BE, "\014\001\375\305"}, {0x30BF, "\014\001\375\250"}, {0x30C0, "\014\001\375\064"}, {0x30C1, "\014\001\375\255"}, {0x30C2, "\014\001\375\067"}, {0x30C3, "\014\001\004\333"}, {0x30C4, "\014\001\333"}, {0x30C5, "\014\001\375\075"}, {0x30C6, "\014\001\331"}, {0x30C7, "\014\001\274"}, {0x30C8, "\014\001\111"}, {0x30C9, "\014\001\375\073"}, {0x30CA, "\014\001\375\166"}, {0x30CB, "\014\001\375\171"}, {0x30CC, "\014\001\315"}, {0x30CD, "\014\001\375\167"}, {0x30CE, "\014\001\374"}, {0x30CF, "\014\001\304"}, {0x30D0, "\014\001\375\037"}, {0x30D1, "\014\001\375\202"}, {0x30D2, "\014\001\375\127"}, {0x30D3, "\014\001\375\042"}, {0x30D4, "\014\001\321"}, {0x30D5, "\014\001\375\132"}, {0x30D6, "\014\001\375\046"}, {0x30D7, "\014\001\375\210"}, {0x30D8, "\014\001\363"}, {0x30D9, "\014\001\272"}, {0x30DA, "\014\001\216"}, {0x30DB, "\014\001\375\131"}, {0x30DC, "\014\001\375\044"}, {0x30DD, "\014\001\375\204"}, {0x30DE, "\014\001\375\154"}, {0x30DF, "\014\001\375\162"}, {0x30E0, "\014\001\314"}, {0x30E1, "\014\001\375\155"}, {0x30E2, "\014\001\375\163"}, {0x30E3, "\014\001\004\222"}, {0x30E4, "\014\001\222"}, {0x30E5, "\014\001\004\224"}, {0x30E6, "\014\001\224"}, {0x30E7, "\014\001\004\337"}, {0x30E8, "\014\001\337"}, {0x30E9, "\014\001\375\212"}, {0x30EA, "\014\001\375\217"}, {0x30EB, "\014\001\375\221"}, {0x30EC, "\014\001\375\213"}, {0x30ED, "\014\001\375\220"}, {0x30EE, "\014\001\004\335"}, {0x30EF, "\014\001\335"}, {0x30F0, "\014\001\375\272"}, {0x30F1, "\014\001\375\270"}, {0x30F2, "\014\001\375\273"}, {0x30F3, "\014\001\061"}, {0x30F4, "\014\001\375\267"}, {0x30F5, "\014\001\004\243"}, {0x30F6, "\014\001\004\367"}, {0x30F7, "\014\001\377\023"}, {0x30F8, "\014\001\377\027"}, {0x30F9, "\014\001\375\017"}, {0x30FA, "\014\001\377\030"}, {0x30FB, "\014\247\015"}, {0x30FC, "\366\376\324\330\046"}, {0x30FD, "\014\241\046"}, {0x30FE, "\014\375\020\241\046"}, {0x3105, "\043\001\136"}, {0x3106, "\043\001\163"}, {0x3107, "\043\001\145"}, {0x3108, "\043\001\172"}, {0x3109, "\043\001\103"}, {0x310A, "\043\001\106"}, {0x310B, "\043\001\061"}, {0x310C, "\043\001\077"}, {0x310D, "\043\001\075"}, {0x310E, "\043\001\123"}, {0x310F, "\043\001\104"}, {0x3110, "\043\001\171"}, {0x3111, "\043\001\220"}, {0x3112, "\043\001\151"}, {0x3113, "\043\001\377\040"}, {0x3114, "\043\001\376\123"}, {0x3115, "\043\001\376\352"}, {0x3116, "\043\001\116"}, {0x3117, "\043\001\107"}, {0x3118, "\043\001\113"}, {0x3119, "\043\001\070"}, {0x311A, "\043\001\030"}, {0x311B, "\043\001\023"}, {0x311C, "\043\001\033"}, {0x311D, "\043\001\376\154"}, {0x311E, "\043\001\376\063"}, {0x311F, "\043\001\376\155"}, {0x3120, "\043\001\376\100"}, {0x3121, "\043\001\376\276"}, {0x3122, "\043\001\376\067"}, {0x3123, "\043\001\233"}, {0x3124, "\043\001\376\070"}, {0x3125, "\043\001\355"}, {0x3126, "\043\001\357"}, {0x3127, "\043\001\041"}, {0x3128, "\043\001\024"}, {0x3129, "\043\001\376\232"}, {0x312A, "\043\001\167"}, {0x312B, "\043\001\376\264"}, {0x312C, "\043\001\376\210"}, {0x3220, "\040\161\115"}, {0x3221, "\040\161\125"}, {0x3222, "\040\161\130"}, {0x3223, "\040\161\144"}, {0x3224, "\040\161\143"}, {0x3225, "\040\161\165"}, {0x3226, "\040\161\150"}, {0x3227, "\040\161\155"}, {0x3228, "\040\161\162"}, {0x3229, "\040\161\332"}, {0x327F, "\376\237\376\363\376\371"}, {0x33C2, "\376\072\375\160\036\342\376\023"}, {0x33D8, "\376\313\375\160\036\342\376\024"}, {0xE000, "\100\377\020\375\023\375\027\117\164"}, {0xE001, "\100\037\003\147\375\357\376\040"}, {0xE002, "\100\047\147\132\376\041\117"}, {0xE003, "\100\013\147\132\376\042\117"}, {0xE004, "\100\027\147\132\376\043"}, {0xE005, "\100\042\132\376\044\117\164"}, {0xE006, "\100\050\132\376\045\117\164"}, {0xE007, "\100\057\132\376\046\117\164"}, {0xE008, "\100\015\016\132\376\047\117\164"}, {0xE009, "\100\037\132\376\050\117\164"}, {0xE00A, "\100\141\016\132\376\051\117\164"}, {0xE00B, "\100\060\132\376\052\117\164"}, {0xE00C, "\100\312\052\132\375\030\117"}, {0xE00D, "\100\064\376\062\132\375\030\117"}, {0xE00E, "\100\134\132\375\031\117\164"}, {0xE00F, "\100\045\132\375\031\117\164"}, {0xE010, "\100\064\312\052\375\023\376\053\117"}, {0xE011, "\100\376\245\375\011\375\355\375\027\117"}, {0xE012, "\012\100\252\322\344\376\054"}, {0xE013, "\012\100\231\322\344\376\055"}, {0xE014, "\012\100\170\020\344\376\056\117"}, {0xE015, "\201\375\071\046"}, {0xE016, "\006\001\073\044\010\375\060\375\347\376\036"}, {0xE017, "\377\001\375\060\036\342\376\025"}, {0xE018, "\375\016\146\030\375\024\376\032"}, {0xE019, "\375\016\146\136\375\024\376\033"}, {0xE01A, "\012\004\001\375\244"}, {0xE01B, "\012\004\001\375\070"}, {0xE01C, "\012\004\001\307"}, {0xE01D, "\012\004\001\375\223"}, {0xE01F, "\376\153\376\213\036\375\346\376\037"}, {0xE024, "\376\233\377\012\052\003\375\170\052\375\362"}, {0xFB00, "\002\004\114\376\170"}, {0xFB01, "\002\004\114\376\173"}, {0xFB02, "\002\004\114\376\177"}, {0xFB03, "\002\004\114\376\171"}, {0xFB04, "\002\004\114\376\172"}, {0xFB06, "\002\004\114\376\362"}, {0xFE7D, "\006\375\230\072\010"}, {0xFE82, "\006\001\073\003\313\016\044\010"}, {0xFE84, "\006\001\073\003\160\016\044\010"}, {0xFE8D, "\006\001\073\051\010"}, {0xFE8E, "\006\001\073\044\010"}, {0xFE8F, "\006\001\227\051\010"}, {0xFE90, "\006\001\227\044\010"}, {0xFE91, "\006\001\227\076\010"}, {0xFE92, "\006\001\227\072\010"}, {0xFE93, "\006\001\177\371\051\010"}, {0xFE94, "\006\001\177\371\044\010"}, {0xFE95, "\006\001\177\051\010"}, {0xFE96, "\006\001\177\044\010"}, {0xFE97, "\006\001\177\076\010"}, {0xFE98, "\006\001\177\072\010"}, {0xFE99, "\006\001\263\051\010"}, {0xFE9A, "\006\001\263\044\010"}, {0xFE9B, "\006\001\263\076\010"}, {0xFE9C, "\006\001\263\072\010"}, {0xFE9D, "\006\001\242\051\010"}, {0xFE9E, "\006\001\242\044\010"}, {0xFE9F, "\006\001\242\076\010"}, {0xFEA0, "\006\001\242\072\010"}, {0xFEA1, "\006\001\236\051\010"}, {0xFEA2, "\006\001\236\044\010"}, {0xFEA3, "\006\001\236\076\010"}, {0xFEA4, "\006\001\236\072\010"}, {0xFEA5, "\006\001\244\051\010"}, {0xFEA6, "\006\001\244\044\010"}, {0xFEA7, "\006\001\244\076\010"}, {0xFEA8, "\006\001\244\072\010"}, {0xFEA9, "\006\001\347\051\010"}, {0xFEAA, "\006\001\347\044\010"}, {0xFEAB, "\006\001\375\014\051\010"}, {0xFEAC, "\006\001\375\014\044\010"}, {0xFEAD, "\006\001\375\004\051\010"}, {0xFEAE, "\006\001\375\004\044\010"}, {0xFEAF, "\006\001\375\021\051\010"}, {0xFEB0, "\006\001\375\021\044\010"}, {0xFEB1, "\006\001\256\051\010"}, {0xFEB2, "\006\001\256\044\010"}, {0xFEB3, "\006\001\256\076\010"}, {0xFEB4, "\006\001\256\072\010"}, {0xFEB5, "\006\001\257\051\010"}, {0xFEB6, "\006\001\257\044\010"}, {0xFEB7, "\006\001\257\076\010"}, {0xFEB8, "\006\001\257\072\010"}, {0xFEB9, "\006\001\255\051\010"}, {0xFEBA, "\006\001\255\044\010"}, {0xFEBB, "\006\001\255\076\010"}, {0xFEBC, "\006\001\255\072\010"}, {0xFEBD, "\006\001\230\051\010"}, {0xFEBE, "\006\001\230\044\010"}, {0xFEBF, "\006\001\230\076\010"}, {0xFEC0, "\006\001\230\072\010"}, {0xFEC1, "\006\001\262\051\010"}, {0xFEC2, "\006\001\262\044\010"}, {0xFEC3, "\006\001\262\076\010"}, {0xFEC4, "\006\001\262\072\010"}, {0xFEC5, "\006\001\265\051\010"}, {0xFEC6, "\006\001\265\044\010"}, {0xFEC7, "\006\001\265\076\010"}, {0xFEC8, "\006\001\265\072\010"}, {0xFEC9, "\006\001\226\051\010"}, {0xFECA, "\006\001\226\044\010"}, {0xFECB, "\006\001\226\076\010"}, {0xFECC, "\006\001\226\072\010"}, {0xFECD, "\006\001\235\051\010"}, {0xFECE, "\006\001\235\044\010"}, {0xFECF, "\006\001\235\076\010"}, {0xFED0, "\006\001\235\072\010"}, {0xFED1, "\006\001\234\051\010"}, {0xFED2, "\006\001\234\044\010"}, {0xFED3, "\006\001\234\076\010"}, {0xFED4, "\006\001\234\072\010"}, {0xFED5, "\006\001\253\051\010"}, {0xFED6, "\006\001\253\044\010"}, {0xFED7, "\006\001\253\076\010"}, {0xFED8, "\006\001\253\072\010"}, {0xFED9, "\006\001\202\051\010"}, {0xFEDA, "\006\001\202\044\010"}, {0xFEDB, "\006\001\202\076\010"}, {0xFEDC, "\006\001\202\072\010"}, {0xFEDD, "\006\001\137\051\010"}, {0xFEDE, "\006\001\137\044\010"}, {0xFEDF, "\006\001\137\076\010"}, {0xFEE0, "\006\001\137\072\010"}, {0xFEE1, "\006\001\246\051\010"}, {0xFEE2, "\006\001\246\044\010"}, {0xFEE3, "\006\001\246\076\010"}, {0xFEE4, "\006\001\246\072\010"}, {0xFEE5, "\006\001\250\051\010"}, {0xFEE6, "\006\001\250\044\010"}, {0xFEE7, "\006\001\250\076\010"}, {0xFEE8, "\006\001\250\072\010"}, {0xFEE9, "\006\001\237\051\010"}, {0xFEEA, "\006\001\237\044\010"}, {0xFEEB, "\006\001\237\076\010"}, {0xFEEC, "\006\001\237\072\010"}, {0xFEED, "\006\001\336\051\010"}, {0xFEEE, "\006\001\336\044\010"}, {0xFEEF, "\006\001\073\370\051\010"}, {0xFEF0, "\006\001\073\370\044\010"}, {0xFEF1, "\006\001\223\051\010"}, {0xFEF2, "\006\001\223\044\010"}, {0xFEF3, "\006\001\223\076\010"}, {0xFEF4, "\006\001\223\072\010"}, {0xFEF5, "\006\114\137\003\073\003\313\016"}, {0xFEF6, "\006\114\137\003\073\003\313\016"}, {0xFEF7, "\006\114\137\003\073\003\160\016"}, {0xFEF8, "\006\114\137\003\073\003\160\016"}, {0xFEF9, "\006\114\137\003\073\003\160\020"}, {0xFEFA, "\006\114\137\003\073\003\160\020"}, {0xFEFB, "\006\114\137\003\073\051\010"}, {0xFEFC, "\006\114\137\003\073\044\010"}, }; recode-3.6/src/common.h0100644000000000000000000000624307126443217013565 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 96, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if HAVE_CONFIG_H # include #endif #if MSDOS || WIN32 || _WIN32 # define DOSWIN 1 # define DOSWIN_OR_OS2 1 #endif #if OS2 # define DOSWIN_OR_OS2 1 #endif #include #include #if STDC_HEADERS # include #endif #if HAVE_STDBOOL_H # include #else typedef enum {false = 0, true = 1} bool; #endif #if HAVE_STRING_H # include #else # include # define strchr index # define strrchr rindex #endif #include #ifndef RETSIGTYPE # define RETSIGTYPE void #endif #if DIFF_HASH # ifdef HAVE_LIMITS_H # include # endif # ifndef CHAR_BIT # define CHAR_BIT 8 # endif #endif /* Some systems do not define EXIT_*, even with STDC_HEADERS. */ #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 #endif #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #endif /* The following test is to work around the gross typo in systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE is defined to 0, not 1. */ #if !EXIT_FAILURE # undef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #include "xalloc.h" #if HAVE_LOCALE_H # include #endif #if !HAVE_SETLOCALE # define setlocale(Category, Locale) #endif #if ENABLE_NLS # include # define _(Text) gettext (Text) #else # define bindtextdomain(Domain, Directory) # define textdomain(Domain) # define _(Text) Text #endif #define N_(Text) Text #ifndef PARAMS # if __STDC__ # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif #endif #include #include #ifndef errno extern int errno; #endif #include "error.h" /* Generate a mask of LENGTH one-bits, right justified in a word. */ #define MASK(Length) ((unsigned) ~(~0 << (Length))) /* Indicate if CHARACTER holds into 7 bits. */ #define IS_ASCII(Character) \ (!((Character) & ~MASK (7))) /* This is a bit ridiculous. DJGPP offers a non-working `pipe' function, for the only sake of being POSIX compliant (I'm told so). So, `pipe' cannot be autoconfigured without AC_TRY_RUN, which is better avoided. */ #if !DOSWIN # if !_AMIGA # define HAVE_PIPE 1 # endif #endif /* Debugging the memory allocator. */ #if WITH_DMALLOC # define DMALLOC_FUNC_CHECK # include #endif #include "recodext.h" recode-3.6/src/decsteps.h0100644000000000000000000000716307126657737014127 0ustar rootrootbool module_african PARAMS ((struct recode_outer *)); bool module_afrtran PARAMS ((struct recode_outer *)); bool module_applemac PARAMS ((struct recode_outer *)); bool module_atarist PARAMS ((struct recode_outer *)); bool module_bangbang PARAMS ((struct recode_outer *)); bool module_cdcnos PARAMS ((struct recode_outer *)); bool module_ebcdic PARAMS ((struct recode_outer *)); bool module_ibmpc PARAMS ((struct recode_outer *)); bool module_iconqnx PARAMS ((struct recode_outer *)); bool module_latin1_ascii PARAMS ((struct recode_outer *)); bool module_mule PARAMS ((struct recode_outer *)); bool module_strips PARAMS ((struct recode_outer *)); bool module_testdump PARAMS ((struct recode_outer *)); bool module_ucs PARAMS ((struct recode_outer *)); bool module_utf16 PARAMS ((struct recode_outer *)); bool module_utf7 PARAMS ((struct recode_outer *)); bool module_utf8 PARAMS ((struct recode_outer *)); bool module_varia PARAMS ((struct recode_outer *)); bool module_vietnamese PARAMS ((struct recode_outer *)); bool module_flat PARAMS ((struct recode_outer *)); bool module_html PARAMS ((struct recode_outer *)); bool module_latin1_latex PARAMS ((struct recode_outer *)); bool module_latin1_texte PARAMS ((struct recode_outer *)); bool module_rfc1345 PARAMS ((struct recode_outer *)); bool module_texinfo PARAMS ((struct recode_outer *)); bool module_base64 PARAMS ((struct recode_outer *)); bool module_dump PARAMS ((struct recode_outer *)); bool module_endline PARAMS ((struct recode_outer *)); bool module_permutations PARAMS ((struct recode_outer *)); bool module_quoted_printable PARAMS ((struct recode_outer *)); bool module_ascii_latin1 PARAMS ((struct recode_outer *)); bool module_latex_latin1 PARAMS ((struct recode_outer *)); bool module_texte_latin1 PARAMS ((struct recode_outer *)); void delmodule_african PARAMS ((struct recode_outer *)); void delmodule_afrtran PARAMS ((struct recode_outer *)); void delmodule_applemac PARAMS ((struct recode_outer *)); void delmodule_atarist PARAMS ((struct recode_outer *)); void delmodule_bangbang PARAMS ((struct recode_outer *)); void delmodule_cdcnos PARAMS ((struct recode_outer *)); void delmodule_ebcdic PARAMS ((struct recode_outer *)); void delmodule_ibmpc PARAMS ((struct recode_outer *)); void delmodule_iconqnx PARAMS ((struct recode_outer *)); void delmodule_latin1_ascii PARAMS ((struct recode_outer *)); void delmodule_mule PARAMS ((struct recode_outer *)); void delmodule_strips PARAMS ((struct recode_outer *)); void delmodule_testdump PARAMS ((struct recode_outer *)); void delmodule_ucs PARAMS ((struct recode_outer *)); void delmodule_utf16 PARAMS ((struct recode_outer *)); void delmodule_utf7 PARAMS ((struct recode_outer *)); void delmodule_utf8 PARAMS ((struct recode_outer *)); void delmodule_varia PARAMS ((struct recode_outer *)); void delmodule_vietnamese PARAMS ((struct recode_outer *)); void delmodule_flat PARAMS ((struct recode_outer *)); void delmodule_html PARAMS ((struct recode_outer *)); void delmodule_latin1_latex PARAMS ((struct recode_outer *)); void delmodule_latin1_texte PARAMS ((struct recode_outer *)); void delmodule_rfc1345 PARAMS ((struct recode_outer *)); void delmodule_texinfo PARAMS ((struct recode_outer *)); void delmodule_base64 PARAMS ((struct recode_outer *)); void delmodule_dump PARAMS ((struct recode_outer *)); void delmodule_endline PARAMS ((struct recode_outer *)); void delmodule_permutations PARAMS ((struct recode_outer *)); void delmodule_quoted_printable PARAMS ((struct recode_outer *)); void delmodule_ascii_latin1 PARAMS ((struct recode_outer *)); void delmodule_latex_latin1 PARAMS ((struct recode_outer *)); void delmodule_texte_latin1 PARAMS ((struct recode_outer *)); recode-3.6/src/fr-charname.h0100644000000000000000000232463407126661747014503 0ustar rootroot/* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define NUMBER_OF_SINGLES 236 #define MAX_CHARNAME_LENGTH 90 #define NUMBER_OF_CHARNAMES 10616 static const char *const word[4882] = { "lettre", /* \001 */ "syllabe", /* \002 */ "yi", /* \003 */ "arabe", /* \004 */ "minuscule", /* \005 */ "latine", /* \006 */ "de", /* \007 */ "majuscule", /* \010 */ "canadienne", /* \011 */ "ligature", /* \012 */ "en", /* \013 */ "hangûl", /* \014 */ "vers", /* \015 */ "idéogramme", /* \016 */ "clé", /* \017 */ "et", /* \020 */ "accent", /* \021 */ "symbole", /* \022 */ "éthiopienne", /* \023 */ "chiffre", /* \024 */ "compatibilité", /* \025 */ "diacritique", /* \026 */ "grecque", /* \027 */ "braille", /* \030 */ "combinaison", /* \031 */ "final", /* \032 */ "la", /* \033 */ "cyrillique", /* \034 */ "carré", /* \035 */ "isolé", /* \036 */ "point", /* \037 */ "chef", /* \040 */ "chinoise", /* \041 */ "voyelle", /* \042 */ "souscrit", /* \043 */ "à", /* \044 */ "katakana", /* \045 */ "disposé", /* \046 */ "mîm", /* \047 */ "le", /* \050 */ "cerclé", /* \051 */ "gauche", /* \052 */ "droite", /* \053 */ "porteur", /* \054 */ "initial", /* \055 */ "ya'", /* \056 */ "signe", /* \057 */ "esprit", /* \060 */ "flèche", /* \061 */ "aigu", /* \062 */ "a", /* \063 */ "o", /* \064 */ "filet", /* \065 */ "mongole", /* \066 */ "grave", /* \067 */ "double", /* \070 */ "demi-chasse", /* \071 */ "circonflexe", /* \072 */ "pleine", /* \073 */ "cjc", /* \074 */ "entre", /* \075 */ "idéographique", /* \076 */ "parenthèses", /* \077 */ "alif", /* \100 */ "bas", /* \101 */ "haut", /* \102 */ "i", /* \103 */ "iota", /* \104 */ "chasse", /* \105 */ "dévanâgarî", /* \106 */ "tibétaine", /* \107 */ "un", /* \110 */ "ha'", /* \111 */ "cri", /* \112 */ "ou", /* \113 */ "des", /* \114 */ "djîm", /* \115 */ "fin", /* \116 */ "tch'ôsong", /* \117 */ "tibétain", /* \120 */ "bengali", /* \121 */ "crochet", /* \122 */ "plaines", /* \123 */ "hiragana", /* \124 */ "arménienne", /* \125 */ "chérokie", /* \126 */ "deux", /* \127 */ "e", /* \130 */ "médial", /* \131 */ "u", /* \132 */ "djôngsong", /* \133 */ "rude", /* \134 */ "runique", /* \135 */ "trois", /* \136 */ "hébraïque", /* \137 */ "kannara", /* \140 */ "télougou", /* \141 */ "oriya", /* \142 */ "doux", /* \143 */ "goudjarati", /* \144 */ "malayalam", /* \145 */ "géorgienne", /* \146 */ "blanc", /* \147 */ "gourmoukhî", /* \150 */ "gras", /* \151 */ "singhalaise", /* \152 */ "thaïe", /* \153 */ "fonction", /* \154 */ "apl", /* \155 */ "hamza", /* \156 */ "khmère", /* \157 */ "maksoura", /* \160 */ "syriaque", /* \161 */ "télégraphique", /* \162 */ "djoungsong", /* \163 */ "avec", /* \164 */ "tréma", /* \165 */ "bopomofo", /* \166 */ "r", /* \167 */ "kha'", /* \170 */ "tamoul", /* \171 */ "tilde", /* \172 */ "égal", /* \173 */ "macron", /* \174 */ "petit", /* \175 */ "birmane", /* \176 */ "cerclée", /* \177 */ "modificative", /* \200 */ "oméga", /* \201 */ "vertical", /* \202 */ "alpha", /* \203 */ "marque", /* \204 */ "vocalique", /* \205 */ "lam", /* \206 */ "noir", /* \207 */ "nombre", /* \210 */ "l", /* \211 */ "du", /* \212 */ "brève", /* \213 */ "plus", /* \214 */ "noûn", /* \215 */ "thâna", /* \216 */ "é", /* \217 */ "quatre", /* \220 */ "droit", /* \221 */ "hébreu", /* \222 */ "s", /* \223 */ "êta", /* \224 */ "caron", /* \225 */ "huit", /* \226 */ "laotienne", /* \227 */ "cinq", /* \230 */ "hé'", /* \231 */ "barré", /* \232 */ "té'", /* \233 */ "ali", /* \234 */ "gali", /* \235 */ "subjointe", /* \236 */ "h", /* \237 */ "ka", /* \240 */ "n", /* \241 */ "horizontal", /* \242 */ "ligne", /* \243 */ "ni", /* \244 */ "sîn", /* \245 */ "barre", /* \246 */ "chîn", /* \247 */ "mkhedrouli", /* \250 */ "points", /* \251 */ "sept", /* \252 */ "assomtavrouli", /* \253 */ "kaf", /* \254 */ "six", /* \255 */ "verticale", /* \256 */ "neuf", /* \257 */ "romain", /* \260 */ "t", /* \261 */ "upsilon", /* \262 */ "forme", /* \263 */ "noire", /* \264 */ "y", /* \265 */ "g", /* \266 */ "khmer", /* \267 */ "sans", /* \270 */ "z", /* \271 */ "cercle", /* \272 */ "coin", /* \273 */ "cédille", /* \274 */ "d", /* \275 */ "m", /* \276 */ "ma", /* \277 */ "négatif", /* \300 */ "souscrite", /* \301 */ "rond", /* \302 */ "jour", /* \303 */ "vignette", /* \304 */ "ya", /* \305 */ "ô", /* \306 */ "aï", /* \307 */ "d'ogam", /* \310 */ "ta", /* \311 */ "todo", /* \312 */ "c", /* \313 */ "ha", /* \314 */ "î", /* \315 */ "blanche", /* \316 */ "grec", /* \317 */ "inférieur", /* \320 */ "pointant", /* \321 */ "ra", /* \322 */ "â", /* \323 */ "ba'", /* \324 */ "culbuté", /* \325 */ "epsilon", /* \326 */ "pa", /* \327 */ "virgule", /* \330 */ "zéro", /* \331 */ "éthiopien", /* \332 */ "aou", /* \333 */ "b", /* \334 */ "caractère", /* \335 */ "cornu", /* \336 */ "crosse", /* \337 */ "grand", /* \340 */ "heure", /* \341 */ "oû", /* \342 */ "ra'", /* \343 */ "supérieur", /* \344 */ "ton", /* \345 */ "triangle", /* \346 */ "w", /* \347 */ "dad", /* \350 */ "fa'", /* \351 */ "k", /* \352 */ "moitié", /* \353 */ "na", /* \354 */ "simple", /* \355\001 */ "da", /* \355\002 */ "pointe", /* \355\003 */ "sa", /* \355\004 */ "sad", /* \355\005 */ "sîbé", /* \355\006 */ "tiret", /* \355\007 */ "c-simplifié", /* \355\010 */ "daguèch", /* \355\011 */ "mongol", /* \355\012 */ "réfléchi", /* \355\013 */ "taquet", /* \355\014 */ "étoile", /* \355\015 */ "bloc", /* \355\016 */ "ga", /* \355\017 */ "moins", /* \355\020 */ "p", /* \355\021 */ "présentation", /* \355\022 */ "que", /* \355\023 */ "tcha", /* \355\024 */ "v", /* \355\025 */ "x", /* \355\026 */ "'aïn", /* \355\027 */ "arabe-hindi", /* \355\030 */ "birman", /* \355\031 */ "cha", /* \355\032 */ "croix", /* \355\033 */ "dix", /* \355\034 */ "empattement", /* \355\035 */ "omicron", /* \355\036 */ "qaf", /* \355\037 */ "yo", /* \355\040 */ "d'annotation", /* \355\041 */ "laotien", /* \355\042 */ "non", /* \355\043 */ "oblique", /* \355\044 */ "séparateur", /* \355\045 */ "ta'", /* \355\046 */ "tonos", /* \355\047 */ "wa", /* \355\050 */ "waw", /* \355\051 */ "ba", /* \355\052 */ "j", /* \355\053 */ "kha", /* \355\054 */ "ogonek", /* \355\055 */ "pas", /* \355\056 */ "pour", /* \355\057 */ "thé'", /* \355\060 */ "dialytika", /* \355\061 */ "f", /* \355\062 */ "ghaïn", /* \355\063 */ "hameçon", /* \355\064 */ "mandchou", /* \355\065 */ "nga", /* \355\066 */ "pied-noir", /* \355\067 */ "so", /* \355\070 */ "tché", /* \355\071 */ "tha", /* \355\072 */ "espace", /* \355\073 */ "exposant", /* \355\074 */ "quadrat", /* \355\075 */ "renversée", /* \355\076 */ "tho", /* \355\077 */ "tta", /* \355\100 */ "za", /* \355\101 */ "cramponné", /* \355\102 */ "deux-points", /* \355\103 */ "dja", /* \355\104 */ "fraction", /* \355\105 */ "gha", /* \355\106 */ "ho", /* \355\107 */ "indice", /* \355\110 */ "mu", /* \355\111 */ "naskapi", /* \355\112 */ "no", /* \355\113 */ "rr", /* \355\114 */ "astérisque", /* \355\115 */ "branches", /* \355\116 */ "copte", /* \355\117 */ "dda", /* \355\120 */ "grasse", /* \355\121 */ "gros", /* \355\122 */ "parenthèse", /* \355\123 */ "pha", /* \355\124 */ "sara", /* \355\125 */ "trait", /* \355\126 */ "ttha", /* \355\127 */ "équivalent", /* \355\130 */ "brisé", /* \355\131 */ "contour", /* \355\132 */ "demi", /* \355\133 */ "digramme", /* \355\134 */ "guillemet", /* \355\135 */ "mo", /* \355\136 */ "médian", /* \355\137 */ "ne", /* \355\140 */ "nna", /* \355\141 */ "petite", /* \355\142 */ "renversé", /* \355\143 */ "ronde", /* \355\144 */ "sayissi", /* \355\145 */ "sur", /* \355\146 */ "thaï", /* \355\147 */ "wo", /* \355\150 */ "you", /* \355\151 */ "ça", /* \355\152 */ "bha", /* \355\153 */ "chadda", /* \355\154 */ "commande", /* \355\155 */ "cri-y", /* \355\156 */ "d'échecs", /* \355\157 */ "ddha", /* \355\160 */ "description", /* \355\161 */ "dha", /* \355\162 */ "finale", /* \355\163 */ "hangzhou", /* \355\164 */ "harpon", /* \355\165 */ "jeu", /* \355\166 */ "ko", /* \355\167 */ "lo", /* \355\170 */ "opérateur", /* \355\171 */ "pé", /* \355\172 */ "q", /* \355\173 */ "ro", /* \355\174 */ "son", /* \355\175 */ "to", /* \355\176 */ "tsa", /* \355\177 */ "ê", /* \355\200 */ "ña", /* \355\201 */ "arc", /* \355\202 */ "coeur", /* \355\203 */ "jé", /* \355\204 */ "kirghize", /* \355\205 */ "ll", /* \355\206 */ "mgo", /* \355\207 */ "oe", /* \355\210 */ "roc", /* \355\211 */ "rra", /* \355\212 */ "rtags", /* \355\213 */ "rétroflexe", /* \355\214 */ "sens", /* \355\215 */ "souligné", /* \355\216 */ "ti", /* \355\217 */ "triple", /* \355\220 */ "alpaprâna", /* \355\221 */ "anousvâra", /* \355\222 */ "bref", /* \355\223 */ "coup", /* \355\224 */ "fa", /* \355\225 */ "glotte", /* \355\226 */ "mahâprâna", /* \355\227 */ "mi", /* \355\230 */ "normal", /* \355\231 */ "par", /* \355\232 */ "pi", /* \355\233 */ "ponctuation", /* \355\234 */ "prime", /* \355\235 */ "quartier", /* \355\236 */ "souscrits", /* \355\237 */ "tchha", /* \355\240 */ "va", /* \355\241 */ "virâma", /* \355\242 */ "visarga", /* \355\243 */ "étendu", /* \355\244 */ "cent", /* \355\245 */ "comme", /* \355\246 */ "dans", /* \355\247 */ "dent", /* \355\250 */ "djha", /* \355\251 */ "do", /* \355\252 */ "empennage", /* \355\253 */ "gué", /* \355\254 */ "hi", /* \355\255 */ "huitièmes", /* \355\256 */ "intégrale", /* \355\257 */ "ié", /* \355\260 */ "kho", /* \355\261 */ "large", /* \355\262 */ "lla", /* \355\263 */ "long", /* \355\264 */ "longueur", /* \355\265 */ "losange", /* \355\266 */ "mais", /* \355\267 */ "maï", /* \355\270 */ "mille", /* \355\271 */ "monétaire", /* \355\272 */ "po", /* \355\273 */ "shad", /* \355\274 */ "si", /* \355\275 */ "tchiûtch", /* \355\276 */ "tcho", /* \355\277 */ "tu", /* \355\300 */ "té", /* \355\301 */ "yig", /* \355\302 */ "yé", /* \355\303 */ "abkhaze", /* \355\304 */ "ae", /* \355\305 */ "apostrophe", /* \355\306 */ "au", /* \355\307 */ "chine", /* \355\310 */ "cri-th", /* \355\311 */ "d'exclamation", /* \355\312 */ "d'interrogation", /* \355\313 */ "d'un", /* \355\314 */ "d'union", /* \355\315 */ "dal", /* \355\316 */ "douze", /* \355\317 */ "début", /* \355\320 */ "ej", /* \355\321 */ "gaf", /* \355\322 */ "glottal", /* \355\323 */ "grosse", /* \355\324 */ "hiûh", /* \355\325 */ "index", /* \355\326 */ "iûng", /* \355\327 */ "k'iûk'", /* \355\330 */ "ke", /* \355\331 */ "ki", /* \355\332 */ "kiyok", /* \355\333 */ "me", /* \355\334 */ "miûm", /* \355\335 */ "ng", /* \355\336 */ "niûn", /* \355\337 */ "nou", /* \355\340 */ "nunavik", /* \355\341 */ "ombrée", /* \355\342 */ "ouvert", /* \355\343 */ "p'iûp'", /* \355\344 */ "piûp", /* \355\345 */ "rdel", /* \355\346 */ "ri", /* \355\347 */ "riûl", /* \355\350 */ "siôs", /* \355\351 */ "sous-groupe", /* \355\352 */ "sud-est", /* \355\353 */ "supérieure", /* \355\354 */ "t'iût'", /* \355\355 */ "tch'iûtch'", /* \355\356 */ "tchandra", /* \355\357 */ "tikût", /* \355\360 */ "trigramme", /* \355\361 */ "wi", /* \355\362 */ "yousse", /* \355\363 */ "yu", /* \355\364 */ "zha", /* \355\365 */ "zza'", /* \355\366 */ "zé", /* \355\367 */ "écaille", /* \355\370 */ "ajouré", /* \355\371 */ "alef", /* \355\372 */ "ang", /* \355\373 */ "angle", /* \355\374 */ "autour", /* \355\375 */ "barrée", /* \355\376 */ "bo", /* \355\377 */ "bois", /* \356\001 */ "bouclé", /* \356\002 */ "bu", /* \356\003 */ "cadratin", /* \356\004 */ "demi-cercle", /* \356\005 */ "diga", /* \356\006 */ "eng", /* \356\007 */ "enne", /* \356\010 */ "eu", /* \356\011 */ "famille", /* \356\012 */ "fantaisie", /* \356\013 */ "fo", /* \356\014 */ "gôl", /* \356\015 */ "hé", /* \356\016 */ "image", /* \356\017 */ "inférieure", /* \356\020 */ "ku", /* \356\021 */ "madda", /* \356\022 */ "nord-est", /* \356\023 */ "nord-ouest", /* \356\024 */ "nu", /* \356\025 */ "ombre", /* \356\026 */ "onze", /* \356\027 */ "par-dessus", /* \356\030 */ "partir", /* \356\031 */ "pharyngal", /* \356\032 */ "pho", /* \356\033 */ "pointé", /* \356\034 */ "re", /* \356\035 */ "rhô", /* \356\036 */ "ru", /* \356\037 */ "ré", /* \356\040 */ "schwa", /* \356\041 */ "se", /* \356\042 */ "seize", /* \356\043 */ "soleil", /* \356\044 */ "transmission", /* \356\045 */ "tsheg", /* \356\046 */ "tsé", /* \356\047 */ "vingt", /* \356\050 */ "accolade", /* \356\051 */ "arménien", /* \356\052 */ "carrée", /* \356\053 */ "cho", /* \356\054 */ "contient", /* \356\055 */ "couvrante", /* \356\056 */ "d'insertion", /* \356\057 */ "delta", /* \356\060 */ "demi-rond", /* \356\061 */ "di", /* \356\062 */ "djé", /* \356\063 */ "dz", /* \356\064 */ "dza", /* \356\065 */ "eau", /* \356\066 */ "farsi", /* \356\067 */ "gamma", /* \356\070 */ "go", /* \356\071 */ "he", /* \356\072 */ "inversée", /* \356\073 */ "iotacisme", /* \356\074 */ "katakana-hiragana", /* \356\075 */ "lenticulaire", /* \356\076 */ "li", /* \356\077 */ "logique", /* \356\100 */ "lune", /* \356\101 */ "mèn", /* \356\102 */ "numérateur", /* \356\103 */ "point-virgule", /* \356\104 */ "positif", /* \356\105 */ "produit", /* \356\106 */ "puce", /* \356\107 */ "quadrant", /* \356\110 */ "rectangle", /* \356\111 */ "répétition", /* \356\112 */ "simplifié", /* \356\113 */ "singhalais", /* \356\114 */ "soung", /* \356\115 */ "sous-ensemble", /* \356\116 */ "suit", /* \356\117 */ "sur-ensemble", /* \356\120 */ "sé", /* \356\121 */ "tam", /* \356\122 */ "tchandrabindou", /* \356\123 */ "tchim'", /* \356\124 */ "te", /* \356\125 */ "terre", /* \356\126 */ "thi", /* \356\127 */ "thé", /* \356\130 */ "triangulaire", /* \356\131 */ "vo", /* \356\132 */ "vrakhy", /* \356\133 */ "zay", /* \356\134 */ "zo", /* \356\135 */ "è", /* \356\136 */ "ajourée", /* \356\137 */ "approximativement", /* \356\140 */ "arrêt", /* \356\141 */ "be", /* \356\142 */ "bea'", /* \356\143 */ "beha'", /* \356\144 */ "bourre", /* \356\145 */ "bulletin", /* \356\146 */ "bé", /* \356\147 */ "can", /* \356\150 */ "che", /* \356\151 */ "clic", /* \356\152 */ "couché", /* \356\153 */ "culbutée", /* \356\154 */ "d'appareil", /* \356\155 */ "d'itération", /* \356\156 */ "damma", /* \356\157 */ "dix-huit", /* \356\160 */ "dix-neuf", /* \356\161 */ "dix-sept", /* \356\162 */ "doatchachmi", /* \356\163 */ "dya'", /* \356\164 */ "dzé", /* \356\165 */ "dé", /* \356\166 */ "ech", /* \356\167 */ "encadré", /* \356\170 */ "englobant", /* \356\171 */ "esclave", /* \356\172 */ "esse", /* \356\173 */ "est", /* \356\174 */ "fatha", /* \356\175 */ "fathatan", /* \356\176 */ "feu", /* \356\177 */ "fi", /* \356\200 */ "fixe", /* \356\201 */ "fé", /* \356\202 */ "ge", /* \356\203 */ "gi", /* \356\204 */ "gothique", /* \356\205 */ "gter", /* \356\206 */ "hachuré", /* \356\207 */ "huitième", /* \356\210 */ "hâ", /* \356\211 */ "infirme", /* \356\212 */ "jusqu'à", /* \356\213 */ "kana", /* \356\214 */ "kasra", /* \356\215 */ "keha'", /* \356\216 */ "kombouva", /* \356\217 */ "ké", /* \356\220 */ "longue", /* \356\221 */ "lé", /* \356\222 */ "manger", /* \356\223 */ "mou", /* \356\224 */ "ngo", /* \356\225 */ "ngoa'", /* \356\226 */ "noukta", /* \356\227 */ "nya'", /* \356\230 */ "né", /* \356\231 */ "ondulé", /* \356\232 */ "original", /* \356\233 */ "oua", /* \356\234 */ "oué", /* \356\235 */ "ouïgour", /* \356\236 */ "pa'", /* \356\237 */ "peha'", /* \356\240 */ "phi", /* \356\241 */ "pied", /* \356\242 */ "plume", /* \356\243 */ "précède", /* \356\244 */ "qa", /* \356\245 */ "quatorze", /* \356\246 */ "queue", /* \356\247 */ "quinze", /* \356\250 */ "repère", /* \356\251 */ "ssa", /* \356\252 */ "su", /* \356\253 */ "sélecteur", /* \356\254 */ "tcheha'", /* \356\255 */ "teha'", /* \356\256 */ "th", /* \356\257 */ "treize", /* \356\260 */ "tta'", /* \356\261 */ "tteha'", /* \356\262 */ "tô", /* \356\263 */ "va'", /* \356\264 */ "visage", /* \356\265 */ "voisé", /* \356\266 */ "vote", /* \356\267 */ "we", /* \356\270 */ "wé", /* \356\271 */ "yod", /* \356\272 */ "yô", /* \356\273 */ "ze", /* \356\274 */ "zi", /* \356\275 */ "élevé", /* \356\276 */ "am", /* \356\277 */ "anglais", /* \356\300 */ "angulaire", /* \356\301 */ "barbe", /* \356\302 */ "barri", /* \356\303 */ "bi", /* \356\304 */ "bêta", /* \356\305 */ "cantilation", /* \356\306 */ "centre", /* \356\307 */ "chi", /* \356\310 */ "ché", /* \356\311 */ "ciseaux", /* \356\312 */ "code", /* \356\313 */ "courte", /* \356\314 */ "couvrant", /* \356\315 */ "cube", /* \356\316 */ "dalèt", /* \356\317 */ "dché", /* \356\320 */ "dhal", /* \356\321 */ "dispositif", /* \356\322 */ "dkar", /* \356\323 */ "dur", /* \356\324 */ "elle", /* \356\325 */ "emme", /* \356\326 */ "erre", /* \356\327 */ "flèches", /* \356\330 */ "gua'", /* \356\331 */ "guillemet-apostrophe", /* \356\332 */ "guillemet-virgule", /* \356\333 */ "herbe", /* \356\334 */ "horizontale", /* \356\335 */ "hu", /* \356\336 */ "ijitsa", /* \356\337 */ "j-simplifié", /* \356\340 */ "khi", /* \356\341 */ "khé", /* \356\342 */ "km", /* \356\343 */ "koppa", /* \356\344 */ "l'avant", /* \356\345 */ "lambda", /* \356\346 */ "lamèd", /* \356\347 */ "larmé", /* \356\350 */ "latin", /* \356\351 */ "lou", /* \356\352 */ "main", /* \356\353 */ "marbouta", /* \356\354 */ "multiplication", /* \356\355 */ "mé", /* \356\356 */ "mém", /* \356\357 */ "nag", /* \356\360 */ "neige", /* \356\361 */ "noeud", /* \356\362 */ "nor", /* \356\363 */ "négation", /* \356\364 */ "ohm", /* \356\365 */ "om", /* \356\366 */ "ondulée", /* \356\367 */ "oui", /* \356\370 */ "ouo", /* \356\371 */ "page", /* \356\372 */ "paire", /* \356\373 */ "patah", /* \356\374 */ "pe", /* \356\375 */ "penché", /* \356\376 */ "perluète", /* \356\377 */ "pique", /* \357\001 */ "piûp-siôs", /* \357\002 */ "pointes", /* \357\003 */ "pointeur", /* \357\004 */ "pointillé", /* \357\005 */ "pointillée", /* \357\006 */ "pointillés", /* \357\007 */ "potence", /* \357\010 */ "presque", /* \357\011 */ "privé", /* \357\012 */ "prolongé", /* \357\013 */ "promenade", /* \357\014 */ "psi", /* \357\015 */ "quadruple", /* \357\016 */ "quart", /* \357\017 */ "rad", /* \357\020 */ "rafe", /* \357\021 */ "remplacement", /* \357\022 */ "riûl-hiûh", /* \357\023 */ "rnoûn", /* \357\024 */ "réception", /* \357\025 */ "sañaka", /* \357\026 */ "semi-direct", /* \357\027 */ "sigma", /* \357\030 */ "sixième", /* \357\031 */ "socle", /* \357\032 */ "sortie", /* \357\033 */ "sou", /* \357\034 */ "soudé", /* \357\035 */ "soukoun", /* \357\036 */ "sous", /* \357\037 */ "ssangkiyok", /* \357\040 */ "ssangsiôs", /* \357\041 */ "sud", /* \357\042 */ "sud-ouest", /* \357\043 */ "syriaques", /* \357\044 */ "tabulation", /* \357\045 */ "texte", /* \357\046 */ "tortue", /* \357\047 */ "téléphone", /* \357\050 */ "unique", /* \357\051 */ "variation", /* \357\052 */ "ve", /* \357\053 */ "vé", /* \357\054 */ "xi", /* \357\055 */ "yidich", /* \357\056 */ "yètch", /* \357\057 */ "yérou", /* \357\060 */ "zone", /* \357\061 */ "ère", /* \357\062 */ "ño", /* \357\063 */ "an", /* \357\064 */ "arrobe", /* \357\065 */ "astrologique", /* \357\066 */ "avagraha", /* \357\067 */ "bayanna", /* \357\070 */ "boucle", /* \357\071 */ "bèt", /* \357\072 */ "ca", /* \357\073 */ "centime", /* \357\074 */ "ch", /* \357\075 */ "chaîne", /* \357\076 */ "chin", /* \357\077 */ "ciel", /* \357\100 */ "cinquante", /* \357\101 */ "cinquième", /* \357\102 */ "cinquièmes", /* \357\103 */ "cm", /* \357\104 */ "constante", /* \357\105 */ "corne", /* \357\106 */ "couteau", /* \357\107 */ "crayon", /* \357\110 */ "cri-n", /* \357\111 */ "croisillon", /* \357\112 */ "cuir", /* \357\113 */ "d'abréviation", /* \357\114 */ "d'accentuation", /* \357\115 */ "d'amorce", /* \357\116 */ "d'en", /* \357\117 */ "d'une", /* \357\120 */ "dahal", /* \357\121 */ "dammatan", /* \357\122 */ "dantadja", /* \357\123 */ "dayanna", /* \357\124 */ "ddahal", /* \357\125 */ "ddal", /* \357\126 */ "ddayanna", /* \357\127 */ "degré", /* \357\130 */ "demi-cadratin", /* \357\131 */ "dessus", /* \357\132 */ "diagonal", /* \357\133 */ "différent", /* \357\134 */ "division", /* \357\135 */ "djayanna", /* \357\136 */ "dji", /* \357\137 */ "djou", /* \357\140 */ "dollar", /* \357\141 */ "dragon", /* \357\142 */ "droite-à-gauche", /* \357\143 */ "dul", /* \357\144 */ "encochée", /* \357\145 */ "fermé", /* \357\146 */ "flocon", /* \357\147 */ "floral", /* \357\150 */ "fou", /* \357\151 */ "gauche-à-droite", /* \357\152 */ "gayanna", /* \357\153 */ "gayanoukitta", /* \357\154 */ "gou", /* \357\155 */ "groin", /* \357\156 */ "gsum", /* \357\157 */ "gu", /* \357\160 */ "haa", /* \357\161 */ "hampe", /* \357\162 */ "hampé", /* \357\163 */ "harmonie", /* \357\164 */ "hataf", /* \357\165 */ "haut-bas", /* \357\166 */ "hioun", /* \357\167 */ "hè", /* \357\170 */ "héracléen", /* \357\171 */ "hî", /* \357\172 */ "hô", /* \357\173 */ "il", /* \357\174 */ "in", /* \357\175 */ "indicateur", /* \357\176 */ "ini", /* \357\177 */ "inscrit", /* \357\200 */ "insécable", /* \357\201 */ "interligne", /* \357\202 */ "interlinéaire", /* \357\203 */ "intersection", /* \357\204 */ "introducteur", /* \357\205 */ "ja", /* \357\206 */ "ja'", /* \357\207 */ "jambage", /* \357\210 */ "jo", /* \357\211 */ "kappa", /* \357\212 */ "kapyo-ounmiûm", /* \357\213 */ "kapyo-ounp'iûp'", /* \357\214 */ "kapyo-ounpiûp", /* \357\215 */ "kasratan", /* \357\216 */ "khan", /* \357\217 */ "khaï", /* \357\220 */ "kiyok-siôs", /* \357\221 */ "kouâ", /* \357\222 */ "kssa", /* \357\223 */ "kétti", /* \357\224 */ "larmée", /* \357\225 */ "lha", /* \357\226 */ "libre", /* \357\227 */ "llla", /* \357\230 */ "man", /* \357\231 */ "mapiq", /* \357\232 */ "milliers", /* \357\233 */ "mince", /* \357\234 */ "miûm-piûp", /* \357\235 */ "mm", /* \357\236 */ "mouche", /* \357\237 */ "mouâ", /* \357\240 */ "moûrdhadja", /* \357\241 */ "multiensemble", /* \357\242 */ "multiplié", /* \357\243 */ "méga", /* \357\244 */ "niûn-hiûh", /* \357\245 */ "niûn-tchiûtch", /* \357\246 */ "niûn-tikût", /* \357\247 */ "note", /* \357\250 */ "noun", /* \357\251 */ "nouâ", /* \357\252 */ "obèle", /* \357\253 */ "oiseau", /* \357\254 */ "ombré", /* \357\255 */ "on", /* \357\256 */ "os", /* \357\257 */ "ouest", /* \357\260 */ "ouk", /* \357\261 */ "ouâ", /* \357\262 */ "ouô", /* \357\263 */ "palatal", /* \357\264 */ "pansiôs", /* \357\265 */ "paragraphes", /* \357\266 */ "parallèle", /* \357\267 */ "percée", /* \357\270 */ "pethâhhâ", /* \357\271 */ "pinceau", /* \357\272 */ "pontet", /* \357\273 */ "porte", /* \357\274 */ "postale", /* \357\275 */ "pouâ", /* \357\276 */ "pu", /* \357\277 */ "qamats", /* \357\300 */ "qi", /* \357\301 */ "qo", /* \357\302 */ "quarts", /* \357\303 */ "racine", /* \357\304 */ "rha", /* \357\305 */ "rites", /* \357\306 */ "riûl-kiyok", /* \357\307 */ "riûl-miûm", /* \357\310 */ "riûl-p'iûp'", /* \357\311 */ "riûl-piûp", /* \357\312 */ "riûl-siôs", /* \357\313 */ "riûl-t'iût'", /* \357\314 */ "rou", /* \357\315 */ "roupie", /* \357\316 */ "rra'", /* \357\317 */ "râ", /* \357\320 */ "rèch", /* \357\321 */ "réfléchie", /* \357\322 */ "second", /* \357\323 */ "semi-voisé", /* \357\324 */ "sha", /* \357\325 */ "siôs-kiyok", /* \357\326 */ "siôs-piûp", /* \357\327 */ "siôs-tikût", /* \357\330 */ "société", /* \357\331 */ "soie", /* \357\332 */ "soua", /* \357\333 */ "souâ", /* \357\334 */ "ssangiûng", /* \357\335 */ "ssangpiûp", /* \357\336 */ "ssangtchiûtch", /* \357\337 */ "ssangtikût", /* \357\340 */ "strictement", /* \357\341 */ "sublinéaire", /* \357\342 */ "substitution", /* \357\343 */ "supralinéaire", /* \357\344 */ "suspension", /* \357\345 */ "tabulateur", /* \357\346 */ "tav", /* \357\347 */ "tche", /* \357\350 */ "tchi", /* \357\351 */ "tchouâ", /* \357\352 */ "tertre", /* \357\353 */ "than", /* \357\354 */ "thâ", /* \357\355 */ "thêta", /* \357\356 */ "thî", /* \357\357 */ "tiers", /* \357\360 */ "titlo", /* \357\361 */ "tourniquet", /* \357\362 */ "touâ", /* \357\363 */ "travail", /* \357\364 */ "trente", /* \357\365 */ "tsadé", /* \357\366 */ "tsi", /* \357\367 */ "tso", /* \357\370 */ "tsou", /* \357\371 */ "tâloudja", /* \357\372 */ "tête", /* \357\373 */ "union", /* \357\374 */ "vent", /* \357\375 */ "verticalement", /* \357\376 */ "verticaux", /* \357\377 */ "vi", /* \360\001 */ "vin", /* \360\002 */ "voisée", /* \360\003 */ "vu", /* \360\004 */ "vèv", /* \360\005 */ "wasla", /* \360\006 */ "wynn", /* \360\007 */ "wè", /* \360\010 */ "yang", /* \360\011 */ "yesiûng", /* \360\012 */ "yorinhiûh", /* \360\013 */ "youâ", /* \360\014 */ "yya", /* \360\015 */ "yè", /* \360\016 */ "zaï", /* \360\017 */ "zaïn", /* \360\020 */ "zeqâphâ", /* \360\021 */ "zu", /* \360\022 */ "Æ", /* \360\023 */ "Æla-pilla", /* \360\024 */ "échappement", /* \360\025 */ "écran", /* \360\026 */ "élément", /* \360\027 */ "ñi", /* \360\030 */ "ñis", /* \360\031 */ "ñé", /* \360\032 */ "û", /* \360\033 */ "ûi", /* \360\034 */ "'a", /* \360\035 */ "'essâsâ", /* \360\036 */ "'khyÌl", /* \360\037 */ "'um", /* \360\040 */ "<=", /* \360\041 */ "accusé", /* \360\042 */ "activateur", /* \360\043 */ "agrafé", /* \360\044 */ "alaïhe", /* \360\045 */ "alliance", /* \360\046 */ "alternative", /* \360\047 */ "annulation", /* \360\050 */ "appartient", /* \360\051 */ "arrière", /* \360\052 */ "arèa", /* \360\053 */ "ascendant", /* \360\054 */ "astérisque-hélice", /* \360\055 */ "asymptotiquement", /* \360\056 */ "athabascan", /* \360\057 */ "aucun", /* \360\060 */ "avoir", /* \360\061 */ "aïn", /* \360\062 */ "aïp", /* \360\063 */ "bachkir", /* \360\064 */ "bambou", /* \360\065 */ "ban", /* \360\066 */ "bateau", /* \360\067 */ "bbut", /* \360\070 */ "bcad", /* \360\071 */ "beaucoup", /* \360\072 */ "bec", /* \360\073 */ "biélorusse-ukrainien", /* \360\074 */ "bleu", /* \360\075 */ "blé", /* \360\076 */ "boeuf", /* \360\077 */ "brisée", /* \360\100 */ "bur", /* \360\101 */ "bzhi", /* \360\102 */ "bzung", /* \360\103 */ "bélier", /* \360\104 */ "carreau", /* \360\105 */ "cavalier", /* \360\106 */ "ce", /* \360\107 */ "central", /* \360\110 */ "centré", /* \360\111 */ "cents", /* \360\112 */ "changement", /* \360\113 */ "chariot", /* \360\114 */ "cheval", /* \360\115 */ "chien", /* \360\116 */ "chofar", /* \360\117 */ "chou", /* \360\120 */ "choua", /* \360\121 */ "choui", /* \360\122 */ "chouo", /* \360\123 */ "chouâ", /* \360\124 */ "choué", /* \360\125 */ "chouî", /* \360\126 */ "chouô", /* \360\127 */ "chtcha", /* \360\130 */ "cip", /* \360\131 */ "circuit", /* \360\132 */ "co", /* \360\133 */ "colon", /* \360\134 */ "considéralement", /* \360\135 */ "continu", /* \360\136 */ "copyright", /* \360\137 */ "coquillage", /* \360\140 */ "coranique", /* \360\141 */ "coronis", /* \360\142 */ "courbée", /* \360\143 */ "croches", /* \360\144 */ "cuop", /* \360\145 */ "cy", /* \360\146 */ "cyp", /* \360\147 */ "cyt", /* \360\150 */ "d'accolade", /* \360\151 */ "d'accusé", /* \360\152 */ "d'annulation", /* \360\153 */ "d'arrêt", /* \360\154 */ "d'en-tête", /* \360\155 */ "d'intégrale", /* \360\156 */ "d'échange", /* \360\157 */ "d'étoffe", /* \360\160 */ "dame", /* \360\161 */ "danndda", /* \360\162 */ "dde", /* \360\163 */ "ddi", /* \360\164 */ "ddo", /* \360\165 */ "ddur", /* \360\166 */ "demande", /* \360\167 */ "demi-anneau", /* \360\170 */ "demi-disque", /* \360\171 */ "demi-voyelle", /* \360\172 */ "dents", /* \360\173 */ "deuxième", /* \360\174 */ "diagonaux", /* \360\175 */ "différence", /* \360\176 */ "digamma", /* \360\177 */ "dioun", /* \360\200 */ "disque", /* \360\201 */ "divination", /* \360\202 */ "diviseur", /* \360\203 */ "djan", /* \360\204 */ "djanda", /* \360\205 */ "dje", /* \360\206 */ "djo", /* \360\207 */ "dla", /* \360\210 */ "don", /* \360\211 */ "dou", /* \360\212 */ "doubles", /* \360\213 */ "dzha", /* \360\214 */ "dzil", /* \360\215 */ "dzud", /* \360\216 */ "dzêta", /* \360\217 */ "dâlath", /* \360\220 */ "décimal", /* \360\221 */ "démon", /* \360\222 */ "dénominateur", /* \360\223 */ "départ", /* \360\224 */ "ed", /* \360\225 */ "effe", /* \360\226 */ "ek", /* \360\227 */ "enchâssement", /* \360\230 */ "encoignure", /* \360\231 */ "entreprise", /* \360\232 */ "ett", /* \360\233 */ "facteur", /* \360\234 */ "falaise", /* \360\235 */ "faï", /* \360\236 */ "femelle", /* \360\237 */ "feuille", /* \360\240 */ "financier", /* \360\241 */ "fine", /* \360\242 */ "fita", /* \360\243 */ "formage", /* \360\244 */ "formatage", /* \360\245 */ "formes", /* \360\246 */ "forçage", /* \360\247 */ "fourche", /* \360\250 */ "fourchette", /* \360\251 */ "fouâ", /* \360\252 */ "fractionnaire", /* \360\253 */ "félicitations", /* \360\254 */ "féminin", /* \360\255 */ "gadol", /* \360\256 */ "gan", /* \360\257 */ "garchouni", /* \360\260 */ "gauche-droite", /* \360\261 */ "gcig", /* \360\262 */ "gep", /* \360\263 */ "gerich", /* \360\264 */ "gga", /* \360\265 */ "gge", /* \360\266 */ "ggi", /* \360\267 */ "ggo", /* \360\270 */ "ggop", /* \360\271 */ "gguo", /* \360\272 */ "ghad", /* \360\273 */ "ghan", /* \360\274 */ "ghha", /* \360\275 */ "ghunna", /* \360\276 */ "got", /* \360\277 */ "gram", /* \360\300 */ "gru", /* \360\301 */ "gug", /* \360\302 */ "guimel", /* \360\303 */ "guié", /* \360\304 */ "guén", /* \360\305 */ "gyas", /* \360\306 */ "gyon", /* \360\307 */ "gÆtta-pilla", /* \360\310 */ "gâ", /* \360\311 */ "gâmal", /* \360\312 */ "gé", /* \360\313 */ "géométriquement", /* \360\314 */ "gñis", /* \360\315 */ "h'ar", /* \360\316 */ "habits", /* \360\317 */ "haË", /* \360\320 */ "hhevâssâ", /* \360\321 */ "hirik", /* \360\322 */ "hmo", /* \360\323 */ "hna", /* \360\324 */ "holam", /* \360\325 */ "homme", /* \360\326 */ "homothétique", /* \360\327 */ "hori", /* \360\330 */ "hors", /* \360\331 */ "hou", /* \360\332 */ "hoË", /* \360\333 */ "hxit", /* \360\334 */ "hxop", /* \360\335 */ "hxot", /* \360\336 */ "hxuo", /* \360\337 */ "hê", /* \360\340 */ "ia", /* \360\341 */ "ici", /* \360\342 */ "identique", /* \360\343 */ "ij", /* \360\344 */ "imprimer", /* \360\345 */ "inhibiteur", /* \360\346 */ "inhérente", /* \360\347 */ "io", /* \360\350 */ "iou", /* \360\351 */ "is-pilla", /* \360\352 */ "iËn", /* \360\353 */ "iûng-kiyok", /* \360\354 */ "jade", /* \360\355 */ "jan", /* \360\356 */ "jaune", /* \360\357 */ "ji", /* \360\360 */ "jjut", /* \360\361 */ "jjy", /* \360\362 */ "k'", /* \360\363 */ "k'an", /* \360\364 */ "kapyo-ounssangpiûp", /* \360\365 */ "kayanna", /* \360\366 */ "kazakhe", /* \360\367 */ "kg", /* \360\370 */ "khakasse", /* \360\371 */ "khang", /* \360\372 */ "khar", /* \360\373 */ "khha", /* \360\374 */ "kim", /* \360\375 */ "kip", /* \360\376 */ "kit", /* \360\377 */ "kié", /* \361\001 */ "kk", /* \361\002 */ "kou", /* \361\003 */ "koua", /* \361\004 */ "koui", /* \361\005 */ "kouo", /* \361\006 */ "koué", /* \361\007 */ "kouî", /* \361\010 */ "kouô", /* \361\011 */ "ksi", /* \361\012 */ "kwa", /* \361\013 */ "kwi", /* \361\014 */ "kwé", /* \361\015 */ "kô", /* \361\016 */ "l'arrière", /* \361\017 */ "lame", /* \361\020 */ "larmées", /* \361\021 */ "lass", /* \361\022 */ "layanna", /* \361\023 */ "lhi", /* \361\024 */ "lho", /* \361\025 */ "liant", /* \361\026 */ "lie", /* \361\027 */ "ling", /* \361\030 */ "lioun", /* \361\031 */ "livre", /* \361\032 */ "lié", /* \361\033 */ "lj", /* \361\034 */ "logotype", /* \361\035 */ "loua", /* \361\036 */ "loui", /* \361\037 */ "louo", /* \361\040 */ "louâ", /* \361\041 */ "loué", /* \361\042 */ "louî", /* \361\043 */ "louô", /* \361\044 */ "lyr", /* \361\045 */ "lô", /* \361\046 */ "mai", /* \361\047 */ "marchandises", /* \361\050 */ "mb", /* \361\051 */ "message", /* \361\052 */ "mesuré", /* \361\053 */ "mig", /* \361\054 */ "milieu", /* \361\055 */ "miûm-pansiôs", /* \361\056 */ "miûm-siôs", /* \361\057 */ "molette", /* \361\060 */ "montagne", /* \361\061 */ "mop", /* \361\062 */ "mort", /* \361\063 */ "mortier", /* \361\064 */ "mot", /* \361\065 */ "moua", /* \361\066 */ "moue", /* \361\067 */ "moui", /* \361\070 */ "mouo", /* \361\071 */ "mouton", /* \361\072 */ "moué", /* \361\073 */ "mouî", /* \361\074 */ "mouô", /* \361\075 */ "moyenne", /* \361\076 */ "mur", /* \361\077 */ "mv", /* \361\100 */ "mw", /* \361\101 */ "mâle", /* \361\102 */ "métal", /* \361\103 */ "mô", /* \361\104 */ "nar", /* \361\105 */ "nayanna", /* \361\106 */ "nbie", /* \361\107 */ "ngas", /* \361\110 */ "niûn-kiyok", /* \361\111 */ "niûn-pansiôs", /* \361\112 */ "niûn-siôs", /* \361\113 */ "nj", /* \361\114 */ "nnna", /* \361\115 */ "nom", /* \361\116 */ "norme", /* \361\117 */ "noua", /* \361\120 */ "noué", /* \361\121 */ "nul", /* \361\122 */ "numéral", /* \361\123 */ "numérique", /* \361\124 */ "numéro", /* \361\125 */ "nyip", /* \361\126 */ "nyop", /* \361\127 */ "nzur", /* \361\130 */ "nâ", /* \361\131 */ "nâsikyaya", /* \361\132 */ "nô", /* \361\133 */ "obliquement", /* \361\134 */ "oeil", /* \361\135 */ "ondé", /* \361\136 */ "onn", /* \361\137 */ "op", /* \361\140 */ "or", /* \361\141 */ "ordinal", /* \361\142 */ "ornée", /* \361\143 */ "otte", /* \361\144 */ "oubadama", /* \361\145 */ "oun", /* \361\146 */ "ouverte", /* \361\147 */ "ouî", /* \361\150 */ "p'iûp'-piûp", /* \361\151 */ "papillon", /* \361\152 */ "paragraphe", /* \361\153 */ "parallélogramme", /* \361\154 */ "parole", /* \361\155 */ "partiel", /* \361\156 */ "passive", /* \361\157 */ "patte", /* \361\160 */ "payanna", /* \361\161 */ "penchée", /* \361\162 */ "percussion", /* \361\163 */ "percé", /* \361\164 */ "phar", /* \361\165 */ "phur", /* \361\166 */ "pion", /* \361\167 */ "piour", /* \361\170 */ "pièce", /* \361\171 */ "piûp-kiyok", /* \361\172 */ "piûp-p'iûp'", /* \361\173 */ "piûp-siôs-kiyok", /* \361\174 */ "piûp-siôs-tikût", /* \361\175 */ "piûp-t'iût'", /* \361\176 */ "piûp-tchiûtch", /* \361\177 */ "piûp-tikût", /* \361\200 */ "place", /* \361\201 */ "plafond", /* \361\202 */ "plancher", /* \361\203 */ "planck", /* \361\204 */ "plein", /* \361\205 */ "pluie", /* \361\206 */ "pneumata", /* \361\207 */ "poil", /* \361\210 */ "poisson", /* \361\211 */ "pommetée", /* \361\212 */ "pou", /* \361\213 */ "poua", /* \361\214 */ "poui", /* \361\215 */ "pouo", /* \361\216 */ "poué", /* \361\217 */ "pouî", /* \361\220 */ "pouô", /* \361\221 */ "premier", /* \361\222 */ "projetée", /* \361\223 */ "proportion", /* \361\224 */ "protégée", /* \361\225 */ "précédant", /* \361\226 */ "puis", /* \361\227 */ "put", /* \361\230 */ "pyt", /* \361\231 */ "pâ-pilla", /* \361\232 */ "pèn", /* \361\233 */ "pê", /* \361\234 */ "pî", /* \361\235 */ "pô", /* \361\236 */ "q'ar", /* \361\237 */ "qadma", /* \361\240 */ "qot", /* \361\241 */ "quadrillé", /* \361\242 */ "quatrième", /* \361\243 */ "quintefeuille", /* \361\244 */ "ramées", /* \361\245 */ "rat", /* \361\246 */ "rayonnante", /* \361\247 */ "rayons", /* \361\250 */ "rdo", /* \361\251 */ "recourbé", /* \361\252 */ "rectiligne", /* \361\253 */ "relation", /* \361\254 */ "repos", /* \361\255 */ "ressource", /* \361\256 */ "retour", /* \361\257 */ "revâssâ", /* \361\260 */ "rgya", /* \361\261 */ "rgyings", /* \361\262 */ "riûl-kiyok-siôs", /* \361\263 */ "riûl-niûn", /* \361\264 */ "riûl-pansiôs", /* \361\265 */ "riûl-piûp-siôs", /* \361\266 */ "riûl-tikût", /* \361\267 */ "riûl-yorinhiûh", /* \361\270 */ "rje", /* \361\271 */ "rnam", /* \361\272 */ "roi", /* \361\273 */ "roue", /* \361\274 */ "rouâ", /* \361\275 */ "rîch", /* \361\276 */ "salla", /* \361\277 */ "sampi", /* \361\300 */ "samèkh", /* \361\301 */ "san", /* \361\302 */ "saturne", /* \361\303 */ "sceau", /* \361\304 */ "section", /* \361\305 */ "sel", /* \361\306 */ "semi-circulaire", /* \361\307 */ "semi-mou", /* \361\310 */ "semkath", /* \361\311 */ "shat", /* \361\312 */ "shop", /* \361\313 */ "shur", /* \361\314 */ "shy", /* \361\315 */ "sindhi", /* \361\316 */ "sine", /* \361\317 */ "siôs-niûn", /* \361\320 */ "siôs-riûl", /* \361\321 */ "siôs-tchiûtch", /* \361\322 */ "sonnerie", /* \361\323 */ "soui", /* \361\324 */ "soulignement", /* \361\325 */ "souo", /* \361\326 */ "souriant", /* \361\327 */ "soué", /* \361\330 */ "souî", /* \361\331 */ "souô", /* \361\332 */ "spécial", /* \361\333 */ "ssanghiûh", /* \361\334 */ "ssangniûn", /* \361\335 */ "ssangriûl", /* \361\336 */ "ssi", /* \361\337 */ "stigma", /* \361\340 */ "suivant", /* \361\341 */ "suivante", /* \361\342 */ "support", /* \361\343 */ "suppression", /* \361\344 */ "symétrique", /* \361\345 */ "synchronisation", /* \361\346 */ "sélectionnée", /* \361\347 */ "sô", /* \361\350 */ "t'ar", /* \361\351 */ "tabouret", /* \361\352 */ "tanné", /* \361\353 */ "taper", /* \361\354 */ "tatouïl", /* \361\355 */ "tau", /* \361\356 */ "tayanna", /* \361\357 */ "tch", /* \361\360 */ "tch'ar", /* \361\361 */ "tchan", /* \361\362 */ "tchayanna", /* \361\363 */ "tchima", /* \361\364 */ "tchin", /* \361\365 */ "tchou", /* \361\366 */ "tchoua", /* \361\367 */ "tchoui", /* \361\370 */ "tchouo", /* \361\371 */ "tchoué", /* \361\372 */ "tchouî", /* \361\373 */ "tchouô", /* \361\374 */ "tchô", /* \361\375 */ "temps", /* \361\376 */ "the", /* \361\377 */ "thorn", /* \362\001 */ "thou", /* \362\002 */ "thouâ", /* \362\003 */ "thô", /* \362\004 */ "tigre", /* \362\005 */ "tikût-kiyok", /* \362\006 */ "tirant", /* \362\007 */ "tire-bouchon", /* \362\010 */ "tié", /* \362\011 */ "tla", /* \362\012 */ "tlha", /* \362\013 */ "tlhi", /* \362\014 */ "tlho", /* \362\015 */ "tlhé", /* \362\016 */ "tli", /* \362\017 */ "tlo", /* \362\020 */ "tlou", /* \362\021 */ "tlé", /* \362\022 */ "toua", /* \362\023 */ "touche", /* \362\024 */ "toui", /* \362\025 */ "touo", /* \362\026 */ "tour", /* \362\027 */ "toué", /* \362\030 */ "touî", /* \362\031 */ "touô", /* \362\032 */ "traits", /* \362\033 */ "trompe-l'oeil", /* \362\034 */ "tronquée", /* \362\035 */ "trèfle", /* \362\036 */ "très", /* \362\037 */ "ts", /* \362\040 */ "ts'il", /* \362\041 */ "tse", /* \362\042 */ "tsha", /* \362\043 */ "tshes", /* \362\044 */ "tsin", /* \362\045 */ "tsô", /* \362\046 */ "ttayanna", /* \362\047 */ "ttho", /* \362\050 */ "tti", /* \362\051 */ "tto", /* \362\052 */ "tté", /* \362\053 */ "ttêth", /* \362\054 */ "type", /* \362\055 */ "tèt", /* \362\056 */ "usage", /* \362\057 */ "utilisé", /* \362\060 */ "vecteur", /* \362\061 */ "vep", /* \362\062 */ "viande", /* \362\063 */ "vieux", /* \362\064 */ "vingt-deux", /* \362\065 */ "vingt-et-un", /* \362\066 */ "vingt-quatre", /* \362\067 */ "vingt-trois", /* \362\070 */ "virtuel", /* \362\071 */ "visible", /* \362\072 */ "viË", /* \362\073 */ "voir", /* \362\074 */ "voltiger", /* \362\075 */ "vrai", /* \362\076 */ "vur", /* \362\077 */ "véhicule", /* \362\100 */ "vérification", /* \362\101 */ "wasallam", /* \362\102 */ "won", /* \362\103 */ "wou", /* \362\104 */ "wËn", /* \362\105 */ "xo", /* \362\106 */ "yate", /* \362\107 */ "ye", /* \362\110 */ "yen", /* \362\111 */ "yesiûng-pansiôs", /* \362\112 */ "yesiûng-siôs", /* \362\113 */ "yin", /* \362\114 */ "yit", /* \362\115 */ "yogh", /* \362\116 */ "yot", /* \362\117 */ "you-i", /* \362\120 */ "you-yo", /* \362\121 */ "you-yé", /* \362\122 */ "youa", /* \362\123 */ "youd", /* \362\124 */ "youi", /* \362\125 */ "youo", /* \362\126 */ "youé", /* \362\127 */ "youî", /* \362\130 */ "youô", /* \362\131 */ "yoûdh", /* \362\132 */ "yr", /* \362\133 */ "yâ", /* \362\134 */ "yô-i", /* \362\135 */ "yô-ya", /* \362\136 */ "yô-yè", /* \362\137 */ "zaqef", /* \362\140 */ "zelâmâ", /* \362\141 */ "zla", /* \362\142 */ "zot", /* \362\143 */ "zou", /* \362\144 */ "zur", /* \362\145 */ "zziet", /* \362\146 */ "zzip", /* \362\147 */ "zén", /* \362\150 */ "Ä", /* \362\151 */ "Æda-pilla", /* \362\152 */ "Ëe", /* \362\153 */ "âlaph", /* \362\154 */ "éclairée", /* \362\155 */ "étincellement", /* \362\156 */ "étude", /* \362\157 */ "îschar", /* \362\160 */ "'char", /* \362\161 */ "'khyil", /* \362\162 */ "'khyud", /* \362\163 */ "'phru", /* \362\164 */ "'ê", /* \362\165 */ "(ack)", /* \362\166 */ "(apc)", /* \362\167 */ "(bel)", /* \362\170 */ "(bph)", /* \362\171 */ "(bs)", /* \362\172 */ "(can)", /* \362\173 */ "(cch)", /* \362\174 */ "(cr)", /* \362\175 */ "(csi)", /* \362\176 */ "(dc1)", /* \362\177 */ "(dc2)", /* \362\200 */ "(dc3)", /* \362\201 */ "(dc4)", /* \362\202 */ "(dcs)", /* \362\203 */ "(del)", /* \362\204 */ "(dle)", /* \362\205 */ "(ega)", /* \362\206 */ "(em)", /* \362\207 */ "(enq)", /* \362\210 */ "(eot)", /* \362\211 */ "(esa)", /* \362\212 */ "(esc)", /* \362\213 */ "(etb)", /* \362\214 */ "(etx)", /* \362\215 */ "(ff)", /* \362\216 */ "(fs)", /* \362\217 */ "(gs)", /* \362\220 */ "(hop)", /* \362\221 */ "(ht)", /* \362\222 */ "(htj)", /* \362\223 */ "(hts)", /* \362\224 */ "(ind)", /* \362\225 */ "(lf)", /* \362\226 */ "(mw)", /* \362\227 */ "(nak)", /* \362\230 */ "(nbh)", /* \362\231 */ "(nel)", /* \362\232 */ "(nul)", /* \362\233 */ "(osc)", /* \362\234 */ "(pad)", /* \362\235 */ "(pld)", /* \362\236 */ "(plu)", /* \362\237 */ "(pm)", /* \362\240 */ "(pu1)", /* \362\241 */ "(pu2)", /* \362\242 */ "(ri)", /* \362\243 */ "(rs)", /* \362\244 */ "(sci)", /* \362\245 */ "(sga)", /* \362\246 */ "(sgci)", /* \362\247 */ "(si)", /* \362\250 */ "(so)", /* \362\251 */ "(soh)", /* \362\252 */ "(sos)", /* \362\253 */ "(ss2)", /* \362\254 */ "(ss3)", /* \362\255 */ "(ssa)", /* \362\256 */ "(st)", /* \362\257 */ "(sts)", /* \362\260 */ "(stx)", /* \362\261 */ "(sub)", /* \362\262 */ "(syn)", /* \362\263 */ "(us)", /* \362\264 */ "(vt)", /* \362\265 */ "(vts)", /* \362\266 */ "a-ou", /* \362\267 */ "a-ô", /* \362\270 */ "abafili", /* \362\271 */ "abaisseuse", /* \362\272 */ "abat-jour", /* \362\273 */ "abîme", /* \362\274 */ "ac", /* \362\275 */ "accentué", /* \362\276 */ "acceptable", /* \362\277 */ "accompli", /* \362\300 */ "addak", /* \362\301 */ "africain", /* \362\302 */ "ah", /* \362\303 */ "ahsda", /* \362\304 */ "ailm", /* \362\305 */ "akat", /* \362\306 */ "akbar", /* \362\307 */ "al-lakouna", /* \362\310 */ "algiz", /* \362\311 */ "alifou", /* \362\312 */ "alignés", /* \362\313 */ "allah", /* \362\314 */ "aller", /* \362\315 */ "aloha", /* \362\316 */ "alors", /* \362\317 */ "alvéolaire", /* \362\320 */ "alésage", /* \362\321 */ "amba", /* \362\322 */ "ampères", /* \362\323 */ "ancre", /* \362\324 */ "angkhankhou", /* \362\325 */ "angström", /* \362\326 */ "animal", /* \362\327 */ "ankh", /* \362\330 */ "ann", /* \362\331 */ "anne", /* \362\332 */ "anneau", /* \362\333 */ "ano", /* \362\334 */ "anoudatta", /* \362\335 */ "anousvâraya", /* \362\336 */ "anpea", /* \362\337 */ "ansuz", /* \362\340 */ "anti-liant", /* \362\341 */ "ao", /* \362\342 */ "aonn", /* \362\343 */ "aouyanna", /* \362\344 */ "août", /* \362\345 */ "ap", /* \362\346 */ "appel", /* \362\347 */ "appentis", /* \362\350 */ "appuyée", /* \362\351 */ "apâto", /* \362\352 */ "ar", /* \362\353 */ "ar-à-longue-branche", /* \362\354 */ "arbre", /* \362\355 */ "arlaug", /* \362\356 */ "arme", /* \362\357 */ "arriver", /* \362\360 */ "arrondi", /* \362\361 */ "arrondie", /* \362\362 */ "arrondis", /* \362\363 */ "article", /* \362\364 */ "aruhua", /* \362\365 */ "arèa-i", /* \362\366 */ "arèa-o", /* \362\367 */ "arèa-ou", /* \362\370 */ "arèè", /* \362\371 */ "as", /* \362\372 */ "aspirée", /* \362\373 */ "assertion", /* \362\374 */ "astérique", /* \362\375 */ "astérisme", /* \362\376 */ "at", /* \362\377 */ "atnah", /* \363\001 */ "atteindre", /* \363\002 */ "attente", /* \363\003 */ "attention", /* \363\004 */ "aux", /* \363\005 */ "avakrahasañña", /* \363\006 */ "avion", /* \363\007 */ "avril", /* \363\010 */ "ax", /* \363\011 */ "ay", /* \363\012 */ "ayah", /* \363\013 */ "ayanna", /* \363\014 */ "aïnn", /* \363\015 */ "aïnou", /* \363\016 */ "aïvilik", /* \363\017 */ "aïyanna", /* \363\020 */ "aû", /* \363\021 */ "baht", /* \363\022 */ "balance", /* \363\023 */ "balouda", /* \363\024 */ "baloudas", /* \363\025 */ "bancaire", /* \363\026 */ "bantotch", /* \363\027 */ "bap", /* \363\030 */ "bar", /* \363\031 */ "barbiche", /* \363\032 */ "bariyôsan", /* \363\033 */ "barrekh", /* \363\034 */ "barricade", /* \363\035 */ "base", /* \363\036 */ "bat", /* \363\037 */ "bathamasat", /* \363\040 */ "battant", /* \363\041 */ "bax", /* \363\042 */ "baïmaï", /* \363\043 */ "bba", /* \363\044 */ "bbap", /* \363\045 */ "bbat", /* \363\046 */ "bbax", /* \363\047 */ "bbe", /* \363\050 */ "bbep", /* \363\051 */ "bbex", /* \363\052 */ "bbi", /* \363\053 */ "bbie", /* \363\054 */ "bbiep", /* \363\055 */ "bbiet", /* \363\056 */ "bbiex", /* \363\057 */ "bbip", /* \363\060 */ "bbit", /* \363\061 */ "bbix", /* \363\062 */ "bbo", /* \363\063 */ "bbop", /* \363\064 */ "bbot", /* \363\065 */ "bbox", /* \363\066 */ "bbu", /* \363\067 */ "bbuo", /* \363\070 */ "bbuop", /* \363\071 */ "bbuox", /* \363\072 */ "bbup", /* \363\073 */ "bbur", /* \363\074 */ "bburx", /* \363\075 */ "bbux", /* \363\076 */ "bby", /* \363\077 */ "bbyp", /* \363\100 */ "bbyt", /* \363\101 */ "bbyx", /* \363\102 */ "bchi", /* \363\103 */ "beigne", /* \363\104 */ "beith", /* \363\105 */ "belgthor", /* \363\106 */ "ben", /* \363\107 */ "benzène", /* \363\110 */ "beorc", /* \363\111 */ "bep", /* \363\112 */ "berkanan", /* \363\113 */ "bet", /* \363\114 */ "bex", /* \363\115 */ "beyyal", /* \363\116 */ "biarkan", /* \363\117 */ "biarkan-à-ramille", /* \363\120 */ "biblique", /* \363\121 */ "bidentale", /* \363\122 */ "bie", /* \363\123 */ "biep", /* \363\124 */ "biet", /* \363\125 */ "biex", /* \363\126 */ "bilabial", /* \363\127 */ "bilaliale", /* \363\130 */ "bindi", /* \363\131 */ "biologique", /* \363\132 */ "bip", /* \363\133 */ "birga", /* \363\134 */ "biru", /* \363\135 */ "bis", /* \363\136 */ "bisectrice", /* \363\137 */ "bit", /* \363\140 */ "bix", /* \363\141 */ "bka'", /* \363\142 */ "blancs", /* \363\143 */ "boisseau", /* \363\144 */ "bonhomme", /* \363\145 */ "bons", /* \363\146 */ "bop", /* \363\147 */ "boruto", /* \363\150 */ "bot", /* \363\151 */ "bou", /* \363\152 */ "bouche", /* \363\153 */ "bourgeon", /* \363\154 */ "bouton", /* \363\155 */ "box", /* \363\156 */ "boîte", /* \363\157 */ "bq", /* \363\160 */ "branche", /* \363\161 */ "brebis", /* \363\162 */ "broderie", /* \363\163 */ "bsdus", /* \363\164 */ "bskur", /* \363\165 */ "bstar", /* \363\166 */ "buo", /* \363\167 */ "buop", /* \363\170 */ "buox", /* \363\171 */ "bup", /* \363\172 */ "bureau", /* \363\173 */ "burx", /* \363\174 */ "bussyeru", /* \363\175 */ "but", /* \363\176 */ "bux", /* \363\177 */ "bwa", /* \363\200 */ "by", /* \363\201 */ "byp", /* \363\202 */ "byr", /* \363\203 */ "byrx", /* \363\204 */ "byt", /* \363\205 */ "byx", /* \363\206 */ "bÄ", /* \363\207 */ "bâ", /* \363\210 */ "bâreru", /* \363\211 */ "bécarre", /* \363\212 */ "bémol", /* \363\213 */ "bêth", /* \363\214 */ "bûche", /* \363\215 */ "c'hal", /* \363\216 */ "cachette", /* \363\217 */ "cada", /* \363\220 */ "cadavre", /* \363\221 */ "cadrat", /* \363\222 */ "caducée", /* \363\223 */ "caisse", /* \363\224 */ "cal", /* \363\225 */ "calage", /* \363\226 */ "calc", /* \363\227 */ "cancer", /* \363\230 */ "cang", /* \363\231 */ "cap", /* \363\232 */ "capricorne", /* \363\233 */ "care-of", /* \363\234 */ "carotte", /* \363\235 */ "cat", /* \363\236 */ "caverne", /* \363\237 */ "cax", /* \363\240 */ "cc", /* \363\241 */ "cd", /* \363\242 */ "cealc", /* \363\243 */ "ceinture", /* \363\244 */ "ceirt", /* \363\245 */ "celsius", /* \363\246 */ "cen", /* \363\247 */ "centaine", /* \363\250 */ "cep", /* \363\251 */ "cerf", /* \363\252 */ "cex", /* \363\253 */ "chad", /* \363\254 */ "chaise", /* \363\255 */ "chalchelet", /* \363\256 */ "champ", /* \363\257 */ "chanvre", /* \363\260 */ "chap", /* \363\261 */ "chapeau", /* \363\262 */ "charrue", /* \363\263 */ "chat", /* \363\264 */ "chaudes", /* \363\265 */ "chaudron", /* \363\266 */ "chaviyani", /* \363\267 */ "chax", /* \363\270 */ "chayanna", /* \363\271 */ "chaï", /* \363\272 */ "chei", /* \363\273 */ "cheminer", /* \363\274 */ "chen", /* \363\275 */ "chené", /* \363\276 */ "chep", /* \363\277 */ "chet", /* \363\300 */ "cheva", /* \363\301 */ "chevauchement", /* \363\302 */ "chevelure", /* \363\303 */ "chevron", /* \363\304 */ "chevrons", /* \363\305 */ "chex", /* \363\306 */ "chifre", /* \363\307 */ "chop", /* \363\310 */ "chot", /* \363\311 */ "chox", /* \363\312 */ "chrisme", /* \363\313 */ "chu", /* \363\314 */ "chuo", /* \363\315 */ "chuop", /* \363\316 */ "chuot", /* \363\317 */ "chuox", /* \363\320 */ "chup", /* \363\321 */ "chur", /* \363\322 */ "churx", /* \363\323 */ "chux", /* \363\324 */ "chwa", /* \363\325 */ "chy", /* \363\326 */ "chyp", /* \363\327 */ "chyr", /* \363\330 */ "chyrx", /* \363\331 */ "chyt", /* \363\332 */ "chyx", /* \363\333 */ "chÄ", /* \363\334 */ "châ", /* \363\335 */ "chèque", /* \363\336 */ "chékel", /* \363\337 */ "chî", /* \363\340 */ "chînou", /* \363\341 */ "chô", /* \363\342 */ "chôwa", /* \363\343 */ "ci", /* \363\344 */ "ciboulette", /* \363\345 */ "cie", /* \363\346 */ "ciep", /* \363\347 */ "ciet", /* \363\350 */ "ciex", /* \363\351 */ "circulaire", /* \363\352 */ "cit", /* \363\353 */ "citron", /* \363\354 */ "civil", /* \363\355 */ "cix", /* \363\356 */ "cjc-f900", /* \363\357 */ "cjc-f901", /* \363\360 */ "cjc-f902", /* \363\361 */ "cjc-f903", /* \363\362 */ "cjc-f904", /* \363\363 */ "cjc-f905", /* \363\364 */ "cjc-f906", /* \363\365 */ "cjc-f907", /* \363\366 */ "cjc-f908", /* \363\367 */ "cjc-f909", /* \363\370 */ "cjc-f90a", /* \363\371 */ "cjc-f90b", /* \363\372 */ "cjc-f90c", /* \363\373 */ "cjc-f90d", /* \363\374 */ "cjc-f90e", /* \363\375 */ "cjc-f90f", /* \363\376 */ "cjc-f910", /* \363\377 */ "cjc-f911", /* \364\001 */ "cjc-f912", /* \364\002 */ "cjc-f913", /* \364\003 */ "cjc-f914", /* \364\004 */ "cjc-f915", /* \364\005 */ "cjc-f916", /* \364\006 */ "cjc-f917", /* \364\007 */ "cjc-f918", /* \364\010 */ "cjc-f919", /* \364\011 */ "cjc-f91a", /* \364\012 */ "cjc-f91b", /* \364\013 */ "cjc-f91c", /* \364\014 */ "cjc-f91d", /* \364\015 */ "cjc-f91e", /* \364\016 */ "cjc-f91f", /* \364\017 */ "cjc-f920", /* \364\020 */ "cjc-f921", /* \364\021 */ "cjc-f922", /* \364\022 */ "cjc-f923", /* \364\023 */ "cjc-f924", /* \364\024 */ "cjc-f925", /* \364\025 */ "cjc-f926", /* \364\026 */ "cjc-f927", /* \364\027 */ "cjc-f928", /* \364\030 */ "cjc-f929", /* \364\031 */ "cjc-f92a", /* \364\032 */ "cjc-f92b", /* \364\033 */ "cjc-f92c", /* \364\034 */ "cjc-f92d", /* \364\035 */ "cjc-f92e", /* \364\036 */ "cjc-f92f", /* \364\037 */ "cjc-f930", /* \364\040 */ "cjc-f931", /* \364\041 */ "cjc-f932", /* \364\042 */ "cjc-f933", /* \364\043 */ "cjc-f934", /* \364\044 */ "cjc-f935", /* \364\045 */ "cjc-f936", /* \364\046 */ "cjc-f937", /* \364\047 */ "cjc-f938", /* \364\050 */ "cjc-f939", /* \364\051 */ "cjc-f93a", /* \364\052 */ "cjc-f93b", /* \364\053 */ "cjc-f93c", /* \364\054 */ "cjc-f93d", /* \364\055 */ "cjc-f93e", /* \364\056 */ "cjc-f93f", /* \364\057 */ "cjc-f940", /* \364\060 */ "cjc-f941", /* \364\061 */ "cjc-f942", /* \364\062 */ "cjc-f943", /* \364\063 */ "cjc-f944", /* \364\064 */ "cjc-f945", /* \364\065 */ "cjc-f946", /* \364\066 */ "cjc-f947", /* \364\067 */ "cjc-f948", /* \364\070 */ "cjc-f949", /* \364\071 */ "cjc-f94a", /* \364\072 */ "cjc-f94b", /* \364\073 */ "cjc-f94c", /* \364\074 */ "cjc-f94d", /* \364\075 */ "cjc-f94e", /* \364\076 */ "cjc-f94f", /* \364\077 */ "cjc-f950", /* \364\100 */ "cjc-f951", /* \364\101 */ "cjc-f952", /* \364\102 */ "cjc-f953", /* \364\103 */ "cjc-f954", /* \364\104 */ "cjc-f955", /* \364\105 */ "cjc-f956", /* \364\106 */ "cjc-f957", /* \364\107 */ "cjc-f958", /* \364\110 */ "cjc-f959", /* \364\111 */ "cjc-f95a", /* \364\112 */ "cjc-f95b", /* \364\113 */ "cjc-f95c", /* \364\114 */ "cjc-f95d", /* \364\115 */ "cjc-f95e", /* \364\116 */ "cjc-f95f", /* \364\117 */ "cjc-f960", /* \364\120 */ "cjc-f961", /* \364\121 */ "cjc-f962", /* \364\122 */ "cjc-f963", /* \364\123 */ "cjc-f964", /* \364\124 */ "cjc-f965", /* \364\125 */ "cjc-f966", /* \364\126 */ "cjc-f967", /* \364\127 */ "cjc-f968", /* \364\130 */ "cjc-f969", /* \364\131 */ "cjc-f96a", /* \364\132 */ "cjc-f96b", /* \364\133 */ "cjc-f96c", /* \364\134 */ "cjc-f96d", /* \364\135 */ "cjc-f96e", /* \364\136 */ "cjc-f96f", /* \364\137 */ "cjc-f970", /* \364\140 */ "cjc-f971", /* \364\141 */ "cjc-f972", /* \364\142 */ "cjc-f973", /* \364\143 */ "cjc-f974", /* \364\144 */ "cjc-f975", /* \364\145 */ "cjc-f976", /* \364\146 */ "cjc-f977", /* \364\147 */ "cjc-f978", /* \364\150 */ "cjc-f979", /* \364\151 */ "cjc-f97a", /* \364\152 */ "cjc-f97b", /* \364\153 */ "cjc-f97c", /* \364\154 */ "cjc-f97d", /* \364\155 */ "cjc-f97e", /* \364\156 */ "cjc-f97f", /* \364\157 */ "cjc-f980", /* \364\160 */ "cjc-f981", /* \364\161 */ "cjc-f982", /* \364\162 */ "cjc-f983", /* \364\163 */ "cjc-f984", /* \364\164 */ "cjc-f985", /* \364\165 */ "cjc-f986", /* \364\166 */ "cjc-f987", /* \364\167 */ "cjc-f988", /* \364\170 */ "cjc-f989", /* \364\171 */ "cjc-f98a", /* \364\172 */ "cjc-f98b", /* \364\173 */ "cjc-f98c", /* \364\174 */ "cjc-f98d", /* \364\175 */ "cjc-f98e", /* \364\176 */ "cjc-f98f", /* \364\177 */ "cjc-f990", /* \364\200 */ "cjc-f991", /* \364\201 */ "cjc-f992", /* \364\202 */ "cjc-f993", /* \364\203 */ "cjc-f994", /* \364\204 */ "cjc-f995", /* \364\205 */ "cjc-f996", /* \364\206 */ "cjc-f997", /* \364\207 */ "cjc-f998", /* \364\210 */ "cjc-f999", /* \364\211 */ "cjc-f99a", /* \364\212 */ "cjc-f99b", /* \364\213 */ "cjc-f99c", /* \364\214 */ "cjc-f99d", /* \364\215 */ "cjc-f99e", /* \364\216 */ "cjc-f99f", /* \364\217 */ "cjc-f9a0", /* \364\220 */ "cjc-f9a1", /* \364\221 */ "cjc-f9a2", /* \364\222 */ "cjc-f9a3", /* \364\223 */ "cjc-f9a4", /* \364\224 */ "cjc-f9a5", /* \364\225 */ "cjc-f9a6", /* \364\226 */ "cjc-f9a7", /* \364\227 */ "cjc-f9a8", /* \364\230 */ "cjc-f9a9", /* \364\231 */ "cjc-f9aa", /* \364\232 */ "cjc-f9ab", /* \364\233 */ "cjc-f9ac", /* \364\234 */ "cjc-f9ad", /* \364\235 */ "cjc-f9ae", /* \364\236 */ "cjc-f9af", /* \364\237 */ "cjc-f9b0", /* \364\240 */ "cjc-f9b1", /* \364\241 */ "cjc-f9b2", /* \364\242 */ "cjc-f9b3", /* \364\243 */ "cjc-f9b4", /* \364\244 */ "cjc-f9b5", /* \364\245 */ "cjc-f9b6", /* \364\246 */ "cjc-f9b7", /* \364\247 */ "cjc-f9b8", /* \364\250 */ "cjc-f9b9", /* \364\251 */ "cjc-f9ba", /* \364\252 */ "cjc-f9bb", /* \364\253 */ "cjc-f9bc", /* \364\254 */ "cjc-f9bd", /* \364\255 */ "cjc-f9be", /* \364\256 */ "cjc-f9bf", /* \364\257 */ "cjc-f9c0", /* \364\260 */ "cjc-f9c1", /* \364\261 */ "cjc-f9c2", /* \364\262 */ "cjc-f9c3", /* \364\263 */ "cjc-f9c4", /* \364\264 */ "cjc-f9c5", /* \364\265 */ "cjc-f9c6", /* \364\266 */ "cjc-f9c7", /* \364\267 */ "cjc-f9c8", /* \364\270 */ "cjc-f9c9", /* \364\271 */ "cjc-f9ca", /* \364\272 */ "cjc-f9cb", /* \364\273 */ "cjc-f9cc", /* \364\274 */ "cjc-f9cd", /* \364\275 */ "cjc-f9ce", /* \364\276 */ "cjc-f9cf", /* \364\277 */ "cjc-f9d0", /* \364\300 */ "cjc-f9d1", /* \364\301 */ "cjc-f9d2", /* \364\302 */ "cjc-f9d3", /* \364\303 */ "cjc-f9d4", /* \364\304 */ "cjc-f9d5", /* \364\305 */ "cjc-f9d6", /* \364\306 */ "cjc-f9d7", /* \364\307 */ "cjc-f9d8", /* \364\310 */ "cjc-f9d9", /* \364\311 */ "cjc-f9da", /* \364\312 */ "cjc-f9db", /* \364\313 */ "cjc-f9dc", /* \364\314 */ "cjc-f9dd", /* \364\315 */ "cjc-f9de", /* \364\316 */ "cjc-f9df", /* \364\317 */ "cjc-f9e0", /* \364\320 */ "cjc-f9e1", /* \364\321 */ "cjc-f9e2", /* \364\322 */ "cjc-f9e3", /* \364\323 */ "cjc-f9e4", /* \364\324 */ "cjc-f9e5", /* \364\325 */ "cjc-f9e6", /* \364\326 */ "cjc-f9e7", /* \364\327 */ "cjc-f9e8", /* \364\330 */ "cjc-f9e9", /* \364\331 */ "cjc-f9ea", /* \364\332 */ "cjc-f9eb", /* \364\333 */ "cjc-f9ec", /* \364\334 */ "cjc-f9ed", /* \364\335 */ "cjc-f9ee", /* \364\336 */ "cjc-f9ef", /* \364\337 */ "cjc-f9f0", /* \364\340 */ "cjc-f9f1", /* \364\341 */ "cjc-f9f2", /* \364\342 */ "cjc-f9f3", /* \364\343 */ "cjc-f9f4", /* \364\344 */ "cjc-f9f5", /* \364\345 */ "cjc-f9f6", /* \364\346 */ "cjc-f9f7", /* \364\347 */ "cjc-f9f8", /* \364\350 */ "cjc-f9f9", /* \364\351 */ "cjc-f9fa", /* \364\352 */ "cjc-f9fb", /* \364\353 */ "cjc-f9fc", /* \364\354 */ "cjc-f9fd", /* \364\355 */ "cjc-f9fe", /* \364\356 */ "cjc-f9ff", /* \364\357 */ "cjc-fa00", /* \364\360 */ "cjc-fa01", /* \364\361 */ "cjc-fa02", /* \364\362 */ "cjc-fa03", /* \364\363 */ "cjc-fa04", /* \364\364 */ "cjc-fa05", /* \364\365 */ "cjc-fa06", /* \364\366 */ "cjc-fa07", /* \364\367 */ "cjc-fa08", /* \364\370 */ "cjc-fa09", /* \364\371 */ "cjc-fa0a", /* \364\372 */ "cjc-fa0b", /* \364\373 */ "cjc-fa0c", /* \364\374 */ "cjc-fa0d", /* \364\375 */ "cjc-fa0e", /* \364\376 */ "cjc-fa0f", /* \364\377 */ "cjc-fa10", /* \365\001 */ "cjc-fa11", /* \365\002 */ "cjc-fa12", /* \365\003 */ "cjc-fa13", /* \365\004 */ "cjc-fa14", /* \365\005 */ "cjc-fa15", /* \365\006 */ "cjc-fa16", /* \365\007 */ "cjc-fa17", /* \365\010 */ "cjc-fa18", /* \365\011 */ "cjc-fa19", /* \365\012 */ "cjc-fa1a", /* \365\013 */ "cjc-fa1b", /* \365\014 */ "cjc-fa1c", /* \365\015 */ "cjc-fa1d", /* \365\016 */ "cjc-fa1e", /* \365\017 */ "cjc-fa1f", /* \365\020 */ "cjc-fa20", /* \365\021 */ "cjc-fa21", /* \365\022 */ "cjc-fa22", /* \365\023 */ "cjc-fa23", /* \365\024 */ "cjc-fa24", /* \365\025 */ "cjc-fa25", /* \365\026 */ "cjc-fa26", /* \365\027 */ "cjc-fa27", /* \365\030 */ "cjc-fa28", /* \365\031 */ "cjc-fa29", /* \365\032 */ "cjc-fa2a", /* \365\033 */ "cjc-fa2b", /* \365\034 */ "cjc-fa2c", /* \365\035 */ "cjc-fa2d", /* \365\036 */ "clan", /* \365\037 */ "clavier", /* \365\040 */ "cochon", /* \365\041 */ "coché", /* \365\042 */ "coffre", /* \365\043 */ "coins", /* \365\044 */ "coll", /* \365\045 */ "commerce", /* \365\046 */ "comparer", /* \365\047 */ "complément", /* \365\050 */ "composition", /* \365\051 */ "compte", /* \365\052 */ "compte-client", /* \365\053 */ "comète", /* \365\054 */ "concave", /* \365\055 */ "conique", /* \365\056 */ "conjonction", /* \365\057 */ "conjuguée", /* \365\060 */ "conservateur", /* \365\061 */ "conséquent", /* \365\062 */ "contenant", /* \365\063 */ "contraction", /* \365\064 */ "contre-cotice", /* \365\065 */ "cop", /* \365\066 */ "copie", /* \365\067 */ "coproduit", /* \365\070 */ "coq", /* \365\071 */ "corbeau", /* \365\072 */ "corps", /* \365\073 */ "correct", /* \365\074 */ "correspond", /* \365\075 */ "coréenne", /* \365\076 */ "cot", /* \365\077 */ "cotice", /* \365\100 */ "couleur", /* \365\101 */ "coupe", /* \365\102 */ "coupure", /* \365\103 */ "courant", /* \365\104 */ "courbé", /* \365\105 */ "courir", /* \365\106 */ "couronne", /* \365\107 */ "course", /* \365\110 */ "court", /* \365\111 */ "courts", /* \365\112 */ "couvrir", /* \365\113 */ "cox", /* \365\114 */ "cri-r", /* \365\115 */ "croc", /* \365\116 */ "croche", /* \365\117 */ "croissant", /* \365\120 */ "croisée", /* \365\121 */ "cruzeiro", /* \365\122 */ "cu", /* \365\123 */ "cubique", /* \365\124 */ "cueillir", /* \365\125 */ "cuillère", /* \365\126 */ "cuo", /* \365\127 */ "cuox", /* \365\130 */ "cup", /* \365\131 */ "cur", /* \365\132 */ "cursif", /* \365\133 */ "curx", /* \365\134 */ "cut", /* \365\135 */ "cux", /* \365\136 */ "cweorth", /* \365\137 */ "cylindricité", /* \365\140 */ "cyr", /* \365\141 */ "cyrx", /* \365\142 */ "cyx", /* \365\143 */ "céréales", /* \365\144 */ "d'article", /* \365\145 */ "d'emplacement", /* \365\146 */ "d'enregistrements", /* \365\147 */ "d'ensemble", /* \365\150 */ "d'entrée", /* \365\151 */ "d'euler", /* \365\152 */ "d'exclamation-interrogation",/* \365\153 */ "d'exploitation", /* \365\154 */ "d'information", /* \365\155 */ "d'insistance", /* \365\156 */ "d'interrogation-exclamation",/* \365\157 */ "d'intérêt", /* \365\160 */ "d'inversion", /* \365\161 */ "d'objet", /* \365\162 */ "d'unités", /* \365\163 */ "d'échappement", /* \365\164 */ "d'écrire", /* \365\165 */ "dagalga", /* \365\166 */ "dagaz", /* \365\167 */ "daguech", /* \365\170 */ "dair", /* \365\171 */ "damarou", /* \365\172 */ "danger", /* \365\173 */ "dap", /* \365\174 */ "darga", /* \365\175 */ "dasia", /* \365\176 */ "dat", /* \365\177 */ "david", /* \365\200 */ "daviyani", /* \365\201 */ "dax", /* \365\202 */ "db", /* \365\203 */ "ddap", /* \365\204 */ "ddat", /* \365\205 */ "ddax", /* \365\206 */ "dddha", /* \365\207 */ "ddep", /* \365\210 */ "ddex", /* \365\211 */ "ddie", /* \365\212 */ "ddiep", /* \365\213 */ "ddiex", /* \365\214 */ "ddip", /* \365\215 */ "ddit", /* \365\216 */ "ddix", /* \365\217 */ "ddop", /* \365\220 */ "ddot", /* \365\221 */ "ddou", /* \365\222 */ "ddox", /* \365\223 */ "ddu", /* \365\224 */ "dduo", /* \365\225 */ "dduop", /* \365\226 */ "dduox", /* \365\227 */ "ddup", /* \365\230 */ "ddurx", /* \365\231 */ "ddut", /* \365\232 */ "ddux", /* \365\233 */ "ddwa", /* \365\234 */ "ddÄ", /* \365\235 */ "ddé", /* \365\236 */ "debout", /* \365\237 */ "dehi", /* \365\240 */ "dej", /* \365\241 */ "dek", /* \365\242 */ "deka", /* \365\243 */ "del", /* \365\244 */ "demi-arbre", /* \365\245 */ "demi-cadrat", /* \365\246 */ "demi-espace", /* \365\247 */ "dental", /* \365\250 */ "dep", /* \365\251 */ "dernier", /* \365\252 */ "descendant", /* \365\253 */ "descendu", /* \365\254 */ "desi", /* \365\255 */ "dessous", /* \365\256 */ "dex", /* \365\257 */ "dharma", /* \365\260 */ "dhâlou", /* \365\261 */ "diagonale", /* \365\262 */ "diamètre", /* \365\263 */ "die", /* \365\264 */ "diep", /* \365\265 */ "diex", /* \365\266 */ "dingot", /* \365\267 */ "dip", /* \365\270 */ "dire", /* \365\271 */ "directionnel", /* \365\272 */ "discontinu", /* \365\273 */ "dit", /* \365\274 */ "divisé", /* \365\275 */ "dièse", /* \365\276 */ "dj", /* \365\277 */ "djalladjalalouhou", /* \365\300 */ "djaviyani", /* \365\301 */ "djia", /* \365\302 */ "djja", /* \365\303 */ "djje", /* \365\304 */ "djji", /* \365\305 */ "djjo", /* \365\306 */ "djjou", /* \365\307 */ "djjé", /* \365\310 */ "djwa", /* \365\311 */ "djÄ", /* \365\312 */ "dl", /* \365\313 */ "dle", /* \365\314 */ "dli", /* \365\315 */ "dlo", /* \365\316 */ "dlou", /* \365\317 */ "dlé", /* \365\320 */ "domino", /* \365\321 */ "dong", /* \365\322 */ "dop", /* \365\323 */ "doru", /* \365\324 */ "dot", /* \365\325 */ "doute", /* \365\326 */ "dox", /* \365\327 */ "drachme", /* \365\330 */ "dril", /* \365\331 */ "duo", /* \365\332 */ "duox", /* \365\333 */ "dup", /* \365\334 */ "durx", /* \365\335 */ "dut", /* \365\336 */ "dux", /* \365\337 */ "dwa", /* \365\340 */ "dze", /* \365\341 */ "dzi", /* \365\342 */ "dzo", /* \365\343 */ "dzou", /* \365\344 */ "dÄ", /* \365\345 */ "dÆg", /* \365\346 */ "dËn", /* \365\347 */ "dâdhou", /* \365\350 */ "dâsu", /* \365\351 */ "décembre", /* \365\352 */ "défaire", /* \365\353 */ "défiler", /* \365\354 */ "définition", /* \365\355 */ "délimiteur", /* \365\356 */ "démontrer", /* \365\357 */ "dépilement", /* \365\360 */ "déposée", /* \365\361 */ "dérivée", /* \365\362 */ "dérouleur", /* \365\363 */ "eadhadh", /* \365\364 */ "eamhancholl", /* \365\365 */ "ear", /* \365\366 */ "effacement", /* \365\367 */ "effachement", /* \365\370 */ "egal", /* \365\371 */ "eh", /* \365\372 */ "ehwaz", /* \365\373 */ "el", /* \365\374 */ "elliptique", /* \365\375 */ "emjambée", /* \365\376 */ "enceinte", /* \365\377 */ "encore", /* \366\001 */ "enfant", /* \366\002 */ "enfer", /* \366\003 */ "englobante", /* \366\004 */ "enn", /* \366\005 */ "enregistreur", /* \366\006 */ "ensemble", /* \366\007 */ "entièrement", /* \366\010 */ "entrant", /* \366\011 */ "entrelacé", /* \366\012 */ "entrer", /* \366\013 */ "enveloppe", /* \366\014 */ "envelopper", /* \366\015 */ "eoh", /* \366\016 */ "eolhx", /* \366\017 */ "eou", /* \366\020 */ "estime", /* \366\021 */ "estimé", /* \366\022 */ "esukûdo", /* \366\023 */ "eth", /* \366\024 */ "ethel", /* \366\025 */ "eul", /* \366\026 */ "euro", /* \366\027 */ "ex", /* \366\030 */ "excellent", /* \366\031 */ "exclarrogatif", /* \366\032 */ "exclusif", /* \366\033 */ "excès", /* \366\034 */ "existe", /* \366\035 */ "exécution", /* \366\036 */ "eï", /* \366\037 */ "fahrenheit", /* \366\040 */ "faible", /* \366\041 */ "fallait", /* \366\042 */ "fan", /* \366\043 */ "fap", /* \366\044 */ "farah", /* \366\045 */ "fat", /* \366\046 */ "faucille", /* \366\047 */ "fax", /* \366\050 */ "fayanna", /* \366\051 */ "fe", /* \366\052 */ "fearn", /* \366\053 */ "femme", /* \366\054 */ "feng", /* \366\055 */ "fermant", /* \366\056 */ "fermeture", /* \366\057 */ "festival", /* \366\060 */ "ff", /* \366\061 */ "ffi", /* \366\062 */ "ffl", /* \366\063 */ "fichier", /* \366\064 */ "fichiers", /* \366\065 */ "fil", /* \366\066 */ "fip", /* \366\067 */ "fit", /* \366\070 */ "fix", /* \366\071 */ "fl", /* \366\072 */ "fléche", /* \366\073 */ "flûte", /* \366\074 */ "fm", /* \366\075 */ "folioles", /* \366\076 */ "foncée", /* \366\077 */ "fongman", /* \366\100 */ "fop", /* \366\101 */ "force", /* \366\102 */ "fort", /* \366\103 */ "fosse", /* \366\104 */ "fox", /* \366\105 */ "fraisage", /* \366\106 */ "franc", /* \366\107 */ "français", /* \366\110 */ "fu", /* \366\111 */ "fup", /* \366\112 */ "fur", /* \366\113 */ "furx", /* \366\114 */ "fuseau", /* \366\115 */ "fut", /* \366\116 */ "fux", /* \366\117 */ "fwa", /* \366\120 */ "fy", /* \366\121 */ "fyp", /* \366\122 */ "fyt", /* \366\123 */ "fyx", /* \366\124 */ "fyÄ", /* \366\125 */ "fÄ", /* \366\126 */ "fâ", /* \366\127 */ "fâfou", /* \366\130 */ "fâï", /* \366\131 */ "féhu", /* \366\132 */ "féoh", /* \366\133 */ "février", /* \366\134 */ "fî", /* \366\135 */ "fô", /* \366\136 */ "ganma", /* \366\137 */ "gap", /* \366\140 */ "gar", /* \366\141 */ "garon", /* \366\142 */ "gat", /* \366\143 */ "gax", /* \366\144 */ "gb", /* \366\145 */ "gcan", /* \366\146 */ "gdan", /* \366\147 */ "gebo", /* \366\150 */ "geofu", /* \366\151 */ "ger", /* \366\152 */ "gerchâïm", /* \366\153 */ "gerech", /* \366\154 */ "get", /* \366\155 */ "gex", /* \366\156 */ "ggap", /* \366\157 */ "ggat", /* \366\160 */ "ggax", /* \366\161 */ "ggep", /* \366\162 */ "gget", /* \366\163 */ "ggex", /* \366\164 */ "ggie", /* \366\165 */ "ggiep", /* \366\166 */ "ggiex", /* \366\167 */ "ggit", /* \366\170 */ "ggix", /* \366\171 */ "ggot", /* \366\172 */ "ggou", /* \366\173 */ "ggox", /* \366\174 */ "ggu", /* \366\175 */ "gguop", /* \366\176 */ "gguot", /* \366\177 */ "gguox", /* \366\200 */ "ggup", /* \366\201 */ "ggur", /* \366\202 */ "ggurx", /* \366\203 */ "ggut", /* \366\204 */ "ggux", /* \366\205 */ "ggÄ", /* \366\206 */ "ggé", /* \366\207 */ "ghaïnou", /* \366\210 */ "ghe", /* \366\211 */ "ghi", /* \366\212 */ "gho", /* \366\213 */ "ghou", /* \366\214 */ "ghz", /* \366\215 */ "ghé", /* \366\216 */ "gie", /* \366\217 */ "giep", /* \366\220 */ "giet", /* \366\221 */ "giex", /* \366\222 */ "giga", /* \366\223 */ "gimel", /* \366\224 */ "ginî", /* \366\225 */ "gip", /* \366\226 */ "girudâ", /* \366\227 */ "git", /* \366\230 */ "gix", /* \366\231 */ "glace", /* \366\232 */ "gn", /* \366\233 */ "gnaviyani", /* \366\234 */ "gop", /* \366\235 */ "gort", /* \366\236 */ "goua'", /* \366\237 */ "gox", /* \366\240 */ "gpa", /* \366\241 */ "graphique", /* \366\242 */ "grenouille", /* \366\243 */ "grichine", /* \366\244 */ "griffe", /* \366\245 */ "grimaçant", /* \366\246 */ "groupe", /* \366\247 */ "groupes", /* \366\250 */ "gui", /* \366\251 */ "guillemets", /* \366\252 */ "guo", /* \366\253 */ "guop", /* \366\254 */ "guot", /* \366\255 */ "guox", /* \366\256 */ "gup", /* \366\257 */ "gur", /* \366\260 */ "guramu", /* \366\261 */ "guramuton", /* \366\262 */ "gurx", /* \366\263 */ "gut", /* \366\264 */ "gux", /* \366\265 */ "guËn", /* \366\266 */ "gwa", /* \366\267 */ "gwe", /* \366\270 */ "gwi", /* \366\271 */ "gwÄ", /* \366\272 */ "gwé", /* \366\273 */ "gy", /* \366\274 */ "gÄ", /* \366\275 */ "gâfou", /* \366\276 */ "gémeaux", /* \366\277 */ "génitif", /* \366\300 */ "géométrique", /* \366\301 */ "géorgien", /* \366\302 */ "gêta", /* \366\303 */ "hache", /* \366\304 */ "hagall-à-longue-branche", /* \366\305 */ "hagall-à-ramille", /* \366\306 */ "haglaz", /* \366\307 */ "haitu", /* \366\310 */ "halanta", /* \366\311 */ "hallebarde", /* \366\312 */ "hameau", /* \366\313 */ "han", /* \366\314 */ "hap", /* \366\315 */ "haricot", /* \366\316 */ "hat", /* \366\317 */ "haute", /* \366\320 */ "hax", /* \366\321 */ "hayanna", /* \366\322 */ "hekutâru", /* \366\323 */ "hep", /* \366\324 */ "hermitienne", /* \366\325 */ "herutu", /* \366\326 */ "hex", /* \366\327 */ "heïseï", /* \366\330 */ "hha", /* \366\331 */ "hhe", /* \366\332 */ "hhevâssâ/'essâsâ", /* \366\333 */ "hhi", /* \366\334 */ "hho", /* \366\335 */ "hhou", /* \366\336 */ "hhwa", /* \366\337 */ "hhÄ", /* \366\340 */ "hhâ", /* \366\341 */ "hhé", /* \366\342 */ "hhêth", /* \366\343 */ "hie", /* \366\344 */ "hiex", /* \366\345 */ "hip", /* \366\346 */ "hit", /* \366\347 */ "hizb", /* \366\350 */ "hiûh-miûm", /* \366\351 */ "hiûh-niûn", /* \366\352 */ "hiûh-piûp", /* \366\353 */ "hiûh-riûl", /* \366\354 */ "hk", /* \366\355 */ "hla", /* \366\356 */ "hlap", /* \366\357 */ "hlat", /* \366\360 */ "hlax", /* \366\361 */ "hle", /* \366\362 */ "hlep", /* \366\363 */ "hlex", /* \366\364 */ "hli", /* \366\365 */ "hlie", /* \366\366 */ "hliep", /* \366\367 */ "hliex", /* \366\370 */ "hlip", /* \366\371 */ "hlit", /* \366\372 */ "hlix", /* \366\373 */ "hlo", /* \366\374 */ "hlop", /* \366\375 */ "hlox", /* \366\376 */ "hlu", /* \366\377 */ "hluo", /* \367\001 */ "hluop", /* \367\002 */ "hluox", /* \367\003 */ "hlup", /* \367\004 */ "hlur", /* \367\005 */ "hlurx", /* \367\006 */ "hlut", /* \367\007 */ "hlux", /* \367\010 */ "hly", /* \367\011 */ "hlyp", /* \367\012 */ "hlyr", /* \367\013 */ "hlyrx", /* \367\014 */ "hlyt", /* \367\015 */ "hlyx", /* \367\016 */ "hma", /* \367\017 */ "hmap", /* \367\020 */ "hmat", /* \367\021 */ "hmax", /* \367\022 */ "hmi", /* \367\023 */ "hmie", /* \367\024 */ "hmiep", /* \367\025 */ "hmiex", /* \367\026 */ "hmip", /* \367\027 */ "hmit", /* \367\030 */ "hmix", /* \367\031 */ "hmop", /* \367\032 */ "hmot", /* \367\033 */ "hmox", /* \367\034 */ "hmu", /* \367\035 */ "hmuo", /* \367\036 */ "hmuop", /* \367\037 */ "hmuox", /* \367\040 */ "hmup", /* \367\041 */ "hmur", /* \367\042 */ "hmurx", /* \367\043 */ "hmut", /* \367\044 */ "hmux", /* \367\045 */ "hmy", /* \367\046 */ "hmyp", /* \367\047 */ "hmyr", /* \367\050 */ "hmyrx", /* \367\051 */ "hmyx", /* \367\052 */ "hnap", /* \367\053 */ "hnat", /* \367\054 */ "hnax", /* \367\055 */ "hne", /* \367\056 */ "hnep", /* \367\057 */ "hnex", /* \367\060 */ "hni", /* \367\061 */ "hnie", /* \367\062 */ "hniep", /* \367\063 */ "hniet", /* \367\064 */ "hniex", /* \367\065 */ "hnip", /* \367\066 */ "hnit", /* \367\067 */ "hnix", /* \367\070 */ "hnop", /* \367\071 */ "hnot", /* \367\072 */ "hnox", /* \367\073 */ "hnuo", /* \367\074 */ "hnuox", /* \367\075 */ "hnut", /* \367\076 */ "holekh", /* \367\077 */ "hon", /* \367\100 */ "hop", /* \367\101 */ "horizontalement", /* \367\102 */ "horizontaux", /* \367\103 */ "hors-tout", /* \367\104 */ "hot", /* \367\105 */ "houa", /* \367\106 */ "houe", /* \367\107 */ "houi", /* \367\110 */ "houo", /* \367\111 */ "houou", /* \367\112 */ "houé", /* \367\113 */ "hox", /* \367\114 */ "hp", /* \367\115 */ "hpa", /* \367\116 */ "hs", /* \367\117 */ "huarado", /* \367\120 */ "huo", /* \367\121 */ "huop", /* \367\122 */ "huot", /* \367\123 */ "huox", /* \367\124 */ "huran", /* \367\125 */ "huîto", /* \367\126 */ "hv", /* \367\127 */ "hwair", /* \367\130 */ "hxa", /* \367\131 */ "hxap", /* \367\132 */ "hxat", /* \367\133 */ "hxax", /* \367\134 */ "hxe", /* \367\135 */ "hxep", /* \367\136 */ "hxex", /* \367\137 */ "hxi", /* \367\140 */ "hxie", /* \367\141 */ "hxiep", /* \367\142 */ "hxiet", /* \367\143 */ "hxiex", /* \367\144 */ "hxip", /* \367\145 */ "hxix", /* \367\146 */ "hxo", /* \367\147 */ "hxox", /* \367\150 */ "hxuop", /* \367\151 */ "hxuot", /* \367\152 */ "hxuox", /* \367\153 */ "hystérésis", /* \367\154 */ "hz", /* \367\155 */ "hÄ", /* \367\156 */ "hÆgl", /* \367\157 */ "hËn", /* \367\160 */ "hèt", /* \367\161 */ "hôn", /* \367\162 */ "hôru", /* \367\163 */ "i-a", /* \367\164 */ "i-arèa", /* \367\165 */ "i-ou", /* \367\166 */ "i-ya", /* \367\167 */ "i-ô", /* \367\170 */ "i-û", /* \367\171 */ "ibifili", /* \367\172 */ "identification", /* \367\173 */ "ie", /* \367\174 */ "iep", /* \367\175 */ "iet", /* \367\176 */ "iex", /* \367\177 */ "ifÍn", /* \367\200 */ "ilouyanna", /* \367\201 */ "ilouz", /* \367\202 */ "iloûyanna", /* \367\203 */ "im", /* \367\204 */ "incrément", /* \367\205 */ "industrielle", /* \367\206 */ "infini", /* \367\207 */ "info", /* \367\210 */ "ing", /* \367\211 */ "ingwaz", /* \367\212 */ "iningu", /* \367\213 */ "inn", /* \367\214 */ "inne", /* \367\215 */ "innn", /* \367\216 */ "insecte", /* \367\217 */ "intercale", /* \367\220 */ "intersyllabique", /* \367\221 */ "inti", /* \367\222 */ "inversé", /* \367\223 */ "iodhadh", /* \367\224 */ "ior", /* \367\225 */ "ip", /* \367\226 */ "iri", /* \367\227 */ "irouyanna", /* \367\230 */ "iroûyanna", /* \367\231 */ "is", /* \367\232 */ "isa", /* \367\233 */ "iss", /* \367\234 */ "it", /* \367\235 */ "iwaz", /* \367\236 */ "ix", /* \367\237 */ "iy", /* \367\240 */ "iyanna", /* \367\241 */ "iûng-k'iûk'", /* \367\242 */ "iûng-miûm", /* \367\243 */ "iûng-p'iûp'", /* \367\244 */ "iûng-pansiôs", /* \367\245 */ "iûng-piûp", /* \367\246 */ "iûng-siôs", /* \367\247 */ "iûng-ssangkiyok", /* \367\250 */ "iûng-t'iût'", /* \367\251 */ "iûng-tch'iûtch'", /* \367\252 */ "iûng-tchiûtch", /* \367\253 */ "iûng-tikût", /* \367\254 */ "jambes", /* \367\255 */ "janvier", /* \367\256 */ "japonaise", /* \367\257 */ "je", /* \367\260 */ "jeran", /* \367\261 */ "jie", /* \367\262 */ "jiep", /* \367\263 */ "jiet", /* \367\264 */ "jiex", /* \367\265 */ "jip", /* \367\266 */ "jit", /* \367\267 */ "jix", /* \367\270 */ "jji", /* \367\271 */ "jjie", /* \367\272 */ "jjiep", /* \367\273 */ "jjiet", /* \367\274 */ "jjiex", /* \367\275 */ "jjip", /* \367\276 */ "jjit", /* \367\277 */ "jjix", /* \367\300 */ "jjo", /* \367\301 */ "jjop", /* \367\302 */ "jjot", /* \367\303 */ "jjox", /* \367\304 */ "jju", /* \367\305 */ "jjuo", /* \367\306 */ "jjuop", /* \367\307 */ "jjuox", /* \367\310 */ "jjup", /* \367\311 */ "jjur", /* \367\312 */ "jjurx", /* \367\313 */ "jjux", /* \367\314 */ "jjyp", /* \367\315 */ "jjyt", /* \367\316 */ "jjyx", /* \367\317 */ "jop", /* \367\320 */ "jot", /* \367\321 */ "jou", /* \367\322 */ "jox", /* \367\323 */ "ju", /* \367\324 */ "judéo-espagnol", /* \367\325 */ "juillet", /* \367\326 */ "juin", /* \367\327 */ "juo", /* \367\330 */ "juop", /* \367\331 */ "juot", /* \367\332 */ "juox", /* \367\333 */ "jup", /* \367\334 */ "jupiter", /* \367\335 */ "jur", /* \367\336 */ "jurx", /* \367\337 */ "justification", /* \367\340 */ "jut", /* \367\341 */ "jux", /* \367\342 */ "jwa", /* \367\343 */ "jy", /* \367\344 */ "jyp", /* \367\345 */ "jyr", /* \367\346 */ "jyrx", /* \367\347 */ "jyt", /* \367\350 */ "jyx", /* \367\351 */ "jÄ", /* \367\352 */ "jérusalem", /* \367\353 */ "kah", /* \367\354 */ "kai", /* \367\355 */ "kairi", /* \367\356 */ "kakabat", /* \367\357 */ "kan", /* \367\360 */ "kantadja", /* \367\361 */ "kap", /* \367\362 */ "kapyo-ounriûl", /* \367\363 */ "karatto", /* \367\364 */ "karné", /* \367\365 */ "karorî", /* \367\366 */ "kat", /* \367\367 */ "kaun", /* \367\370 */ "kauna", /* \367\371 */ "kax", /* \367\372 */ "kaï", /* \367\373 */ "kb", /* \367\374 */ "kcal", /* \367\375 */ "kelvin", /* \367\376 */ "kep", /* \367\377 */ "ket", /* \370\001 */ "kex", /* \370\002 */ "khe", /* \370\003 */ "khomout", /* \370\004 */ "khon", /* \370\005 */ "khou", /* \370\006 */ "khouat", /* \370\007 */ "khwaï", /* \370\010 */ "khz", /* \370\011 */ "khâ", /* \370\012 */ "kie", /* \370\013 */ "kiep", /* \370\014 */ "kiex", /* \370\015 */ "kih", /* \370\016 */ "kiro", /* \370\017 */ "kiroguramu", /* \370\020 */ "kiromêtoru", /* \370\021 */ "kirowatto", /* \370\022 */ "kix", /* \370\023 */ "kiyok-riûl", /* \370\024 */ "kiyok-siôs-kiyok", /* \370\025 */ "kka", /* \370\026 */ "kke", /* \370\027 */ "kki", /* \370\030 */ "kko", /* \370\031 */ "kkou", /* \370\032 */ "kké", /* \370\033 */ "kl", /* \370\034 */ "koh", /* \370\035 */ "kombou", /* \370\036 */ "kon", /* \370\037 */ "kop", /* \370\040 */ "koruna", /* \370\041 */ "kot", /* \370\042 */ "koubouts", /* \370\043 */ "kounddaliya", /* \370\044 */ "kox", /* \370\045 */ "koûh", /* \370\046 */ "kpa", /* \370\047 */ "kra", /* \370\050 */ "kt", /* \370\051 */ "kuo", /* \370\052 */ "kuop", /* \370\053 */ "kuox", /* \370\054 */ "kup", /* \370\055 */ "kur", /* \370\056 */ "kuruzeiro", /* \370\057 */ "kurx", /* \370\060 */ "kurône", /* \370\061 */ "kut", /* \370\062 */ "kux", /* \370\063 */ "kv", /* \370\064 */ "kw", /* \370\065 */ "kwe", /* \370\066 */ "kwo", /* \370\067 */ "kwou", /* \370\070 */ "kwÄ", /* \370\071 */ "kwËn", /* \370\072 */ "kxa", /* \370\073 */ "kxe", /* \370\074 */ "kxi", /* \370\075 */ "kxo", /* \370\076 */ "kxou", /* \370\077 */ "kxwa", /* \370\100 */ "kxwe", /* \370\101 */ "kxwi", /* \370\102 */ "kxwÄ", /* \370\103 */ "kxwé", /* \370\104 */ "kxÄ", /* \370\105 */ "kxé", /* \370\106 */ "kyurî", /* \370\107 */ "kÄ", /* \370\110 */ "kâ", /* \370\111 */ "kâfou", /* \370\112 */ "kâph", /* \370\113 */ "kâï", /* \370\114 */ "kéh", /* \370\115 */ "kêsu", /* \370\116 */ "kî", /* \370\117 */ "kômoût", /* \370\120 */ "kôpo", /* \370\121 */ "l'espace", /* \370\122 */ "l'homme", /* \370\123 */ "l-pointé", /* \370\124 */ "lac", /* \370\125 */ "lagu", /* \370\126 */ "lakkhangyao", /* \370\127 */ "lance", /* \370\130 */ "langue", /* \370\131 */ "laotiens", /* \370\132 */ "lap", /* \370\133 */ "lat", /* \370\134 */ "latéral", /* \370\135 */ "laukaz", /* \370\136 */ "lax", /* \370\137 */ "lce", /* \370\140 */ "lci", /* \370\141 */ "ldan", /* \370\142 */ "ledit", /* \370\143 */ "lej", /* \370\144 */ "lek", /* \370\145 */ "lep", /* \370\146 */ "lettré", /* \370\147 */ "lex", /* \370\150 */ "lh", /* \370\151 */ "lhag", /* \370\152 */ "lhaviyani", /* \370\153 */ "lhe", /* \370\154 */ "lhou", /* \370\155 */ "lhâ", /* \370\156 */ "lhé", /* \370\157 */ "lhî", /* \370\160 */ "lhô", /* \370\161 */ "liaison", /* \370\162 */ "libéral", /* \370\163 */ "liep", /* \370\164 */ "liet", /* \370\165 */ "liex", /* \370\166 */ "lignes", /* \370\167 */ "limite", /* \370\170 */ "lion", /* \370\171 */ "lip", /* \370\172 */ "lire", /* \370\173 */ "lit", /* \370\174 */ "lix", /* \370\175 */ "lm", /* \370\176 */ "ln", /* \370\177 */ "locatif", /* \370\200 */ "log", /* \370\201 */ "logicielle", /* \370\202 */ "logr", /* \370\203 */ "lop", /* \370\204 */ "lorraine", /* \370\205 */ "lot", /* \370\206 */ "lout", /* \370\207 */ "lox", /* \370\210 */ "ls", /* \370\211 */ "lu", /* \370\212 */ "luis", /* \370\213 */ "lunaire", /* \370\214 */ "luo", /* \370\215 */ "luop", /* \370\216 */ "luot", /* \370\217 */ "luox", /* \370\220 */ "lup", /* \370\221 */ "lur", /* \370\222 */ "lurx", /* \370\223 */ "lut", /* \370\224 */ "lux", /* \370\225 */ "lwa", /* \370\226 */ "lx", /* \370\227 */ "ly", /* \370\230 */ "lyp", /* \370\231 */ "lyrx", /* \370\232 */ "lyt", /* \370\233 */ "lyx", /* \370\234 */ "lz", /* \370\235 */ "lÄ", /* \370\236 */ "lËn", /* \370\237 */ "lÜ", /* \370\240 */ "lÜÜ", /* \370\241 */ "lâ", /* \370\242 */ "lâmadh", /* \370\243 */ "lâmou", /* \370\244 */ "lâï", /* \370\245 */ "légère", /* \370\246 */ "lî", /* \370\247 */ "madr-à-longue-branche", /* \370\250 */ "madr-à-ramille", /* \370\251 */ "mahha", /* \370\252 */ "maille", /* \370\253 */ "mains", /* \370\254 */ "maison", /* \370\255 */ "makku", /* \370\256 */ "maladie", /* \370\257 */ "malte", /* \370\260 */ "mandchoue", /* \370\261 */ "mannaz", /* \370\262 */ "manque", /* \370\263 */ "mansyon", /* \370\264 */ "map", /* \370\265 */ "maqaf", /* \370\266 */ "mar", /* \370\267 */ "marqué", /* \370\270 */ "mars", /* \370\271 */ "marteau", /* \370\272 */ "masculin", /* \370\273 */ "massorétique", /* \370\274 */ "mat", /* \370\275 */ "matin", /* \370\276 */ "matrice", /* \370\277 */ "mauvais", /* \370\300 */ "max", /* \370\301 */ "mayakru", /* \370\302 */ "mayakuro", /* \370\303 */ "mayanna", /* \370\304 */ "maïmalaï", /* \370\305 */ "maïmouan", /* \370\306 */ "maïtaïkhou", /* \370\307 */ "maïyamok", /* \370\310 */ "mchu", /* \370\311 */ "mdun", /* \370\312 */ "med", /* \370\313 */ "mehouppakh", /* \370\314 */ "melon", /* \370\315 */ "men", /* \370\316 */ "mercure", /* \370\317 */ "mesure", /* \370\320 */ "meteg", /* \370\321 */ "mex", /* \370\322 */ "meïji", /* \370\323 */ "mg", /* \370\324 */ "mga", /* \370\325 */ "mgap", /* \370\326 */ "mgat", /* \370\327 */ "mgax", /* \370\330 */ "mge", /* \370\331 */ "mgep", /* \370\332 */ "mgex", /* \370\333 */ "mgie", /* \370\334 */ "mgiex", /* \370\335 */ "mgop", /* \370\336 */ "mgot", /* \370\337 */ "mgox", /* \370\340 */ "mgu", /* \370\341 */ "mguo", /* \370\342 */ "mguop", /* \370\343 */ "mguox", /* \370\344 */ "mgup", /* \370\345 */ "mgur", /* \370\346 */ "mgurx", /* \370\347 */ "mgut", /* \370\350 */ "mgux", /* \370\351 */ "mh", /* \370\352 */ "mhz", /* \370\353 */ "micro", /* \370\354 */ "mie", /* \370\355 */ "miep", /* \370\356 */ "miex", /* \370\357 */ "mikuron", /* \370\360 */ "mil", /* \370\361 */ "millet", /* \370\362 */ "millions", /* \370\363 */ "millième", /* \370\364 */ "ministre", /* \370\365 */ "minnie", /* \370\366 */ "mip", /* \370\367 */ "miri", /* \370\370 */ "miribâru", /* \370\371 */ "mise", /* \370\372 */ "mit", /* \370\373 */ "mix", /* \370\374 */ "miûm-hiûh", /* \370\375 */ "miûm-kiyok", /* \370\376 */ "miûm-riûl", /* \370\377 */ "miûm-ssangsiôs", /* \371\001 */ "miûm-tch'iûtch'", /* \371\002 */ "ml", /* \371\003 */ "moan", /* \371\004 */ "mode", /* \371\005 */ "modélise", /* \371\006 */ "mohammad", /* \371\007 */ "moineau", /* \371\010 */ "moins-ou-plus", /* \371\011 */ "mol", /* \371\012 */ "mongols", /* \371\013 */ "monostable", /* \371\014 */ "montant", /* \371\015 */ "monter", /* \371\016 */ "montre", /* \371\017 */ "moose", /* \371\020 */ "mouette", /* \371\021 */ "mouqdam", /* \371\022 */ "mox", /* \371\023 */ "moyen", /* \371\024 */ "moûsikatoan", /* \371\025 */ "mpa", /* \371\026 */ "ms", /* \371\027 */ "muin", /* \371\030 */ "multijection", /* \371\031 */ "multiple", /* \371\032 */ "muo", /* \371\033 */ "muop", /* \371\034 */ "muot", /* \371\035 */ "muox", /* \371\036 */ "mup", /* \371\037 */ "murx", /* \371\040 */ "musique", /* \371\041 */ "mut", /* \371\042 */ "mux", /* \371\043 */ "mwa", /* \371\044 */ "my", /* \371\045 */ "myp", /* \371\046 */ "mystérieux", /* \371\047 */ "myt", /* \371\050 */ "myx", /* \371\051 */ "myÄ", /* \371\052 */ "mÄ", /* \371\053 */ "mâ", /* \371\054 */ "mârikh", /* \371\055 */ "mâï", /* \371\056 */ "mère", /* \371\057 */ "médecine", /* \371\060 */ "médiane", /* \371\061 */ "médians", /* \371\062 */ "mégatonne", /* \371\063 */ "métobèle", /* \371\064 */ "mêtoru", /* \371\065 */ "mî", /* \371\066 */ "mîmou", /* \371\067 */ "n'appartient", /* \371\070 */ "n'est", /* \371\071 */ "n'existe", /* \371\072 */ "n'oblige", /* \371\073 */ "n'y", /* \371\074 */ "n-pointé", /* \371\075 */ "nabla", /* \371\076 */ "nah", /* \371\077 */ "naira", /* \371\100 */ "nangmontho", /* \371\101 */ "nano", /* \371\102 */ "nap", /* \371\103 */ "nationales", /* \371\104 */ "naud", /* \371\105 */ "naud-à-ramille", /* \371\106 */ "naudiz", /* \371\107 */ "nax", /* \371\110 */ "naître", /* \371\111 */ "nba", /* \371\112 */ "nbap", /* \371\113 */ "nbat", /* \371\114 */ "nbax", /* \371\115 */ "nbi", /* \371\116 */ "nbiep", /* \371\117 */ "nbiex", /* \371\120 */ "nbip", /* \371\121 */ "nbit", /* \371\122 */ "nbix", /* \371\123 */ "nbo", /* \371\124 */ "nbop", /* \371\125 */ "nbot", /* \371\126 */ "nbox", /* \371\127 */ "nbu", /* \371\130 */ "nbup", /* \371\131 */ "nbur", /* \371\132 */ "nburx", /* \371\133 */ "nbut", /* \371\134 */ "nbux", /* \371\135 */ "nby", /* \371\136 */ "nbyp", /* \371\137 */ "nbyr", /* \371\140 */ "nbyrx", /* \371\141 */ "nbyt", /* \371\142 */ "nbyx", /* \371\143 */ "nda", /* \371\144 */ "ndap", /* \371\145 */ "ndat", /* \371\146 */ "ndax", /* \371\147 */ "nde", /* \371\150 */ "ndep", /* \371\151 */ "ndex", /* \371\152 */ "ndi", /* \371\153 */ "ndie", /* \371\154 */ "ndiex", /* \371\155 */ "ndip", /* \371\156 */ "ndit", /* \371\157 */ "ndix", /* \371\160 */ "ndo", /* \371\161 */ "ndop", /* \371\162 */ "ndot", /* \371\163 */ "ndox", /* \371\164 */ "ndu", /* \371\165 */ "ndup", /* \371\166 */ "ndur", /* \371\167 */ "ndurx", /* \371\170 */ "ndut", /* \371\171 */ "ndux", /* \371\172 */ "nen", /* \371\173 */ "nep", /* \371\174 */ "neptune", /* \371\175 */ "nettoyer", /* \371\176 */ "nex", /* \371\177 */ "nez", /* \371\200 */ "nf", /* \371\201 */ "ngap", /* \371\202 */ "ngat", /* \371\203 */ "ngax", /* \371\204 */ "ngaï", /* \371\205 */ "nge", /* \371\206 */ "ngep", /* \371\207 */ "ngex", /* \371\210 */ "ngg", /* \371\211 */ "ngi", /* \371\212 */ "ngie", /* \371\213 */ "ngiep", /* \371\214 */ "ngiex", /* \371\215 */ "ngop", /* \371\216 */ "ngot", /* \371\217 */ "ngou", /* \371\220 */ "ngox", /* \371\221 */ "nguo", /* \371\222 */ "nguot", /* \371\223 */ "nguox", /* \371\224 */ "ngâ", /* \371\225 */ "ngâï", /* \371\226 */ "ngéadal", /* \371\227 */ "ngî", /* \371\230 */ "ngô", /* \371\231 */ "nh", /* \371\232 */ "nia", /* \371\233 */ "nie", /* \371\234 */ "niep", /* \371\235 */ "niex", /* \371\236 */ "niggahita", /* \371\237 */ "nikahit", /* \371\240 */ "nikhahit", /* \371\241 */ "nion", /* \371\242 */ "nip", /* \371\243 */ "nirougou", /* \371\244 */ "nit", /* \371\245 */ "nix", /* \371\246 */ "niûn-piûp", /* \371\247 */ "niûn-t'iût'", /* \371\250 */ "nji", /* \371\251 */ "njie", /* \371\252 */ "njiep", /* \371\253 */ "njiet", /* \371\254 */ "njiex", /* \371\255 */ "njip", /* \371\256 */ "njit", /* \371\257 */ "njix", /* \371\260 */ "njo", /* \371\261 */ "njop", /* \371\262 */ "njot", /* \371\263 */ "njox", /* \371\264 */ "nju", /* \371\265 */ "njuo", /* \371\266 */ "njuox", /* \371\267 */ "njup", /* \371\270 */ "njur", /* \371\271 */ "njurx", /* \371\272 */ "njux", /* \371\273 */ "njy", /* \371\274 */ "njyp", /* \371\275 */ "njyr", /* \371\276 */ "njyrx", /* \371\277 */ "njyt", /* \371\300 */ "njyx", /* \371\301 */ "nm", /* \371\302 */ "nng", /* \371\303 */ "nnga", /* \371\304 */ "nngi", /* \371\305 */ "nngo", /* \371\306 */ "nngâ", /* \371\307 */ "nngî", /* \371\310 */ "nngô", /* \371\311 */ "nno", /* \371\312 */ "nnoûn", /* \371\313 */ "noirs", /* \371\314 */ "nokhouk", /* \371\315 */ "nominales", /* \371\316 */ "non-barre", /* \371\317 */ "non-et", /* \371\320 */ "non-ou", /* \371\321 */ "non-vérification", /* \371\322 */ "nop", /* \371\323 */ "not", /* \371\324 */ "notto", /* \371\325 */ "nouveau", /* \371\326 */ "nouvelle", /* \371\327 */ "novembre", /* \371\330 */ "nox", /* \371\331 */ "noûnou", /* \371\332 */ "nra", /* \371\333 */ "nrap", /* \371\334 */ "nrat", /* \371\335 */ "nrax", /* \371\336 */ "nre", /* \371\337 */ "nrep", /* \371\340 */ "nret", /* \371\341 */ "nrex", /* \371\342 */ "nro", /* \371\343 */ "nrop", /* \371\344 */ "nrox", /* \371\345 */ "nru", /* \371\346 */ "nrup", /* \371\347 */ "nrur", /* \371\350 */ "nrurx", /* \371\351 */ "nrut", /* \371\352 */ "nrux", /* \371\353 */ "nry", /* \371\354 */ "nryp", /* \371\355 */ "nryr", /* \371\356 */ "nryrx", /* \371\357 */ "nryt", /* \371\360 */ "nryx", /* \371\361 */ "ns", /* \371\362 */ "nuage", /* \371\363 */ "nuit", /* \371\364 */ "nunavut", /* \371\365 */ "nuo", /* \371\366 */ "nuop", /* \371\367 */ "nuox", /* \371\370 */ "nup", /* \371\371 */ "nur", /* \371\372 */ "nurx", /* \371\373 */ "nut", /* \371\374 */ "nux", /* \371\375 */ "nv", /* \371\376 */ "nw", /* \371\377 */ "nwa", /* \372\001 */ "nyd", /* \372\002 */ "nyi", /* \372\003 */ "nyie", /* \372\004 */ "nyiep", /* \372\005 */ "nyiet", /* \372\006 */ "nyiex", /* \372\007 */ "nyit", /* \372\010 */ "nyix", /* \372\011 */ "nyo", /* \372\012 */ "nyot", /* \372\013 */ "nyox", /* \372\014 */ "nyu", /* \372\015 */ "nyuo", /* \372\016 */ "nyuop", /* \372\017 */ "nyuox", /* \372\020 */ "nyup", /* \372\021 */ "nyut", /* \372\022 */ "nyux", /* \372\023 */ "nza", /* \372\024 */ "nzap", /* \372\025 */ "nzat", /* \372\026 */ "nzax", /* \372\027 */ "nze", /* \372\030 */ "nzex", /* \372\031 */ "nzi", /* \372\032 */ "nzie", /* \372\033 */ "nziep", /* \372\034 */ "nziex", /* \372\035 */ "nzip", /* \372\036 */ "nzit", /* \372\037 */ "nzix", /* \372\040 */ "nzop", /* \372\041 */ "nzox", /* \372\042 */ "nzu", /* \372\043 */ "nzuo", /* \372\044 */ "nzuox", /* \372\045 */ "nzup", /* \372\046 */ "nzurx", /* \372\047 */ "nzux", /* \372\050 */ "nzy", /* \372\051 */ "nzyp", /* \372\052 */ "nzyr", /* \372\053 */ "nzyrx", /* \372\054 */ "nzyt", /* \372\055 */ "nzyx", /* \372\056 */ "nÄ", /* \372\057 */ "nËn", /* \372\060 */ "nâksikyaya", /* \372\061 */ "nâï", /* \372\062 */ "nî", /* \372\063 */ "o-ou", /* \372\064 */ "o-ô", /* \372\065 */ "o-û", /* \372\066 */ "oblige", /* \372\067 */ "obofili", /* \372\070 */ "occidentale", /* \372\071 */ "octet", /* \372\072 */ "octobre", /* \372\073 */ "oleh", /* \372\074 */ "once", /* \372\075 */ "one", /* \372\076 */ "ong", /* \372\077 */ "onkar", /* \372\100 */ "onne", /* \372\101 */ "onsu", /* \372\102 */ "opposition", /* \372\103 */ "option", /* \372\104 */ "orage", /* \372\105 */ "ordonnances", /* \372\106 */ "oreille", /* \372\107 */ "orientale", /* \372\110 */ "origine", /* \372\111 */ "orthodoxe", /* \372\112 */ "oss-à-branche-longue", /* \372\113 */ "oss-à-ramille", /* \372\114 */ "ot", /* \372\115 */ "othalan", /* \372\116 */ "ou-a", /* \372\117 */ "ou-o-û", /* \372\120 */ "ou-ou", /* \372\121 */ "ou-yé", /* \372\122 */ "ou-è", /* \372\123 */ "ouboufili", /* \372\124 */ "oudatta", /* \372\125 */ "oue", /* \372\126 */ "ounn", /* \372\127 */ "ouou", /* \372\130 */ "oura", /* \372\131 */ "ouvrant", /* \372\132 */ "ouyanna", /* \372\133 */ "ouê", /* \372\134 */ "ov", /* \372\135 */ "ox", /* \372\136 */ "oyanna", /* \372\137 */ "oûboûfili", /* \372\140 */ "oûyanna", /* \372\141 */ "p'", /* \372\142 */ "p'ar", /* \372\143 */ "p-ouvert", /* \372\144 */ "p-pointé", /* \372\145 */ "padma", /* \372\146 */ "paix", /* \372\147 */ "palatalisation", /* \372\150 */ "palotchka", /* \372\151 */ "paluta", /* \372\152 */ "pap", /* \372\153 */ "parapluie", /* \372\154 */ "parce", /* \372\155 */ "parfum", /* \372\156 */ "partie", /* \372\157 */ "partielle", /* \372\160 */ "paseq", /* \372\161 */ "pasouq", /* \372\162 */ "pastille", /* \372\163 */ "pat", /* \372\164 */ "patak", /* \372\165 */ "paviyani", /* \372\166 */ "pax", /* \372\167 */ "pazer", /* \372\170 */ "païyannoï", /* \372\171 */ "pc", /* \372\172 */ "peau", /* \372\173 */ "peith", /* \372\174 */ "penihi", /* \372\175 */ "pensu", /* \372\176 */ "pente", /* \372\177 */ "peorth", /* \372\200 */ "permis", /* \372\201 */ "personnellement", /* \372\202 */ "perspective", /* \372\203 */ "perthro", /* \372\204 */ "peseta", /* \372\205 */ "peso", /* \372\206 */ "pf", /* \372\207 */ "ph", /* \372\210 */ "phan", /* \372\211 */ "phe", /* \372\212 */ "phinthou", /* \372\213 */ "phnèk", /* \372\214 */ "phonogramme", /* \372\215 */ "phou", /* \372\216 */ "phoung", /* \372\217 */ "phouthao", /* \372\220 */ "phwa", /* \372\221 */ "phÄ", /* \372\222 */ "phé", /* \372\223 */ "piasutoru", /* \372\224 */ "pie", /* \372\225 */ "piep", /* \372\226 */ "pierre", /* \372\227 */ "piex", /* \372\230 */ "piko", /* \372\231 */ "pikuru", /* \372\232 */ "pip", /* \372\233 */ "pit", /* \372\234 */ "pix", /* \372\235 */ "piûp-hiûh", /* \372\236 */ "piûp-niûn", /* \372\237 */ "piûp-riûl", /* \372\240 */ "piûp-siôs-piûp", /* \372\241 */ "piûp-siôs-tchiûtch", /* \372\242 */ "piûp-ssangsiôs", /* \372\243 */ "piûp-tch'iûtch'", /* \372\244 */ "pla", /* \372\245 */ "plus-ou-moins", /* \372\246 */ "pluton", /* \372\247 */ "pm", /* \372\250 */ "pointo", /* \372\251 */ "points-1", /* \372\252 */ "points-12", /* \372\253 */ "points-123", /* \372\254 */ "points-1234", /* \372\255 */ "points-12345", /* \372\256 */ "points-123456", /* \372\257 */ "points-1234567", /* \372\260 */ "points-12345678", /* \372\261 */ "points-1234568", /* \372\262 */ "points-123457", /* \372\263 */ "points-1234578", /* \372\264 */ "points-123458", /* \372\265 */ "points-12346", /* \372\266 */ "points-123467", /* \372\267 */ "points-1234678", /* \372\270 */ "points-123468", /* \372\271 */ "points-12347", /* \372\272 */ "points-123478", /* \372\273 */ "points-12348", /* \372\274 */ "points-1235", /* \372\275 */ "points-12356", /* \372\276 */ "points-123567", /* \372\277 */ "points-1235678", /* \372\300 */ "points-123568", /* \372\301 */ "points-12357", /* \372\302 */ "points-123578", /* \372\303 */ "points-12358", /* \372\304 */ "points-1236", /* \372\305 */ "points-12367", /* \372\306 */ "points-123678", /* \372\307 */ "points-12368", /* \372\310 */ "points-1237", /* \372\311 */ "points-12378", /* \372\312 */ "points-1238", /* \372\313 */ "points-124", /* \372\314 */ "points-1245", /* \372\315 */ "points-12456", /* \372\316 */ "points-124567", /* \372\317 */ "points-1245678", /* \372\320 */ "points-124568", /* \372\321 */ "points-12457", /* \372\322 */ "points-124578", /* \372\323 */ "points-12458", /* \372\324 */ "points-1246", /* \372\325 */ "points-12467", /* \372\326 */ "points-124678", /* \372\327 */ "points-12468", /* \372\330 */ "points-1247", /* \372\331 */ "points-12478", /* \372\332 */ "points-1248", /* \372\333 */ "points-125", /* \372\334 */ "points-1256", /* \372\335 */ "points-12567", /* \372\336 */ "points-125678", /* \372\337 */ "points-12568", /* \372\340 */ "points-1257", /* \372\341 */ "points-12578", /* \372\342 */ "points-1258", /* \372\343 */ "points-126", /* \372\344 */ "points-1267", /* \372\345 */ "points-12678", /* \372\346 */ "points-1268", /* \372\347 */ "points-127", /* \372\350 */ "points-1278", /* \372\351 */ "points-128", /* \372\352 */ "points-13", /* \372\353 */ "points-134", /* \372\354 */ "points-1345", /* \372\355 */ "points-13456", /* \372\356 */ "points-134567", /* \372\357 */ "points-1345678", /* \372\360 */ "points-134568", /* \372\361 */ "points-13457", /* \372\362 */ "points-134578", /* \372\363 */ "points-13458", /* \372\364 */ "points-1346", /* \372\365 */ "points-13467", /* \372\366 */ "points-134678", /* \372\367 */ "points-13468", /* \372\370 */ "points-1347", /* \372\371 */ "points-13478", /* \372\372 */ "points-1348", /* \372\373 */ "points-135", /* \372\374 */ "points-1356", /* \372\375 */ "points-13567", /* \372\376 */ "points-135678", /* \372\377 */ "points-13568", /* \373\001 */ "points-1357", /* \373\002 */ "points-13578", /* \373\003 */ "points-1358", /* \373\004 */ "points-136", /* \373\005 */ "points-1367", /* \373\006 */ "points-13678", /* \373\007 */ "points-1368", /* \373\010 */ "points-137", /* \373\011 */ "points-1378", /* \373\012 */ "points-138", /* \373\013 */ "points-14", /* \373\014 */ "points-145", /* \373\015 */ "points-1456", /* \373\016 */ "points-14567", /* \373\017 */ "points-145678", /* \373\020 */ "points-14568", /* \373\021 */ "points-1457", /* \373\022 */ "points-14578", /* \373\023 */ "points-1458", /* \373\024 */ "points-146", /* \373\025 */ "points-1467", /* \373\026 */ "points-14678", /* \373\027 */ "points-1468", /* \373\030 */ "points-147", /* \373\031 */ "points-1478", /* \373\032 */ "points-148", /* \373\033 */ "points-15", /* \373\034 */ "points-156", /* \373\035 */ "points-1567", /* \373\036 */ "points-15678", /* \373\037 */ "points-1568", /* \373\040 */ "points-157", /* \373\041 */ "points-1578", /* \373\042 */ "points-158", /* \373\043 */ "points-16", /* \373\044 */ "points-167", /* \373\045 */ "points-1678", /* \373\046 */ "points-168", /* \373\047 */ "points-17", /* \373\050 */ "points-178", /* \373\051 */ "points-18", /* \373\052 */ "points-2", /* \373\053 */ "points-23", /* \373\054 */ "points-234", /* \373\055 */ "points-2345", /* \373\056 */ "points-23456", /* \373\057 */ "points-234567", /* \373\060 */ "points-2345678", /* \373\061 */ "points-234568", /* \373\062 */ "points-23457", /* \373\063 */ "points-234578", /* \373\064 */ "points-23458", /* \373\065 */ "points-2346", /* \373\066 */ "points-23467", /* \373\067 */ "points-234678", /* \373\070 */ "points-23468", /* \373\071 */ "points-2347", /* \373\072 */ "points-23478", /* \373\073 */ "points-2348", /* \373\074 */ "points-235", /* \373\075 */ "points-2356", /* \373\076 */ "points-23567", /* \373\077 */ "points-235678", /* \373\100 */ "points-23568", /* \373\101 */ "points-2357", /* \373\102 */ "points-23578", /* \373\103 */ "points-2358", /* \373\104 */ "points-236", /* \373\105 */ "points-2367", /* \373\106 */ "points-23678", /* \373\107 */ "points-2368", /* \373\110 */ "points-237", /* \373\111 */ "points-2378", /* \373\112 */ "points-238", /* \373\113 */ "points-24", /* \373\114 */ "points-245", /* \373\115 */ "points-2456", /* \373\116 */ "points-24567", /* \373\117 */ "points-245678", /* \373\120 */ "points-24568", /* \373\121 */ "points-2457", /* \373\122 */ "points-24578", /* \373\123 */ "points-2458", /* \373\124 */ "points-246", /* \373\125 */ "points-2467", /* \373\126 */ "points-24678", /* \373\127 */ "points-2468", /* \373\130 */ "points-247", /* \373\131 */ "points-2478", /* \373\132 */ "points-248", /* \373\133 */ "points-25", /* \373\134 */ "points-256", /* \373\135 */ "points-2567", /* \373\136 */ "points-25678", /* \373\137 */ "points-2568", /* \373\140 */ "points-257", /* \373\141 */ "points-2578", /* \373\142 */ "points-258", /* \373\143 */ "points-26", /* \373\144 */ "points-267", /* \373\145 */ "points-2678", /* \373\146 */ "points-268", /* \373\147 */ "points-27", /* \373\150 */ "points-278", /* \373\151 */ "points-28", /* \373\152 */ "points-3", /* \373\153 */ "points-34", /* \373\154 */ "points-345", /* \373\155 */ "points-3456", /* \373\156 */ "points-34567", /* \373\157 */ "points-345678", /* \373\160 */ "points-34568", /* \373\161 */ "points-3457", /* \373\162 */ "points-34578", /* \373\163 */ "points-3458", /* \373\164 */ "points-346", /* \373\165 */ "points-3467", /* \373\166 */ "points-34678", /* \373\167 */ "points-3468", /* \373\170 */ "points-347", /* \373\171 */ "points-3478", /* \373\172 */ "points-348", /* \373\173 */ "points-35", /* \373\174 */ "points-356", /* \373\175 */ "points-3567", /* \373\176 */ "points-35678", /* \373\177 */ "points-3568", /* \373\200 */ "points-357", /* \373\201 */ "points-3578", /* \373\202 */ "points-358", /* \373\203 */ "points-36", /* \373\204 */ "points-367", /* \373\205 */ "points-3678", /* \373\206 */ "points-368", /* \373\207 */ "points-37", /* \373\210 */ "points-378", /* \373\211 */ "points-38", /* \373\212 */ "points-4", /* \373\213 */ "points-45", /* \373\214 */ "points-456", /* \373\215 */ "points-4567", /* \373\216 */ "points-45678", /* \373\217 */ "points-4568", /* \373\220 */ "points-457", /* \373\221 */ "points-4578", /* \373\222 */ "points-458", /* \373\223 */ "points-46", /* \373\224 */ "points-467", /* \373\225 */ "points-4678", /* \373\226 */ "points-468", /* \373\227 */ "points-47", /* \373\230 */ "points-478", /* \373\231 */ "points-48", /* \373\232 */ "points-5", /* \373\233 */ "points-56", /* \373\234 */ "points-567", /* \373\235 */ "points-5678", /* \373\236 */ "points-568", /* \373\237 */ "points-57", /* \373\240 */ "points-578", /* \373\241 */ "points-58", /* \373\242 */ "points-6", /* \373\243 */ "points-67", /* \373\244 */ "points-678", /* \373\245 */ "points-68", /* \373\246 */ "points-7", /* \373\247 */ "points-78", /* \373\250 */ "points-8", /* \373\251 */ "poissons", /* \373\252 */ "pommeté", /* \373\253 */ "pondo", /* \373\254 */ "pop", /* \373\255 */ "postposition", /* \373\256 */ "pot", /* \373\257 */ "poterie", /* \373\260 */ "pouce", /* \373\261 */ "pox", /* \373\262 */ "ppm", /* \373\263 */ "pr", /* \373\264 */ "precède", /* \373\265 */ "profil", /* \373\266 */ "progiciel", /* \373\267 */ "projective", /* \373\270 */ "proportionnel", /* \373\271 */ "prosternation", /* \373\272 */ "prouve", /* \373\273 */ "précédent", /* \373\274 */ "précédente", /* \373\275 */ "précédée", /* \373\276 */ "prédéfini", /* \373\277 */ "préface", /* \373\300 */ "ps", /* \373\301 */ "psili", /* \373\302 */ "puo", /* \373\303 */ "puop", /* \373\304 */ "puox", /* \373\305 */ "pup", /* \373\306 */ "pur", /* \373\307 */ "purx", /* \373\310 */ "pux", /* \373\311 */ "pv", /* \373\312 */ "pw", /* \373\313 */ "pwa", /* \373\314 */ "py", /* \373\315 */ "pyp", /* \373\316 */ "pyr", /* \373\317 */ "pyrx", /* \373\320 */ "pyx", /* \373\321 */ "pÄ", /* \373\322 */ "pâ", /* \373\323 */ "pâsento", /* \373\324 */ "pâtu", /* \373\325 */ "pâï", /* \373\326 */ "père", /* \373\327 */ "pêzi", /* \373\330 */ "qala", /* \373\331 */ "qaton", /* \373\332 */ "qaï", /* \373\333 */ "qe", /* \373\334 */ "qha", /* \373\335 */ "qhe", /* \373\336 */ "qhi", /* \373\337 */ "qho", /* \373\340 */ "qhou", /* \373\341 */ "qhwa", /* \373\342 */ "qhwe", /* \373\343 */ "qhwi", /* \373\344 */ "qhwÄ", /* \373\345 */ "qhwé", /* \373\346 */ "qhÄ", /* \373\347 */ "qhé", /* \373\350 */ "qie", /* \373\351 */ "qiep", /* \373\352 */ "qiet", /* \373\353 */ "qiex", /* \373\354 */ "qip", /* \373\355 */ "qit", /* \373\356 */ "qix", /* \373\357 */ "qof", /* \373\360 */ "qop", /* \373\361 */ "qou", /* \373\362 */ "qouchchâi", /* \373\363 */ "qouf", /* \373\364 */ "qox", /* \373\365 */ "qoûph", /* \373\366 */ "qu", /* \373\367 */ "qu'il", /* \373\370 */ "quarante", /* \373\371 */ "quartefeuille", /* \373\372 */ "quatre-points", /* \373\373 */ "quatre-vingt-dix", /* \373\374 */ "quatre-vingts", /* \373\375 */ "quo", /* \373\376 */ "quop", /* \373\377 */ "quot", /* \374\001 */ "quox", /* \374\002 */ "qup", /* \374\003 */ "qur", /* \374\004 */ "qurx", /* \374\005 */ "qut", /* \374\006 */ "qux", /* \374\007 */ "qwa", /* \374\010 */ "qwe", /* \374\011 */ "qwi", /* \374\012 */ "qwÄ", /* \374\013 */ "qwé", /* \374\014 */ "qy", /* \374\015 */ "qyp", /* \374\016 */ "qyr", /* \374\017 */ "qyrx", /* \374\020 */ "qyt", /* \374\021 */ "qyx", /* \374\022 */ "qÄ", /* \374\023 */ "qâ", /* \374\024 */ "qâfou", /* \374\025 */ "qâï", /* \374\026 */ "qé", /* \374\027 */ "qî", /* \374\030 */ "qô", /* \374\031 */ "radioactivivité", /* \374\032 */ "rae", /* \374\033 */ "raido", /* \374\034 */ "rail", /* \374\035 */ "rakhang", /* \374\036 */ "rap", /* \374\037 */ "rapport", /* \374\040 */ "rasoul", /* \374\041 */ "ravia", /* \374\042 */ "rax", /* \374\043 */ "rayanna", /* \374\044 */ "rayonnant", /* \374\045 */ "rayé", /* \374\046 */ "raé", /* \374\047 */ "rectangulaire", /* \374\050 */ "reid", /* \374\051 */ "religion", /* \374\052 */ "remu", /* \374\053 */ "rentogen", /* \374\054 */ "rep", /* \374\055 */ "représente", /* \374\056 */ "rewâhhâ", /* \374\057 */ "rex", /* \374\060 */ "rhotacisme", /* \374\061 */ "rhéostat", /* \374\062 */ "rideaux", /* \374\063 */ "riel", /* \374\064 */ "rin", /* \374\065 */ "rira", /* \374\066 */ "rittoru", /* \374\067 */ "rivière", /* \374\070 */ "rixe", /* \374\071 */ "riz", /* \374\072 */ "riûl-k'iûk'", /* \374\073 */ "riûl-kapyo-ounpiûp", /* \374\074 */ "riûl-miûm-kiyok", /* \374\075 */ "riûl-miûm-siôs", /* \374\076 */ "riûl-piûp-hiûh", /* \374\077 */ "riûl-ssangsiôs", /* \374\100 */ "riûl-tikût-hiûh", /* \374\101 */ "rjes", /* \374\102 */ "robat", /* \374\103 */ "rop", /* \374\104 */ "rot", /* \374\105 */ "roua", /* \374\106 */ "roub", /* \374\107 */ "rouge", /* \374\110 */ "roukkâkh", /* \374\111 */ "rousi", /* \374\112 */ "rox", /* \374\113 */ "rrax", /* \374\114 */ "rre", /* \374\115 */ "rrep", /* \374\116 */ "rret", /* \374\117 */ "rrex", /* \374\120 */ "rro", /* \374\121 */ "rrop", /* \374\122 */ "rrot", /* \374\123 */ "rrox", /* \374\124 */ "rru", /* \374\125 */ "rruo", /* \374\126 */ "rruox", /* \374\127 */ "rrup", /* \374\130 */ "rrur", /* \374\131 */ "rrurx", /* \374\132 */ "rrut", /* \374\133 */ "rrux", /* \374\134 */ "rry", /* \374\135 */ "rryp", /* \374\136 */ "rryr", /* \374\137 */ "rryrx", /* \374\140 */ "rryt", /* \374\141 */ "rryx", /* \374\142 */ "ruban", /* \374\143 */ "ruis", /* \374\144 */ "ruo", /* \374\145 */ "ruop", /* \374\146 */ "ruox", /* \374\147 */ "rup", /* \374\150 */ "rupî", /* \374\151 */ "rur", /* \374\152 */ "rurx", /* \374\153 */ "rut", /* \374\154 */ "rux", /* \374\155 */ "rwa", /* \374\156 */ "ry", /* \374\157 */ "ryp", /* \374\160 */ "ryr", /* \374\161 */ "ryrx", /* \374\162 */ "ryt", /* \374\163 */ "ryx", /* \374\164 */ "ryÄ", /* \374\165 */ "rÄ", /* \374\166 */ "rÜ", /* \374\167 */ "rÜÜ", /* \374\170 */ "râï", /* \374\171 */ "réahmouk", /* \374\172 */ "référence", /* \374\173 */ "région", /* \374\174 */ "réponse", /* \374\175 */ "résister", /* \374\176 */ "rétrécissement", /* \374\177 */ "réunion", /* \374\200 */ "rî", /* \374\201 */ "rô", /* \374\202 */ "rûburu", /* \374\203 */ "s'opposer", /* \374\204 */ "s-ou", /* \374\205 */ "sablier", /* \374\206 */ "sacrificiel", /* \374\207 */ "sagittaire", /* \374\210 */ "saikuru", /* \374\211 */ "sail", /* \374\212 */ "sala", /* \374\213 */ "salam", /* \374\214 */ "sallallahou", /* \374\215 */ "samphao", /* \374\216 */ "sang", /* \374\217 */ "sanglé", /* \374\220 */ "santîmu", /* \374\221 */ "sanyôga", /* \374\222 */ "sap", /* \374\223 */ "sapin", /* \374\224 */ "sat", /* \374\225 */ "saut", /* \374\226 */ "sax", /* \374\227 */ "sayanna", /* \374\230 */ "sañña", /* \374\231 */ "saññok", /* \374\232 */ "sbroul", /* \374\233 */ "sbub", /* \374\234 */ "scorpion", /* \374\235 */ "scrupule", /* \374\236 */ "sdong", /* \374\237 */ "sec", /* \374\240 */ "seconde", /* \374\241 */ "secret", /* \374\242 */ "secteur", /* \374\243 */ "segment", /* \374\244 */ "segol", /* \374\245 */ "segolta", /* \374\246 */ "senti", /* \374\247 */ "sento", /* \374\250 */ "sep", /* \374\251 */ "septembre", /* \374\252 */ "serpent", /* \374\253 */ "service", /* \374\254 */ "serviette", /* \374\255 */ "sex", /* \374\256 */ "sgab", /* \374\257 */ "sgor", /* \374\260 */ "sgra", /* \374\261 */ "shap", /* \374\262 */ "shax", /* \374\263 */ "she", /* \374\264 */ "shep", /* \374\265 */ "shet", /* \374\266 */ "shex", /* \374\267 */ "sho", /* \374\270 */ "shog", /* \374\271 */ "shot", /* \374\272 */ "shox", /* \374\273 */ "shu", /* \374\274 */ "shuo", /* \374\275 */ "shuop", /* \374\276 */ "shuox", /* \374\277 */ "shup", /* \374\300 */ "shurx", /* \374\301 */ "shut", /* \374\302 */ "shux", /* \374\303 */ "shyp", /* \374\304 */ "shyr", /* \374\305 */ "shyrx", /* \374\306 */ "shyt", /* \374\307 */ "shyx", /* \374\310 */ "sie", /* \374\311 */ "siep", /* \374\312 */ "siex", /* \374\313 */ "sigel", /* \374\314 */ "sign", /* \374\315 */ "sin", /* \374\316 */ "sinusoïde", /* \374\317 */ "sip", /* \374\320 */ "siringu", /* \374\321 */ "sit", /* \374\322 */ "sixièmes", /* \374\323 */ "sixtefeuille", /* \374\324 */ "siôs-hiûh", /* \374\325 */ "siôs-iûng", /* \374\326 */ "siôs-k'iûk'", /* \374\327 */ "siôs-miûm", /* \374\330 */ "siôs-p'iûp'", /* \374\331 */ "siôs-piûp-kiyok", /* \374\332 */ "siôs-ssangsiôs", /* \374\333 */ "siôs-t'iût'", /* \374\334 */ "siôs-tch'iûtch'", /* \374\335 */ "sk", /* \374\336 */ "skou", /* \374\337 */ "skoua", /* \374\340 */ "sna", /* \374\341 */ "sof", /* \374\342 */ "soi", /* \374\343 */ "soi-même", /* \374\344 */ "soins", /* \374\345 */ "soir", /* \374\346 */ "soixante", /* \374\347 */ "soixante-dix", /* \374\350 */ "sol-à-longue-branche", /* \374\351 */ "sol-à-ramille", /* \374\352 */ "sommation", /* \374\353 */ "sonnette", /* \374\354 */ "sop", /* \374\355 */ "sortant", /* \374\356 */ "sot", /* \374\357 */ "sources", /* \374\360 */ "sourire", /* \374\361 */ "sous-article", /* \374\362 */ "sowilo", /* \374\363 */ "sox", /* \374\364 */ "sphérique", /* \374\365 */ "spoua", /* \374\366 */ "spungs", /* \374\367 */ "sr", /* \374\370 */ "ssangarèa", /* \374\371 */ "ssap", /* \374\372 */ "ssat", /* \374\373 */ "ssax", /* \374\374 */ "sse", /* \374\375 */ "ssep", /* \374\376 */ "ssex", /* \374\377 */ "ssie", /* \375\001 */ "ssiep", /* \375\002 */ "ssiex", /* \375\003 */ "ssip", /* \375\004 */ "ssit", /* \375\005 */ "ssix", /* \375\006 */ "sso", /* \375\007 */ "ssop", /* \375\010 */ "ssot", /* \375\011 */ "ssox", /* \375\012 */ "ssu", /* \375\013 */ "ssup", /* \375\014 */ "ssut", /* \375\015 */ "ssux", /* \375\016 */ "ssy", /* \375\017 */ "ssyp", /* \375\020 */ "ssyr", /* \375\021 */ "ssyrx", /* \375\022 */ "ssyt", /* \375\023 */ "ssyx", /* \375\024 */ "ssâdhê", /* \375\025 */ "st", /* \375\026 */ "stan", /* \375\027 */ "stchoua", /* \375\030 */ "stoua", /* \375\031 */ "straif", /* \375\032 */ "succursale", /* \375\033 */ "suo", /* \375\034 */ "suop", /* \375\035 */ "suox", /* \375\036 */ "sup", /* \375\037 */ "supervise", /* \375\040 */ "superviser", /* \375\041 */ "supression", /* \375\042 */ "surface", /* \375\043 */ "surx", /* \375\044 */ "suspendus", /* \375\045 */ "sut", /* \375\046 */ "sux", /* \375\047 */ "sv", /* \375\050 */ "swa", /* \375\051 */ "sy", /* \375\052 */ "syllabes", /* \375\053 */ "symétrie", /* \375\054 */ "syp", /* \375\055 */ "syr", /* \375\056 */ "syrx", /* \375\057 */ "système", /* \375\060 */ "syt", /* \375\061 */ "syx", /* \375\062 */ "sÄ", /* \375\063 */ "sËn", /* \375\064 */ "sâ", /* \375\065 */ "sâdhou", /* \375\066 */ "sâï", /* \375\067 */ "sègol", /* \375\070 */ "séquence", /* \375\071 */ "sérieux", /* \375\072 */ "sî", /* \375\073 */ "sînou", /* \375\074 */ "sûr", /* \375\075 */ "t'", /* \375\076 */ "tah", /* \375\077 */ "talchah", /* \375\100 */ "tambour", /* \375\101 */ "tao", /* \375\102 */ "tap", /* \375\103 */ "tarha", /* \375\104 */ "tarsa", /* \375\105 */ "tat", /* \375\106 */ "taureau", /* \375\107 */ "taviyani", /* \375\110 */ "taw", /* \375\111 */ "tax", /* \375\112 */ "taïchô", /* \375\113 */ "tc", /* \375\114 */ "tch'", /* \375\115 */ "tch'e", /* \375\116 */ "tch'itouûmsiôs", /* \375\117 */ "tch'itouûmssangsiôs", /* \375\120 */ "tch'itouûmssangtchiûtch", /* \375\121 */ "tch'itouûmtch'iûtch'", /* \375\122 */ "tch'itouûmtchiûtch", /* \375\123 */ "tch'iûtch'-hiûh", /* \375\124 */ "tch'iûtch'-k'iûk'", /* \375\125 */ "tchada", /* \375\126 */ "tchamnotch", /* \375\127 */ "tchang", /* \375\130 */ "tchatawa", /* \375\131 */ "tchattawa", /* \375\132 */ "tchaviyani", /* \375\133 */ "tchho", /* \375\134 */ "tching", /* \375\135 */ "tchiûtch-iûng", /* \375\136 */ "tchoeng", /* \375\137 */ "tchongtch'iûmsiôs", /* \375\140 */ "tchongtch'iûmssangsiôs", /* \375\141 */ "tchongtch'iûmssangtchiûtch",/* \375\142 */ "tchongtch'iûmtch'iûtch'", /* \375\143 */ "tchongtch'iûmtchiûtch", /* \375\144 */ "tchoula", /* \375\145 */ "tchoé", /* \375\146 */ "tchwa", /* \375\147 */ "tchya", /* \375\150 */ "tchÄ", /* \375\151 */ "tchâ", /* \375\152 */ "tchâï", /* \375\153 */ "tchî", /* \375\154 */ "te'u", /* \375\155 */ "tech", /* \375\156 */ "teleia", /* \375\157 */ "tend", /* \375\160 */ "tep", /* \375\161 */ "terminateur", /* \375\162 */ "teré", /* \375\163 */ "tevir", /* \375\164 */ "tex", /* \375\165 */ "thahan", /* \375\166 */ "thanthakhat", /* \375\167 */ "thong", /* \375\170 */ "thorn,", /* \375\171 */ "thoung", /* \375\172 */ "thurisaz,", /* \375\173 */ "thurs,", /* \375\174 */ "thwa", /* \375\175 */ "thz", /* \375\176 */ "thÄ", /* \375\177 */ "thâlu", /* \375\200 */ "tibetain", /* \375\201 */ "tie", /* \375\202 */ "tiep", /* \375\203 */ "tiex", /* \375\204 */ "tikût-riûl", /* \375\205 */ "tinne", /* \375\206 */ "tip", /* \375\207 */ "tippi", /* \375\210 */ "tir", /* \375\211 */ "tirer", /* \375\212 */ "tironnienne", /* \375\213 */ "tit", /* \375\214 */ "tiwaz", /* \375\215 */ "tix", /* \375\216 */ "tja", /* \375\217 */ "tle", /* \375\220 */ "tlhe", /* \375\221 */ "tlhou", /* \375\222 */ "tlËn", /* \375\223 */ "toandakhiat", /* \375\224 */ "toit", /* \375\225 */ "tonne", /* \375\226 */ "tonnerre", /* \375\227 */ "top", /* \375\230 */ "tort", /* \375\231 */ "tot", /* \375\232 */ "totale", /* \375\233 */ "tou", /* \375\234 */ "touffe", /* \375\235 */ "tougrik", /* \375\236 */ "tous", /* \375\237 */ "tout", /* \375\240 */ "tox", /* \375\241 */ "traces", /* \375\242 */ "train", /* \375\243 */ "trait-d'union", /* \375\244 */ "tranche", /* \375\245 */ "transpercés", /* \375\246 */ "trappu", /* \375\247 */ "trappue", /* \375\250 */ "traversé", /* \375\251 */ "traçage", /* \375\252 */ "trente-et-un", /* \375\253 */ "tri", /* \375\254 */ "triangulaires", /* \375\255 */ "tripode", /* \375\256 */ "troisième", /* \375\257 */ "tronqué", /* \375\260 */ "tréflée", /* \375\261 */ "trîsap", /* \375\262 */ "ts'", /* \375\263 */ "tshugs", /* \375\264 */ "tsinor", /* \375\265 */ "tswa", /* \375\266 */ "tsÄ", /* \375\267 */ "tsËn", /* \375\270 */ "tsérè", /* \375\271 */ "ttcha", /* \375\272 */ "ttche", /* \375\273 */ "ttchi", /* \375\274 */ "ttcho", /* \375\275 */ "ttchou", /* \375\276 */ "ttchwa", /* \375\277 */ "ttchÄ", /* \375\300 */ "ttché", /* \375\301 */ "tte", /* \375\302 */ "tth", /* \375\303 */ "tthi", /* \375\304 */ "tthé", /* \375\305 */ "ttou", /* \375\306 */ "ttsa", /* \375\307 */ "ttse", /* \375\310 */ "ttsi", /* \375\311 */ "ttso", /* \375\312 */ "ttsou", /* \375\313 */ "ttsé", /* \375\314 */ "ttâ", /* \375\315 */ "tuile", /* \375\316 */ "tuo", /* \375\317 */ "tuop", /* \375\320 */ "tuot", /* \375\321 */ "tuox", /* \375\322 */ "tup", /* \375\323 */ "tur", /* \375\324 */ "turx", /* \375\325 */ "tut", /* \375\326 */ "tux", /* \375\327 */ "tvimadur", /* \375\330 */ "twa", /* \375\331 */ "tya", /* \375\332 */ "tyi", /* \375\333 */ "tyo", /* \375\334 */ "type-h", /* \375\335 */ "type-l", /* \375\336 */ "tyr", /* \375\337 */ "tyr-à-ramille", /* \375\340 */ "tyé", /* \375\341 */ "tz", /* \375\342 */ "tz'", /* \375\343 */ "tza", /* \375\344 */ "tze", /* \375\345 */ "tzi", /* \375\346 */ "tzo", /* \375\347 */ "tzou", /* \375\350 */ "tzÄ", /* \375\351 */ "tzé", /* \375\352 */ "tÄ", /* \375\353 */ "tâ", /* \375\354 */ "tâmé", /* \375\355 */ "tâï", /* \375\356 */ "téléphonique", /* \375\357 */ "têtard", /* \375\360 */ "tî", /* \375\361 */ "uath", /* \375\362 */ "ubjointe", /* \375\363 */ "uilleann", /* \375\364 */ "ukrainien", /* \375\365 */ "ukrainienne", /* \375\366 */ "ultra-fine", /* \375\367 */ "una", /* \375\370 */ "une", /* \375\371 */ "uo", /* \375\372 */ "uon", /* \375\373 */ "uop", /* \375\374 */ "uox", /* \375\375 */ "ur", /* \375\376 */ "uranus", /* \375\377 */ "uruz", /* \376\001 */ "utiliser", /* \376\002 */ "uu", /* \376\003 */ "vaisselle", /* \376\004 */ "vallée", /* \376\005 */ "vap", /* \376\006 */ "vapeur", /* \376\007 */ "variant", /* \376\010 */ "varika", /* \376\011 */ "vat", /* \376\012 */ "vax", /* \376\013 */ "vayanna", /* \376\014 */ "verrou", /* \376\015 */ "verseau", /* \376\016 */ "versicule", /* \376\017 */ "vex", /* \376\020 */ "victoire", /* \376\021 */ "vide", /* \376\022 */ "vidée", /* \376\023 */ "vie", /* \376\024 */ "viep", /* \376\025 */ "vierge", /* \376\026 */ "viet", /* \376\027 */ "viex", /* \376\030 */ "ville", /* \376\031 */ "vingt-cinq", /* \376\032 */ "vingt-huit", /* \376\033 */ "vingt-neuf", /* \376\034 */ "vingt-sept", /* \376\035 */ "vingt-six", /* \376\036 */ "vip", /* \376\037 */ "virages", /* \376\040 */ "viriam", /* \376\041 */ "virtuelle", /* \376\042 */ "visargaya", /* \376\043 */ "visualisation", /* \376\044 */ "visuel", /* \376\045 */ "vit", /* \376\046 */ "vix", /* \376\047 */ "volume", /* \376\050 */ "vop", /* \376\051 */ "vot", /* \376\052 */ "vou", /* \376\053 */ "vox", /* \376\054 */ "voyelles", /* \376\055 */ "vup", /* \376\056 */ "vurx", /* \376\057 */ "vut", /* \376\060 */ "vux", /* \376\061 */ "vwa", /* \376\062 */ "vy", /* \376\063 */ "vyp", /* \376\064 */ "vyr", /* \376\065 */ "vyrx", /* \376\066 */ "vyt", /* \376\067 */ "vyx", /* \376\070 */ "vÄ", /* \376\071 */ "vâvou", /* \376\072 */ "wap", /* \376\073 */ "wat", /* \376\074 */ "watto", /* \376\075 */ "wax", /* \376\076 */ "wb", /* \376\077 */ "weierstrass", /* \376\100 */ "wep", /* \376\101 */ "wex", /* \376\102 */ "wop", /* \376\103 */ "wox", /* \376\104 */ "wu", /* \376\105 */ "wunjo", /* \376\106 */ "wuo", /* \376\107 */ "wuop", /* \376\110 */ "wuox", /* \376\111 */ "wÄ", /* \376\112 */ "wâvou", /* \376\113 */ "xa", /* \376\114 */ "xe", /* \376\115 */ "xie", /* \376\116 */ "xiep", /* \376\117 */ "xiet", /* \376\120 */ "xiex", /* \376\121 */ "xip", /* \376\122 */ "xit", /* \376\123 */ "xix", /* \376\124 */ "xop", /* \376\125 */ "xot", /* \376\126 */ "xou", /* \376\127 */ "xox", /* \376\130 */ "xuo", /* \376\131 */ "xuox", /* \376\132 */ "xwa", /* \376\133 */ "xwe", /* \376\134 */ "xwi", /* \376\135 */ "xwÄ", /* \376\136 */ "xwé", /* \376\137 */ "xy", /* \376\140 */ "xyp", /* \376\141 */ "xyr", /* \376\142 */ "xyrx", /* \376\143 */ "xyt", /* \376\144 */ "xyx", /* \376\145 */ "xÄ", /* \376\146 */ "xé", /* \376\147 */ "ya-yô", /* \376\150 */ "ya-ô", /* \376\151 */ "yak", /* \376\152 */ "yamakkan", /* \376\153 */ "yar", /* \376\154 */ "yaréah", /* \376\155 */ "yayanna", /* \376\156 */ "yetiv", /* \376\157 */ "yie", /* \376\160 */ "yiep", /* \376\161 */ "yiet", /* \376\162 */ "yiex", /* \376\163 */ "ying", /* \376\164 */ "yip", /* \376\165 */ "yix", /* \376\166 */ "yo-ou", /* \376\167 */ "yo-ô", /* \376\170 */ "yomo", /* \376\171 */ "yop", /* \376\172 */ "you-a", /* \376\173 */ "you-o", /* \376\174 */ "you-ou", /* \376\175 */ "you-é", /* \376\176 */ "yox", /* \376\177 */ "yoûkaléapintou", /* \376\200 */ "yr-islandais", /* \376\201 */ "yr-à-longue-branche", /* \376\202 */ "yr-à-ramille", /* \376\203 */ "yuan", /* \376\204 */ "yuo", /* \376\205 */ "yuop", /* \376\206 */ "yuot", /* \376\207 */ "yuox", /* \376\210 */ "yup", /* \376\211 */ "yur", /* \376\212 */ "yurx", /* \376\213 */ "yut", /* \376\214 */ "yux", /* \376\215 */ "yy", /* \376\216 */ "yyp", /* \376\217 */ "yyr", /* \376\220 */ "yyrx", /* \376\221 */ "yyt", /* \376\222 */ "yyx", /* \376\223 */ "yÄ", /* \376\224 */ "yËn", /* \376\225 */ "yâdo", /* \376\226 */ "yâru", /* \376\227 */ "yâï", /* \376\230 */ "yî", /* \376\231 */ "yô-yo", /* \376\232 */ "yô-ô", /* \376\233 */ "zap", /* \376\234 */ "zarqa", /* \376\235 */ "zat", /* \376\236 */ "zaviyani", /* \376\237 */ "zax", /* \376\240 */ "zep", /* \376\241 */ "zex", /* \376\242 */ "zhap", /* \376\243 */ "zhat", /* \376\244 */ "zhax", /* \376\245 */ "zhe", /* \376\246 */ "zhep", /* \376\247 */ "zhet", /* \376\250 */ "zhex", /* \376\251 */ "zho", /* \376\252 */ "zhop", /* \376\253 */ "zhot", /* \376\254 */ "zhox", /* \376\255 */ "zhu", /* \376\256 */ "zhuo", /* \376\257 */ "zhuop", /* \376\260 */ "zhuox", /* \376\261 */ "zhup", /* \376\262 */ "zhur", /* \376\263 */ "zhurx", /* \376\264 */ "zhut", /* \376\265 */ "zhux", /* \376\266 */ "zhy", /* \376\267 */ "zhyp", /* \376\270 */ "zhyr", /* \376\271 */ "zhyrx", /* \376\272 */ "zhyt", /* \376\273 */ "zhyx", /* \376\274 */ "zie", /* \376\275 */ "ziep", /* \376\276 */ "ziex", /* \376\277 */ "zigzag", /* \376\300 */ "zilde", /* \376\301 */ "zip", /* \376\302 */ "zit", /* \376\303 */ "zix", /* \376\304 */ "zop", /* \376\305 */ "zox", /* \376\306 */ "zra", /* \376\307 */ "zuo", /* \376\310 */ "zuop", /* \376\311 */ "zuox", /* \376\312 */ "zup", /* \376\313 */ "zurx", /* \376\314 */ "zut", /* \376\315 */ "zux", /* \376\316 */ "zwa", /* \376\317 */ "zy", /* \376\320 */ "zyp", /* \376\321 */ "zyr", /* \376\322 */ "zyrx", /* \376\323 */ "zyt", /* \376\324 */ "zyx", /* \376\325 */ "zza", /* \376\326 */ "zzap", /* \376\327 */ "zzat", /* \376\330 */ "zzax", /* \376\331 */ "zze", /* \376\332 */ "zzep", /* \376\333 */ "zzex", /* \376\334 */ "zzi", /* \376\335 */ "zzie", /* \376\336 */ "zziep", /* \376\337 */ "zziex", /* \376\340 */ "zzit", /* \376\341 */ "zzix", /* \376\342 */ "zzo", /* \376\343 */ "zzop", /* \376\344 */ "zzox", /* \376\345 */ "zzu", /* \376\346 */ "zzup", /* \376\347 */ "zzur", /* \376\350 */ "zzurx", /* \376\351 */ "zzux", /* \376\352 */ "zzy", /* \376\353 */ "zzyp", /* \376\354 */ "zzyr", /* \376\355 */ "zzyrx", /* \376\356 */ "zzyt", /* \376\357 */ "zzyx", /* \376\360 */ "zÄ", /* \376\361 */ "zâ", /* \376\362 */ "Æsc", /* \376\363 */ "Æyanna", /* \376\364 */ "ÆÆyanna", /* \376\365 */ "Ë", /* \376\366 */ "Ën", /* \376\367 */ "Ór", /* \376\370 */ "Úr", /* \376\371 */ "Ü", /* \376\372 */ "ÜŒ", /* \376\373 */ "ÜÜ", /* \376\374 */ "âbâfili", /* \376\375 */ "âcre", /* \376\376 */ "âdi", /* \376\377 */ "âru", /* \377\001 */ "âyanna", /* \377\002 */ "âï", /* \377\003 */ "çad", /* \377\004 */ "çakti", /* \377\005 */ "çayanna", /* \377\006 */ "çe", /* \377\007 */ "çi", /* \377\010 */ "ço", /* \377\011 */ "çou", /* \377\012 */ "çwa", /* \377\013 */ "çÄ", /* \377\014 */ "çé", /* \377\015 */ "èn", /* \377\016 */ "èni", /* \377\017 */ "éabhadh", /* \377\020 */ "ébéfili", /* \377\021 */ "éclair", /* \377\022 */ "écrasé", /* \377\023 */ "écriture", /* \377\024 */ "écu", /* \377\025 */ "égalité", /* \377\026 */ "ék", /* \377\027 */ "électrique", /* \377\030 */ "éleveuse", /* \377\031 */ "épaisse", /* \377\032 */ "épaulement", /* \377\033 */ "équiangulaire", /* \377\034 */ "étagère", /* \377\035 */ "étiré", /* \377\036 */ "étrangler", /* \377\037 */ "étroite", /* \377\040 */ "éyanna", /* \377\041 */ "êbêfili", /* \377\042 */ "êkâ", /* \377\043 */ "êyanna", /* \377\044 */ "îbîfili", /* \377\045 */ "îl", /* \377\046 */ "îyanna", /* \377\047 */ "ñasubjointe", /* \377\050 */ "ñe", /* \377\051 */ "ñou", /* \377\052 */ "ñwa", /* \377\053 */ "ñÄ", /* \377\054 */ "ñña", /* \377\055 */ "ô-o", /* \377\056 */ "ô-ou", /* \377\057 */ "ô-yé", /* \377\060 */ "ô-é", /* \377\061 */ "ô-ô", /* \377\062 */ "ôbôfili", /* \377\063 */ "ômu", /* \377\064 */ "ôyanna", /* \377\065 */ "û-ou", /* \377\066 */ "û-û", /* \377\067 */ "ûi-ou", /* \377\070 */ }; struct charname { recode_ucs2 code; const char *crypted; }; static const struct charname charname[NUMBER_OF_CHARNAMES] = { {0x0000, "\361\122\362\233"}, {0x0001, "\355\320\360\155\362\252"}, {0x0002, "\355\320\007\357\046\362\261"}, {0x0003, "\116\007\357\046\362\215"}, {0x0004, "\116\007\356\045\362\211"}, {0x0005, "\360\167\362\210"}, {0x0006, "\360\042\007\357\025\356\105\362\166"}, {0x0007, "\361\323\362\170"}, {0x0008, "\355\073\360\052\362\172"}, {0x0009, "\357\045\356\335\362\222"}, {0x000A, "\357\202\362\226"}, {0x000B, "\357\045\256\362\265"}, {0x000C, "\356\372\361\342\362\216"}, {0x000D, "\361\257\007\360\114\362\175"}, {0x000E, "\360\331\356\313\362\251"}, {0x000F, "\013\356\313\362\250"}, {0x0010, "\360\025\356\045\362\205"}, {0x0011, "\355\155\356\155\110\362\177"}, {0x0012, "\355\155\356\155\127\362\200"}, {0x0013, "\355\155\356\155\136\362\201"}, {0x0014, "\355\155\356\155\220\362\202"}, {0x0015, "\360\042\007\357\025\300\362\230"}, {0x0016, "\361\346\362\263"}, {0x0017, "\116\007\356\045\007\355\016\362\214"}, {0x0018, "\360\050\362\173"}, {0x0019, "\116\007\361\343\362\207"}, {0x001A, "\335\007\357\343\362\262"}, {0x001B, "\360\025\362\213"}, {0x001C, "\355\045\007\366\064\362\217"}, {0x001D, "\355\045\007\366\247\362\220"}, {0x001E, "\355\045\365\145\362\244"}, {0x001F, "\355\045\007\374\362\362\264"}, {0x0020, "\355\073"}, {0x0021, "\037\355\312"}, {0x0022, "\355\135\356\300"}, {0x0023, "\357\112"}, {0x0024, "\022\357\141"}, {0x0025, "\022\355\057\355\245"}, {0x0026, "\356\377"}, {0x0027, "\355\306"}, {0x0028, "\355\123\052"}, {0x0029, "\355\123\053"}, {0x002A, "\355\115"}, {0x002B, "\057\214"}, {0x002C, "\330"}, {0x002D, "\355\007"}, {0x002E, "\037"}, {0x002F, "\246\355\044"}, {0x0030, "\024\331"}, {0x0031, "\024\110"}, {0x0032, "\024\127"}, {0x0033, "\024\136"}, {0x0034, "\024\220"}, {0x0035, "\024\230"}, {0x0036, "\024\255"}, {0x0037, "\024\252"}, {0x0038, "\024\226"}, {0x0039, "\024\257"}, {0x003A, "\355\103"}, {0x003B, "\356\104"}, {0x003C, "\057\320\044"}, {0x003D, "\057\173\044"}, {0x003E, "\057\344\044"}, {0x003F, "\037\355\313"}, {0x0040, "\357\065"}, {0x0041, "\001\010\006\063"}, {0x0042, "\001\010\006\334"}, {0x0043, "\001\010\006\313"}, {0x0044, "\001\010\006\275"}, {0x0045, "\001\010\006\130"}, {0x0046, "\001\010\006\355\062"}, {0x0047, "\001\010\006\266"}, {0x0048, "\001\010\006\237"}, {0x0049, "\001\010\006\103"}, {0x004A, "\001\010\006\355\053"}, {0x004B, "\001\010\006\352"}, {0x004C, "\001\010\006\211"}, {0x004D, "\001\010\006\276"}, {0x004E, "\001\010\006\241"}, {0x004F, "\001\010\006\064"}, {0x0050, "\001\010\006\355\021"}, {0x0051, "\001\010\006\355\173"}, {0x0052, "\001\010\006\167"}, {0x0053, "\001\010\006\223"}, {0x0054, "\001\010\006\261"}, {0x0055, "\001\010\006\132"}, {0x0056, "\001\010\006\355\025"}, {0x0057, "\001\010\006\347"}, {0x0058, "\001\010\006\355\026"}, {0x0059, "\001\010\006\265"}, {0x005A, "\001\010\006\271"}, {0x005B, "\122\052"}, {0x005C, "\246\355\044\356\073"}, {0x005D, "\122\221"}, {0x005E, "\021\072"}, {0x005F, "\355\007\101"}, {0x0060, "\021\067"}, {0x0061, "\001\005\006\063"}, {0x0062, "\001\005\006\334"}, {0x0063, "\001\005\006\313"}, {0x0064, "\001\005\006\275"}, {0x0065, "\001\005\006\130"}, {0x0066, "\001\005\006\355\062"}, {0x0067, "\001\005\006\266"}, {0x0068, "\001\005\006\237"}, {0x0069, "\001\005\006\103"}, {0x006A, "\001\005\006\355\053"}, {0x006B, "\001\005\006\352"}, {0x006C, "\001\005\006\211"}, {0x006D, "\001\005\006\276"}, {0x006E, "\001\005\006\241"}, {0x006F, "\001\005\006\064"}, {0x0070, "\001\005\006\355\021"}, {0x0071, "\001\005\006\355\173"}, {0x0072, "\001\005\006\167"}, {0x0073, "\001\005\006\223"}, {0x0074, "\001\005\006\261"}, {0x0075, "\001\005\006\132"}, {0x0076, "\001\005\006\355\025"}, {0x0077, "\001\005\006\347"}, {0x0078, "\001\005\006\355\026"}, {0x0079, "\001\005\006\265"}, {0x007A, "\001\005\006\271"}, {0x007B, "\356\051\052"}, {0x007C, "\246\256"}, {0x007D, "\356\051\053"}, {0x007E, "\172"}, {0x007F, "\361\344\362\204"}, {0x0080, "\335\007\356\145\362\235"}, {0x0081, "\372\072\344\373\277\362\221"}, {0x0082, "\356\141\372\201\360\342\362\171"}, {0x0083, "\360\060\356\141\360\342\362\231"}, {0x0084, "\355\326\362\225"}, {0x0085, "\044\033\243\362\232"}, {0x0086, "\355\320\007\357\061\361\347\362\256"}, {0x0087, "\116\007\357\061\361\347\362\212"}, {0x0088, "\356\141\007\357\346\242\362\224"}, {0x0089, "\357\346\242\164\367\340\362\223"}, {0x008A, "\356\141\007\357\346\202\362\266"}, {0x008B, "\357\202\361\156\015\360\041\101\362\236"}, {0x008C, "\357\202\361\156\015\360\041\102\362\237"}, {0x008D, "\355\326\367\223\362\243"}, {0x008E, "\357\022\357\051\127\362\254"}, {0x008F, "\357\022\357\051\136\362\255"}, {0x0090, "\357\076\007\355\155\356\155\362\203"}, {0x0091, "\362\057\357\012\110\362\241"}, {0x0092, "\362\057\357\012\127\362\242"}, {0x0093, "\370\372\013\371\005\356\045\362\260"}, {0x0094, "\360\050\212\335\373\274\362\174"}, {0x0095, "\361\052\013\363\003\362\227"}, {0x0096, "\355\320\007\357\061\361\225\362\246"}, {0x0097, "\116\007\357\061\361\225\362\206"}, {0x0098, "\355\320\007\357\076\362\253"}, {0x0099, "\357\205\007\335\366\242\357\051\362\247"}, {0x009A, "\357\205\007\335\357\051\362\245"}, {0x009B, "\357\205\007\375\071\007\355\155\362\176"}, {0x009C, "\116\007\357\076\362\257"}, {0x009D, "\355\155\007\375\060\365\154\362\234"}, {0x009E, "\361\052\357\012\362\240"}, {0x009F, "\355\155\007\373\267\362\167"}, {0x00A0, "\355\073\357\201"}, {0x00A1, "\037\355\312\355\143"}, {0x00A2, "\022\357\074"}, {0x00A3, "\022\361\032"}, {0x00A4, "\022\355\272"}, {0x00A5, "\022\362\111"}, {0x00A6, "\246\256\360\100"}, {0x00A7, "\361\153"}, {0x00A8, "\165"}, {0x00A9, "\022\360\137"}, {0x00AA, "\357\176\361\142\360\255"}, {0x00AB, "\355\135\052"}, {0x00AC, "\057\356\364"}, {0x00AD, "\355\126\355\315\362\071"}, {0x00AE, "\022\204\365\361"}, {0x00AF, "\174"}, {0x00B0, "\022\357\130"}, {0x00B1, "\057\372\246"}, {0x00B2, "\355\074\127"}, {0x00B3, "\355\074\136"}, {0x00B4, "\021\062"}, {0x00B5, "\022\370\354"}, {0x00B6, "\356\242\007\357\237"}, {0x00B7, "\037\355\137"}, {0x00B8, "\274"}, {0x00B9, "\355\074\110"}, {0x00BA, "\357\176\361\142\370\273"}, {0x00BB, "\355\135\221"}, {0x00BC, "\355\105\110\357\017"}, {0x00BD, "\355\105\110\355\133"}, {0x00BE, "\355\105\136\357\303"}, {0x00BF, "\037\355\313\355\143"}, {0x00C0, "\001\010\006\063\021\067"}, {0x00C1, "\001\010\006\063\021\062"}, {0x00C2, "\001\010\006\063\021\072"}, {0x00C3, "\001\010\006\063\172"}, {0x00C4, "\001\010\006\063\165"}, {0x00C5, "\001\010\006\063\302\013\040"}, {0x00C6, "\001\010\006\355\305"}, {0x00C7, "\001\010\006\313\274"}, {0x00C8, "\001\010\006\130\021\067"}, {0x00C9, "\001\010\006\130\021\062"}, {0x00CA, "\001\010\006\130\021\072"}, {0x00CB, "\001\010\006\130\165"}, {0x00CC, "\001\010\006\103\021\067"}, {0x00CD, "\001\010\006\103\021\062"}, {0x00CE, "\001\010\006\103\021\072"}, {0x00CF, "\001\010\006\103\165"}, {0x00D0, "\001\010\006\360\225"}, {0x00D1, "\001\010\006\241\172"}, {0x00D2, "\001\010\006\064\021\067"}, {0x00D3, "\001\010\006\064\021\062"}, {0x00D4, "\001\010\006\064\021\072"}, {0x00D5, "\001\010\006\064\172"}, {0x00D6, "\001\010\006\064\165"}, {0x00D7, "\057\356\355"}, {0x00D8, "\001\010\006\064\232\361\134"}, {0x00D9, "\001\010\006\132\021\067"}, {0x00DA, "\001\010\006\132\021\062"}, {0x00DB, "\001\010\006\132\021\072"}, {0x00DC, "\001\010\006\132\165"}, {0x00DD, "\001\010\006\265\021\062"}, {0x00DE, "\001\010\006\362\001"}, {0x00DF, "\001\005\006\223\356\324"}, {0x00E0, "\001\005\006\063\021\067"}, {0x00E1, "\001\005\006\063\021\062"}, {0x00E2, "\001\005\006\063\021\072"}, {0x00E3, "\001\005\006\063\172"}, {0x00E4, "\001\005\006\063\165"}, {0x00E5, "\001\005\006\063\302\013\040"}, {0x00E6, "\001\005\006\355\305"}, {0x00E7, "\001\005\006\313\274"}, {0x00E8, "\001\005\006\130\021\067"}, {0x00E9, "\001\005\006\130\021\062"}, {0x00EA, "\001\005\006\130\021\072"}, {0x00EB, "\001\005\006\130\165"}, {0x00EC, "\001\005\006\103\021\067"}, {0x00ED, "\001\005\006\103\021\062"}, {0x00EE, "\001\005\006\103\021\072"}, {0x00EF, "\001\005\006\103\165"}, {0x00F0, "\001\005\006\360\225"}, {0x00F1, "\001\005\006\241\172"}, {0x00F2, "\001\005\006\064\021\067"}, {0x00F3, "\001\005\006\064\021\062"}, {0x00F4, "\001\005\006\064\021\072"}, {0x00F5, "\001\005\006\064\172"}, {0x00F6, "\001\005\006\064\165"}, {0x00F7, "\057\357\135"}, {0x00F8, "\001\005\006\064\232\361\134"}, {0x00F9, "\001\005\006\132\021\067"}, {0x00FA, "\001\005\006\132\021\062"}, {0x00FB, "\001\005\006\132\021\072"}, {0x00FC, "\001\005\006\132\165"}, {0x00FD, "\001\005\006\265\021\062"}, {0x00FE, "\001\005\006\362\001"}, {0x00FF, "\001\005\006\265\165"}, {0x0100, "\001\010\006\063\174"}, {0x0101, "\001\005\006\063\174"}, {0x0102, "\001\010\006\063\213"}, {0x0103, "\001\005\006\063\213"}, {0x0104, "\001\010\006\063\355\055"}, {0x0105, "\001\005\006\063\355\055"}, {0x0106, "\001\010\006\313\021\062"}, {0x0107, "\001\005\006\313\021\062"}, {0x0108, "\001\010\006\313\021\072"}, {0x0109, "\001\005\006\313\021\072"}, {0x010A, "\001\010\006\313\037\013\040"}, {0x010B, "\001\005\006\313\037\013\040"}, {0x010C, "\001\010\006\313\225"}, {0x010D, "\001\005\006\313\225"}, {0x010E, "\001\010\006\275\225"}, {0x010F, "\001\005\006\275\225"}, {0x0110, "\001\010\006\275\232"}, {0x0111, "\001\005\006\275\232"}, {0x0112, "\001\010\006\130\174"}, {0x0113, "\001\005\006\130\174"}, {0x0114, "\001\010\006\130\213"}, {0x0115, "\001\005\006\130\213"}, {0x0116, "\001\010\006\130\037\013\040"}, {0x0117, "\001\005\006\130\037\013\040"}, {0x0118, "\001\010\006\130\355\055"}, {0x0119, "\001\005\006\130\355\055"}, {0x011A, "\001\010\006\130\225"}, {0x011B, "\001\005\006\130\225"}, {0x011C, "\001\010\006\266\021\072"}, {0x011D, "\001\005\006\266\021\072"}, {0x011E, "\001\010\006\266\213"}, {0x011F, "\001\005\006\266\213"}, {0x0120, "\001\010\006\266\037\013\040"}, {0x0121, "\001\005\006\266\037\013\040"}, {0x0122, "\001\010\006\266\274"}, {0x0123, "\001\005\006\266\274"}, {0x0124, "\001\010\006\237\021\072"}, {0x0125, "\001\005\006\237\021\072"}, {0x0126, "\001\010\006\237\232"}, {0x0127, "\001\005\006\237\232"}, {0x0128, "\001\010\006\103\172"}, {0x0129, "\001\005\006\103\172"}, {0x012A, "\001\010\006\103\174"}, {0x012B, "\001\005\006\103\174"}, {0x012C, "\001\010\006\103\213"}, {0x012D, "\001\005\006\103\213"}, {0x012E, "\001\010\006\103\355\055"}, {0x012F, "\001\005\006\103\355\055"}, {0x0130, "\001\010\006\103\037\013\040"}, {0x0131, "\001\005\006\103\270\037"}, {0x0132, "\355\134\357\035\010\356\351\360\344"}, {0x0133, "\355\134\357\035\005\356\351\360\344"}, {0x0134, "\001\010\006\355\053\021\072"}, {0x0135, "\001\005\006\355\053\021\072"}, {0x0136, "\001\010\006\352\274"}, {0x0137, "\001\005\006\352\274"}, {0x0138, "\001\005\006\370\050"}, {0x0139, "\001\010\006\211\021\062"}, {0x013A, "\001\005\006\211\021\062"}, {0x013B, "\001\010\006\211\274"}, {0x013C, "\001\005\006\211\274"}, {0x013D, "\001\010\006\211\225"}, {0x013E, "\001\005\006\211\225"}, {0x013F, "\001\010\006\211\037\355\137"}, {0x0140, "\001\005\006\211\037\355\137"}, {0x0141, "\001\010\006\211\232"}, {0x0142, "\001\005\006\211\232"}, {0x0143, "\001\010\006\241\021\062"}, {0x0144, "\001\005\006\241\021\062"}, {0x0145, "\001\010\006\241\274"}, {0x0146, "\001\005\006\241\274"}, {0x0147, "\001\010\006\241\225"}, {0x0148, "\001\005\006\241\225"}, {0x0149, "\001\005\006\241\373\276\357\120\355\306"}, {0x014A, "\001\010\006\356\007"}, {0x014B, "\001\005\006\356\007"}, {0x014C, "\001\010\006\064\174"}, {0x014D, "\001\005\006\064\174"}, {0x014E, "\001\010\006\064\213"}, {0x014F, "\001\005\006\064\213"}, {0x0150, "\001\010\006\064\070\021\062"}, {0x0151, "\001\005\006\064\070\021\062"}, {0x0152, "\355\134\357\035\010\356\351\355\210"}, {0x0153, "\355\134\357\035\005\356\351\355\210"}, {0x0154, "\001\010\006\167\021\062"}, {0x0155, "\001\005\006\167\021\062"}, {0x0156, "\001\010\006\167\274"}, {0x0157, "\001\005\006\167\274"}, {0x0158, "\001\010\006\167\225"}, {0x0159, "\001\005\006\167\225"}, {0x015A, "\001\010\006\223\021\062"}, {0x015B, "\001\005\006\223\021\062"}, {0x015C, "\001\010\006\223\021\072"}, {0x015D, "\001\005\006\223\021\072"}, {0x015E, "\001\010\006\223\274"}, {0x015F, "\001\005\006\223\274"}, {0x0160, "\001\010\006\223\225"}, {0x0161, "\001\005\006\223\225"}, {0x0162, "\001\010\006\261\274"}, {0x0163, "\001\005\006\261\274"}, {0x0164, "\001\010\006\261\225"}, {0x0165, "\001\005\006\261\225"}, {0x0166, "\001\010\006\261\232"}, {0x0167, "\001\005\006\261\232"}, {0x0168, "\001\010\006\132\172"}, {0x0169, "\001\005\006\132\172"}, {0x016A, "\001\010\006\132\174"}, {0x016B, "\001\005\006\132\174"}, {0x016C, "\001\010\006\132\213"}, {0x016D, "\001\005\006\132\213"}, {0x016E, "\001\010\006\132\302\013\040"}, {0x016F, "\001\005\006\132\302\013\040"}, {0x0170, "\001\010\006\132\070\021\062"}, {0x0171, "\001\005\006\132\070\021\062"}, {0x0172, "\001\010\006\132\355\055"}, {0x0173, "\001\005\006\132\355\055"}, {0x0174, "\001\010\006\347\021\072"}, {0x0175, "\001\005\006\347\021\072"}, {0x0176, "\001\010\006\265\021\072"}, {0x0177, "\001\005\006\265\021\072"}, {0x0178, "\001\010\006\265\165"}, {0x0179, "\001\010\006\271\021\062"}, {0x017A, "\001\005\006\271\021\062"}, {0x017B, "\001\010\006\271\037\013\040"}, {0x017C, "\001\005\006\271\037\013\040"}, {0x017D, "\001\010\006\271\225"}, {0x017E, "\001\005\006\271\225"}, {0x017F, "\001\005\006\223\355\264"}, {0x0180, "\001\005\006\334\232"}, {0x0181, "\001\010\006\334\337"}, {0x0182, "\001\010\006\334\357\010"}, {0x0183, "\001\005\006\334\357\010"}, {0x0184, "\001\010\006\357\031\345"}, {0x0185, "\001\005\006\357\031\345"}, {0x0186, "\001\010\006\064\355\343"}, {0x0187, "\001\010\006\313\337"}, {0x0188, "\001\005\006\313\337"}, {0x0189, "\001\010\006\275\362\302"}, {0x018A, "\001\010\006\275\337"}, {0x018B, "\001\010\006\275\357\010"}, {0x018C, "\001\005\006\275\357\010"}, {0x018D, "\001\005\006\356\060\356\154"}, {0x018E, "\001\010\006\130\355\013"}, {0x018F, "\001\010\006\356\041"}, {0x0190, "\001\010\006\130\355\343"}, {0x0191, "\001\010\006\355\062\355\064"}, {0x0192, "\001\005\006\355\062\355\064"}, {0x0193, "\001\010\006\266\337"}, {0x0194, "\001\010\006\356\070"}, {0x0195, "\001\005\006\367\127"}, {0x0196, "\001\010\006\104"}, {0x0197, "\001\010\006\103\232"}, {0x0198, "\001\010\006\352\337"}, {0x0199, "\001\005\006\352\337"}, {0x019A, "\001\005\006\211\374\046"}, {0x019B, "\001\005\006\356\346\232"}, {0x019C, "\001\010\006\276\325"}, {0x019D, "\001\010\006\241\355\064"}, {0x019E, "\001\005\006\241\044\355\264\357\210\221"}, {0x019F, "\001\010\006\064\172\355\137"}, {0x01A0, "\001\010\006\064\336"}, {0x01A1, "\001\005\006\064\336"}, {0x01A2, "\001\010\006\355\106"}, {0x01A3, "\001\005\006\355\106"}, {0x01A4, "\001\010\006\355\021\337"}, {0x01A5, "\001\005\006\355\021\337"}, {0x01A6, "\001\006\362\133"}, {0x01A7, "\001\010\006\360\174\345"}, {0x01A8, "\001\005\006\360\174\345"}, {0x01A9, "\001\010\006\356\167"}, {0x01AA, "\001\006\356\167\355\013\356\002"}, {0x01AB, "\001\005\006\261\355\064\357\264"}, {0x01AC, "\001\010\006\261\337"}, {0x01AD, "\001\005\006\261\337"}, {0x01AE, "\001\010\006\261\355\064\355\214"}, {0x01AF, "\001\010\006\132\336"}, {0x01B0, "\001\005\006\132\336"}, {0x01B1, "\001\010\006\262"}, {0x01B2, "\001\010\006\355\025\337"}, {0x01B3, "\001\010\006\265\337"}, {0x01B4, "\001\005\006\265\337"}, {0x01B5, "\001\010\006\271\232"}, {0x01B6, "\001\005\006\271\232"}, {0x01B7, "\001\010\006\355\321"}, {0x01B8, "\001\010\006\355\321\355\013"}, {0x01B9, "\001\005\006\355\321\355\013"}, {0x01BA, "\001\005\006\355\321\355\064"}, {0x01BB, "\001\006\127\232"}, {0x01BC, "\001\010\006\357\102\345"}, {0x01BD, "\001\005\006\357\102\345"}, {0x01BE, "\001\006\355\224\007\355\226\232\355\143"}, {0x01BF, "\001\006\360\007"}, {0x01C0, "\001\006\356\152\365\250"}, {0x01C1, "\001\006\356\152\370\135"}, {0x01C2, "\001\006\356\152\362\320"}, {0x01C3, "\001\006\356\152\355\214"}, {0x01C4, "\001\010\006\356\064\225"}, {0x01C5, "\001\010\006\275\164\001\005\271\225"}, {0x01C6, "\001\005\006\356\064\225"}, {0x01C7, "\001\010\006\361\034"}, {0x01C8, "\001\010\006\211\164\001\005\355\053"}, {0x01C9, "\001\005\006\361\034"}, {0x01CA, "\001\010\006\361\114"}, {0x01CB, "\001\010\006\241\164\001\005\355\053"}, {0x01CC, "\001\005\006\361\114"}, {0x01CD, "\001\010\006\063\225"}, {0x01CE, "\001\005\006\063\225"}, {0x01CF, "\001\010\006\103\225"}, {0x01D0, "\001\005\006\103\225"}, {0x01D1, "\001\010\006\064\225"}, {0x01D2, "\001\005\006\064\225"}, {0x01D3, "\001\010\006\132\225"}, {0x01D4, "\001\005\006\132\225"}, {0x01D5, "\001\010\006\132\165\020\174"}, {0x01D6, "\001\005\006\132\165\020\174"}, {0x01D7, "\001\010\006\132\165\020\021\062"}, {0x01D8, "\001\005\006\132\165\020\021\062"}, {0x01D9, "\001\010\006\132\165\020\225"}, {0x01DA, "\001\005\006\132\165\020\225"}, {0x01DB, "\001\010\006\132\165\020\021\067"}, {0x01DC, "\001\005\006\132\165\020\021\067"}, {0x01DD, "\001\005\006\130\325"}, {0x01DE, "\001\010\006\063\165\020\174"}, {0x01DF, "\001\005\006\063\165\020\174"}, {0x01E0, "\001\010\006\063\037\013\040\020\174"}, {0x01E1, "\001\005\006\063\037\013\040\020\174"}, {0x01E2, "\001\010\006\355\305\174"}, {0x01E3, "\001\005\006\355\305\174"}, {0x01E4, "\001\010\006\266\232"}, {0x01E5, "\001\005\006\266\232"}, {0x01E6, "\001\010\006\266\225"}, {0x01E7, "\001\005\006\266\225"}, {0x01E8, "\001\010\006\352\225"}, {0x01E9, "\001\005\006\352\225"}, {0x01EA, "\001\010\006\064\355\055"}, {0x01EB, "\001\005\006\064\355\055"}, {0x01EC, "\001\010\006\064\355\055\020\174"}, {0x01ED, "\001\005\006\064\355\055\020\174"}, {0x01EE, "\001\010\006\355\321\225"}, {0x01EF, "\001\005\006\355\321\225"}, {0x01F0, "\001\005\006\355\053\225"}, {0x01F1, "\001\010\006\356\064"}, {0x01F2, "\001\010\006\275\164\001\005\271"}, {0x01F3, "\001\005\006\356\064"}, {0x01F4, "\001\010\006\266\021\062"}, {0x01F5, "\001\005\006\266\021\062"}, {0x01F6, "\001\010\006\367\130"}, {0x01F7, "\001\010\006\360\007"}, {0x01F8, "\001\010\006\241\067"}, {0x01F9, "\001\005\006\241\067"}, {0x01FA, "\001\010\006\063\302\013\040\020\021\062"}, {0x01FB, "\001\005\006\063\302\013\040\020\021\062"}, {0x01FC, "\001\010\006\355\305\021\062"}, {0x01FD, "\001\005\006\355\305\021\062"}, {0x01FE, "\001\010\006\064\232\021\062"}, {0x01FF, "\001\005\006\064\232\021\062"}, {0x0200, "\001\010\006\063\070\021\067"}, {0x0201, "\001\005\006\063\070\021\067"}, {0x0202, "\001\010\006\063\213\355\076"}, {0x0203, "\001\005\006\063\213\355\076"}, {0x0204, "\001\010\006\130\070\021\067"}, {0x0205, "\001\005\006\130\070\021\067"}, {0x0206, "\001\010\006\130\213\355\076"}, {0x0207, "\001\005\006\130\213\355\076"}, {0x0208, "\001\010\006\103\070\021\067"}, {0x0209, "\001\005\006\103\070\021\067"}, {0x020A, "\001\010\006\103\213\355\076"}, {0x020B, "\001\005\006\103\213\355\076"}, {0x020C, "\001\010\006\064\070\021\067"}, {0x020D, "\001\005\006\064\070\021\067"}, {0x020E, "\001\010\006\064\213\355\076"}, {0x020F, "\001\005\006\064\213\355\076"}, {0x0210, "\001\010\006\167\070\021\067"}, {0x0211, "\001\005\006\167\070\021\067"}, {0x0212, "\001\010\006\167\213\355\076"}, {0x0213, "\001\005\006\167\213\355\076"}, {0x0214, "\001\010\006\132\070\021\067"}, {0x0215, "\001\005\006\132\070\021\067"}, {0x0216, "\001\010\006\132\213\355\076"}, {0x0217, "\001\005\006\132\213\355\076"}, {0x0218, "\001\010\006\223\330\301"}, {0x0219, "\001\005\006\223\330\301"}, {0x021A, "\001\010\006\261\330\301"}, {0x021B, "\001\005\006\261\330\301"}, {0x021C, "\001\010\006\362\116"}, {0x021D, "\001\005\006\362\116"}, {0x021E, "\001\010\006\237\225"}, {0x021F, "\001\005\006\237\225"}, {0x0222, "\001\010\006\113"}, {0x0223, "\001\005\006\113"}, {0x0224, "\001\010\006\271\122"}, {0x0225, "\001\005\006\271\122"}, {0x0226, "\001\010\006\063\037\013\040"}, {0x0227, "\001\005\006\063\037\013\040"}, {0x0228, "\001\010\006\130\274"}, {0x0229, "\001\005\006\130\274"}, {0x022A, "\001\010\006\064\165\020\174"}, {0x022B, "\001\005\006\064\165\020\174"}, {0x022C, "\001\010\006\064\172\020\174"}, {0x022D, "\001\005\006\064\172\020\174"}, {0x022E, "\001\010\006\064\037\013\040"}, {0x022F, "\001\005\006\064\037\013\040"}, {0x0230, "\001\010\006\064\037\013\040\020\174"}, {0x0231, "\001\005\006\064\037\013\040\020\174"}, {0x0232, "\001\010\006\265\174"}, {0x0233, "\001\005\006\265\174"}, {0x0250, "\001\005\006\063\325"}, {0x0251, "\001\005\006\203"}, {0x0252, "\001\005\006\203\325"}, {0x0253, "\001\005\006\334\337"}, {0x0254, "\001\005\006\064\355\343"}, {0x0255, "\001\005\006\313\356\002"}, {0x0256, "\001\005\006\275\355\064\355\214"}, {0x0257, "\001\005\006\275\337"}, {0x0258, "\001\005\006\130\355\013"}, {0x0259, "\001\005\006\356\041"}, {0x025A, "\001\005\006\356\041\122"}, {0x025B, "\001\005\006\326"}, {0x025C, "\001\005\006\326\355\013"}, {0x025D, "\001\005\006\326\355\013\122"}, {0x025E, "\001\005\006\326\355\013\357\146"}, {0x025F, "\001\005\006\355\053\270\037\232"}, {0x0260, "\001\005\006\266\337"}, {0x0261, "\001\005\006\266\365\133"}, {0x0262, "\001\006\355\142\010\266"}, {0x0263, "\001\005\006\356\070"}, {0x0264, "\001\005\006\175\356\070"}, {0x0265, "\001\005\006\237\325"}, {0x0266, "\001\005\006\237\337"}, {0x0267, "\001\005\006\356\007\337"}, {0x0268, "\001\005\006\103\232"}, {0x0269, "\001\005\006\104"}, {0x026A, "\001\006\355\142\010\103"}, {0x026B, "\001\005\006\211\172\355\137"}, {0x026C, "\001\005\006\211\374\220"}, {0x026D, "\001\005\006\211\355\064\355\214"}, {0x026E, "\001\005\006\370\144"}, {0x026F, "\001\005\006\276\325"}, {0x0270, "\001\005\006\276\357\163\325"}, {0x0271, "\001\005\006\276\355\064\357\264"}, {0x0272, "\001\005\006\241\355\064\044\052"}, {0x0273, "\001\005\006\241\355\064\355\214"}, {0x0274, "\001\006\355\142\010\241"}, {0x0275, "\001\005\006\064\232"}, {0x0276, "\001\006\355\142\010\355\210"}, {0x0277, "\001\005\006\201\357\146"}, {0x0278, "\001\005\006\356\241"}, {0x0279, "\001\005\006\167\325"}, {0x027A, "\001\005\006\167\357\013\325"}, {0x027B, "\001\005\006\167\337\325"}, {0x027C, "\001\005\006\167\357\013"}, {0x027D, "\001\005\006\167\355\064\355\214"}, {0x027E, "\001\005\006\167\270\357\162"}, {0x027F, "\001\005\006\167\270\357\162\355\013"}, {0x0280, "\001\006\355\142\010\167"}, {0x0281, "\001\006\355\142\010\167\355\143"}, {0x0282, "\001\005\006\223\355\064\355\214"}, {0x0283, "\001\005\006\356\167"}, {0x0284, "\001\005\006\355\053\270\037\232\337"}, {0x0285, "\001\005\006\356\167\375\247\355\143"}, {0x0286, "\001\005\006\356\167\356\002"}, {0x0287, "\001\005\006\261\325"}, {0x0288, "\001\005\006\261\355\064\355\214"}, {0x0289, "\001\005\006\132\232"}, {0x028A, "\001\005\006\262"}, {0x028B, "\001\005\006\355\025\007\355\144"}, {0x028C, "\001\005\006\355\025\325"}, {0x028D, "\001\005\006\347\325"}, {0x028E, "\001\005\006\265\325"}, {0x028F, "\001\006\355\142\010\265"}, {0x0290, "\001\005\006\271\355\064\355\214"}, {0x0291, "\001\005\006\271\356\002"}, {0x0292, "\001\005\006\355\321"}, {0x0293, "\001\005\006\355\321\356\002"}, {0x0294, "\001\006\355\224\007\355\226"}, {0x0295, "\001\006\355\224\007\355\226\355\013"}, {0x0296, "\001\006\355\224\007\355\226\355\143"}, {0x0297, "\001\006\313\377\036"}, {0x0298, "\001\006\356\152\363\127"}, {0x0299, "\001\006\355\142\010\334"}, {0x029A, "\001\005\006\326\357\146"}, {0x029B, "\001\006\355\142\010\266\337"}, {0x029C, "\001\006\355\142\010\237"}, {0x029D, "\001\005\006\355\053\356\247\365\121"}, {0x029E, "\001\005\006\352\325"}, {0x029F, "\001\006\355\142\010\211"}, {0x02A0, "\001\005\006\355\173\337"}, {0x02A1, "\001\006\355\224\007\355\226\232"}, {0x02A2, "\001\006\355\224\007\355\226\232\355\013"}, {0x02A3, "\001\005\006\355\134\356\064"}, {0x02A4, "\001\005\006\355\134\365\241"}, {0x02A5, "\001\005\006\355\134\356\064\356\002"}, {0x02A6, "\001\005\006\355\134\362\040"}, {0x02A7, "\001\005\006\355\134\375\156"}, {0x02A8, "\001\005\006\355\134\375\114\356\002"}, {0x02A9, "\001\005\006\355\134\366\055"}, {0x02AA, "\001\005\006\355\134\370\211"}, {0x02AB, "\001\005\006\355\134\370\235"}, {0x02AC, "\001\006\361\163\363\130"}, {0x02AD, "\001\006\361\163\363\122"}, {0x02B0, "\001\200\005\237"}, {0x02B1, "\001\200\005\237\337"}, {0x02B2, "\001\200\005\355\053"}, {0x02B3, "\001\200\005\167"}, {0x02B4, "\001\200\005\167\325"}, {0x02B5, "\001\200\005\167\337\325"}, {0x02B6, "\001\200\355\142\010\167\355\143"}, {0x02B7, "\001\200\005\347"}, {0x02B8, "\001\200\005\265"}, {0x02B9, "\001\200\355\235"}, {0x02BA, "\001\200\374\241"}, {0x02BB, "\001\200\330\356\154"}, {0x02BC, "\001\200\355\306"}, {0x02BD, "\001\200\330\357\322"}, {0x02BE, "\001\200\360\170\044\053"}, {0x02BF, "\001\200\360\170\044\052"}, {0x02C0, "\001\200\355\224\007\355\226"}, {0x02C1, "\001\200\355\224\007\355\226\355\013"}, {0x02C2, "\001\200\355\003\007\061\015\033\052"}, {0x02C3, "\001\200\355\003\007\061\015\033\053"}, {0x02C4, "\001\200\355\003\007\061\015\050\102"}, {0x02C5, "\001\200\355\003\007\061\015\050\101"}, {0x02C6, "\001\200\021\072"}, {0x02C7, "\225"}, {0x02C8, "\001\200\243\256"}, {0x02C9, "\001\200\174"}, {0x02CA, "\001\200\021\062"}, {0x02CB, "\001\200\021\067"}, {0x02CC, "\001\200\243\256\101"}, {0x02CD, "\001\200\174\101"}, {0x02CE, "\001\200\021\067\101"}, {0x02CF, "\001\200\021\062\101"}, {0x02D0, "\001\200\127\251\375\255"}, {0x02D1, "\001\200\037\356\131"}, {0x02D2, "\001\200\356\061\044\053\360\111"}, {0x02D3, "\001\200\356\061\044\052\360\111"}, {0x02D4, "\001\200\355\014\102"}, {0x02D5, "\001\200\355\014\101"}, {0x02D6, "\001\200\057\214"}, {0x02D7, "\001\200\057\355\020"}, {0x02D8, "\213"}, {0x02D9, "\037\013\040"}, {0x02DA, "\302\013\040"}, {0x02DB, "\355\055"}, {0x02DC, "\175\172"}, {0x02DD, "\070\021\062"}, {0x02DE, "\001\200\122\007\374\061"}, {0x02DF, "\001\200\021\013\355\033"}, {0x02E0, "\001\200\356\070\005"}, {0x02E1, "\001\200\211\005"}, {0x02E2, "\001\200\223\005"}, {0x02E3, "\001\200\355\026\005"}, {0x02E4, "\001\200\355\224\007\355\226\355\013\005"}, {0x02E5, "\001\200\246\007\345\362\037\102"}, {0x02E6, "\001\200\246\007\345\102"}, {0x02E7, "\001\200\246\007\345\371\024"}, {0x02E8, "\001\200\246\007\345\101"}, {0x02E9, "\001\200\246\007\345\362\037\101"}, {0x02EA, "\001\200\057\007\345\007\360\224\362\114"}, {0x02EB, "\001\200\057\007\345\007\360\224\360\011"}, {0x02EC, "\001\200\360\003"}, {0x02ED, "\001\200\355\043\362\373"}, {0x02EE, "\001\200\070\355\306"}, {0x0300, "\026\021\067"}, {0x0301, "\026\021\062"}, {0x0302, "\026\021\072"}, {0x0303, "\026\172"}, {0x0304, "\026\174"}, {0x0305, "\026\355\007\102"}, {0x0306, "\026\213"}, {0x0307, "\026\037\013\040"}, {0x0308, "\026\165"}, {0x0309, "\026\122\013\040"}, {0x030A, "\026\302\013\040"}, {0x030B, "\026\070\021\062"}, {0x030C, "\026\225"}, {0x030D, "\026\243\256\013\040"}, {0x030E, "\026\070\243\256\013\040"}, {0x030F, "\026\070\021\067"}, {0x0310, "\026\356\123"}, {0x0311, "\026\213\355\076"}, {0x0312, "\026\330\356\154\013\040"}, {0x0313, "\026\330\013\040"}, {0x0314, "\026\330\357\322\013\040"}, {0x0315, "\026\330\013\040\044\053"}, {0x0316, "\026\021\067\043"}, {0x0317, "\026\021\062\043"}, {0x0318, "\026\355\014\052\043"}, {0x0319, "\026\355\014\221\043"}, {0x031A, "\026\355\374\052\013\040"}, {0x031B, "\026\336"}, {0x031C, "\026\356\061\052\043"}, {0x031D, "\026\355\014\102\043"}, {0x031E, "\026\355\014\101\043"}, {0x031F, "\026\057\214\043"}, {0x0320, "\026\057\355\020\043"}, {0x0321, "\026\355\064\357\264\043"}, {0x0322, "\026\355\064\355\214\043"}, {0x0323, "\026\037\043"}, {0x0324, "\026\165\043"}, {0x0325, "\026\302\043"}, {0x0326, "\026\330\301"}, {0x0327, "\026\274"}, {0x0328, "\026\355\055"}, {0x0329, "\026\243\256\301"}, {0x032A, "\026\357\273\043"}, {0x032B, "\026\201\043"}, {0x032C, "\026\225\043"}, {0x032D, "\026\021\072\043"}, {0x032E, "\026\213\301"}, {0x032F, "\026\213\355\076\301"}, {0x0330, "\026\172\043"}, {0x0331, "\026\174\043"}, {0x0332, "\026\355\126\043"}, {0x0333, "\026\070\355\126\043"}, {0x0334, "\026\172\356\315"}, {0x0335, "\026\246\356\314\356\056"}, {0x0336, "\026\246\356\221\356\056"}, {0x0337, "\026\246\355\044\356\314\356\056"}, {0x0338, "\026\246\355\044\356\221\356\056"}, {0x0339, "\026\356\061\044\053\043"}, {0x033A, "\026\357\273\355\143\043"}, {0x033B, "\026\035\043"}, {0x033C, "\026\371\021\301"}, {0x033D, "\026\355\026\013\040"}, {0x033E, "\026\172\202"}, {0x033F, "\026\070\355\126\013\040"}, {0x0340, "\026\204\007\345\067"}, {0x0341, "\026\204\007\345\062"}, {0x0342, "\026\317\021\072"}, {0x0343, "\026\317\360\142"}, {0x0344, "\026\317\355\061\355\047"}, {0x0345, "\026\317\104\043"}, {0x0346, "\026\357\273\013\040"}, {0x0347, "\026\057\173\043"}, {0x0348, "\026\070\243\256\301"}, {0x0349, "\026\355\374\052\043"}, {0x034A, "\026\172\232\013\040"}, {0x034B, "\026\360\327\013\040"}, {0x034C, "\026\357\011\173\044\013\040"}, {0x034D, "\026\366\073\052\020\053\301"}, {0x034E, "\026\061\015\050\102\301"}, {0x0360, "\026\070\172"}, {0x0361, "\026\070\213\355\076"}, {0x0362, "\026\070\061\015\033\053\301"}, {0x0374, "\057\361\123\317"}, {0x0375, "\057\361\123\043\317"}, {0x037A, "\335\317\104\043"}, {0x037E, "\037\355\313\317"}, {0x0384, "\335\317\355\047"}, {0x0385, "\335\317\355\061\355\047"}, {0x0386, "\001\010\027\203\355\047"}, {0x0387, "\335\317\362\334\375\157"}, {0x0388, "\001\010\027\326\355\047"}, {0x0389, "\001\010\027\224\355\047"}, {0x038A, "\001\010\027\104\355\047"}, {0x038C, "\001\010\027\355\036\355\047"}, {0x038E, "\001\010\027\262\355\047"}, {0x038F, "\001\010\027\201\355\047"}, {0x0390, "\001\005\027\104\355\061\020\355\047"}, {0x0391, "\001\010\027\203"}, {0x0392, "\001\010\027\356\305"}, {0x0393, "\001\010\027\356\070"}, {0x0394, "\001\010\027\356\060"}, {0x0395, "\001\010\027\326"}, {0x0396, "\001\010\027\360\217"}, {0x0397, "\001\010\027\224"}, {0x0398, "\001\010\027\357\356"}, {0x0399, "\001\010\027\104"}, {0x039A, "\001\010\027\357\212"}, {0x039B, "\001\010\027\356\346"}, {0x039C, "\001\010\027\355\111"}, {0x039D, "\001\010\027\356\025"}, {0x039E, "\001\010\027\357\055"}, {0x039F, "\001\010\027\355\036"}, {0x03A0, "\001\010\027\355\233"}, {0x03A1, "\001\010\027\356\036"}, {0x03A3, "\001\010\027\357\030"}, {0x03A4, "\001\010\027\361\356"}, {0x03A5, "\001\010\027\262"}, {0x03A6, "\001\010\027\356\241"}, {0x03A7, "\001\010\027\356\341"}, {0x03A8, "\001\010\027\357\015"}, {0x03A9, "\001\010\027\201"}, {0x03AA, "\001\010\027\104\355\061"}, {0x03AB, "\001\010\027\262\355\061"}, {0x03AC, "\001\005\027\203\355\047"}, {0x03AD, "\001\005\027\326\355\047"}, {0x03AE, "\001\005\027\224\355\047"}, {0x03AF, "\001\005\027\104\355\047"}, {0x03B0, "\001\005\027\262\355\061\020\355\047"}, {0x03B1, "\001\005\027\203"}, {0x03B2, "\001\005\027\356\305"}, {0x03B3, "\001\005\027\356\070"}, {0x03B4, "\001\005\027\356\060"}, {0x03B5, "\001\005\027\326"}, {0x03B6, "\001\005\027\360\217"}, {0x03B7, "\001\005\027\224"}, {0x03B8, "\001\005\027\357\356"}, {0x03B9, "\001\005\027\104"}, {0x03BA, "\001\005\027\357\212"}, {0x03BB, "\001\005\027\356\346"}, {0x03BC, "\001\005\027\355\111"}, {0x03BD, "\001\005\027\356\025"}, {0x03BE, "\001\005\027\357\055"}, {0x03BF, "\001\005\027\355\036"}, {0x03C0, "\001\005\027\355\233"}, {0x03C1, "\001\005\027\356\036"}, {0x03C2, "\001\005\027\357\030\032"}, {0x03C3, "\001\005\027\357\030"}, {0x03C4, "\001\005\027\361\356"}, {0x03C5, "\001\005\027\262"}, {0x03C6, "\001\005\027\356\241"}, {0x03C7, "\001\005\027\356\341"}, {0x03C8, "\001\005\027\357\015"}, {0x03C9, "\001\005\027\201"}, {0x03CA, "\001\005\027\104\355\061"}, {0x03CB, "\001\005\027\262\355\061"}, {0x03CC, "\001\005\027\355\036\355\047"}, {0x03CD, "\001\005\027\262\355\047"}, {0x03CE, "\001\005\027\201\355\047"}, {0x03D0, "\022\317\356\305"}, {0x03D1, "\022\317\357\356"}, {0x03D2, "\022\317\262\122"}, {0x03D3, "\022\317\262\021\062\020\122"}, {0x03D4, "\022\317\262\165\020\122"}, {0x03D5, "\022\317\356\241"}, {0x03D6, "\022\317\355\233"}, {0x03D7, "\022\317\367\355"}, {0x03DA, "\001\027\361\340"}, {0x03DB, "\001\005\027\361\340"}, {0x03DC, "\001\027\360\177"}, {0x03DD, "\001\005\027\360\177"}, {0x03DE, "\001\027\356\344"}, {0x03DF, "\001\005\027\356\344"}, {0x03E0, "\001\027\361\300"}, {0x03E1, "\001\005\027\361\300"}, {0x03E2, "\001\010\355\117\363\273"}, {0x03E3, "\001\005\355\117\363\272"}, {0x03E4, "\001\010\355\117\360\236"}, {0x03E5, "\001\005\355\117\360\236"}, {0x03E6, "\001\010\355\117\357\220"}, {0x03E7, "\001\005\355\117\357\220"}, {0x03E8, "\001\010\355\117\360\330"}, {0x03E9, "\001\005\355\117\360\330"}, {0x03EA, "\001\010\355\117\360\205"}, {0x03EB, "\001\005\355\117\360\205"}, {0x03EC, "\001\010\355\117\361\364"}, {0x03ED, "\001\005\355\117\361\364"}, {0x03EE, "\001\010\355\117\355\217"}, {0x03EF, "\001\005\355\117\355\217"}, {0x03F0, "\022\317\357\212"}, {0x03F1, "\022\317\356\036"}, {0x03F2, "\022\317\370\214\357\030"}, {0x03F3, "\001\027\362\117"}, {0x0400, "\001\010\034\355\260\067"}, {0x0401, "\001\010\034\360\350"}, {0x0402, "\001\010\034\356\063"}, {0x0403, "\001\010\034\360\304"}, {0x0404, "\001\010\034\355\260\375\365"}, {0x0405, "\001\010\034\356\165"}, {0x0406, "\001\010\034\103\360\074"}, {0x0407, "\001\010\034\003"}, {0x0408, "\001\010\034\355\303"}, {0x0409, "\001\010\034\361\033"}, {0x040A, "\001\010\034\360\032"}, {0x040B, "\001\010\034\362\011"}, {0x040C, "\001\010\034\361\001"}, {0x040D, "\001\010\034\103\067"}, {0x040E, "\001\010\034\113\355\223"}, {0x040F, "\001\010\034\356\320"}, {0x0410, "\001\010\034\063"}, {0x0411, "\001\010\034\356\147"}, {0x0412, "\001\010\034\357\054"}, {0x0413, "\001\010\034\355\254"}, {0x0414, "\001\010\034\356\166"}, {0x0415, "\001\010\034\355\260"}, {0x0416, "\001\010\034\355\204"}, {0x0417, "\001\010\034\355\367"}, {0x0418, "\001\010\034\103"}, {0x0419, "\001\010\034\103\355\223"}, {0x041A, "\001\010\034\240"}, {0x041B, "\001\010\034\356\325"}, {0x041C, "\001\010\034\356\326"}, {0x041D, "\001\010\034\356\010"}, {0x041E, "\001\010\034\064"}, {0x041F, "\001\010\034\355\172"}, {0x0420, "\001\010\034\356\327"}, {0x0421, "\001\010\034\356\173"}, {0x0422, "\001\010\034\355\301"}, {0x0423, "\001\010\034\113"}, {0x0424, "\001\010\034\360\226"}, {0x0425, "\001\010\034\355\054"}, {0x0426, "\001\010\034\356\047"}, {0x0427, "\001\010\034\355\071"}, {0x0428, "\001\010\034\355\032"}, {0x0429, "\001\010\034\360\130"}, {0x042A, "\001\010\034\057\356\324"}, {0x042B, "\001\010\034\357\060"}, {0x042C, "\001\010\034\057\356\224"}, {0x042D, "\001\010\034\217"}, {0x042E, "\001\010\034\360\351"}, {0x042F, "\001\010\034\360\341"}, {0x0430, "\001\005\034\063"}, {0x0431, "\001\005\034\356\147"}, {0x0432, "\001\005\034\357\054"}, {0x0433, "\001\005\034\355\254"}, {0x0434, "\001\005\034\356\166"}, {0x0435, "\001\005\034\355\260"}, {0x0436, "\001\005\034\355\204"}, {0x0437, "\001\005\034\355\367"}, {0x0438, "\001\005\034\103"}, {0x0439, "\001\005\034\103\355\223"}, {0x043A, "\001\005\034\240"}, {0x043B, "\001\005\034\356\325"}, {0x043C, "\001\005\034\356\326"}, {0x043D, "\001\005\034\356\010"}, {0x043E, "\001\005\034\064"}, {0x043F, "\001\005\034\355\172"}, {0x0440, "\001\005\034\356\327"}, {0x0441, "\001\005\034\356\173"}, {0x0442, "\001\005\034\355\301"}, {0x0443, "\001\005\034\113"}, {0x0444, "\001\005\034\360\226"}, {0x0445, "\001\005\034\355\054"}, {0x0446, "\001\005\034\356\047"}, {0x0447, "\001\005\034\355\071"}, {0x0448, "\001\005\034\355\032"}, {0x0449, "\001\005\034\360\130"}, {0x044A, "\001\005\034\057\356\324"}, {0x044B, "\001\005\034\357\060"}, {0x044C, "\001\005\034\057\356\224"}, {0x044D, "\001\005\034\217"}, {0x044E, "\001\005\034\360\351"}, {0x044F, "\001\005\034\360\341"}, {0x0450, "\001\005\034\355\260\067"}, {0x0451, "\001\005\034\360\350"}, {0x0452, "\001\005\034\356\063"}, {0x0453, "\001\005\034\360\304"}, {0x0454, "\001\005\034\375\366\355\260"}, {0x0455, "\001\005\034\356\165"}, {0x0456, "\001\005\034\103\360\074"}, {0x0457, "\001\005\034\003"}, {0x0458, "\001\005\034\355\303"}, {0x0459, "\001\005\034\361\033"}, {0x045A, "\001\005\034\360\032"}, {0x045B, "\001\005\034\362\011"}, {0x045C, "\001\005\034\361\001"}, {0x045D, "\001\005\034\103\067"}, {0x045E, "\001\005\034\113\355\223"}, {0x045F, "\001\005\034\356\320"}, {0x0460, "\001\010\034\201"}, {0x0461, "\001\005\034\201"}, {0x0462, "\001\010\034\362\107"}, {0x0463, "\001\005\034\362\107"}, {0x0464, "\001\010\034\217\356\074"}, {0x0465, "\001\005\034\217\356\074"}, {0x0466, "\001\010\034\175\355\363"}, {0x0467, "\001\005\034\175\355\363"}, {0x0468, "\001\010\034\175\355\363\356\074"}, {0x0469, "\001\005\034\175\355\363\356\074"}, {0x046A, "\001\010\034\340\355\363"}, {0x046B, "\001\005\034\340\355\363"}, {0x046C, "\001\010\034\340\355\363\356\074"}, {0x046D, "\001\005\034\340\355\363\356\074"}, {0x046E, "\001\010\034\361\012"}, {0x046F, "\001\005\034\361\012"}, {0x0470, "\001\010\034\357\015"}, {0x0471, "\001\005\034\357\015"}, {0x0472, "\001\010\034\360\243"}, {0x0473, "\001\005\034\360\243"}, {0x0474, "\001\010\034\356\337"}, {0x0475, "\001\005\034\356\337"}, {0x0476, "\001\010\034\356\337\070\021\067"}, {0x0477, "\001\005\034\356\337\070\021\067"}, {0x0478, "\001\010\034\357\261"}, {0x0479, "\001\005\034\357\261"}, {0x047A, "\001\010\034\201\302"}, {0x047B, "\001\005\034\201\302"}, {0x047C, "\001\010\034\201\357\361"}, {0x047D, "\001\005\034\201\357\361"}, {0x047E, "\001\010\034\361\144"}, {0x047F, "\001\005\034\361\144"}, {0x0480, "\001\010\034\356\344"}, {0x0481, "\001\005\034\356\344"}, {0x0482, "\057\034\357\233"}, {0x0483, "\026\034\357\361"}, {0x0484, "\026\034\007\372\150"}, {0x0485, "\026\034\365\176\361\207"}, {0x0486, "\026\034\373\302\361\207"}, {0x0488, "\057\034\363\250\007\357\233"}, {0x0489, "\057\034\370\363"}, {0x048C, "\001\010\034\057\361\310"}, {0x048D, "\001\005\034\057\361\310"}, {0x048E, "\001\010\034\356\327\360\044"}, {0x048F, "\001\005\034\356\327\360\044"}, {0x0490, "\001\010\034\355\254\357\163"}, {0x0491, "\001\005\034\355\254\357\163"}, {0x0492, "\001\010\034\355\254\232"}, {0x0493, "\001\005\034\355\254\232"}, {0x0494, "\001\010\034\355\254\122\355\137"}, {0x0495, "\001\005\034\355\254\122\355\137"}, {0x0496, "\001\010\034\355\204\355\102"}, {0x0497, "\001\005\034\355\204\355\102"}, {0x0498, "\001\010\034\355\367\274"}, {0x0499, "\001\005\034\355\367\274"}, {0x049A, "\001\010\034\240\357\210"}, {0x049B, "\001\005\034\240\355\102"}, {0x049C, "\001\010\034\240\246\256"}, {0x049D, "\001\005\034\240\246\256"}, {0x049E, "\001\010\034\240\232"}, {0x049F, "\001\005\034\240\232"}, {0x04A0, "\001\010\034\240\360\064"}, {0x04A1, "\001\005\034\240\360\064"}, {0x04A2, "\001\010\034\356\010\355\102"}, {0x04A3, "\001\005\034\356\010\355\102"}, {0x04A4, "\012\034\010\356\007"}, {0x04A5, "\012\034\005\356\007"}, {0x04A6, "\001\010\034\355\172\122\355\137"}, {0x04A7, "\001\005\034\355\172\122\355\137"}, {0x04A8, "\001\010\034\314\355\304"}, {0x04A9, "\001\005\034\314\355\304"}, {0x04AA, "\001\010\034\356\173\274"}, {0x04AB, "\001\005\034\356\173\274"}, {0x04AC, "\001\010\034\355\301\355\102"}, {0x04AD, "\001\005\034\355\301\355\102"}, {0x04AE, "\001\010\034\113\221"}, {0x04AF, "\001\005\034\113\221"}, {0x04B0, "\001\010\034\113\221\232"}, {0x04B1, "\001\005\034\113\221\232"}, {0x04B2, "\001\010\034\314\355\055"}, {0x04B3, "\001\005\034\314\355\055"}, {0x04B4, "\012\010\034\355\301\356\047"}, {0x04B5, "\012\005\034\355\301\356\047"}, {0x04B6, "\001\010\034\355\071\355\102"}, {0x04B7, "\001\005\034\355\071\355\102"}, {0x04B8, "\001\010\034\355\071\246\256"}, {0x04B9, "\001\005\034\355\071\246\256"}, {0x04BA, "\001\010\034\356\016"}, {0x04BB, "\001\005\034\356\016"}, {0x04BC, "\001\010\034\355\071\355\304"}, {0x04BD, "\001\005\034\355\071\355\304"}, {0x04BE, "\001\010\034\355\071\355\304\355\055"}, {0x04BF, "\001\005\034\355\071\355\304\355\055"}, {0x04C0, "\001\034\372\151"}, {0x04C1, "\001\010\034\355\204\213"}, {0x04C2, "\001\005\034\355\204\213"}, {0x04C3, "\001\010\034\240\122"}, {0x04C4, "\001\005\034\240\122"}, {0x04C5, "\001\010\034\356\325\355\102"}, {0x04C6, "\001\005\034\356\325\355\102"}, {0x04C7, "\001\010\034\356\010\122"}, {0x04C8, "\001\005\034\356\010\122"}, {0x04C9, "\001\010\034\103\355\223\355\102"}, {0x04CA, "\001\005\034\103\355\223\355\102"}, {0x04CB, "\001\010\034\355\071\360\371"}, {0x04CC, "\001\005\034\355\071\360\371"}, {0x04CD, "\001\010\034\356\326\355\102"}, {0x04CE, "\001\005\034\356\326\355\102"}, {0x04D0, "\001\010\034\063\213"}, {0x04D1, "\001\005\034\063\213"}, {0x04D2, "\001\010\034\063\165"}, {0x04D3, "\001\005\034\063\165"}, {0x04D4, "\001\010\034\360\023"}, {0x04D5, "\001\005\034\360\023"}, {0x04D6, "\001\010\034\355\260\213"}, {0x04D7, "\001\005\034\355\260\213"}, {0x04D8, "\001\010\034\356\041"}, {0x04D9, "\001\005\034\356\041"}, {0x04DA, "\001\010\034\356\041\165"}, {0x04DB, "\001\005\034\356\041\165"}, {0x04DC, "\001\010\034\355\204\165"}, {0x04DD, "\001\005\034\355\204\165"}, {0x04DE, "\001\010\034\355\367\165"}, {0x04DF, "\001\005\034\355\367\165"}, {0x04E0, "\001\010\034\356\165\355\304"}, {0x04E1, "\001\005\034\356\165\355\304"}, {0x04E2, "\001\010\034\103\174"}, {0x04E3, "\001\005\034\103\174"}, {0x04E4, "\001\010\034\103\165"}, {0x04E5, "\001\005\034\103\165"}, {0x04E6, "\001\010\034\064\165"}, {0x04E7, "\001\005\034\064\165"}, {0x04E8, "\001\010\034\064\232"}, {0x04E9, "\001\005\034\064\232"}, {0x04EA, "\001\010\034\064\232\165"}, {0x04EB, "\001\005\034\064\232\165"}, {0x04EC, "\001\010\034\217\165"}, {0x04ED, "\001\005\034\217\165"}, {0x04EE, "\001\010\034\113\174"}, {0x04EF, "\001\005\034\113\174"}, {0x04F0, "\001\010\034\113\165"}, {0x04F1, "\001\005\034\113\165"}, {0x04F2, "\001\010\034\113\070\021\062"}, {0x04F3, "\001\005\034\113\070\021\062"}, {0x04F4, "\001\010\034\355\071\165"}, {0x04F5, "\001\005\034\355\071\165"}, {0x04F8, "\001\010\034\357\060\165"}, {0x04F9, "\001\005\034\357\060\165"}, {0x0531, "\001\010\125\360\063"}, {0x0532, "\001\010\125\361\233"}, {0x0533, "\001\010\125\360\375"}, {0x0534, "\001\010\125\311"}, {0x0535, "\001\010\125\357\057"}, {0x0536, "\001\010\125\355\101"}, {0x0537, "\001\010\125\217"}, {0x0538, "\001\010\125\360\233"}, {0x0539, "\001\010\125\356\263"}, {0x053A, "\001\010\125\355\204"}, {0x053B, "\001\010\125\357\177"}, {0x053C, "\001\010\125\361\031"}, {0x053D, "\001\010\125\356\342"}, {0x053E, "\001\010\125\356\065"}, {0x053F, "\001\010\125\360\305"}, {0x0540, "\001\010\125\357\173"}, {0x0541, "\001\010\125\355\177"}, {0x0542, "\001\010\125\360\273"}, {0x0543, "\001\010\125\356\063"}, {0x0544, "\001\010\125\356\102"}, {0x0545, "\001\010\125\357\172"}, {0x0546, "\001\010\125\355\340"}, {0x0547, "\001\010\125\355\032"}, {0x0548, "\001\010\125\356\132"}, {0x0549, "\001\010\125\355\024"}, {0x054A, "\001\010\125\356\147"}, {0x054B, "\001\010\125\356\320"}, {0x054C, "\001\010\125\355\212"}, {0x054D, "\001\010\125\356\121"}, {0x054E, "\001\010\125\360\005"}, {0x054F, "\001\010\125\360\200"}, {0x0550, "\001\010\125\356\040"}, {0x0551, "\001\010\125\362\046"}, {0x0552, "\001\010\125\357\167"}, {0x0553, "\001\010\125\361\170"}, {0x0554, "\001\010\125\356\220"}, {0x0555, "\001\010\125\306"}, {0x0556, "\001\010\125\356\202"}, {0x0559, "\001\200\125\356\061\052"}, {0x055A, "\355\306\125"}, {0x055B, "\057\357\115\356\052"}, {0x055C, "\037\355\312\356\052"}, {0x055D, "\330\125"}, {0x055E, "\037\355\313\356\052"}, {0x055F, "\022\357\114\356\052"}, {0x0561, "\001\005\125\360\063"}, {0x0562, "\001\005\125\361\233"}, {0x0563, "\001\005\125\360\375"}, {0x0564, "\001\005\125\311"}, {0x0565, "\001\005\125\357\057"}, {0x0566, "\001\005\125\355\101"}, {0x0567, "\001\005\125\217"}, {0x0568, "\001\005\125\360\233"}, {0x0569, "\001\005\125\356\263"}, {0x056A, "\001\005\125\355\204"}, {0x056B, "\001\005\125\357\177"}, {0x056C, "\001\005\125\361\031"}, {0x056D, "\001\005\125\356\342"}, {0x056E, "\001\005\125\356\065"}, {0x056F, "\001\005\125\360\305"}, {0x0570, "\001\005\125\357\173"}, {0x0571, "\001\005\125\355\177"}, {0x0572, "\001\005\125\360\273"}, {0x0573, "\001\005\125\356\063"}, {0x0574, "\001\005\125\356\102"}, {0x0575, "\001\005\125\357\172"}, {0x0576, "\001\005\125\355\340"}, {0x0577, "\001\005\125\355\032"}, {0x0578, "\001\005\125\356\132"}, {0x0579, "\001\005\125\355\024"}, {0x057A, "\001\005\125\356\147"}, {0x057B, "\001\005\125\356\320"}, {0x057C, "\001\005\125\355\212"}, {0x057D, "\001\005\125\356\121"}, {0x057E, "\001\005\125\360\005"}, {0x057F, "\001\005\125\360\200"}, {0x0580, "\001\005\125\356\040"}, {0x0581, "\001\005\125\362\046"}, {0x0582, "\001\005\125\357\167"}, {0x0583, "\001\005\125\361\170"}, {0x0584, "\001\005\125\356\220"}, {0x0585, "\001\005\125\306"}, {0x0586, "\001\005\125\356\202"}, {0x0587, "\012\005\125\357\057\357\167"}, {0x0589, "\037\356\052"}, {0x058A, "\375\244\356\052"}, {0x0591, "\021\222\363\001"}, {0x0592, "\021\222\374\246"}, {0x0593, "\021\222\363\256"}, {0x0594, "\021\222\362\140\373\332"}, {0x0595, "\021\222\362\140\360\256"}, {0x0596, "\021\222\375\104"}, {0x0597, "\021\222\374\042"}, {0x0598, "\021\222\376\235"}, {0x0599, "\021\222\361\240"}, {0x059A, "\021\222\376\157"}, {0x059B, "\021\222\375\164"}, {0x059C, "\021\222\360\264"}, {0x059D, "\021\222\360\264\371\022"}, {0x059E, "\021\222\363\276\366\244"}, {0x059F, "\021\222\367\365\366\045"}, {0x05A0, "\021\222\375\100"}, {0x05A1, "\021\222\372\170\360\256"}, {0x05A3, "\021\222\360\117\367\077"}, {0x05A4, "\021\222\360\117\370\314"}, {0x05A5, "\021\222\371\055"}, {0x05A6, "\021\222\375\163\375\355"}, {0x05A7, "\021\222\365\175"}, {0x05A8, "\021\222\361\240"}, {0x05A9, "\021\222\375\105"}, {0x05AA, "\021\222\376\155\363\107\376\171"}, {0x05AB, "\021\222\372\074"}, {0x05AC, "\021\222\367\202"}, {0x05AD, "\021\222\365\240"}, {0x05AE, "\021\222\375\265"}, {0x05AF, "\272\370\274"}, {0x05B0, "\037\222\363\301"}, {0x05B1, "\037\222\357\165\374\245"}, {0x05B2, "\037\222\357\165\356\374"}, {0x05B3, "\037\222\357\165\357\300"}, {0x05B4, "\037\222\360\322"}, {0x05B5, "\037\222\375\271"}, {0x05B6, "\037\222\375\070"}, {0x05B7, "\037\222\356\374"}, {0x05B8, "\037\222\357\300"}, {0x05B9, "\037\222\360\325"}, {0x05BB, "\037\222\370\043"}, {0x05BC, "\037\222\355\011\113\357\232"}, {0x05BD, "\037\222\370\321"}, {0x05BE, "\355\234\137\370\266"}, {0x05BF, "\037\222\357\021"}, {0x05C0, "\355\234\137\372\161"}, {0x05C1, "\037\222\357\077"}, {0x05C2, "\037\222\374\316"}, {0x05C3, "\355\234\137\374\342\372\162"}, {0x05C4, "\057\222\037\344"}, {0x05D0, "\001\137\355\372"}, {0x05D1, "\001\137\357\072"}, {0x05D2, "\001\137\360\303"}, {0x05D3, "\001\137\356\317"}, {0x05D4, "\001\137\357\170"}, {0x05D5, "\001\137\355\051"}, {0x05D6, "\001\137\360\020"}, {0x05D7, "\001\137\367\161"}, {0x05D8, "\001\137\362\056"}, {0x05D9, "\001\137\362\124"}, {0x05DA, "\001\137\254\032"}, {0x05DB, "\001\137\254"}, {0x05DC, "\001\137\356\347"}, {0x05DD, "\001\137\356\357\032"}, {0x05DE, "\001\137\356\357"}, {0x05DF, "\001\137\357\251\032"}, {0x05E0, "\001\137\357\251"}, {0x05E1, "\001\137\361\301"}, {0x05E2, "\001\137\360\062"}, {0x05E3, "\001\137\355\172\032"}, {0x05E4, "\001\137\355\172"}, {0x05E5, "\001\137\357\366\032"}, {0x05E6, "\001\137\357\366"}, {0x05E7, "\001\137\373\364"}, {0x05E8, "\001\137\357\321"}, {0x05E9, "\001\137\355\310"}, {0x05EA, "\001\137\357\347"}, {0x05F0, "\012\137\357\056\070\355\051"}, {0x05F1, "\012\137\357\056\355\051\356\272"}, {0x05F2, "\012\137\357\056\070\362\124"}, {0x05F3, "\355\234\137\366\154"}, {0x05F4, "\355\234\137\366\153"}, {0x060C, "\330\004"}, {0x061B, "\356\104\004"}, {0x061F, "\037\355\313\004"}, {0x0621, "\001\004\156"}, {0x0622, "\001\004\100\356\022\013\040"}, {0x0623, "\001\004\100\156\013\040"}, {0x0624, "\001\004\355\051\156\013\040"}, {0x0625, "\001\004\100\156\043"}, {0x0626, "\001\004\056\156\013\040"}, {0x0627, "\001\004\100"}, {0x0628, "\001\004\324"}, {0x0629, "\001\004\233\356\354"}, {0x062A, "\001\004\233"}, {0x062B, "\001\004\355\060"}, {0x062C, "\001\004\115"}, {0x062D, "\001\004\111"}, {0x062E, "\001\004\170"}, {0x062F, "\001\004\355\316"}, {0x0630, "\001\004\356\321"}, {0x0631, "\001\004\343"}, {0x0632, "\001\004\360\017"}, {0x0633, "\001\004\245"}, {0x0634, "\001\004\247"}, {0x0635, "\001\004\377\004"}, {0x0636, "\001\004\350"}, {0x0637, "\001\004\355\046"}, {0x0638, "\001\004\355\366"}, {0x0639, "\001\004\355\027"}, {0x063A, "\001\004\355\063"}, {0x0640, "\361\355\004"}, {0x0641, "\001\004\351"}, {0x0642, "\001\004\355\037"}, {0x0643, "\001\004\254"}, {0x0644, "\001\004\206"}, {0x0645, "\001\004\047"}, {0x0646, "\001\004\215"}, {0x0647, "\001\004\231"}, {0x0648, "\001\004\355\051"}, {0x0649, "\001\004\100\160"}, {0x064A, "\001\004\056"}, {0x064B, "\356\176\004"}, {0x064C, "\357\122\004"}, {0x064D, "\357\216\004"}, {0x064E, "\356\175\004"}, {0x064F, "\356\157\004"}, {0x0650, "\356\215\004"}, {0x0651, "\355\154\004"}, {0x0652, "\357\036\004"}, {0x0653, "\356\022\004\013\040"}, {0x0654, "\156\004\013\040"}, {0x0655, "\156\004\043"}, {0x0660, "\024\355\030\331"}, {0x0661, "\024\355\030\110"}, {0x0662, "\024\355\030\127"}, {0x0663, "\024\355\030\136"}, {0x0664, "\024\355\030\220"}, {0x0665, "\024\355\030\230"}, {0x0666, "\024\355\030\255"}, {0x0667, "\024\355\030\252"}, {0x0668, "\024\355\030\226"}, {0x0669, "\024\355\030\257"}, {0x066A, "\022\355\057\355\245\004"}, {0x066B, "\355\045\360\221\004"}, {0x066C, "\355\045\357\233\004"}, {0x066D, "\355\015\044\230\355\116\004"}, {0x0670, "\001\004\100\013\040"}, {0x0671, "\001\004\100\360\006"}, {0x0672, "\001\004\100\156\361\136\013\040"}, {0x0673, "\001\004\100\156\361\136\043"}, {0x0674, "\001\004\156\356\276"}, {0x0675, "\001\004\100\156\356\276"}, {0x0676, "\001\004\355\051\156\356\276"}, {0x0677, "\001\004\113\156\356\276"}, {0x0678, "\001\004\056\156\356\276"}, {0x0679, "\001\004\356\261"}, {0x067A, "\001\004\356\262"}, {0x067B, "\001\004\356\143"}, {0x067C, "\001\004\233\302"}, {0x067D, "\001\004\233\136\251\013\040\321\015\050\101"}, {0x067E, "\001\004\356\237"}, {0x067F, "\001\004\356\256"}, {0x0680, "\001\004\356\144"}, {0x0681, "\001\004\111\156\013\040"}, {0x0682, "\001\004\111\127\251\362\313\357\376\355\307\357\132"}, {0x0683, "\001\004\356\230"}, {0x0684, "\001\004\356\164"}, {0x0685, "\001\004\111\136\251\013\040"}, {0x0686, "\001\004\356\124"}, {0x0687, "\001\004\356\255"}, {0x0688, "\001\004\357\126"}, {0x0689, "\001\004\355\316\302"}, {0x068A, "\001\004\355\316\037\043"}, {0x068B, "\001\004\355\316\037\043\020\175\375\077"}, {0x068C, "\001\004\357\121"}, {0x068D, "\001\004\357\125"}, {0x068E, "\001\004\357\144"}, {0x068F, "\001\004\355\316\136\251\013\040\321\015\050\101"}, {0x0690, "\001\004\355\316\220\251\013\040"}, {0x0691, "\001\004\357\317"}, {0x0692, "\001\004\343\175\355\025"}, {0x0693, "\001\004\343\302"}, {0x0694, "\001\004\343\037\043"}, {0x0695, "\001\004\343\175\355\025\043"}, {0x0696, "\001\004\343\037\043\020\037\013\040"}, {0x0697, "\001\004\343\127\251\013\040"}, {0x0698, "\001\004\357\207"}, {0x0699, "\001\004\343\220\251\013\040"}, {0x069A, "\001\004\245\037\043\020\037\013\040"}, {0x069B, "\001\004\245\136\251\355\237"}, {0x069C, "\001\004\245\136\251\355\237\020\136\251\013\040"}, {0x069D, "\001\004\355\005\127\251\355\237"}, {0x069E, "\001\004\355\005\136\251\013\040"}, {0x069F, "\001\004\355\046\136\251\013\040"}, {0x06A0, "\001\004\355\027\136\251\013\040"}, {0x06A1, "\001\004\351\270\037"}, {0x06A2, "\001\004\351\037\365\254"}, {0x06A3, "\001\004\351\037\043"}, {0x06A4, "\001\004\356\264"}, {0x06A5, "\001\004\351\136\251\355\237"}, {0x06A6, "\001\004\356\240"}, {0x06A7, "\001\004\355\037\037\013\040"}, {0x06A8, "\001\004\355\037\136\251\013\040"}, {0x06A9, "\001\004\356\216"}, {0x06AA, "\001\004\254\377\023"}, {0x06AB, "\001\004\254\302"}, {0x06AC, "\001\004\254\037\013\040"}, {0x06AD, "\001\004\355\336"}, {0x06AE, "\001\004\254\136\251\355\237"}, {0x06AF, "\001\004\355\322"}, {0x06B0, "\001\004\355\322\302"}, {0x06B1, "\001\004\356\226"}, {0x06B2, "\001\004\355\322\127\251\355\237"}, {0x06B3, "\001\004\366\237"}, {0x06B4, "\001\004\355\322\136\251\013\040"}, {0x06B5, "\001\004\206\175\355\025"}, {0x06B6, "\001\004\206\037\013\040"}, {0x06B7, "\001\004\206\136\251\013\040"}, {0x06B8, "\001\004\206\136\251\355\237"}, {0x06B9, "\001\004\215\037\043"}, {0x06BA, "\001\004\215\270\037"}, {0x06BB, "\001\004\371\313\355\214"}, {0x06BC, "\001\004\215\302"}, {0x06BD, "\001\004\215\136\251\013\040"}, {0x06BE, "\001\004\231\356\163"}, {0x06BF, "\001\004\356\124\037\013\040"}, {0x06C0, "\001\004\231\056\013\040"}, {0x06C1, "\001\004\231\356\015"}, {0x06C2, "\001\004\231\356\015\156\013\040"}, {0x06C3, "\356\354\356\015"}, {0x06C4, "\001\004\355\051\302"}, {0x06C5, "\001\004\355\205\356\011"}, {0x06C6, "\001\004\356\011"}, {0x06C7, "\001\004\113"}, {0x06C8, "\001\004\132"}, {0x06C9, "\001\004\355\205\355\151"}, {0x06CA, "\001\004\355\051\127\251\013\040"}, {0x06CB, "\001\004\357\054"}, {0x06CC, "\001\004\356\067\056"}, {0x06CD, "\001\004\056\356\247"}, {0x06CE, "\001\004\056\175\355\025"}, {0x06CF, "\001\004\355\051\037\013\040"}, {0x06D0, "\001\004\217"}, {0x06D1, "\001\004\056\136\251\355\237"}, {0x06D2, "\001\004\056\232"}, {0x06D3, "\001\004\056\232\156\013\040"}, {0x06D4, "\037\004"}, {0x06D5, "\001\004\130"}, {0x06D6, "\012\004\005\355\005\013\040\206\100\160"}, {0x06D7, "\012\004\005\355\037\013\040\206\100\160"}, {0x06D8, "\001\004\005\047\013\040\055"}, {0x06D9, "\001\004\005\100\206\013\040"}, {0x06DA, "\001\004\005\115\013\040"}, {0x06DB, "\136\251\013\040\004"}, {0x06DC, "\001\004\005\245\013\040"}, {0x06DD, "\116\007\363\013\004"}, {0x06DE, "\355\320\007\374\107\365\374\366\350\004"}, {0x06DF, "\331\362\361\013\040\004"}, {0x06E0, "\331\374\050\013\040\004"}, {0x06E1, "\372\157\366\320\007\170\270\037\013\040\004"}, {0x06E2, "\001\004\005\047\013\040\036"}, {0x06E3, "\001\004\005\245\043"}, {0x06E4, "\001\004\005\356\022\013\040"}, {0x06E5, "\001\004\005\355\051"}, {0x06E6, "\001\004\005\056"}, {0x06E7, "\001\004\005\056\013\040"}, {0x06E8, "\001\004\005\215\013\040"}, {0x06E9, "\057\007\373\272\004"}, {0x06EA, "\037\355\132\043\004"}, {0x06EB, "\037\355\132\013\040\004"}, {0x06EC, "\037\361\205\043\004"}, {0x06ED, "\001\004\005\047\043"}, {0x06F0, "\024\355\030\355\244\331"}, {0x06F1, "\024\355\030\355\244\110"}, {0x06F2, "\024\355\030\355\244\127"}, {0x06F3, "\024\355\030\355\244\136"}, {0x06F4, "\024\355\030\355\244\220"}, {0x06F5, "\024\355\030\355\244\230"}, {0x06F6, "\024\355\030\355\244\255"}, {0x06F7, "\024\355\030\355\244\252"}, {0x06F8, "\024\355\030\355\244\226"}, {0x06F9, "\024\355\030\355\244\257"}, {0x06FA, "\001\004\247\037\043"}, {0x06FB, "\001\004\350\037\043"}, {0x06FC, "\001\004\355\063\037\043"}, {0x06FD, "\057\004\361\316\356\377"}, {0x06FE, "\057\004\361\316\373\256\370\316"}, {0x0700, "\116\007\361\153\161"}, {0x0701, "\037\161\357\344"}, {0x0702, "\037\161\357\342"}, {0x0703, "\355\103\161\357\344"}, {0x0704, "\355\103\161\357\342"}, {0x0705, "\355\103\161\242"}, {0x0706, "\355\103\161\356\376\044\052"}, {0x0707, "\355\103\161\356\376\044\053"}, {0x0708, "\355\103\161\357\344\356\376\044\052"}, {0x0709, "\355\103\161\357\342\356\376\044\053"}, {0x070A, "\365\064\161"}, {0x070B, "\357\253\161\357\171"}, {0x070C, "\371\064\161\357\171"}, {0x070D, "\355\115\161\357\171"}, {0x070F, "\022\357\114\161"}, {0x0710, "\001\161\362\154"}, {0x0711, "\001\161\362\154\013\040"}, {0x0712, "\001\161\363\214"}, {0x0713, "\001\161\360\312"}, {0x0714, "\001\161\360\312\360\260"}, {0x0715, "\001\161\360\220"}, {0x0716, "\001\161\360\220\361\276\270\037"}, {0x0717, "\001\161\360\340"}, {0x0718, "\001\161\355\051"}, {0x0719, "\001\161\360\020"}, {0x071A, "\001\161\366\343"}, {0x071B, "\001\161\362\054"}, {0x071C, "\001\161\362\054\360\260"}, {0x071D, "\001\161\362\132"}, {0x071E, "\001\161\362\132\360\340"}, {0x071F, "\001\161\370\113"}, {0x0720, "\001\161\370\243"}, {0x0721, "\001\161\047"}, {0x0722, "\001\161\215"}, {0x0723, "\001\161\361\311"}, {0x0724, "\001\161\361\311\032"}, {0x0725, "\001\161\362\165"}, {0x0726, "\001\161\361\234"}, {0x0727, "\001\161\361\234\355\013"}, {0x0728, "\001\161\375\025"}, {0x0729, "\001\161\373\366"}, {0x072A, "\001\161\361\276"}, {0x072B, "\001\161\247"}, {0x072C, "\001\161\375\111"}, {0x0730, "\357\271\161\013\040"}, {0x0731, "\357\271\161\043"}, {0x0732, "\357\271\161\356\034"}, {0x0733, "\360\021\161\013\040"}, {0x0734, "\360\021\161\043"}, {0x0735, "\360\021\161\357\005"}, {0x0736, "\361\260\161\013\040"}, {0x0737, "\361\260\161\043"}, {0x0738, "\362\141\161\357\005\242"}, {0x0739, "\362\141\161\357\005\355\044"}, {0x073A, "\360\321\161\013\040"}, {0x073B, "\360\321\161\043"}, {0x073C, "\366\333\161\356\034"}, {0x073D, "\360\036\161\013\040"}, {0x073E, "\360\036\161\043"}, {0x073F, "\374\057\161"}, {0x0740, "\037\360\255\161"}, {0x0741, "\373\363\161"}, {0x0742, "\374\111\161"}, {0x0743, "\127\251\357\377\357\044\013\040"}, {0x0744, "\127\251\357\377\357\044\355\237"}, {0x0745, "\136\251\357\044\013\040"}, {0x0746, "\136\251\357\044\355\237"}, {0x0747, "\243\355\044\161\013\040"}, {0x0748, "\243\355\044\161\301"}, {0x0749, "\371\041\161"}, {0x074A, "\363\034\161"}, {0x0780, "\001\216\356\211"}, {0x0781, "\001\216\363\267"}, {0x0782, "\001\216\371\332"}, {0x0783, "\001\216\357\320"}, {0x0784, "\001\216\363\210"}, {0x0785, "\001\216\370\153"}, {0x0786, "\001\216\370\112"}, {0x0787, "\001\216\362\312"}, {0x0788, "\001\216\376\072"}, {0x0789, "\001\216\371\067"}, {0x078A, "\001\216\366\130"}, {0x078B, "\001\216\365\261"}, {0x078C, "\001\216\357\355"}, {0x078D, "\001\216\370\244"}, {0x078E, "\001\216\366\276"}, {0x078F, "\001\216\366\234"}, {0x0790, "\001\216\375\074"}, {0x0791, "\001\216\365\201"}, {0x0792, "\001\216\376\237"}, {0x0793, "\001\216\375\110"}, {0x0794, "\001\216\362\134"}, {0x0795, "\001\216\372\166"}, {0x0796, "\001\216\365\301"}, {0x0797, "\001\216\375\133"}, {0x0798, "\001\216\375\315"}, {0x0799, "\001\216\366\341"}, {0x079A, "\001\216\370\012"}, {0x079B, "\001\216\375\200"}, {0x079C, "\001\216\376\362"}, {0x079D, "\001\216\363\341"}, {0x079E, "\001\216\375\066"}, {0x079F, "\001\216\365\350"}, {0x07A0, "\001\216\355\176"}, {0x07A1, "\001\216\356\135"}, {0x07A2, "\001\216\363\016"}, {0x07A3, "\001\216\366\210"}, {0x07A4, "\001\216\374\025"}, {0x07A5, "\001\216\376\113"}, {0x07A6, "\216\362\271"}, {0x07A7, "\216\376\375"}, {0x07A8, "\216\367\172"}, {0x07A9, "\216\377\045"}, {0x07AA, "\216\372\124"}, {0x07AB, "\216\372\140"}, {0x07AC, "\216\377\021"}, {0x07AD, "\216\377\042"}, {0x07AE, "\216\372\070"}, {0x07AF, "\216\377\063"}, {0x07B0, "\216\357\036"}, {0x0901, "\022\106\356\123"}, {0x0902, "\022\106\355\222"}, {0x0903, "\022\106\355\243"}, {0x0905, "\001\106\063"}, {0x0906, "\001\106\323"}, {0x0907, "\001\106\103"}, {0x0908, "\001\106\315"}, {0x0909, "\001\106\113"}, {0x090A, "\001\106\342"}, {0x090B, "\001\106\167\205"}, {0x090C, "\001\106\211\205"}, {0x090D, "\001\106\217\355\357"}, {0x090E, "\001\106\217\355\223"}, {0x090F, "\001\106\217"}, {0x0910, "\001\106\307"}, {0x0911, "\001\106\064\355\357"}, {0x0912, "\001\106\064\355\223"}, {0x0913, "\001\106\306"}, {0x0914, "\001\106\333"}, {0x0915, "\001\106\240"}, {0x0916, "\001\106\355\054"}, {0x0917, "\001\106\355\017"}, {0x0918, "\001\106\355\106"}, {0x0919, "\001\106\355\066"}, {0x091A, "\001\106\355\024"}, {0x091B, "\001\106\355\240"}, {0x091C, "\001\106\355\104"}, {0x091D, "\001\106\355\251"}, {0x091E, "\001\106\355\201"}, {0x091F, "\001\106\355\100"}, {0x0920, "\001\106\355\127"}, {0x0921, "\001\106\355\120"}, {0x0922, "\001\106\355\160"}, {0x0923, "\001\106\355\141"}, {0x0924, "\001\106\311"}, {0x0925, "\001\106\355\072"}, {0x0926, "\001\106\355\002"}, {0x0927, "\001\106\355\162"}, {0x0928, "\001\106\354"}, {0x0929, "\001\106\361\115"}, {0x092A, "\001\106\327"}, {0x092B, "\001\106\355\124"}, {0x092C, "\001\106\355\052"}, {0x092D, "\001\106\355\153"}, {0x092E, "\001\106\277"}, {0x092F, "\001\106\305"}, {0x0930, "\001\106\322"}, {0x0931, "\001\106\355\212"}, {0x0932, "\001\106\033"}, {0x0933, "\001\106\355\263"}, {0x0934, "\001\106\357\230"}, {0x0935, "\001\106\355\241"}, {0x0936, "\001\106\355\152"}, {0x0937, "\001\106\355\032"}, {0x0938, "\001\106\355\004"}, {0x0939, "\001\106\314"}, {0x093C, "\022\106\356\227"}, {0x093D, "\022\106\357\067"}, {0x093E, "\042\026\106\323"}, {0x093F, "\042\026\106\103"}, {0x0940, "\042\026\106\315"}, {0x0941, "\042\026\106\113"}, {0x0942, "\042\026\106\342"}, {0x0943, "\042\026\106\167\205"}, {0x0944, "\042\026\106\355\114\205"}, {0x0945, "\042\026\106\217\355\357"}, {0x0946, "\042\026\106\217\355\223"}, {0x0947, "\042\026\106\217"}, {0x0948, "\042\026\106\307"}, {0x0949, "\042\026\106\064\355\357"}, {0x094A, "\042\026\106\064\355\223"}, {0x094B, "\042\026\106\306"}, {0x094C, "\042\026\106\333"}, {0x094D, "\022\106\355\242"}, {0x0950, "\356\366\106"}, {0x0951, "\057\357\115\106\372\125"}, {0x0952, "\057\357\115\106\362\335"}, {0x0953, "\021\067\106"}, {0x0954, "\021\062\106"}, {0x0958, "\001\106\356\245"}, {0x0959, "\001\106\360\374"}, {0x095A, "\001\106\360\275"}, {0x095B, "\001\106\355\101"}, {0x095C, "\001\106\365\207"}, {0x095D, "\001\106\357\305"}, {0x095E, "\001\106\355\225"}, {0x095F, "\001\106\360\015"}, {0x0960, "\001\106\355\114\205"}, {0x0961, "\001\106\355\206\205"}, {0x0962, "\042\026\106\211\205"}, {0x0963, "\042\026\106\355\206\205"}, {0x0964, "\360\162\106"}, {0x0965, "\070\360\162\106"}, {0x0966, "\024\106\331"}, {0x0967, "\024\106\110"}, {0x0968, "\024\106\127"}, {0x0969, "\024\106\136"}, {0x096A, "\024\106\220"}, {0x096B, "\024\106\230"}, {0x096C, "\024\106\255"}, {0x096D, "\024\106\252"}, {0x096E, "\024\106\226"}, {0x096F, "\024\106\257"}, {0x0970, "\022\106\357\114"}, {0x0981, "\022\121\356\123"}, {0x0982, "\022\121\355\222"}, {0x0983, "\022\121\355\243"}, {0x0985, "\001\121\063"}, {0x0986, "\001\121\323"}, {0x0987, "\001\121\103"}, {0x0988, "\001\121\315"}, {0x0989, "\001\121\113"}, {0x098A, "\001\121\342"}, {0x098B, "\001\121\167\205"}, {0x098C, "\001\121\211\205"}, {0x098F, "\001\121\217"}, {0x0990, "\001\121\307"}, {0x0993, "\001\121\306"}, {0x0994, "\001\121\333"}, {0x0995, "\001\121\240"}, {0x0996, "\001\121\355\054"}, {0x0997, "\001\121\355\017"}, {0x0998, "\001\121\355\106"}, {0x0999, "\001\121\355\066"}, {0x099A, "\001\121\355\024"}, {0x099B, "\001\121\355\240"}, {0x099C, "\001\121\355\104"}, {0x099D, "\001\121\355\251"}, {0x099E, "\001\121\355\201"}, {0x099F, "\001\121\355\100"}, {0x09A0, "\001\121\355\127"}, {0x09A1, "\001\121\355\120"}, {0x09A2, "\001\121\355\160"}, {0x09A3, "\001\121\355\141"}, {0x09A4, "\001\121\311"}, {0x09A5, "\001\121\355\072"}, {0x09A6, "\001\121\355\002"}, {0x09A7, "\001\121\355\162"}, {0x09A8, "\001\121\354"}, {0x09AA, "\001\121\327"}, {0x09AB, "\001\121\355\124"}, {0x09AC, "\001\121\355\052"}, {0x09AD, "\001\121\355\153"}, {0x09AE, "\001\121\277"}, {0x09AF, "\001\121\305"}, {0x09B0, "\001\121\322"}, {0x09B2, "\001\121\033"}, {0x09B6, "\001\121\355\152"}, {0x09B7, "\001\121\355\032"}, {0x09B8, "\001\121\355\004"}, {0x09B9, "\001\121\314"}, {0x09BC, "\022\121\356\227"}, {0x09BE, "\042\026\121\323"}, {0x09BF, "\042\026\121\103"}, {0x09C0, "\042\026\121\315"}, {0x09C1, "\042\026\121\113"}, {0x09C2, "\042\026\121\342"}, {0x09C3, "\042\026\121\167\205"}, {0x09C4, "\042\026\121\355\114\205"}, {0x09C7, "\042\026\121\217"}, {0x09C8, "\042\026\121\307"}, {0x09CB, "\042\026\121\306"}, {0x09CC, "\042\026\121\333"}, {0x09CD, "\022\121\355\242"}, {0x09D7, "\057\007\355\265\121\333"}, {0x09DC, "\001\121\355\212"}, {0x09DD, "\001\121\357\305"}, {0x09DF, "\001\121\360\015"}, {0x09E0, "\001\121\355\114\205"}, {0x09E1, "\001\121\355\206\205"}, {0x09E2, "\042\026\121\211\205"}, {0x09E3, "\042\026\121\355\206\205"}, {0x09E6, "\024\121\331"}, {0x09E7, "\024\121\110"}, {0x09E8, "\024\121\127"}, {0x09E9, "\024\121\136"}, {0x09EA, "\024\121\220"}, {0x09EB, "\024\121\230"}, {0x09EC, "\024\121\255"}, {0x09ED, "\024\121\252"}, {0x09EE, "\024\121\226"}, {0x09EF, "\024\121\257"}, {0x09F0, "\001\121\322\164\246\355\044\371\061"}, {0x09F1, "\001\121\322\164\246\355\044\301"}, {0x09F2, "\057\121\357\316"}, {0x09F3, "\022\121\357\316"}, {0x09F4, "\356\103\355\272\121\110"}, {0x09F5, "\356\103\355\272\121\127"}, {0x09F6, "\356\103\355\272\121\136"}, {0x09F7, "\356\103\355\272\121\220"}, {0x09F8, "\356\103\355\272\121\360\223\355\020\110"}, {0x09F9, "\360\223\355\272\121\356\043"}, {0x09FA, "\362\160\121"}, {0x0A02, "\022\150\363\131"}, {0x0A05, "\001\150\063"}, {0x0A06, "\001\150\323"}, {0x0A07, "\001\150\103"}, {0x0A08, "\001\150\315"}, {0x0A09, "\001\150\113"}, {0x0A0A, "\001\150\342"}, {0x0A0F, "\001\150\355\200"}, {0x0A10, "\001\150\307"}, {0x0A13, "\001\150\306"}, {0x0A14, "\001\150\333"}, {0x0A15, "\001\150\240"}, {0x0A16, "\001\150\355\054"}, {0x0A17, "\001\150\355\017"}, {0x0A18, "\001\150\355\106"}, {0x0A19, "\001\150\355\066"}, {0x0A1A, "\001\150\355\024"}, {0x0A1B, "\001\150\355\240"}, {0x0A1C, "\001\150\355\104"}, {0x0A1D, "\001\150\375\217"}, {0x0A1E, "\001\150\355\201"}, {0x0A1F, "\001\150\355\100"}, {0x0A20, "\001\150\355\127"}, {0x0A21, "\001\150\355\120"}, {0x0A22, "\001\150\355\160"}, {0x0A23, "\001\150\355\141"}, {0x0A24, "\001\150\311"}, {0x0A25, "\001\150\355\072"}, {0x0A26, "\001\150\355\002"}, {0x0A27, "\001\150\355\162"}, {0x0A28, "\001\150\354"}, {0x0A2A, "\001\150\327"}, {0x0A2B, "\001\150\355\124"}, {0x0A2C, "\001\150\355\052"}, {0x0A2D, "\001\150\355\153"}, {0x0A2E, "\001\150\277"}, {0x0A2F, "\001\150\305"}, {0x0A30, "\001\150\322"}, {0x0A32, "\001\150\033"}, {0x0A33, "\001\150\355\263"}, {0x0A35, "\001\150\355\241"}, {0x0A36, "\001\150\355\152"}, {0x0A38, "\001\150\355\004"}, {0x0A39, "\001\150\314"}, {0x0A3C, "\022\150\356\227"}, {0x0A3E, "\042\026\150\323"}, {0x0A3F, "\042\026\150\103"}, {0x0A40, "\042\026\150\315"}, {0x0A41, "\042\026\150\113"}, {0x0A42, "\042\026\150\342"}, {0x0A47, "\042\026\150\355\200"}, {0x0A48, "\042\026\150\307"}, {0x0A4B, "\042\026\150\306"}, {0x0A4C, "\042\026\150\333"}, {0x0A4D, "\022\150\355\242"}, {0x0A59, "\001\150\360\374"}, {0x0A5A, "\001\150\360\275"}, {0x0A5B, "\001\150\355\101"}, {0x0A5C, "\001\150\355\212"}, {0x0A5E, "\001\150\355\225"}, {0x0A66, "\024\150\331"}, {0x0A67, "\024\150\110"}, {0x0A68, "\024\150\127"}, {0x0A69, "\024\150\136"}, {0x0A6A, "\024\150\220"}, {0x0A6B, "\024\150\230"}, {0x0A6C, "\024\150\255"}, {0x0A6D, "\024\150\252"}, {0x0A6E, "\024\150\226"}, {0x0A6F, "\024\150\257"}, {0x0A70, "\375\210\150"}, {0x0A71, "\362\301\150"}, {0x0A72, "\367\227\150"}, {0x0A73, "\372\131\150"}, {0x0A74, "\360\227\372\100\150"}, {0x0A81, "\022\144\356\123"}, {0x0A82, "\022\144\355\222"}, {0x0A83, "\022\144\355\243"}, {0x0A85, "\001\144\063"}, {0x0A86, "\001\144\323"}, {0x0A87, "\001\144\103"}, {0x0A88, "\001\144\315"}, {0x0A89, "\001\144\113"}, {0x0A8A, "\001\144\342"}, {0x0A8B, "\001\144\167\205"}, {0x0A8D, "\042\144\217\355\357"}, {0x0A8F, "\001\144\217"}, {0x0A90, "\001\144\307"}, {0x0A91, "\042\144\064\355\357"}, {0x0A93, "\001\144\306"}, {0x0A94, "\001\144\333"}, {0x0A95, "\001\144\240"}, {0x0A96, "\001\144\355\054"}, {0x0A97, "\001\144\355\017"}, {0x0A98, "\001\144\355\106"}, {0x0A99, "\001\144\355\066"}, {0x0A9A, "\001\144\355\024"}, {0x0A9B, "\001\144\355\240"}, {0x0A9C, "\001\144\355\104"}, {0x0A9D, "\001\144\355\251"}, {0x0A9E, "\001\144\355\201"}, {0x0A9F, "\001\144\355\100"}, {0x0AA0, "\001\144\355\127"}, {0x0AA1, "\001\144\355\120"}, {0x0AA2, "\001\144\355\160"}, {0x0AA3, "\001\144\355\141"}, {0x0AA4, "\001\144\311"}, {0x0AA5, "\001\144\355\072"}, {0x0AA6, "\001\144\355\002"}, {0x0AA7, "\001\144\355\162"}, {0x0AA8, "\001\144\354"}, {0x0AAA, "\001\144\327"}, {0x0AAB, "\001\144\355\124"}, {0x0AAC, "\001\144\355\052"}, {0x0AAD, "\001\144\355\153"}, {0x0AAE, "\001\144\277"}, {0x0AAF, "\001\144\305"}, {0x0AB0, "\001\144\322"}, {0x0AB2, "\001\144\033"}, {0x0AB3, "\001\144\355\263"}, {0x0AB5, "\001\144\355\241"}, {0x0AB6, "\001\144\355\152"}, {0x0AB7, "\001\144\355\032"}, {0x0AB8, "\001\144\355\004"}, {0x0AB9, "\001\144\314"}, {0x0ABC, "\022\144\356\227"}, {0x0ABD, "\022\144\357\067"}, {0x0ABE, "\042\026\144\323"}, {0x0ABF, "\042\026\144\103"}, {0x0AC0, "\042\026\144\315"}, {0x0AC1, "\042\026\144\113"}, {0x0AC2, "\042\026\144\342"}, {0x0AC3, "\042\026\144\167\205"}, {0x0AC4, "\042\026\144\355\114\205"}, {0x0AC5, "\042\026\144\217\355\357"}, {0x0AC7, "\042\026\144\217"}, {0x0AC8, "\042\026\144\307"}, {0x0AC9, "\042\026\144\064\355\357"}, {0x0ACB, "\042\026\144\306"}, {0x0ACC, "\042\026\144\333"}, {0x0ACD, "\022\144\355\242"}, {0x0AD0, "\356\366\144"}, {0x0AE0, "\001\144\355\114\205"}, {0x0AE6, "\363\307\144\331"}, {0x0AE7, "\024\144\110"}, {0x0AE8, "\024\144\127"}, {0x0AE9, "\024\144\136"}, {0x0AEA, "\024\144\220"}, {0x0AEB, "\024\144\230"}, {0x0AEC, "\024\144\255"}, {0x0AED, "\024\144\252"}, {0x0AEE, "\024\144\226"}, {0x0AEF, "\024\144\257"}, {0x0B01, "\022\142\356\123"}, {0x0B02, "\022\142\355\222"}, {0x0B03, "\022\142\355\243"}, {0x0B05, "\001\142\063"}, {0x0B06, "\001\142\323"}, {0x0B07, "\001\142\103"}, {0x0B08, "\001\142\315"}, {0x0B09, "\001\142\113"}, {0x0B0A, "\001\142\342"}, {0x0B0B, "\001\142\167\205"}, {0x0B0C, "\001\142\211\205"}, {0x0B0F, "\001\142\217"}, {0x0B10, "\001\142\307"}, {0x0B13, "\001\142\306"}, {0x0B14, "\001\142\333"}, {0x0B15, "\001\142\240"}, {0x0B16, "\001\142\355\054"}, {0x0B17, "\001\142\355\017"}, {0x0B18, "\001\142\355\106"}, {0x0B19, "\001\142\355\066"}, {0x0B1A, "\001\142\355\024"}, {0x0B1B, "\001\142\355\240"}, {0x0B1C, "\001\142\355\104"}, {0x0B1D, "\001\142\355\251"}, {0x0B1E, "\001\142\355\201"}, {0x0B1F, "\001\142\355\100"}, {0x0B20, "\001\142\355\127"}, {0x0B21, "\001\142\355\120"}, {0x0B22, "\001\142\355\160"}, {0x0B23, "\001\142\355\141"}, {0x0B24, "\001\142\311"}, {0x0B25, "\001\142\355\072"}, {0x0B26, "\001\142\355\002"}, {0x0B27, "\001\142\355\162"}, {0x0B28, "\001\142\354"}, {0x0B2A, "\001\142\327"}, {0x0B2B, "\001\142\355\124"}, {0x0B2C, "\001\142\355\052"}, {0x0B2D, "\001\142\355\153"}, {0x0B2E, "\001\142\277"}, {0x0B2F, "\001\142\305"}, {0x0B30, "\001\142\322"}, {0x0B32, "\001\142\033"}, {0x0B33, "\001\142\355\263"}, {0x0B36, "\001\142\355\152"}, {0x0B37, "\001\142\356\252"}, {0x0B38, "\001\142\355\004"}, {0x0B39, "\001\142\314"}, {0x0B3C, "\022\142\356\227"}, {0x0B3D, "\022\142\357\067"}, {0x0B3E, "\042\026\142\323"}, {0x0B3F, "\042\026\142\103"}, {0x0B40, "\042\026\142\315"}, {0x0B41, "\042\026\142\113"}, {0x0B42, "\042\026\142\342"}, {0x0B43, "\042\026\142\167\205"}, {0x0B47, "\042\026\142\217"}, {0x0B48, "\042\026\142\307"}, {0x0B4B, "\042\026\142\306"}, {0x0B4C, "\042\026\142\333"}, {0x0B4D, "\022\142\355\242"}, {0x0B56, "\057\007\355\265\142\307"}, {0x0B57, "\057\007\355\265\142\333"}, {0x0B5C, "\001\142\355\212"}, {0x0B5D, "\001\142\357\305"}, {0x0B5F, "\001\142\360\015"}, {0x0B60, "\001\142\355\114\205"}, {0x0B61, "\001\142\355\206\205"}, {0x0B66, "\024\142\331"}, {0x0B67, "\024\142\110"}, {0x0B68, "\024\142\127"}, {0x0B69, "\024\142\136"}, {0x0B6A, "\024\142\220"}, {0x0B6B, "\024\142\230"}, {0x0B6C, "\024\142\255"}, {0x0B6D, "\024\142\252"}, {0x0B6E, "\024\142\226"}, {0x0B6F, "\024\142\257"}, {0x0B70, "\362\160\142"}, {0x0B82, "\022\171\355\222"}, {0x0B83, "\022\171\355\243"}, {0x0B85, "\001\171\063"}, {0x0B86, "\001\171\323"}, {0x0B87, "\001\171\103"}, {0x0B88, "\001\171\315"}, {0x0B89, "\001\171\113"}, {0x0B8A, "\001\171\342"}, {0x0B8E, "\001\171\217"}, {0x0B8F, "\001\171\355\200"}, {0x0B90, "\001\171\307"}, {0x0B92, "\001\171\064"}, {0x0B93, "\001\171\306"}, {0x0B94, "\001\171\333"}, {0x0B95, "\001\171\240"}, {0x0B99, "\001\171\355\066"}, {0x0B9A, "\001\171\355\024"}, {0x0B9C, "\001\171\355\104"}, {0x0B9E, "\001\171\355\201"}, {0x0B9F, "\001\171\355\100"}, {0x0BA3, "\001\171\355\141"}, {0x0BA4, "\001\171\311"}, {0x0BA8, "\001\171\354"}, {0x0BA9, "\001\171\361\115"}, {0x0BAA, "\001\171\327"}, {0x0BAE, "\001\171\277"}, {0x0BAF, "\001\171\305"}, {0x0BB0, "\001\171\322"}, {0x0BB1, "\001\171\355\212"}, {0x0BB2, "\001\171\033"}, {0x0BB3, "\001\171\355\263"}, {0x0BB4, "\001\171\357\230"}, {0x0BB5, "\001\171\355\241"}, {0x0BB7, "\001\171\356\252"}, {0x0BB8, "\001\171\355\004"}, {0x0BB9, "\001\171\314"}, {0x0BBE, "\042\026\171\323"}, {0x0BBF, "\042\026\171\103"}, {0x0BC0, "\042\026\171\315"}, {0x0BC1, "\042\026\171\113"}, {0x0BC2, "\042\026\171\342"}, {0x0BC6, "\042\026\171\217"}, {0x0BC7, "\042\026\171\355\200"}, {0x0BC8, "\042\026\171\307"}, {0x0BCA, "\042\026\171\064"}, {0x0BCB, "\042\026\171\306"}, {0x0BCC, "\042\026\171\333"}, {0x0BCD, "\022\171\355\242"}, {0x0BD7, "\057\007\355\265\171\333"}, {0x0BE7, "\024\171\110"}, {0x0BE8, "\024\171\127"}, {0x0BE9, "\024\171\136"}, {0x0BEA, "\024\171\220"}, {0x0BEB, "\024\171\230"}, {0x0BEC, "\024\171\255"}, {0x0BED, "\024\171\252"}, {0x0BEE, "\024\171\226"}, {0x0BEF, "\024\171\257"}, {0x0BF0, "\210\171\355\034"}, {0x0BF1, "\210\171\355\245"}, {0x0BF2, "\210\171\355\271"}, {0x0C01, "\022\141\356\123"}, {0x0C02, "\022\141\355\222"}, {0x0C03, "\022\141\355\243"}, {0x0C05, "\001\141\063"}, {0x0C06, "\001\141\323"}, {0x0C07, "\001\141\103"}, {0x0C08, "\001\141\315"}, {0x0C09, "\001\141\113"}, {0x0C0A, "\001\141\342"}, {0x0C0B, "\001\141\167\205"}, {0x0C0C, "\001\141\211\205"}, {0x0C0E, "\001\141\217"}, {0x0C0F, "\001\141\355\200"}, {0x0C10, "\001\141\307"}, {0x0C12, "\001\141\064"}, {0x0C13, "\001\141\306"}, {0x0C14, "\001\141\333"}, {0x0C15, "\001\141\240"}, {0x0C16, "\001\141\355\054"}, {0x0C17, "\001\141\355\017"}, {0x0C18, "\001\141\355\106"}, {0x0C19, "\001\141\355\066"}, {0x0C1A, "\001\141\355\024"}, {0x0C1B, "\001\141\355\240"}, {0x0C1C, "\001\141\355\104"}, {0x0C1D, "\001\141\355\251"}, {0x0C1E, "\001\141\355\201"}, {0x0C1F, "\001\141\355\100"}, {0x0C20, "\001\141\355\127"}, {0x0C21, "\001\141\355\120"}, {0x0C22, "\001\141\355\160"}, {0x0C23, "\001\141\355\141"}, {0x0C24, "\001\141\311"}, {0x0C25, "\001\141\355\072"}, {0x0C26, "\001\141\355\002"}, {0x0C27, "\001\141\355\162"}, {0x0C28, "\001\141\354"}, {0x0C2A, "\001\141\327"}, {0x0C2B, "\001\141\355\124"}, {0x0C2C, "\001\141\355\052"}, {0x0C2D, "\001\141\355\153"}, {0x0C2E, "\001\141\277"}, {0x0C2F, "\001\141\305"}, {0x0C30, "\001\141\322"}, {0x0C31, "\001\141\355\212"}, {0x0C32, "\001\141\033"}, {0x0C33, "\001\141\355\263"}, {0x0C35, "\001\141\355\241"}, {0x0C36, "\001\141\355\152"}, {0x0C37, "\001\141\355\032"}, {0x0C38, "\001\141\355\004"}, {0x0C39, "\001\141\314"}, {0x0C3E, "\042\026\141\323"}, {0x0C3F, "\042\026\141\103"}, {0x0C40, "\042\026\141\315"}, {0x0C41, "\042\026\141\113"}, {0x0C42, "\042\026\141\342"}, {0x0C43, "\042\026\141\167\205"}, {0x0C44, "\042\026\141\355\114\205"}, {0x0C46, "\042\026\141\130"}, {0x0C47, "\042\026\141\355\200"}, {0x0C48, "\042\026\141\307"}, {0x0C4A, "\042\026\141\064"}, {0x0C4B, "\042\026\141\306"}, {0x0C4C, "\042\026\141\333"}, {0x0C4D, "\022\141\355\242"}, {0x0C55, "\057\007\355\265\141"}, {0x0C56, "\057\007\355\265\141\307"}, {0x0C60, "\001\141\355\114\205"}, {0x0C61, "\001\141\355\206\205"}, {0x0C66, "\024\141\331"}, {0x0C67, "\024\141\110"}, {0x0C68, "\024\141\127"}, {0x0C69, "\024\141\136"}, {0x0C6A, "\024\141\220"}, {0x0C6B, "\024\141\230"}, {0x0C6C, "\024\141\255"}, {0x0C6D, "\024\141\252"}, {0x0C6E, "\024\141\226"}, {0x0C6F, "\024\141\257"}, {0x0C82, "\022\140\355\222"}, {0x0C83, "\022\140\355\243"}, {0x0C85, "\001\140\063"}, {0x0C86, "\001\140\323"}, {0x0C87, "\001\140\103"}, {0x0C88, "\001\140\315"}, {0x0C89, "\001\140\113"}, {0x0C8A, "\001\140\342"}, {0x0C8B, "\001\140\167\205"}, {0x0C8C, "\001\140\211\205"}, {0x0C8E, "\001\140\217"}, {0x0C8F, "\001\140\355\200"}, {0x0C90, "\001\140\307"}, {0x0C92, "\001\140\064"}, {0x0C93, "\001\140\306"}, {0x0C94, "\001\140\333"}, {0x0C95, "\001\140\240"}, {0x0C96, "\001\140\355\054"}, {0x0C97, "\001\140\355\017"}, {0x0C98, "\001\140\355\106"}, {0x0C99, "\001\140\355\066"}, {0x0C9A, "\001\140\355\024"}, {0x0C9B, "\001\140\355\240"}, {0x0C9C, "\001\140\355\104"}, {0x0C9D, "\001\140\355\251"}, {0x0C9E, "\001\140\355\201"}, {0x0C9F, "\001\140\355\100"}, {0x0CA0, "\001\140\355\127"}, {0x0CA1, "\001\140\355\120"}, {0x0CA2, "\001\140\355\160"}, {0x0CA3, "\001\140\355\141"}, {0x0CA4, "\001\140\311"}, {0x0CA5, "\001\140\355\072"}, {0x0CA6, "\001\140\355\002"}, {0x0CA7, "\001\140\355\162"}, {0x0CA8, "\001\140\354"}, {0x0CAA, "\001\140\327"}, {0x0CAB, "\001\140\355\124"}, {0x0CAC, "\001\140\355\052"}, {0x0CAD, "\001\140\355\153"}, {0x0CAE, "\001\140\277"}, {0x0CAF, "\001\140\305"}, {0x0CB0, "\001\140\322"}, {0x0CB1, "\001\140\355\212"}, {0x0CB2, "\001\140\033"}, {0x0CB3, "\001\140\355\263"}, {0x0CB5, "\001\140\355\241"}, {0x0CB6, "\001\140\355\152"}, {0x0CB7, "\001\140\355\032"}, {0x0CB8, "\001\140\355\004"}, {0x0CB9, "\001\140\314"}, {0x0CBE, "\042\026\140\323"}, {0x0CBF, "\042\026\140\103"}, {0x0CC0, "\042\026\140\315"}, {0x0CC1, "\042\026\140\113"}, {0x0CC2, "\042\026\140\342"}, {0x0CC3, "\042\026\140\167\205"}, {0x0CC4, "\042\026\140\355\114\205"}, {0x0CC6, "\042\026\140\217"}, {0x0CC7, "\042\026\140\355\200"}, {0x0CC8, "\042\026\140\307"}, {0x0CCA, "\042\026\140\064"}, {0x0CCB, "\042\026\140\306"}, {0x0CCC, "\042\026\140\333"}, {0x0CCD, "\022\140\355\242"}, {0x0CD5, "\057\007\355\265\140"}, {0x0CD6, "\057\007\355\265\140\307"}, {0x0CDE, "\001\140\355\225"}, {0x0CE0, "\001\140\355\114\205"}, {0x0CE1, "\001\140\355\206\205"}, {0x0CE6, "\024\140\331"}, {0x0CE7, "\024\140\110"}, {0x0CE8, "\024\140\127"}, {0x0CE9, "\024\140\136"}, {0x0CEA, "\024\140\220"}, {0x0CEB, "\024\140\230"}, {0x0CEC, "\024\140\255"}, {0x0CED, "\024\140\252"}, {0x0CEE, "\024\140\226"}, {0x0CEF, "\024\140\257"}, {0x0D02, "\022\145\355\222"}, {0x0D03, "\022\145\355\243"}, {0x0D05, "\001\145\063"}, {0x0D06, "\001\145\323"}, {0x0D07, "\001\145\103"}, {0x0D08, "\001\145\315"}, {0x0D09, "\001\145\113"}, {0x0D0A, "\001\145\342"}, {0x0D0B, "\001\145\167\205"}, {0x0D0C, "\001\145\211\205"}, {0x0D0E, "\001\145\217"}, {0x0D0F, "\001\145\355\200"}, {0x0D10, "\001\145\307"}, {0x0D12, "\001\145\064"}, {0x0D13, "\001\145\306"}, {0x0D14, "\001\145\333"}, {0x0D15, "\001\145\240"}, {0x0D16, "\001\145\355\054"}, {0x0D17, "\001\145\355\017"}, {0x0D18, "\001\145\355\106"}, {0x0D19, "\001\145\355\066"}, {0x0D1A, "\001\145\355\024"}, {0x0D1B, "\001\145\355\240"}, {0x0D1C, "\001\145\355\104"}, {0x0D1D, "\001\145\355\251"}, {0x0D1E, "\001\145\355\201"}, {0x0D1F, "\001\145\355\100"}, {0x0D20, "\001\145\355\127"}, {0x0D21, "\001\145\355\120"}, {0x0D22, "\001\145\355\160"}, {0x0D23, "\001\145\355\141"}, {0x0D24, "\001\145\311"}, {0x0D25, "\001\145\355\072"}, {0x0D26, "\001\145\355\002"}, {0x0D27, "\001\145\355\162"}, {0x0D28, "\001\145\354"}, {0x0D2A, "\001\145\327"}, {0x0D2B, "\001\145\355\124"}, {0x0D2C, "\001\145\355\052"}, {0x0D2D, "\001\145\355\153"}, {0x0D2E, "\001\145\277"}, {0x0D2F, "\001\145\305"}, {0x0D30, "\001\145\322"}, {0x0D31, "\001\145\355\212"}, {0x0D32, "\001\145\033"}, {0x0D33, "\001\145\355\263"}, {0x0D34, "\001\145\357\230"}, {0x0D35, "\001\145\355\241"}, {0x0D36, "\001\145\355\152"}, {0x0D37, "\001\145\355\032"}, {0x0D38, "\001\145\355\004"}, {0x0D39, "\001\145\314"}, {0x0D3E, "\042\026\145\323"}, {0x0D3F, "\042\026\145\103"}, {0x0D40, "\042\026\145\315"}, {0x0D41, "\042\026\145\113"}, {0x0D42, "\042\026\145\342"}, {0x0D43, "\042\026\145\167\205"}, {0x0D46, "\042\026\145\217"}, {0x0D47, "\042\026\145\355\200"}, {0x0D48, "\042\026\145\307"}, {0x0D4A, "\042\026\145\064"}, {0x0D4B, "\042\026\145\306"}, {0x0D4C, "\042\026\145\333"}, {0x0D4D, "\022\145\355\242"}, {0x0D57, "\057\007\355\265\145\333"}, {0x0D60, "\001\145\355\114\205"}, {0x0D61, "\001\145\355\206\205"}, {0x0D66, "\024\145\331"}, {0x0D67, "\024\145\110"}, {0x0D68, "\024\145\127"}, {0x0D69, "\024\145\136"}, {0x0D6A, "\024\145\220"}, {0x0D6B, "\024\145\230"}, {0x0D6C, "\024\145\255"}, {0x0D6D, "\024\145\252"}, {0x0D6E, "\024\145\226"}, {0x0D6F, "\024\145\257"}, {0x0D82, "\022\356\114\362\336"}, {0x0D83, "\022\356\114\376\043"}, {0x0D85, "\001\152\363\014"}, {0x0D86, "\001\152\377\002"}, {0x0D87, "\001\152\376\364"}, {0x0D88, "\001\152\376\365"}, {0x0D89, "\001\152\367\241"}, {0x0D8A, "\001\152\377\047"}, {0x0D8B, "\001\152\372\133"}, {0x0D8C, "\001\152\372\141"}, {0x0D8D, "\001\152\367\230"}, {0x0D8E, "\001\152\367\231"}, {0x0D8F, "\001\152\367\201"}, {0x0D90, "\001\152\367\203"}, {0x0D91, "\001\152\377\041"}, {0x0D92, "\001\152\377\044"}, {0x0D93, "\001\152\363\020"}, {0x0D94, "\001\152\372\137"}, {0x0D95, "\001\152\377\065"}, {0x0D96, "\001\152\362\344"}, {0x0D9A, "\001\152\355\221\360\366"}, {0x0D9B, "\001\152\355\227\360\366"}, {0x0D9C, "\001\152\355\221\357\153"}, {0x0D9D, "\001\152\355\227\357\153"}, {0x0D9E, "\001\152\367\361\361\132"}, {0x0D9F, "\001\152\357\026\357\153"}, {0x0DA0, "\001\152\355\221\361\363"}, {0x0DA1, "\001\152\355\227\361\363"}, {0x0DA2, "\001\152\355\221\357\136"}, {0x0DA3, "\001\152\355\227\357\136"}, {0x0DA4, "\001\152\357\372\361\132"}, {0x0DA5, "\001\152\357\372\374\222\372\061"}, {0x0DA6, "\001\152\357\026\357\136"}, {0x0DA7, "\001\152\355\221\362\047"}, {0x0DA8, "\001\152\355\227\362\047"}, {0x0DA9, "\001\152\355\221\357\127"}, {0x0DAA, "\001\152\355\227\357\127"}, {0x0DAB, "\001\152\357\241\361\106"}, {0x0DAC, "\001\152\357\026\357\127"}, {0x0DAD, "\001\152\355\221\361\357"}, {0x0DAE, "\001\152\355\227\361\357"}, {0x0DAF, "\001\152\355\221\357\124"}, {0x0DB0, "\001\152\355\227\357\124"}, {0x0DB1, "\001\152\357\123\361\106"}, {0x0DB3, "\001\152\357\026\357\124"}, {0x0DB4, "\001\152\355\221\361\161"}, {0x0DB5, "\001\152\355\227\361\161"}, {0x0DB6, "\001\152\355\221\357\070"}, {0x0DB7, "\001\152\355\227\357\070"}, {0x0DB8, "\001\152\370\304"}, {0x0DB9, "\001\152\362\322\357\070"}, {0x0DBA, "\001\152\376\156"}, {0x0DBB, "\001\152\374\044"}, {0x0DBD, "\001\152\357\123\361\023"}, {0x0DC0, "\001\152\376\014"}, {0x0DC1, "\001\152\357\372\377\006"}, {0x0DC2, "\001\152\357\241\363\271"}, {0x0DC3, "\001\152\357\123\374\230"}, {0x0DC4, "\001\152\366\322"}, {0x0DC5, "\001\152\357\241\361\023"}, {0x0DC6, "\001\152\366\051"}, {0x0DCA, "\022\356\114\362\310"}, {0x0DCF, "\042\026\152\360\024"}, {0x0DD0, "\042\026\152\357\224\362\152"}, {0x0DD1, "\042\026\152\356\006\362\152"}, {0x0DD2, "\042\026\152\357\224\360\352"}, {0x0DD3, "\042\026\152\356\006\360\352"}, {0x0DD4, "\042\026\152\357\224\361\232"}, {0x0DD6, "\042\026\152\356\006\361\232"}, {0x0DD8, "\042\026\152\360\310"}, {0x0DD9, "\042\026\152\356\217"}, {0x0DDA, "\042\026\356\114\356\006\356\217"}, {0x0DDB, "\042\026\152\370\036\365\243"}, {0x0DDC, "\042\026\356\114\356\217\357\161\360\024"}, {0x0DDD, "\042\026\152\356\217\357\161\356\006\360\024"}, {0x0DDE, "\042\026\152\356\217\357\161\357\154"}, {0x0DDF, "\042\026\356\114\357\154"}, {0x0DF2, "\042\026\152\356\006\360\310"}, {0x0DF3, "\042\026\152\356\006\357\154"}, {0x0DF4, "\355\234\152\370\044"}, {0x0E01, "\001\153\355\167\367\373"}, {0x0E02, "\001\153\355\261\357\220"}, {0x0E03, "\001\153\355\261\370\007"}, {0x0E04, "\001\153\355\261\370\010"}, {0x0E05, "\001\153\355\261\370\005"}, {0x0E06, "\001\153\355\261\374\036"}, {0x0E07, "\001\153\356\225\371\220"}, {0x0E08, "\001\153\355\277\361\362"}, {0x0E09, "\001\153\355\277\375\135"}, {0x0E0A, "\001\153\355\277\375\130"}, {0x0E0B, "\001\153\355\070\355\070"}, {0x0E0C, "\001\153\355\277\375\146"}, {0x0E0D, "\001\153\355\040\376\164"}, {0x0E0E, "\001\153\355\252\375\126"}, {0x0E0F, "\001\153\355\176\372\165"}, {0x0E10, "\001\153\355\077\357\354"}, {0x0E11, "\001\153\355\077\371\101"}, {0x0E12, "\001\153\355\077\372\220"}, {0x0E13, "\001\153\355\113\371\173"}, {0x0E14, "\001\153\355\252\365\242"}, {0x0E15, "\001\153\355\176\375\102"}, {0x0E16, "\001\153\355\077\375\172"}, {0x0E17, "\001\153\355\077\375\166"}, {0x0E18, "\001\153\355\077\375\170"}, {0x0E19, "\001\153\355\113\355\340"}, {0x0E1A, "\001\153\355\377\363\043"}, {0x0E1B, "\001\153\355\273\372\245"}, {0x0E1C, "\001\153\356\033\372\217"}, {0x0E1D, "\001\153\356\014\355\225"}, {0x0E1E, "\001\153\356\033\372\211"}, {0x0E1F, "\001\153\356\014\366\043"}, {0x0E20, "\001\153\356\033\374\216"}, {0x0E21, "\001\153\355\136\277"}, {0x0E22, "\001\153\355\040\376\152"}, {0x0E23, "\001\153\355\174\374\106"}, {0x0E24, "\001\153\357\315"}, {0x0E25, "\001\153\355\170\361\030"}, {0x0E26, "\001\153\356\352"}, {0x0E27, "\001\153\355\150\362\105"}, {0x0E28, "\001\153\355\070\374\213"}, {0x0E29, "\001\153\355\070\374\112"}, {0x0E2A, "\001\153\355\070\357\333"}, {0x0E2B, "\001\153\355\107\366\346"}, {0x0E2C, "\001\153\355\170\375\145"}, {0x0E2D, "\001\153\064\355\373"}, {0x0E2E, "\001\153\355\107\371\315"}, {0x0E2F, "\001\153\372\171"}, {0x0E30, "\001\153\355\125\063"}, {0x0E31, "\001\153\361\047\366\314\362\306"}, {0x0E32, "\001\153\355\125\323"}, {0x0E33, "\001\153\355\125\356\277"}, {0x0E34, "\001\153\355\125\103"}, {0x0E35, "\001\153\355\125\315"}, {0x0E36, "\001\153\355\125\356\235"}, {0x0E37, "\001\153\355\125\372\134"}, {0x0E38, "\001\153\355\125\113"}, {0x0E39, "\001\153\355\125\342"}, {0x0E3A, "\001\153\372\213"}, {0x0E3F, "\022\355\272\355\147\363\022"}, {0x0E40, "\001\153\355\125\217"}, {0x0E41, "\001\153\355\125\376\366"}, {0x0E42, "\001\153\355\125\064"}, {0x0E43, "\001\153\355\125\307\370\306"}, {0x0E44, "\001\153\355\125\307\370\305"}, {0x0E45, "\001\153\370\127"}, {0x0E46, "\001\153\370\310"}, {0x0E47, "\001\153\370\307"}, {0x0E48, "\001\153\355\270\360\227"}, {0x0E49, "\001\153\355\270\355\077"}, {0x0E4A, "\001\153\355\270\375\254"}, {0x0E4B, "\001\153\355\270\375\132"}, {0x0E4C, "\001\153\375\167"}, {0x0E4D, "\001\153\371\241"}, {0x0E4E, "\001\153\376\153"}, {0x0E4F, "\001\153\366\100"}, {0x0E50, "\024\355\147\331"}, {0x0E51, "\024\355\147\110"}, {0x0E52, "\024\355\147\127"}, {0x0E53, "\024\355\147\136"}, {0x0E54, "\024\355\147\220"}, {0x0E55, "\024\355\147\230"}, {0x0E56, "\024\355\147\255"}, {0x0E57, "\024\355\147\252"}, {0x0E58, "\024\355\147\226"}, {0x0E59, "\024\355\147\257"}, {0x0E5A, "\335\355\147\362\325"}, {0x0E5B, "\335\355\147\370\004"}, {0x0E81, "\001\227\355\167"}, {0x0E82, "\001\227\355\261\356\115"}, {0x0E84, "\001\227\355\261\356\122"}, {0x0E87, "\001\227\356\225"}, {0x0E88, "\001\227\355\277"}, {0x0E8A, "\001\227\355\070\356\122"}, {0x0E8D, "\001\227\357\063"}, {0x0E94, "\001\227\355\252"}, {0x0E95, "\001\227\355\176"}, {0x0E96, "\001\227\355\077\356\115"}, {0x0E97, "\001\227\355\077\356\122"}, {0x0E99, "\001\227\355\113"}, {0x0E9A, "\001\227\355\377"}, {0x0E9B, "\001\227\355\273"}, {0x0E9C, "\001\227\356\033\356\115"}, {0x0E9D, "\001\227\356\014\356\122"}, {0x0E9E, "\001\227\356\033\356\122"}, {0x0E9F, "\001\227\356\014\356\115"}, {0x0EA1, "\001\227\355\136"}, {0x0EA2, "\001\227\355\040"}, {0x0EA3, "\001\227\355\170\361\030"}, {0x0EA5, "\001\227\355\170\370\207"}, {0x0EA7, "\001\227\355\150"}, {0x0EAA, "\001\227\355\070\356\115"}, {0x0EAB, "\001\227\355\107\356\115"}, {0x0EAD, "\001\227\064"}, {0x0EAE, "\001\227\355\107\356\122"}, {0x0EAF, "\251\007\357\345\370\132"}, {0x0EB0, "\042\026\227\063"}, {0x0EB1, "\042\026\227\355\270\367\360"}, {0x0EB2, "\042\026\227\323"}, {0x0EB3, "\042\026\227\356\277"}, {0x0EB4, "\042\026\227\103"}, {0x0EB5, "\042\026\227\315"}, {0x0EB6, "\042\026\227\132"}, {0x0EB7, "\042\026\227\376\003"}, {0x0EB8, "\042\026\227\113"}, {0x0EB9, "\042\026\227\342"}, {0x0EBB, "\042\026\227\355\270\370\037"}, {0x0EBC, "\360\172\026\227\355\170"}, {0x0EBD, "\360\172\026\227\357\063"}, {0x0EC0, "\042\026\227\217"}, {0x0EC1, "\042\026\227\355\200"}, {0x0EC2, "\042\026\227\064"}, {0x0EC3, "\042\026\227\363\012"}, {0x0EC4, "\042\026\227\307"}, {0x0EC6, "\022\355\042\355\167\033"}, {0x0EC8, "\204\007\345\355\042\355\270\377\027"}, {0x0EC9, "\204\007\345\355\042\355\270\355\077"}, {0x0ECA, "\204\007\345\355\042\355\270\355\217"}, {0x0ECB, "\204\007\345\355\042\277\375\131"}, {0x0ECC, "\057\360\153\355\042"}, {0x0ECD, "\022\355\042\371\237"}, {0x0ED0, "\024\355\042\331"}, {0x0ED1, "\024\355\042\110"}, {0x0ED2, "\024\355\042\127"}, {0x0ED3, "\024\355\042\136"}, {0x0ED4, "\024\355\042\220"}, {0x0ED5, "\024\355\042\230"}, {0x0ED6, "\024\355\042\255"}, {0x0ED7, "\024\355\042\252"}, {0x0ED8, "\024\355\042\226"}, {0x0ED9, "\024\355\042\257"}, {0x0EDC, "\022\355\042\355\107\355\113"}, {0x0EDD, "\022\355\042\355\107\355\136"}, {0x0F00, "\002\107\356\366"}, {0x0F01, "\057\120\356\206\355\302\355\207\063\375\260"}, {0x0F02, "\057\120\356\206\355\302\355\207\360\040\361\272\360\071\277"}, {0x0F03, "\057\120\356\206\355\302\355\207\360\040\356\206\356\046\277"}, {0x0F04, "\057\120\355\302\355\207\370\312\277\372\132"}, {0x0F05, "\057\120\355\302\355\207\374\257\277\366\056"}, {0x0F06, "\057\120\356\057\355\302\355\207\361\166\355\274\277"}, {0x0F07, "\057\120\355\302\355\207\356\046\355\274\277"}, {0x0F08, "\057\120\374\233\355\274"}, {0x0F09, "\057\120\363\165\355\302\355\207"}, {0x0F0A, "\057\120\363\142\374\271\355\302\355\207"}, {0x0F0B, "\057\120\367\221\356\046"}, {0x0F0C, "\057\365\356\120\356\046\363\166"}, {0x0F0D, "\057\120\355\274"}, {0x0F0E, "\057\120\360\031\355\274"}, {0x0F0F, "\057\120\356\046\355\274"}, {0x0F10, "\057\120\360\031\356\046\355\274"}, {0x0F11, "\057\120\374\065\363\275\374\367\355\274"}, {0x0F12, "\057\120\361\261\360\300\355\274"}, {0x0F13, "\057\120\356\057\360\216\355\213\355\334\355\264\361\362"}, {0x0F14, "\057\120\356\206\356\046"}, {0x0F15, "\361\035\375\201\363\254\355\213"}, {0x0F16, "\361\035\120\370\152\355\213"}, {0x0F17, "\057\120\357\066\374\261\366\146\362\161\355\213"}, {0x0F18, "\057\120\357\066\362\163\327"}, {0x0F19, "\057\120\357\066\374\237\375\264"}, {0x0F1A, "\057\120\355\346\356\323\360\262"}, {0x0F1B, "\057\120\355\346\356\323\360\315"}, {0x0F1C, "\057\120\355\346\356\323\357\157"}, {0x0F1D, "\057\120\355\346\356\360\360\262"}, {0x0F1E, "\057\120\355\346\356\360\360\315"}, {0x0F1F, "\057\120\355\346\356\323\355\346\356\360"}, {0x0F20, "\024\120\331"}, {0x0F21, "\024\120\110"}, {0x0F22, "\024\120\127"}, {0x0F23, "\024\120\136"}, {0x0F24, "\024\120\220"}, {0x0F25, "\024\120\230"}, {0x0F26, "\024\120\255"}, {0x0F27, "\024\120\252"}, {0x0F28, "\024\120\226"}, {0x0F29, "\024\120\257"}, {0x0F2A, "\024\120\110\355\020\110\355\133"}, {0x0F2B, "\024\120\127\355\020\110\355\133"}, {0x0F2C, "\024\120\136\355\020\110\355\133"}, {0x0F2D, "\024\120\220\355\020\110\355\133"}, {0x0F2E, "\024\120\230\355\020\110\355\133"}, {0x0F2F, "\024\120\255\355\020\110\355\133"}, {0x0F30, "\024\120\252\355\020\110\355\133"}, {0x0F31, "\024\120\226\355\020\110\355\133"}, {0x0F32, "\024\120\257\355\020\110\355\133"}, {0x0F33, "\024\120\331\355\020\110\355\133"}, {0x0F34, "\057\120\363\164\355\213"}, {0x0F35, "\057\120\361\110\360\103\360\030\362\142"}, {0x0F36, "\057\120\356\057\360\216\355\213\360\102\361\054\356\150"}, {0x0F37, "\057\120\361\110\360\103\374\260\355\213"}, {0x0F38, "\057\120\356\151\355\207"}, {0x0F39, "\057\120\355\177\362\164"}, {0x0F3A, "\057\120\360\302\355\213\360\307"}, {0x0F3B, "\057\120\360\302\355\213\360\306"}, {0x0F3C, "\057\120\355\373\360\372\360\307"}, {0x0F3D, "\057\120\355\373\360\372\360\306"}, {0x0F3E, "\057\120\376\154\362\044"}, {0x0F3F, "\057\120\370\267\362\044"}, {0x0F40, "\001\107\240"}, {0x0F41, "\001\107\355\054"}, {0x0F42, "\001\107\355\017"}, {0x0F43, "\001\107\355\106"}, {0x0F44, "\001\107\355\066"}, {0x0F45, "\001\107\357\073"}, {0x0F46, "\001\107\355\032"}, {0x0F47, "\001\107\357\206"}, {0x0F49, "\001\107\355\201"}, {0x0F4A, "\001\107\355\100"}, {0x0F4B, "\001\107\355\127"}, {0x0F4C, "\001\107\355\120"}, {0x0F4D, "\001\107\355\160"}, {0x0F4E, "\001\107\355\141"}, {0x0F4F, "\001\107\311"}, {0x0F50, "\001\107\355\072"}, {0x0F51, "\001\107\355\002"}, {0x0F52, "\001\107\355\162"}, {0x0F53, "\001\107\354"}, {0x0F54, "\001\107\327"}, {0x0F55, "\001\107\355\124"}, {0x0F56, "\001\107\355\052"}, {0x0F57, "\001\107\355\153"}, {0x0F58, "\001\107\277"}, {0x0F59, "\001\107\355\177"}, {0x0F5A, "\001\107\362\043"}, {0x0F5B, "\001\107\356\065"}, {0x0F5C, "\001\107\360\214"}, {0x0F5D, "\001\107\355\050"}, {0x0F5E, "\001\107\355\365"}, {0x0F5F, "\001\107\355\101"}, {0x0F60, "\001\107\360\035"}, {0x0F61, "\001\107\305"}, {0x0F62, "\001\107\322"}, {0x0F63, "\001\107\033"}, {0x0F64, "\001\107\357\325"}, {0x0F65, "\001\107\356\252"}, {0x0F66, "\001\107\355\004"}, {0x0F67, "\001\107\314"}, {0x0F68, "\001\107\063"}, {0x0F69, "\001\107\357\223"}, {0x0F6A, "\001\107\322\044\263\356\201"}, {0x0F71, "\042\026\107\323"}, {0x0F72, "\042\026\107\103"}, {0x0F73, "\042\026\107\315"}, {0x0F74, "\042\026\107\113"}, {0x0F75, "\042\026\107\342"}, {0x0F76, "\042\026\107\167\205"}, {0x0F77, "\042\026\107\355\114\205"}, {0x0F78, "\042\026\107\211\205"}, {0x0F79, "\042\026\107\355\206\205"}, {0x0F7A, "\042\026\107\217"}, {0x0F7B, "\042\026\107\355\200"}, {0x0F7C, "\042\026\107\064"}, {0x0F7D, "\042\026\107\306"}, {0x0F7E, "\057\120\374\102\355\070\355\066\355\174"}, {0x0F7F, "\057\120\361\272\360\071"}, {0x0F80, "\042\026\103\355\013"}, {0x0F81, "\042\026\315\355\013"}, {0x0F82, "\057\120\360\030\362\142\361\131\355\002"}, {0x0F83, "\057\120\374\341\370\142"}, {0x0F84, "\057\120\366\311"}, {0x0F85, "\057\120\372\152"}, {0x0F86, "\057\120\370\141\355\213"}, {0x0F87, "\057\120\360\011\355\213"}, {0x0F88, "\057\120\370\140\355\177\356\150"}, {0x0F89, "\057\120\370\311\356\150"}, {0x0F8A, "\057\120\360\301\356\150\361\262"}, {0x0F8B, "\057\120\360\301\370\313\361\262"}, {0x0F90, "\001\107\240\236"}, {0x0F91, "\001\107\355\054\236"}, {0x0F92, "\001\107\355\017\236"}, {0x0F93, "\001\107\355\106\236"}, {0x0F94, "\001\107\355\066\236"}, {0x0F95, "\001\107\357\073\236"}, {0x0F96, "\001\107\355\032\236"}, {0x0F97, "\001\107\357\206\236"}, {0x0F99, "\001\107\377\050"}, {0x0F9A, "\001\107\355\100\236"}, {0x0F9B, "\001\107\355\127\236"}, {0x0F9C, "\001\107\355\120\236"}, {0x0F9D, "\001\107\355\160\236"}, {0x0F9E, "\001\107\355\141\236"}, {0x0F9F, "\001\107\311\236"}, {0x0FA0, "\001\107\355\072\236"}, {0x0FA1, "\001\107\355\002\236"}, {0x0FA2, "\001\107\355\162\236"}, {0x0FA3, "\001\107\354\236"}, {0x0FA4, "\001\107\327\236"}, {0x0FA5, "\001\107\355\124\236"}, {0x0FA6, "\001\107\355\052\236"}, {0x0FA7, "\001\107\355\153\236"}, {0x0FA8, "\001\107\277\236"}, {0x0FA9, "\001\107\355\177\236"}, {0x0FAA, "\001\107\362\043\236"}, {0x0FAB, "\001\107\356\065\236"}, {0x0FAC, "\001\107\360\214\236"}, {0x0FAD, "\001\107\355\050\236"}, {0x0FAE, "\001\107\355\365\236"}, {0x0FAF, "\001\107\355\101\236"}, {0x0FB0, "\001\107\360\035\236"}, {0x0FB1, "\001\107\305\236"}, {0x0FB2, "\001\107\322\236"}, {0x0FB3, "\001\107\033\236"}, {0x0FB4, "\001\107\357\325\375\363"}, {0x0FB5, "\001\107\356\252\236"}, {0x0FB6, "\001\107\355\004\236"}, {0x0FB7, "\001\107\314\236"}, {0x0FB8, "\001\107\063\236"}, {0x0FB9, "\001\107\357\223\236\357\223"}, {0x0FBA, "\001\107\355\050\236\044\263\356\201"}, {0x0FBB, "\001\107\236\305\044\263\356\201"}, {0x0FBC, "\001\107\236\322\044\263\356\201"}, {0x0FBE, "\057\120\356\021\356\037\355\054"}, {0x0FBF, "\057\120\356\021\356\037\355\054\360\102\361\054\356\150"}, {0x0FC0, "\057\120\007\356\306\361\376\366\103"}, {0x0FC1, "\057\120\007\356\306\361\376\366\041"}, {0x0FC2, "\057\120\007\356\306\363\231\375\155"}, {0x0FC3, "\374\315\120\007\356\306\374\234\363\216"}, {0x0FC4, "\022\120\365\331\356\003"}, {0x0FC5, "\022\120\361\251\361\271"}, {0x0FC6, "\022\120\372\146\366\147"}, {0x0FC7, "\022\120\361\251\361\271\361\261\360\300"}, {0x0FC8, "\022\120\361\166\327"}, {0x0FC9, "\022\120\356\363\356\003"}, {0x0FCA, "\022\120\356\363\356\003\360\031\362\162"}, {0x0FCB, "\022\120\356\363\356\003\357\157\360\037"}, {0x0FCC, "\022\120\356\363\355\377\363\103\360\037"}, {0x0FCF, "\057\120\355\346\356\360\357\157"}, {0x1000, "\001\176\240"}, {0x1001, "\001\176\355\054"}, {0x1002, "\001\176\355\017"}, {0x1003, "\001\176\355\106"}, {0x1004, "\001\176\355\066"}, {0x1005, "\001\176\355\024"}, {0x1006, "\001\176\355\240"}, {0x1007, "\001\176\355\104"}, {0x1008, "\001\176\355\251"}, {0x1009, "\001\176\355\201"}, {0x100A, "\001\176\377\055"}, {0x100B, "\001\176\355\100"}, {0x100C, "\001\176\355\127"}, {0x100D, "\001\176\355\120"}, {0x100E, "\001\176\355\160"}, {0x100F, "\001\176\355\141"}, {0x1010, "\001\176\311"}, {0x1011, "\001\176\355\072"}, {0x1012, "\001\176\355\002"}, {0x1013, "\001\176\355\162"}, {0x1014, "\001\176\354"}, {0x1015, "\001\176\327"}, {0x1016, "\001\176\355\124"}, {0x1017, "\001\176\355\052"}, {0x1018, "\001\176\355\153"}, {0x1019, "\001\176\277"}, {0x101A, "\001\176\305"}, {0x101B, "\001\176\322"}, {0x101C, "\001\176\033"}, {0x101D, "\001\176\355\050"}, {0x101E, "\001\176\355\004"}, {0x101F, "\001\176\314"}, {0x1020, "\001\176\355\263"}, {0x1021, "\001\176\323"}, {0x1023, "\001\176\103"}, {0x1024, "\001\176\315"}, {0x1025, "\001\176\113"}, {0x1026, "\001\176\342"}, {0x1027, "\001\176\217"}, {0x1029, "\001\176\064"}, {0x102A, "\001\176\333"}, {0x102C, "\042\026\176\323"}, {0x102D, "\042\026\176\103"}, {0x102E, "\042\026\176\315"}, {0x102F, "\042\026\176\113"}, {0x1030, "\042\026\176\342"}, {0x1031, "\042\026\176\217"}, {0x1032, "\042\026\176\307"}, {0x1036, "\022\355\031\355\222"}, {0x1037, "\037\043\355\031"}, {0x1038, "\355\243\355\031"}, {0x1039, "\022\355\031\355\242"}, {0x1040, "\024\355\031\331"}, {0x1041, "\024\355\031\110"}, {0x1042, "\024\355\031\127"}, {0x1043, "\024\355\031\136"}, {0x1044, "\024\355\031\220"}, {0x1045, "\024\355\031\230"}, {0x1046, "\024\355\031\255"}, {0x1047, "\024\355\031\252"}, {0x1048, "\024\355\031\226"}, {0x1049, "\024\355\031\257"}, {0x104A, "\057\355\031\355\142\361\305"}, {0x104B, "\057\355\031\361\305"}, {0x104C, "\022\355\031\370\200"}, {0x104D, "\022\355\031\362\300"}, {0x104E, "\022\355\031\370\143"}, {0x104F, "\022\355\031\366\300"}, {0x1050, "\001\176\355\152"}, {0x1051, "\001\176\355\032"}, {0x1052, "\001\176\167\205"}, {0x1053, "\001\176\355\114\205"}, {0x1054, "\001\176\211\205"}, {0x1055, "\001\176\355\206\205"}, {0x1056, "\042\026\176\167\205"}, {0x1057, "\042\026\176\355\114\205"}, {0x1058, "\042\026\176\211\205"}, {0x1059, "\042\026\176\355\206\205"}, {0x10A0, "\001\146\253\357\064"}, {0x10A1, "\001\146\253\360\066"}, {0x10A2, "\001\146\253\360\257"}, {0x10A3, "\001\146\253\360\211"}, {0x10A4, "\001\146\253\377\016"}, {0x10A5, "\001\146\253\360\002"}, {0x10A6, "\001\146\253\362\150"}, {0x10A7, "\001\146\253\357\354"}, {0x10A8, "\001\146\253\357\175"}, {0x10A9, "\001\146\253\360\364"}, {0x10AA, "\001\146\253\361\022"}, {0x10AB, "\001\146\253\357\231"}, {0x10AC, "\001\146\253\361\105"}, {0x10AD, "\001\146\253\357\256"}, {0x10AE, "\001\146\253\372\143"}, {0x10AF, "\001\146\253\360\356"}, {0x10B0, "\001\146\253\374\047"}, {0x10B1, "\001\146\253\361\302"}, {0x10B2, "\001\146\253\361\351"}, {0x10B3, "\001\146\253\361\146"}, {0x10B4, "\001\146\253\361\165"}, {0x10B5, "\001\146\253\360\373"}, {0x10B6, "\001\146\253\360\274"}, {0x10B7, "\001\146\253\361\237"}, {0x10B8, "\001\146\253\357\077"}, {0x10B9, "\001\146\253\361\365"}, {0x10BA, "\001\146\253\362\045"}, {0x10BB, "\001\146\253\360\215"}, {0x10BC, "\001\146\253\362\041"}, {0x10BD, "\001\146\253\361\361"}, {0x10BE, "\001\146\253\357\217"}, {0x10BF, "\001\146\253\360\204"}, {0x10C0, "\001\146\253\360\320"}, {0x10C1, "\001\146\253\362\153"}, {0x10C2, "\001\146\253\360\353"}, {0x10C3, "\001\146\253\362\073"}, {0x10C4, "\001\146\253\360\316"}, {0x10C5, "\001\146\253\360\333"}, {0x10D0, "\001\146\250\357\064"}, {0x10D1, "\001\146\250\360\066"}, {0x10D2, "\001\146\250\360\257"}, {0x10D3, "\001\146\250\360\211"}, {0x10D4, "\001\146\250\377\017"}, {0x10D5, "\001\146\250\360\002"}, {0x10D6, "\001\146\250\362\150"}, {0x10D7, "\001\146\250\357\354"}, {0x10D8, "\001\146\250\357\175"}, {0x10D9, "\001\146\250\360\364"}, {0x10DA, "\001\146\250\361\022"}, {0x10DB, "\001\146\250\357\231"}, {0x10DC, "\001\146\250\361\105"}, {0x10DD, "\001\146\250\357\256"}, {0x10DE, "\001\146\250\355\232"}, {0x10DF, "\001\146\250\360\356"}, {0x10E0, "\001\146\250\374\033"}, {0x10E1, "\001\146\250\361\302"}, {0x10E2, "\001\146\250\361\351"}, {0x10E3, "\001\146\250\361\146"}, {0x10E4, "\001\146\250\361\165"}, {0x10E5, "\001\146\250\360\373"}, {0x10E6, "\001\146\250\360\274"}, {0x10E7, "\001\146\250\361\237"}, {0x10E8, "\001\146\250\357\077"}, {0x10E9, "\001\146\250\361\365"}, {0x10EA, "\001\146\250\362\045"}, {0x10EB, "\001\146\250\360\215"}, {0x10EC, "\001\146\250\362\041"}, {0x10ED, "\001\146\250\361\361"}, {0x10EE, "\001\146\250\357\217"}, {0x10EF, "\001\146\250\360\204"}, {0x10F0, "\001\146\250\360\320"}, {0x10F1, "\001\146\250\362\153"}, {0x10F2, "\001\146\250\360\353"}, {0x10F3, "\001\146\250\362\073"}, {0x10F4, "\001\146\250\360\316"}, {0x10F5, "\001\146\250\360\333"}, {0x10F6, "\001\146\250\356\200"}, {0x10FB, "\355\045\007\357\266\366\302"}, {0x1100, "\014\117\355\333"}, {0x1101, "\014\117\357\040"}, {0x1102, "\014\117\355\337"}, {0x1103, "\014\117\355\360"}, {0x1104, "\014\117\357\340"}, {0x1105, "\014\117\355\350"}, {0x1106, "\014\117\355\335"}, {0x1107, "\014\117\355\345"}, {0x1108, "\014\117\357\336"}, {0x1109, "\014\117\355\351"}, {0x110A, "\014\117\357\041"}, {0x110B, "\014\117\355\327"}, {0x110C, "\014\117\355\276"}, {0x110D, "\014\117\357\337"}, {0x110E, "\014\117\355\356"}, {0x110F, "\014\117\355\330"}, {0x1110, "\014\117\355\355"}, {0x1111, "\014\117\355\344"}, {0x1112, "\014\117\355\325"}, {0x1113, "\014\117\361\111"}, {0x1114, "\014\117\361\335"}, {0x1115, "\014\117\357\247"}, {0x1116, "\014\117\371\247"}, {0x1117, "\014\117\362\006"}, {0x1118, "\014\117\361\264"}, {0x1119, "\014\117\361\336"}, {0x111A, "\014\117\357\023"}, {0x111B, "\014\117\367\363"}, {0x111C, "\014\117\357\235"}, {0x111D, "\014\117\357\213"}, {0x111E, "\014\117\361\172"}, {0x111F, "\014\117\372\237"}, {0x1120, "\014\117\361\200"}, {0x1121, "\014\117\357\002"}, {0x1122, "\014\117\361\174"}, {0x1123, "\014\117\361\175"}, {0x1124, "\014\117\372\241"}, {0x1125, "\014\117\372\243"}, {0x1126, "\014\117\372\242"}, {0x1127, "\014\117\361\177"}, {0x1128, "\014\117\372\244"}, {0x1129, "\014\117\361\176"}, {0x112A, "\014\117\361\173"}, {0x112B, "\014\117\357\215"}, {0x112C, "\014\117\360\365"}, {0x112D, "\014\117\357\326"}, {0x112E, "\014\117\361\320"}, {0x112F, "\014\117\357\330"}, {0x1130, "\014\117\361\321"}, {0x1131, "\014\117\374\330"}, {0x1132, "\014\117\357\327"}, {0x1133, "\014\117\374\332"}, {0x1134, "\014\117\374\333"}, {0x1135, "\014\117\374\326"}, {0x1136, "\014\117\361\322"}, {0x1137, "\014\117\374\335"}, {0x1138, "\014\117\374\327"}, {0x1139, "\014\117\374\334"}, {0x113A, "\014\117\374\331"}, {0x113B, "\014\117\374\325"}, {0x113C, "\014\117\375\117"}, {0x113D, "\014\117\375\120"}, {0x113E, "\014\117\375\140"}, {0x113F, "\014\117\375\141"}, {0x1140, "\014\117\357\265"}, {0x1141, "\014\117\360\354"}, {0x1142, "\014\117\367\254"}, {0x1143, "\014\117\367\243"}, {0x1144, "\014\117\367\246"}, {0x1145, "\014\117\367\247"}, {0x1146, "\014\117\367\245"}, {0x1147, "\014\117\357\335"}, {0x1148, "\014\117\367\253"}, {0x1149, "\014\117\367\252"}, {0x114A, "\014\117\367\251"}, {0x114B, "\014\117\367\244"}, {0x114C, "\014\117\360\012"}, {0x114D, "\014\117\375\136"}, {0x114E, "\014\117\375\123"}, {0x114F, "\014\117\375\121"}, {0x1150, "\014\117\375\144"}, {0x1151, "\014\117\375\142"}, {0x1152, "\014\117\375\125"}, {0x1153, "\014\117\375\124"}, {0x1154, "\014\117\375\122"}, {0x1155, "\014\117\375\143"}, {0x1156, "\014\117\361\151"}, {0x1157, "\014\117\357\214"}, {0x1158, "\014\117\361\334"}, {0x1159, "\014\117\360\013"}, {0x115F, "\356\145\014\117"}, {0x1160, "\356\145\014\163"}, {0x1161, "\014\163\063"}, {0x1162, "\014\163\356\136"}, {0x1163, "\014\163\305"}, {0x1164, "\014\163\360\016"}, {0x1165, "\014\163\064"}, {0x1166, "\014\163\217"}, {0x1167, "\014\163\355\040"}, {0x1168, "\014\163\355\303"}, {0x1169, "\014\163\306"}, {0x116A, "\014\163\355\050"}, {0x116B, "\014\163\360\010"}, {0x116C, "\014\163\356\011"}, {0x116D, "\014\163\356\273"}, {0x116E, "\014\163\113"}, {0x116F, "\014\163\355\150"}, {0x1170, "\014\163\356\271"}, {0x1171, "\014\163\355\362"}, {0x1172, "\014\163\355\151"}, {0x1173, "\014\163\360\033"}, {0x1174, "\014\163\360\034"}, {0x1175, "\014\163\103"}, {0x1176, "\014\163\362\270"}, {0x1177, "\014\163\362\267"}, {0x1178, "\014\163\376\151"}, {0x1179, "\014\163\376\150"}, {0x117A, "\014\163\372\065"}, {0x117B, "\014\163\372\064"}, {0x117C, "\014\163\372\066"}, {0x117D, "\014\163\376\170"}, {0x117E, "\014\163\376\167"}, {0x117F, "\014\163\377\056"}, {0x1180, "\014\163\377\061"}, {0x1181, "\014\163\377\060"}, {0x1182, "\014\163\377\062"}, {0x1183, "\014\163\377\057"}, {0x1184, "\014\163\362\136"}, {0x1185, "\014\163\362\137"}, {0x1186, "\014\163\376\232"}, {0x1187, "\014\163\376\233"}, {0x1188, "\014\163\362\135"}, {0x1189, "\014\163\372\117"}, {0x118A, "\014\163\372\123"}, {0x118B, "\014\163\372\120"}, {0x118C, "\014\163\372\122"}, {0x118D, "\014\163\372\121"}, {0x118E, "\014\163\376\173"}, {0x118F, "\014\163\376\174"}, {0x1190, "\014\163\376\176"}, {0x1191, "\014\163\362\121"}, {0x1192, "\014\163\362\122"}, {0x1193, "\014\163\376\175"}, {0x1194, "\014\163\362\120"}, {0x1195, "\014\163\377\066"}, {0x1196, "\014\163\377\067"}, {0x1197, "\014\163\377\070"}, {0x1198, "\014\163\367\164"}, {0x1199, "\014\163\367\167"}, {0x119A, "\014\163\367\170"}, {0x119B, "\014\163\367\166"}, {0x119C, "\014\163\367\171"}, {0x119D, "\014\163\367\165"}, {0x119E, "\014\163\360\053"}, {0x119F, "\014\163\362\367"}, {0x11A0, "\014\163\362\370"}, {0x11A1, "\014\163\362\366"}, {0x11A2, "\014\163\374\371"}, {0x11A8, "\014\133\355\333"}, {0x11A9, "\014\133\357\040"}, {0x11AA, "\014\133\357\221"}, {0x11AB, "\014\133\355\337"}, {0x11AC, "\014\133\357\246"}, {0x11AD, "\014\133\357\245"}, {0x11AE, "\014\133\355\360"}, {0x11AF, "\014\133\355\350"}, {0x11B0, "\014\133\357\307"}, {0x11B1, "\014\133\357\310"}, {0x11B2, "\014\133\357\312"}, {0x11B3, "\014\133\357\313"}, {0x11B4, "\014\133\357\314"}, {0x11B5, "\014\133\357\311"}, {0x11B6, "\014\133\357\023"}, {0x11B7, "\014\133\355\335"}, {0x11B8, "\014\133\355\345"}, {0x11B9, "\014\133\357\002"}, {0x11BA, "\014\133\355\351"}, {0x11BB, "\014\133\357\041"}, {0x11BC, "\014\133\355\327"}, {0x11BD, "\014\133\355\276"}, {0x11BE, "\014\133\355\356"}, {0x11BF, "\014\133\355\330"}, {0x11C0, "\014\133\355\355"}, {0x11C1, "\014\133\355\344"}, {0x11C2, "\014\133\355\325"}, {0x11C3, "\014\133\370\024"}, {0x11C4, "\014\133\370\025"}, {0x11C5, "\014\133\361\111"}, {0x11C6, "\014\133\357\247"}, {0x11C7, "\014\133\361\113"}, {0x11C8, "\014\133\361\112"}, {0x11C9, "\014\133\371\250"}, {0x11CA, "\014\133\362\006"}, {0x11CB, "\014\133\375\205"}, {0x11CC, "\014\133\361\263"}, {0x11CD, "\014\133\361\264"}, {0x11CE, "\014\133\361\267"}, {0x11CF, "\014\133\374\101"}, {0x11D0, "\014\133\361\336"}, {0x11D1, "\014\133\374\075"}, {0x11D2, "\014\133\374\076"}, {0x11D3, "\014\133\361\266"}, {0x11D4, "\014\133\374\077"}, {0x11D5, "\014\133\374\074"}, {0x11D6, "\014\133\374\100"}, {0x11D7, "\014\133\361\265"}, {0x11D8, "\014\133\374\073"}, {0x11D9, "\014\133\361\270"}, {0x11DA, "\014\133\370\376"}, {0x11DB, "\014\133\370\377"}, {0x11DC, "\014\133\357\235"}, {0x11DD, "\014\133\361\057"}, {0x11DE, "\014\133\371\001"}, {0x11DF, "\014\133\361\056"}, {0x11E0, "\014\133\371\002"}, {0x11E1, "\014\133\370\375"}, {0x11E2, "\014\133\357\213"}, {0x11E3, "\014\133\372\240"}, {0x11E4, "\014\133\361\173"}, {0x11E5, "\014\133\372\236"}, {0x11E6, "\014\133\357\215"}, {0x11E7, "\014\133\357\326"}, {0x11E8, "\014\133\357\330"}, {0x11E9, "\014\133\361\321"}, {0x11EA, "\014\133\357\327"}, {0x11EB, "\014\133\357\265"}, {0x11EC, "\014\133\360\354"}, {0x11ED, "\014\133\367\250"}, {0x11EE, "\014\133\357\335"}, {0x11EF, "\014\133\367\242"}, {0x11F0, "\014\133\360\012"}, {0x11F1, "\014\133\362\113"}, {0x11F2, "\014\133\362\112"}, {0x11F3, "\014\133\361\151"}, {0x11F4, "\014\133\357\214"}, {0x11F5, "\014\133\366\352"}, {0x11F6, "\014\133\366\354"}, {0x11F7, "\014\133\366\351"}, {0x11F8, "\014\133\366\353"}, {0x11F9, "\014\133\360\013"}, {0x1200, "\002\023\367\156"}, {0x1201, "\002\023\360\332"}, {0x1202, "\002\023\355\255"}, {0x1203, "\002\023\314"}, {0x1204, "\002\023\356\016"}, {0x1205, "\002\023\356\072"}, {0x1206, "\002\023\355\107"}, {0x1208, "\002\023\370\236"}, {0x1209, "\002\023\356\352"}, {0x120A, "\002\023\356\077"}, {0x120B, "\002\023\033"}, {0x120C, "\002\023\356\222"}, {0x120D, "\002\023\050"}, {0x120E, "\002\023\355\170"}, {0x120F, "\002\023\370\226"}, {0x1210, "\002\023\366\340"}, {0x1211, "\002\023\366\336"}, {0x1212, "\002\023\366\334"}, {0x1213, "\002\023\366\331"}, {0x1214, "\002\023\366\342"}, {0x1215, "\002\023\366\332"}, {0x1216, "\002\023\366\335"}, {0x1217, "\002\023\366\337"}, {0x1218, "\002\023\371\053"}, {0x1219, "\002\023\356\224"}, {0x121A, "\002\023\355\230"}, {0x121B, "\002\023\277"}, {0x121C, "\002\023\356\356"}, {0x121D, "\002\023\355\334"}, {0x121E, "\002\023\355\136"}, {0x121F, "\002\023\371\044"}, {0x1220, "\002\023\377\014"}, {0x1221, "\002\023\377\012"}, {0x1222, "\002\023\377\010"}, {0x1223, "\002\023\355\152"}, {0x1224, "\002\023\377\015"}, {0x1225, "\002\023\377\007"}, {0x1226, "\002\023\377\011"}, {0x1227, "\002\023\377\013"}, {0x1228, "\002\023\374\166"}, {0x1229, "\002\023\357\315"}, {0x122A, "\002\023\355\347"}, {0x122B, "\002\023\322"}, {0x122C, "\002\023\356\040"}, {0x122D, "\002\023\356\035"}, {0x122E, "\002\023\355\174"}, {0x122F, "\002\023\374\156"}, {0x1230, "\002\023\375\063"}, {0x1231, "\002\023\357\034"}, {0x1232, "\002\023\355\275"}, {0x1233, "\002\023\355\004"}, {0x1234, "\002\023\356\121"}, {0x1235, "\002\023\356\042"}, {0x1236, "\002\023\355\070"}, {0x1237, "\002\023\375\051"}, {0x1238, "\002\023\363\334"}, {0x1239, "\002\023\360\120"}, {0x123A, "\002\023\356\310"}, {0x123B, "\002\023\355\032"}, {0x123C, "\002\023\356\311"}, {0x123D, "\002\023\356\151"}, {0x123E, "\002\023\356\054"}, {0x123F, "\002\023\363\325"}, {0x1240, "\002\023\374\023"}, {0x1241, "\002\023\373\362"}, {0x1242, "\002\023\357\301"}, {0x1243, "\002\023\356\245"}, {0x1244, "\002\023\374\027"}, {0x1245, "\002\023\373\334"}, {0x1246, "\002\023\357\302"}, {0x1248, "\002\023\374\013"}, {0x124A, "\002\023\374\012"}, {0x124B, "\002\023\374\010"}, {0x124C, "\002\023\374\014"}, {0x124D, "\002\023\374\011"}, {0x1250, "\002\023\373\347"}, {0x1251, "\002\023\373\341"}, {0x1252, "\002\023\373\337"}, {0x1253, "\002\023\373\335"}, {0x1254, "\002\023\373\350"}, {0x1255, "\002\023\373\336"}, {0x1256, "\002\023\373\340"}, {0x1258, "\002\023\373\345"}, {0x125A, "\002\023\373\344"}, {0x125B, "\002\023\373\342"}, {0x125C, "\002\023\373\346"}, {0x125D, "\002\023\373\343"}, {0x1260, "\002\023\363\207"}, {0x1261, "\002\023\363\152"}, {0x1262, "\002\023\356\304"}, {0x1263, "\002\023\355\052"}, {0x1264, "\002\023\356\147"}, {0x1265, "\002\023\356\142"}, {0x1266, "\002\023\355\377"}, {0x1267, "\002\023\363\200"}, {0x1268, "\002\023\376\071"}, {0x1269, "\002\023\376\053"}, {0x126A, "\002\023\360\001"}, {0x126B, "\002\023\355\241"}, {0x126C, "\002\023\357\054"}, {0x126D, "\002\023\357\053"}, {0x126E, "\002\023\356\132"}, {0x126F, "\002\023\376\062"}, {0x1270, "\002\023\375\353"}, {0x1271, "\002\023\375\234"}, {0x1272, "\002\023\355\217"}, {0x1273, "\002\023\311"}, {0x1274, "\002\023\355\301"}, {0x1275, "\002\023\356\125"}, {0x1276, "\002\023\355\176"}, {0x1277, "\002\023\375\331"}, {0x1278, "\002\023\375\151"}, {0x1279, "\002\023\361\366"}, {0x127A, "\002\023\357\351"}, {0x127B, "\002\023\355\024"}, {0x127C, "\002\023\355\071"}, {0x127D, "\002\023\357\350"}, {0x127E, "\002\023\355\277"}, {0x127F, "\002\023\375\147"}, {0x1280, "\002\023\376\146"}, {0x1281, "\002\023\376\127"}, {0x1282, "\002\023\357\055"}, {0x1283, "\002\023\376\114"}, {0x1284, "\002\023\376\147"}, {0x1285, "\002\023\376\115"}, {0x1286, "\002\023\362\106"}, {0x1288, "\002\023\376\136"}, {0x128A, "\002\023\376\135"}, {0x128B, "\002\023\376\133"}, {0x128C, "\002\023\376\137"}, {0x128D, "\002\023\376\134"}, {0x1290, "\002\023\372\057"}, {0x1291, "\002\023\355\340"}, {0x1292, "\002\023\244"}, {0x1293, "\002\023\354"}, {0x1294, "\002\023\356\231"}, {0x1295, "\002\023\355\140"}, {0x1296, "\002\023\355\113"}, {0x1297, "\002\023\372\001"}, {0x1298, "\002\023\377\054"}, {0x1299, "\002\023\377\052"}, {0x129A, "\002\023\360\030"}, {0x129B, "\002\023\355\201"}, {0x129C, "\002\023\360\032"}, {0x129D, "\002\023\377\051"}, {0x129E, "\002\023\357\063"}, {0x129F, "\002\023\377\053"}, {0x12A0, "\002\023\362\151\355\323"}, {0x12A1, "\002\023\113\355\323"}, {0x12A2, "\002\023\103\355\323"}, {0x12A3, "\002\023\063\355\323"}, {0x12A4, "\002\023\217\355\323"}, {0x12A5, "\002\023\130\355\323"}, {0x12A6, "\002\023\064\355\323"}, {0x12A7, "\002\023\355\050\355\323"}, {0x12A8, "\002\023\370\110"}, {0x12A9, "\002\023\361\003"}, {0x12AA, "\002\023\355\332"}, {0x12AB, "\002\023\240"}, {0x12AC, "\002\023\356\220"}, {0x12AD, "\002\023\355\331"}, {0x12AE, "\002\023\355\167"}, {0x12B0, "\002\023\370\071"}, {0x12B2, "\002\023\361\014"}, {0x12B3, "\002\023\361\013"}, {0x12B4, "\002\023\361\015"}, {0x12B5, "\002\023\370\066"}, {0x12B8, "\002\023\370\105"}, {0x12B9, "\002\023\370\077"}, {0x12BA, "\002\023\370\075"}, {0x12BB, "\002\023\370\073"}, {0x12BC, "\002\023\370\106"}, {0x12BD, "\002\023\370\074"}, {0x12BE, "\002\023\370\076"}, {0x12C0, "\002\023\370\103"}, {0x12C2, "\002\023\370\102"}, {0x12C3, "\002\023\370\100"}, {0x12C4, "\002\023\370\104"}, {0x12C5, "\002\023\370\101"}, {0x12C8, "\002\023\376\112"}, {0x12C9, "\002\023\362\104"}, {0x12CA, "\002\023\355\362"}, {0x12CB, "\002\023\355\050"}, {0x12CC, "\002\023\356\271"}, {0x12CD, "\002\023\356\270"}, {0x12CE, "\002\023\355\150"}, {0x12D0, "\002\023\362\151\356\032"}, {0x12D1, "\002\023\113\356\032"}, {0x12D2, "\002\023\103\356\032"}, {0x12D3, "\002\023\063\356\032"}, {0x12D4, "\002\023\217\356\032"}, {0x12D5, "\002\023\130\356\032"}, {0x12D6, "\002\023\064\356\032"}, {0x12D8, "\002\023\376\361"}, {0x12D9, "\002\023\362\144"}, {0x12DA, "\002\023\356\275"}, {0x12DB, "\002\023\355\101"}, {0x12DC, "\002\023\355\367"}, {0x12DD, "\002\023\356\274"}, {0x12DE, "\002\023\356\135"}, {0x12DF, "\002\023\376\317"}, {0x12E0, "\002\023\367\352"}, {0x12E1, "\002\023\367\322"}, {0x12E2, "\002\023\360\360"}, {0x12E3, "\002\023\357\206"}, {0x12E4, "\002\023\355\204"}, {0x12E5, "\002\023\367\260"}, {0x12E6, "\002\023\357\211"}, {0x12E7, "\002\023\367\343"}, {0x12E8, "\002\023\376\224"}, {0x12E9, "\002\023\355\151"}, {0x12EA, "\002\023\003"}, {0x12EB, "\002\023\305"}, {0x12EC, "\002\023\355\303"}, {0x12ED, "\002\023\362\110"}, {0x12EE, "\002\023\355\040"}, {0x12F0, "\002\023\365\345"}, {0x12F1, "\002\023\360\212"}, {0x12F2, "\002\023\356\062"}, {0x12F3, "\002\023\355\002"}, {0x12F4, "\002\023\356\166"}, {0x12F5, "\002\023\007"}, {0x12F6, "\002\023\355\252"}, {0x12F7, "\002\023\365\340"}, {0x12F8, "\002\023\365\235"}, {0x12F9, "\002\023\365\222"}, {0x12FA, "\002\023\360\164"}, {0x12FB, "\002\023\355\120"}, {0x12FC, "\002\023\365\236"}, {0x12FD, "\002\023\360\163"}, {0x12FE, "\002\023\360\165"}, {0x12FF, "\002\023\365\234"}, {0x1300, "\002\023\365\312"}, {0x1301, "\002\023\357\140"}, {0x1302, "\002\023\357\137"}, {0x1303, "\002\023\355\104"}, {0x1304, "\002\023\356\063"}, {0x1305, "\002\023\360\206"}, {0x1306, "\002\023\360\207"}, {0x1307, "\002\023\365\311"}, {0x1308, "\002\023\366\275"}, {0x1309, "\002\023\357\155"}, {0x130A, "\002\023\356\204"}, {0x130B, "\002\023\355\017"}, {0x130C, "\002\023\360\313"}, {0x130D, "\002\023\356\203"}, {0x130E, "\002\023\356\071"}, {0x1310, "\002\023\366\272"}, {0x1312, "\002\023\366\271"}, {0x1313, "\002\023\366\267"}, {0x1314, "\002\023\366\273"}, {0x1315, "\002\023\366\270"}, {0x1318, "\002\023\366\206"}, {0x1319, "\002\023\366\173"}, {0x131A, "\002\023\360\267"}, {0x131B, "\002\023\360\265"}, {0x131C, "\002\023\366\207"}, {0x131D, "\002\023\360\266"}, {0x131E, "\002\023\360\270"}, {0x1320, "\002\023\375\177"}, {0x1321, "\002\023\362\002"}, {0x1322, "\002\023\356\127"}, {0x1323, "\002\023\355\072"}, {0x1324, "\002\023\356\130"}, {0x1325, "\002\023\361\377"}, {0x1326, "\002\023\355\077"}, {0x1327, "\002\023\375\175"}, {0x1328, "\002\023\375\300"}, {0x1329, "\002\023\375\276"}, {0x132A, "\002\023\375\274"}, {0x132B, "\002\023\375\272"}, {0x132C, "\002\023\375\301"}, {0x132D, "\002\023\375\273"}, {0x132E, "\002\023\375\275"}, {0x132F, "\002\023\375\277"}, {0x1330, "\002\023\372\222"}, {0x1331, "\002\023\372\216"}, {0x1332, "\002\023\356\241"}, {0x1333, "\002\023\355\124"}, {0x1334, "\002\023\372\223"}, {0x1335, "\002\023\372\212"}, {0x1336, "\002\023\356\033"}, {0x1337, "\002\023\372\221"}, {0x1338, "\002\023\375\267"}, {0x1339, "\002\023\357\371"}, {0x133A, "\002\023\357\367"}, {0x133B, "\002\023\355\177"}, {0x133C, "\002\023\356\047"}, {0x133D, "\002\023\362\042"}, {0x133E, "\002\023\357\370"}, {0x133F, "\002\023\375\266"}, {0x1340, "\002\023\375\351"}, {0x1341, "\002\023\375\350"}, {0x1342, "\002\023\375\346"}, {0x1343, "\002\023\375\344"}, {0x1344, "\002\023\375\352"}, {0x1345, "\002\023\375\345"}, {0x1346, "\002\023\375\347"}, {0x1348, "\002\023\366\126"}, {0x1349, "\002\023\357\151"}, {0x134A, "\002\023\356\200"}, {0x134B, "\002\023\355\225"}, {0x134C, "\002\023\356\202"}, {0x134D, "\002\023\366\052"}, {0x134E, "\002\023\356\014"}, {0x134F, "\002\023\366\120"}, {0x1350, "\002\023\373\322"}, {0x1351, "\002\023\361\213"}, {0x1352, "\002\023\355\233"}, {0x1353, "\002\023\327"}, {0x1354, "\002\023\355\172"}, {0x1355, "\002\023\356\375"}, {0x1356, "\002\023\355\273"}, {0x1357, "\002\023\373\314"}, {0x1358, "\002\023\374\165"}, {0x1359, "\002\023\371\052"}, {0x135A, "\002\023\366\125"}, {0x1361, "\355\073\023"}, {0x1362, "\037\332"}, {0x1363, "\330\023"}, {0x1364, "\356\104\332"}, {0x1365, "\355\103\332"}, {0x1366, "\355\103\007\373\300\332"}, {0x1367, "\037\355\313\332"}, {0x1368, "\355\045\007\357\266\332"}, {0x1369, "\024\332\110"}, {0x136A, "\024\332\127"}, {0x136B, "\024\332\136"}, {0x136C, "\024\332\220"}, {0x136D, "\024\332\230"}, {0x136E, "\024\332\255"}, {0x136F, "\024\332\252"}, {0x1370, "\024\332\226"}, {0x1371, "\024\332\257"}, {0x1372, "\210\332\355\034"}, {0x1373, "\210\332\356\050"}, {0x1374, "\210\332\357\365"}, {0x1375, "\210\332\373\371"}, {0x1376, "\210\332\357\101"}, {0x1377, "\210\332\374\347"}, {0x1378, "\210\332\374\350"}, {0x1379, "\210\332\373\375"}, {0x137A, "\210\332\373\374"}, {0x137B, "\210\332\355\245"}, {0x137C, "\210\332\355\034\355\271"}, {0x13A0, "\002\126\063"}, {0x13A1, "\002\126\217"}, {0x13A2, "\002\126\103"}, {0x13A3, "\002\126\064"}, {0x13A4, "\002\126\113"}, {0x13A5, "\002\126\376\367"}, {0x13A6, "\002\126\355\017"}, {0x13A7, "\002\126\240"}, {0x13A8, "\002\126\355\254"}, {0x13A9, "\002\126\366\251"}, {0x13AA, "\002\126\356\071"}, {0x13AB, "\002\126\357\155"}, {0x13AC, "\002\126\366\266"}, {0x13AD, "\002\126\314"}, {0x13AE, "\002\126\356\016"}, {0x13AF, "\002\126\355\255"}, {0x13B0, "\002\126\355\107"}, {0x13B1, "\002\126\360\332"}, {0x13B2, "\002\126\367\160"}, {0x13B3, "\002\126\033"}, {0x13B4, "\002\126\356\222"}, {0x13B5, "\002\126\356\077"}, {0x13B6, "\002\126\355\170"}, {0x13B7, "\002\126\356\352"}, {0x13B8, "\002\126\370\237"}, {0x13B9, "\002\126\277"}, {0x13BA, "\002\126\356\356"}, {0x13BB, "\002\126\355\230"}, {0x13BC, "\002\126\355\136"}, {0x13BD, "\002\126\356\224"}, {0x13BE, "\002\126\354"}, {0x13BF, "\002\126\360\324"}, {0x13C0, "\002\126\371\077"}, {0x13C1, "\002\126\356\231"}, {0x13C2, "\002\126\244"}, {0x13C3, "\002\126\355\113"}, {0x13C4, "\002\126\355\340"}, {0x13C5, "\002\126\372\060"}, {0x13C6, "\002\126\361\013"}, {0x13C7, "\002\126\361\015"}, {0x13C8, "\002\126\361\014"}, {0x13C9, "\002\126\370\067"}, {0x13CA, "\002\126\370\070"}, {0x13CB, "\002\126\370\072"}, {0x13CC, "\002\126\355\004"}, {0x13CD, "\002\126\223"}, {0x13CE, "\002\126\356\121"}, {0x13CF, "\002\126\355\275"}, {0x13D0, "\002\126\355\070"}, {0x13D1, "\002\126\357\034"}, {0x13D2, "\002\126\375\064"}, {0x13D3, "\002\126\355\002"}, {0x13D4, "\002\126\311"}, {0x13D5, "\002\126\356\166"}, {0x13D6, "\002\126\355\301"}, {0x13D7, "\002\126\356\062"}, {0x13D8, "\002\126\355\217"}, {0x13D9, "\002\126\355\252"}, {0x13DA, "\002\126\360\212"}, {0x13DB, "\002\126\365\347"}, {0x13DC, "\002\126\360\210"}, {0x13DD, "\002\126\362\012"}, {0x13DE, "\002\126\362\022"}, {0x13DF, "\002\126\362\017"}, {0x13E0, "\002\126\362\020"}, {0x13E1, "\002\126\362\021"}, {0x13E2, "\002\126\375\223"}, {0x13E3, "\002\126\355\177"}, {0x13E4, "\002\126\356\047"}, {0x13E5, "\002\126\357\367"}, {0x13E6, "\002\126\357\370"}, {0x13E7, "\002\126\357\371"}, {0x13E8, "\002\126\375\270"}, {0x13E9, "\002\126\355\050"}, {0x13EA, "\002\126\356\271"}, {0x13EB, "\002\126\355\362"}, {0x13EC, "\002\126\355\150"}, {0x13ED, "\002\126\362\104"}, {0x13EE, "\002\126\362\105"}, {0x13EF, "\002\126\305"}, {0x13F0, "\002\126\355\303"}, {0x13F1, "\002\126\003"}, {0x13F2, "\002\126\355\040"}, {0x13F3, "\002\126\355\151"}, {0x13F4, "\002\126\376\225"}, {0x1401, "\002\011\217"}, {0x1402, "\002\011\377\003"}, {0x1403, "\002\011\103"}, {0x1404, "\002\011\315"}, {0x1405, "\002\011\064"}, {0x1406, "\002\011\306"}, {0x1407, "\002\011\306\355\156"}, {0x1408, "\002\011\217\054"}, {0x1409, "\002\011\103\054"}, {0x140A, "\002\011\063"}, {0x140B, "\002\011\323"}, {0x140C, "\002\011\356\235"}, {0x140D, "\002\011\356\235\112\114\123"}, {0x140E, "\002\011\356\370"}, {0x140F, "\002\011\356\370\112\114\123"}, {0x1410, "\002\011\361\150"}, {0x1411, "\002\011\361\150\112\114\123"}, {0x1412, "\002\011\356\371"}, {0x1413, "\002\011\356\371\112\114\123"}, {0x1414, "\002\011\357\263"}, {0x1415, "\002\011\357\263\112\114\123"}, {0x1416, "\002\011\357\263\355\112"}, {0x1417, "\002\011\356\234"}, {0x1418, "\002\011\356\234\112\114\123"}, {0x1419, "\002\011\357\262"}, {0x141A, "\002\011\357\262\112\114\123"}, {0x141B, "\002\011\357\262\355\112"}, {0x141C, "\002\011\307"}, {0x141D, "\002\011\113\355\156"}, {0x141E, "\002\011\355\224\007\355\226"}, {0x141F, "\002\011\355\163\021\062"}, {0x1420, "\002\011\355\163\021\067"}, {0x1421, "\002\011\355\163\356\005\320"}, {0x1422, "\002\011\355\163\356\005\344"}, {0x1423, "\002\011\355\163\356\005\044\053"}, {0x1424, "\002\011\355\163\272"}, {0x1425, "\002\011\355\163\070\021\062"}, {0x1426, "\002\011\355\163\360\213\362\033\357\377\365\112"}, {0x1427, "\002\011\355\163\037\355\137"}, {0x1428, "\002\011\355\163\355\126\242\365\111"}, {0x1429, "\002\011\355\163\057\214"}, {0x142A, "\002\011\355\163\355\014\015\050\101"}, {0x142B, "\002\011\356\010"}, {0x142C, "\002\011\367\215"}, {0x142D, "\002\011\372\101"}, {0x142E, "\002\011\362\332"}, {0x142F, "\002\011\355\172"}, {0x1430, "\002\011\373\326"}, {0x1431, "\002\011\355\233"}, {0x1432, "\002\011\361\235"}, {0x1433, "\002\011\355\273"}, {0x1434, "\002\011\361\236"}, {0x1435, "\002\011\361\236\355\156"}, {0x1436, "\002\011\356\016\054"}, {0x1437, "\002\011\355\255\054"}, {0x1438, "\002\011\327"}, {0x1439, "\002\011\373\323"}, {0x143A, "\002\011\361\217"}, {0x143B, "\002\011\361\217\112\114\123"}, {0x143C, "\002\011\361\215"}, {0x143D, "\002\011\361\215\112\114\123"}, {0x143E, "\002\011\361\220"}, {0x143F, "\002\011\361\220\112\114\123"}, {0x1440, "\002\011\361\216"}, {0x1441, "\002\011\361\216\112\114\123"}, {0x1442, "\002\011\361\221"}, {0x1443, "\002\011\361\221\112\114\123"}, {0x1444, "\002\011\361\214"}, {0x1445, "\002\011\361\214\112\114\123"}, {0x1446, "\002\011\357\276"}, {0x1447, "\002\011\357\276\112\114\123"}, {0x1448, "\002\011\357\276\355\156"}, {0x1449, "\002\011\355\021"}, {0x144A, "\002\011\355\021\112\114\123"}, {0x144B, "\002\011\237\054"}, {0x144C, "\002\011\355\301"}, {0x144D, "\002\011\375\356"}, {0x144E, "\002\011\355\217"}, {0x144F, "\002\011\375\361"}, {0x1450, "\002\011\355\176"}, {0x1451, "\002\011\356\263"}, {0x1452, "\002\011\356\263\355\156"}, {0x1453, "\002\011\356\166\054"}, {0x1454, "\002\011\356\062\054"}, {0x1455, "\002\011\311"}, {0x1456, "\002\011\375\354"}, {0x1457, "\002\011\362\030"}, {0x1458, "\002\011\362\030\112\114\123"}, {0x1459, "\002\011\362\025"}, {0x145A, "\002\011\362\025\112\114\123"}, {0x145B, "\002\011\362\031"}, {0x145C, "\002\011\362\031\112\114\123"}, {0x145D, "\002\011\362\026"}, {0x145E, "\002\011\362\026\112\114\123"}, {0x145F, "\002\011\362\032"}, {0x1460, "\002\011\362\032\112\114\123"}, {0x1461, "\002\011\362\023"}, {0x1462, "\002\011\362\023\112\114\123"}, {0x1463, "\002\011\357\363"}, {0x1464, "\002\011\357\363\112\114\123"}, {0x1465, "\002\011\357\363\355\112"}, {0x1466, "\002\011\261"}, {0x1467, "\002\011\362\053"}, {0x1468, "\002\011\362\051"}, {0x1469, "\002\011\362\052"}, {0x146A, "\002\011\355\100"}, {0x146B, "\002\011\356\220"}, {0x146C, "\002\011\370\114"}, {0x146D, "\002\011\355\332"}, {0x146E, "\002\011\370\117"}, {0x146F, "\002\011\355\167"}, {0x1470, "\002\011\361\016"}, {0x1471, "\002\011\361\016\355\156"}, {0x1472, "\002\011\240"}, {0x1473, "\002\011\370\111"}, {0x1474, "\002\011\361\007"}, {0x1475, "\002\011\361\007\112\114\123"}, {0x1476, "\002\011\361\005"}, {0x1477, "\002\011\361\005\112\114\123"}, {0x1478, "\002\011\361\010"}, {0x1479, "\002\011\361\010\112\114\123"}, {0x147A, "\002\011\361\006"}, {0x147B, "\002\011\361\006\112\114\123"}, {0x147C, "\002\011\361\011"}, {0x147D, "\002\011\361\011\112\114\123"}, {0x147E, "\002\011\361\004"}, {0x147F, "\002\011\361\004\112\114\123"}, {0x1480, "\002\011\357\222"}, {0x1481, "\002\011\357\222\112\114\123"}, {0x1482, "\002\011\357\222\355\112"}, {0x1483, "\002\011\352"}, {0x1484, "\002\011\361\003"}, {0x1485, "\002\011\370\115\356\172\212\357\042"}, {0x1486, "\002\011\370\016\356\172\212\357\042"}, {0x1487, "\002\011\370\035\356\172\212\357\042"}, {0x1488, "\002\011\367\354\356\172\212\357\042"}, {0x1489, "\002\011\355\071"}, {0x148A, "\002\011\375\153"}, {0x148B, "\002\011\357\351"}, {0x148C, "\002\011\375\154"}, {0x148D, "\002\011\355\277"}, {0x148E, "\002\011\361\375"}, {0x148F, "\002\011\361\375\355\156"}, {0x1490, "\002\011\355\024"}, {0x1491, "\002\011\375\152"}, {0x1492, "\002\011\361\372"}, {0x1493, "\002\011\361\372\112\114\123"}, {0x1494, "\002\011\361\370"}, {0x1495, "\002\011\361\370\112\114\123"}, {0x1496, "\002\011\361\373"}, {0x1497, "\002\011\361\373\112\114\123"}, {0x1498, "\002\011\361\371"}, {0x1499, "\002\011\361\371\112\114\123"}, {0x149A, "\002\011\361\374"}, {0x149B, "\002\011\361\374\112\114\123"}, {0x149C, "\002\011\361\367"}, {0x149D, "\002\011\361\367\112\114\123"}, {0x149E, "\002\011\357\352"}, {0x149F, "\002\011\357\352\112\114\123"}, {0x14A0, "\002\011\357\352\355\112"}, {0x14A1, "\002\011\361\360"}, {0x14A2, "\002\011\356\257\355\145"}, {0x14A3, "\002\011\356\356"}, {0x14A4, "\002\011\371\056"}, {0x14A5, "\002\011\355\230"}, {0x14A6, "\002\011\371\066"}, {0x14A7, "\002\011\355\136"}, {0x14A8, "\002\011\361\104"}, {0x14A9, "\002\011\361\104\355\156"}, {0x14AA, "\002\011\277"}, {0x14AB, "\002\011\371\054"}, {0x14AC, "\002\011\361\073"}, {0x14AD, "\002\011\361\073\112\114\123"}, {0x14AE, "\002\011\361\070"}, {0x14AF, "\002\011\361\070\112\114\123"}, {0x14B0, "\002\011\361\074"}, {0x14B1, "\002\011\361\074\112\114\123"}, {0x14B2, "\002\011\361\071"}, {0x14B3, "\002\011\361\071\112\114\123"}, {0x14B4, "\002\011\361\075"}, {0x14B5, "\002\011\361\075\112\114\123"}, {0x14B6, "\002\011\361\066"}, {0x14B7, "\002\011\361\066\112\114\123"}, {0x14B8, "\002\011\357\240"}, {0x14B9, "\002\011\357\240\112\114\123"}, {0x14BA, "\002\011\357\240\355\112"}, {0x14BB, "\002\011\276"}, {0x14BC, "\002\011\276\112\114\123"}, {0x14BD, "\002\011\370\352"}, {0x14BE, "\002\011\276\360\057"}, {0x14BF, "\002\011\276\355\145"}, {0x14C0, "\002\011\356\231"}, {0x14C1, "\002\011\372\062"}, {0x14C2, "\002\011\244"}, {0x14C3, "\002\011\372\063"}, {0x14C4, "\002\011\355\113"}, {0x14C5, "\002\011\361\133"}, {0x14C6, "\002\011\361\133\355\156"}, {0x14C7, "\002\011\354"}, {0x14C8, "\002\011\361\131"}, {0x14C9, "\002\011\361\121"}, {0x14CA, "\002\011\361\121\112\114\123"}, {0x14CB, "\002\011\361\120"}, {0x14CC, "\002\011\361\120\112\114\123"}, {0x14CD, "\002\011\357\252"}, {0x14CE, "\002\011\357\252\112\114\123"}, {0x14CF, "\002\011\357\252\355\112"}, {0x14D0, "\002\011\241"}, {0x14D1, "\002\011\355\336\054"}, {0x14D2, "\002\011\371\232"}, {0x14D3, "\002\011\356\222"}, {0x14D4, "\002\011\370\245"}, {0x14D5, "\002\011\356\077"}, {0x14D6, "\002\011\370\247"}, {0x14D7, "\002\011\355\170"}, {0x14D8, "\002\011\361\046"}, {0x14D9, "\002\011\361\046\355\156"}, {0x14DA, "\002\011\033"}, {0x14DB, "\002\011\370\242"}, {0x14DC, "\002\011\361\042"}, {0x14DD, "\002\011\361\042\112\114\123"}, {0x14DE, "\002\011\361\037"}, {0x14DF, "\002\011\361\037\112\114\123"}, {0x14E0, "\002\011\361\043"}, {0x14E1, "\002\011\361\043\112\114\123"}, {0x14E2, "\002\011\361\040"}, {0x14E3, "\002\011\361\040\112\114\123"}, {0x14E4, "\002\011\361\044"}, {0x14E5, "\002\011\361\044\112\114\123"}, {0x14E6, "\002\011\361\036"}, {0x14E7, "\002\011\361\036\112\114\123"}, {0x14E8, "\002\011\361\041"}, {0x14E9, "\002\011\361\041\112\114\123"}, {0x14EA, "\002\011\211"}, {0x14EB, "\002\011\211\112\114\123"}, {0x14EC, "\002\011\211\131"}, {0x14ED, "\002\011\356\121"}, {0x14EE, "\002\011\375\067"}, {0x14EF, "\002\011\355\275"}, {0x14F0, "\002\011\375\073"}, {0x14F1, "\002\011\355\070"}, {0x14F2, "\002\011\361\350"}, {0x14F3, "\002\011\361\350\355\156"}, {0x14F4, "\002\011\355\004"}, {0x14F5, "\002\011\375\065"}, {0x14F6, "\002\011\361\330"}, {0x14F7, "\002\011\361\330\112\114\123"}, {0x14F8, "\002\011\361\324"}, {0x14F9, "\002\011\361\324\112\114\123"}, {0x14FA, "\002\011\361\331"}, {0x14FB, "\002\011\361\331\112\114\123"}, {0x14FC, "\002\011\361\326"}, {0x14FD, "\002\011\361\326\112\114\123"}, {0x14FE, "\002\011\361\332"}, {0x14FF, "\002\011\361\332\112\114\123"}, {0x1500, "\002\011\357\333"}, {0x1501, "\002\011\357\333\112\114\123"}, {0x1502, "\002\011\357\334"}, {0x1503, "\002\011\357\334\112\114\123"}, {0x1504, "\002\011\357\334\355\112"}, {0x1505, "\002\011\223"}, {0x1506, "\002\011\223\360\057"}, {0x1507, "\002\011\357\034"}, {0x1508, "\002\011\223\355\067"}, {0x1509, "\002\011\374\336\112\007\371\020"}, {0x150A, "\002\011\374\337\355\112"}, {0x150B, "\002\011\374\205\355\112"}, {0x150C, "\002\011\374\366\355\112"}, {0x150D, "\002\011\375\031\355\112"}, {0x150E, "\002\011\374\340\355\112"}, {0x150F, "\002\011\375\030\355\112"}, {0x1510, "\002\011\356\311"}, {0x1511, "\002\011\356\310"}, {0x1512, "\002\011\363\340"}, {0x1513, "\002\011\356\054"}, {0x1514, "\002\011\363\342"}, {0x1515, "\002\011\355\032"}, {0x1516, "\002\011\363\335"}, {0x1517, "\002\011\360\125"}, {0x1518, "\002\011\360\125\112\114\123"}, {0x1519, "\002\011\360\122"}, {0x151A, "\002\011\360\122\112\114\123"}, {0x151B, "\002\011\360\126"}, {0x151C, "\002\011\360\126\112\114\123"}, {0x151D, "\002\011\360\123"}, {0x151E, "\002\011\360\123\112\114\123"}, {0x151F, "\002\011\360\127"}, {0x1520, "\002\011\360\127\112\114\123"}, {0x1521, "\002\011\360\121"}, {0x1522, "\002\011\360\121\112\114\123"}, {0x1523, "\002\011\360\124"}, {0x1524, "\002\011\360\124\112\114\123"}, {0x1525, "\002\011\357\075"}, {0x1526, "\002\011\355\303"}, {0x1527, "\002\011\376\230"}, {0x1528, "\002\011\003"}, {0x1529, "\002\011\376\231"}, {0x152A, "\002\011\355\040"}, {0x152B, "\002\011\356\273"}, {0x152C, "\002\011\356\273\355\156"}, {0x152D, "\002\011\305"}, {0x152E, "\002\011\362\134"}, {0x152F, "\002\011\362\127"}, {0x1530, "\002\011\362\127\112\114\123"}, {0x1531, "\002\011\362\125"}, {0x1532, "\002\011\362\125\112\114\123"}, {0x1533, "\002\011\362\130"}, {0x1534, "\002\011\362\130\112\114\123"}, {0x1535, "\002\011\362\126"}, {0x1536, "\002\011\362\126\112\114\123"}, {0x1537, "\002\011\362\131"}, {0x1538, "\002\011\362\131\112\114\123"}, {0x1539, "\002\011\362\123"}, {0x153A, "\002\011\362\123\112\114\123"}, {0x153B, "\002\011\360\014"}, {0x153C, "\002\011\360\014\112\114\123"}, {0x153D, "\002\011\360\014\355\112"}, {0x153E, "\002\011\265"}, {0x153F, "\002\011\265\112\363\121"}, {0x1540, "\002\011\265\112\114\123"}, {0x1541, "\002\011\003\355\145"}, {0x1542, "\002\011\356\040"}, {0x1543, "\002\011\356\040\365\115"}, {0x1544, "\002\011\356\222\112\114\123"}, {0x1545, "\002\011\374\171"}, {0x1546, "\002\011\355\347"}, {0x1547, "\002\011\374\201"}, {0x1548, "\002\011\355\174"}, {0x1549, "\002\011\374\202"}, {0x154A, "\002\011\355\170\112\114\123"}, {0x154B, "\002\011\322"}, {0x154C, "\002\011\357\320"}, {0x154D, "\002\011\033\112\114\123"}, {0x154E, "\002\011\361\275"}, {0x154F, "\002\011\361\275\112\114\123"}, {0x1550, "\002\011\167"}, {0x1551, "\002\011\167\112\114\123"}, {0x1552, "\002\011\167\131"}, {0x1553, "\002\011\356\202"}, {0x1554, "\002\011\366\131"}, {0x1555, "\002\011\356\200"}, {0x1556, "\002\011\366\135"}, {0x1557, "\002\011\356\014"}, {0x1558, "\002\011\366\136"}, {0x1559, "\002\011\355\225"}, {0x155A, "\002\011\366\127"}, {0x155B, "\002\011\360\252"}, {0x155C, "\002\011\360\252\112\114\123"}, {0x155D, "\002\011\355\062"}, {0x155E, "\002\011\356\130"}, {0x155F, "\002\011\356\130\357\111"}, {0x1560, "\002\011\356\127"}, {0x1561, "\002\011\356\127\357\111"}, {0x1562, "\002\011\357\357"}, {0x1563, "\002\011\357\357\357\111"}, {0x1564, "\002\011\355\077"}, {0x1565, "\002\011\362\004"}, {0x1566, "\002\011\355\072"}, {0x1567, "\002\011\357\355"}, {0x1568, "\002\011\362\003"}, {0x1569, "\002\011\362\003\112\114\123"}, {0x156A, "\002\011\356\257"}, {0x156B, "\002\011\375\305"}, {0x156C, "\002\011\375\304"}, {0x156D, "\002\011\362\050"}, {0x156E, "\002\011\355\127"}, {0x156F, "\002\011\375\303"}, {0x1570, "\002\011\375\341"}, {0x1571, "\002\011\375\333"}, {0x1572, "\002\011\375\334"}, {0x1573, "\002\011\375\332"}, {0x1574, "\002\011\356\016\212\355\341"}, {0x1575, "\002\011\355\255\212\355\341"}, {0x1576, "\002\011\357\172\212\355\341"}, {0x1577, "\002\011\355\107\212\355\341"}, {0x1578, "\002\011\357\173\212\355\341"}, {0x1579, "\002\011\314\212\355\341"}, {0x157A, "\002\011\356\211\212\355\341"}, {0x157B, "\002\011\237\212\355\341"}, {0x157C, "\002\011\237\212\371\365"}, {0x157D, "\002\011\366\355"}, {0x157E, "\002\011\374\026"}, {0x157F, "\002\011\357\301"}, {0x1580, "\002\011\374\030"}, {0x1581, "\002\011\357\302"}, {0x1582, "\002\011\374\031"}, {0x1583, "\002\011\356\245"}, {0x1584, "\002\011\374\024"}, {0x1585, "\002\011\355\173"}, {0x1586, "\002\011\362\016"}, {0x1587, "\002\011\362\014"}, {0x1588, "\002\011\362\015"}, {0x1589, "\002\011\362\013"}, {0x158A, "\002\011\356\040\112\114\123"}, {0x158B, "\002\011\355\347\112\114\123"}, {0x158C, "\002\011\355\174\112\114\123"}, {0x158D, "\002\011\322\112\114\123"}, {0x158E, "\002\011\371\226"}, {0x158F, "\002\011\371\212"}, {0x1590, "\002\011\371\230"}, {0x1591, "\002\011\356\225"}, {0x1592, "\002\011\371\231"}, {0x1593, "\002\011\355\066"}, {0x1594, "\002\011\371\225"}, {0x1595, "\002\011\355\336"}, {0x1596, "\002\011\371\303"}, {0x1597, "\002\011\356\311\355\145"}, {0x1598, "\002\011\356\310\355\145"}, {0x1599, "\002\011\356\054\355\145"}, {0x159A, "\002\011\355\032\355\145"}, {0x159B, "\002\011\356\130\112\114\356\001"}, {0x159C, "\002\011\356\127\112\114\356\001"}, {0x159D, "\002\011\355\077\112\114\356\001"}, {0x159E, "\002\011\355\072\112\114\356\001"}, {0x159F, "\002\011\356\257\112\114\356\001"}, {0x15A0, "\002\011\361\024"}, {0x15A1, "\002\011\370\160"}, {0x15A2, "\002\011\361\025"}, {0x15A3, "\002\011\370\161"}, {0x15A4, "\002\011\357\226"}, {0x15A5, "\002\011\370\156"}, {0x15A6, "\002\011\370\151"}, {0x15A7, "\002\011\356\130\355\311"}, {0x15A8, "\002\011\356\127\355\311"}, {0x15A9, "\002\011\357\357\355\311"}, {0x15AA, "\002\011\355\077\355\311"}, {0x15AB, "\002\011\362\004\355\311"}, {0x15AC, "\002\011\355\072\355\311"}, {0x15AD, "\002\011\357\355\355\311"}, {0x15AE, "\002\011\356\257\355\311"}, {0x15AF, "\002\011\334\363\017"}, {0x15B0, "\002\011\217\355\067"}, {0x15B1, "\002\011\103\355\067"}, {0x15B2, "\002\011\064\355\067"}, {0x15B3, "\002\011\063\355\067"}, {0x15B4, "\002\011\356\235\355\067"}, {0x15B5, "\002\011\356\370\355\067"}, {0x15B6, "\002\011\356\371\355\067"}, {0x15B7, "\002\011\356\234\355\067"}, {0x15B8, "\002\011\356\231\355\067"}, {0x15B9, "\002\011\244\355\067"}, {0x15BA, "\002\011\355\113\355\067"}, {0x15BB, "\002\011\354\355\067"}, {0x15BC, "\002\011\356\220\355\067"}, {0x15BD, "\002\011\355\332\355\067"}, {0x15BE, "\002\011\355\167\355\067"}, {0x15BF, "\002\011\240\355\067"}, {0x15C0, "\002\011\356\016\355\145"}, {0x15C1, "\002\011\355\255\355\145"}, {0x15C2, "\002\011\355\107\355\145"}, {0x15C3, "\002\011\314\355\145"}, {0x15C4, "\002\011\366\214\054"}, {0x15C5, "\002\011\366\213\054"}, {0x15C6, "\002\011\366\211\054"}, {0x15C7, "\002\011\366\216\054"}, {0x15C8, "\002\011\366\212\054"}, {0x15C9, "\002\011\355\106\054"}, {0x15CA, "\002\011\357\315\054"}, {0x15CB, "\002\011\355\174\054"}, {0x15CC, "\002\011\356\035\054"}, {0x15CD, "\002\011\356\040\054"}, {0x15CE, "\002\011\355\347\054"}, {0x15CF, "\002\011\322\054"}, {0x15D0, "\002\011\372\130\054"}, {0x15D1, "\002\011\356\371\054"}, {0x15D2, "\002\011\372\126\054"}, {0x15D3, "\002\011\356\235\054"}, {0x15D4, "\002\011\356\370\054"}, {0x15D5, "\002\011\356\234\054"}, {0x15D6, "\002\011\367\112\054"}, {0x15D7, "\002\011\367\111\054"}, {0x15D8, "\002\011\367\107\054"}, {0x15D9, "\002\011\367\113\054"}, {0x15DA, "\002\011\367\110\054"}, {0x15DB, "\002\011\367\106\054"}, {0x15DC, "\002\011\362\002\054"}, {0x15DD, "\002\011\355\077\054"}, {0x15DE, "\002\011\361\377\054"}, {0x15DF, "\002\011\356\130\054"}, {0x15E0, "\002\011\356\127\054"}, {0x15E1, "\002\011\355\072\054"}, {0x15E2, "\002\011\375\306\054"}, {0x15E3, "\002\011\362\052\054"}, {0x15E4, "\002\011\375\302\054"}, {0x15E5, "\002\011\362\053\054"}, {0x15E6, "\002\011\362\051\054"}, {0x15E7, "\002\011\355\100\054"}, {0x15E8, "\002\011\361\213\054"}, {0x15E9, "\002\011\355\273\054"}, {0x15EA, "\002\011\356\375\054"}, {0x15EB, "\002\011\355\172\054"}, {0x15EC, "\002\011\355\233\054"}, {0x15ED, "\002\011\327\054"}, {0x15EE, "\002\011\355\021\054"}, {0x15EF, "\002\011\357\155\054"}, {0x15F0, "\002\011\356\071\054"}, {0x15F1, "\002\011\356\203\054"}, {0x15F2, "\002\011\360\313\054"}, {0x15F3, "\002\011\356\204\054"}, {0x15F4, "\002\011\355\017\054"}, {0x15F5, "\002\011\370\006\054"}, {0x15F6, "\002\011\355\261\054"}, {0x15F7, "\002\011\370\003\054"}, {0x15F8, "\002\011\356\342\054"}, {0x15F9, "\002\011\356\341\054"}, {0x15FA, "\002\011\355\054\054"}, {0x15FB, "\002\011\370\032\054"}, {0x15FC, "\002\011\370\031\054"}, {0x15FD, "\002\011\370\027\054"}, {0x15FE, "\002\011\370\033\054"}, {0x15FF, "\002\011\370\030\054"}, {0x1600, "\002\011\370\026\054"}, {0x1601, "\002\011\361\002\054"}, {0x1602, "\002\011\355\340\054"}, {0x1603, "\002\011\355\113\054"}, {0x1604, "\002\011\355\140\054"}, {0x1605, "\002\011\356\231\054"}, {0x1606, "\002\011\244\054"}, {0x1607, "\002\011\354\054"}, {0x1608, "\002\011\356\224\054"}, {0x1609, "\002\011\355\136\054"}, {0x160A, "\002\011\355\334\054"}, {0x160B, "\002\011\356\356\054"}, {0x160C, "\002\011\355\230\054"}, {0x160D, "\002\011\277\054"}, {0x160E, "\002\011\355\151\054"}, {0x160F, "\002\011\355\040\054"}, {0x1610, "\002\011\362\110\054"}, {0x1611, "\002\011\355\303\054"}, {0x1612, "\002\011\003\054"}, {0x1613, "\002\011\305\054"}, {0x1614, "\002\011\357\140\054"}, {0x1615, "\002\011\357\140\355\145"}, {0x1616, "\002\011\360\207\054"}, {0x1617, "\002\011\360\206\054"}, {0x1618, "\002\011\356\063\054"}, {0x1619, "\002\011\357\137\054"}, {0x161A, "\002\011\357\137\355\145"}, {0x161B, "\002\011\355\104\054"}, {0x161C, "\002\011\365\307\054"}, {0x161D, "\002\011\365\306\054"}, {0x161E, "\002\011\365\304\054"}, {0x161F, "\002\011\365\310\054"}, {0x1620, "\002\011\365\305\054"}, {0x1621, "\002\011\365\303\054"}, {0x1622, "\002\011\356\352\054"}, {0x1623, "\002\011\355\170\054"}, {0x1624, "\002\011\050\054"}, {0x1625, "\002\011\356\222\054"}, {0x1626, "\002\011\356\077\054"}, {0x1627, "\002\011\033\054"}, {0x1628, "\002\011\365\317\054"}, {0x1629, "\002\011\365\316\054"}, {0x162A, "\002\011\365\314\054"}, {0x162B, "\002\011\365\320\054"}, {0x162C, "\002\011\365\315\054"}, {0x162D, "\002\011\360\210\054"}, {0x162E, "\002\011\370\155\054"}, {0x162F, "\002\011\361\025\054"}, {0x1630, "\002\011\370\154\054"}, {0x1631, "\002\011\370\157\054"}, {0x1632, "\002\011\361\024\054"}, {0x1633, "\002\011\357\226\054"}, {0x1634, "\002\011\375\222\054"}, {0x1635, "\002\011\362\015\054"}, {0x1636, "\002\011\375\221\054"}, {0x1637, "\002\011\362\016\054"}, {0x1638, "\002\011\362\014\054"}, {0x1639, "\002\011\362\013\054"}, {0x163A, "\002\011\362\021\054"}, {0x163B, "\002\011\362\020\054"}, {0x163C, "\002\011\375\220\054"}, {0x163D, "\002\011\362\022\054"}, {0x163E, "\002\011\362\017\054"}, {0x163F, "\002\011\362\012\054"}, {0x1640, "\002\011\362\144\054"}, {0x1641, "\002\011\356\135\054"}, {0x1642, "\002\011\356\274\054"}, {0x1643, "\002\011\355\367\054"}, {0x1644, "\002\011\356\275\054"}, {0x1645, "\002\011\355\101\054"}, {0x1646, "\002\011\271\054"}, {0x1647, "\002\011\271\054\055"}, {0x1648, "\002\011\365\344\054"}, {0x1649, "\002\011\365\343\054"}, {0x164A, "\002\011\365\341\054"}, {0x164B, "\002\011\356\165\054"}, {0x164C, "\002\011\365\342\054"}, {0x164D, "\002\011\356\065\054"}, {0x164E, "\002\011\357\034\054"}, {0x164F, "\002\011\355\070\054"}, {0x1650, "\002\011\356\042\054"}, {0x1651, "\002\011\356\121\054"}, {0x1652, "\002\011\355\275\054"}, {0x1653, "\002\011\355\004\054"}, {0x1654, "\002\011\360\120\054"}, {0x1655, "\002\011\356\054\054"}, {0x1656, "\002\011\356\151\054"}, {0x1657, "\002\011\356\311\054"}, {0x1658, "\002\011\356\310\054"}, {0x1659, "\002\011\355\032\054"}, {0x165A, "\002\011\357\075\054"}, {0x165B, "\002\011\357\371\054"}, {0x165C, "\002\011\357\370\054"}, {0x165D, "\002\011\362\042\054"}, {0x165E, "\002\011\356\047\054"}, {0x165F, "\002\011\357\367\054"}, {0x1660, "\002\011\355\177\054"}, {0x1661, "\002\011\361\366\054"}, {0x1662, "\002\011\355\277\054"}, {0x1663, "\002\011\357\350\054"}, {0x1664, "\002\011\355\071\054"}, {0x1665, "\002\011\357\351\054"}, {0x1666, "\002\011\355\024\054"}, {0x1667, "\002\011\375\313\054"}, {0x1668, "\002\011\375\312\054"}, {0x1669, "\002\011\375\310\054"}, {0x166A, "\002\011\375\314\054"}, {0x166B, "\002\011\375\311\054"}, {0x166C, "\002\011\375\307\054"}, {0x166D, "\057\002\011\356\341"}, {0x166E, "\037\002\011"}, {0x166F, "\002\011\373\333"}, {0x1670, "\002\011\371\205"}, {0x1671, "\002\011\371\305"}, {0x1672, "\002\011\371\310"}, {0x1673, "\002\011\371\306"}, {0x1674, "\002\011\371\311"}, {0x1675, "\002\011\371\304"}, {0x1676, "\002\011\371\307"}, {0x1680, "\355\073\310"}, {0x1681, "\001\310\363\105"}, {0x1682, "\001\310\370\213"}, {0x1683, "\001\310\366\053"}, {0x1684, "\001\310\374\212"}, {0x1685, "\001\310\371\242"}, {0x1686, "\001\310\375\362"}, {0x1687, "\001\310\365\171"}, {0x1688, "\001\310\375\206"}, {0x1689, "\001\310\365\045"}, {0x168A, "\001\310\363\245"}, {0x168B, "\001\310\371\030"}, {0x168C, "\001\310\366\236"}, {0x168D, "\001\310\371\227"}, {0x168E, "\001\310\375\032"}, {0x168F, "\001\310\374\144"}, {0x1690, "\001\310\362\305"}, {0x1691, "\001\310\361\137"}, {0x1692, "\001\310\376\371"}, {0x1693, "\001\310\365\364"}, {0x1694, "\001\310\367\224"}, {0x1695, "\001\310\377\020"}, {0x1696, "\001\310\376\370"}, {0x1697, "\001\310\375\364"}, {0x1698, "\001\310\367\200"}, {0x1699, "\001\310\365\365"}, {0x169A, "\001\310\372\174"}, {0x169B, "\356\243\310"}, {0x169C, "\356\243\357\322\310"}, {0x16A0, "\001\135\366\132\366\133\356\202\355\062"}, {0x16A1, "\001\135\355\025"}, {0x16A2, "\001\135\376\001\375\376\113"}, {0x16A3, "\001\135\362\133"}, {0x16A4, "\001\135\265"}, {0x16A5, "\001\135\347"}, {0x16A6, "\001\135\375\173\375\171\375\174\356\257"}, {0x16A7, "\001\135\366\024"}, {0x16A8, "\001\135\362\340\063"}, {0x16A9, "\001\135\357\257\064"}, {0x16AA, "\001\135\362\275\063"}, {0x16AB, "\001\135\376\363"}, {0x16AC, "\001\135\372\113\064"}, {0x16AD, "\001\135\372\114\064"}, {0x16AE, "\001\135\064"}, {0x16AF, "\001\135\355\210"}, {0x16B0, "\001\135\357\256"}, {0x16B1, "\001\135\374\034\357\020\374\051\167"}, {0x16B2, "\001\135\367\371"}, {0x16B3, "\001\135\363\247"}, {0x16B4, "\001\135\367\370\352"}, {0x16B5, "\001\135\266"}, {0x16B6, "\001\135\356\007"}, {0x16B7, "\001\135\366\150\366\151\266"}, {0x16B8, "\001\135\366\141"}, {0x16B9, "\001\135\376\106\360\007\347"}, {0x16BA, "\001\135\366\307\237"}, {0x16BB, "\001\135\367\157\237"}, {0x16BC, "\001\135\366\305\237"}, {0x16BD, "\001\135\366\306\237"}, {0x16BE, "\001\135\371\107\372\002\371\105\241"}, {0x16BF, "\001\135\371\106\241"}, {0x16C0, "\001\135\371\075"}, {0x16C1, "\001\135\367\233\367\232\367\234\103"}, {0x16C2, "\001\135\130"}, {0x16C3, "\001\135\367\261\355\053"}, {0x16C4, "\001\135\366\152"}, {0x16C5, "\001\135\362\354\360\023"}, {0x16C6, "\001\135\362\353\063"}, {0x16C7, "\001\135\367\236\366\016"}, {0x16C8, "\001\135\372\204\372\200\355\021"}, {0x16C9, "\001\135\362\311\366\017"}, {0x16CA, "\001\135\374\363\223"}, {0x16CB, "\001\135\374\314\374\351\223"}, {0x16CC, "\001\135\374\352\223"}, {0x16CD, "\001\135\313"}, {0x16CE, "\001\135\271"}, {0x16CF, "\001\135\375\215\375\211\375\337\261"}, {0x16D0, "\001\135\375\340\261"}, {0x16D1, "\001\135\275"}, {0x16D2, "\001\135\363\113\363\111\363\117\334"}, {0x16D3, "\001\135\363\120\334"}, {0x16D4, "\001\135\372\145"}, {0x16D5, "\001\135\372\144"}, {0x16D6, "\001\135\365\373\365\372\130"}, {0x16D7, "\001\135\370\262\357\231\276"}, {0x16D8, "\001\135\370\250\276"}, {0x16D9, "\001\135\370\251\276"}, {0x16DA, "\001\135\370\136\370\126\370\203\211"}, {0x16DB, "\001\135\370\124"}, {0x16DC, "\001\135\367\212"}, {0x16DD, "\001\135\367\211"}, {0x16DE, "\001\135\365\167\365\346\275"}, {0x16DF, "\001\135\372\116\366\025\064"}, {0x16E0, "\001\135\365\366"}, {0x16E1, "\001\135\367\225"}, {0x16E2, "\001\135\365\137"}, {0x16E3, "\001\135\363\227"}, {0x16E4, "\001\135\363\243"}, {0x16E5, "\001\135\375\027"}, {0x16E6, "\001\135\376\202"}, {0x16E7, "\001\135\376\203"}, {0x16E8, "\001\135\376\201"}, {0x16E9, "\001\135\355\173"}, {0x16EA, "\001\135\355\026"}, {0x16EB, "\355\234\135\355\001"}, {0x16EC, "\355\234\135\371\032"}, {0x16ED, "\355\234\135\013\355\033"}, {0x16EE, "\022\135\362\356"}, {0x16EF, "\022\135\375\330"}, {0x16F0, "\022\135\363\106"}, {0x1780, "\001\157\240"}, {0x1781, "\001\157\355\054"}, {0x1782, "\001\157\355\167"}, {0x1783, "\001\157\355\261"}, {0x1784, "\001\157\356\225"}, {0x1785, "\001\157\355\024"}, {0x1786, "\001\157\355\240"}, {0x1787, "\001\157\355\277"}, {0x1788, "\001\157\375\134"}, {0x1789, "\001\157\357\063"}, {0x178A, "\001\157\355\002"}, {0x178B, "\001\157\355\127"}, {0x178C, "\001\157\355\252"}, {0x178D, "\001\157\362\050"}, {0x178E, "\001\157\371\312"}, {0x178F, "\001\157\311"}, {0x1790, "\001\157\355\072"}, {0x1791, "\001\157\355\176"}, {0x1792, "\001\157\355\077"}, {0x1793, "\001\157\355\113"}, {0x1794, "\001\157\355\052"}, {0x1795, "\001\157\355\124"}, {0x1796, "\001\157\355\273"}, {0x1797, "\001\157\356\033"}, {0x1798, "\001\157\355\136"}, {0x1799, "\001\157\355\040"}, {0x179A, "\001\157\355\174"}, {0x179B, "\001\157\355\170"}, {0x179C, "\001\157\356\132"}, {0x179D, "\001\157\355\152"}, {0x179E, "\001\157\356\054"}, {0x179F, "\001\157\355\004"}, {0x17A0, "\001\157\314"}, {0x17A1, "\001\157\033"}, {0x17A2, "\001\157\063"}, {0x17A3, "\042\073\157\063"}, {0x17A4, "\042\073\157\323"}, {0x17A5, "\042\073\157\103"}, {0x17A6, "\042\073\157\315"}, {0x17A7, "\042\073\157\113"}, {0x17A8, "\042\073\157\357\261"}, {0x17A9, "\042\073\157\342"}, {0x17AA, "\042\073\157\363\021"}, {0x17AB, "\042\073\157\374\167"}, {0x17AC, "\042\073\157\374\170"}, {0x17AD, "\042\073\157\370\240"}, {0x17AE, "\042\073\157\370\241"}, {0x17AF, "\042\073\157\217"}, {0x17B0, "\042\073\157\307"}, {0x17B1, "\042\073\157\306\362\055\110"}, {0x17B2, "\042\073\157\306\362\055\127"}, {0x17B3, "\042\073\157\333"}, {0x17B4, "\042\157\360\347\063"}, {0x17B5, "\042\157\360\347\323"}, {0x17B6, "\042\026\157\323"}, {0x17B7, "\042\026\157\103"}, {0x17B8, "\042\026\157\315"}, {0x17B9, "\042\026\157\376\372"}, {0x17BA, "\042\026\157\376\374"}, {0x17BB, "\042\026\157\113"}, {0x17BC, "\042\026\157\342"}, {0x17BD, "\042\026\157\356\234"}, {0x17BE, "\042\026\157\355\210"}, {0x17BF, "\042\026\157\376\373"}, {0x17C0, "\042\026\157\355\260"}, {0x17C1, "\042\026\157\217"}, {0x17C2, "\042\026\157\356\136"}, {0x17C3, "\042\026\157\307"}, {0x17C4, "\042\026\157\306"}, {0x17C5, "\042\026\157\333"}, {0x17C6, "\057\267\371\240"}, {0x17C7, "\057\267\374\172"}, {0x17C8, "\057\267\376\200"}, {0x17C9, "\057\267\371\025"}, {0x17CA, "\057\267\375\262"}, {0x17CB, "\057\267\363\027"}, {0x17CC, "\057\267\374\103"}, {0x17CD, "\057\267\375\224"}, {0x17CE, "\057\267\367\357"}, {0x17CF, "\057\267\362\304"}, {0x17D0, "\057\267\374\232\374\231"}, {0x17D1, "\057\267\376\041"}, {0x17D2, "\057\267\375\137"}, {0x17D3, "\057\267\363\040"}, {0x17D4, "\057\267\357\217"}, {0x17D5, "\057\267\363\033"}, {0x17D6, "\057\267\375\127\361\235\370\046"}, {0x17D7, "\057\267\370\145\356\263"}, {0x17D8, "\057\267\363\116"}, {0x17D9, "\057\267\372\214\371\004"}, {0x17DA, "\057\267\370\120"}, {0x17DB, "\022\355\272\267\374\064"}, {0x17DC, "\057\267\363\006"}, {0x17E0, "\024\267\331"}, {0x17E1, "\024\267\110"}, {0x17E2, "\024\267\127"}, {0x17E3, "\024\267\136"}, {0x17E4, "\024\267\220"}, {0x17E5, "\024\267\230"}, {0x17E6, "\024\267\255"}, {0x17E7, "\024\267\252"}, {0x17E8, "\024\267\226"}, {0x17E9, "\024\267\257"}, {0x1800, "\363\134\355\012"}, {0x1801, "\251\007\357\345\371\013"}, {0x1802, "\330\066"}, {0x1803, "\037\355\012"}, {0x1804, "\355\103\355\012"}, {0x1805, "\373\373\355\012"}, {0x1806, "\355\126\355\315\362\071\355\012\312"}, {0x1807, "\355\045\007\375\053\355\012\355\006"}, {0x1808, "\330\066\370\261"}, {0x1809, "\037\355\012\355\065"}, {0x180A, "\371\244\355\012"}, {0x180B, "\356\254\007\357\052\357\227\355\012\110"}, {0x180C, "\356\254\007\357\052\357\227\355\012\127"}, {0x180D, "\356\254\007\357\052\357\227\355\012\136"}, {0x180E, "\355\045\007\376\055\355\012"}, {0x1810, "\024\355\012\331"}, {0x1811, "\024\355\012\110"}, {0x1812, "\024\355\012\127"}, {0x1813, "\024\355\012\136"}, {0x1814, "\024\355\012\220"}, {0x1815, "\024\355\012\230"}, {0x1816, "\024\355\012\255"}, {0x1817, "\024\355\012\252"}, {0x1818, "\024\355\012\226"}, {0x1819, "\024\355\012\257"}, {0x1820, "\001\066\063"}, {0x1821, "\001\066\356\136"}, {0x1822, "\001\066\103"}, {0x1823, "\001\066\064"}, {0x1824, "\001\066\113"}, {0x1825, "\001\066\356\011"}, {0x1826, "\001\066\132"}, {0x1827, "\001\066\315"}, {0x1828, "\001\066\354"}, {0x1829, "\001\066\355\373"}, {0x182A, "\001\066\355\052"}, {0x182B, "\001\066\327"}, {0x182C, "\001\066\356\245"}, {0x182D, "\001\066\355\017"}, {0x182E, "\001\066\277"}, {0x182F, "\001\066\033"}, {0x1830, "\001\066\355\004"}, {0x1831, "\001\066\355\032"}, {0x1832, "\001\066\311"}, {0x1833, "\001\066\355\002"}, {0x1834, "\001\066\355\024"}, {0x1835, "\001\066\355\104"}, {0x1836, "\001\066\305"}, {0x1837, "\001\066\322"}, {0x1838, "\001\066\355\050"}, {0x1839, "\001\066\355\225"}, {0x183A, "\001\066\240"}, {0x183B, "\001\066\355\054"}, {0x183C, "\001\066\355\177"}, {0x183D, "\001\066\355\101"}, {0x183E, "\001\066\356\211"}, {0x183F, "\001\066\376\307"}, {0x1840, "\001\066\357\226"}, {0x1841, "\001\066\357\350"}, {0x1842, "\001\066\375\116"}, {0x1843, "\001\066\026\356\221\042\312"}, {0x1844, "\001\066\217\312"}, {0x1845, "\001\066\103\312"}, {0x1846, "\001\066\064\312"}, {0x1847, "\001\066\113\312"}, {0x1848, "\001\066\356\011\312"}, {0x1849, "\001\066\132\312"}, {0x184A, "\001\066\355\373\312"}, {0x184B, "\001\066\355\052\312"}, {0x184C, "\001\066\327\312"}, {0x184D, "\001\066\356\245\312"}, {0x184E, "\001\066\355\017\312"}, {0x184F, "\001\066\277\312"}, {0x1850, "\001\066\311\312"}, {0x1851, "\001\066\355\002\312"}, {0x1852, "\001\066\355\024\312"}, {0x1853, "\001\066\355\104\312"}, {0x1854, "\001\066\355\177\312"}, {0x1855, "\001\066\305\312"}, {0x1856, "\001\066\355\050\312"}, {0x1857, "\001\066\240\312"}, {0x1858, "\001\066\360\311\312"}, {0x1859, "\001\066\356\211\312"}, {0x185A, "\001\066\365\302\312"}, {0x185B, "\001\066\371\233\312"}, {0x185C, "\001\066\356\065\312"}, {0x185D, "\001\066\217\355\006"}, {0x185E, "\001\066\103\355\006"}, {0x185F, "\001\066\367\240\355\006"}, {0x1860, "\001\066\132\355\006"}, {0x1861, "\001\066\113\355\006"}, {0x1862, "\001\066\355\373\355\006"}, {0x1863, "\001\066\240\355\006"}, {0x1864, "\001\066\355\017\355\006"}, {0x1865, "\001\066\314\355\006"}, {0x1866, "\001\066\327\355\006"}, {0x1867, "\001\066\355\032\355\006"}, {0x1868, "\001\066\311\355\006"}, {0x1869, "\001\066\355\002\355\006"}, {0x186A, "\001\066\355\104\355\006"}, {0x186B, "\001\066\355\225\355\006"}, {0x186C, "\001\066\360\311\355\006"}, {0x186D, "\001\066\356\211\355\006"}, {0x186E, "\001\066\355\177\355\006"}, {0x186F, "\001\066\355\101\355\006"}, {0x1870, "\001\066\357\320\355\006"}, {0x1871, "\001\066\355\024\355\006"}, {0x1872, "\001\066\355\365\355\006"}, {0x1873, "\001\066\103\355\065"}, {0x1874, "\001\066\240\355\065"}, {0x1875, "\001\066\322\355\065"}, {0x1876, "\001\066\355\225\355\065"}, {0x1877, "\001\066\355\365\355\065"}, {0x1880, "\001\066\355\222\110\234\235"}, {0x1881, "\001\066\355\243\110\234\235"}, {0x1882, "\001\066\365\172\234\235"}, {0x1883, "\001\066\361\145\234\235"}, {0x1884, "\001\066\361\145\234\235\325"}, {0x1885, "\001\066\363\024\234\235"}, {0x1886, "\001\066\136\363\025\234\235"}, {0x1887, "\001\066\063\234\235"}, {0x1888, "\001\066\103\234\235"}, {0x1889, "\001\066\240\234\235"}, {0x188A, "\001\066\355\066\234\235"}, {0x188B, "\001\066\355\024\234\235"}, {0x188C, "\001\066\355\100\234\235"}, {0x188D, "\001\066\355\127\234\235"}, {0x188E, "\001\066\355\120\234\235"}, {0x188F, "\001\066\355\141\234\235"}, {0x1890, "\001\066\311\234\235"}, {0x1891, "\001\066\355\002\234\235"}, {0x1892, "\001\066\327\234\235"}, {0x1893, "\001\066\355\124\234\235"}, {0x1894, "\001\066\355\152\234\235"}, {0x1895, "\001\066\355\365\234\235"}, {0x1896, "\001\066\355\101\234\235"}, {0x1897, "\001\066\362\303\234\235"}, {0x1898, "\001\066\311\312\234\235"}, {0x1899, "\001\066\355\365\312\234\235"}, {0x189A, "\001\066\355\106\234\235"}, {0x189B, "\001\066\355\066\355\065\234\235"}, {0x189C, "\001\066\355\024\355\065\234\235"}, {0x189D, "\001\066\355\251\355\065\234\235"}, {0x189E, "\001\066\355\100\355\065\234\235"}, {0x189F, "\001\066\355\160\355\065\234\235"}, {0x18A0, "\001\066\311\355\065\234\235"}, {0x18A1, "\001\066\355\162\355\065\234\235"}, {0x18A2, "\001\066\355\152\355\065\234\235"}, {0x18A3, "\001\066\375\150\355\065\234\235"}, {0x18A4, "\001\066\355\365\355\065\234\235"}, {0x18A5, "\001\066\355\101\355\065\234\235"}, {0x18A6, "\001\066\355\133\113\234\235"}, {0x18A7, "\001\066\355\133\305\234\235"}, {0x18A8, "\001\066\355\153\234\235"}, {0x18A9, "\001\066\365\166\234\235"}, {0x1E00, "\001\010\006\063\302\043"}, {0x1E01, "\001\005\006\063\302\043"}, {0x1E02, "\001\010\006\334\037\013\040"}, {0x1E03, "\001\005\006\334\037\013\040"}, {0x1E04, "\001\010\006\334\037\043"}, {0x1E05, "\001\005\006\334\037\043"}, {0x1E06, "\001\010\006\334\243\301"}, {0x1E07, "\001\005\006\334\243\301"}, {0x1E08, "\001\010\006\313\274\020\021\062"}, {0x1E09, "\001\005\006\313\274\020\021\062"}, {0x1E0A, "\001\010\006\275\037\013\040"}, {0x1E0B, "\001\005\006\275\037\013\040"}, {0x1E0C, "\001\010\006\275\037\043"}, {0x1E0D, "\001\005\006\275\037\043"}, {0x1E0E, "\001\010\006\275\243\301"}, {0x1E0F, "\001\005\006\275\243\301"}, {0x1E10, "\001\010\006\275\274"}, {0x1E11, "\001\005\006\275\274"}, {0x1E12, "\001\010\006\275\021\072\043"}, {0x1E13, "\001\005\006\275\021\072\043"}, {0x1E14, "\001\010\006\130\174\020\021\067"}, {0x1E15, "\001\005\006\130\174\020\021\067"}, {0x1E16, "\001\010\006\130\174\020\021\062"}, {0x1E17, "\001\005\006\130\174\020\021\062"}, {0x1E18, "\001\010\006\130\021\072\043"}, {0x1E19, "\001\005\006\130\021\072\043"}, {0x1E1A, "\001\010\006\130\172\043"}, {0x1E1B, "\001\005\006\130\172\043"}, {0x1E1C, "\001\010\006\130\274\020\213"}, {0x1E1D, "\001\005\006\130\274\020\213"}, {0x1E1E, "\001\010\006\355\062\037\013\040"}, {0x1E1F, "\001\005\006\355\062\037\013\040"}, {0x1E20, "\001\010\006\266\174"}, {0x1E21, "\001\005\006\266\174"}, {0x1E22, "\001\010\006\237\037\013\040"}, {0x1E23, "\001\005\006\237\037\013\040"}, {0x1E24, "\001\010\006\237\037\043"}, {0x1E25, "\001\005\006\237\037\043"}, {0x1E26, "\001\010\006\237\165"}, {0x1E27, "\001\005\006\237\165"}, {0x1E28, "\001\010\006\237\274"}, {0x1E29, "\001\005\006\237\274"}, {0x1E2A, "\001\010\006\237\213\043"}, {0x1E2B, "\001\005\006\237\213\043"}, {0x1E2C, "\001\010\006\103\172\043"}, {0x1E2D, "\001\005\006\103\172\043"}, {0x1E2E, "\001\010\006\103\165\020\021\062"}, {0x1E2F, "\001\005\006\103\165\020\021\062"}, {0x1E30, "\001\010\006\352\021\062"}, {0x1E31, "\001\005\006\352\021\062"}, {0x1E32, "\001\010\006\352\037\043"}, {0x1E33, "\001\005\006\352\037\043"}, {0x1E34, "\001\010\006\352\243\301"}, {0x1E35, "\001\005\006\352\243\301"}, {0x1E36, "\001\010\006\211\037\043"}, {0x1E37, "\001\005\006\211\037\043"}, {0x1E38, "\001\010\006\211\037\043\020\174"}, {0x1E39, "\001\005\006\211\037\043\020\174"}, {0x1E3A, "\001\010\006\211\243\301"}, {0x1E3B, "\001\005\006\211\243\301"}, {0x1E3C, "\001\010\006\211\021\072\043"}, {0x1E3D, "\001\005\006\211\021\072\043"}, {0x1E3E, "\001\010\006\276\021\062"}, {0x1E3F, "\001\005\006\276\021\062"}, {0x1E40, "\001\010\006\276\037\013\040"}, {0x1E41, "\001\005\006\276\037\013\040"}, {0x1E42, "\001\010\006\276\037\043"}, {0x1E43, "\001\005\006\276\037\043"}, {0x1E44, "\001\010\006\241\037\013\040"}, {0x1E45, "\001\005\006\241\037\013\040"}, {0x1E46, "\001\010\006\241\037\043"}, {0x1E47, "\001\005\006\241\037\043"}, {0x1E48, "\001\010\006\241\243\301"}, {0x1E49, "\001\005\006\241\243\301"}, {0x1E4A, "\001\010\006\241\021\072\043"}, {0x1E4B, "\001\005\006\241\021\072\043"}, {0x1E4C, "\001\010\006\064\172\020\021\062"}, {0x1E4D, "\001\005\006\064\172\020\021\062"}, {0x1E4E, "\001\010\006\064\172\020\165"}, {0x1E4F, "\001\005\006\064\172\020\165"}, {0x1E50, "\001\010\006\064\174\020\021\067"}, {0x1E51, "\001\005\006\064\174\020\021\067"}, {0x1E52, "\001\010\006\064\174\020\021\062"}, {0x1E53, "\001\005\006\064\174\020\021\062"}, {0x1E54, "\001\010\006\355\021\021\062"}, {0x1E55, "\001\005\006\355\021\021\062"}, {0x1E56, "\001\010\006\355\021\037\013\040"}, {0x1E57, "\001\005\006\355\021\037\013\040"}, {0x1E58, "\001\010\006\167\037\013\040"}, {0x1E59, "\001\005\006\167\037\013\040"}, {0x1E5A, "\001\010\006\167\037\043"}, {0x1E5B, "\001\005\006\167\037\043"}, {0x1E5C, "\001\010\006\167\037\043\020\174"}, {0x1E5D, "\001\005\006\167\037\043\020\174"}, {0x1E5E, "\001\010\006\167\243\301"}, {0x1E5F, "\001\005\006\167\243\301"}, {0x1E60, "\001\010\006\223\037\013\040"}, {0x1E61, "\001\005\006\223\037\013\040"}, {0x1E62, "\001\010\006\223\037\043"}, {0x1E63, "\001\005\006\223\037\043"}, {0x1E64, "\001\010\006\223\021\062\020\037\013\040"}, {0x1E65, "\001\005\006\223\021\062\020\037\013\040"}, {0x1E66, "\001\010\006\223\225\020\037\013\040"}, {0x1E67, "\001\005\006\223\225\020\037\013\040"}, {0x1E68, "\001\010\006\223\037\043\020\037\013\040"}, {0x1E69, "\001\005\006\223\037\043\020\037\013\040"}, {0x1E6A, "\001\010\006\261\037\013\040"}, {0x1E6B, "\001\005\006\261\037\013\040"}, {0x1E6C, "\001\010\006\261\037\043"}, {0x1E6D, "\001\005\006\261\037\043"}, {0x1E6E, "\001\010\006\261\243\301"}, {0x1E6F, "\001\005\006\261\243\301"}, {0x1E70, "\001\010\006\261\021\072\043"}, {0x1E71, "\001\005\006\261\021\072\043"}, {0x1E72, "\001\010\006\132\165\043"}, {0x1E73, "\001\005\006\132\165\043"}, {0x1E74, "\001\010\006\132\172\043"}, {0x1E75, "\001\005\006\132\172\043"}, {0x1E76, "\001\010\006\132\021\072\043"}, {0x1E77, "\001\005\006\132\021\072\043"}, {0x1E78, "\001\010\006\132\172\020\021\062"}, {0x1E79, "\001\005\006\132\172\020\021\062"}, {0x1E7A, "\001\010\006\132\174\020\165"}, {0x1E7B, "\001\005\006\132\174\020\165"}, {0x1E7C, "\001\010\006\355\025\172"}, {0x1E7D, "\001\005\006\355\025\172"}, {0x1E7E, "\001\010\006\355\025\037\043"}, {0x1E7F, "\001\005\006\355\025\037\043"}, {0x1E80, "\001\010\006\347\021\067"}, {0x1E81, "\001\005\006\347\021\067"}, {0x1E82, "\001\010\006\347\021\062"}, {0x1E83, "\001\005\006\347\021\062"}, {0x1E84, "\001\010\006\347\165"}, {0x1E85, "\001\005\006\347\165"}, {0x1E86, "\001\010\006\347\037\013\040"}, {0x1E87, "\001\005\006\347\037\013\040"}, {0x1E88, "\001\010\006\347\037\043"}, {0x1E89, "\001\005\006\347\037\043"}, {0x1E8A, "\001\010\006\355\026\037\013\040"}, {0x1E8B, "\001\005\006\355\026\037\013\040"}, {0x1E8C, "\001\010\006\355\026\165"}, {0x1E8D, "\001\005\006\355\026\165"}, {0x1E8E, "\001\010\006\265\037\013\040"}, {0x1E8F, "\001\005\006\265\037\013\040"}, {0x1E90, "\001\010\006\271\021\072"}, {0x1E91, "\001\005\006\271\021\072"}, {0x1E92, "\001\010\006\271\037\043"}, {0x1E93, "\001\005\006\271\037\043"}, {0x1E94, "\001\010\006\271\243\301"}, {0x1E95, "\001\005\006\271\243\301"}, {0x1E96, "\001\005\006\237\243\301"}, {0x1E97, "\001\005\006\261\165"}, {0x1E98, "\001\005\006\347\302\013\040"}, {0x1E99, "\001\005\006\265\302\013\040"}, {0x1E9A, "\001\005\006\063\356\061\044\053"}, {0x1E9B, "\001\005\006\355\264\223\037\013\040"}, {0x1EA0, "\001\010\006\063\037\043"}, {0x1EA1, "\001\005\006\063\037\043"}, {0x1EA2, "\001\010\006\063\122\013\040"}, {0x1EA3, "\001\005\006\063\122\013\040"}, {0x1EA4, "\001\010\006\063\021\072\020\021\062"}, {0x1EA5, "\001\005\006\063\021\072\020\021\062"}, {0x1EA6, "\001\010\006\063\021\072\020\021\067"}, {0x1EA7, "\001\005\006\063\021\072\020\021\067"}, {0x1EA8, "\001\010\006\063\021\072\020\122\013\040"}, {0x1EA9, "\001\005\006\063\021\072\020\122\013\040"}, {0x1EAA, "\001\010\006\063\021\072\020\172"}, {0x1EAB, "\001\005\006\063\021\072\020\172"}, {0x1EAC, "\001\010\006\063\021\072\020\037\043"}, {0x1EAD, "\001\005\006\063\021\072\020\037\043"}, {0x1EAE, "\001\010\006\063\213\020\021\062"}, {0x1EAF, "\001\005\006\063\213\020\021\062"}, {0x1EB0, "\001\010\006\063\213\020\021\067"}, {0x1EB1, "\001\005\006\063\213\020\021\067"}, {0x1EB2, "\001\010\006\063\213\020\122\013\040"}, {0x1EB3, "\001\005\006\063\213\020\122\013\040"}, {0x1EB4, "\001\010\006\063\213\020\172"}, {0x1EB5, "\001\005\006\063\213\020\172"}, {0x1EB6, "\001\010\006\063\213\020\037\043"}, {0x1EB7, "\001\005\006\063\213\020\037\043"}, {0x1EB8, "\001\010\006\130\037\043"}, {0x1EB9, "\001\005\006\130\037\043"}, {0x1EBA, "\001\010\006\130\122\013\040"}, {0x1EBB, "\001\005\006\130\122\013\040"}, {0x1EBC, "\001\010\006\130\172"}, {0x1EBD, "\001\005\006\130\172"}, {0x1EBE, "\001\010\006\130\021\072\020\021\062"}, {0x1EBF, "\001\005\006\130\021\072\020\021\062"}, {0x1EC0, "\001\010\006\130\021\072\020\021\067"}, {0x1EC1, "\001\005\006\130\021\072\020\021\067"}, {0x1EC2, "\001\010\006\130\021\072\020\122\013\040"}, {0x1EC3, "\001\005\006\130\021\072\020\122\013\040"}, {0x1EC4, "\001\010\006\130\021\072\020\172"}, {0x1EC5, "\001\005\006\130\021\072\020\172"}, {0x1EC6, "\001\010\006\130\021\072\020\037\043"}, {0x1EC7, "\001\005\006\130\021\072\020\037\043"}, {0x1EC8, "\001\010\006\103\122\013\040"}, {0x1EC9, "\001\005\006\103\122\013\040"}, {0x1ECA, "\001\010\006\103\037\043"}, {0x1ECB, "\001\005\006\103\037\043"}, {0x1ECC, "\001\010\006\064\037\043"}, {0x1ECD, "\001\005\006\064\037\043"}, {0x1ECE, "\001\010\006\064\122\013\040"}, {0x1ECF, "\001\005\006\064\122\013\040"}, {0x1ED0, "\001\010\006\064\021\072\020\021\062"}, {0x1ED1, "\001\005\006\064\021\072\020\021\062"}, {0x1ED2, "\001\010\006\064\021\072\020\021\067"}, {0x1ED3, "\001\005\006\064\021\072\020\021\067"}, {0x1ED4, "\001\010\006\064\021\072\020\122\013\040"}, {0x1ED5, "\001\005\006\064\021\072\020\122\013\040"}, {0x1ED6, "\001\010\006\064\021\072\020\172"}, {0x1ED7, "\001\005\006\064\021\072\020\172"}, {0x1ED8, "\001\010\006\064\021\072\020\037\043"}, {0x1ED9, "\001\005\006\064\021\072\020\037\043"}, {0x1EDA, "\001\010\006\064\336\021\062"}, {0x1EDB, "\001\005\006\064\336\021\062"}, {0x1EDC, "\001\010\006\064\336\021\067"}, {0x1EDD, "\001\005\006\064\336\021\067"}, {0x1EDE, "\001\010\006\064\336\122\013\040"}, {0x1EDF, "\001\005\006\064\336\122\013\040"}, {0x1EE0, "\001\010\006\064\336\172"}, {0x1EE1, "\001\005\006\064\336\172"}, {0x1EE2, "\001\010\006\064\336\037\043"}, {0x1EE3, "\001\005\006\064\336\037\043"}, {0x1EE4, "\001\010\006\132\037\043"}, {0x1EE5, "\001\005\006\132\037\043"}, {0x1EE6, "\001\010\006\132\122\013\040"}, {0x1EE7, "\001\005\006\132\122\013\040"}, {0x1EE8, "\001\010\006\132\336\021\062"}, {0x1EE9, "\001\005\006\132\336\021\062"}, {0x1EEA, "\001\010\006\132\336\021\067"}, {0x1EEB, "\001\005\006\132\336\021\067"}, {0x1EEC, "\001\010\006\132\336\122\013\040"}, {0x1EED, "\001\005\006\132\336\122\013\040"}, {0x1EEE, "\001\010\006\132\336\172"}, {0x1EEF, "\001\005\006\132\336\172"}, {0x1EF0, "\001\010\006\132\336\037\043"}, {0x1EF1, "\001\005\006\132\336\037\043"}, {0x1EF2, "\001\010\006\265\021\067"}, {0x1EF3, "\001\005\006\265\021\067"}, {0x1EF4, "\001\010\006\265\037\043"}, {0x1EF5, "\001\005\006\265\037\043"}, {0x1EF6, "\001\010\006\265\122\013\040"}, {0x1EF7, "\001\005\006\265\122\013\040"}, {0x1EF8, "\001\010\006\265\172"}, {0x1EF9, "\001\005\006\265\172"}, {0x1F00, "\001\005\027\203\060\143"}, {0x1F01, "\001\005\027\203\060\134"}, {0x1F02, "\001\005\027\203\060\143\020\021\067"}, {0x1F03, "\001\005\027\203\060\134\020\021\067"}, {0x1F04, "\001\005\027\203\060\143\020\021\062"}, {0x1F05, "\001\005\027\203\060\134\020\021\062"}, {0x1F06, "\001\005\027\203\060\143\020\072"}, {0x1F07, "\001\005\027\203\060\134\020\072"}, {0x1F08, "\001\010\027\203\060\143"}, {0x1F09, "\001\010\027\203\060\134"}, {0x1F0A, "\001\010\027\203\060\143\020\021\067"}, {0x1F0B, "\001\010\027\203\060\134\020\021\067"}, {0x1F0C, "\001\010\027\203\060\143\020\021\062"}, {0x1F0D, "\001\010\027\203\060\134\020\021\062"}, {0x1F0E, "\001\010\027\203\060\143\020\072"}, {0x1F0F, "\001\010\027\203\060\134\020\072"}, {0x1F10, "\001\005\027\326\060\143"}, {0x1F11, "\001\005\027\326\060\134"}, {0x1F12, "\001\005\027\326\060\143\020\021\067"}, {0x1F13, "\001\005\027\326\060\134\020\021\067"}, {0x1F14, "\001\005\027\326\060\143\020\021\062"}, {0x1F15, "\001\005\027\326\060\134\020\021\062"}, {0x1F18, "\001\010\027\326\060\143"}, {0x1F19, "\001\010\027\326\060\134"}, {0x1F1A, "\001\010\027\326\060\143\020\021\067"}, {0x1F1B, "\001\010\027\326\060\134\020\021\067"}, {0x1F1C, "\001\010\027\326\060\143\020\021\062"}, {0x1F1D, "\001\010\027\326\060\134\020\021\062"}, {0x1F20, "\001\005\027\224\060\143"}, {0x1F21, "\001\005\027\224\060\134"}, {0x1F22, "\001\005\027\224\060\143\020\021\067"}, {0x1F23, "\001\005\027\224\060\134\020\021\067"}, {0x1F24, "\001\005\027\224\060\143\020\021\062"}, {0x1F25, "\001\005\027\224\060\134\020\021\062"}, {0x1F26, "\001\005\027\224\060\143\020\072"}, {0x1F27, "\001\005\027\224\060\134\020\072"}, {0x1F28, "\001\010\027\224\060\143"}, {0x1F29, "\001\010\027\224\060\134"}, {0x1F2A, "\001\010\027\224\060\143\020\021\067"}, {0x1F2B, "\001\010\027\224\060\134\020\021\067"}, {0x1F2C, "\001\010\027\224\060\143\020\021\062"}, {0x1F2D, "\001\010\027\224\060\134\020\021\062"}, {0x1F2E, "\001\010\027\224\060\143\020\072"}, {0x1F2F, "\001\010\027\224\060\134\020\072"}, {0x1F30, "\001\005\027\104\060\143"}, {0x1F31, "\001\005\027\104\060\134"}, {0x1F32, "\001\005\027\104\060\143\020\021\067"}, {0x1F33, "\001\005\027\104\060\134\020\021\067"}, {0x1F34, "\001\005\027\104\060\143\020\021\062"}, {0x1F35, "\001\005\027\104\060\134\020\021\062"}, {0x1F36, "\001\005\027\104\060\143\020\072"}, {0x1F37, "\001\005\027\104\060\134\020\072"}, {0x1F38, "\001\010\027\104\060\143"}, {0x1F39, "\001\010\027\104\060\134"}, {0x1F3A, "\001\010\027\104\060\143\020\021\067"}, {0x1F3B, "\001\010\027\104\060\134\020\021\067"}, {0x1F3C, "\001\010\027\104\060\143\020\021\062"}, {0x1F3D, "\001\010\027\104\060\134\020\021\062"}, {0x1F3E, "\001\010\027\104\060\143\020\072"}, {0x1F3F, "\001\010\027\104\060\134\020\072"}, {0x1F40, "\001\005\027\355\036\060\143"}, {0x1F41, "\001\005\027\355\036\060\134"}, {0x1F42, "\001\005\027\355\036\060\143\020\021\067"}, {0x1F43, "\001\005\027\355\036\060\134\020\021\067"}, {0x1F44, "\001\005\027\355\036\060\143\020\021\062"}, {0x1F45, "\001\005\027\355\036\060\134\020\021\062"}, {0x1F48, "\001\010\027\355\036\060\143"}, {0x1F49, "\001\010\027\355\036\060\134"}, {0x1F4A, "\001\010\027\355\036\060\143\020\021\067"}, {0x1F4B, "\001\010\027\355\036\060\134\020\021\067"}, {0x1F4C, "\001\010\027\355\036\060\143\020\021\062"}, {0x1F4D, "\001\010\027\355\036\060\134\020\021\062"}, {0x1F50, "\001\005\027\262\060\143"}, {0x1F51, "\001\005\027\262\060\134"}, {0x1F52, "\001\005\027\262\060\143\020\021\067"}, {0x1F53, "\001\005\027\262\060\134\020\021\067"}, {0x1F54, "\001\005\027\262\060\143\020\021\062"}, {0x1F55, "\001\005\027\262\060\134\020\021\062"}, {0x1F56, "\001\005\027\262\060\143\020\072"}, {0x1F57, "\001\005\027\262\060\134\020\072"}, {0x1F59, "\001\010\027\262\060\134"}, {0x1F5B, "\001\010\027\262\060\134\020\021\067"}, {0x1F5D, "\001\010\027\262\060\134\020\021\062"}, {0x1F5F, "\001\010\027\262\060\134\020\072"}, {0x1F60, "\001\005\027\201\060\143"}, {0x1F61, "\001\005\027\201\060\134"}, {0x1F62, "\001\005\027\201\060\143\020\021\067"}, {0x1F63, "\001\005\027\201\060\134\020\021\067"}, {0x1F64, "\001\005\027\201\060\143\020\021\062"}, {0x1F65, "\001\005\027\201\060\134\020\021\062"}, {0x1F66, "\001\005\027\201\060\143\020\072"}, {0x1F67, "\001\005\027\201\060\134\020\072"}, {0x1F68, "\001\010\027\201\060\143"}, {0x1F69, "\001\010\027\201\060\134"}, {0x1F6A, "\001\010\027\201\060\143\020\021\067"}, {0x1F6B, "\001\010\027\201\060\134\020\021\067"}, {0x1F6C, "\001\010\027\201\060\143\020\021\062"}, {0x1F6D, "\001\010\027\201\060\134\020\021\062"}, {0x1F6E, "\001\010\027\201\060\143\020\072"}, {0x1F6F, "\001\010\027\201\060\134\020\072"}, {0x1F70, "\001\005\027\203\021\067"}, {0x1F71, "\001\005\027\203\021\062"}, {0x1F72, "\001\005\027\326\021\067"}, {0x1F73, "\001\005\027\326\021\062"}, {0x1F74, "\001\005\027\224\021\067"}, {0x1F75, "\001\005\027\224\021\062"}, {0x1F76, "\001\005\027\104\021\067"}, {0x1F77, "\001\005\027\104\021\062"}, {0x1F78, "\001\005\027\355\036\021\067"}, {0x1F79, "\001\005\027\355\036\021\062"}, {0x1F7A, "\001\005\027\262\021\067"}, {0x1F7B, "\001\005\027\262\021\062"}, {0x1F7C, "\001\005\027\201\021\067"}, {0x1F7D, "\001\005\027\201\021\062"}, {0x1F80, "\001\005\027\203\060\143\104\043"}, {0x1F81, "\001\005\027\203\060\134\104\043"}, {0x1F82, "\001\005\027\203\060\143\021\067\020\104\043"}, {0x1F83, "\001\005\027\203\060\134\021\067\020\104\043"}, {0x1F84, "\001\005\027\203\060\143\021\062\020\104\043"}, {0x1F85, "\001\005\027\203\060\134\021\062\020\104\043"}, {0x1F86, "\001\005\027\203\060\143\072\020\104\043"}, {0x1F87, "\001\005\027\203\060\134\072\020\104\043"}, {0x1F88, "\001\010\027\203\060\143\104\043"}, {0x1F89, "\001\010\027\203\060\134\104\043"}, {0x1F8A, "\001\010\027\203\060\143\021\067\020\104\043"}, {0x1F8B, "\001\010\027\203\060\134\021\067\020\104\043"}, {0x1F8C, "\001\010\027\203\060\143\021\062\020\104\043"}, {0x1F8D, "\001\010\027\203\060\134\021\062\020\104\043"}, {0x1F8E, "\001\010\027\203\060\143\072\020\104\043"}, {0x1F8F, "\001\010\027\203\060\134\072\020\104\043"}, {0x1F90, "\001\005\027\224\060\143\104\043"}, {0x1F91, "\001\005\027\224\060\134\104\043"}, {0x1F92, "\001\005\027\224\060\143\021\067\020\104\043"}, {0x1F93, "\001\005\027\224\060\134\021\067\020\104\043"}, {0x1F94, "\001\005\027\224\060\143\021\062\020\104\043"}, {0x1F95, "\001\005\027\224\060\134\021\062\020\104\043"}, {0x1F96, "\001\005\027\224\060\143\072\020\104\043"}, {0x1F97, "\001\005\027\224\060\134\072\020\104\043"}, {0x1F98, "\001\010\027\224\060\143\104\043"}, {0x1F99, "\001\010\027\224\060\134\104\043"}, {0x1F9A, "\001\010\027\224\060\143\021\067\020\104\043"}, {0x1F9B, "\001\010\027\224\060\134\021\067\020\104\043"}, {0x1F9C, "\001\010\027\224\060\143\021\062\020\104\043"}, {0x1F9D, "\001\010\027\224\060\134\021\062\020\104\043"}, {0x1F9E, "\001\010\027\224\060\143\072\020\104\043"}, {0x1F9F, "\001\010\027\224\060\134\072\020\104\043"}, {0x1FA0, "\001\005\027\201\060\143\104\043"}, {0x1FA1, "\001\005\027\201\060\134\104\043"}, {0x1FA2, "\001\005\027\201\060\143\021\067\020\104\043"}, {0x1FA3, "\001\005\027\201\060\134\021\067\020\104\043"}, {0x1FA4, "\001\005\027\201\060\143\021\062\020\104\043"}, {0x1FA5, "\001\005\027\201\060\134\021\062\020\104\043"}, {0x1FA6, "\001\005\027\201\060\143\072\020\104\043"}, {0x1FA7, "\001\005\027\201\060\134\072\020\104\043"}, {0x1FA8, "\001\010\027\201\060\143\104\043"}, {0x1FA9, "\001\010\027\201\060\134\104\043"}, {0x1FAA, "\001\010\027\201\060\143\021\067\020\104\043"}, {0x1FAB, "\001\010\027\201\060\134\021\067\020\104\043"}, {0x1FAC, "\001\010\027\201\060\143\021\062\020\104\043"}, {0x1FAD, "\001\010\027\201\060\134\021\062\020\104\043"}, {0x1FAE, "\001\010\027\201\060\143\072\020\104\043"}, {0x1FAF, "\001\010\027\201\060\134\072\020\104\043"}, {0x1FB0, "\001\005\027\203\356\133"}, {0x1FB1, "\001\005\027\203\174"}, {0x1FB2, "\001\005\027\203\021\067\104\043"}, {0x1FB3, "\001\005\027\203\104\043"}, {0x1FB4, "\001\005\027\203\021\062\104\043"}, {0x1FB6, "\001\005\027\203\072"}, {0x1FB7, "\001\005\027\203\072\104\043"}, {0x1FB8, "\001\010\027\203\356\133"}, {0x1FB9, "\001\010\027\203\174"}, {0x1FBA, "\001\010\027\203\021\067"}, {0x1FBB, "\001\010\027\203\021\062"}, {0x1FBC, "\001\010\027\203\104\043"}, {0x1FBD, "\360\142"}, {0x1FBE, "\104\043"}, {0x1FBF, "\060\143"}, {0x1FC0, "\072\317"}, {0x1FC1, "\355\061\020\072"}, {0x1FC2, "\001\005\027\224\021\067\104\043"}, {0x1FC3, "\001\005\027\224\104\043"}, {0x1FC4, "\001\005\027\224\021\062\104\043"}, {0x1FC6, "\001\005\027\224\072"}, {0x1FC7, "\001\005\027\224\072\104\043"}, {0x1FC8, "\001\010\027\326\021\067"}, {0x1FC9, "\001\010\027\326\021\062"}, {0x1FCA, "\001\010\027\224\021\067"}, {0x1FCB, "\001\010\027\224\021\062"}, {0x1FCC, "\001\010\027\224\104\043"}, {0x1FCD, "\060\143\020\021\067"}, {0x1FCE, "\060\143\020\021\062"}, {0x1FCF, "\060\143\020\072\317"}, {0x1FD0, "\001\005\027\104\356\133"}, {0x1FD1, "\001\005\027\104\174"}, {0x1FD2, "\001\005\027\104\355\061\020\021\067"}, {0x1FD3, "\001\005\027\104\355\061\020\021\062"}, {0x1FD6, "\001\005\027\104\072"}, {0x1FD7, "\001\005\027\104\355\061\020\072"}, {0x1FD8, "\001\010\027\104\356\133"}, {0x1FD9, "\001\010\027\104\174"}, {0x1FDA, "\001\010\027\104\021\067"}, {0x1FDB, "\001\010\027\104\021\062"}, {0x1FDD, "\060\134\020\021\067"}, {0x1FDE, "\060\134\020\021\062"}, {0x1FDF, "\060\134\020\072\317"}, {0x1FE0, "\001\005\027\262\356\133"}, {0x1FE1, "\001\005\027\262\174"}, {0x1FE2, "\001\005\027\262\355\061\020\021\067"}, {0x1FE3, "\001\005\027\262\355\061\020\021\062"}, {0x1FE4, "\001\005\027\356\036\060\143"}, {0x1FE5, "\001\005\027\356\036\060\134"}, {0x1FE6, "\001\005\027\262\072"}, {0x1FE7, "\001\005\027\262\355\061\020\072"}, {0x1FE8, "\001\010\027\262\356\133"}, {0x1FE9, "\001\010\027\262\174"}, {0x1FEA, "\001\010\027\262\021\067"}, {0x1FEB, "\001\010\027\262\021\062"}, {0x1FEC, "\001\010\027\356\036\060\134"}, {0x1FED, "\355\061\020\021\067"}, {0x1FEE, "\355\061\020\021\062"}, {0x1FEF, "\021\067\317"}, {0x1FF2, "\001\005\027\201\021\067\104\043"}, {0x1FF3, "\001\005\027\201\104\043"}, {0x1FF4, "\001\005\027\201\021\062\104\043"}, {0x1FF6, "\001\005\027\201\072"}, {0x1FF7, "\001\005\027\201\072\104\043"}, {0x1FF8, "\001\010\027\355\036\021\067"}, {0x1FF9, "\001\010\027\355\036\021\062"}, {0x1FFA, "\001\010\027\201\021\067"}, {0x1FFB, "\001\010\027\201\021\062"}, {0x1FFC, "\001\010\027\201\104\043"}, {0x1FFD, "\021\062\317"}, {0x1FFE, "\060\134"}, {0x2000, "\357\131"}, {0x2001, "\356\004"}, {0x2002, "\365\246"}, {0x2003, "\363\222"}, {0x2004, "\357\360\007\356\004"}, {0x2005, "\357\017\007\356\004"}, {0x2006, "\357\031\007\356\004"}, {0x2007, "\355\073\361\124"}, {0x2008, "\355\073\355\234"}, {0x2009, "\355\073\360\242"}, {0x200A, "\355\073\375\367"}, {0x200B, "\355\073\270\105"}, {0x200C, "\362\341\270\105"}, {0x200D, "\361\026\270\105"}, {0x200E, "\204\357\152"}, {0x200F, "\204\357\143"}, {0x2010, "\355\126\355\315"}, {0x2011, "\355\126\355\315\361\026"}, {0x2012, "\355\007\361\124"}, {0x2013, "\355\007\357\131"}, {0x2014, "\355\007\356\004"}, {0x2015, "\246\356\335"}, {0x2016, "\070\243\256"}, {0x2017, "\070\355\126\043"}, {0x2018, "\356\332\325"}, {0x2019, "\356\332"}, {0x201A, "\356\333\320"}, {0x201B, "\356\333\344\325"}, {0x201C, "\356\332\070\325"}, {0x201D, "\356\332\070"}, {0x201E, "\356\333\070\320"}, {0x201F, "\356\333\070\344\325"}, {0x2020, "\357\253"}, {0x2021, "\070\357\253"}, {0x2022, "\356\107"}, {0x2023, "\356\107\356\131"}, {0x2024, "\037\357\116\355\001"}, {0x2025, "\037\357\116\070"}, {0x2026, "\251\007\357\345"}, {0x2027, "\037\007\365\103\007\361\065"}, {0x2028, "\355\045\007\370\167"}, {0x2029, "\355\045\007\357\266"}, {0x202A, "\360\230\357\152"}, {0x202B, "\360\230\357\143"}, {0x202C, "\365\360\007\360\245\365\272"}, {0x202D, "\360\247\357\152"}, {0x202E, "\360\247\357\143"}, {0x202F, "\355\073\357\201\377\040"}, {0x2030, "\022\355\057\355\271"}, {0x2031, "\022\355\057\355\034\355\271"}, {0x2032, "\355\235"}, {0x2033, "\070\355\235"}, {0x2034, "\355\220\355\235"}, {0x2035, "\355\235\355\013"}, {0x2036, "\070\355\235\355\013"}, {0x2037, "\355\220\355\235\355\013"}, {0x2038, "\363\304\356\057"}, {0x2039, "\355\135\355\001\015\033\052"}, {0x203A, "\355\135\355\001\015\033\053"}, {0x203B, "\204\007\374\173"}, {0x203C, "\070\037\355\312"}, {0x203D, "\037\366\032"}, {0x203E, "\355\007\013\040"}, {0x203F, "\362\007\043"}, {0x2040, "\362\007\013\040"}, {0x2041, "\356\346\356\057"}, {0x2042, "\362\376"}, {0x2043, "\356\107\355\126\355\315"}, {0x2044, "\246\360\253"}, {0x2045, "\122\052\164\357\001"}, {0x2046, "\122\221\164\357\001"}, {0x2048, "\037\365\157"}, {0x2049, "\037\365\153"}, {0x204A, "\357\250\375\213\020"}, {0x204B, "\356\242\007\357\237\355\013"}, {0x204C, "\356\107\264\362\035\044\053"}, {0x204D, "\356\107\264\362\035\044\052"}, {0x204F, "\355\073\376\042"}, {0x206A, "\360\346\360\157\361\345"}, {0x206B, "\360\043\360\157\361\345"}, {0x206C, "\360\346\007\360\244\004"}, {0x206D, "\360\043\007\360\244\004"}, {0x206E, "\356\254\007\360\246\007\024\371\104"}, {0x206F, "\356\254\007\360\246\007\024\371\316"}, {0x2070, "\355\074\331"}, {0x2074, "\355\074\220"}, {0x2075, "\355\074\230"}, {0x2076, "\355\074\255"}, {0x2077, "\355\074\252"}, {0x2078, "\355\074\226"}, {0x2079, "\355\074\257"}, {0x207A, "\355\074\057\214"}, {0x207B, "\355\074\057\355\020"}, {0x207C, "\355\074\057\173"}, {0x207D, "\355\074\355\123\052"}, {0x207E, "\355\074\355\123\053"}, {0x207F, "\355\074\001\005\006\241"}, {0x2080, "\355\110\331"}, {0x2081, "\355\110\110"}, {0x2082, "\355\110\127"}, {0x2083, "\355\110\136"}, {0x2084, "\355\110\220"}, {0x2085, "\355\110\230"}, {0x2086, "\355\110\255"}, {0x2087, "\355\110\252"}, {0x2088, "\355\110\226"}, {0x2089, "\355\110\257"}, {0x208A, "\355\110\057\214"}, {0x208B, "\355\110\057\355\020"}, {0x208C, "\355\110\057\173"}, {0x208D, "\355\110\355\123\052"}, {0x208E, "\355\110\355\123\053"}, {0x20A0, "\022\377\025"}, {0x20A1, "\022\360\134"}, {0x20A2, "\022\365\122"}, {0x20A3, "\022\366\107\366\110"}, {0x20A4, "\022\370\173"}, {0x20A5, "\022\370\364"}, {0x20A6, "\022\371\100"}, {0x20A7, "\022\372\205"}, {0x20A8, "\022\357\316"}, {0x20A9, "\022\362\103"}, {0x20AA, "\022\371\326\363\337"}, {0x20AB, "\022\365\322"}, {0x20AC, "\022\366\027"}, {0x20AD, "\022\360\376"}, {0x20AE, "\022\375\236"}, {0x20AF, "\022\365\330"}, {0x20D0, "\026\362\061\015\033\052\013\040"}, {0x20D1, "\026\362\061\015\033\053\013\040"}, {0x20D2, "\026\243\256\356\221\356\056"}, {0x20D3, "\026\243\256\356\314\356\056"}, {0x20D4, "\026\061\013\355\215\356\105\013\040"}, {0x20D5, "\026\061\013\355\215\300\013\040"}, {0x20D6, "\026\061\015\033\052\013\040"}, {0x20D7, "\026\061\015\033\053\013\040"}, {0x20D8, "\026\302\356\315"}, {0x20D9, "\026\302\013\355\215\300\356\315"}, {0x20DA, "\026\302\013\355\215\356\105\356\315"}, {0x20DB, "\026\136\251\013\040"}, {0x20DC, "\026\220\251\013\040"}, {0x20DD, "\026\272\356\171"}, {0x20DE, "\026\035\356\171"}, {0x20DF, "\026\355\266\356\171"}, {0x20E0, "\026\272\356\171\020\246\355\044\356\073"}, {0x20E1, "\026\061\052\020\053\013\040"}, {0x20E2, "\026\360\026\356\171"}, {0x20E3, "\026\362\024\366\004\355\021"}, {0x2100, "\022\355\307\365\052\007"}, {0x2101, "\022\363\005\363\146\374\345\007"}, {0x2102, "\313\010\355\371"}, {0x2103, "\357\130\363\246"}, {0x2104, "\022\243\007\356\307"}, {0x2105, "\022\356\300\363\234"}, {0x2106, "\022\363\220\375\370"}, {0x2107, "\357\105\365\152"}, {0x2108, "\374\236"}, {0x2109, "\357\130\366\040"}, {0x210A, "\005\266\007\355\144"}, {0x210B, "\010\237\007\355\144"}, {0x210C, "\010\237\356\205"}, {0x210D, "\237\010\355\371"}, {0x210E, "\357\105\007\361\204"}, {0x210F, "\357\105\007\361\204\355\146\127\355\233"}, {0x2110, "\010\103\007\355\144"}, {0x2111, "\010\103\356\205"}, {0x2112, "\010\211\007\355\144"}, {0x2113, "\005\211\007\355\144"}, {0x2114, "\022\211\334\232"}, {0x2115, "\241\010\355\371"}, {0x2116, "\022\361\125"}, {0x2117, "\360\137\007\372\215"}, {0x2118, "\154\365\375\007\376\100"}, {0x2119, "\355\021\010\355\371"}, {0x211A, "\355\173\010\355\371"}, {0x211B, "\010\167\007\355\144"}, {0x211C, "\010\167\356\205"}, {0x211D, "\167\010\355\371"}, {0x211E, "\372\106"}, {0x211F, "\374\175"}, {0x2120, "\022\356\300\204\007\374\254"}, {0x2121, "\022\357\050"}, {0x2122, "\022\356\300\204\007\365\046"}, {0x2123, "\376\017"}, {0x2124, "\271\010\355\371"}, {0x2125, "\022\372\075"}, {0x2126, "\022\356\365"}, {0x2127, "\022\356\365\355\143"}, {0x2128, "\010\271\356\205"}, {0x2129, "\005\027\104\325"}, {0x212A, "\022\367\376"}, {0x212B, "\022\362\326"}, {0x212C, "\010\334\007\355\144"}, {0x212D, "\010\313\356\205"}, {0x212E, "\022\366\022"}, {0x212F, "\005\130\007\355\144"}, {0x2130, "\010\130\007\355\144"}, {0x2131, "\010\355\062\007\355\144"}, {0x2132, "\010\355\062\325"}, {0x2133, "\010\276\007\355\144"}, {0x2134, "\005\064\007\355\144"}, {0x2135, "\022\355\372"}, {0x2136, "\022\357\072"}, {0x2137, "\022\366\224"}, {0x2138, "\022\356\317"}, {0x2139, "\103\363\173\365\155"}, {0x213A, "\355\173\010\356\153"}, {0x2153, "\355\105\110\357\360"}, {0x2154, "\355\105\127\357\360"}, {0x2155, "\355\105\110\357\102"}, {0x2156, "\355\105\127\357\103"}, {0x2157, "\355\105\136\357\103"}, {0x2158, "\355\105\220\357\103"}, {0x2159, "\355\105\110\357\031"}, {0x215A, "\355\105\230\374\323"}, {0x215B, "\355\105\110\356\210"}, {0x215C, "\355\105\136\355\256"}, {0x215D, "\355\105\230\355\256"}, {0x215E, "\355\105\252\355\256"}, {0x215F, "\356\103\360\253\110"}, {0x2160, "\024\260\110"}, {0x2161, "\024\260\127"}, {0x2162, "\024\260\136"}, {0x2163, "\024\260\220"}, {0x2164, "\024\260\230"}, {0x2165, "\024\260\255"}, {0x2166, "\024\260\252"}, {0x2167, "\024\260\226"}, {0x2168, "\024\260\257"}, {0x2169, "\024\260\355\034"}, {0x216A, "\024\260\356\027"}, {0x216B, "\024\260\355\317"}, {0x216C, "\024\260\357\101"}, {0x216D, "\024\260\355\245"}, {0x216E, "\024\260\230\360\112"}, {0x216F, "\024\260\355\271"}, {0x2170, "\024\260\005\110"}, {0x2171, "\024\260\005\127"}, {0x2172, "\024\260\005\136"}, {0x2173, "\024\260\005\220"}, {0x2174, "\024\260\005\230"}, {0x2175, "\024\260\005\255"}, {0x2176, "\024\260\005\252"}, {0x2177, "\024\260\005\226"}, {0x2178, "\024\260\005\257"}, {0x2179, "\024\260\005\355\034"}, {0x217A, "\024\260\005\356\027"}, {0x217B, "\024\260\005\355\317"}, {0x217C, "\024\260\005\357\101"}, {0x217D, "\024\260\005\355\245"}, {0x217E, "\024\260\005\230\360\112"}, {0x217F, "\024\260\005\355\271"}, {0x2180, "\024\260\355\271\313\275"}, {0x2181, "\024\260\230\355\271"}, {0x2182, "\024\260\355\034\355\271"}, {0x2183, "\024\260\355\245\325"}, {0x2190, "\061\015\033\052"}, {0x2191, "\061\015\050\102"}, {0x2192, "\061\015\033\053"}, {0x2193, "\061\015\050\101"}, {0x2194, "\061\052\020\053"}, {0x2195, "\061\357\166"}, {0x2196, "\061\356\024"}, {0x2197, "\061\356\023"}, {0x2198, "\061\355\353"}, {0x2199, "\061\357\043"}, {0x219A, "\061\015\033\052\355\376"}, {0x219B, "\061\015\033\053\355\376"}, {0x219C, "\061\015\033\052\356\367"}, {0x219D, "\061\015\033\053\356\367"}, {0x219E, "\061\015\033\052\044\127\357\003"}, {0x219F, "\061\015\050\102\044\127\357\003"}, {0x21A0, "\061\015\033\053\044\127\357\003"}, {0x21A1, "\061\015\050\101\044\127\357\003"}, {0x21A2, "\061\015\033\052\044\355\253"}, {0x21A3, "\061\015\033\053\044\355\253"}, {0x21A4, "\061\355\314\355\014\015\033\052"}, {0x21A5, "\061\355\314\355\014\015\050\102"}, {0x21A6, "\061\355\314\355\014\015\033\053"}, {0x21A7, "\061\355\314\355\014\015\050\101"}, {0x21A8, "\061\357\166\355\146\363\036"}, {0x21A9, "\061\015\033\052\164\122"}, {0x21AA, "\061\015\033\053\164\122"}, {0x21AB, "\061\015\033\052\164\357\071"}, {0x21AC, "\061\015\033\053\164\357\071"}, {0x21AD, "\061\360\261\356\367"}, {0x21AE, "\061\360\261\355\376"}, {0x21AF, "\061\015\050\101\013\376\300"}, {0x21B0, "\061\015\050\102\164\355\003\015\033\052"}, {0x21B1, "\061\015\050\102\164\355\003\015\033\053"}, {0x21B2, "\061\015\050\101\164\355\003\015\033\052"}, {0x21B3, "\061\015\050\101\164\355\003\015\033\053"}, {0x21B4, "\061\015\033\053\164\273\015\050\101"}, {0x21B5, "\061\015\050\101\164\273\015\033\052"}, {0x21B6, "\061\361\307\013\355\215\356\105\013\040"}, {0x21B7, "\061\361\307\013\355\215\300\013\040"}, {0x21B8, "\061\356\024\356\213\375\371\246\356\221"}, {0x21B9, "\061\015\033\052\356\213\110\355\014\356\030\061\015\033\053\356\213\110\355\014"}, {0x21BA, "\061\013\355\215\356\105\044\272\355\343"}, {0x21BB, "\061\013\355\215\300\044\272\355\343"}, {0x21BC, "\355\165\015\033\052\164\355\250\015\050\102"}, {0x21BD, "\355\165\015\033\052\164\355\250\015\050\101"}, {0x21BE, "\355\165\015\050\102\164\355\250\015\033\053"}, {0x21BF, "\355\165\015\050\102\164\355\250\015\033\052"}, {0x21C0, "\355\165\015\033\053\164\355\250\015\050\102"}, {0x21C1, "\355\165\015\033\053\164\355\250\015\050\101"}, {0x21C2, "\355\165\015\050\101\164\355\250\015\033\053"}, {0x21C3, "\355\165\015\050\101\164\355\250\015\033\052"}, {0x21C4, "\061\015\033\053\356\030\061\015\033\052"}, {0x21C5, "\061\015\050\102\044\052\357\120\061\015\050\101"}, {0x21C6, "\061\015\033\052\356\030\061\015\033\053"}, {0x21C7, "\356\373\007\356\330\015\033\052"}, {0x21C8, "\356\373\007\356\330\015\050\102"}, {0x21C9, "\356\373\007\356\330\015\033\053"}, {0x21CA, "\356\373\007\356\330\015\050\101"}, {0x21CB, "\355\165\015\033\052\356\030\355\165\015\033\053"}, {0x21CC, "\355\165\015\033\053\356\030\355\165\015\033\052"}, {0x21CD, "\070\061\015\033\052\355\376"}, {0x21CE, "\070\061\052\020\053\355\376"}, {0x21CF, "\070\061\015\033\053\355\376"}, {0x21D0, "\070\061\015\033\052"}, {0x21D1, "\070\061\015\050\102"}, {0x21D2, "\070\061\015\033\053"}, {0x21D3, "\070\061\015\050\101"}, {0x21D4, "\070\061\052\020\053"}, {0x21D5, "\070\061\357\166"}, {0x21D6, "\070\061\356\024"}, {0x21D7, "\070\061\356\023"}, {0x21D8, "\070\061\355\353"}, {0x21D9, "\070\061\357\043"}, {0x21DA, "\355\220\061\015\033\052"}, {0x21DB, "\355\220\061\015\033\053"}, {0x21DC, "\061\015\033\052\013\362\010"}, {0x21DD, "\061\015\033\053\013\362\010"}, {0x21DE, "\061\015\050\102\164\070\246"}, {0x21DF, "\061\015\050\101\164\070\246"}, {0x21E0, "\061\357\006\015\033\052"}, {0x21E1, "\061\357\006\015\050\102"}, {0x21E2, "\061\357\006\015\033\053"}, {0x21E3, "\061\357\006\015\050\101"}, {0x21E4, "\061\015\033\052\356\213\110\355\014"}, {0x21E5, "\061\015\033\053\356\213\110\355\014"}, {0x21E6, "\061\356\137\015\033\052"}, {0x21E7, "\061\356\137\015\050\102"}, {0x21E8, "\061\356\137\015\033\053"}, {0x21E9, "\061\356\137\015\050\101"}, {0x21EA, "\061\356\137\015\050\102\044\356\031\355\314\355\014"}, {0x21EB, "\061\316\015\050\102\355\146\357\032"}, {0x21EC, "\061\316\015\050\102\355\146\357\032\020\355\126\242"}, {0x21ED, "\061\316\015\050\102\355\146\357\032\020\246\256"}, {0x21EE, "\070\061\316\015\050\102"}, {0x21EF, "\070\061\316\015\050\102\355\146\357\032"}, {0x21F0, "\061\316\015\033\053\362\351\355\146\361\077"}, {0x21F1, "\061\356\024\013\360\231"}, {0x21F2, "\061\355\353\013\360\231"}, {0x21F3, "\061\316\015\050\102\020\050\101"}, {0x2200, "\355\057\375\237"}, {0x2201, "\365\050"}, {0x2202, "\365\362\372\160"}, {0x2203, "\357\174\366\035"}, {0x2204, "\357\174\371\072\355\056"}, {0x2205, "\366\007\376\022"}, {0x2206, "\367\205"}, {0x2207, "\371\076"}, {0x2208, "\360\051\044"}, {0x2209, "\371\070\355\056\044"}, {0x220A, "\175\360\051\044"}, {0x220B, "\356\055\355\246\360\027"}, {0x220C, "\355\140\356\055\355\056\355\246\360\027"}, {0x220D, "\175\356\055\355\246\360\027"}, {0x220E, "\360\107\373\370\366\042\365\357"}, {0x220F, "\356\106\007\033\356\012"}, {0x2210, "\365\070\007\033\356\012"}, {0x2211, "\374\353\007\033\356\012"}, {0x2212, "\057\355\020"}, {0x2213, "\057\371\011"}, {0x2214, "\214\356\034"}, {0x2215, "\246\355\044\007\357\135"}, {0x2216, "\360\176\365\150"}, {0x2217, "\355\171\355\115"}, {0x2218, "\355\171\302"}, {0x2219, "\355\171\356\107"}, {0x221A, "\357\304\356\053"}, {0x221B, "\357\304\365\124"}, {0x221C, "\357\304\361\243"}, {0x221D, "\373\271\044"}, {0x221E, "\367\207"}, {0x221F, "\355\374\221"}, {0x2220, "\355\374"}, {0x2221, "\355\374\361\053"}, {0x2222, "\355\374\374\365"}, {0x2223, "\356\174\110\360\203\007"}, {0x2224, "\371\071\355\056\110\360\203\007"}, {0x2225, "\357\267\044"}, {0x2226, "\355\043\357\267\044"}, {0x2227, "\020\356\100"}, {0x2228, "\113\356\100"}, {0x2229, "\357\204"}, {0x222A, "\357\374"}, {0x222B, "\355\257"}, {0x222C, "\355\257\070"}, {0x222D, "\355\257\355\220"}, {0x222E, "\355\257\007\355\132"}, {0x222F, "\355\257\007\375\043"}, {0x2230, "\355\257\007\376\050"}, {0x2231, "\355\257\013\355\215\300"}, {0x2232, "\355\257\007\355\132\013\355\215\300"}, {0x2233, "\355\257\007\355\132\013\355\215\356\105"}, {0x2234, "\355\232\365\062"}, {0x2235, "\372\155\355\023"}, {0x2236, "\374\040"}, {0x2237, "\361\224"}, {0x2238, "\355\020\356\034"}, {0x2239, "\366\034"}, {0x223A, "\361\224\366\301"}, {0x223B, "\360\327"}, {0x223C, "\355\171\172"}, {0x223D, "\355\171\172\355\143"}, {0x223E, "\223\356\153\355\143"}, {0x223F, "\374\317"}, {0x2240, "\356\106\365\107"}, {0x2241, "\355\043\172"}, {0x2242, "\355\020\172"}, {0x2243, "\360\056\173\044"}, {0x2244, "\355\043\360\056\173\044"}, {0x2245, "\356\140\173\044"}, {0x2246, "\356\140\355\267\355\043\357\341\173\044"}, {0x2247, "\244\356\140\244\357\341\173\044"}, {0x2248, "\357\011\173\044"}, {0x2249, "\355\043\357\011\173\044"}, {0x224A, "\357\011\173\113\173\044"}, {0x224B, "\355\220\172"}, {0x224C, "\366\010\173\044"}, {0x224D, "\355\130\044"}, {0x224E, "\360\314\355\130\044"}, {0x224F, "\360\176\075"}, {0x2250, "\375\160\015\033\370\170"}, {0x2251, "\360\314\173\044"}, {0x2252, "\356\140\173\044\113\356\017\007"}, {0x2253, "\356\017\007\113\356\140\173\044"}, {0x2254, "\355\103\173"}, {0x2255, "\173\355\103"}, {0x2256, "\302\355\247\173"}, {0x2257, "\173\164\302\013\040"}, {0x2258, "\365\075\044"}, {0x2259, "\366\021"}, {0x225A, "\377\034\044"}, {0x225B, "\173\164\355\015\013\040"}, {0x225C, "\173\356\060"}, {0x225D, "\173\355\232\365\355\044"}, {0x225E, "\361\053\355\232"}, {0x225F, "\377\026\013\365\326"}, {0x2260, "\355\043\173\044"}, {0x2261, "\360\343\044"}, {0x2262, "\355\043\360\343\044"}, {0x2263, "\357\341\355\130\044"}, {0x2264, "\214\175\113\173\044"}, {0x2265, "\214\340\113\173\044"}, {0x2266, "\214\175\355\023\356\030\173\044"}, {0x2267, "\214\340\355\023\356\030\173\044"}, {0x2268, "\214\175\355\267\355\043\173\044"}, {0x2269, "\214\340\355\267\355\043\173\044"}, {0x226A, "\360\072\214\175\355\023"}, {0x226B, "\360\072\214\340\355\023"}, {0x226C, "\075"}, {0x226D, "\355\043\355\130\044"}, {0x226E, "\355\056\214\175\355\023"}, {0x226F, "\355\056\214\340\355\023"}, {0x2270, "\244\214\175\244\173\044"}, {0x2271, "\244\214\340\244\173\044"}, {0x2272, "\214\175\113\355\130\044"}, {0x2273, "\214\340\113\355\130\044"}, {0x2274, "\244\214\175\244\355\130\044"}, {0x2275, "\244\214\340\244\355\130\044"}, {0x2276, "\214\175\113\214\340\355\023"}, {0x2277, "\214\340\113\214\175\355\023"}, {0x2278, "\244\214\175\244\214\340\355\023"}, {0x2279, "\244\214\340\244\214\175\355\023"}, {0x227A, "\356\244"}, {0x227B, "\356\117"}, {0x227C, "\356\244\113\356\174\173\044"}, {0x227D, "\356\117\113\356\174\173\044"}, {0x227E, "\356\244\113\356\174\355\130\044"}, {0x227F, "\356\117\113\356\174\355\130\044"}, {0x2280, "\355\140\356\244\355\056"}, {0x2281, "\355\140\356\117\355\056"}, {0x2282, "\356\116\007"}, {0x2283, "\356\120\007"}, {0x2284, "\355\056\110\356\116\007"}, {0x2285, "\355\056\110\356\120\007"}, {0x2286, "\356\116\113\173\044"}, {0x2287, "\356\120\113\173\044"}, {0x2288, "\244\110\356\116\244\173\044"}, {0x2289, "\244\110\356\120\244\173\044"}, {0x228A, "\356\116\355\267\355\043\173\044"}, {0x228B, "\356\120\355\267\355\043\173\044"}, {0x228C, "\357\242"}, {0x228D, "\356\355\007\357\242"}, {0x228E, "\357\374\007\357\242"}, {0x228F, "\356\017\356\053\007"}, {0x2290, "\356\233\035\007"}, {0x2291, "\356\017\356\053\113\173\044"}, {0x2292, "\356\233\035\113\173\044"}, {0x2293, "\363\262\035"}, {0x2294, "\365\102\356\053"}, {0x2295, "\214\051"}, {0x2296, "\355\020\051"}, {0x2297, "\357\243\355\232\051"}, {0x2298, "\246\355\044\007\357\135\177"}, {0x2299, "\355\171\037\051"}, {0x229A, "\355\171\302\051"}, {0x229B, "\355\171\355\115\051"}, {0x229C, "\173\051"}, {0x229D, "\355\007\051"}, {0x229E, "\214\356\170"}, {0x229F, "\355\020\356\170"}, {0x22A0, "\357\243\355\232\356\170"}, {0x22A1, "\355\171\037\356\170"}, {0x22A2, "\355\014\221"}, {0x22A3, "\355\014\052"}, {0x22A4, "\355\014\015\050\101"}, {0x22A5, "\355\014\015\050\102"}, {0x22A6, "\362\374"}, {0x22A7, "\371\006"}, {0x22A8, "\362\076"}, {0x22A9, "\372\067"}, {0x22AA, "\246\256\355\220\164\357\362\044\053"}, {0x22AB, "\246\256\070\164\357\362\044\053\070"}, {0x22AC, "\355\140\373\273\355\056"}, {0x22AD, "\355\056\362\076"}, {0x22AE, "\371\073\355\056"}, {0x22AF, "\371\317\256\070\164\357\362\044\053\070"}, {0x22B0, "\373\265\357\037\361\254"}, {0x22B1, "\356\117\357\037\361\254"}, {0x22B2, "\355\352\355\231\007"}, {0x22B3, "\356\055\355\246\355\352\355\231"}, {0x22B4, "\355\352\355\231\113\173\044"}, {0x22B5, "\356\055\355\246\355\352\355\231\113\173\044"}, {0x22B6, "\356\233\007"}, {0x22B7, "\356\017\007"}, {0x22B8, "\371\031"}, {0x22B9, "\370\277\366\325\365\060"}, {0x22BA, "\367\220"}, {0x22BB, "\113\366\033"}, {0x22BC, "\355\043\020"}, {0x22BD, "\355\043\113"}, {0x22BE, "\355\374\221\164\355\202"}, {0x22BF, "\346\356\111"}, {0x22C0, "\020\356\100\007\033\356\012"}, {0x22C1, "\113\356\100\007\033\356\012"}, {0x22C2, "\357\204\007\033\356\012"}, {0x22C3, "\374\200\007\033\356\012"}, {0x22C4, "\355\171\355\266"}, {0x22C5, "\355\171\037"}, {0x22C6, "\355\171\355\015"}, {0x22C7, "\365\275\357\243"}, {0x22C8, "\356\362\361\152"}, {0x22C9, "\356\106\357\027\044\052\007\360\234\355\231"}, {0x22CA, "\356\106\357\027\044\053\007\360\234\355\231"}, {0x22CB, "\356\106\357\027\044\052"}, {0x22CC, "\356\106\357\027\044\053"}, {0x22CD, "\355\020\172\355\143"}, {0x22CE, "\113\356\100\361\252"}, {0x22CF, "\020\356\100\361\252"}, {0x22D0, "\356\116\070"}, {0x22D1, "\356\120\070"}, {0x22D2, "\357\204\070"}, {0x22D3, "\357\374\070"}, {0x22D4, "\360\250"}, {0x22D5, "\173\020\357\267\044"}, {0x22D6, "\214\175\355\023\356\034"}, {0x22D7, "\214\340\355\023\356\034"}, {0x22D8, "\360\135\214\175\355\023"}, {0x22D9, "\360\135\214\340\355\023"}, {0x22DA, "\214\175\113\173\113\214\340\355\023"}, {0x22DB, "\214\340\113\173\113\214\175\355\023"}, {0x22DC, "\173\113\214\175\355\023"}, {0x22DD, "\173\113\214\340\355\023"}, {0x22DE, "\173\113\356\244"}, {0x22DF, "\365\371\113\356\117"}, {0x22E0, "\244\361\226\244\173\044"}, {0x22E1, "\244\361\341\244\173\044"}, {0x22E2, "\244\356\017\356\053\244\173\044"}, {0x22E3, "\244\356\233\035\244\173\044"}, {0x22E4, "\356\017\035\113\357\134\007"}, {0x22E5, "\356\233\035\113\357\134\007"}, {0x22E6, "\214\175\355\267\355\043\355\130\044"}, {0x22E7, "\214\340\355\267\355\043\355\130\044"}, {0x22E8, "\361\226\355\267\355\043\355\130\044"}, {0x22E9, "\361\341\355\267\355\043\355\130\044"}, {0x22EA, "\355\056\110\355\352\355\231\007"}, {0x22EB, "\355\140\356\055\355\056\355\246\355\352\355\231"}, {0x22EC, "\244\355\352\355\231\244\173\044"}, {0x22ED, "\244\173\244\365\063\355\246\355\352\355\231"}, {0x22EE, "\136\251\375\045"}, {0x22EF, "\136\251\371\062"}, {0x22F0, "\136\251\360\175\015\050\273\102\044\053"}, {0x22F1, "\136\251\360\175\015\050\273\101\044\053"}, {0x2300, "\022\365\263"}, {0x2301, "\061\377\030"}, {0x2302, "\370\255"}, {0x2303, "\355\003\007\061\015\050\102"}, {0x2304, "\355\003\007\061\015\050\101"}, {0x2305, "\373\270"}, {0x2306, "\372\203"}, {0x2307, "\243\356\367"}, {0x2308, "\361\202\044\052"}, {0x2309, "\361\202\044\053"}, {0x230A, "\361\203\044\052"}, {0x230B, "\361\203\044\053"}, {0x230C, "\356\251\355\353"}, {0x230D, "\356\251\357\043"}, {0x230E, "\356\251\356\023"}, {0x230F, "\356\251\356\024"}, {0x2310, "\057\356\364\355\013"}, {0x2311, "\372\163\356\053"}, {0x2312, "\355\202"}, {0x2313, "\374\244"}, {0x2314, "\374\243"}, {0x2315, "\366\006\375\357"}, {0x2316, "\356\251\007\363\226"}, {0x2317, "\035\007\376\044"}, {0x2318, "\022\007\037\365\160"}, {0x2319, "\057\356\364\325"}, {0x231A, "\371\017"}, {0x231B, "\374\206"}, {0x231C, "\273\356\024"}, {0x231D, "\273\356\023"}, {0x231E, "\273\357\043"}, {0x231F, "\273\355\353"}, {0x2320, "\353\355\354\360\156"}, {0x2321, "\353\356\020\360\156"}, {0x2322, "\361\067"}, {0x2323, "\374\361"}, {0x2324, "\355\003\007\061\015\050\102\075\127\362\033\367\103"}, {0x2325, "\362\024\372\104"}, {0x2326, "\365\370\044\053"}, {0x2327, "\355\026\355\247\356\111"}, {0x2328, "\365\040"}, {0x2329, "\122\015\033\052"}, {0x232A, "\122\015\033\053"}, {0x232B, "\365\367\044\052"}, {0x232C, "\362\333\007\363\110"}, {0x232D, "\365\140"}, {0x232E, "\373\266\367\104"}, {0x232F, "\375\054"}, {0x2330, "\365\110\375\233"}, {0x2331, "\372\111\007\370\320"}, {0x2332, "\374\177\365\056"}, {0x2333, "\372\177"}, {0x2334, "\362\321"}, {0x2335, "\366\106"}, {0x2336, "\022\007\154\155\374\035"}, {0x2337, "\022\007\154\155\355\075\357\234"}, {0x2338, "\022\007\154\155\377\035"}, {0x2339, "\022\007\154\155\365\321"}, {0x233A, "\022\007\154\155\374\063"}, {0x233B, "\022\007\154\155\362\372"}, {0x233C, "\022\007\154\155\374\062"}, {0x233D, "\022\007\154\155\366\115"}, {0x233E, "\022\007\154\155\363\104"}, {0x233F, "\022\007\154\155\365\100\232"}, {0x2340, "\022\007\154\155\365\065\355\376"}, {0x2341, "\022\007\154\155\355\075\355\044"}, {0x2342, "\022\007\154\155\355\075\355\044\356\073"}, {0x2343, "\022\007\154\155\355\075\214\175\355\023"}, {0x2344, "\022\007\154\155\355\075\214\340\355\023"}, {0x2345, "\022\007\154\155\356\302\015\033\052"}, {0x2346, "\022\007\154\155\356\302\015\033\053"}, {0x2347, "\022\007\154\155\355\075\370\163"}, {0x2348, "\022\007\154\155\355\075\365\061"}, {0x2349, "\022\007\154\155\361\303"}, {0x234A, "\022\007\154\155\355\014\015\050\101\355\216"}, {0x234B, "\022\007\154\155\374\224"}, {0x234C, "\022\007\154\155\355\075\072\355\143"}, {0x234D, "\022\007\154\155\355\075\356\060"}, {0x234E, "\022\007\154\155\360\245"}, {0x234F, "\022\007\154\155\356\302\015\050\102"}, {0x2350, "\022\007\154\155\355\075\357\100"}, {0x2351, "\022\007\154\155\355\014\015\050\102"}, {0x2352, "\022\007\154\155\363\235"}, {0x2353, "\022\007\154\155\355\075\072"}, {0x2354, "\022\007\154\155\355\075\365\244"}, {0x2355, "\022\007\154\155\366\036"}, {0x2356, "\022\007\154\155\356\302\015\050\101"}, {0x2357, "\022\007\154\155\355\075\366\003"}, {0x2358, "\022\007\154\155\355\306\355\216"}, {0x2359, "\022\007\154\155\356\060\355\216"}, {0x235A, "\022\007\154\155\355\266\355\216"}, {0x235B, "\022\007\154\155\175\302\355\216"}, {0x235C, "\022\007\154\155\302\355\216"}, {0x235D, "\022\007\154\155\362\273"}, {0x235E, "\022\007\154\155\355\306\356\170"}, {0x235F, "\022\007\154\155\363\354"}, {0x2360, "\022\007\154\155\363\155\035"}, {0x2361, "\022\007\154\155\375\072"}, {0x2362, "\022\007\154\155\365\072"}, {0x2363, "\022\007\154\155\375\075"}, {0x2364, "\022\007\154\155\370\366"}, {0x2365, "\022\007\154\155\365\267"}, {0x2366, "\022\007\154\155\360\250"}, {0x2367, "\022\007\154\155\357\074"}, {0x2368, "\022\007\154\155\361\067"}, {0x2369, "\022\007\154\155\371\010"}, {0x236A, "\022\007\154\155\363\032"}, {0x236B, "\022\007\154\155\376\015"}, {0x236C, "\022\007\154\155\376\301"}, {0x236D, "\022\007\154\155\362\316"}, {0x236E, "\022\007\154\155\356\104\355\216"}, {0x236F, "\022\007\154\155\355\075\357\134\007"}, {0x2370, "\022\007\154\155\355\075\367\210"}, {0x2371, "\022\007\154\155\371\320"}, {0x2372, "\022\007\154\155\371\321"}, {0x2373, "\022\007\154\155\104"}, {0x2374, "\022\007\154\155\356\036"}, {0x2375, "\022\007\154\155\201"}, {0x2376, "\022\007\154\155\203\355\216"}, {0x2377, "\022\007\154\155\326\355\216"}, {0x2378, "\022\007\154\155\104\355\216"}, {0x2379, "\022\007\154\155\201\355\216"}, {0x237A, "\022\007\154\155\203"}, {0x237B, "\057\007\371\322"}, {0x237D, "\363\224\361\147\044\377\033"}, {0x237E, "\022\374\354"}, {0x237F, "\243\256\044\037\355\137"}, {0x2380, "\022\356\057"}, {0x2381, "\022\007\361\325\360\136"}, {0x2382, "\022\007\361\325\365\273"}, {0x2383, "\022\365\156"}, {0x2384, "\022\007\365\051"}, {0x2385, "\035\147\375\251\013\355\175\356\307\357\120\243\256"}, {0x2386, "\022\365\151"}, {0x2387, "\022\360\047"}, {0x2388, "\022\361\274\007\360\067"}, {0x2389, "\246\356\335\357\145\177"}, {0x238A, "\346\355\003\015\050\101\051"}, {0x238B, "\272\355\131\044\061\356\024"}, {0x238C, "\022\365\353"}, {0x238D, "\022\371\014"}, {0x238E, "\022\367\154"}, {0x238F, "\022\357\033\013\360\132\355\343\007\375\335"}, {0x2390, "\022\357\033\013\360\132\355\343\007\375\336"}, {0x2391, "\022\357\033\361\157\362\272"}, {0x2392, "\022\357\033\361\157\377\031"}, {0x2393, "\022\365\104\360\136\263\127"}, {0x2394, "\022\154\370\202"}, {0x2395, "\022\007\154\155\355\075"}, {0x2396, "\022\007\017\007\355\045\360\221"}, {0x2397, "\356\372\373\275"}, {0x2398, "\356\372\361\342"}, {0x2399, "\022\360\345\360\026"}, {0x239A, "\022\371\176\360\026"}, {0x2400, "\022\355\057\361\122"}, {0x2401, "\022\355\320\360\155"}, {0x2402, "\022\355\320\007\357\046"}, {0x2403, "\022\116\007\357\046"}, {0x2404, "\022\116\007\356\045"}, {0x2405, "\022\360\167"}, {0x2406, "\022\360\152\007\357\025"}, {0x2407, "\022\007\361\323"}, {0x2408, "\022\355\073\360\052"}, {0x2409, "\022\007\357\045\356\335"}, {0x240A, "\022\007\360\113\007\243"}, {0x240B, "\022\007\357\045\256"}, {0x240C, "\022\007\374\226\007\356\372"}, {0x240D, "\022\007\361\257\007\360\114"}, {0x240E, "\022\360\331\356\313"}, {0x240F, "\022\013\356\313"}, {0x2410, "\022\360\025\356\045"}, {0x2411, "\022\007\355\155\007\356\322\110"}, {0x2412, "\022\007\355\155\007\356\322\127"}, {0x2413, "\022\007\355\155\007\356\322\136"}, {0x2414, "\022\007\355\155\007\356\322\220"}, {0x2415, "\022\360\152\007\357\025\300"}, {0x2416, "\022\007\361\346"}, {0x2417, "\022\007\116\007\355\016\007\356\045"}, {0x2418, "\022\360\153"}, {0x2419, "\022\007\116\007\361\343"}, {0x241A, "\022\007\357\343"}, {0x241B, "\022\365\164"}, {0x241C, "\022\355\045\007\366\065"}, {0x241D, "\022\355\045\007\366\250"}, {0x241E, "\022\355\045\365\147"}, {0x241F, "\022\355\045\365\163"}, {0x2420, "\022\355\057\355\073"}, {0x2421, "\022\007\361\344"}, {0x2422, "\022\376\045\355\057\370\122"}, {0x2423, "\363\157\361\147"}, {0x2424, "\022\007\371\327\243"}, {0x2425, "\022\007\375\042\263\127"}, {0x2426, "\022\007\357\343\263\127"}, {0x2440, "\122\355\211"}, {0x2441, "\363\255\355\211"}, {0x2442, "\360\251\355\211"}, {0x2443, "\360\251\355\076\355\211"}, {0x2444, "\357\071\007\363\244\355\211"}, {0x2445, "\356\362\361\152\355\211"}, {0x2446, "\367\173\007\375\033\363\026\355\211"}, {0x2447, "\371\015\212\363\336\355\211"}, {0x2448, "\355\007\355\211"}, {0x2449, "\361\125\007\365\053\355\211"}, {0x244A, "\070\246\355\044\356\073\355\211"}, {0x2460, "\024\110\051"}, {0x2461, "\024\127\051"}, {0x2462, "\024\136\051"}, {0x2463, "\024\220\051"}, {0x2464, "\024\230\051"}, {0x2465, "\024\255\051"}, {0x2466, "\024\252\051"}, {0x2467, "\024\226\051"}, {0x2468, "\024\257\051"}, {0x2469, "\210\355\034\051"}, {0x246A, "\210\356\027\051"}, {0x246B, "\210\355\317\051"}, {0x246C, "\210\356\260\051"}, {0x246D, "\210\356\246\051"}, {0x246E, "\210\356\250\051"}, {0x246F, "\210\356\043\051"}, {0x2470, "\210\356\162\051"}, {0x2471, "\210\356\160\051"}, {0x2472, "\210\356\161\051"}, {0x2473, "\210\356\050\051"}, {0x2474, "\024\110\075\077"}, {0x2475, "\024\127\075\077"}, {0x2476, "\024\136\075\077"}, {0x2477, "\024\220\075\077"}, {0x2478, "\024\230\075\077"}, {0x2479, "\024\255\075\077"}, {0x247A, "\024\252\075\077"}, {0x247B, "\024\226\075\077"}, {0x247C, "\024\257\075\077"}, {0x247D, "\210\355\034\075\077"}, {0x247E, "\210\356\027\075\077"}, {0x247F, "\210\355\317\075\077"}, {0x2480, "\210\356\260\075\077"}, {0x2481, "\210\356\246\075\077"}, {0x2482, "\210\356\250\075\077"}, {0x2483, "\210\356\043\075\077"}, {0x2484, "\210\356\162\075\077"}, {0x2485, "\210\356\160\075\077"}, {0x2486, "\210\356\161\075\077"}, {0x2487, "\210\356\050\075\077"}, {0x2488, "\024\110\037"}, {0x2489, "\024\127\037"}, {0x248A, "\024\136\037"}, {0x248B, "\024\220\037"}, {0x248C, "\024\230\037"}, {0x248D, "\024\255\037"}, {0x248E, "\024\252\037"}, {0x248F, "\024\226\037"}, {0x2490, "\024\257\037"}, {0x2491, "\210\355\034\037"}, {0x2492, "\210\356\027\037"}, {0x2493, "\210\355\317\037"}, {0x2494, "\210\356\260\037"}, {0x2495, "\210\356\246\037"}, {0x2496, "\210\356\250\037"}, {0x2497, "\210\356\043\037"}, {0x2498, "\210\356\162\037"}, {0x2499, "\210\356\160\037"}, {0x249A, "\210\356\161\037"}, {0x249B, "\210\356\050\037"}, {0x249C, "\001\005\006\063\075\077"}, {0x249D, "\001\005\006\334\075\077"}, {0x249E, "\001\005\006\313\075\077"}, {0x249F, "\001\005\006\275\075\077"}, {0x24A0, "\001\005\006\130\075\077"}, {0x24A1, "\001\005\006\355\062\075\077"}, {0x24A2, "\001\005\006\266\075\077"}, {0x24A3, "\001\005\006\237\075\077"}, {0x24A4, "\001\005\006\103\075\077"}, {0x24A5, "\001\005\006\355\053\075\077"}, {0x24A6, "\001\005\006\352\075\077"}, {0x24A7, "\001\005\006\211\075\077"}, {0x24A8, "\001\005\006\276\075\077"}, {0x24A9, "\001\005\006\241\075\077"}, {0x24AA, "\001\005\006\064\075\077"}, {0x24AB, "\001\005\006\355\021\075\077"}, {0x24AC, "\001\005\006\355\173\075\077"}, {0x24AD, "\001\005\006\167\075\077"}, {0x24AE, "\001\005\006\223\075\077"}, {0x24AF, "\001\005\006\261\075\077"}, {0x24B0, "\001\005\006\132\075\077"}, {0x24B1, "\001\005\006\355\025\075\077"}, {0x24B2, "\001\005\006\347\075\077"}, {0x24B3, "\001\005\006\355\026\075\077"}, {0x24B4, "\001\005\006\265\075\077"}, {0x24B5, "\001\005\006\271\075\077"}, {0x24B6, "\001\010\006\063\177"}, {0x24B7, "\001\010\006\334\177"}, {0x24B8, "\001\010\006\313\177"}, {0x24B9, "\001\010\006\275\177"}, {0x24BA, "\001\010\006\130\177"}, {0x24BB, "\001\010\006\355\062\177"}, {0x24BC, "\001\010\006\266\177"}, {0x24BD, "\001\010\006\237\177"}, {0x24BE, "\001\010\006\103\177"}, {0x24BF, "\001\010\006\355\053\177"}, {0x24C0, "\001\010\006\352\177"}, {0x24C1, "\001\010\006\211\177"}, {0x24C2, "\001\010\006\276\177"}, {0x24C3, "\001\010\006\241\177"}, {0x24C4, "\001\010\006\064\177"}, {0x24C5, "\001\010\006\355\021\177"}, {0x24C6, "\001\010\006\355\173\177"}, {0x24C7, "\001\010\006\167\177"}, {0x24C8, "\001\010\006\223\177"}, {0x24C9, "\001\010\006\261\177"}, {0x24CA, "\001\010\006\132\177"}, {0x24CB, "\001\010\006\355\025\177"}, {0x24CC, "\001\010\006\347\177"}, {0x24CD, "\001\010\006\355\026\177"}, {0x24CE, "\001\010\006\265\177"}, {0x24CF, "\001\010\006\271\177"}, {0x24D0, "\001\005\006\063\177"}, {0x24D1, "\001\005\006\334\177"}, {0x24D2, "\001\005\006\313\177"}, {0x24D3, "\001\005\006\275\177"}, {0x24D4, "\001\005\006\130\177"}, {0x24D5, "\001\005\006\355\062\177"}, {0x24D6, "\001\005\006\266\177"}, {0x24D7, "\001\005\006\237\177"}, {0x24D8, "\001\005\006\103\177"}, {0x24D9, "\001\005\006\355\053\177"}, {0x24DA, "\001\005\006\352\177"}, {0x24DB, "\001\005\006\211\177"}, {0x24DC, "\001\005\006\276\177"}, {0x24DD, "\001\005\006\241\177"}, {0x24DE, "\001\005\006\064\177"}, {0x24DF, "\001\005\006\355\021\177"}, {0x24E0, "\001\005\006\355\173\177"}, {0x24E1, "\001\005\006\167\177"}, {0x24E2, "\001\005\006\223\177"}, {0x24E3, "\001\005\006\261\177"}, {0x24E4, "\001\005\006\132\177"}, {0x24E5, "\001\005\006\355\025\177"}, {0x24E6, "\001\005\006\347\177"}, {0x24E7, "\001\005\006\355\026\177"}, {0x24E8, "\001\005\006\265\177"}, {0x24E9, "\001\005\006\271\177"}, {0x24EA, "\024\331\051"}, {0x2500, "\065\242\116"}, {0x2501, "\065\242\151"}, {0x2502, "\065\202\116"}, {0x2503, "\065\202\151"}, {0x2504, "\065\355\131\355\220\242\116"}, {0x2505, "\065\355\131\355\220\242\151"}, {0x2506, "\065\355\131\355\220\202\116"}, {0x2507, "\065\355\131\355\220\202\151"}, {0x2508, "\065\355\131\357\016\242\116"}, {0x2509, "\065\355\131\357\016\242\151"}, {0x250A, "\065\355\131\357\016\202\116"}, {0x250B, "\065\355\131\357\016\202\151"}, {0x250C, "\065\116\015\050\101\020\015\033\053"}, {0x250D, "\065\116\015\050\101\020\151\015\033\053"}, {0x250E, "\065\151\015\050\101\020\116\015\033\053"}, {0x250F, "\065\151\015\050\101\020\015\033\053"}, {0x2510, "\065\116\015\050\101\020\015\033\052"}, {0x2511, "\065\116\015\050\101\020\151\015\033\052"}, {0x2512, "\065\151\015\050\101\020\116\015\033\052"}, {0x2513, "\065\151\015\050\101\020\015\033\052"}, {0x2514, "\065\116\015\050\102\020\015\033\053"}, {0x2515, "\065\116\015\050\102\020\151\015\033\053"}, {0x2516, "\065\151\015\050\102\020\116\015\033\053"}, {0x2517, "\065\151\015\050\102\020\015\033\053"}, {0x2518, "\065\116\015\050\102\020\015\033\052"}, {0x2519, "\065\116\015\050\102\020\151\015\033\052"}, {0x251A, "\065\151\015\050\102\020\116\015\033\052"}, {0x251B, "\065\151\015\050\102\020\015\033\052"}, {0x251C, "\065\116\202\020\015\033\053"}, {0x251D, "\065\116\202\020\151\015\033\053"}, {0x251E, "\065\151\015\050\102\020\116\015\033\053\020\015\050\101"}, {0x251F, "\065\151\015\050\101\020\116\015\033\053\020\015\050\102"}, {0x2520, "\065\151\202\020\116\015\033\053"}, {0x2521, "\065\116\015\050\101\020\151\015\033\053\020\015\050\102"}, {0x2522, "\065\116\015\050\102\020\151\015\033\053\020\015\050\101"}, {0x2523, "\065\151\202\020\015\033\053"}, {0x2524, "\065\116\202\020\015\033\052"}, {0x2525, "\065\116\202\020\151\015\033\052"}, {0x2526, "\065\151\015\050\102\020\116\015\033\052\020\015\050\101"}, {0x2527, "\065\151\015\050\101\020\116\015\033\052\020\015\050\102"}, {0x2528, "\065\151\202\020\116\015\033\052"}, {0x2529, "\065\116\015\050\101\020\151\015\033\052\020\015\050\102"}, {0x252A, "\065\116\015\050\102\020\151\015\033\052\020\015\050\101"}, {0x252B, "\065\151\202\020\015\033\052"}, {0x252C, "\065\116\015\050\101\020\242"}, {0x252D, "\065\151\015\033\052\020\116\015\033\053\020\015\050\101"}, {0x252E, "\065\151\015\033\053\020\116\015\033\052\020\015\050\101"}, {0x252F, "\065\116\015\050\101\020\151\242"}, {0x2530, "\065\151\015\050\101\020\116\242"}, {0x2531, "\065\116\015\033\053\020\151\015\033\052\020\015\050\101"}, {0x2532, "\065\116\015\033\052\020\151\015\033\053\020\015\050\101"}, {0x2533, "\065\151\015\050\101\020\242"}, {0x2534, "\065\116\015\050\102\020\242"}, {0x2535, "\065\151\015\033\052\020\116\015\033\053\020\015\050\102"}, {0x2536, "\065\151\015\033\053\020\116\015\033\052\020\015\050\102"}, {0x2537, "\065\116\015\050\102\020\151\242"}, {0x2538, "\065\151\015\050\102\020\116\242"}, {0x2539, "\065\116\015\033\053\020\151\015\033\052\020\015\050\102"}, {0x253A, "\065\116\015\033\052\020\151\015\033\053\020\015\050\102"}, {0x253B, "\065\151\015\050\102\020\242"}, {0x253C, "\065\116\202\020\242"}, {0x253D, "\065\151\015\033\052\020\116\015\033\053\020\202"}, {0x253E, "\065\151\015\033\053\020\116\015\033\052\020\202"}, {0x253F, "\065\202\116\020\242\151"}, {0x2540, "\065\151\015\050\102\020\116\015\050\101\020\242"}, {0x2541, "\065\151\015\050\101\020\116\015\050\102\020\242"}, {0x2542, "\065\202\151\020\242\116"}, {0x2543, "\065\151\015\033\052\020\015\050\102\020\116\015\033\053\020\015\050\101"}, {0x2544, "\065\151\015\033\053\020\015\050\102\020\116\015\033\052\020\015\050\101"}, {0x2545, "\065\151\015\033\052\020\015\050\101\020\116\015\033\053\020\015\050\102"}, {0x2546, "\065\151\015\033\053\020\015\050\101\020\116\015\033\052\020\015\050\102"}, {0x2547, "\065\116\015\050\101\020\151\015\050\102\020\242"}, {0x2548, "\065\116\015\050\102\020\151\015\050\101\020\242"}, {0x2549, "\065\116\015\033\053\020\151\015\033\052\020\202"}, {0x254A, "\065\116\015\033\052\020\151\015\033\053\020\202"}, {0x254B, "\065\202\020\242\151"}, {0x254C, "\065\355\131\070\242\116"}, {0x254D, "\065\355\131\070\242\151"}, {0x254E, "\065\355\131\070\202\116"}, {0x254F, "\065\355\131\070\202\151"}, {0x2550, "\065\070\242"}, {0x2551, "\065\070\202"}, {0x2552, "\065\355\001\050\101\020\070\015\033\053"}, {0x2553, "\065\070\015\050\101\020\355\001\015\033\053"}, {0x2554, "\065\070\015\050\101\020\015\033\053"}, {0x2555, "\065\355\001\015\050\101\020\070\015\033\052"}, {0x2556, "\065\070\015\050\101\020\355\001\015\033\052"}, {0x2557, "\065\070\015\050\101\020\015\033\052"}, {0x2558, "\065\355\001\015\050\102\020\070\015\033\053"}, {0x2559, "\065\070\015\050\102\020\355\001\015\033\053"}, {0x255A, "\065\070\015\050\102\020\015\033\053"}, {0x255B, "\065\355\001\015\050\102\020\070\015\033\052"}, {0x255C, "\065\070\015\050\102\020\355\001\015\033\052"}, {0x255D, "\065\070\015\050\102\020\015\033\052"}, {0x255E, "\065\202\355\001\020\221\070"}, {0x255F, "\065\202\070\020\221\355\001"}, {0x2560, "\065\070\202\020\015\033\053"}, {0x2561, "\065\202\355\001\020\052\070"}, {0x2562, "\065\202\070\020\052\355\001"}, {0x2563, "\065\070\202\020\015\033\052"}, {0x2564, "\065\015\050\101\355\001\020\242\070"}, {0x2565, "\065\015\050\101\070\020\242\355\001"}, {0x2566, "\065\070\015\050\101\020\242"}, {0x2567, "\065\015\050\102\355\001\020\242\070"}, {0x2568, "\065\015\050\102\070\020\242\355\001"}, {0x2569, "\065\070\015\050\102\020\242"}, {0x256A, "\065\202\355\001\020\242\070"}, {0x256B, "\065\202\070\020\242\355\001"}, {0x256C, "\065\070\202\020\242"}, {0x256D, "\065\116\355\202\015\050\101\020\015\033\053"}, {0x256E, "\065\116\355\202\015\050\101\020\015\033\052"}, {0x256F, "\065\116\355\202\015\050\102\020\015\033\052"}, {0x2570, "\065\116\355\202\015\050\102\020\015\033\053"}, {0x2571, "\065\357\133\116\212\273\344\221\355\307\273\320\052"}, {0x2572, "\065\357\133\116\212\273\344\052\015\050\273\320\221"}, {0x2573, "\065\357\133\116\013\355\033"}, {0x2574, "\065\116\015\033\052"}, {0x2575, "\065\116\015\050\102"}, {0x2576, "\065\116\015\033\053"}, {0x2577, "\065\116\015\050\101"}, {0x2578, "\065\151\015\033\052"}, {0x2579, "\065\151\015\050\102"}, {0x257A, "\065\151\015\033\053"}, {0x257B, "\065\151\015\050\101"}, {0x257C, "\065\116\015\033\052\020\151\015\033\053"}, {0x257D, "\065\116\015\050\102\020\151\015\050\101"}, {0x257E, "\065\151\015\033\052\020\116\015\033\053"}, {0x257F, "\065\151\015\050\102\020\116\015\050\101"}, {0x2580, "\355\016\353\355\354"}, {0x2581, "\355\016\110\356\210\320"}, {0x2582, "\355\016\110\357\017\320"}, {0x2583, "\355\016\136\355\256\320"}, {0x2584, "\355\016\353\356\020"}, {0x2585, "\355\016\230\355\256\320"}, {0x2586, "\355\016\136\357\303\320"}, {0x2587, "\355\016\252\355\256\320"}, {0x2588, "\355\016\361\205"}, {0x2589, "\355\016\252\355\256\052"}, {0x258A, "\355\016\136\357\303\052"}, {0x258B, "\355\016\230\355\256\052"}, {0x258C, "\355\016\353\052"}, {0x258D, "\355\016\136\355\256\052"}, {0x258E, "\355\016\110\357\017\052"}, {0x258F, "\355\016\110\356\210\052"}, {0x2590, "\355\016\353\053"}, {0x2591, "\356\026\370\246"}, {0x2592, "\356\026\361\076"}, {0x2593, "\356\026\366\077"}, {0x2594, "\355\016\110\356\210\344"}, {0x2595, "\355\016\110\356\210\221"}, {0x25A0, "\035\207"}, {0x25A1, "\035\147"}, {0x25A2, "\035\147\164\365\044\362\363"}, {0x25A3, "\175\035\207\357\200\355\247\110\035\147"}, {0x25A4, "\035\356\207\367\102"}, {0x25A5, "\035\356\207\357\376"}, {0x25A6, "\035\361\242"}, {0x25A7, "\035\356\207\212\102\044\052\015\050\101\044\053"}, {0x25A8, "\035\356\207\212\102\044\053\015\050\101\044\052"}, {0x25A9, "\035\361\242\013\365\262"}, {0x25AA, "\175\035\207"}, {0x25AB, "\175\035\147"}, {0x25AC, "\356\111\207"}, {0x25AD, "\356\111\147"}, {0x25AE, "\356\111\202\207"}, {0x25AF, "\356\111\202\147"}, {0x25B0, "\361\154\207"}, {0x25B1, "\361\154\147"}, {0x25B2, "\346\207\321\015\050\102"}, {0x25B3, "\346\147\321\015\050\102"}, {0x25B4, "\175\346\207\321\015\050\102"}, {0x25B5, "\175\346\147\321\015\050\102"}, {0x25B6, "\346\207\321\015\033\053"}, {0x25B7, "\346\147\321\015\033\053"}, {0x25B8, "\175\346\207\321\015\033\053"}, {0x25B9, "\175\346\147\321\015\033\053"}, {0x25BA, "\357\004\207\015\033\053"}, {0x25BB, "\357\004\147\015\033\053"}, {0x25BC, "\346\207\321\015\050\101"}, {0x25BD, "\346\147\321\015\050\101"}, {0x25BE, "\175\346\207\321\015\050\101"}, {0x25BF, "\175\346\147\321\015\050\101"}, {0x25C0, "\346\207\321\015\033\052"}, {0x25C1, "\346\147\321\015\033\052"}, {0x25C2, "\175\346\207\321\015\033\052"}, {0x25C3, "\175\346\147\321\015\033\052"}, {0x25C4, "\357\004\207\015\033\052"}, {0x25C5, "\357\004\147\015\033\052"}, {0x25C6, "\355\266\207"}, {0x25C7, "\355\266\147"}, {0x25C8, "\355\266\147\164\175\355\266\207\013\362\274"}, {0x25C9, "\175\272\207\357\200\355\247\110\272\147"}, {0x25CA, "\355\266"}, {0x25CB, "\272\147"}, {0x25CC, "\272\013\357\005"}, {0x25CD, "\272\356\207\357\376"}, {0x25CE, "\175\272\147\357\200\355\247\110\272\147"}, {0x25CF, "\360\201\207"}, {0x25D0, "\272\164\353\052\264"}, {0x25D1, "\272\164\353\053\264"}, {0x25D2, "\272\164\353\356\020\264"}, {0x25D3, "\272\164\353\355\354\264"}, {0x25D4, "\272\164\356\110\344\221\207"}, {0x25D5, "\360\201\164\356\110\344\052\147"}, {0x25D6, "\360\171\052\207"}, {0x25D7, "\360\171\053\207"}, {0x25D8, "\037\013\300"}, {0x25D9, "\272\147\013\300"}, {0x25DA, "\356\005\344\147\013\300"}, {0x25DB, "\356\005\320\147\013\300"}, {0x25DC, "\355\202\007\272\355\247\050\356\110\344\052"}, {0x25DD, "\355\202\007\272\355\247\050\356\110\344\221"}, {0x25DE, "\355\202\007\272\355\247\050\356\110\320\221"}, {0x25DF, "\355\202\007\272\355\247\050\356\110\320\052"}, {0x25E0, "\356\005\344"}, {0x25E1, "\356\005\320"}, {0x25E2, "\273\356\131\207\320\221"}, {0x25E3, "\273\356\131\207\320\052"}, {0x25E4, "\273\356\131\207\344\052"}, {0x25E5, "\273\356\131\207\344\221"}, {0x25E6, "\175\272\147"}, {0x25E7, "\035\164\353\052\264"}, {0x25E8, "\035\164\353\053\264"}, {0x25E9, "\035\164\353\355\354\052\264"}, {0x25EA, "\035\164\353\356\020\053\264"}, {0x25EB, "\035\147\164\243\363\137\256"}, {0x25EC, "\346\147\321\015\050\102\356\034"}, {0x25ED, "\346\321\015\050\102\164\353\052\264"}, {0x25EE, "\346\321\015\050\102\164\353\053\264"}, {0x25EF, "\340\272"}, {0x25F0, "\035\147\044\355\236\344\052"}, {0x25F1, "\035\147\044\355\236\320\052"}, {0x25F2, "\035\147\044\355\236\320\221"}, {0x25F3, "\035\147\044\355\236\344\221"}, {0x25F4, "\272\147\044\355\236\344\052"}, {0x25F5, "\272\147\044\355\236\320\052"}, {0x25F6, "\272\147\044\355\236\320\221"}, {0x25F7, "\272\147\044\355\236\344\221"}, {0x2600, "\356\044\207\164\361\250"}, {0x2601, "\371\363"}, {0x2602, "\372\154"}, {0x2603, "\363\145\007\356\361"}, {0x2604, "\365\054"}, {0x2605, "\355\015\264"}, {0x2606, "\355\015\316"}, {0x2607, "\377\022"}, {0x2608, "\372\105"}, {0x2609, "\356\044"}, {0x260A, "\356\362\360\054"}, {0x260B, "\356\362\365\253"}, {0x260C, "\365\057"}, {0x260D, "\372\103"}, {0x260E, "\357\050\207"}, {0x260F, "\357\050\147"}, {0x2610, "\356\146\007\356\267"}, {0x2611, "\356\146\007\356\267\365\042"}, {0x2612, "\356\146\007\356\267\164\355\026"}, {0x2613, "\363\035"}, {0x2619, "\355\203\357\150\356\153\044\053"}, {0x261A, "\355\326\207\321\015\033\052"}, {0x261B, "\355\326\207\321\015\033\053"}, {0x261C, "\355\326\147\321\015\033\052"}, {0x261D, "\355\326\147\321\015\050\102"}, {0x261E, "\355\326\147\321\015\033\053"}, {0x261F, "\355\326\147\321\015\050\101"}, {0x2620, "\357\373\007\361\063"}, {0x2621, "\376\040"}, {0x2622, "\057\007\374\032"}, {0x2623, "\057\007\365\173\363\132"}, {0x2624, "\363\223"}, {0x2625, "\362\330"}, {0x2626, "\355\033\372\112"}, {0x2627, "\363\313"}, {0x2628, "\355\033\007\370\205"}, {0x2629, "\355\033\007\367\353"}, {0x262A, "\355\015\020\365\120"}, {0x262B, "\022\356\067"}, {0x262C, "\376\377\377\005"}, {0x262D, "\366\047\020\370\272"}, {0x262E, "\022\007\372\147"}, {0x262F, "\022\212\362\114\020\212\360\011"}, {0x2630, "\355\361\355\057\357\100"}, {0x2631, "\355\361\355\057\370\125"}, {0x2632, "\355\361\355\057\356\177"}, {0x2633, "\355\361\355\057\375\227"}, {0x2634, "\355\361\355\057\357\375"}, {0x2635, "\355\361\355\057\356\066"}, {0x2636, "\355\361\355\057\361\061"}, {0x2637, "\355\361\355\057\356\126"}, {0x2638, "\361\274\007\365\260"}, {0x2639, "\356\265\147\366\246"}, {0x263A, "\356\265\147\361\327"}, {0x263B, "\356\265\207\361\327"}, {0x263C, "\356\044\147\164\361\250"}, {0x263D, "\361\222\355\236\007\356\101"}, {0x263E, "\365\252\355\236\007\356\101"}, {0x263F, "\370\317"}, {0x2640, "\057\360\237"}, {0x2641, "\356\126"}, {0x2642, "\057\361\102"}, {0x2643, "\367\335"}, {0x2644, "\361\303"}, {0x2645, "\375\377"}, {0x2646, "\371\175"}, {0x2647, "\372\247"}, {0x2648, "\360\104"}, {0x2649, "\375\107"}, {0x264A, "\366\277"}, {0x264B, "\363\230"}, {0x264C, "\370\171"}, {0x264D, "\376\026"}, {0x264E, "\363\023"}, {0x264F, "\374\235"}, {0x2650, "\374\210"}, {0x2651, "\363\233"}, {0x2652, "\376\016"}, {0x2653, "\373\252"}, {0x2654, "\361\273\147\212\355\166\355\157"}, {0x2655, "\360\161\316\212\355\166\355\157"}, {0x2656, "\362\027\316\212\355\166\355\157"}, {0x2657, "\357\151\147\212\355\166\355\157"}, {0x2658, "\360\106\147\212\355\166\355\157"}, {0x2659, "\361\167\147\212\355\166\355\157"}, {0x265A, "\361\273\207\212\355\166\355\157"}, {0x265B, "\360\161\264\212\355\166\355\157"}, {0x265C, "\362\027\264\212\355\166\355\157"}, {0x265D, "\357\151\207\212\355\166\355\157"}, {0x265E, "\360\106\207\212\355\166\355\157"}, {0x265F, "\361\167\207\212\355\166\355\157"}, {0x2660, "\357\001\207"}, {0x2661, "\355\203\147"}, {0x2662, "\360\105\147"}, {0x2663, "\362\036\207"}, {0x2664, "\357\001\147"}, {0x2665, "\355\203\207"}, {0x2666, "\360\105\207"}, {0x2667, "\362\036\147"}, {0x2668, "\374\360\363\265"}, {0x2669, "\357\250\264"}, {0x266A, "\357\250\365\117"}, {0x266B, "\127\360\144\361\245"}, {0x266C, "\127\360\213\360\144\361\245"}, {0x266D, "\363\213"}, {0x266E, "\363\212"}, {0x266F, "\365\276"}, {0x2670, "\355\033\161\372\071"}, {0x2671, "\355\033\161\372\110"}, {0x2701, "\356\312\044\361\020\355\354\362\072"}, {0x2702, "\356\312\371\314"}, {0x2703, "\356\312\044\361\020\356\020\362\072"}, {0x2704, "\356\312\363\143"}, {0x2706, "\022\365\146\212\357\050"}, {0x2707, "\365\363\007\374\143"}, {0x2708, "\363\007"}, {0x2709, "\366\014"}, {0x270C, "\356\353\007\033\376\021"}, {0x270D, "\356\353\013\375\243\365\165"}, {0x270E, "\357\110\015\050\101\044\053"}, {0x270F, "\357\110"}, {0x2710, "\357\110\015\050\102\044\053"}, {0x2711, "\360\073\007\356\243\147"}, {0x2712, "\360\073\007\356\243\207"}, {0x2713, "\057\007\362\101"}, {0x2714, "\355\122\057\007\362\101"}, {0x2715, "\355\026\007\356\355"}, {0x2716, "\355\122\355\026\007\356\355"}, {0x2717, "\355\026\007\356\146\007\356\267"}, {0x2718, "\355\122\355\026\007\356\146\007\356\267"}, {0x2719, "\355\033\027\164\355\132"}, {0x271A, "\355\324\355\033\027"}, {0x271B, "\355\033\357\270\355\314\035"}, {0x271C, "\355\324\355\033\357\270\355\314\035"}, {0x271D, "\355\033\006"}, {0x271E, "\355\033\006\376\023\355\342"}, {0x271F, "\355\033\006\164\355\132"}, {0x2720, "\355\033\007\370\260"}, {0x2721, "\355\015\007\365\200"}, {0x2722, "\355\033\357\225"}, {0x2723, "\355\033\361\212"}, {0x2724, "\355\324\355\033\361\212"}, {0x2725, "\355\033\375\261"}, {0x2726, "\355\015\264\044\220\355\116"}, {0x2727, "\355\015\316\044\220\355\116"}, {0x2729, "\355\015\316\044\355\132\362\276"}, {0x272A, "\355\015\316\177"}, {0x272B, "\361\060\264"}, {0x272C, "\361\060\316"}, {0x272D, "\355\015\264\164\355\132"}, {0x272E, "\355\015\264\164\355\122\355\132"}, {0x272F, "\355\015\361\247"}, {0x2730, "\355\015\316\355\342"}, {0x2731, "\355\122\355\115"}, {0x2732, "\355\115\361\164"}, {0x2733, "\355\115\044\226\355\116"}, {0x2734, "\355\015\264\044\226\355\116"}, {0x2735, "\355\015\361\247\044\226\355\116"}, {0x2736, "\355\015\264\044\255\355\116"}, {0x2737, "\355\015\361\253\044\226\355\116"}, {0x2738, "\355\324\355\015\361\253\044\226\355\116"}, {0x2739, "\355\015\264\044\355\317\355\116"}, {0x273A, "\355\115\044\356\043\355\116"}, {0x273B, "\355\115\356\350"}, {0x273C, "\355\115\356\350\361\164"}, {0x273D, "\355\122\355\115\356\350"}, {0x273E, "\374\324\316\020\264"}, {0x273F, "\361\244\264"}, {0x2740, "\361\244\316"}, {0x2741, "\070\373\372\264\164\355\132"}, {0x2742, "\355\015\177\357\270\044\226\355\116"}, {0x2743, "\355\122\362\375\374\045\356\350"}, {0x2744, "\357\147\007\356\361"}, {0x2745, "\357\147\007\356\361\044\136\366\076\375\246"}, {0x2746, "\355\122\357\147\007\356\361\044\363\305"}, {0x2747, "\362\156"}, {0x2748, "\355\122\362\156"}, {0x2749, "\355\115\373\253"}, {0x274A, "\360\055\044\226\355\116\361\021"}, {0x274B, "\355\122\360\055\044\226\355\116\361\021"}, {0x274D, "\272\147\357\255"}, {0x274F, "\035\147\164\356\026\361\223\357\037\050\273\320\221"}, {0x2750, "\035\147\164\356\026\361\223\357\037\050\273\344\221"}, {0x2751, "\035\147\357\255\355\307\273\320\221"}, {0x2752, "\035\147\357\255\355\307\273\344\221"}, {0x2756, "\355\266\207\370\270\355\314\355\026\147"}, {0x2758, "\246\256\360\242"}, {0x2759, "\246\256\361\076"}, {0x275A, "\246\256\377\032"}, {0x275B, "\355\135\007\356\013\013\263\007\355\324\330\355\001\356\154"}, {0x275C, "\355\135\007\356\013\013\263\007\355\324\330\355\001"}, {0x275D, "\355\135\007\356\013\013\263\007\355\324\330\070\356\154"}, {0x275E, "\355\135\007\356\013\013\263\007\355\324\330\070"}, {0x2761, "\356\242\007\357\237\007\356\013\044\357\210\365\105"}, {0x2762, "\355\122\037\355\312\007\356\013"}, {0x2763, "\355\122\037\355\312\007\356\013\013\263\007\355\203"}, {0x2764, "\355\122\355\203\207"}, {0x2765, "\355\122\355\203\207\356\153"}, {0x2766, "\355\203\357\150"}, {0x2767, "\355\203\357\150\356\153"}, {0x2776, "\304\024\110\300\051"}, {0x2777, "\304\024\127\300\051"}, {0x2778, "\304\024\136\300\051"}, {0x2779, "\304\024\220\300\051"}, {0x277A, "\304\024\230\300\051"}, {0x277B, "\304\024\255\300\051"}, {0x277C, "\304\024\252\300\051"}, {0x277D, "\304\024\226\300\051"}, {0x277E, "\304\024\257\300\051"}, {0x277F, "\304\210\355\034\300\051"}, {0x2780, "\304\024\110\270\355\035\051"}, {0x2781, "\304\024\127\270\355\035\051"}, {0x2782, "\304\024\136\270\355\035\051"}, {0x2783, "\304\024\220\270\355\035\051"}, {0x2784, "\304\024\230\270\355\035\051"}, {0x2785, "\304\024\255\270\355\035\051"}, {0x2786, "\304\024\252\270\355\035\051"}, {0x2787, "\304\024\226\270\355\035\051"}, {0x2788, "\304\024\257\270\355\035\051"}, {0x2789, "\304\210\355\034\270\355\035\051"}, {0x278A, "\304\024\110\270\355\035\300\051"}, {0x278B, "\304\024\127\270\355\035\300\051"}, {0x278C, "\304\024\136\270\355\035\300\051"}, {0x278D, "\304\024\220\270\355\035\300\051"}, {0x278E, "\304\024\230\270\355\035\300\051"}, {0x278F, "\304\024\255\270\355\035\300\051"}, {0x2790, "\304\024\252\270\355\035\300\051"}, {0x2791, "\304\024\226\270\355\035\300\051"}, {0x2792, "\304\024\257\270\355\035\300\051"}, {0x2793, "\304\210\355\034\270\355\035\300\051"}, {0x2794, "\061\355\121\015\033\053\044\355\003\355\262"}, {0x2798, "\061\355\121\355\353"}, {0x2799, "\061\355\121\015\033\053\355\121"}, {0x279A, "\061\355\121\356\023"}, {0x279B, "\061\007\375\252\015\033\053"}, {0x279C, "\061\355\121\044\355\003\362\362\015\033\053"}, {0x279D, "\061\044\355\003\013\346\015\033\053"}, {0x279E, "\061\355\121\044\355\003\013\346\015\033\053"}, {0x279F, "\061\164\357\007\044\355\003\013\346\015\033\053"}, {0x27A0, "\061\355\121\164\357\007\044\355\003\013\346\015\033\053"}, {0x27A1, "\061\264\015\033\053"}, {0x27A2, "\355\003\007\061\015\033\053\013\362\034\362\155\355\232\050\102"}, {0x27A3, "\355\003\007\061\015\033\053\013\362\034\362\155\355\232\050\101"}, {0x27A4, "\355\003\007\061\264\015\033\053"}, {0x27A5, "\061\264\355\121\360\143\015\050\101\020\015\033\053"}, {0x27A6, "\061\264\360\143\015\050\102\020\015\033\053"}, {0x27A7, "\061\264\375\250\015\033\053"}, {0x27A8, "\061\264\355\121\044\355\003\365\055\015\033\053"}, {0x27A9, "\061\316\015\033\053\355\342\044\356\345"}, {0x27AA, "\061\316\015\033\053\355\342\044\361\017"}, {0x27AB, "\061\316\015\033\053\361\162\015\361\017\020\355\342"}, {0x27AC, "\061\316\015\033\053\361\162\015\356\345\020\355\342"}, {0x27AD, "\061\316\355\121\015\033\053\044\356\026\356\020\053"}, {0x27AE, "\061\316\355\121\015\033\053\044\356\026\355\354\053"}, {0x27AF, "\061\357\145\316\015\033\053\355\342\044\356\345\020\355\232\365\256"}, {0x27B1, "\061\357\145\316\015\033\053\355\342\044\356\345\020\355\232\357\132"}, {0x27B2, "\061\316\355\121\015\033\053\044\355\132\363\352"}, {0x27B3, "\061\044\355\253\316\015\033\053"}, {0x27B4, "\061\044\355\253\207\355\353"}, {0x27B5, "\061\044\355\253\207\015\033\053"}, {0x27B6, "\061\044\355\253\207\356\023"}, {0x27B7, "\061\044\355\253\151\264\355\353"}, {0x27B8, "\061\044\355\253\151\264\015\033\053"}, {0x27B9, "\061\044\355\253\151\264\356\023"}, {0x27BA, "\061\015\033\053\044\355\003\357\225"}, {0x27BB, "\061\015\033\053\044\357\162\357\225"}, {0x27BC, "\061\015\033\053\044\356\247\013\263\007\273"}, {0x27BD, "\061\355\121\015\033\053\044\356\247\013\263\007\273"}, {0x27BE, "\061\015\033\053\044\355\132\355\343"}, {0x2800, "\031\030\147"}, {0x2801, "\031\030\372\252"}, {0x2802, "\031\030\373\053"}, {0x2803, "\031\030\372\253"}, {0x2804, "\031\030\373\153"}, {0x2805, "\031\030\372\353"}, {0x2806, "\031\030\373\054"}, {0x2807, "\031\030\372\254"}, {0x2808, "\031\030\373\213"}, {0x2809, "\031\030\373\014"}, {0x280A, "\031\030\373\114"}, {0x280B, "\031\030\372\314"}, {0x280C, "\031\030\373\154"}, {0x280D, "\031\030\372\354"}, {0x280E, "\031\030\373\055"}, {0x280F, "\031\030\372\255"}, {0x2810, "\031\030\373\233"}, {0x2811, "\031\030\373\034"}, {0x2812, "\031\030\373\134"}, {0x2813, "\031\030\372\334"}, {0x2814, "\031\030\373\174"}, {0x2815, "\031\030\372\374"}, {0x2816, "\031\030\373\075"}, {0x2817, "\031\030\372\275"}, {0x2818, "\031\030\373\214"}, {0x2819, "\031\030\373\015"}, {0x281A, "\031\030\373\115"}, {0x281B, "\031\030\372\315"}, {0x281C, "\031\030\373\155"}, {0x281D, "\031\030\372\355"}, {0x281E, "\031\030\373\056"}, {0x281F, "\031\030\372\256"}, {0x2820, "\031\030\373\243"}, {0x2821, "\031\030\373\044"}, {0x2822, "\031\030\373\144"}, {0x2823, "\031\030\372\344"}, {0x2824, "\031\030\373\204"}, {0x2825, "\031\030\373\005"}, {0x2826, "\031\030\373\105"}, {0x2827, "\031\030\372\305"}, {0x2828, "\031\030\373\224"}, {0x2829, "\031\030\373\025"}, {0x282A, "\031\030\373\125"}, {0x282B, "\031\030\372\325"}, {0x282C, "\031\030\373\165"}, {0x282D, "\031\030\372\365"}, {0x282E, "\031\030\373\066"}, {0x282F, "\031\030\372\266"}, {0x2830, "\031\030\373\234"}, {0x2831, "\031\030\373\035"}, {0x2832, "\031\030\373\135"}, {0x2833, "\031\030\372\335"}, {0x2834, "\031\030\373\175"}, {0x2835, "\031\030\372\375"}, {0x2836, "\031\030\373\076"}, {0x2837, "\031\030\372\276"}, {0x2838, "\031\030\373\215"}, {0x2839, "\031\030\373\016"}, {0x283A, "\031\030\373\116"}, {0x283B, "\031\030\372\316"}, {0x283C, "\031\030\373\156"}, {0x283D, "\031\030\372\356"}, {0x283E, "\031\030\373\057"}, {0x283F, "\031\030\372\257"}, {0x2840, "\031\030\373\247"}, {0x2841, "\031\030\373\050"}, {0x2842, "\031\030\373\150"}, {0x2843, "\031\030\372\350"}, {0x2844, "\031\030\373\210"}, {0x2845, "\031\030\373\011"}, {0x2846, "\031\030\373\111"}, {0x2847, "\031\030\372\311"}, {0x2848, "\031\030\373\230"}, {0x2849, "\031\030\373\031"}, {0x284A, "\031\030\373\131"}, {0x284B, "\031\030\372\331"}, {0x284C, "\031\030\373\171"}, {0x284D, "\031\030\372\371"}, {0x284E, "\031\030\373\072"}, {0x284F, "\031\030\372\272"}, {0x2850, "\031\030\373\240"}, {0x2851, "\031\030\373\041"}, {0x2852, "\031\030\373\141"}, {0x2853, "\031\030\372\341"}, {0x2854, "\031\030\373\201"}, {0x2855, "\031\030\373\002"}, {0x2856, "\031\030\373\102"}, {0x2857, "\031\030\372\302"}, {0x2858, "\031\030\373\221"}, {0x2859, "\031\030\373\022"}, {0x285A, "\031\030\373\122"}, {0x285B, "\031\030\372\322"}, {0x285C, "\031\030\373\162"}, {0x285D, "\031\030\372\362"}, {0x285E, "\031\030\373\063"}, {0x285F, "\031\030\372\263"}, {0x2860, "\031\030\373\244"}, {0x2861, "\031\030\373\045"}, {0x2862, "\031\030\373\145"}, {0x2863, "\031\030\372\345"}, {0x2864, "\031\030\373\205"}, {0x2865, "\031\030\373\006"}, {0x2866, "\031\030\373\106"}, {0x2867, "\031\030\372\306"}, {0x2868, "\031\030\373\225"}, {0x2869, "\031\030\373\026"}, {0x286A, "\031\030\373\126"}, {0x286B, "\031\030\372\326"}, {0x286C, "\031\030\373\166"}, {0x286D, "\031\030\372\366"}, {0x286E, "\031\030\373\067"}, {0x286F, "\031\030\372\267"}, {0x2870, "\031\030\373\235"}, {0x2871, "\031\030\373\036"}, {0x2872, "\031\030\373\136"}, {0x2873, "\031\030\372\336"}, {0x2874, "\031\030\373\176"}, {0x2875, "\031\030\372\376"}, {0x2876, "\031\030\373\077"}, {0x2877, "\031\030\372\277"}, {0x2878, "\031\030\373\216"}, {0x2879, "\031\030\373\017"}, {0x287A, "\031\030\373\117"}, {0x287B, "\031\030\372\317"}, {0x287C, "\031\030\373\157"}, {0x287D, "\031\030\372\357"}, {0x287E, "\031\030\373\060"}, {0x287F, "\031\030\372\260"}, {0x2880, "\031\030\373\251"}, {0x2881, "\031\030\373\052"}, {0x2882, "\031\030\373\152"}, {0x2883, "\031\030\372\352"}, {0x2884, "\031\030\373\212"}, {0x2885, "\031\030\373\013"}, {0x2886, "\031\030\373\113"}, {0x2887, "\031\030\372\313"}, {0x2888, "\031\030\373\232"}, {0x2889, "\031\030\373\033"}, {0x288A, "\031\030\373\133"}, {0x288B, "\031\030\372\333"}, {0x288C, "\031\030\373\173"}, {0x288D, "\031\030\372\373"}, {0x288E, "\031\030\373\074"}, {0x288F, "\031\030\372\274"}, {0x2890, "\031\030\373\242"}, {0x2891, "\031\030\373\043"}, {0x2892, "\031\030\373\143"}, {0x2893, "\031\030\372\343"}, {0x2894, "\031\030\373\203"}, {0x2895, "\031\030\373\004"}, {0x2896, "\031\030\373\104"}, {0x2897, "\031\030\372\304"}, {0x2898, "\031\030\373\223"}, {0x2899, "\031\030\373\024"}, {0x289A, "\031\030\373\124"}, {0x289B, "\031\030\372\324"}, {0x289C, "\031\030\373\164"}, {0x289D, "\031\030\372\364"}, {0x289E, "\031\030\373\065"}, {0x289F, "\031\030\372\265"}, {0x28A0, "\031\030\373\246"}, {0x28A1, "\031\030\373\047"}, {0x28A2, "\031\030\373\147"}, {0x28A3, "\031\030\372\347"}, {0x28A4, "\031\030\373\207"}, {0x28A5, "\031\030\373\010"}, {0x28A6, "\031\030\373\110"}, {0x28A7, "\031\030\372\310"}, {0x28A8, "\031\030\373\227"}, {0x28A9, "\031\030\373\030"}, {0x28AA, "\031\030\373\130"}, {0x28AB, "\031\030\372\330"}, {0x28AC, "\031\030\373\170"}, {0x28AD, "\031\030\372\370"}, {0x28AE, "\031\030\373\071"}, {0x28AF, "\031\030\372\271"}, {0x28B0, "\031\030\373\237"}, {0x28B1, "\031\030\373\040"}, {0x28B2, "\031\030\373\140"}, {0x28B3, "\031\030\372\340"}, {0x28B4, "\031\030\373\200"}, {0x28B5, "\031\030\373\001"}, {0x28B6, "\031\030\373\101"}, {0x28B7, "\031\030\372\301"}, {0x28B8, "\031\030\373\220"}, {0x28B9, "\031\030\373\021"}, {0x28BA, "\031\030\373\121"}, {0x28BB, "\031\030\372\321"}, {0x28BC, "\031\030\373\161"}, {0x28BD, "\031\030\372\361"}, {0x28BE, "\031\030\373\062"}, {0x28BF, "\031\030\372\262"}, {0x28C0, "\031\030\373\250"}, {0x28C1, "\031\030\373\051"}, {0x28C2, "\031\030\373\151"}, {0x28C3, "\031\030\372\351"}, {0x28C4, "\031\030\373\211"}, {0x28C5, "\031\030\373\012"}, {0x28C6, "\031\030\373\112"}, {0x28C7, "\031\030\372\312"}, {0x28C8, "\031\030\373\231"}, {0x28C9, "\031\030\373\032"}, {0x28CA, "\031\030\373\132"}, {0x28CB, "\031\030\372\332"}, {0x28CC, "\031\030\373\172"}, {0x28CD, "\031\030\372\372"}, {0x28CE, "\031\030\373\073"}, {0x28CF, "\031\030\372\273"}, {0x28D0, "\031\030\373\241"}, {0x28D1, "\031\030\373\042"}, {0x28D2, "\031\030\373\142"}, {0x28D3, "\031\030\372\342"}, {0x28D4, "\031\030\373\202"}, {0x28D5, "\031\030\373\003"}, {0x28D6, "\031\030\373\103"}, {0x28D7, "\031\030\372\303"}, {0x28D8, "\031\030\373\222"}, {0x28D9, "\031\030\373\023"}, {0x28DA, "\031\030\373\123"}, {0x28DB, "\031\030\372\323"}, {0x28DC, "\031\030\373\163"}, {0x28DD, "\031\030\372\363"}, {0x28DE, "\031\030\373\064"}, {0x28DF, "\031\030\372\264"}, {0x28E0, "\031\030\373\245"}, {0x28E1, "\031\030\373\046"}, {0x28E2, "\031\030\373\146"}, {0x28E3, "\031\030\372\346"}, {0x28E4, "\031\030\373\206"}, {0x28E5, "\031\030\373\007"}, {0x28E6, "\031\030\373\107"}, {0x28E7, "\031\030\372\307"}, {0x28E8, "\031\030\373\226"}, {0x28E9, "\031\030\373\027"}, {0x28EA, "\031\030\373\127"}, {0x28EB, "\031\030\372\327"}, {0x28EC, "\031\030\373\167"}, {0x28ED, "\031\030\372\367"}, {0x28EE, "\031\030\373\070"}, {0x28EF, "\031\030\372\270"}, {0x28F0, "\031\030\373\236"}, {0x28F1, "\031\030\373\037"}, {0x28F2, "\031\030\373\137"}, {0x28F3, "\031\030\372\337"}, {0x28F4, "\031\030\373\177"}, {0x28F5, "\031\030\372\377"}, {0x28F6, "\031\030\373\100"}, {0x28F7, "\031\030\372\300"}, {0x28F8, "\031\030\373\217"}, {0x28F9, "\031\030\373\020"}, {0x28FA, "\031\030\373\120"}, {0x28FB, "\031\030\372\320"}, {0x28FC, "\031\030\373\160"}, {0x28FD, "\031\030\372\360"}, {0x28FE, "\031\030\373\061"}, {0x28FF, "\031\030\372\261"}, {0x2E80, "\017\074\363\136"}, {0x2E81, "\017\074\360\235"}, {0x2E82, "\017\074\070\122\110"}, {0x2E83, "\017\074\357\323\127"}, {0x2E84, "\017\074\357\323\136"}, {0x2E85, "\017\074\360\326"}, {0x2E86, "\017\074\361\201"}, {0x2E87, "\017\074\361\352"}, {0x2E88, "\017\074\357\107\110"}, {0x2E89, "\017\074\357\107\127"}, {0x2E8A, "\017\074\360\202"}, {0x2E8B, "\017\074\361\304"}, {0x2E8C, "\017\074\175\110"}, {0x2E8D, "\017\074\175\127"}, {0x2E8E, "\017\074\356\212\372\076"}, {0x2E8F, "\017\074\356\212\127"}, {0x2E90, "\017\074\356\212\136"}, {0x2E91, "\017\074\356\212\220"}, {0x2E92, "\017\074\057\212\374\253"}, {0x2E93, "\017\074\366\066"}, {0x2E94, "\017\074\357\156\110"}, {0x2E95, "\017\074\357\156\127"}, {0x2E96, "\017\074\355\203\110"}, {0x2E97, "\017\074\355\203\127"}, {0x2E98, "\017\074\356\353"}, {0x2E99, "\017\074\361\354"}, {0x2E9A, "\017\074\356\113\360\060"}, {0x2E9B, "\017\074\377\037"}, {0x2E9C, "\017\074\356\044"}, {0x2E9D, "\017\074\356\101"}, {0x2E9E, "\017\074\370\300"}, {0x2E9F, "\017\074\371\057"}, {0x2EA0, "\017\074\363\355"}, {0x2EA1, "\017\074\356\066\110"}, {0x2EA2, "\017\074\356\066\127"}, {0x2EA3, "\017\074\356\177"}, {0x2EA4, "\017\074\361\160\110"}, {0x2EA5, "\017\074\361\160\127"}, {0x2EA6, "\017\074\365\245\356\113"}, {0x2EA7, "\017\074\360\077"}, {0x2EA8, "\017\074\360\116"}, {0x2EA9, "\017\074\360\355"}, {0x2EAA, "\017\074\361\171\360\160"}, {0x2EAB, "\017\074\361\135"}, {0x2EAC, "\017\074\357\306\110"}, {0x2EAD, "\017\074\357\306\127"}, {0x2EAE, "\017\074\360\065"}, {0x2EAF, "\017\074\357\332"}, {0x2EB0, "\017\074\355\010\357\332"}, {0x2EB1, "\017\074\065\110"}, {0x2EB2, "\017\074\065\127"}, {0x2EB3, "\017\074\065\136"}, {0x2EB4, "\017\074\065\220"}, {0x2EB5, "\017\074\370\253"}, {0x2EB6, "\017\074\361\072"}, {0x2EB7, "\017\074\360\104"}, {0x2EB8, "\017\074\363\162"}, {0x2EB9, "\017\074\362\064"}, {0x2EBA, "\017\074\357\272\110"}, {0x2EBB, "\017\074\357\272\127"}, {0x2EBC, "\017\074\362\063"}, {0x2EBD, "\017\074\361\064"}, {0x2EBE, "\017\074\356\334\110"}, {0x2EBF, "\017\074\356\334\127"}, {0x2EC0, "\017\074\356\334\136"}, {0x2EC1, "\017\074\362\005"}, {0x2EC2, "\017\074\360\317"}, {0x2EC3, "\017\074\357\260\110"}, {0x2EC4, "\017\074\357\260\127"}, {0x2EC5, "\017\074\355\010\362\074"}, {0x2EC6, "\017\074\356\113\357\106"}, {0x2EC7, "\017\074\357\106"}, {0x2EC8, "\017\074\355\010\361\155"}, {0x2EC9, "\017\074\355\010\360\140"}, {0x2ECA, "\017\074\356\242"}, {0x2ECB, "\017\074\355\010\362\100"}, {0x2ECC, "\017\074\356\113\357\014"}, {0x2ECD, "\017\074\357\014\110"}, {0x2ECE, "\017\074\357\014\127"}, {0x2ECF, "\017\074\376\031"}, {0x2ED0, "\017\074\355\010\361\141"}, {0x2ED1, "\017\074\355\264\110"}, {0x2ED2, "\017\074\355\264\127"}, {0x2ED3, "\017\074\355\010\355\264"}, {0x2ED4, "\017\074\355\010\357\274"}, {0x2ED5, "\017\074\357\353\110"}, {0x2ED6, "\017\074\357\353\127"}, {0x2ED7, "\017\074\361\206"}, {0x2ED8, "\017\074\360\075"}, {0x2ED9, "\017\074\355\010\357\113\361\353"}, {0x2EDA, "\017\074\355\010\360\240"}, {0x2EDB, "\017\074\355\010\357\375"}, {0x2EDC, "\017\074\355\010\362\075"}, {0x2EDD, "\017\074\356\223\110"}, {0x2EDE, "\017\074\356\223\127"}, {0x2EDF, "\017\074\356\223\136"}, {0x2EE0, "\017\074\355\010\356\223"}, {0x2EE1, "\017\074\357\373"}, {0x2EE2, "\017\074\355\010\360\115"}, {0x2EE3, "\017\074\357\257"}, {0x2EE4, "\017\074\360\222"}, {0x2EE5, "\017\074\355\010\361\211"}, {0x2EE6, "\017\074\355\010\357\254"}, {0x2EE7, "\017\074\355\010\361\306"}, {0x2EE8, "\017\074\356\113\360\076"}, {0x2EE9, "\017\074\356\113\360\357"}, {0x2EEA, "\017\074\355\010\375\360"}, {0x2EEB, "\017\074\356\340\357\164"}, {0x2EEC, "\017\074\355\010\357\164"}, {0x2EED, "\017\074\356\340\360\173"}, {0x2EEE, "\017\074\355\010\360\173"}, {0x2EEF, "\017\074\356\340\357\142"}, {0x2EF0, "\017\074\355\010\357\142"}, {0x2EF1, "\017\074\357\047"}, {0x2EF2, "\017\074\356\340\357\047"}, {0x2EF3, "\017\074\355\010\357\047"}, {0x2F00, "\017\041\110"}, {0x2F01, "\017\041\246"}, {0x2F02, "\017\041\037"}, {0x2F03, "\017\041\355\044\044\052"}, {0x2F04, "\017\041\070\122"}, {0x2F05, "\017\041\122"}, {0x2F06, "\017\041\127"}, {0x2F07, "\017\041\357\132"}, {0x2F08, "\017\041\360\326"}, {0x2F09, "\017\041\367\255"}, {0x2F0A, "\017\041\366\013"}, {0x2F0B, "\017\041\226"}, {0x2F0C, "\017\041\361\201"}, {0x2F0D, "\017\041\365\113"}, {0x2F0E, "\017\041\366\232"}, {0x2F0F, "\017\041\361\352"}, {0x2F10, "\017\041\366\104"}, {0x2F11, "\017\041\357\107"}, {0x2F12, "\017\041\366\102"}, {0x2F13, "\017\041\366\015"}, {0x2F14, "\017\041\365\126"}, {0x2F15, "\017\041\365\043"}, {0x2F16, "\017\041\363\217"}, {0x2F17, "\017\041\355\034"}, {0x2F18, "\017\041\360\202"}, {0x2F19, "\017\041\361\304"}, {0x2F1A, "\017\041\360\235"}, {0x2F1B, "\017\041\357\012"}, {0x2F1C, "\017\041\366\001"}, {0x2F1D, "\017\041\363\153"}, {0x2F1E, "\017\041\365\377"}, {0x2F1F, "\017\041\356\126"}, {0x2F20, "\017\041\370\147"}, {0x2F21, "\017\041\362\315"}, {0x2F22, "\017\041\363\274"}, {0x2F23, "\017\041\374\346"}, {0x2F24, "\017\041\340"}, {0x2F25, "\017\041\366\054"}, {0x2F26, "\017\041\366\002"}, {0x2F27, "\017\041\375\225"}, {0x2F28, "\017\041\373\261"}, {0x2F29, "\017\041\175"}, {0x2F2A, "\017\041\356\212"}, {0x2F2B, "\017\041\363\221"}, {0x2F2C, "\017\041\363\154"}, {0x2F2D, "\017\041\361\061"}, {0x2F2E, "\017\041\374\070"}, {0x2F2F, "\017\041\357\364"}, {0x2F30, "\017\041\374\344"}, {0x2F31, "\017\041\374\255"}, {0x2F32, "\017\041\374\240"}, {0x2F33, "\017\041\357\234"}, {0x2F34, "\017\041\362\350"}, {0x2F35, "\017\041\365\376"}, {0x2F36, "\017\041\127\370\254"}, {0x2F37, "\017\041\375\212"}, {0x2F38, "\017\041\355\202"}, {0x2F39, "\017\041\357\156"}, {0x2F3A, "\017\041\361\210"}, {0x2F3B, "\017\041\355\056"}, {0x2F3C, "\017\041\355\203"}, {0x2F3D, "\017\041\366\312"}, {0x2F3E, "\017\041\363\041\007\357\274"}, {0x2F3F, "\017\041\356\353"}, {0x2F40, "\017\041\363\161"}, {0x2F41, "\017\041\361\354"}, {0x2F42, "\017\041\377\024"}, {0x2F43, "\017\041\363\144"}, {0x2F44, "\017\041\366\304"}, {0x2F45, "\017\041\035"}, {0x2F46, "\017\041\355\140\355\056"}, {0x2F47, "\017\041\356\044"}, {0x2F48, "\017\041\365\271"}, {0x2F49, "\017\041\356\101"}, {0x2F4A, "\017\041\362\355"}, {0x2F4B, "\017\041\370\263"}, {0x2F4C, "\017\041\356\141"}, {0x2F4D, "\017\041\361\063"}, {0x2F4E, "\017\041\362\357"}, {0x2F4F, "\017\041\357\174\371\074\063\355\056"}, {0x2F50, "\017\041\365\047"}, {0x2F51, "\017\041\375\235\007\361\210"}, {0x2F52, "\017\041\365\037"}, {0x2F53, "\017\041\376\007"}, {0x2F54, "\017\041\356\066"}, {0x2F55, "\017\041\356\177"}, {0x2F56, "\017\041\366\245"}, {0x2F57, "\017\041\373\327"}, {0x2F58, "\017\041\366\012"}, {0x2F59, "\017\041\353\052\007\363\215"}, {0x2F5A, "\017\041\375\245"}, {0x2F5B, "\017\041\365\116"}, {0x2F5C, "\017\041\360\077"}, {0x2F5D, "\017\041\360\116"}, {0x2F5E, "\017\041\371\047"}, {0x2F5F, "\017\041\360\355"}, {0x2F60, "\017\041\370\315"}, {0x2F61, "\017\041\375\316"}, {0x2F62, "\017\041\143"}, {0x2F63, "\017\041\371\111"}, {0x2F64, "\017\041\376\002"}, {0x2F65, "\017\041\363\257"}, {0x2F66, "\017\041\361\171\360\160"}, {0x2F67, "\017\041\370\257"}, {0x2F68, "\017\041\371\016"}, {0x2F69, "\017\041\147"}, {0x2F6A, "\017\041\372\173"}, {0x2F6B, "\017\041\376\004"}, {0x2F6C, "\017\041\361\135"}, {0x2F6D, "\017\041\370\130"}, {0x2F6E, "\017\041\061"}, {0x2F6F, "\017\041\372\227"}, {0x2F70, "\017\041\357\306"}, {0x2F71, "\017\041\375\242"}, {0x2F72, "\017\041\365\144"}, {0x2F73, "\017\041\363\237"}, {0x2F74, "\017\041\365\237"}, {0x2F75, "\017\041\360\065"}, {0x2F76, "\017\041\374\072"}, {0x2F77, "\017\041\357\332"}, {0x2F78, "\017\041\373\260"}, {0x2F79, "\017\041\065"}, {0x2F7A, "\017\041\361\072"}, {0x2F7B, "\017\041\356\243"}, {0x2F7C, "\017\041\362\064"}, {0x2F7D, "\017\041\362\317"}, {0x2F7E, "\017\041\363\263"}, {0x2F7F, "\017\041\372\107"}, {0x2F80, "\017\041\357\272"}, {0x2F81, "\017\041\362\063"}, {0x2F82, "\017\041\370\365"}, {0x2F83, "\017\041\372\202"}, {0x2F84, "\017\041\362\360"}, {0x2F85, "\017\041\361\064"}, {0x2F86, "\017\041\370\131"}, {0x2F87, "\017\041\374\204"}, {0x2F88, "\017\041\360\067"}, {0x2F89, "\017\041\374\176"}, {0x2F8A, "\017\041\365\101"}, {0x2F8B, "\017\041\356\334"}, {0x2F8C, "\017\041\362\005"}, {0x2F8D, "\017\041\367\217"}, {0x2F8E, "\017\041\374\217"}, {0x2F8F, "\017\041\365\354"}, {0x2F90, "\017\041\360\317"}, {0x2F91, "\017\041\357\260"}, {0x2F92, "\017\041\362\074"}, {0x2F93, "\017\041\357\106"}, {0x2F94, "\017\041\361\155"}, {0x2F95, "\017\041\376\005"}, {0x2F96, "\017\041\366\316"}, {0x2F97, "\017\041\365\041"}, {0x2F98, "\017\041\362\327"}, {0x2F99, "\017\041\360\140"}, {0x2F9A, "\017\041\374\110"}, {0x2F9B, "\017\041\365\106"}, {0x2F9C, "\017\041\356\242"}, {0x2F9D, "\017\041\365\073"}, {0x2F9E, "\017\041\362\100"}, {0x2F9F, "\017\041\376\376"}, {0x2FA0, "\017\041\370\276"}, {0x2FA1, "\017\041\357\014"}, {0x2FA2, "\017\041\374\174"}, {0x2FA3, "\017\041\057\212\365\071"}, {0x2FA4, "\017\041\365\125"}, {0x2FA5, "\017\041\366\313"}, {0x2FA6, "\017\041\361\141"}, {0x2FA7, "\017\041\355\264"}, {0x2FA8, "\017\041\357\274"}, {0x2FA9, "\017\041\357\353"}, {0x2FAA, "\017\041\356\172"}, {0x2FAB, "\017\041\357\254\044\356\247\356\314"}, {0x2FAC, "\017\041\361\206"}, {0x2FAD, "\017\041\360\075"}, {0x2FAE, "\017\041\375\231"}, {0x2FAF, "\017\041\356\265"}, {0x2FB0, "\017\041\357\113"}, {0x2FB1, "\017\041\357\113\361\353"}, {0x2FB2, "\017\041\363\345"}, {0x2FB3, "\017\041\355\175"}, {0x2FB4, "\017\041\360\240"}, {0x2FB5, "\017\041\357\375"}, {0x2FB6, "\017\041\362\075"}, {0x2FB7, "\017\041\356\223"}, {0x2FB8, "\017\041\357\373"}, {0x2FB9, "\017\041\372\156"}, {0x2FBA, "\017\041\360\115"}, {0x2FBB, "\017\041\357\257"}, {0x2FBC, "\017\041\102"}, {0x2FBD, "\017\041\363\303"}, {0x2FBE, "\017\041\374\071"}, {0x2FBF, "\017\041\360\002\374\207"}, {0x2FC0, "\017\041\363\266"}, {0x2FC1, "\017\041\360\222"}, {0x2FC2, "\017\041\361\211"}, {0x2FC3, "\017\041\357\254"}, {0x2FC4, "\017\041\361\306"}, {0x2FC5, "\017\041\363\252"}, {0x2FC6, "\017\041\360\076"}, {0x2FC7, "\017\041\363\260"}, {0x2FC8, "\017\041\360\357"}, {0x2FC9, "\017\041\370\362"}, {0x2FCA, "\017\041\207"}, {0x2FCB, "\017\041\363\163"}, {0x2FCC, "\017\041\366\243"}, {0x2FCD, "\017\041\375\256"}, {0x2FCE, "\017\041\375\101"}, {0x2FCF, "\017\041\361\246"}, {0x2FD0, "\017\041\371\200"}, {0x2FD1, "\017\041\357\164"}, {0x2FD2, "\017\041\355\250"}, {0x2FD3, "\017\041\357\142"}, {0x2FD4, "\017\041\357\047"}, {0x2FD5, "\017\041\366\074"}, {0x2FF0, "\335\007\355\161\076\052\044\053"}, {0x2FF1, "\335\007\355\161\076\007\102\013\101"}, {0x2FF2, "\335\007\355\161\076\007\033\052\355\307\361\055\361\227\044\033\053"}, {0x2FF3, "\335\007\355\161\076\212\102\355\307\361\055\361\227\013\101"}, {0x2FF4, "\335\007\355\161\076\375\240\355\375"}, {0x2FF5, "\335\007\355\161\076\355\375\044\356\031\212\102"}, {0x2FF6, "\335\007\355\161\076\355\375\044\356\031\212\101"}, {0x2FF7, "\335\007\355\161\076\355\375\044\356\031\007\033\052"}, {0x2FF8, "\335\007\355\161\076\355\375\044\356\031\357\117\102\044\052"}, {0x2FF9, "\335\007\355\161\076\355\375\044\356\031\357\117\102\044\053"}, {0x2FFA, "\335\007\355\161\076\355\375\044\356\031\357\117\101\044\052"}, {0x2FFB, "\335\007\355\161\076\363\302"}, {0x3000, "\355\073\076"}, {0x3001, "\330\076"}, {0x3002, "\037\076"}, {0x3003, "\366\252\007\356\112"}, {0x3004, "\022\007\361\117\367\206\367\257"}, {0x3005, "\204\076\356\156"}, {0x3006, "\204\076\007\366\057"}, {0x3007, "\331\076"}, {0x3008, "\122\356\301\044\052"}, {0x3009, "\122\356\301\044\053"}, {0x300A, "\070\122\356\301\044\052"}, {0x300B, "\070\122\356\301\044\053"}, {0x300C, "\122\273\052"}, {0x300D, "\122\273\221"}, {0x300E, "\122\147\273\052"}, {0x300F, "\122\147\273\221"}, {0x3010, "\122\207\356\076\052"}, {0x3011, "\122\207\356\076\221"}, {0x3012, "\204\357\275"}, {0x3013, "\057\366\303"}, {0x3014, "\122\052\013\355\370"}, {0x3015, "\122\221\013\355\370"}, {0x3016, "\122\147\356\076\052"}, {0x3017, "\122\147\356\076\221"}, {0x3018, "\122\147\052\013\355\370"}, {0x3019, "\122\147\221\013\355\370"}, {0x301A, "\122\147\052"}, {0x301B, "\122\147\221"}, {0x301C, "\355\126\355\315\013\356\173"}, {0x301D, "\355\135\070\355\235\355\013"}, {0x301E, "\355\135\070\355\235"}, {0x301F, "\355\135\070\355\235\320"}, {0x3020, "\356\265\013\204\357\275"}, {0x3021, "\024\110\355\164"}, {0x3022, "\024\127\355\164"}, {0x3023, "\024\136\355\164"}, {0x3024, "\024\220\355\164"}, {0x3025, "\024\230\355\164"}, {0x3026, "\024\255\355\164"}, {0x3027, "\024\252\355\164"}, {0x3028, "\024\226\355\164"}, {0x3029, "\024\257\355\164"}, {0x302A, "\204\076\007\345\356\201"}, {0x302B, "\204\076\007\345\360\054"}, {0x302C, "\204\076\007\345\374\356"}, {0x302D, "\204\076\007\345\366\011"}, {0x302E, "\204\007\345\014\037"}, {0x302F, "\204\007\345\014\070\037"}, {0x3030, "\355\126\355\315\356\232"}, {0x3031, "\204\256\356\214\007\356\112"}, {0x3032, "\204\256\356\214\007\356\112\164\355\175\356\266"}, {0x3033, "\353\355\354\007\204\256\356\214\007\356\112"}, {0x3034, "\353\355\354\007\204\256\356\214\007\356\112\164\355\175\356\266"}, {0x3035, "\353\356\020\007\204\256\356\214\007\356\112"}, {0x3036, "\204\357\275\177"}, {0x3037, "\022\162\076\355\045\007\360\113\007\243"}, {0x3038, "\210\355\034\355\164"}, {0x3039, "\210\356\050\355\164"}, {0x303A, "\210\357\365\355\164"}, {0x303E, "\357\176\007\357\052\076"}, {0x303F, "\365\247\076"}, {0x3041, "\002\124\063\005"}, {0x3042, "\002\124\063"}, {0x3043, "\002\124\103\005"}, {0x3044, "\002\124\103"}, {0x3045, "\002\124\132\005"}, {0x3046, "\002\124\132"}, {0x3047, "\002\124\130\005"}, {0x3048, "\002\124\130"}, {0x3049, "\002\124\064\005"}, {0x304A, "\002\124\064"}, {0x304B, "\002\124\240"}, {0x304C, "\002\124\355\017"}, {0x304D, "\002\124\355\332"}, {0x304E, "\002\124\356\204"}, {0x304F, "\002\124\356\021"}, {0x3050, "\002\124\357\160"}, {0x3051, "\002\124\355\331"}, {0x3052, "\002\124\356\203"}, {0x3053, "\002\124\355\167"}, {0x3054, "\002\124\356\071"}, {0x3055, "\002\124\355\004"}, {0x3056, "\002\124\355\101"}, {0x3057, "\002\124\355\275"}, {0x3058, "\002\124\356\275"}, {0x3059, "\002\124\356\253"}, {0x305A, "\002\124\360\022"}, {0x305B, "\002\124\356\042"}, {0x305C, "\002\124\356\274"}, {0x305D, "\002\124\355\070"}, {0x305E, "\002\124\356\135"}, {0x305F, "\002\124\311"}, {0x3060, "\002\124\355\002"}, {0x3061, "\002\124\355\217"}, {0x3062, "\002\124\356\062"}, {0x3063, "\002\124\355\300\005"}, {0x3064, "\002\124\355\300"}, {0x3065, "\002\124\212"}, {0x3066, "\002\124\356\125"}, {0x3067, "\002\124\007"}, {0x3068, "\002\124\355\176"}, {0x3069, "\002\124\355\252"}, {0x306A, "\002\124\354"}, {0x306B, "\002\124\244"}, {0x306C, "\002\124\356\025"}, {0x306D, "\002\124\355\140"}, {0x306E, "\002\124\355\113"}, {0x306F, "\002\124\314"}, {0x3070, "\002\124\355\052"}, {0x3071, "\002\124\327"}, {0x3072, "\002\124\355\255"}, {0x3073, "\002\124\356\304"}, {0x3074, "\002\124\355\233"}, {0x3075, "\002\124\356\336"}, {0x3076, "\002\124\356\003"}, {0x3077, "\002\124\357\277"}, {0x3078, "\002\124\356\072"}, {0x3079, "\002\124\356\142"}, {0x307A, "\002\124\356\375"}, {0x307B, "\002\124\355\107"}, {0x307C, "\002\124\355\377"}, {0x307D, "\002\124\355\273"}, {0x307E, "\002\124\277"}, {0x307F, "\002\124\355\230"}, {0x3080, "\002\124\355\111"}, {0x3081, "\002\124\355\334"}, {0x3082, "\002\124\355\136"}, {0x3083, "\002\124\305\005"}, {0x3084, "\002\124\305"}, {0x3085, "\002\124\355\364\005"}, {0x3086, "\002\124\355\364"}, {0x3087, "\002\124\355\040\005"}, {0x3088, "\002\124\355\040"}, {0x3089, "\002\124\322"}, {0x308A, "\002\124\355\347"}, {0x308B, "\002\124\356\037"}, {0x308C, "\002\124\356\035"}, {0x308D, "\002\124\355\174"}, {0x308E, "\002\124\355\050\005"}, {0x308F, "\002\124\355\050"}, {0x3090, "\002\124\355\362"}, {0x3091, "\002\124\356\270"}, {0x3092, "\002\124\355\150"}, {0x3093, "\002\124\241"}, {0x3094, "\002\124\360\004"}, {0x3099, "\026\356\075\355\175\356\266"}, {0x309A, "\026\356\075\355\175\357\324"}, {0x309B, "\204\356\075\007\355\175\356\266"}, {0x309C, "\204\356\075\007\355\175\357\324"}, {0x309D, "\204\356\156\124"}, {0x309E, "\204\356\156\360\003\124"}, {0x30A1, "\002\045\063\005"}, {0x30A2, "\002\045\063"}, {0x30A3, "\002\045\103\005"}, {0x30A4, "\002\045\103"}, {0x30A5, "\002\045\132\005"}, {0x30A6, "\002\045\132"}, {0x30A7, "\002\045\130\005"}, {0x30A8, "\002\045\130"}, {0x30A9, "\002\045\064\005"}, {0x30AA, "\002\045\064"}, {0x30AB, "\002\045\240"}, {0x30AC, "\002\045\355\017"}, {0x30AD, "\002\045\355\332"}, {0x30AE, "\002\045\356\204"}, {0x30AF, "\002\045\356\021"}, {0x30B0, "\002\045\357\160"}, {0x30B1, "\002\045\355\331"}, {0x30B2, "\002\045\356\203"}, {0x30B3, "\002\045\355\167"}, {0x30B4, "\002\045\356\071"}, {0x30B5, "\002\045\355\004"}, {0x30B6, "\002\045\355\101"}, {0x30B7, "\002\045\355\275"}, {0x30B8, "\002\045\356\275"}, {0x30B9, "\002\045\356\253"}, {0x30BA, "\002\045\360\022"}, {0x30BB, "\002\045\356\042"}, {0x30BC, "\002\045\356\274"}, {0x30BD, "\002\045\355\070"}, {0x30BE, "\002\045\356\135"}, {0x30BF, "\002\045\311"}, {0x30C0, "\002\045\355\002"}, {0x30C1, "\002\045\355\217"}, {0x30C2, "\002\045\356\062"}, {0x30C3, "\002\045\355\300\005"}, {0x30C4, "\002\045\355\300"}, {0x30C5, "\002\045\212"}, {0x30C6, "\002\045\356\125"}, {0x30C7, "\002\045\007"}, {0x30C8, "\002\045\355\176"}, {0x30C9, "\002\045\355\252"}, {0x30CA, "\002\045\354"}, {0x30CB, "\002\045\244"}, {0x30CC, "\002\045\356\025"}, {0x30CD, "\002\045\355\140"}, {0x30CE, "\002\045\355\113"}, {0x30CF, "\002\045\314"}, {0x30D0, "\002\045\355\052"}, {0x30D1, "\002\045\327"}, {0x30D2, "\002\045\355\255"}, {0x30D3, "\002\045\356\304"}, {0x30D4, "\002\045\355\233"}, {0x30D5, "\002\045\356\336"}, {0x30D6, "\002\045\356\003"}, {0x30D7, "\002\045\357\277"}, {0x30D8, "\002\045\356\072"}, {0x30D9, "\002\045\356\142"}, {0x30DA, "\002\045\356\375"}, {0x30DB, "\002\045\355\107"}, {0x30DC, "\002\045\355\377"}, {0x30DD, "\002\045\355\273"}, {0x30DE, "\002\045\277"}, {0x30DF, "\002\045\355\230"}, {0x30E0, "\002\045\355\111"}, {0x30E1, "\002\045\355\334"}, {0x30E2, "\002\045\355\136"}, {0x30E3, "\002\045\305\005"}, {0x30E4, "\002\045\305"}, {0x30E5, "\002\045\355\364\005"}, {0x30E6, "\002\045\355\364"}, {0x30E7, "\002\045\355\040\005"}, {0x30E8, "\002\045\355\040"}, {0x30E9, "\002\045\322"}, {0x30EA, "\002\045\355\347"}, {0x30EB, "\002\045\356\037"}, {0x30EC, "\002\045\356\035"}, {0x30ED, "\002\045\355\174"}, {0x30EE, "\002\045\355\050\005"}, {0x30EF, "\002\045\355\050"}, {0x30F0, "\002\045\355\362"}, {0x30F1, "\002\045\356\270"}, {0x30F2, "\002\045\355\150"}, {0x30F3, "\002\045\241"}, {0x30F4, "\002\045\360\004"}, {0x30F5, "\002\045\240\005"}, {0x30F6, "\002\045\355\331\005"}, {0x30F7, "\002\045\355\241"}, {0x30F8, "\002\045\360\001"}, {0x30F9, "\002\045\357\053"}, {0x30FA, "\002\045\356\132"}, {0x30FB, "\037\355\137\045"}, {0x30FC, "\204\356\075\007\355\175\357\013"}, {0x30FD, "\204\356\156\045"}, {0x30FE, "\204\356\156\360\003\045"}, {0x3105, "\001\166\355\021"}, {0x3106, "\001\166\372\142"}, {0x3107, "\001\166\276"}, {0x3108, "\001\166\355\062"}, {0x3109, "\001\166\261"}, {0x310A, "\001\166\375\076"}, {0x310B, "\001\166\241"}, {0x310C, "\001\166\211"}, {0x310D, "\001\166\352"}, {0x310E, "\001\166\360\363"}, {0x310F, "\001\166\237"}, {0x3110, "\001\166\362\040"}, {0x3111, "\001\166\375\263"}, {0x3112, "\001\166\367\117"}, {0x3113, "\001\166\361\360"}, {0x3114, "\001\166\375\115"}, {0x3115, "\001\166\357\075"}, {0x3116, "\001\166\355\053"}, {0x3117, "\001\166\375\342"}, {0x3118, "\001\166\375\343"}, {0x3119, "\001\166\223"}, {0x311A, "\001\166\063"}, {0x311B, "\001\166\306"}, {0x311C, "\001\166\130"}, {0x311D, "\001\166\356\136"}, {0x311E, "\001\166\307"}, {0x311F, "\001\166\366\037"}, {0x3120, "\001\166\362\342"}, {0x3121, "\001\166\366\020"}, {0x3122, "\001\166\357\064"}, {0x3123, "\001\166\013"}, {0x3124, "\001\166\355\373"}, {0x3125, "\001\166\356\007"}, {0x3126, "\001\166\366\026"}, {0x3127, "\001\166\103"}, {0x3128, "\001\166\113"}, {0x3129, "\001\166\132"}, {0x312A, "\001\166\355\025"}, {0x312B, "\001\166\355\336"}, {0x312C, "\001\166\366\233"}, {0x3131, "\001\014\355\333"}, {0x3132, "\001\014\357\040"}, {0x3133, "\001\014\357\221"}, {0x3134, "\001\014\355\337"}, {0x3135, "\001\014\357\246"}, {0x3136, "\001\014\357\245"}, {0x3137, "\001\014\355\360"}, {0x3138, "\001\014\357\340"}, {0x3139, "\001\014\355\350"}, {0x313A, "\001\014\357\307"}, {0x313B, "\001\014\357\310"}, {0x313C, "\001\014\357\312"}, {0x313D, "\001\014\357\313"}, {0x313E, "\001\014\357\314"}, {0x313F, "\001\014\357\311"}, {0x3140, "\001\014\357\023"}, {0x3141, "\001\014\355\335"}, {0x3142, "\001\014\355\345"}, {0x3143, "\001\014\357\336"}, {0x3144, "\001\014\357\002"}, {0x3145, "\001\014\355\351"}, {0x3146, "\001\014\357\041"}, {0x3147, "\001\014\355\327"}, {0x3148, "\001\014\355\276"}, {0x3149, "\001\014\357\337"}, {0x314A, "\001\014\355\356"}, {0x314B, "\001\014\355\330"}, {0x314C, "\001\014\355\355"}, {0x314D, "\001\014\355\344"}, {0x314E, "\001\014\355\325"}, {0x314F, "\001\014\063"}, {0x3150, "\001\014\356\136"}, {0x3151, "\001\014\305"}, {0x3152, "\001\014\360\016"}, {0x3153, "\001\014\064"}, {0x3154, "\001\014\217"}, {0x3155, "\001\014\355\040"}, {0x3156, "\001\014\355\303"}, {0x3157, "\001\014\306"}, {0x3158, "\001\014\355\050"}, {0x3159, "\001\014\360\010"}, {0x315A, "\001\014\356\011"}, {0x315B, "\001\014\356\273"}, {0x315C, "\001\014\113"}, {0x315D, "\001\014\355\150"}, {0x315E, "\001\014\356\271"}, {0x315F, "\001\014\355\362"}, {0x3160, "\001\014\355\151"}, {0x3161, "\001\014\360\033"}, {0x3162, "\001\014\360\034"}, {0x3163, "\001\014\103"}, {0x3164, "\356\145\014"}, {0x3165, "\001\014\361\335"}, {0x3166, "\001\014\357\247"}, {0x3167, "\001\014\361\113"}, {0x3168, "\001\014\361\112"}, {0x3169, "\001\014\361\263"}, {0x316A, "\001\014\361\267"}, {0x316B, "\001\014\361\266"}, {0x316C, "\001\014\361\265"}, {0x316D, "\001\014\361\270"}, {0x316E, "\001\014\357\235"}, {0x316F, "\001\014\361\057"}, {0x3170, "\001\014\361\056"}, {0x3171, "\001\014\357\213"}, {0x3172, "\001\014\361\172"}, {0x3173, "\001\014\361\200"}, {0x3174, "\001\014\361\174"}, {0x3175, "\001\014\361\175"}, {0x3176, "\001\014\361\177"}, {0x3177, "\001\014\361\176"}, {0x3178, "\001\014\357\215"}, {0x3179, "\001\014\360\365"}, {0x317A, "\001\014\357\326"}, {0x317B, "\001\014\361\320"}, {0x317C, "\001\014\357\330"}, {0x317D, "\001\014\357\327"}, {0x317E, "\001\014\361\322"}, {0x317F, "\001\014\357\265"}, {0x3180, "\001\014\357\335"}, {0x3181, "\001\014\360\012"}, {0x3182, "\001\014\362\113"}, {0x3183, "\001\014\362\112"}, {0x3184, "\001\014\357\214"}, {0x3185, "\001\014\361\334"}, {0x3186, "\001\014\360\013"}, {0x3187, "\001\014\362\136"}, {0x3188, "\001\014\362\137"}, {0x3189, "\001\014\362\135"}, {0x318A, "\001\014\362\121"}, {0x318B, "\001\014\362\122"}, {0x318C, "\001\014\362\120"}, {0x318D, "\001\014\360\053"}, {0x318E, "\001\014\362\371"}, {0x3190, "\204\355\041\076\007\370\162"}, {0x3191, "\204\355\041\076\365\161"}, {0x3192, "\204\355\041\076\110"}, {0x3193, "\204\355\041\076\127"}, {0x3194, "\204\355\041\076\136"}, {0x3195, "\204\355\041\076\220"}, {0x3196, "\204\355\041\076\212\102"}, {0x3197, "\204\355\041\076\212\356\307"}, {0x3198, "\204\355\041\076\212\101"}, {0x3199, "\204\355\041\076\212\361\222"}, {0x319A, "\204\355\041\076\212\357\323"}, {0x319B, "\204\355\041\076\212\375\257"}, {0x319C, "\204\355\041\076\212\361\243"}, {0x319D, "\204\355\041\076\212\357\100"}, {0x319E, "\204\355\041\076\007\033\356\126"}, {0x319F, "\204\355\041\076\007\370\123"}, {0x31A0, "\001\166\334"}, {0x31A1, "\001\166\271"}, {0x31A2, "\001\166\365\277"}, {0x31A3, "\001\166\266"}, {0x31A4, "\001\166\217"}, {0x31A5, "\001\166\366\005"}, {0x31A6, "\001\166\064"}, {0x31A7, "\001\166\361\137"}, {0x31A8, "\001\166\377\046"}, {0x31A9, "\001\166\362\331"}, {0x31AA, "\001\166\367\214"}, {0x31AB, "\001\166\372\127"}, {0x31AC, "\001\166\367\204"}, {0x31AD, "\001\166\371\211"}, {0x31AE, "\001\166\363\015"}, {0x31AF, "\001\166\362\343"}, {0x31B0, "\001\166\356\277"}, {0x31B1, "\001\166\356\366"}, {0x31B2, "\001\166\372\077"}, {0x31B3, "\001\166\367\216"}, {0x31B4, "\001\166\355\021\032"}, {0x31B5, "\001\166\261\032"}, {0x31B6, "\001\166\360\363\032"}, {0x31B7, "\001\166\237\032"}, {0x3200, "\014\355\333\075\077"}, {0x3201, "\014\355\337\075\077"}, {0x3202, "\014\355\360\075\077"}, {0x3203, "\014\355\350\075\077"}, {0x3204, "\014\355\335\075\077"}, {0x3205, "\014\355\345\075\077"}, {0x3206, "\014\355\351\075\077"}, {0x3207, "\014\355\327\075\077"}, {0x3208, "\014\355\276\075\077"}, {0x3209, "\014\355\356\075\077"}, {0x320A, "\014\355\330\075\077"}, {0x320B, "\014\355\355\075\077"}, {0x320C, "\014\355\344\075\077"}, {0x320D, "\014\355\325\075\077"}, {0x320E, "\014\355\333\063\075\077"}, {0x320F, "\014\355\337\063\075\077"}, {0x3210, "\014\355\360\063\075\077"}, {0x3211, "\014\355\350\063\075\077"}, {0x3212, "\014\355\335\063\075\077"}, {0x3213, "\014\355\345\063\075\077"}, {0x3214, "\014\355\351\063\075\077"}, {0x3215, "\014\355\327\063\075\077"}, {0x3216, "\014\355\276\063\075\077"}, {0x3217, "\014\355\356\063\075\077"}, {0x3218, "\014\355\330\063\075\077"}, {0x3219, "\014\355\355\063\075\077"}, {0x321A, "\014\355\344\063\075\077"}, {0x321B, "\014\355\325\063\075\077"}, {0x321C, "\014\355\276\113\075\077"}, {0x3220, "\016\110\075\077"}, {0x3221, "\016\127\075\077"}, {0x3222, "\016\136\075\077"}, {0x3223, "\016\220\075\077"}, {0x3224, "\016\230\075\077"}, {0x3225, "\016\255\075\077"}, {0x3226, "\016\252\075\077"}, {0x3227, "\016\226\075\077"}, {0x3228, "\016\257\075\077"}, {0x3229, "\016\355\034\075\077"}, {0x322A, "\016\356\101\075\077"}, {0x322B, "\016\356\177\075\077"}, {0x322C, "\016\356\066\075\077"}, {0x322D, "\016\356\001\075\077"}, {0x322E, "\016\361\103\075\077"}, {0x322F, "\016\356\126\075\077"}, {0x3230, "\016\356\044\075\077"}, {0x3231, "\016\361\050\075\077"}, {0x3232, "\016\360\061\075\077"}, {0x3233, "\016\357\331\075\077"}, {0x3234, "\016\361\116\075\077"}, {0x3235, "\016\361\333\075\077"}, {0x3236, "\016\360\241\075\077"}, {0x3237, "\016\360\254\075\077"}, {0x3238, "\016\357\364\075\077"}, {0x3239, "\016\374\056\075\077"}, {0x323A, "\016\362\347\075\077"}, {0x323B, "\016\362\157\075\077"}, {0x323C, "\016\375\040\075\077"}, {0x323D, "\016\360\232\075\077"}, {0x323E, "\016\361\256\075\077"}, {0x323F, "\016\360\046\075\077"}, {0x3240, "\016\366\060\075\077"}, {0x3241, "\016\361\255\075\077"}, {0x3242, "\016\374\343\075\077"}, {0x3243, "\016\363\002\075\077"}, {0x3260, "\014\051\355\333"}, {0x3261, "\014\051\355\337"}, {0x3262, "\014\051\355\360"}, {0x3263, "\014\051\355\350"}, {0x3264, "\014\051\355\335"}, {0x3265, "\014\051\355\345"}, {0x3266, "\014\051\355\351"}, {0x3267, "\014\051\355\327"}, {0x3268, "\014\051\355\276"}, {0x3269, "\014\051\355\356"}, {0x326A, "\014\051\355\330"}, {0x326B, "\014\051\355\355"}, {0x326C, "\014\051\355\344"}, {0x326D, "\014\051\355\325"}, {0x326E, "\014\051\355\333\063"}, {0x326F, "\014\051\355\337\063"}, {0x3270, "\014\051\355\360\063"}, {0x3271, "\014\051\355\350\063"}, {0x3272, "\014\051\355\335\063"}, {0x3273, "\014\051\355\345\063"}, {0x3274, "\014\051\355\351\063"}, {0x3275, "\014\051\355\327\063"}, {0x3276, "\014\051\355\276\063"}, {0x3277, "\014\051\355\356\063"}, {0x3278, "\014\051\355\330\063"}, {0x3279, "\014\051\355\355\063"}, {0x327A, "\014\051\355\344\063"}, {0x327B, "\014\051\355\325\063"}, {0x327F, "\022\007\361\117\365\076"}, {0x3280, "\016\110\051"}, {0x3281, "\016\127\051"}, {0x3282, "\016\136\051"}, {0x3283, "\016\220\051"}, {0x3284, "\016\230\051"}, {0x3285, "\016\255\051"}, {0x3286, "\016\252\051"}, {0x3287, "\016\226\051"}, {0x3288, "\016\257\051"}, {0x3289, "\016\355\034\051"}, {0x328A, "\016\356\101\051"}, {0x328B, "\016\356\177\051"}, {0x328C, "\016\356\066\051"}, {0x328D, "\016\356\001\051"}, {0x328E, "\016\361\103\051"}, {0x328F, "\016\356\126\051"}, {0x3290, "\016\356\044\051"}, {0x3291, "\016\361\050\051"}, {0x3292, "\016\360\061\051"}, {0x3293, "\016\357\331\051"}, {0x3294, "\016\361\116\051"}, {0x3295, "\016\361\333\051"}, {0x3296, "\016\360\241\051"}, {0x3297, "\016\360\254\051"}, {0x3298, "\016\357\364\051"}, {0x3299, "\016\374\242\051"}, {0x329A, "\016\361\102\051"}, {0x329B, "\016\360\237\051"}, {0x329C, "\016\362\277\051"}, {0x329D, "\016\366\031\051"}, {0x329E, "\016\360\345\051"}, {0x329F, "\016\363\004\051"}, {0x32A0, "\016\362\364\051"}, {0x32A1, "\016\361\255\051"}, {0x32A2, "\016\365\067\051"}, {0x32A3, "\016\365\074\051"}, {0x32A4, "\016\102\051"}, {0x32A5, "\016\356\307\051"}, {0x32A6, "\016\101\051"}, {0x32A7, "\016\052\051"}, {0x32A8, "\016\221\051"}, {0x32A9, "\016\371\060\051"}, {0x32AA, "\016\374\052\051"}, {0x32AB, "\016\362\157\051"}, {0x32AC, "\016\375\041\051"}, {0x32AD, "\016\360\232\051"}, {0x32AE, "\016\361\256\051"}, {0x32AF, "\016\360\046\051"}, {0x32B0, "\016\371\364\051"}, {0x32C0, "\022\162\076\367\256"}, {0x32C1, "\022\162\076\366\134"}, {0x32C2, "\022\162\076\370\271"}, {0x32C3, "\022\162\076\363\010"}, {0x32C4, "\022\162\076\361\047"}, {0x32C5, "\022\162\076\367\327"}, {0x32C6, "\022\162\076\367\326"}, {0x32C7, "\022\162\076\362\345"}, {0x32C8, "\022\162\076\374\252"}, {0x32C9, "\022\162\076\372\073"}, {0x32CA, "\022\162\076\371\330"}, {0x32CB, "\022\162\076\365\352"}, {0x32D0, "\045\051\063"}, {0x32D1, "\045\051\103"}, {0x32D2, "\045\051\132"}, {0x32D3, "\045\051\130"}, {0x32D4, "\045\051\064"}, {0x32D5, "\045\051\240"}, {0x32D6, "\045\051\355\332"}, {0x32D7, "\045\051\356\021"}, {0x32D8, "\045\051\355\331"}, {0x32D9, "\045\051\355\167"}, {0x32DA, "\045\051\355\004"}, {0x32DB, "\045\051\355\275"}, {0x32DC, "\045\051\356\253"}, {0x32DD, "\045\051\356\042"}, {0x32DE, "\045\051\355\070"}, {0x32DF, "\045\051\311"}, {0x32E0, "\045\051\355\217"}, {0x32E1, "\045\051\355\300"}, {0x32E2, "\045\051\356\125"}, {0x32E3, "\045\051\355\176"}, {0x32E4, "\045\051\354"}, {0x32E5, "\045\051\244"}, {0x32E6, "\045\051\356\025"}, {0x32E7, "\045\051\355\140"}, {0x32E8, "\045\051\355\113"}, {0x32E9, "\045\051\314"}, {0x32EA, "\045\051\355\255"}, {0x32EB, "\045\051\356\336"}, {0x32EC, "\045\051\356\072"}, {0x32ED, "\045\051\355\107"}, {0x32EE, "\045\051\277"}, {0x32EF, "\045\051\355\230"}, {0x32F0, "\045\051\355\111"}, {0x32F1, "\045\051\355\334"}, {0x32F2, "\045\051\355\136"}, {0x32F3, "\045\051\305"}, {0x32F4, "\045\051\355\364"}, {0x32F5, "\045\051\355\040"}, {0x32F6, "\045\051\322"}, {0x32F7, "\045\051\355\347"}, {0x32F8, "\045\051\356\037"}, {0x32F9, "\045\051\356\035"}, {0x32FA, "\045\051\355\174"}, {0x32FB, "\045\051\355\050"}, {0x32FC, "\045\051\355\362"}, {0x32FD, "\045\051\356\270"}, {0x32FE, "\045\051\355\150"}, {0x3300, "\362\352\046\013\035"}, {0x3301, "\362\365\046\013\035"}, {0x3302, "\362\337\046\013\035"}, {0x3303, "\377\001\046\013\035"}, {0x3304, "\367\213\046\013\035"}, {0x3305, "\367\222\046\013\035"}, {0x3306, "\375\373\046\013\035"}, {0x3307, "\366\023\046\013\035"}, {0x3308, "\377\043\046\013\035"}, {0x3309, "\372\102\046\013\035"}, {0x330A, "\377\064\046\013\035"}, {0x330B, "\367\356\046\013\035"}, {0x330C, "\367\364\046\013\035"}, {0x330D, "\367\366\046\013\035"}, {0x330E, "\366\142\046\013\035"}, {0x330F, "\366\137\046\013\035"}, {0x3310, "\366\223\046\013\035"}, {0x3311, "\366\225\046\013\035"}, {0x3312, "\370\107\046\013\035"}, {0x3313, "\366\227\046\013\035"}, {0x3314, "\370\017\046\013\035"}, {0x3315, "\370\020\046\013\035"}, {0x3316, "\370\021\046\013\035"}, {0x3317, "\370\022\046\013\035"}, {0x3318, "\366\261\046\013\035"}, {0x3319, "\366\262\046\013\035"}, {0x331A, "\370\057\046\013\035"}, {0x331B, "\370\061\046\013\035"}, {0x331C, "\370\116\046\013\035"}, {0x331D, "\370\041\046\013\035"}, {0x331E, "\370\121\046\013\035"}, {0x331F, "\374\211\046\013\035"}, {0x3320, "\374\221\046\013\035"}, {0x3321, "\374\321\046\013\035"}, {0x3322, "\374\247\046\013\035"}, {0x3323, "\374\250\046\013\035"}, {0x3324, "\365\351\046\013\035"}, {0x3325, "\365\255\046\013\035"}, {0x3326, "\365\324\046\013\035"}, {0x3327, "\375\226\046\013\035"}, {0x3328, "\371\102\046\013\035"}, {0x3329, "\371\325\046\013\035"}, {0x332A, "\366\310\046\013\035"}, {0x332B, "\373\324\046\013\035"}, {0x332C, "\373\325\046\013\035"}, {0x332D, "\363\211\046\013\035"}, {0x332E, "\372\224\046\013\035"}, {0x332F, "\372\232\046\013\035"}, {0x3330, "\372\231\046\013\035"}, {0x3331, "\363\135\046\013\035"}, {0x3332, "\367\120\046\013\035"}, {0x3333, "\367\126\046\013\035"}, {0x3334, "\363\175\046\013\035"}, {0x3335, "\367\125\046\013\035"}, {0x3336, "\366\323\046\013\035"}, {0x3337, "\372\206\046\013\035"}, {0x3338, "\372\175\046\013\035"}, {0x3339, "\366\326\046\013\035"}, {0x333A, "\372\176\046\013\035"}, {0x333B, "\373\330\046\013\035"}, {0x333C, "\356\305\046\013\035"}, {0x333D, "\372\251\046\013\035"}, {0x333E, "\363\150\046\013\035"}, {0x333F, "\367\100\046\013\035"}, {0x3340, "\373\254\046\013\035"}, {0x3341, "\367\163\046\013\035"}, {0x3342, "\367\162\046\013\035"}, {0x3343, "\370\303\046\013\035"}, {0x3344, "\370\302\046\013\035"}, {0x3345, "\370\252\046\013\035"}, {0x3346, "\370\256\046\013\035"}, {0x3347, "\370\264\046\013\035"}, {0x3348, "\370\360\046\013\035"}, {0x3349, "\370\370\046\013\035"}, {0x334A, "\370\371\046\013\035"}, {0x334B, "\357\244\046\013\035"}, {0x334C, "\371\063\046\013\035"}, {0x334D, "\371\065\046\013\035"}, {0x334E, "\376\226\046\013\035"}, {0x334F, "\376\227\046\013\035"}, {0x3350, "\376\204\046\013\035"}, {0x3351, "\374\067\046\013\035"}, {0x3352, "\374\066\046\013\035"}, {0x3353, "\374\151\046\013\035"}, {0x3354, "\374\203\046\013\035"}, {0x3355, "\374\053\046\013\035"}, {0x3356, "\374\054\046\013\035"}, {0x3357, "\376\075\046\013\035"}, {0x3358, "\022\162\076\341\331"}, {0x3359, "\022\162\076\341\110"}, {0x335A, "\022\162\076\341\127"}, {0x335B, "\022\162\076\341\136"}, {0x335C, "\022\162\076\341\220"}, {0x335D, "\022\162\076\341\230"}, {0x335E, "\022\162\076\341\255"}, {0x335F, "\022\162\076\341\252"}, {0x3360, "\022\162\076\341\226"}, {0x3361, "\022\162\076\341\257"}, {0x3362, "\022\162\076\341\355\034"}, {0x3363, "\022\162\076\341\356\027"}, {0x3364, "\022\162\076\341\355\317"}, {0x3365, "\022\162\076\341\356\260"}, {0x3366, "\022\162\076\341\356\246"}, {0x3367, "\022\162\076\341\356\250"}, {0x3368, "\022\162\076\341\356\043"}, {0x3369, "\022\162\076\341\356\162"}, {0x336A, "\022\162\076\341\356\160"}, {0x336B, "\022\162\076\341\356\161"}, {0x336C, "\022\162\076\341\356\050"}, {0x336D, "\022\162\076\341\362\066"}, {0x336E, "\022\162\076\341\362\065"}, {0x336F, "\022\162\076\341\362\070"}, {0x3370, "\022\162\076\341\362\067"}, {0x3371, "\367\116\046\013\035"}, {0x3372, "\355\002\046\013\035"}, {0x3373, "\355\307\046\013\035"}, {0x3374, "\363\031\046\013\035"}, {0x3375, "\372\135\046\013\035"}, {0x3376, "\372\172\046\013\035"}, {0x337B, "\357\062\366\330\046\013\035"}, {0x337C, "\357\062\363\343\046\013\035"}, {0x337D, "\357\062\375\113\046\013\035"}, {0x337E, "\357\062\370\323\046\013\035"}, {0x337F, "\357\331\046\013\035"}, {0x3380, "\327\362\323\046\013\035"}, {0x3381, "\354\046\013\035"}, {0x3382, "\355\111\063\046\013\035"}, {0x3383, "\277\046\013\035"}, {0x3384, "\240\046\013\035"}, {0x3385, "\367\374\046\013\035"}, {0x3386, "\361\051\046\013\035"}, {0x3387, "\366\145\046\013\035"}, {0x3388, "\363\225\046\013\035"}, {0x3389, "\367\375\046\013\035"}, {0x338A, "\372\207\046\013\035"}, {0x338B, "\371\201\046\013\035"}, {0x338C, "\355\111\355\062\046\013\035"}, {0x338D, "\355\111\266\046\013\035"}, {0x338E, "\370\324\046\013\035"}, {0x338F, "\360\370\046\013\035"}, {0x3390, "\367\155\046\013\035"}, {0x3391, "\370\011\046\013\035"}, {0x3392, "\370\353\046\013\035"}, {0x3393, "\366\215\046\013\035"}, {0x3394, "\375\176\046\013\035"}, {0x3395, "\355\111\211\046\013\035"}, {0x3396, "\371\003\046\013\035"}, {0x3397, "\365\313\046\013\035"}, {0x3398, "\370\034\046\013\035"}, {0x3399, "\366\075\046\013\035"}, {0x339A, "\371\302\046\013\035"}, {0x339B, "\355\111\276\046\013\035"}, {0x339C, "\357\236\046\013\035"}, {0x339D, "\357\104\046\013\035"}, {0x339E, "\356\343\046\013\035"}, {0x339F, "\357\236\035\046\013\035"}, {0x33A0, "\357\104\035\046\013\035"}, {0x33A1, "\276\035\046\013\035"}, {0x33A2, "\356\343\035\046\013\035"}, {0x33A3, "\357\236\356\316\046\013\035"}, {0x33A4, "\357\104\356\316\046\013\035"}, {0x33A5, "\276\356\316\046\013\035"}, {0x33A6, "\356\343\356\316\046\013\035"}, {0x33A7, "\276\355\146\223\046\013\035"}, {0x33A8, "\276\355\146\223\035\046\013\035"}, {0x33A9, "\327\046\013\035"}, {0x33AA, "\370\047\046\013\035"}, {0x33AB, "\371\026\046\013\035"}, {0x33AC, "\366\241\046\013\035"}, {0x33AD, "\357\020\046\013\035"}, {0x33AE, "\357\020\355\146\223\046\013\035"}, {0x33AF, "\357\020\355\146\223\035\046\013\035"}, {0x33B0, "\373\301\046\013\035"}, {0x33B1, "\371\362\046\013\035"}, {0x33B2, "\355\111\223\046\013\035"}, {0x33B3, "\371\027\046\013\035"}, {0x33B4, "\373\312\046\013\035"}, {0x33B5, "\371\376\046\013\035"}, {0x33B6, "\355\111\355\025\046\013\035"}, {0x33B7, "\361\100\046\013\035"}, {0x33B8, "\370\064\046\013\035"}, {0x33B9, "\361\100\357\244\046\013\035"}, {0x33BA, "\373\313\046\013\035"}, {0x33BB, "\371\377\046\013\035"}, {0x33BC, "\355\111\347\046\013\035"}, {0x33BD, "\361\101\046\013\035"}, {0x33BE, "\370\065\046\013\035"}, {0x33BF, "\361\101\357\244\046\013\035"}, {0x33C0, "\352\356\365\046\013\035"}, {0x33C1, "\276\356\365\046\013\035"}, {0x33C2, "\356\277\046\013\035"}, {0x33C3, "\363\160\046\013\035"}, {0x33C4, "\363\241\046\013\035"}, {0x33C5, "\363\242\046\013\035"}, {0x33C6, "\313\355\146\360\370\046\013\035"}, {0x33C7, "\360\133\046\013\035"}, {0x33C8, "\365\203\046\013\035"}, {0x33C9, "\366\274\046\013\035"}, {0x33CA, "\314\046\013\035"}, {0x33CB, "\367\115\046\013\035"}, {0x33CC, "\357\175\046\013\035"}, {0x33CD, "\361\002\046\013\035"}, {0x33CE, "\356\343\010\046\013\035"}, {0x33CF, "\370\051\046\013\035"}, {0x33D0, "\370\176\046\013\035"}, {0x33D1, "\370\177\046\013\035"}, {0x33D2, "\370\201\046\013\035"}, {0x33D3, "\370\227\046\013\035"}, {0x33D4, "\361\051\005\046\013\035"}, {0x33D5, "\370\361\046\013\035"}, {0x33D6, "\371\012\046\013\035"}, {0x33D7, "\372\210\046\013\035"}, {0x33D8, "\372\250\046\013\035"}, {0x33D9, "\373\263\046\013\035"}, {0x33DA, "\373\264\046\013\035"}, {0x33DB, "\374\370\046\013\035"}, {0x33DC, "\375\050\046\013\035"}, {0x33DD, "\376\077\046\013\035"}, {0x33E0, "\022\162\076\303\110"}, {0x33E1, "\022\162\076\303\127"}, {0x33E2, "\022\162\076\303\136"}, {0x33E3, "\022\162\076\303\220"}, {0x33E4, "\022\162\076\303\230"}, {0x33E5, "\022\162\076\303\255"}, {0x33E6, "\022\162\076\303\252"}, {0x33E7, "\022\162\076\303\226"}, {0x33E8, "\022\162\076\303\257"}, {0x33E9, "\022\162\076\303\355\034"}, {0x33EA, "\022\162\076\303\356\027"}, {0x33EB, "\022\162\076\303\355\317"}, {0x33EC, "\022\162\076\356\260"}, {0x33ED, "\022\162\076\303\356\246"}, {0x33EE, "\022\162\076\303\356\250"}, {0x33EF, "\022\162\076\303\356\043"}, {0x33F0, "\022\162\076\303\356\162"}, {0x33F1, "\022\162\076\303\356\160"}, {0x33F2, "\022\162\076\303\356\161"}, {0x33F3, "\022\162\076\303\356\050"}, {0x33F4, "\022\162\076\303\362\066"}, {0x33F5, "\022\162\076\303\362\065"}, {0x33F6, "\022\162\076\303\362\070"}, {0x33F7, "\022\162\076\303\362\067"}, {0x33F8, "\022\162\076\303\376\032"}, {0x33F9, "\022\162\076\303\376\036"}, {0x33FA, "\022\162\076\303\376\035"}, {0x33FB, "\022\162\076\303\376\033"}, {0x33FC, "\022\162\076\303\376\034"}, {0x33FD, "\022\162\076\303\357\365"}, {0x33FE, "\022\162\076\303\375\253"}, {0xA000, "\002\003\367\235"}, {0xA001, "\002\003\367\237"}, {0xA002, "\002\003\103"}, {0xA003, "\002\003\367\226"}, {0xA004, "\002\003\367\176"}, {0xA005, "\002\003\367\177"}, {0xA006, "\002\003\367\174"}, {0xA007, "\002\003\367\175"}, {0xA008, "\002\003\362\377"}, {0xA009, "\002\003\363\011"}, {0xA00A, "\002\003\063"}, {0xA00B, "\002\003\362\346"}, {0xA00C, "\002\003\375\375"}, {0xA00D, "\002\003\375\372"}, {0xA00E, "\002\003\375\374"}, {0xA00F, "\002\003\372\115"}, {0xA010, "\002\003\372\136"}, {0xA011, "\002\003\064"}, {0xA012, "\002\003\361\140"}, {0xA013, "\002\003\366\030"}, {0xA014, "\002\003\130"}, {0xA015, "\002\003\376\105"}, {0xA016, "\002\003\363\140"}, {0xA017, "\002\003\363\141"}, {0xA018, "\002\003\356\304"}, {0xA019, "\002\003\363\133"}, {0xA01A, "\002\003\363\125"}, {0xA01B, "\002\003\363\126"}, {0xA01C, "\002\003\363\123"}, {0xA01D, "\002\003\363\124"}, {0xA01E, "\002\003\363\037"}, {0xA01F, "\002\003\363\042"}, {0xA020, "\002\003\355\052"}, {0xA021, "\002\003\363\030"}, {0xA022, "\002\003\363\171"}, {0xA023, "\002\003\363\167"}, {0xA024, "\002\003\363\170"}, {0xA025, "\002\003\363\151"}, {0xA026, "\002\003\363\156"}, {0xA027, "\002\003\355\377"}, {0xA028, "\002\003\363\147"}, {0xA029, "\002\003\363\115"}, {0xA02A, "\002\003\356\142"}, {0xA02B, "\002\003\363\112"}, {0xA02C, "\002\003\363\176"}, {0xA02D, "\002\003\363\177"}, {0xA02E, "\002\003\356\003"}, {0xA02F, "\002\003\363\172"}, {0xA030, "\002\003\363\174"}, {0xA031, "\002\003\360\101"}, {0xA032, "\002\003\363\205"}, {0xA033, "\002\003\363\206"}, {0xA034, "\002\003\363\201"}, {0xA035, "\002\003\363\202"}, {0xA036, "\002\003\363\204"}, {0xA037, "\002\003\363\203"}, {0xA038, "\002\003\372\234"}, {0xA039, "\002\003\372\235"}, {0xA03A, "\002\003\355\233"}, {0xA03B, "\002\003\372\233"}, {0xA03C, "\002\003\372\230"}, {0xA03D, "\002\003\372\225"}, {0xA03E, "\002\003\372\226"}, {0xA03F, "\002\003\372\164"}, {0xA040, "\002\003\372\167"}, {0xA041, "\002\003\327"}, {0xA042, "\002\003\372\153"}, {0xA043, "\002\003\373\305"}, {0xA044, "\002\003\373\303"}, {0xA045, "\002\003\373\304"}, {0xA046, "\002\003\373\257"}, {0xA047, "\002\003\373\262"}, {0xA048, "\002\003\355\273"}, {0xA049, "\002\003\373\255"}, {0xA04A, "\002\003\361\230"}, {0xA04B, "\002\003\373\311"}, {0xA04C, "\002\003\357\277"}, {0xA04D, "\002\003\373\306"}, {0xA04E, "\002\003\373\310"}, {0xA04F, "\002\003\373\307"}, {0xA050, "\002\003\361\231"}, {0xA051, "\002\003\373\321"}, {0xA052, "\002\003\373\315"}, {0xA053, "\002\003\373\316"}, {0xA054, "\002\003\373\320"}, {0xA055, "\002\003\373\317"}, {0xA056, "\002\003\363\061"}, {0xA057, "\002\003\363\062"}, {0xA058, "\002\003\363\053"}, {0xA059, "\002\003\363\060"}, {0xA05A, "\002\003\363\056"}, {0xA05B, "\002\003\363\057"}, {0xA05C, "\002\003\363\054"}, {0xA05D, "\002\003\363\055"}, {0xA05E, "\002\003\363\046"}, {0xA05F, "\002\003\363\047"}, {0xA060, "\002\003\363\044"}, {0xA061, "\002\003\363\045"}, {0xA062, "\002\003\363\072"}, {0xA063, "\002\003\363\070"}, {0xA064, "\002\003\363\071"}, {0xA065, "\002\003\363\065"}, {0xA066, "\002\003\363\066"}, {0xA067, "\002\003\363\063"}, {0xA068, "\002\003\363\064"}, {0xA069, "\002\003\363\052"}, {0xA06A, "\002\003\363\050"}, {0xA06B, "\002\003\363\051"}, {0xA06C, "\002\003\360\070"}, {0xA06D, "\002\003\363\076"}, {0xA06E, "\002\003\363\067"}, {0xA06F, "\002\003\363\073"}, {0xA070, "\002\003\363\075"}, {0xA071, "\002\003\363\074"}, {0xA072, "\002\003\363\101"}, {0xA073, "\002\003\363\102"}, {0xA074, "\002\003\363\077"}, {0xA075, "\002\003\363\100"}, {0xA076, "\002\003\371\122"}, {0xA077, "\002\003\371\123"}, {0xA078, "\002\003\371\116"}, {0xA079, "\002\003\371\121"}, {0xA07A, "\002\003\371\120"}, {0xA07B, "\002\003\361\107"}, {0xA07C, "\002\003\371\117"}, {0xA07D, "\002\003\371\114"}, {0xA07E, "\002\003\371\115"}, {0xA07F, "\002\003\371\112"}, {0xA080, "\002\003\371\113"}, {0xA081, "\002\003\371\126"}, {0xA082, "\002\003\371\127"}, {0xA083, "\002\003\371\124"}, {0xA084, "\002\003\371\125"}, {0xA085, "\002\003\371\134"}, {0xA086, "\002\003\371\135"}, {0xA087, "\002\003\371\130"}, {0xA088, "\002\003\371\131"}, {0xA089, "\002\003\371\133"}, {0xA08A, "\002\003\371\132"}, {0xA08B, "\002\003\371\142"}, {0xA08C, "\002\003\371\143"}, {0xA08D, "\002\003\371\136"}, {0xA08E, "\002\003\371\137"}, {0xA08F, "\002\003\371\141"}, {0xA090, "\002\003\371\140"}, {0xA091, "\002\003\367\030"}, {0xA092, "\002\003\367\031"}, {0xA093, "\002\003\367\023"}, {0xA094, "\002\003\367\027"}, {0xA095, "\002\003\367\026"}, {0xA096, "\002\003\367\024"}, {0xA097, "\002\003\367\025"}, {0xA098, "\002\003\367\021"}, {0xA099, "\002\003\367\022"}, {0xA09A, "\002\003\367\017"}, {0xA09B, "\002\003\367\020"}, {0xA09C, "\002\003\367\040"}, {0xA09D, "\002\003\367\036"}, {0xA09E, "\002\003\367\037"}, {0xA09F, "\002\003\367\033"}, {0xA0A0, "\002\003\367\034"}, {0xA0A1, "\002\003\360\323"}, {0xA0A2, "\002\003\367\032"}, {0xA0A3, "\002\003\367\044"}, {0xA0A4, "\002\003\367\045"}, {0xA0A5, "\002\003\367\035"}, {0xA0A6, "\002\003\367\041"}, {0xA0A7, "\002\003\367\043"}, {0xA0A8, "\002\003\367\042"}, {0xA0A9, "\002\003\367\052"}, {0xA0AA, "\002\003\367\046"}, {0xA0AB, "\002\003\367\047"}, {0xA0AC, "\002\003\367\051"}, {0xA0AD, "\002\003\367\050"}, {0xA0AE, "\002\003\370\373"}, {0xA0AF, "\002\003\370\374"}, {0xA0B0, "\002\003\355\230"}, {0xA0B1, "\002\003\370\367"}, {0xA0B2, "\002\003\370\357"}, {0xA0B3, "\002\003\370\355"}, {0xA0B4, "\002\003\370\356"}, {0xA0B5, "\002\003\370\275"}, {0xA0B6, "\002\003\370\301"}, {0xA0B7, "\002\003\277"}, {0xA0B8, "\002\003\370\265"}, {0xA0B9, "\002\003\371\035"}, {0xA0BA, "\002\003\371\036"}, {0xA0BB, "\002\003\371\033"}, {0xA0BC, "\002\003\371\034"}, {0xA0BD, "\002\003\361\065"}, {0xA0BE, "\002\003\371\023"}, {0xA0BF, "\002\003\355\136"}, {0xA0C0, "\002\003\361\062"}, {0xA0C1, "\002\003\370\322"}, {0xA0C2, "\002\003\355\334"}, {0xA0C3, "\002\003\371\042"}, {0xA0C4, "\002\003\371\043"}, {0xA0C5, "\002\003\355\111"}, {0xA0C6, "\002\003\371\037"}, {0xA0C7, "\002\003\371\040"}, {0xA0C8, "\002\003\361\077"}, {0xA0C9, "\002\003\371\050"}, {0xA0CA, "\002\003\371\051"}, {0xA0CB, "\002\003\371\045"}, {0xA0CC, "\002\003\371\046"}, {0xA0CD, "\002\003\366\070"}, {0xA0CE, "\002\003\366\071"}, {0xA0CF, "\002\003\356\200"}, {0xA0D0, "\002\003\366\067"}, {0xA0D1, "\002\003\366\046"}, {0xA0D2, "\002\003\366\050"}, {0xA0D3, "\002\003\355\225"}, {0xA0D4, "\002\003\366\044"}, {0xA0D5, "\002\003\366\105"}, {0xA0D6, "\002\003\356\014"}, {0xA0D7, "\002\003\366\101"}, {0xA0D8, "\002\003\366\116"}, {0xA0D9, "\002\003\366\117"}, {0xA0DA, "\002\003\366\111"}, {0xA0DB, "\002\003\366\112"}, {0xA0DC, "\002\003\366\114"}, {0xA0DD, "\002\003\366\113"}, {0xA0DE, "\002\003\366\123"}, {0xA0DF, "\002\003\366\124"}, {0xA0E0, "\002\003\366\121"}, {0xA0E1, "\002\003\366\122"}, {0xA0E2, "\002\003\376\046"}, {0xA0E3, "\002\003\376\047"}, {0xA0E4, "\002\003\360\001"}, {0xA0E5, "\002\003\376\037"}, {0xA0E6, "\002\003\376\027"}, {0xA0E7, "\002\003\376\030"}, {0xA0E8, "\002\003\376\024"}, {0xA0E9, "\002\003\376\025"}, {0xA0EA, "\002\003\376\012"}, {0xA0EB, "\002\003\376\013"}, {0xA0EC, "\002\003\355\241"}, {0xA0ED, "\002\003\376\006"}, {0xA0EE, "\002\003\376\052"}, {0xA0EF, "\002\003\376\054"}, {0xA0F0, "\002\003\356\132"}, {0xA0F1, "\002\003\376\051"}, {0xA0F2, "\002\003\376\020"}, {0xA0F3, "\002\003\362\062"}, {0xA0F4, "\002\003\376\060"}, {0xA0F5, "\002\003\376\061"}, {0xA0F6, "\002\003\360\004"}, {0xA0F7, "\002\003\376\056"}, {0xA0F8, "\002\003\376\057"}, {0xA0F9, "\002\003\362\077"}, {0xA0FA, "\002\003\376\067"}, {0xA0FB, "\002\003\376\070"}, {0xA0FC, "\002\003\376\063"}, {0xA0FD, "\002\003\376\064"}, {0xA0FE, "\002\003\376\066"}, {0xA0FF, "\002\003\376\065"}, {0xA100, "\002\003\365\274"}, {0xA101, "\002\003\355\034"}, {0xA102, "\002\003\356\062"}, {0xA103, "\002\003\365\270"}, {0xA104, "\002\003\365\266"}, {0xA105, "\002\003\365\264"}, {0xA106, "\002\003\365\265"}, {0xA107, "\002\003\365\177"}, {0xA108, "\002\003\365\202"}, {0xA109, "\002\003\355\002"}, {0xA10A, "\002\003\365\174"}, {0xA10B, "\002\003\365\333"}, {0xA10C, "\002\003\365\332"}, {0xA10D, "\002\003\365\325"}, {0xA10E, "\002\003\365\327"}, {0xA10F, "\002\003\355\252"}, {0xA110, "\002\003\365\323"}, {0xA111, "\002\003\365\257"}, {0xA112, "\002\003\007"}, {0xA113, "\002\003\365\251"}, {0xA114, "\002\003\365\336"}, {0xA115, "\002\003\365\337"}, {0xA116, "\002\003\212"}, {0xA117, "\002\003\365\334"}, {0xA118, "\002\003\365\335"}, {0xA119, "\002\003\356\324"}, {0xA11A, "\002\003\375\214"}, {0xA11B, "\002\003\375\216"}, {0xA11C, "\002\003\355\217"}, {0xA11D, "\002\003\375\207"}, {0xA11E, "\002\003\375\204"}, {0xA11F, "\002\003\375\202"}, {0xA120, "\002\003\375\203"}, {0xA121, "\002\003\375\106"}, {0xA122, "\002\003\375\112"}, {0xA123, "\002\003\311"}, {0xA124, "\002\003\375\103"}, {0xA125, "\002\003\375\321"}, {0xA126, "\002\003\375\322"}, {0xA127, "\002\003\375\317"}, {0xA128, "\002\003\375\320"}, {0xA129, "\002\003\375\232"}, {0xA12A, "\002\003\375\241"}, {0xA12B, "\002\003\355\176"}, {0xA12C, "\002\003\375\230"}, {0xA12D, "\002\003\375\165"}, {0xA12E, "\002\003\356\125"}, {0xA12F, "\002\003\375\161"}, {0xA130, "\002\003\375\326"}, {0xA131, "\002\003\375\327"}, {0xA132, "\002\003\355\300"}, {0xA133, "\002\003\375\323"}, {0xA134, "\002\003\375\325"}, {0xA135, "\002\003\375\324"}, {0xA136, "\002\003\365\216"}, {0xA137, "\002\003\365\217"}, {0xA138, "\002\003\360\164"}, {0xA139, "\002\003\365\215"}, {0xA13A, "\002\003\365\214"}, {0xA13B, "\002\003\365\212"}, {0xA13C, "\002\003\365\213"}, {0xA13D, "\002\003\365\205"}, {0xA13E, "\002\003\365\206"}, {0xA13F, "\002\003\355\120"}, {0xA140, "\002\003\365\204"}, {0xA141, "\002\003\365\227"}, {0xA142, "\002\003\365\225"}, {0xA143, "\002\003\365\226"}, {0xA144, "\002\003\365\221"}, {0xA145, "\002\003\365\223"}, {0xA146, "\002\003\360\165"}, {0xA147, "\002\003\365\220"}, {0xA148, "\002\003\365\211"}, {0xA149, "\002\003\360\163"}, {0xA14A, "\002\003\365\210"}, {0xA14B, "\002\003\365\232"}, {0xA14C, "\002\003\365\233"}, {0xA14D, "\002\003\365\224"}, {0xA14E, "\002\003\365\230"}, {0xA14F, "\002\003\365\231"}, {0xA150, "\002\003\360\166"}, {0xA151, "\002\003\371\157"}, {0xA152, "\002\003\371\160"}, {0xA153, "\002\003\371\153"}, {0xA154, "\002\003\371\156"}, {0xA155, "\002\003\371\155"}, {0xA156, "\002\003\371\154"}, {0xA157, "\002\003\371\146"}, {0xA158, "\002\003\371\147"}, {0xA159, "\002\003\371\144"}, {0xA15A, "\002\003\371\145"}, {0xA15B, "\002\003\371\163"}, {0xA15C, "\002\003\371\164"}, {0xA15D, "\002\003\371\161"}, {0xA15E, "\002\003\371\162"}, {0xA15F, "\002\003\371\152"}, {0xA160, "\002\003\371\150"}, {0xA161, "\002\003\371\151"}, {0xA162, "\002\003\371\171"}, {0xA163, "\002\003\371\172"}, {0xA164, "\002\003\371\165"}, {0xA165, "\002\003\371\166"}, {0xA166, "\002\003\371\170"}, {0xA167, "\002\003\371\167"}, {0xA168, "\002\003\367\067"}, {0xA169, "\002\003\367\070"}, {0xA16A, "\002\003\367\061"}, {0xA16B, "\002\003\367\066"}, {0xA16C, "\002\003\367\064"}, {0xA16D, "\002\003\367\065"}, {0xA16E, "\002\003\367\062"}, {0xA16F, "\002\003\367\063"}, {0xA170, "\002\003\367\054"}, {0xA171, "\002\003\367\055"}, {0xA172, "\002\003\360\324"}, {0xA173, "\002\003\367\053"}, {0xA174, "\002\003\367\075"}, {0xA175, "\002\003\367\074"}, {0xA176, "\002\003\367\072"}, {0xA177, "\002\003\367\073"}, {0xA178, "\002\003\367\071"}, {0xA179, "\002\003\367\060"}, {0xA17A, "\002\003\367\056"}, {0xA17B, "\002\003\367\057"}, {0xA17C, "\002\003\367\076"}, {0xA17D, "\002\003\371\245"}, {0xA17E, "\002\003\371\246"}, {0xA17F, "\002\003\244"}, {0xA180, "\002\003\371\243"}, {0xA181, "\002\003\371\236"}, {0xA182, "\002\003\371\234"}, {0xA183, "\002\003\371\235"}, {0xA184, "\002\003\371\110"}, {0xA185, "\002\003\354"}, {0xA186, "\002\003\371\103"}, {0xA187, "\002\003\371\370"}, {0xA188, "\002\003\371\366"}, {0xA189, "\002\003\371\367"}, {0xA18A, "\002\003\371\324"}, {0xA18B, "\002\003\371\331"}, {0xA18C, "\002\003\355\113"}, {0xA18D, "\002\003\371\323"}, {0xA18E, "\002\003\371\177"}, {0xA18F, "\002\003\355\140"}, {0xA190, "\002\003\371\174"}, {0xA191, "\002\003\371\374"}, {0xA192, "\002\003\371\375"}, {0xA193, "\002\003\356\025"}, {0xA194, "\002\003\371\371"}, {0xA195, "\002\003\371\373"}, {0xA196, "\002\003\371\372"}, {0xA197, "\002\003\366\372"}, {0xA198, "\002\003\366\373"}, {0xA199, "\002\003\366\365"}, {0xA19A, "\002\003\366\371"}, {0xA19B, "\002\003\366\370"}, {0xA19C, "\002\003\366\366"}, {0xA19D, "\002\003\366\367"}, {0xA19E, "\002\003\366\360"}, {0xA19F, "\002\003\366\361"}, {0xA1A0, "\002\003\366\356"}, {0xA1A1, "\002\003\366\357"}, {0xA1A2, "\002\003\367\003"}, {0xA1A3, "\002\003\367\001"}, {0xA1A4, "\002\003\367\002"}, {0xA1A5, "\002\003\366\376"}, {0xA1A6, "\002\003\366\374"}, {0xA1A7, "\002\003\366\375"}, {0xA1A8, "\002\003\366\364"}, {0xA1A9, "\002\003\366\362"}, {0xA1AA, "\002\003\366\363"}, {0xA1AB, "\002\003\367\007"}, {0xA1AC, "\002\003\367\010"}, {0xA1AD, "\002\003\366\377"}, {0xA1AE, "\002\003\367\004"}, {0xA1AF, "\002\003\367\006"}, {0xA1B0, "\002\003\367\005"}, {0xA1B1, "\002\003\367\015"}, {0xA1B2, "\002\003\367\016"}, {0xA1B3, "\002\003\367\011"}, {0xA1B4, "\002\003\367\012"}, {0xA1B5, "\002\003\367\014"}, {0xA1B6, "\002\003\367\013"}, {0xA1B7, "\002\003\370\174"}, {0xA1B8, "\002\003\370\175"}, {0xA1B9, "\002\003\356\077"}, {0xA1BA, "\002\003\370\172"}, {0xA1BB, "\002\003\370\165"}, {0xA1BC, "\002\003\370\166"}, {0xA1BD, "\002\003\361\027"}, {0xA1BE, "\002\003\370\164"}, {0xA1BF, "\002\003\370\134"}, {0xA1C0, "\002\003\370\137"}, {0xA1C1, "\002\003\033"}, {0xA1C2, "\002\003\370\133"}, {0xA1C3, "\002\003\370\217"}, {0xA1C4, "\002\003\370\220"}, {0xA1C5, "\002\003\370\215"}, {0xA1C6, "\002\003\370\216"}, {0xA1C7, "\002\003\370\206"}, {0xA1C8, "\002\003\370\210"}, {0xA1C9, "\002\003\355\170"}, {0xA1CA, "\002\003\370\204"}, {0xA1CB, "\002\003\370\150"}, {0xA1CC, "\002\003\050"}, {0xA1CD, "\002\003\370\146"}, {0xA1CE, "\002\003\370\224"}, {0xA1CF, "\002\003\370\225"}, {0xA1D0, "\002\003\370\212"}, {0xA1D1, "\002\003\370\221"}, {0xA1D2, "\002\003\370\223"}, {0xA1D3, "\002\003\370\222"}, {0xA1D4, "\002\003\370\233"}, {0xA1D5, "\002\003\370\234"}, {0xA1D6, "\002\003\370\230"}, {0xA1D7, "\002\003\370\231"}, {0xA1D8, "\002\003\370\232"}, {0xA1D9, "\002\003\361\045"}, {0xA1DA, "\002\003\366\230"}, {0xA1DB, "\002\003\366\231"}, {0xA1DC, "\002\003\356\204"}, {0xA1DD, "\002\003\366\226"}, {0xA1DE, "\002\003\366\221"}, {0xA1DF, "\002\003\366\222"}, {0xA1E0, "\002\003\366\217"}, {0xA1E1, "\002\003\366\220"}, {0xA1E2, "\002\003\366\143"}, {0xA1E3, "\002\003\366\144"}, {0xA1E4, "\002\003\355\017"}, {0xA1E5, "\002\003\366\140"}, {0xA1E6, "\002\003\366\255"}, {0xA1E7, "\002\003\366\256"}, {0xA1E8, "\002\003\366\253"}, {0xA1E9, "\002\003\366\254"}, {0xA1EA, "\002\003\360\277"}, {0xA1EB, "\002\003\366\240"}, {0xA1EC, "\002\003\356\071"}, {0xA1ED, "\002\003\366\235"}, {0xA1EE, "\002\003\366\155"}, {0xA1EF, "\002\003\366\156"}, {0xA1F0, "\002\003\356\203"}, {0xA1F1, "\002\003\360\263"}, {0xA1F2, "\002\003\366\264"}, {0xA1F3, "\002\003\366\265"}, {0xA1F4, "\002\003\357\160"}, {0xA1F5, "\002\003\366\257"}, {0xA1F6, "\002\003\366\263"}, {0xA1F7, "\002\003\366\260"}, {0xA1F8, "\002\003\360\377"}, {0xA1F9, "\002\003\370\023"}, {0xA1FA, "\002\003\355\332"}, {0xA1FB, "\002\003\360\376"}, {0xA1FC, "\002\003\370\015"}, {0xA1FD, "\002\003\370\013"}, {0xA1FE, "\002\003\370\014"}, {0xA1FF, "\002\003\367\367"}, {0xA200, "\002\003\367\372"}, {0xA201, "\002\003\240"}, {0xA202, "\002\003\367\362"}, {0xA203, "\002\003\370\054"}, {0xA204, "\002\003\370\052"}, {0xA205, "\002\003\370\053"}, {0xA206, "\002\003\370\042"}, {0xA207, "\002\003\370\045"}, {0xA208, "\002\003\355\167"}, {0xA209, "\002\003\370\040"}, {0xA20A, "\002\003\370\001"}, {0xA20B, "\002\003\370\002"}, {0xA20C, "\002\003\355\331"}, {0xA20D, "\002\003\367\377"}, {0xA20E, "\002\003\370\062"}, {0xA20F, "\002\003\370\063"}, {0xA210, "\002\003\356\021"}, {0xA211, "\002\003\370\055"}, {0xA212, "\002\003\370\060"}, {0xA213, "\002\003\370\056"}, {0xA214, "\002\003\366\170"}, {0xA215, "\002\003\366\171"}, {0xA216, "\002\003\360\267"}, {0xA217, "\002\003\366\167"}, {0xA218, "\002\003\366\165"}, {0xA219, "\002\003\366\166"}, {0xA21A, "\002\003\366\160"}, {0xA21B, "\002\003\366\161"}, {0xA21C, "\002\003\360\265"}, {0xA21D, "\002\003\366\157"}, {0xA21E, "\002\003\366\177"}, {0xA21F, "\002\003\366\200"}, {0xA220, "\002\003\360\272"}, {0xA221, "\002\003\366\176"}, {0xA222, "\002\003\366\172"}, {0xA223, "\002\003\366\174"}, {0xA224, "\002\003\360\270"}, {0xA225, "\002\003\360\271"}, {0xA226, "\002\003\366\163"}, {0xA227, "\002\003\366\164"}, {0xA228, "\002\003\360\266"}, {0xA229, "\002\003\366\162"}, {0xA22A, "\002\003\366\204"}, {0xA22B, "\002\003\366\205"}, {0xA22C, "\002\003\366\175"}, {0xA22D, "\002\003\366\201"}, {0xA22E, "\002\003\366\203"}, {0xA22F, "\002\003\366\202"}, {0xA230, "\002\003\370\335"}, {0xA231, "\002\003\370\334"}, {0xA232, "\002\003\370\327"}, {0xA233, "\002\003\370\330"}, {0xA234, "\002\003\370\325"}, {0xA235, "\002\003\370\326"}, {0xA236, "\002\003\370\344"}, {0xA237, "\002\003\370\342"}, {0xA238, "\002\003\370\343"}, {0xA239, "\002\003\370\337"}, {0xA23A, "\002\003\370\340"}, {0xA23B, "\002\003\355\207"}, {0xA23C, "\002\003\370\336"}, {0xA23D, "\002\003\370\333"}, {0xA23E, "\002\003\370\331"}, {0xA23F, "\002\003\370\332"}, {0xA240, "\002\003\370\350"}, {0xA241, "\002\003\370\351"}, {0xA242, "\002\003\370\341"}, {0xA243, "\002\003\370\345"}, {0xA244, "\002\003\370\347"}, {0xA245, "\002\003\370\346"}, {0xA246, "\002\003\360\334"}, {0xA247, "\002\003\367\146"}, {0xA248, "\002\003\367\140"}, {0xA249, "\002\003\367\145"}, {0xA24A, "\002\003\367\143"}, {0xA24B, "\002\003\367\144"}, {0xA24C, "\002\003\367\141"}, {0xA24D, "\002\003\367\142"}, {0xA24E, "\002\003\367\133"}, {0xA24F, "\002\003\367\134"}, {0xA250, "\002\003\367\131"}, {0xA251, "\002\003\367\132"}, {0xA252, "\002\003\367\152"}, {0xA253, "\002\003\367\153"}, {0xA254, "\002\003\360\337"}, {0xA255, "\002\003\367\151"}, {0xA256, "\002\003\360\336"}, {0xA257, "\002\003\367\150"}, {0xA258, "\002\003\367\147"}, {0xA259, "\002\003\360\335"}, {0xA25A, "\002\003\367\137"}, {0xA25B, "\002\003\367\135"}, {0xA25C, "\002\003\367\136"}, {0xA25D, "\002\003\371\215"}, {0xA25E, "\002\003\371\213"}, {0xA25F, "\002\003\371\214"}, {0xA260, "\002\003\371\203"}, {0xA261, "\002\003\371\204"}, {0xA262, "\002\003\355\066"}, {0xA263, "\002\003\371\202"}, {0xA264, "\002\003\371\223"}, {0xA265, "\002\003\371\224"}, {0xA266, "\002\003\371\222"}, {0xA267, "\002\003\371\217"}, {0xA268, "\002\003\371\221"}, {0xA269, "\002\003\356\225"}, {0xA26A, "\002\003\371\216"}, {0xA26B, "\002\003\371\210"}, {0xA26C, "\002\003\371\206"}, {0xA26D, "\002\003\371\207"}, {0xA26E, "\002\003\366\347"}, {0xA26F, "\002\003\366\345"}, {0xA270, "\002\003\366\344"}, {0xA271, "\002\003\366\317"}, {0xA272, "\002\003\366\321"}, {0xA273, "\002\003\314"}, {0xA274, "\002\003\366\315"}, {0xA275, "\002\003\367\123"}, {0xA276, "\002\003\367\124"}, {0xA277, "\002\003\367\121"}, {0xA278, "\002\003\367\122"}, {0xA279, "\002\003\367\105"}, {0xA27A, "\002\003\367\114"}, {0xA27B, "\002\003\355\107"}, {0xA27C, "\002\003\367\101"}, {0xA27D, "\002\003\366\327"}, {0xA27E, "\002\003\356\072"}, {0xA27F, "\002\003\366\324"}, {0xA280, "\002\003\376\074"}, {0xA281, "\002\003\376\076"}, {0xA282, "\002\003\355\050"}, {0xA283, "\002\003\376\073"}, {0xA284, "\002\003\376\111"}, {0xA285, "\002\003\376\107"}, {0xA286, "\002\003\376\110"}, {0xA287, "\002\003\376\104"}, {0xA288, "\002\003\355\150"}, {0xA289, "\002\003\376\103"}, {0xA28A, "\002\003\376\102"}, {0xA28B, "\002\003\356\270"}, {0xA28C, "\002\003\376\101"}, {0xA28D, "\002\003\376\303"}, {0xA28E, "\002\003\376\304"}, {0xA28F, "\002\003\356\275"}, {0xA290, "\002\003\376\302"}, {0xA291, "\002\003\376\277"}, {0xA292, "\002\003\376\275"}, {0xA293, "\002\003\376\276"}, {0xA294, "\002\003\376\236"}, {0xA295, "\002\003\376\240"}, {0xA296, "\002\003\355\101"}, {0xA297, "\002\003\376\234"}, {0xA298, "\002\003\376\312"}, {0xA299, "\002\003\376\310"}, {0xA29A, "\002\003\376\311"}, {0xA29B, "\002\003\362\143"}, {0xA29C, "\002\003\376\306"}, {0xA29D, "\002\003\356\135"}, {0xA29E, "\002\003\376\305"}, {0xA29F, "\002\003\376\242"}, {0xA2A0, "\002\003\356\274"}, {0xA2A1, "\002\003\376\241"}, {0xA2A2, "\002\003\376\315"}, {0xA2A3, "\002\003\376\316"}, {0xA2A4, "\002\003\360\022"}, {0xA2A5, "\002\003\376\313"}, {0xA2A6, "\002\003\376\314"}, {0xA2A7, "\002\003\362\145"}, {0xA2A8, "\002\003\376\324"}, {0xA2A9, "\002\003\376\325"}, {0xA2AA, "\002\003\376\320"}, {0xA2AB, "\002\003\376\321"}, {0xA2AC, "\002\003\376\323"}, {0xA2AD, "\002\003\376\322"}, {0xA2AE, "\002\003\363\353"}, {0xA2AF, "\002\003\363\356"}, {0xA2B0, "\002\003\363\344"}, {0xA2B1, "\002\003\360\131"}, {0xA2B2, "\002\003\363\350"}, {0xA2B3, "\002\003\363\351"}, {0xA2B4, "\002\003\363\346"}, {0xA2B5, "\002\003\363\347"}, {0xA2B6, "\002\003\363\236"}, {0xA2B7, "\002\003\363\240"}, {0xA2B8, "\002\003\357\073"}, {0xA2B9, "\002\003\363\232"}, {0xA2BA, "\002\003\365\130"}, {0xA2BB, "\002\003\365\127"}, {0xA2BC, "\002\003\360\145"}, {0xA2BD, "\002\003\365\077"}, {0xA2BE, "\002\003\365\114"}, {0xA2BF, "\002\003\360\133"}, {0xA2C0, "\002\003\365\066"}, {0xA2C1, "\002\003\363\253"}, {0xA2C2, "\002\003\360\107"}, {0xA2C3, "\002\003\363\251"}, {0xA2C4, "\002\003\365\135"}, {0xA2C5, "\002\003\365\136"}, {0xA2C6, "\002\003\365\123"}, {0xA2C7, "\002\003\365\131"}, {0xA2C8, "\002\003\365\134"}, {0xA2C9, "\002\003\365\132"}, {0xA2CA, "\002\003\360\150"}, {0xA2CB, "\002\003\365\143"}, {0xA2CC, "\002\003\360\146"}, {0xA2CD, "\002\003\360\147"}, {0xA2CE, "\002\003\365\142"}, {0xA2CF, "\002\003\365\141"}, {0xA2D0, "\002\003\376\341"}, {0xA2D1, "\002\003\376\342"}, {0xA2D2, "\002\003\376\335"}, {0xA2D3, "\002\003\362\147"}, {0xA2D4, "\002\003\362\146"}, {0xA2D5, "\002\003\376\340"}, {0xA2D6, "\002\003\376\336"}, {0xA2D7, "\002\003\376\337"}, {0xA2D8, "\002\003\376\330"}, {0xA2D9, "\002\003\376\331"}, {0xA2DA, "\002\003\376\326"}, {0xA2DB, "\002\003\376\327"}, {0xA2DC, "\002\003\376\345"}, {0xA2DD, "\002\003\376\343"}, {0xA2DE, "\002\003\376\344"}, {0xA2DF, "\002\003\376\334"}, {0xA2E0, "\002\003\376\332"}, {0xA2E1, "\002\003\376\333"}, {0xA2E2, "\002\003\376\352"}, {0xA2E3, "\002\003\376\346"}, {0xA2E4, "\002\003\376\347"}, {0xA2E5, "\002\003\376\351"}, {0xA2E6, "\002\003\376\350"}, {0xA2E7, "\002\003\376\357"}, {0xA2E8, "\002\003\376\360"}, {0xA2E9, "\002\003\376\353"}, {0xA2EA, "\002\003\376\354"}, {0xA2EB, "\002\003\376\356"}, {0xA2EC, "\002\003\376\355"}, {0xA2ED, "\002\003\372\037"}, {0xA2EE, "\002\003\372\040"}, {0xA2EF, "\002\003\372\032"}, {0xA2F0, "\002\003\372\036"}, {0xA2F1, "\002\003\372\035"}, {0xA2F2, "\002\003\372\033"}, {0xA2F3, "\002\003\372\034"}, {0xA2F4, "\002\003\372\026"}, {0xA2F5, "\002\003\372\027"}, {0xA2F6, "\002\003\372\024"}, {0xA2F7, "\002\003\372\025"}, {0xA2F8, "\002\003\372\045"}, {0xA2F9, "\002\003\372\044"}, {0xA2FA, "\002\003\372\042"}, {0xA2FB, "\002\003\372\041"}, {0xA2FC, "\002\003\372\031"}, {0xA2FD, "\002\003\372\030"}, {0xA2FE, "\002\003\372\050"}, {0xA2FF, "\002\003\372\043"}, {0xA300, "\002\003\372\046"}, {0xA301, "\002\003\372\047"}, {0xA302, "\002\003\361\130"}, {0xA303, "\002\003\372\055"}, {0xA304, "\002\003\372\056"}, {0xA305, "\002\003\372\051"}, {0xA306, "\002\003\372\052"}, {0xA307, "\002\003\372\054"}, {0xA308, "\002\003\372\053"}, {0xA309, "\002\003\374\322"}, {0xA30A, "\002\003\255"}, {0xA30B, "\002\003\355\275"}, {0xA30C, "\002\003\374\320"}, {0xA30D, "\002\003\374\313"}, {0xA30E, "\002\003\374\311"}, {0xA30F, "\002\003\374\312"}, {0xA310, "\002\003\374\225"}, {0xA311, "\002\003\374\227"}, {0xA312, "\002\003\355\004"}, {0xA313, "\002\003\374\223"}, {0xA314, "\002\003\375\036"}, {0xA315, "\002\003\375\034"}, {0xA316, "\002\003\375\035"}, {0xA317, "\002\003\374\357"}, {0xA318, "\002\003\374\364"}, {0xA319, "\002\003\355\070"}, {0xA31A, "\002\003\374\355"}, {0xA31B, "\002\003\374\256"}, {0xA31C, "\002\003\356\042"}, {0xA31D, "\002\003\374\251"}, {0xA31E, "\002\003\375\046"}, {0xA31F, "\002\003\375\047"}, {0xA320, "\002\003\356\253"}, {0xA321, "\002\003\375\037"}, {0xA322, "\002\003\375\044"}, {0xA323, "\002\003\355\146"}, {0xA324, "\002\003\375\061"}, {0xA325, "\002\003\375\062"}, {0xA326, "\002\003\375\052"}, {0xA327, "\002\003\375\055"}, {0xA328, "\002\003\375\057"}, {0xA329, "\002\003\375\056"}, {0xA32A, "\002\003\375\005"}, {0xA32B, "\002\003\375\006"}, {0xA32C, "\002\003\361\337"}, {0xA32D, "\002\003\375\004"}, {0xA32E, "\002\003\375\003"}, {0xA32F, "\002\003\375\001"}, {0xA330, "\002\003\375\002"}, {0xA331, "\002\003\374\373"}, {0xA332, "\002\003\374\374"}, {0xA333, "\002\003\356\252"}, {0xA334, "\002\003\374\372"}, {0xA335, "\002\003\375\011"}, {0xA336, "\002\003\375\012"}, {0xA337, "\002\003\375\007"}, {0xA338, "\002\003\375\010"}, {0xA339, "\002\003\374\377"}, {0xA33A, "\002\003\374\375"}, {0xA33B, "\002\003\374\376"}, {0xA33C, "\002\003\375\015"}, {0xA33D, "\002\003\375\016"}, {0xA33E, "\002\003\375\013"}, {0xA33F, "\002\003\375\014"}, {0xA340, "\002\003\375\023"}, {0xA341, "\002\003\375\024"}, {0xA342, "\002\003\375\017"}, {0xA343, "\002\003\375\020"}, {0xA344, "\002\003\375\022"}, {0xA345, "\002\003\375\021"}, {0xA346, "\002\003\376\244"}, {0xA347, "\002\003\376\245"}, {0xA348, "\002\003\355\365"}, {0xA349, "\002\003\376\243"}, {0xA34A, "\002\003\376\261"}, {0xA34B, "\002\003\376\257"}, {0xA34C, "\002\003\376\260"}, {0xA34D, "\002\003\376\254"}, {0xA34E, "\002\003\376\255"}, {0xA34F, "\002\003\376\252"}, {0xA350, "\002\003\376\253"}, {0xA351, "\002\003\376\250"}, {0xA352, "\002\003\376\251"}, {0xA353, "\002\003\376\246"}, {0xA354, "\002\003\376\247"}, {0xA355, "\002\003\376\265"}, {0xA356, "\002\003\376\266"}, {0xA357, "\002\003\376\256"}, {0xA358, "\002\003\376\262"}, {0xA359, "\002\003\376\264"}, {0xA35A, "\002\003\376\263"}, {0xA35B, "\002\003\376\273"}, {0xA35C, "\002\003\376\274"}, {0xA35D, "\002\003\376\267"}, {0xA35E, "\002\003\376\270"}, {0xA35F, "\002\003\376\272"}, {0xA360, "\002\003\376\271"}, {0xA361, "\002\003\363\264"}, {0xA362, "\002\003\363\270"}, {0xA363, "\002\003\355\032"}, {0xA364, "\002\003\363\261"}, {0xA365, "\002\003\363\317"}, {0xA366, "\002\003\363\320"}, {0xA367, "\002\003\363\315"}, {0xA368, "\002\003\363\316"}, {0xA369, "\002\003\363\311"}, {0xA36A, "\002\003\363\312"}, {0xA36B, "\002\003\356\054"}, {0xA36C, "\002\003\363\310"}, {0xA36D, "\002\003\363\300"}, {0xA36E, "\002\003\363\306"}, {0xA36F, "\002\003\356\151"}, {0xA370, "\002\003\363\277"}, {0xA371, "\002\003\363\324"}, {0xA372, "\002\003\363\314"}, {0xA373, "\002\003\363\321"}, {0xA374, "\002\003\363\323"}, {0xA375, "\002\003\363\322"}, {0xA376, "\002\003\363\332"}, {0xA377, "\002\003\363\333"}, {0xA378, "\002\003\363\326"}, {0xA379, "\002\003\363\327"}, {0xA37A, "\002\003\363\331"}, {0xA37B, "\002\003\363\330"}, {0xA37C, "\002\003\374\114"}, {0xA37D, "\002\003\355\212"}, {0xA37E, "\002\003\374\127"}, {0xA37F, "\002\003\374\126"}, {0xA380, "\002\003\374\123"}, {0xA381, "\002\003\374\124"}, {0xA382, "\002\003\374\121"}, {0xA383, "\002\003\374\122"}, {0xA384, "\002\003\374\117"}, {0xA385, "\002\003\374\120"}, {0xA386, "\002\003\374\115"}, {0xA387, "\002\003\374\116"}, {0xA388, "\002\003\374\133"}, {0xA389, "\002\003\374\134"}, {0xA38A, "\002\003\374\125"}, {0xA38B, "\002\003\374\130"}, {0xA38C, "\002\003\374\132"}, {0xA38D, "\002\003\374\131"}, {0xA38E, "\002\003\374\141"}, {0xA38F, "\002\003\374\142"}, {0xA390, "\002\003\374\135"}, {0xA391, "\002\003\374\136"}, {0xA392, "\002\003\374\140"}, {0xA393, "\002\003\374\137"}, {0xA394, "\002\003\371\335"}, {0xA395, "\002\003\371\336"}, {0xA396, "\002\003\371\333"}, {0xA397, "\002\003\371\334"}, {0xA398, "\002\003\371\345"}, {0xA399, "\002\003\371\343"}, {0xA39A, "\002\003\371\344"}, {0xA39B, "\002\003\371\341"}, {0xA39C, "\002\003\371\342"}, {0xA39D, "\002\003\371\337"}, {0xA39E, "\002\003\371\340"}, {0xA39F, "\002\003\371\352"}, {0xA3A0, "\002\003\371\353"}, {0xA3A1, "\002\003\371\346"}, {0xA3A2, "\002\003\371\347"}, {0xA3A3, "\002\003\371\351"}, {0xA3A4, "\002\003\371\350"}, {0xA3A5, "\002\003\371\360"}, {0xA3A6, "\002\003\371\361"}, {0xA3A7, "\002\003\371\354"}, {0xA3A8, "\002\003\371\355"}, {0xA3A9, "\002\003\371\357"}, {0xA3AA, "\002\003\371\356"}, {0xA3AB, "\002\003\361\312"}, {0xA3AC, "\002\003\374\263"}, {0xA3AD, "\002\003\357\325"}, {0xA3AE, "\002\003\374\262"}, {0xA3AF, "\002\003\374\277"}, {0xA3B0, "\002\003\374\275"}, {0xA3B1, "\002\003\374\276"}, {0xA3B2, "\002\003\374\272"}, {0xA3B3, "\002\003\374\273"}, {0xA3B4, "\002\003\374\270"}, {0xA3B5, "\002\003\361\313"}, {0xA3B6, "\002\003\374\266"}, {0xA3B7, "\002\003\374\267"}, {0xA3B8, "\002\003\374\264"}, {0xA3B9, "\002\003\374\265"}, {0xA3BA, "\002\003\374\302"}, {0xA3BB, "\002\003\374\303"}, {0xA3BC, "\002\003\374\274"}, {0xA3BD, "\002\003\374\300"}, {0xA3BE, "\002\003\374\301"}, {0xA3BF, "\002\003\361\314"}, {0xA3C0, "\002\003\374\307"}, {0xA3C1, "\002\003\374\310"}, {0xA3C2, "\002\003\361\315"}, {0xA3C3, "\002\003\374\304"}, {0xA3C4, "\002\003\374\306"}, {0xA3C5, "\002\003\374\305"}, {0xA3C6, "\002\003\361\246"}, {0xA3C7, "\002\003\374\043"}, {0xA3C8, "\002\003\322"}, {0xA3C9, "\002\003\374\037"}, {0xA3CA, "\002\003\374\147"}, {0xA3CB, "\002\003\374\145"}, {0xA3CC, "\002\003\374\146"}, {0xA3CD, "\002\003\374\105"}, {0xA3CE, "\002\003\374\113"}, {0xA3CF, "\002\003\355\174"}, {0xA3D0, "\002\003\374\104"}, {0xA3D1, "\002\003\374\060"}, {0xA3D2, "\002\003\356\035"}, {0xA3D3, "\002\003\374\055"}, {0xA3D4, "\002\003\374\154"}, {0xA3D5, "\002\003\374\155"}, {0xA3D6, "\002\003\356\037"}, {0xA3D7, "\002\003\374\150"}, {0xA3D8, "\002\003\374\153"}, {0xA3D9, "\002\003\374\152"}, {0xA3DA, "\002\003\374\163"}, {0xA3DB, "\002\003\374\164"}, {0xA3DC, "\002\003\374\157"}, {0xA3DD, "\002\003\374\160"}, {0xA3DE, "\002\003\374\162"}, {0xA3DF, "\002\003\374\161"}, {0xA3E0, "\002\003\367\267"}, {0xA3E1, "\002\003\367\270"}, {0xA3E2, "\002\003\360\360"}, {0xA3E3, "\002\003\367\266"}, {0xA3E4, "\002\003\367\264"}, {0xA3E5, "\002\003\367\265"}, {0xA3E6, "\002\003\367\262"}, {0xA3E7, "\002\003\367\263"}, {0xA3E8, "\002\003\367\332"}, {0xA3E9, "\002\003\367\333"}, {0xA3EA, "\002\003\367\330"}, {0xA3EB, "\002\003\367\331"}, {0xA3EC, "\002\003\367\321"}, {0xA3ED, "\002\003\367\323"}, {0xA3EE, "\002\003\357\211"}, {0xA3EF, "\002\003\367\320"}, {0xA3F0, "\002\003\367\341"}, {0xA3F1, "\002\003\367\342"}, {0xA3F2, "\002\003\367\324"}, {0xA3F3, "\002\003\367\334"}, {0xA3F4, "\002\003\367\337"}, {0xA3F5, "\002\003\367\336"}, {0xA3F6, "\002\003\367\350"}, {0xA3F7, "\002\003\367\351"}, {0xA3F8, "\002\003\367\344"}, {0xA3F9, "\002\003\367\345"}, {0xA3FA, "\002\003\367\347"}, {0xA3FB, "\002\003\367\346"}, {0xA3FC, "\002\003\373\356"}, {0xA3FD, "\002\003\373\357"}, {0xA3FE, "\002\003\357\301"}, {0xA3FF, "\002\003\373\355"}, {0xA400, "\002\003\373\353"}, {0xA401, "\002\003\373\354"}, {0xA402, "\002\003\373\351"}, {0xA403, "\002\003\373\352"}, {0xA404, "\002\003\374\001"}, {0xA405, "\002\003\374\002"}, {0xA406, "\002\003\373\376"}, {0xA407, "\002\003\373\377"}, {0xA408, "\002\003\361\241"}, {0xA409, "\002\003\373\365"}, {0xA40A, "\002\003\357\302"}, {0xA40B, "\002\003\373\361"}, {0xA40C, "\002\003\374\006"}, {0xA40D, "\002\003\374\007"}, {0xA40E, "\002\003\373\367"}, {0xA40F, "\002\003\374\003"}, {0xA410, "\002\003\374\005"}, {0xA411, "\002\003\374\004"}, {0xA412, "\002\003\374\021"}, {0xA413, "\002\003\374\022"}, {0xA414, "\002\003\374\015"}, {0xA415, "\002\003\374\016"}, {0xA416, "\002\003\374\020"}, {0xA417, "\002\003\374\017"}, {0xA418, "\002\003\367\277"}, {0xA419, "\002\003\367\300"}, {0xA41A, "\002\003\367\271"}, {0xA41B, "\002\003\367\276"}, {0xA41C, "\002\003\367\274"}, {0xA41D, "\002\003\367\275"}, {0xA41E, "\002\003\367\272"}, {0xA41F, "\002\003\367\273"}, {0xA420, "\002\003\367\310"}, {0xA421, "\002\003\367\306"}, {0xA422, "\002\003\367\307"}, {0xA423, "\002\003\367\303"}, {0xA424, "\002\003\367\304"}, {0xA425, "\002\003\367\301"}, {0xA426, "\002\003\367\302"}, {0xA427, "\002\003\360\361"}, {0xA428, "\002\003\367\314"}, {0xA429, "\002\003\367\305"}, {0xA42A, "\002\003\367\311"}, {0xA42B, "\002\003\367\313"}, {0xA42C, "\002\003\367\312"}, {0xA42D, "\002\003\367\316"}, {0xA42E, "\002\003\367\317"}, {0xA42F, "\002\003\360\362"}, {0xA430, "\002\003\367\315"}, {0xA431, "\002\003\371\257"}, {0xA432, "\002\003\371\260"}, {0xA433, "\002\003\371\251"}, {0xA434, "\002\003\371\256"}, {0xA435, "\002\003\371\254"}, {0xA436, "\002\003\371\255"}, {0xA437, "\002\003\371\252"}, {0xA438, "\002\003\371\253"}, {0xA439, "\002\003\371\267"}, {0xA43A, "\002\003\371\266"}, {0xA43B, "\002\003\371\263"}, {0xA43C, "\002\003\371\264"}, {0xA43D, "\002\003\371\261"}, {0xA43E, "\002\003\371\262"}, {0xA43F, "\002\003\371\273"}, {0xA440, "\002\003\371\265"}, {0xA441, "\002\003\371\270"}, {0xA442, "\002\003\371\272"}, {0xA443, "\002\003\371\271"}, {0xA444, "\002\003\371\300"}, {0xA445, "\002\003\371\301"}, {0xA446, "\002\003\371\274"}, {0xA447, "\002\003\371\275"}, {0xA448, "\002\003\371\277"}, {0xA449, "\002\003\371\276"}, {0xA44A, "\002\003\372\010"}, {0xA44B, "\002\003\372\011"}, {0xA44C, "\002\003\372\003"}, {0xA44D, "\002\003\361\126"}, {0xA44E, "\002\003\372\006"}, {0xA44F, "\002\003\372\007"}, {0xA450, "\002\003\372\004"}, {0xA451, "\002\003\372\005"}, {0xA452, "\002\003\372\020"}, {0xA453, "\002\003\372\016"}, {0xA454, "\002\003\372\017"}, {0xA455, "\002\003\372\013"}, {0xA456, "\002\003\372\014"}, {0xA457, "\002\003\372\012"}, {0xA458, "\002\003\361\127"}, {0xA459, "\002\003\372\022"}, {0xA45A, "\002\003\372\023"}, {0xA45B, "\002\003\372\015"}, {0xA45C, "\002\003\372\021"}, {0xA45D, "\002\003\376\123"}, {0xA45E, "\002\003\376\124"}, {0xA45F, "\002\003\357\055"}, {0xA460, "\002\003\376\122"}, {0xA461, "\002\003\376\120"}, {0xA462, "\002\003\376\121"}, {0xA463, "\002\003\376\116"}, {0xA464, "\002\003\376\117"}, {0xA465, "\002\003\376\132"}, {0xA466, "\002\003\376\131"}, {0xA467, "\002\003\376\126"}, {0xA468, "\002\003\376\130"}, {0xA469, "\002\003\362\106"}, {0xA46A, "\002\003\376\125"}, {0xA46B, "\002\003\376\144"}, {0xA46C, "\002\003\376\145"}, {0xA46D, "\002\003\376\140"}, {0xA46E, "\002\003\376\141"}, {0xA46F, "\002\003\376\143"}, {0xA470, "\002\003\376\142"}, {0xA471, "\002\003\362\115"}, {0xA472, "\002\003\376\166"}, {0xA473, "\002\003\003"}, {0xA474, "\002\003\376\165"}, {0xA475, "\002\003\376\162"}, {0xA476, "\002\003\376\163"}, {0xA477, "\002\003\376\160"}, {0xA478, "\002\003\376\161"}, {0xA479, "\002\003\376\207"}, {0xA47A, "\002\003\376\210"}, {0xA47B, "\002\003\376\205"}, {0xA47C, "\002\003\376\206"}, {0xA47D, "\002\003\362\117"}, {0xA47E, "\002\003\376\177"}, {0xA47F, "\002\003\355\040"}, {0xA480, "\002\003\376\172"}, {0xA481, "\002\003\376\214"}, {0xA482, "\002\003\376\215"}, {0xA483, "\002\003\355\364"}, {0xA484, "\002\003\376\211"}, {0xA485, "\002\003\376\213"}, {0xA486, "\002\003\376\212"}, {0xA487, "\002\003\376\222"}, {0xA488, "\002\003\376\223"}, {0xA489, "\002\003\376\216"}, {0xA48A, "\002\003\376\217"}, {0xA48B, "\002\003\376\221"}, {0xA48C, "\002\003\376\220"}, {0xA490, "\017\003\361\241"}, {0xA491, "\017\003\356\077"}, {0xA492, "\017\003\360\377"}, {0xA493, "\017\003\361\126"}, {0xA494, "\017\003\360\147"}, {0xA495, "\017\003\361\337"}, {0xA496, "\017\003\360\271"}, {0xA497, "\017\003\360\263"}, {0xA498, "\017\003\355\230"}, {0xA499, "\017\003\360\334"}, {0xA49A, "\017\003\361\045"}, {0xA49B, "\017\003\360\070"}, {0xA49C, "\017\003\361\062"}, {0xA49D, "\017\003\355\040"}, {0xA49E, "\017\003\361\230"}, {0xA49F, "\017\003\360\337"}, {0xA4A0, "\017\003\360\336"}, {0xA4A1, "\017\003\355\017"}, {0xA4A2, "\017\003\362\147"}, {0xA4A3, "\017\003\360\150"}, {0xA4A4, "\017\003\360\166"}, {0xA4A5, "\017\003\360\101"}, {0xA4A6, "\017\003\360\272"}, {0xA4A7, "\017\003\361\127"}, {0xA4A8, "\017\003\355\300"}, {0xA4A9, "\017\003\361\140"}, {0xA4AA, "\017\003\360\361"}, {0xA4AB, "\017\003\362\143"}, {0xA4AC, "\017\003\361\231"}, {0xA4AD, "\017\003\360\323"}, {0xA4AE, "\017\003\362\115"}, {0xA4AF, "\017\003\362\077"}, {0xA4B0, "\017\003\361\315"}, {0xA4B1, "\017\003\362\062"}, {0xA4B2, "\017\003\355\101"}, {0xA4B3, "\017\003\357\211"}, {0xA4B4, "\017\003\361\130"}, {0xA4B5, "\017\003\360\362"}, {0xA4B6, "\017\003\360\277"}, {0xA4B7, "\017\003\356\142"}, {0xA4B8, "\017\003\355\150"}, {0xA4B9, "\017\003\212"}, {0xA4BA, "\017\003\361\314"}, {0xA4BB, "\017\003\361\027"}, {0xA4BC, "\017\003\360\146"}, {0xA4BD, "\017\003\360\145"}, {0xA4BE, "\017\003\360\131"}, {0xA4BF, "\017\003\360\335"}, {0xA4C0, "\017\003\361\312"}, {0xA4C1, "\017\003\362\145"}, {0xA4C2, "\017\003\361\313"}, {0xA4C3, "\017\003\356\151"}, {0xA4C4, "\017\003\362\146"}, {0xA4C5, "\017\003\361\107"}, {0xA4C6, "\017\003\355\331"}, {0xF900, "\016\007\025\363\357"}, {0xF901, "\016\007\025\363\360"}, {0xF902, "\016\007\025\363\361"}, {0xF903, "\016\007\025\363\362"}, {0xF904, "\016\007\025\363\363"}, {0xF905, "\016\007\025\363\364"}, {0xF906, "\016\007\025\363\365"}, {0xF907, "\016\007\025\363\366"}, {0xF908, "\016\007\025\363\367"}, {0xF909, "\016\007\025\363\370"}, {0xF90A, "\016\007\025\363\371"}, {0xF90B, "\016\007\025\363\372"}, {0xF90C, "\016\007\025\363\373"}, {0xF90D, "\016\007\025\363\374"}, {0xF90E, "\016\007\025\363\375"}, {0xF90F, "\016\007\025\363\376"}, {0xF910, "\016\007\025\363\377"}, {0xF911, "\016\007\025\364\001"}, {0xF912, "\016\007\025\364\002"}, {0xF913, "\016\007\025\364\003"}, {0xF914, "\016\007\025\364\004"}, {0xF915, "\016\007\025\364\005"}, {0xF916, "\016\007\025\364\006"}, {0xF917, "\016\007\025\364\007"}, {0xF918, "\016\007\025\364\010"}, {0xF919, "\016\007\025\364\011"}, {0xF91A, "\016\007\025\364\012"}, {0xF91B, "\016\007\025\364\013"}, {0xF91C, "\016\007\025\364\014"}, {0xF91D, "\016\007\025\364\015"}, {0xF91E, "\016\007\025\364\016"}, {0xF91F, "\016\007\025\364\017"}, {0xF920, "\016\007\025\364\020"}, {0xF921, "\016\007\025\364\021"}, {0xF922, "\016\007\025\364\022"}, {0xF923, "\016\007\025\364\023"}, {0xF924, "\016\007\025\364\024"}, {0xF925, "\016\007\025\364\025"}, {0xF926, "\016\007\025\364\026"}, {0xF927, "\016\007\025\364\027"}, {0xF928, "\016\007\025\364\030"}, {0xF929, "\016\007\025\364\031"}, {0xF92A, "\016\007\025\364\032"}, {0xF92B, "\016\007\025\364\033"}, {0xF92C, "\016\007\025\364\034"}, {0xF92D, "\016\007\025\364\035"}, {0xF92E, "\016\007\025\364\036"}, {0xF92F, "\016\007\025\364\037"}, {0xF930, "\016\007\025\364\040"}, {0xF931, "\016\007\025\364\041"}, {0xF932, "\016\007\025\364\042"}, {0xF933, "\016\007\025\364\043"}, {0xF934, "\016\007\025\364\044"}, {0xF935, "\016\007\025\364\045"}, {0xF936, "\016\007\025\364\046"}, {0xF937, "\016\007\025\364\047"}, {0xF938, "\016\007\025\364\050"}, {0xF939, "\016\007\025\364\051"}, {0xF93A, "\016\007\025\364\052"}, {0xF93B, "\016\007\025\364\053"}, {0xF93C, "\016\007\025\364\054"}, {0xF93D, "\016\007\025\364\055"}, {0xF93E, "\016\007\025\364\056"}, {0xF93F, "\016\007\025\364\057"}, {0xF940, "\016\007\025\364\060"}, {0xF941, "\016\007\025\364\061"}, {0xF942, "\016\007\025\364\062"}, {0xF943, "\016\007\025\364\063"}, {0xF944, "\016\007\025\364\064"}, {0xF945, "\016\007\025\364\065"}, {0xF946, "\016\007\025\364\066"}, {0xF947, "\016\007\025\364\067"}, {0xF948, "\016\007\025\364\070"}, {0xF949, "\016\007\025\364\071"}, {0xF94A, "\016\007\025\364\072"}, {0xF94B, "\016\007\025\364\073"}, {0xF94C, "\016\007\025\364\074"}, {0xF94D, "\016\007\025\364\075"}, {0xF94E, "\016\007\025\364\076"}, {0xF94F, "\016\007\025\364\077"}, {0xF950, "\016\007\025\364\100"}, {0xF951, "\016\007\025\364\101"}, {0xF952, "\016\007\025\364\102"}, {0xF953, "\016\007\025\364\103"}, {0xF954, "\016\007\025\364\104"}, {0xF955, "\016\007\025\364\105"}, {0xF956, "\016\007\025\364\106"}, {0xF957, "\016\007\025\364\107"}, {0xF958, "\016\007\025\364\110"}, {0xF959, "\016\007\025\364\111"}, {0xF95A, "\016\007\025\364\112"}, {0xF95B, "\016\007\025\364\113"}, {0xF95C, "\016\007\025\364\114"}, {0xF95D, "\016\007\025\364\115"}, {0xF95E, "\016\007\025\364\116"}, {0xF95F, "\016\007\025\364\117"}, {0xF960, "\016\007\025\364\120"}, {0xF961, "\016\007\025\364\121"}, {0xF962, "\016\007\025\364\122"}, {0xF963, "\016\007\025\364\123"}, {0xF964, "\016\007\025\364\124"}, {0xF965, "\016\007\025\364\125"}, {0xF966, "\016\007\025\364\126"}, {0xF967, "\016\007\025\364\127"}, {0xF968, "\016\007\025\364\130"}, {0xF969, "\016\007\025\364\131"}, {0xF96A, "\016\007\025\364\132"}, {0xF96B, "\016\007\025\364\133"}, {0xF96C, "\016\007\025\364\134"}, {0xF96D, "\016\007\025\364\135"}, {0xF96E, "\016\007\025\364\136"}, {0xF96F, "\016\007\025\364\137"}, {0xF970, "\016\007\025\364\140"}, {0xF971, "\016\007\025\364\141"}, {0xF972, "\016\007\025\364\142"}, {0xF973, "\016\007\025\364\143"}, {0xF974, "\016\007\025\364\144"}, {0xF975, "\016\007\025\364\145"}, {0xF976, "\016\007\025\364\146"}, {0xF977, "\016\007\025\364\147"}, {0xF978, "\016\007\025\364\150"}, {0xF979, "\016\007\025\364\151"}, {0xF97A, "\016\007\025\364\152"}, {0xF97B, "\016\007\025\364\153"}, {0xF97C, "\016\007\025\364\154"}, {0xF97D, "\016\007\025\364\155"}, {0xF97E, "\016\007\025\364\156"}, {0xF97F, "\016\007\025\364\157"}, {0xF980, "\016\007\025\364\160"}, {0xF981, "\016\007\025\364\161"}, {0xF982, "\016\007\025\364\162"}, {0xF983, "\016\007\025\364\163"}, {0xF984, "\016\007\025\364\164"}, {0xF985, "\016\007\025\364\165"}, {0xF986, "\016\007\025\364\166"}, {0xF987, "\016\007\025\364\167"}, {0xF988, "\016\007\025\364\170"}, {0xF989, "\016\007\025\364\171"}, {0xF98A, "\016\007\025\364\172"}, {0xF98B, "\016\007\025\364\173"}, {0xF98C, "\016\007\025\364\174"}, {0xF98D, "\016\007\025\364\175"}, {0xF98E, "\016\007\025\364\176"}, {0xF98F, "\016\007\025\364\177"}, {0xF990, "\016\007\025\364\200"}, {0xF991, "\016\007\025\364\201"}, {0xF992, "\016\007\025\364\202"}, {0xF993, "\016\007\025\364\203"}, {0xF994, "\016\007\025\364\204"}, {0xF995, "\016\007\025\364\205"}, {0xF996, "\016\007\025\364\206"}, {0xF997, "\016\007\025\364\207"}, {0xF998, "\016\007\025\364\210"}, {0xF999, "\016\007\025\364\211"}, {0xF99A, "\016\007\025\364\212"}, {0xF99B, "\016\007\025\364\213"}, {0xF99C, "\016\007\025\364\214"}, {0xF99D, "\016\007\025\364\215"}, {0xF99E, "\016\007\025\364\216"}, {0xF99F, "\016\007\025\364\217"}, {0xF9A0, "\016\007\025\364\220"}, {0xF9A1, "\016\007\025\364\221"}, {0xF9A2, "\016\007\025\364\222"}, {0xF9A3, "\016\007\025\364\223"}, {0xF9A4, "\016\007\025\364\224"}, {0xF9A5, "\016\007\025\364\225"}, {0xF9A6, "\016\007\025\364\226"}, {0xF9A7, "\016\007\025\364\227"}, {0xF9A8, "\016\007\025\364\230"}, {0xF9A9, "\016\007\025\364\231"}, {0xF9AA, "\016\007\025\364\232"}, {0xF9AB, "\016\007\025\364\233"}, {0xF9AC, "\016\007\025\364\234"}, {0xF9AD, "\016\007\025\364\235"}, {0xF9AE, "\016\007\025\364\236"}, {0xF9AF, "\016\007\025\364\237"}, {0xF9B0, "\016\007\025\364\240"}, {0xF9B1, "\016\007\025\364\241"}, {0xF9B2, "\016\007\025\364\242"}, {0xF9B3, "\016\007\025\364\243"}, {0xF9B4, "\016\007\025\364\244"}, {0xF9B5, "\016\007\025\364\245"}, {0xF9B6, "\016\007\025\364\246"}, {0xF9B7, "\016\007\025\364\247"}, {0xF9B8, "\016\007\025\364\250"}, {0xF9B9, "\016\007\025\364\251"}, {0xF9BA, "\016\007\025\364\252"}, {0xF9BB, "\016\007\025\364\253"}, {0xF9BC, "\016\007\025\364\254"}, {0xF9BD, "\016\007\025\364\255"}, {0xF9BE, "\016\007\025\364\256"}, {0xF9BF, "\016\007\025\364\257"}, {0xF9C0, "\016\007\025\364\260"}, {0xF9C1, "\016\007\025\364\261"}, {0xF9C2, "\016\007\025\364\262"}, {0xF9C3, "\016\007\025\364\263"}, {0xF9C4, "\016\007\025\364\264"}, {0xF9C5, "\016\007\025\364\265"}, {0xF9C6, "\016\007\025\364\266"}, {0xF9C7, "\016\007\025\364\267"}, {0xF9C8, "\016\007\025\364\270"}, {0xF9C9, "\016\007\025\364\271"}, {0xF9CA, "\016\007\025\364\272"}, {0xF9CB, "\016\007\025\364\273"}, {0xF9CC, "\016\007\025\364\274"}, {0xF9CD, "\016\007\025\364\275"}, {0xF9CE, "\016\007\025\364\276"}, {0xF9CF, "\016\007\025\364\277"}, {0xF9D0, "\016\007\025\364\300"}, {0xF9D1, "\016\007\025\364\301"}, {0xF9D2, "\016\007\025\364\302"}, {0xF9D3, "\016\007\025\364\303"}, {0xF9D4, "\016\007\025\364\304"}, {0xF9D5, "\016\007\025\364\305"}, {0xF9D6, "\016\007\025\364\306"}, {0xF9D7, "\016\007\025\364\307"}, {0xF9D8, "\016\007\025\364\310"}, {0xF9D9, "\016\007\025\364\311"}, {0xF9DA, "\016\007\025\364\312"}, {0xF9DB, "\016\007\025\364\313"}, {0xF9DC, "\016\007\025\364\314"}, {0xF9DD, "\016\007\025\364\315"}, {0xF9DE, "\016\007\025\364\316"}, {0xF9DF, "\016\007\025\364\317"}, {0xF9E0, "\016\007\025\364\320"}, {0xF9E1, "\016\007\025\364\321"}, {0xF9E2, "\016\007\025\364\322"}, {0xF9E3, "\016\007\025\364\323"}, {0xF9E4, "\016\007\025\364\324"}, {0xF9E5, "\016\007\025\364\325"}, {0xF9E6, "\016\007\025\364\326"}, {0xF9E7, "\016\007\025\364\327"}, {0xF9E8, "\016\007\025\364\330"}, {0xF9E9, "\016\007\025\364\331"}, {0xF9EA, "\016\007\025\364\332"}, {0xF9EB, "\016\007\025\364\333"}, {0xF9EC, "\016\007\025\364\334"}, {0xF9ED, "\016\007\025\364\335"}, {0xF9EE, "\016\007\025\364\336"}, {0xF9EF, "\016\007\025\364\337"}, {0xF9F0, "\016\007\025\364\340"}, {0xF9F1, "\016\007\025\364\341"}, {0xF9F2, "\016\007\025\364\342"}, {0xF9F3, "\016\007\025\364\343"}, {0xF9F4, "\016\007\025\364\344"}, {0xF9F5, "\016\007\025\364\345"}, {0xF9F6, "\016\007\025\364\346"}, {0xF9F7, "\016\007\025\364\347"}, {0xF9F8, "\016\007\025\364\350"}, {0xF9F9, "\016\007\025\364\351"}, {0xF9FA, "\016\007\025\364\352"}, {0xF9FB, "\016\007\025\364\353"}, {0xF9FC, "\016\007\025\364\354"}, {0xF9FD, "\016\007\025\364\355"}, {0xF9FE, "\016\007\025\364\356"}, {0xF9FF, "\016\007\025\364\357"}, {0xFA00, "\016\007\025\364\360"}, {0xFA01, "\016\007\025\364\361"}, {0xFA02, "\016\007\025\364\362"}, {0xFA03, "\016\007\025\364\363"}, {0xFA04, "\016\007\025\364\364"}, {0xFA05, "\016\007\025\364\365"}, {0xFA06, "\016\007\025\364\366"}, {0xFA07, "\016\007\025\364\367"}, {0xFA08, "\016\007\025\364\370"}, {0xFA09, "\016\007\025\364\371"}, {0xFA0A, "\016\007\025\364\372"}, {0xFA0B, "\016\007\025\364\373"}, {0xFA0C, "\016\007\025\364\374"}, {0xFA0D, "\016\007\025\364\375"}, {0xFA0E, "\016\007\025\364\376"}, {0xFA0F, "\016\007\025\364\377"}, {0xFA10, "\016\007\025\365\001"}, {0xFA11, "\016\007\025\365\002"}, {0xFA12, "\016\007\025\365\003"}, {0xFA13, "\016\007\025\365\004"}, {0xFA14, "\016\007\025\365\005"}, {0xFA15, "\016\007\025\365\006"}, {0xFA16, "\016\007\025\365\007"}, {0xFA17, "\016\007\025\365\010"}, {0xFA18, "\016\007\025\365\011"}, {0xFA19, "\016\007\025\365\012"}, {0xFA1A, "\016\007\025\365\013"}, {0xFA1B, "\016\007\025\365\014"}, {0xFA1C, "\016\007\025\365\015"}, {0xFA1D, "\016\007\025\365\016"}, {0xFA1E, "\016\007\025\365\017"}, {0xFA1F, "\016\007\025\365\020"}, {0xFA20, "\016\007\025\365\021"}, {0xFA21, "\016\007\025\365\022"}, {0xFA22, "\016\007\025\365\023"}, {0xFA23, "\016\007\025\365\024"}, {0xFA24, "\016\007\025\365\025"}, {0xFA25, "\016\007\025\365\026"}, {0xFA26, "\016\007\025\365\027"}, {0xFA27, "\016\007\025\365\030"}, {0xFA28, "\016\007\025\365\031"}, {0xFA29, "\016\007\025\365\032"}, {0xFA2A, "\016\007\025\365\033"}, {0xFA2B, "\016\007\025\365\034"}, {0xFA2C, "\016\007\025\365\035"}, {0xFA2D, "\016\007\025\365\036"}, {0xFB00, "\012\005\006\366\061"}, {0xFB01, "\012\005\006\356\200"}, {0xFB02, "\012\005\006\366\072"}, {0xFB03, "\012\005\006\366\062"}, {0xFB04, "\012\005\006\366\063"}, {0xFB05, "\012\005\006\223\355\264\261"}, {0xFB06, "\012\005\006\375\026"}, {0xFB13, "\012\005\125\356\102\355\340"}, {0xFB14, "\012\005\125\356\102\357\057"}, {0xFB15, "\012\005\125\356\102\357\177"}, {0xFB16, "\012\005\125\360\005\355\340"}, {0xFB17, "\012\005\125\356\102\356\342"}, {0xFB1D, "\001\137\356\272\360\322"}, {0xFB1E, "\037\222\367\325\376\011"}, {0xFB1F, "\012\137\357\056\356\272\356\272\356\374"}, {0xFB20, "\001\137\360\047\360\062"}, {0xFB21, "\001\137\355\262\355\372"}, {0xFB22, "\001\137\355\262\356\317"}, {0xFB23, "\001\137\355\262\357\170"}, {0xFB24, "\001\137\355\262\254"}, {0xFB25, "\001\137\355\262\356\347"}, {0xFB26, "\001\137\355\262\356\357\032"}, {0xFB27, "\001\137\355\262\357\321"}, {0xFB28, "\001\137\355\262\357\347"}, {0xFB29, "\001\137\057\214\376\010"}, {0xFB2A, "\001\137\355\310\037\355\310"}, {0xFB2B, "\001\137\355\310\037\361\317"}, {0xFB2C, "\001\137\355\310\365\170\020\037\355\310"}, {0xFB2D, "\001\137\355\310\355\011\020\037\361\317"}, {0xFB2E, "\001\137\355\372\356\374"}, {0xFB2F, "\001\137\355\372\357\300"}, {0xFB30, "\001\137\355\372\357\232"}, {0xFB31, "\001\137\363\114\355\011"}, {0xFB32, "\001\137\360\303\355\011"}, {0xFB33, "\001\137\356\317\355\011"}, {0xFB34, "\001\137\357\170\357\232"}, {0xFB35, "\001\137\355\051\355\011"}, {0xFB36, "\001\137\360\020\355\011"}, {0xFB38, "\001\137\362\056\355\011"}, {0xFB39, "\001\137\356\272\355\011"}, {0xFB3A, "\001\137\254\355\011\032"}, {0xFB3B, "\001\137\254\355\011"}, {0xFB3C, "\001\137\356\347\355\011"}, {0xFB3E, "\001\137\356\357\355\011"}, {0xFB40, "\001\137\357\251\355\011"}, {0xFB41, "\001\137\361\301\355\011"}, {0xFB43, "\001\137\355\172\355\011\032"}, {0xFB44, "\001\137\355\172\355\011"}, {0xFB46, "\001\137\357\366\355\011"}, {0xFB47, "\001\137\373\360\355\011"}, {0xFB48, "\001\137\357\321\355\011"}, {0xFB49, "\001\137\355\310\355\011"}, {0xFB4A, "\001\137\357\347\355\011"}, {0xFB4B, "\001\137\355\051\360\325"}, {0xFB4C, "\001\137\357\072\357\021"}, {0xFB4D, "\001\137\254\357\021"}, {0xFB4E, "\001\137\355\172\357\021"}, {0xFB4F, "\012\137\355\372\356\347"}, {0xFB50, "\001\004\100\360\006\036"}, {0xFB51, "\001\004\100\360\006\032"}, {0xFB52, "\001\004\356\143\036"}, {0xFB53, "\001\004\356\143\032"}, {0xFB54, "\001\004\356\143\055"}, {0xFB55, "\001\004\356\143\131"}, {0xFB56, "\001\004\356\237\036"}, {0xFB57, "\001\004\356\237\032"}, {0xFB58, "\001\004\356\237\055"}, {0xFB59, "\001\004\356\237\131"}, {0xFB5A, "\001\004\356\144\036"}, {0xFB5B, "\001\004\356\144\032"}, {0xFB5C, "\001\004\356\144\055"}, {0xFB5D, "\001\004\356\144\131"}, {0xFB5E, "\001\004\356\262\036"}, {0xFB5F, "\001\004\356\262\032"}, {0xFB60, "\001\004\356\262\055"}, {0xFB61, "\001\004\356\262\131"}, {0xFB62, "\001\004\356\256\036"}, {0xFB63, "\001\004\356\256\032"}, {0xFB64, "\001\004\356\256\055"}, {0xFB65, "\001\004\356\256\131"}, {0xFB66, "\001\004\356\261\036"}, {0xFB67, "\001\004\356\261\032"}, {0xFB68, "\001\004\356\261\055"}, {0xFB69, "\001\004\356\261\131"}, {0xFB6A, "\001\004\356\264\036"}, {0xFB6B, "\001\004\356\264\032"}, {0xFB6C, "\001\004\356\264\055"}, {0xFB6D, "\001\004\356\264\131"}, {0xFB6E, "\001\004\356\240\036"}, {0xFB6F, "\001\004\356\240\032"}, {0xFB70, "\001\004\356\240\055"}, {0xFB71, "\001\004\356\240\131"}, {0xFB72, "\001\004\356\164\036"}, {0xFB73, "\001\004\356\164\032"}, {0xFB74, "\001\004\356\164\055"}, {0xFB75, "\001\004\356\164\131"}, {0xFB76, "\001\004\356\230\036"}, {0xFB77, "\001\004\356\230\032"}, {0xFB78, "\001\004\356\230\055"}, {0xFB79, "\001\004\356\230\131"}, {0xFB7A, "\001\004\356\124\036"}, {0xFB7B, "\001\004\356\124\032"}, {0xFB7C, "\001\004\356\124\055"}, {0xFB7D, "\001\004\356\124\131"}, {0xFB7E, "\001\004\356\255\036"}, {0xFB7F, "\001\004\356\255\032"}, {0xFB80, "\001\004\356\255\055"}, {0xFB81, "\001\004\356\255\131"}, {0xFB82, "\001\004\357\125\036"}, {0xFB83, "\001\004\357\125\032"}, {0xFB84, "\001\004\357\121\036"}, {0xFB85, "\001\004\357\121\032"}, {0xFB86, "\001\004\357\144\036"}, {0xFB87, "\001\004\357\144\032"}, {0xFB88, "\001\004\357\126\036"}, {0xFB89, "\001\004\357\126\032"}, {0xFB8A, "\001\004\357\207\036"}, {0xFB8B, "\001\004\357\207\032"}, {0xFB8C, "\001\004\357\317\036"}, {0xFB8D, "\001\004\357\317\032"}, {0xFB8E, "\001\004\356\216\036"}, {0xFB8F, "\001\004\356\216\032"}, {0xFB90, "\001\004\356\216\055"}, {0xFB91, "\001\004\356\216\131"}, {0xFB92, "\001\004\355\322\036"}, {0xFB93, "\001\004\355\322\032"}, {0xFB94, "\001\004\355\322\055"}, {0xFB95, "\001\004\355\322\131"}, {0xFB96, "\001\004\356\331\036"}, {0xFB97, "\001\004\356\331\032"}, {0xFB98, "\001\004\356\331\055"}, {0xFB99, "\001\004\356\331\131"}, {0xFB9A, "\001\004\356\226\036"}, {0xFB9B, "\001\004\356\226\032"}, {0xFB9C, "\001\004\356\226\055"}, {0xFB9D, "\001\004\356\226\131"}, {0xFB9E, "\001\004\215\360\276\036"}, {0xFB9F, "\001\004\215\360\276\032"}, {0xFBA0, "\001\004\357\024\036"}, {0xFBA1, "\001\004\357\024\032"}, {0xFBA2, "\001\004\357\024\055"}, {0xFBA3, "\001\004\357\024\131"}, {0xFBA4, "\001\004\231\056\013\040\036"}, {0xFBA5, "\001\004\231\056\013\040\032"}, {0xFBA6, "\001\004\231\356\015\036"}, {0xFBA7, "\001\004\231\356\015\032"}, {0xFBA8, "\001\004\231\356\015\055"}, {0xFBA9, "\001\004\231\356\015\131"}, {0xFBAA, "\001\004\231\356\163\036"}, {0xFBAB, "\001\004\231\356\163\032"}, {0xFBAC, "\001\004\231\356\163\055"}, {0xFBAD, "\001\004\231\356\163\131"}, {0xFBAE, "\001\004\056\356\303\036"}, {0xFBAF, "\001\004\056\356\303\032"}, {0xFBB0, "\001\004\056\356\303\156\013\040\036"}, {0xFBB1, "\001\004\056\356\303\156\013\040\032"}, {0xFBD3, "\001\004\355\336\036"}, {0xFBD4, "\001\004\355\336\032"}, {0xFBD5, "\001\004\355\336\055"}, {0xFBD6, "\001\004\355\336\131"}, {0xFBD7, "\001\004\113\036"}, {0xFBD8, "\001\004\113\032"}, {0xFBD9, "\001\004\355\210\036"}, {0xFBDA, "\001\004\355\210\032"}, {0xFBDB, "\001\004\355\151\036"}, {0xFBDC, "\001\004\355\151\032"}, {0xFBDD, "\001\004\113\156\013\040\036"}, {0xFBDE, "\001\004\357\053\036"}, {0xFBDF, "\001\004\357\053\032"}, {0xFBE0, "\001\004\355\205\355\210\036"}, {0xFBE1, "\001\004\355\205\355\210\032"}, {0xFBE2, "\001\004\355\205\355\151\036"}, {0xFBE3, "\001\004\355\205\355\151\032"}, {0xFBE4, "\001\004\130\036"}, {0xFBE5, "\001\004\130\032"}, {0xFBE6, "\001\004\130\055"}, {0xFBE7, "\001\004\130\131"}, {0xFBE8, "\001\004\356\236\360\367\355\205\100\160\055"}, {0xFBE9, "\001\004\356\236\360\367\355\205\100\160\131"}, {0xFBEA, "\012\004\056\156\013\040\100\036"}, {0xFBEB, "\012\004\056\156\013\040\100\032"}, {0xFBEC, "\012\004\056\156\013\040\355\305\036"}, {0xFBED, "\012\004\056\156\013\040\355\305\032"}, {0xFBEE, "\012\004\056\156\013\040\355\051\036"}, {0xFBEF, "\012\004\056\156\013\040\355\051\032"}, {0xFBF0, "\012\004\056\156\013\040\132\036"}, {0xFBF1, "\012\004\056\156\013\040\132\032"}, {0xFBF2, "\012\004\056\156\013\040\355\210\036"}, {0xFBF3, "\012\004\056\156\013\040\355\210\032"}, {0xFBF4, "\012\004\056\156\013\040\355\151\036"}, {0xFBF5, "\012\004\056\156\013\040\355\151\032"}, {0xFBF6, "\012\004\056\156\013\040\130\036"}, {0xFBF7, "\012\004\056\156\013\040\130\032"}, {0xFBF8, "\012\004\056\156\013\040\130\055"}, {0xFBF9, "\012\004\356\236\355\205\056\156\013\040\100\160\036"}, {0xFBFA, "\012\004\356\236\355\205\056\156\013\040\100\160\032"}, {0xFBFB, "\012\004\356\236\355\205\056\156\013\040\100\160\055"}, {0xFBFC, "\001\004\356\067\056\036"}, {0xFBFD, "\001\004\356\067\056\032"}, {0xFBFE, "\001\004\356\067\056\055"}, {0xFBFF, "\001\004\356\067\056\131"}, {0xFC00, "\012\004\056\156\013\040\115\036"}, {0xFC01, "\012\004\056\156\013\040\111\036"}, {0xFC02, "\012\004\056\156\013\040\047\036"}, {0xFC03, "\012\004\056\156\013\040\100\160\036"}, {0xFC04, "\012\004\056\156\013\040\056\036"}, {0xFC05, "\012\004\324\115\036"}, {0xFC06, "\012\004\324\111\036"}, {0xFC07, "\012\004\324\170\036"}, {0xFC08, "\012\004\324\047\036"}, {0xFC09, "\012\004\324\100\160\036"}, {0xFC0A, "\012\004\324\056\036"}, {0xFC0B, "\012\004\233\115\036"}, {0xFC0C, "\012\004\233\111\036"}, {0xFC0D, "\012\004\233\170\036"}, {0xFC0E, "\012\004\233\047\036"}, {0xFC0F, "\012\004\233\100\160\036"}, {0xFC10, "\012\004\233\056\036"}, {0xFC11, "\012\004\355\060\115\036"}, {0xFC12, "\012\004\355\060\047\036"}, {0xFC13, "\012\004\355\060\100\160\036"}, {0xFC14, "\012\004\355\060\056\036"}, {0xFC15, "\012\004\115\111\036"}, {0xFC16, "\012\004\115\047\036"}, {0xFC17, "\012\004\111\115\036"}, {0xFC18, "\012\004\111\047\036"}, {0xFC19, "\012\004\170\115\036"}, {0xFC1A, "\012\004\170\111\036"}, {0xFC1B, "\012\004\170\047\036"}, {0xFC1C, "\012\004\245\115\036"}, {0xFC1D, "\012\004\245\111\036"}, {0xFC1E, "\012\004\245\170\036"}, {0xFC1F, "\012\004\245\047\036"}, {0xFC20, "\012\004\355\005\111\036"}, {0xFC21, "\012\004\355\005\047\036"}, {0xFC22, "\012\004\350\115\036"}, {0xFC23, "\012\004\350\111\036"}, {0xFC24, "\012\004\350\170\036"}, {0xFC25, "\012\004\350\047\036"}, {0xFC26, "\012\004\355\046\111\036"}, {0xFC27, "\012\004\355\046\047\036"}, {0xFC28, "\012\004\355\366\047\036"}, {0xFC29, "\012\004\355\027\115\036"}, {0xFC2A, "\012\004\355\027\047\036"}, {0xFC2B, "\012\004\355\063\115\036"}, {0xFC2C, "\012\004\355\063\047\036"}, {0xFC2D, "\012\004\351\115\036"}, {0xFC2E, "\012\004\351\111\036"}, {0xFC2F, "\012\004\351\170\036"}, {0xFC30, "\012\004\351\047\036"}, {0xFC31, "\012\004\351\100\160\036"}, {0xFC32, "\012\004\351\056\036"}, {0xFC33, "\012\004\355\037\111\036"}, {0xFC34, "\012\004\355\037\047\036"}, {0xFC35, "\012\004\355\037\100\160\036"}, {0xFC36, "\012\004\355\037\056\036"}, {0xFC37, "\012\004\254\100\036"}, {0xFC38, "\012\004\254\115\036"}, {0xFC39, "\012\004\254\111\036"}, {0xFC3A, "\012\004\254\170\036"}, {0xFC3B, "\012\004\254\206\036"}, {0xFC3C, "\012\004\254\047\036"}, {0xFC3D, "\012\004\254\100\160\036"}, {0xFC3E, "\012\004\254\056\036"}, {0xFC3F, "\012\004\206\115\036"}, {0xFC40, "\012\004\206\111\036"}, {0xFC41, "\012\004\206\170\036"}, {0xFC42, "\012\004\206\047\036"}, {0xFC43, "\012\004\206\100\160\036"}, {0xFC44, "\012\004\206\056\036"}, {0xFC45, "\012\004\047\115\036"}, {0xFC46, "\012\004\047\111\036"}, {0xFC47, "\012\004\047\170\036"}, {0xFC48, "\012\004\047\047\036"}, {0xFC49, "\012\004\047\100\160\036"}, {0xFC4A, "\012\004\047\056\036"}, {0xFC4B, "\012\004\215\115\036"}, {0xFC4C, "\012\004\215\111\036"}, {0xFC4D, "\012\004\215\170\036"}, {0xFC4E, "\012\004\215\047\036"}, {0xFC4F, "\012\004\215\100\160\036"}, {0xFC50, "\012\004\215\056\036"}, {0xFC51, "\012\004\231\115\036"}, {0xFC52, "\012\004\231\047\036"}, {0xFC53, "\012\004\231\100\160\036"}, {0xFC54, "\012\004\231\056\036"}, {0xFC55, "\012\004\056\115\036"}, {0xFC56, "\012\004\056\111\036"}, {0xFC57, "\012\004\056\170\036"}, {0xFC58, "\012\004\056\047\036"}, {0xFC59, "\012\004\056\100\160\036"}, {0xFC5A, "\012\004\056\056\036"}, {0xFC5B, "\012\004\356\321\013\040\100\036"}, {0xFC5C, "\012\004\343\013\040\100\036"}, {0xFC5D, "\012\004\100\160\013\040\100\036"}, {0xFC5E, "\012\004\355\154\357\122\036"}, {0xFC5F, "\012\004\355\154\357\216\036"}, {0xFC60, "\012\004\355\154\356\175\036"}, {0xFC61, "\012\004\355\154\356\157\036"}, {0xFC62, "\012\004\355\154\356\215\036"}, {0xFC63, "\012\004\355\154\013\040\100\036"}, {0xFC64, "\012\004\056\156\013\040\343\032"}, {0xFC65, "\012\004\056\156\013\040\356\134\032"}, {0xFC66, "\012\004\056\156\013\040\047\032"}, {0xFC67, "\012\004\056\156\013\040\215\032"}, {0xFC68, "\012\004\056\156\013\040\100\160\032"}, {0xFC69, "\012\004\056\156\013\040\056\032"}, {0xFC6A, "\012\004\324\343\032"}, {0xFC6B, "\012\004\324\356\134\032"}, {0xFC6C, "\012\004\324\047\032"}, {0xFC6D, "\012\004\324\215\032"}, {0xFC6E, "\012\004\324\100\160\032"}, {0xFC6F, "\012\004\324\056\032"}, {0xFC70, "\012\004\233\343\032"}, {0xFC71, "\012\004\233\356\134\032"}, {0xFC72, "\012\004\233\047\032"}, {0xFC73, "\012\004\233\215\032"}, {0xFC74, "\012\004\233\100\160\032"}, {0xFC75, "\012\004\233\056\032"}, {0xFC76, "\012\004\355\060\343\032"}, {0xFC77, "\012\004\355\060\356\134\032"}, {0xFC78, "\012\004\355\060\047\032"}, {0xFC79, "\012\004\355\060\215\032"}, {0xFC7A, "\012\004\355\060\100\160\032"}, {0xFC7B, "\012\004\355\060\056\032"}, {0xFC7C, "\012\004\351\100\160\032"}, {0xFC7D, "\012\004\351\056\032"}, {0xFC7E, "\012\004\355\037\100\160\032"}, {0xFC7F, "\012\004\355\037\056\032"}, {0xFC80, "\012\004\254\100\032"}, {0xFC81, "\012\004\254\206\032"}, {0xFC82, "\012\004\254\047\032"}, {0xFC83, "\012\004\254\100\160\032"}, {0xFC84, "\012\004\254\056\032"}, {0xFC85, "\012\004\206\047\032"}, {0xFC86, "\012\004\206\100\160\032"}, {0xFC87, "\012\004\206\056\032"}, {0xFC88, "\012\004\047\100\032"}, {0xFC89, "\012\004\047\047\032"}, {0xFC8A, "\012\004\215\343\032"}, {0xFC8B, "\012\004\215\356\134\032"}, {0xFC8C, "\012\004\215\047\032"}, {0xFC8D, "\012\004\215\215\032"}, {0xFC8E, "\012\004\215\100\160\032"}, {0xFC8F, "\012\004\215\056\032"}, {0xFC90, "\012\004\100\160\013\040\100\032"}, {0xFC91, "\012\004\056\343\032"}, {0xFC92, "\012\004\056\356\134\032"}, {0xFC93, "\012\004\056\047\032"}, {0xFC94, "\012\004\056\215\032"}, {0xFC95, "\012\004\056\100\160\032"}, {0xFC96, "\012\004\056\056\032"}, {0xFC97, "\012\004\056\156\013\040\115\055"}, {0xFC98, "\012\004\056\156\013\040\111\055"}, {0xFC99, "\012\004\056\156\013\040\170\055"}, {0xFC9A, "\012\004\056\156\013\040\047\055"}, {0xFC9B, "\012\004\056\156\013\040\231\055"}, {0xFC9C, "\012\004\324\115\055"}, {0xFC9D, "\012\004\324\111\055"}, {0xFC9E, "\012\004\324\170\055"}, {0xFC9F, "\012\004\324\047\055"}, {0xFCA0, "\012\004\324\231\055"}, {0xFCA1, "\012\004\233\115\055"}, {0xFCA2, "\012\004\233\111\055"}, {0xFCA3, "\012\004\233\170\055"}, {0xFCA4, "\012\004\233\047\055"}, {0xFCA5, "\012\004\233\231\055"}, {0xFCA6, "\012\004\355\060\047\055"}, {0xFCA7, "\012\004\115\111\055"}, {0xFCA8, "\012\004\115\047\055"}, {0xFCA9, "\012\004\111\115\055"}, {0xFCAA, "\012\004\111\047\055"}, {0xFCAB, "\012\004\170\115\055"}, {0xFCAC, "\012\004\170\047\055"}, {0xFCAD, "\012\004\245\115\055"}, {0xFCAE, "\012\004\245\111\055"}, {0xFCAF, "\012\004\245\170\055"}, {0xFCB0, "\012\004\245\047\055"}, {0xFCB1, "\012\004\355\005\111\055"}, {0xFCB2, "\012\004\355\005\170\055"}, {0xFCB3, "\012\004\355\005\047\055"}, {0xFCB4, "\012\004\350\115\055"}, {0xFCB5, "\012\004\350\111\055"}, {0xFCB6, "\012\004\350\170\055"}, {0xFCB7, "\012\004\350\047\055"}, {0xFCB8, "\012\004\355\046\111\055"}, {0xFCB9, "\012\004\355\366\047\055"}, {0xFCBA, "\012\004\355\027\115\055"}, {0xFCBB, "\012\004\355\027\047\055"}, {0xFCBC, "\012\004\355\063\115\055"}, {0xFCBD, "\012\004\355\063\047\055"}, {0xFCBE, "\012\004\351\115\055"}, {0xFCBF, "\012\004\351\111\055"}, {0xFCC0, "\012\004\351\170\055"}, {0xFCC1, "\012\004\351\047\055"}, {0xFCC2, "\012\004\355\037\111\055"}, {0xFCC3, "\012\004\355\037\047\055"}, {0xFCC4, "\012\004\254\115\055"}, {0xFCC5, "\012\004\254\111\055"}, {0xFCC6, "\012\004\254\170\055"}, {0xFCC7, "\012\004\254\206\055"}, {0xFCC8, "\012\004\254\047\055"}, {0xFCC9, "\012\004\206\115\055"}, {0xFCCA, "\012\004\206\111\055"}, {0xFCCB, "\012\004\206\170\055"}, {0xFCCC, "\012\004\206\047\055"}, {0xFCCD, "\012\004\206\231\055"}, {0xFCCE, "\012\004\047\115\055"}, {0xFCCF, "\012\004\047\111\055"}, {0xFCD0, "\012\004\047\170\055"}, {0xFCD1, "\012\004\047\047\055"}, {0xFCD2, "\012\004\215\115\055"}, {0xFCD3, "\012\004\215\111\055"}, {0xFCD4, "\012\004\215\170\055"}, {0xFCD5, "\012\004\215\047\055"}, {0xFCD6, "\012\004\215\231\055"}, {0xFCD7, "\012\004\231\115\055"}, {0xFCD8, "\012\004\231\047\055"}, {0xFCD9, "\012\004\231\013\040\100\055"}, {0xFCDA, "\012\004\056\115\055"}, {0xFCDB, "\012\004\056\111\055"}, {0xFCDC, "\012\004\056\170\055"}, {0xFCDD, "\012\004\056\047\055"}, {0xFCDE, "\012\004\056\231\055"}, {0xFCDF, "\012\004\056\156\013\040\047\131"}, {0xFCE0, "\012\004\056\156\013\040\231\131"}, {0xFCE1, "\012\004\324\047\131"}, {0xFCE2, "\012\004\324\231\131"}, {0xFCE3, "\012\004\233\047\131"}, {0xFCE4, "\012\004\233\231\131"}, {0xFCE5, "\012\004\355\060\047\131"}, {0xFCE6, "\012\004\355\060\231\131"}, {0xFCE7, "\012\004\245\047\131"}, {0xFCE8, "\012\004\245\231\131"}, {0xFCE9, "\012\004\247\047\131"}, {0xFCEA, "\012\004\247\231\131"}, {0xFCEB, "\012\004\254\206\131"}, {0xFCEC, "\012\004\254\047\131"}, {0xFCED, "\012\004\206\047\131"}, {0xFCEE, "\012\004\215\047\131"}, {0xFCEF, "\012\004\215\231\131"}, {0xFCF0, "\012\004\056\047\131"}, {0xFCF1, "\012\004\056\231\131"}, {0xFCF2, "\012\004\355\154\356\175\131"}, {0xFCF3, "\012\004\355\154\356\157\131"}, {0xFCF4, "\012\004\355\154\356\215\131"}, {0xFCF5, "\012\004\355\046\100\160\036"}, {0xFCF6, "\012\004\355\046\056\036"}, {0xFCF7, "\012\004\355\027\100\160\036"}, {0xFCF8, "\012\004\355\027\056\036"}, {0xFCF9, "\012\004\355\063\100\160\036"}, {0xFCFA, "\012\004\355\063\056\036"}, {0xFCFB, "\012\004\245\100\160\036"}, {0xFCFC, "\012\004\245\056\036"}, {0xFCFD, "\012\004\247\100\160\036"}, {0xFCFE, "\012\004\247\056\036"}, {0xFCFF, "\012\004\111\100\160\036"}, {0xFD00, "\012\004\111\056\036"}, {0xFD01, "\012\004\115\100\160\036"}, {0xFD02, "\012\004\115\056\036"}, {0xFD03, "\012\004\170\100\160\036"}, {0xFD04, "\012\004\170\056\036"}, {0xFD05, "\012\004\355\005\100\160\036"}, {0xFD06, "\012\004\355\005\056\036"}, {0xFD07, "\012\004\350\100\160\036"}, {0xFD08, "\012\004\350\056\036"}, {0xFD09, "\012\004\247\115\036"}, {0xFD0A, "\012\004\247\111\036"}, {0xFD0B, "\012\004\247\170\036"}, {0xFD0C, "\012\004\247\047\036"}, {0xFD0D, "\012\004\247\343\036"}, {0xFD0E, "\012\004\245\343\036"}, {0xFD0F, "\012\004\355\005\343\036"}, {0xFD10, "\012\004\350\343\036"}, {0xFD11, "\012\004\355\046\100\160\032"}, {0xFD12, "\012\004\355\046\056\032"}, {0xFD13, "\012\004\355\027\100\160\032"}, {0xFD14, "\012\004\355\027\056\032"}, {0xFD15, "\012\004\355\063\100\160\032"}, {0xFD16, "\012\004\355\063\056\032"}, {0xFD17, "\012\004\245\100\160\032"}, {0xFD18, "\012\004\245\056\032"}, {0xFD19, "\012\004\247\100\160\032"}, {0xFD1A, "\012\004\247\056\032"}, {0xFD1B, "\012\004\111\100\160\032"}, {0xFD1C, "\012\004\111\056\032"}, {0xFD1D, "\012\004\115\100\160\032"}, {0xFD1E, "\012\004\115\056\032"}, {0xFD1F, "\012\004\170\100\160\032"}, {0xFD20, "\012\004\170\056\032"}, {0xFD21, "\012\004\355\005\100\160\032"}, {0xFD22, "\012\004\355\005\056\032"}, {0xFD23, "\012\004\350\100\160\032"}, {0xFD24, "\012\004\350\056\032"}, {0xFD25, "\012\004\247\115\032"}, {0xFD26, "\012\004\247\111\032"}, {0xFD27, "\012\004\247\170\032"}, {0xFD28, "\012\004\247\047\032"}, {0xFD29, "\012\004\247\343\032"}, {0xFD2A, "\012\004\245\343\032"}, {0xFD2B, "\012\004\355\005\343\032"}, {0xFD2C, "\012\004\350\343\032"}, {0xFD2D, "\012\004\247\115\055"}, {0xFD2E, "\012\004\247\111\055"}, {0xFD2F, "\012\004\247\170\055"}, {0xFD30, "\012\004\247\047\055"}, {0xFD31, "\012\004\245\231\055"}, {0xFD32, "\012\004\247\231\055"}, {0xFD33, "\012\004\355\046\047\055"}, {0xFD34, "\012\004\245\115\131"}, {0xFD35, "\012\004\245\111\131"}, {0xFD36, "\012\004\245\170\131"}, {0xFD37, "\012\004\247\115\131"}, {0xFD38, "\012\004\247\111\131"}, {0xFD39, "\012\004\247\170\131"}, {0xFD3A, "\012\004\355\046\047\131"}, {0xFD3B, "\012\004\355\366\047\131"}, {0xFD3C, "\012\004\100\356\176\032"}, {0xFD3D, "\012\004\100\356\176\036"}, {0xFD3E, "\355\123\052\361\143"}, {0xFD3F, "\355\123\053\361\143"}, {0xFD50, "\012\004\233\115\047\055"}, {0xFD51, "\012\004\233\111\115\032"}, {0xFD52, "\012\004\233\111\115\055"}, {0xFD53, "\012\004\233\111\047\055"}, {0xFD54, "\012\004\233\170\047\055"}, {0xFD55, "\012\004\233\047\115\055"}, {0xFD56, "\012\004\233\047\111\055"}, {0xFD57, "\012\004\233\047\170\055"}, {0xFD58, "\012\004\115\047\111\032"}, {0xFD59, "\012\004\115\047\111\055"}, {0xFD5A, "\012\004\111\047\056\032"}, {0xFD5B, "\012\004\111\047\100\160\032"}, {0xFD5C, "\012\004\245\111\115\055"}, {0xFD5D, "\012\004\245\115\111\055"}, {0xFD5E, "\012\004\245\115\100\160\032"}, {0xFD5F, "\012\004\245\047\111\032"}, {0xFD60, "\012\004\245\047\111\055"}, {0xFD61, "\012\004\245\047\115\055"}, {0xFD62, "\012\004\245\047\047\032"}, {0xFD63, "\012\004\245\047\047\055"}, {0xFD64, "\012\004\355\005\111\111\032"}, {0xFD65, "\012\004\355\005\111\111\055"}, {0xFD66, "\012\004\355\005\047\047\032"}, {0xFD67, "\012\004\247\111\047\032"}, {0xFD68, "\012\004\247\111\047\055"}, {0xFD69, "\012\004\247\115\056\032"}, {0xFD6A, "\012\004\247\047\170\032"}, {0xFD6B, "\012\004\247\047\170\055"}, {0xFD6C, "\012\004\247\047\047\032"}, {0xFD6D, "\012\004\247\047\047\055"}, {0xFD6E, "\012\004\350\111\100\160\032"}, {0xFD6F, "\012\004\350\170\047\032"}, {0xFD70, "\012\004\350\170\047\055"}, {0xFD71, "\012\004\355\046\047\111\032"}, {0xFD72, "\012\004\355\046\047\111\055"}, {0xFD73, "\012\004\355\046\047\047\055"}, {0xFD74, "\012\004\355\046\047\056\032"}, {0xFD75, "\012\004\355\027\115\047\032"}, {0xFD76, "\012\004\355\027\047\047\032"}, {0xFD77, "\012\004\355\027\047\047\055"}, {0xFD78, "\012\004\355\027\047\100\160\032"}, {0xFD79, "\012\004\355\063\047\047\032"}, {0xFD7A, "\012\004\355\063\047\056\032"}, {0xFD7B, "\012\004\355\063\047\100\160\032"}, {0xFD7C, "\012\004\351\170\047\032"}, {0xFD7D, "\012\004\351\170\047\055"}, {0xFD7E, "\012\004\355\037\047\111\032"}, {0xFD7F, "\012\004\355\037\047\047\032"}, {0xFD80, "\012\004\206\111\047\032"}, {0xFD81, "\012\004\206\111\056\032"}, {0xFD82, "\012\004\206\111\100\160\032"}, {0xFD83, "\012\004\206\115\115\055"}, {0xFD84, "\012\004\206\115\115\032"}, {0xFD85, "\012\004\206\170\047\032"}, {0xFD86, "\012\004\206\170\047\055"}, {0xFD87, "\012\004\206\047\111\032"}, {0xFD88, "\012\004\206\047\111\055"}, {0xFD89, "\012\004\047\111\115\055"}, {0xFD8A, "\012\004\047\111\047\055"}, {0xFD8B, "\012\004\047\111\056\032"}, {0xFD8C, "\012\004\047\115\111\055"}, {0xFD8D, "\012\004\047\115\047\055"}, {0xFD8E, "\012\004\047\170\115\055"}, {0xFD8F, "\012\004\047\170\047\055"}, {0xFD92, "\012\004\047\115\170\055"}, {0xFD93, "\012\004\231\047\115\055"}, {0xFD94, "\012\004\231\047\047\055"}, {0xFD95, "\012\004\215\111\047\055"}, {0xFD96, "\012\004\215\111\100\160\032"}, {0xFD97, "\012\004\215\115\047\032"}, {0xFD98, "\012\004\215\115\047\055"}, {0xFD99, "\012\004\215\115\100\160\032"}, {0xFD9A, "\012\004\215\047\056\032"}, {0xFD9B, "\012\004\215\047\100\160\032"}, {0xFD9C, "\012\004\056\047\047\032"}, {0xFD9D, "\012\004\056\047\047\055"}, {0xFD9E, "\012\004\324\170\056\032"}, {0xFD9F, "\012\004\233\115\056\032"}, {0xFDA0, "\012\004\233\115\100\160\032"}, {0xFDA1, "\012\004\233\170\056\032"}, {0xFDA2, "\012\004\233\170\100\160\032"}, {0xFDA3, "\012\004\233\047\056\032"}, {0xFDA4, "\012\004\233\047\100\160\032"}, {0xFDA5, "\012\004\115\047\056\032"}, {0xFDA6, "\012\004\115\111\100\160\032"}, {0xFDA7, "\012\004\115\047\100\160\032"}, {0xFDA8, "\012\004\245\170\100\160\032"}, {0xFDA9, "\012\004\355\005\111\056\032"}, {0xFDAA, "\012\004\247\111\056\032"}, {0xFDAB, "\012\004\350\111\056\032"}, {0xFDAC, "\012\004\206\115\056\032"}, {0xFDAD, "\012\004\206\047\056\032"}, {0xFDAE, "\012\004\056\111\056\032"}, {0xFDAF, "\012\004\056\115\056\032"}, {0xFDB0, "\012\004\056\047\056\032"}, {0xFDB1, "\012\004\047\047\056\032"}, {0xFDB2, "\012\004\355\037\047\056\032"}, {0xFDB3, "\012\004\215\111\056\032"}, {0xFDB4, "\012\004\355\037\047\111\055"}, {0xFDB5, "\012\004\206\111\047\055"}, {0xFDB6, "\012\004\355\027\047\056\032"}, {0xFDB7, "\012\004\254\047\056\032"}, {0xFDB8, "\012\004\215\115\111\055"}, {0xFDB9, "\012\004\047\170\056\032"}, {0xFDBA, "\012\004\206\115\047\055"}, {0xFDBB, "\012\004\254\047\047\032"}, {0xFDBC, "\012\004\206\115\047\032"}, {0xFDBD, "\012\004\215\115\111\032"}, {0xFDBE, "\012\004\115\111\056\032"}, {0xFDBF, "\012\004\111\115\056\032"}, {0xFDC0, "\012\004\047\115\056\032"}, {0xFDC1, "\012\004\351\047\056\032"}, {0xFDC2, "\012\004\324\111\056\032"}, {0xFDC3, "\012\004\254\047\047\055"}, {0xFDC4, "\012\004\355\027\115\047\055"}, {0xFDC5, "\012\004\355\005\047\047\055"}, {0xFDC6, "\012\004\245\170\056\032"}, {0xFDC7, "\012\004\215\115\056\032"}, {0xFDF0, "\012\004\361\277\036\362\060\355\246\057\360\154\360\141"}, {0xFDF1, "\012\004\373\331\036\362\060\355\246\057\360\154\360\141"}, {0xFDF2, "\012\004\362\314\036"}, {0xFDF3, "\012\004\362\307\036"}, {0xFDF4, "\012\004\371\007\036"}, {0xFDF5, "\012\004\374\214\036"}, {0xFDF6, "\012\004\374\041\036"}, {0xFDF7, "\012\004\360\045\036"}, {0xFDF8, "\012\004\362\102\036"}, {0xFDF9, "\012\004\361\277\036"}, {0xFDFA, "\012\004\374\215\360\045\362\102"}, {0xFDFB, "\012\004\365\300"}, {0xFE20, "\026\353\052\007\012"}, {0xFE21, "\026\353\053\007\012"}, {0xFE22, "\026\353\052\007\172\070"}, {0xFE23, "\026\353\053\007\172\070"}, {0xFE30, "\263\007\355\022\007\037\357\116\070\202"}, {0xFE31, "\263\007\355\022\007\355\007\356\004\202"}, {0xFE32, "\263\007\355\022\007\355\007\357\131\202"}, {0xFE33, "\263\007\355\022\007\355\007\101\202"}, {0xFE34, "\263\007\355\022\007\355\007\101\356\232\202"}, {0xFE35, "\263\007\355\022\007\355\123\052\256"}, {0xFE36, "\263\007\355\022\007\355\123\053\256"}, {0xFE37, "\263\007\355\022\360\151\052\256"}, {0xFE38, "\263\007\355\022\360\151\053\256"}, {0xFE39, "\263\007\355\022\007\122\052\202\013\355\370"}, {0xFE3A, "\263\007\355\022\007\122\221\202\013\355\370"}, {0xFE3B, "\263\007\355\022\007\122\052\356\076\207\202"}, {0xFE3C, "\263\007\355\022\007\122\221\356\076\207\202"}, {0xFE3D, "\263\007\355\022\007\122\070\052\202"}, {0xFE3E, "\263\007\355\022\007\122\070\221\202"}, {0xFE3F, "\263\007\355\022\007\122\052\202"}, {0xFE40, "\263\007\355\022\007\122\221\202"}, {0xFE41, "\263\007\355\022\007\122\202\052\013\273"}, {0xFE42, "\263\007\355\022\007\122\202\221\013\273"}, {0xFE43, "\263\007\355\022\007\122\147\202\052\013\273"}, {0xFE44, "\263\007\355\022\007\122\147\202\221\013\273"}, {0xFE49, "\355\007\102\013\357\007"}, {0xFE4A, "\355\007\102\044\037\360\110"}, {0xFE4B, "\355\007\102\356\232"}, {0xFE4C, "\355\007\102\070\356\232"}, {0xFE4D, "\355\007\101\164\357\007"}, {0xFE4E, "\355\007\101\044\037\360\110"}, {0xFE4F, "\355\007\101\356\232"}, {0xFE50, "\330\005"}, {0xFE51, "\330\076\005"}, {0xFE52, "\037\005"}, {0xFE54, "\356\104\005"}, {0xFE55, "\355\103\005"}, {0xFE56, "\037\355\313\005"}, {0xFE57, "\037\355\312\005"}, {0xFE58, "\355\126\355\315\356\004\005"}, {0xFE59, "\355\123\052\005"}, {0xFE5A, "\355\123\053\005"}, {0xFE5B, "\356\051\052\005"}, {0xFE5C, "\356\051\053\005"}, {0xFE5D, "\122\052\013\355\370\005"}, {0xFE5E, "\122\221\013\355\370\005"}, {0xFE5F, "\357\112\005"}, {0xFE60, "\356\377\005"}, {0xFE61, "\355\115\005"}, {0xFE62, "\057\214\005"}, {0xFE63, "\355\007\005"}, {0xFE64, "\057\320\044\005"}, {0xFE65, "\057\344\044\005"}, {0xFE66, "\057\173\044\005"}, {0xFE68, "\246\355\044\356\073\005"}, {0xFE69, "\022\357\141\005"}, {0xFE6A, "\022\355\057\355\245\005"}, {0xFE6B, "\357\065\005"}, {0xFE70, "\356\176\004\036"}, {0xFE71, "\361\355\356\176\013\040\004"}, {0xFE72, "\357\122\004\036"}, {0xFE74, "\357\216\036\004"}, {0xFE76, "\356\175\036\004"}, {0xFE77, "\356\175\131\004"}, {0xFE78, "\356\157\036\004"}, {0xFE79, "\356\157\131\004"}, {0xFE7A, "\356\215\036\004"}, {0xFE7B, "\356\215\131\004"}, {0xFE7C, "\355\154\036\004"}, {0xFE7D, "\355\154\131\004"}, {0xFE7E, "\357\036\036\004"}, {0xFE7F, "\357\036\131\004"}, {0xFE80, "\001\004\156\036"}, {0xFE81, "\001\004\100\356\022\013\040\036"}, {0xFE82, "\001\004\100\356\022\013\040\032"}, {0xFE83, "\001\004\100\156\013\040\036"}, {0xFE84, "\001\004\032"}, {0xFE85, "\001\004\355\051\156\013\040\036"}, {0xFE86, "\001\004\355\051\156\013\040\032"}, {0xFE87, "\001\004\100\156\043\036"}, {0xFE88, "\001\004\100\156\043\032"}, {0xFE89, "\001\004\056\156\013\040\036"}, {0xFE8A, "\001\004\056\156\013\040\032"}, {0xFE8B, "\001\004\056\156\013\040\055"}, {0xFE8C, "\001\004\056\156\013\040\131"}, {0xFE8D, "\001\004\100\036"}, {0xFE8E, "\001\004\100\032"}, {0xFE8F, "\001\004\324\036"}, {0xFE90, "\001\004\324\032"}, {0xFE91, "\001\004\324\055"}, {0xFE92, "\001\004\324\131"}, {0xFE93, "\001\004\233\356\354\036"}, {0xFE94, "\001\004\233\356\354\032"}, {0xFE95, "\001\004\233\036"}, {0xFE96, "\001\004\233\032"}, {0xFE97, "\001\004\233\055"}, {0xFE98, "\001\004\233\131"}, {0xFE99, "\001\004\355\060\036"}, {0xFE9A, "\001\004\355\060\032"}, {0xFE9B, "\001\004\355\060\055"}, {0xFE9C, "\001\004\355\060\131"}, {0xFE9D, "\001\004\115\036"}, {0xFE9E, "\001\004\115\032"}, {0xFE9F, "\001\004\115\055"}, {0xFEA0, "\001\004\115\131"}, {0xFEA1, "\001\004\111\036"}, {0xFEA2, "\001\004\111\032"}, {0xFEA3, "\001\004\111\055"}, {0xFEA4, "\001\004\111\131"}, {0xFEA5, "\001\004\170\036"}, {0xFEA6, "\001\004\170\032"}, {0xFEA7, "\001\004\170\055"}, {0xFEA8, "\001\004\170\131"}, {0xFEA9, "\001\004\355\316\036"}, {0xFEAA, "\001\004\355\316\032"}, {0xFEAB, "\001\004\356\321\036"}, {0xFEAC, "\001\004\356\321\032"}, {0xFEAD, "\001\004\343\036"}, {0xFEAE, "\001\004\343\032"}, {0xFEAF, "\001\004\360\017\036"}, {0xFEB0, "\001\004\360\017\032"}, {0xFEB1, "\001\004\245\036"}, {0xFEB2, "\001\004\245\032"}, {0xFEB3, "\001\004\245\055"}, {0xFEB4, "\001\004\245\131"}, {0xFEB5, "\001\004\247\036"}, {0xFEB6, "\001\004\247\032"}, {0xFEB7, "\001\004\247\055"}, {0xFEB8, "\001\004\247\131"}, {0xFEB9, "\001\004\355\005\036"}, {0xFEBA, "\001\004\355\005\032"}, {0xFEBB, "\001\004\355\005\055"}, {0xFEBC, "\001\004\355\005\131"}, {0xFEBD, "\001\004\350\036"}, {0xFEBE, "\001\004\350\032"}, {0xFEBF, "\001\004\350\055"}, {0xFEC0, "\001\004\350\131"}, {0xFEC1, "\001\004\355\046\036"}, {0xFEC2, "\001\004\355\046\032"}, {0xFEC3, "\001\004\355\046\055"}, {0xFEC4, "\001\004\355\046\131"}, {0xFEC5, "\001\004\355\366\036"}, {0xFEC6, "\001\004\355\366\032"}, {0xFEC7, "\001\004\355\366\055"}, {0xFEC8, "\001\004\355\366\131"}, {0xFEC9, "\001\004\355\027\036"}, {0xFECA, "\001\004\355\027\032"}, {0xFECB, "\001\004\355\027\055"}, {0xFECC, "\001\004\355\027\131"}, {0xFECD, "\001\004\355\063\036"}, {0xFECE, "\001\004\355\063\032"}, {0xFECF, "\001\004\355\063\055"}, {0xFED0, "\001\004\355\063\131"}, {0xFED1, "\001\004\351\036"}, {0xFED2, "\001\004\351\032"}, {0xFED3, "\001\004\351\055"}, {0xFED4, "\001\004\351\131"}, {0xFED5, "\001\004\355\037\036"}, {0xFED6, "\001\004\355\037\032"}, {0xFED7, "\001\004\355\037\055"}, {0xFED8, "\001\004\355\037\131"}, {0xFED9, "\001\004\254\036"}, {0xFEDA, "\001\004\254\032"}, {0xFEDB, "\001\004\254\055"}, {0xFEDC, "\001\004\254\131"}, {0xFEDD, "\001\004\206\036"}, {0xFEDE, "\001\004\206\032"}, {0xFEDF, "\001\004\206\055"}, {0xFEE0, "\001\004\206\131"}, {0xFEE1, "\001\004\047\036"}, {0xFEE2, "\001\004\047\032"}, {0xFEE3, "\001\004\047\055"}, {0xFEE4, "\001\004\047\131"}, {0xFEE5, "\001\004\215\036"}, {0xFEE6, "\001\004\215\032"}, {0xFEE7, "\001\004\215\055"}, {0xFEE8, "\001\004\215\131"}, {0xFEE9, "\001\004\231\036"}, {0xFEEA, "\001\004\231\032"}, {0xFEEB, "\001\004\231\055"}, {0xFEEC, "\001\004\231\131"}, {0xFEED, "\001\004\355\051\036"}, {0xFEEE, "\001\004\355\051\032"}, {0xFEEF, "\001\004\100\160\036"}, {0xFEF0, "\001\004\100\160\032"}, {0xFEF1, "\001\004\056\036"}, {0xFEF2, "\001\004\056\032"}, {0xFEF3, "\001\004\056\055"}, {0xFEF4, "\001\004\056\131"}, {0xFEF5, "\012\004\206\100\356\022\013\040\036"}, {0xFEF6, "\012\004\206\100\356\022\013\040\032"}, {0xFEF7, "\012\004\206\100\156\013\040\036"}, {0xFEF8, "\012\004\206\100\156\013\040\032"}, {0xFEF9, "\012\004\206\100\156\043\036"}, {0xFEFA, "\012\004\206\100\156\043\032"}, {0xFEFB, "\012\004\206\100\036"}, {0xFEFC, "\012\004\206\100\032"}, {0xFEFF, "\355\073\357\201\270\105"}, {0xFF01, "\037\355\312\073\105"}, {0xFF02, "\355\135\073\105"}, {0xFF03, "\357\112\073\105"}, {0xFF04, "\022\357\141\073\105"}, {0xFF05, "\022\355\057\355\245\073\105"}, {0xFF06, "\356\377\073\105"}, {0xFF07, "\355\306\073\105"}, {0xFF08, "\355\123\052\073\105"}, {0xFF09, "\355\123\053\073\105"}, {0xFF0A, "\355\115\073\105"}, {0xFF0B, "\057\214\073\105"}, {0xFF0C, "\330\073\105"}, {0xFF0D, "\355\007\073\105"}, {0xFF0E, "\037\073\105"}, {0xFF0F, "\246\355\044\073\105"}, {0xFF10, "\024\331\073\105"}, {0xFF11, "\024\110\073\105"}, {0xFF12, "\024\127\073\105"}, {0xFF13, "\024\136\073\105"}, {0xFF14, "\024\220\073\105"}, {0xFF15, "\024\230\073\105"}, {0xFF16, "\024\255\073\105"}, {0xFF17, "\024\252\073\105"}, {0xFF18, "\024\226\073\105"}, {0xFF19, "\024\257\073\105"}, {0xFF1A, "\355\103\360\134\073\105"}, {0xFF1B, "\356\104\073\105"}, {0xFF1C, "\057\320\044\073\105"}, {0xFF1D, "\057\173\044\073\105"}, {0xFF1E, "\057\344\044\073\105"}, {0xFF1F, "\037\355\313\073\105"}, {0xFF20, "\357\065\073\105"}, {0xFF21, "\001\010\006\063\073\105"}, {0xFF22, "\001\010\006\334\073\105"}, {0xFF23, "\001\010\006\313\073\105"}, {0xFF24, "\001\010\006\275\073\105"}, {0xFF25, "\001\010\006\130\073\105"}, {0xFF26, "\001\010\006\355\062\073\105"}, {0xFF27, "\001\010\006\266\073\105"}, {0xFF28, "\001\010\006\237\073\105"}, {0xFF29, "\001\010\006\103\073\105"}, {0xFF2A, "\001\010\006\355\053\073\105"}, {0xFF2B, "\001\010\006\352\073\105"}, {0xFF2C, "\001\010\006\211\073\105"}, {0xFF2D, "\001\010\006\276\073\105"}, {0xFF2E, "\001\010\006\241\073\105"}, {0xFF2F, "\001\010\006\064\073\105"}, {0xFF30, "\001\010\006\355\021\073\105"}, {0xFF31, "\001\010\006\355\173\073\105"}, {0xFF32, "\001\010\006\167\073\105"}, {0xFF33, "\001\010\006\223\073\105"}, {0xFF34, "\001\010\006\261\073\105"}, {0xFF35, "\001\010\006\132\073\105"}, {0xFF36, "\001\010\006\355\025\073\105"}, {0xFF37, "\001\010\006\347\073\105"}, {0xFF38, "\001\010\006\355\026\073\105"}, {0xFF39, "\001\010\006\265\073\105"}, {0xFF3A, "\001\010\006\271\073\105"}, {0xFF3B, "\122\052\073\105"}, {0xFF3C, "\246\355\044\356\073\073\105"}, {0xFF3D, "\122\221\073\105"}, {0xFF3E, "\021\072\073\105"}, {0xFF3F, "\355\007\101\073\105"}, {0xFF40, "\021\067\073\105"}, {0xFF41, "\001\005\006\063\073\105"}, {0xFF42, "\001\005\006\334\073\105"}, {0xFF43, "\001\005\006\313\073\105"}, {0xFF44, "\001\005\006\275\073\105"}, {0xFF45, "\001\005\006\130\073\105"}, {0xFF46, "\001\005\006\355\062\073\105"}, {0xFF47, "\001\005\006\266\073\105"}, {0xFF48, "\001\005\006\237\073\105"}, {0xFF49, "\001\005\006\103\073\105"}, {0xFF4A, "\001\005\006\355\053\073\105"}, {0xFF4B, "\001\005\006\352\073\105"}, {0xFF4C, "\001\005\006\211\073\105"}, {0xFF4D, "\001\005\006\276\073\105"}, {0xFF4E, "\001\005\006\241\073\105"}, {0xFF4F, "\001\005\006\064\073\105"}, {0xFF50, "\001\005\006\355\021\073\105"}, {0xFF51, "\001\005\006\355\173\073\105"}, {0xFF52, "\001\005\006\167\073\105"}, {0xFF53, "\001\005\006\223\073\105"}, {0xFF54, "\001\005\006\261\073\105"}, {0xFF55, "\001\005\006\132\073\105"}, {0xFF56, "\001\005\006\355\025\073\105"}, {0xFF57, "\001\005\006\347\073\105"}, {0xFF58, "\001\005\006\355\026\073\105"}, {0xFF59, "\001\005\006\265\073\105"}, {0xFF5A, "\001\005\006\271\073\105"}, {0xFF5B, "\356\051\052\073\105"}, {0xFF5C, "\243\256\073\105"}, {0xFF5D, "\356\051\053\073\105"}, {0xFF5E, "\172\073\105"}, {0xFF61, "\037\076\071"}, {0xFF62, "\122\052\013\273\071"}, {0xFF63, "\122\221\013\273\071"}, {0xFF64, "\330\076\071"}, {0xFF65, "\037\355\137\045\071"}, {0xFF66, "\002\045\355\150\071"}, {0xFF67, "\002\045\175\063\071"}, {0xFF68, "\002\045\175\103\071"}, {0xFF69, "\002\045\175\132\071"}, {0xFF6A, "\002\045\175\130\071"}, {0xFF6B, "\002\045\175\064\071"}, {0xFF6C, "\002\045\175\305\071"}, {0xFF6D, "\002\045\175\355\364\071"}, {0xFF6E, "\002\045\175\355\040\071"}, {0xFF6F, "\002\045\175\355\300\071"}, {0xFF70, "\204\356\075\007\355\175\357\013\071"}, {0xFF71, "\002\045\063\071"}, {0xFF72, "\002\045\103\071"}, {0xFF73, "\002\045\132\071"}, {0xFF74, "\002\045\130\071"}, {0xFF75, "\002\045\064\071"}, {0xFF76, "\002\045\240\071"}, {0xFF77, "\002\045\355\332\071"}, {0xFF78, "\002\045\356\021\071"}, {0xFF79, "\002\045\355\331\071"}, {0xFF7A, "\002\045\355\167\071"}, {0xFF7B, "\002\045\355\004\071"}, {0xFF7C, "\002\045\355\275\071"}, {0xFF7D, "\002\045\356\253\071"}, {0xFF7E, "\002\045\356\042\071"}, {0xFF7F, "\002\045\355\070\071"}, {0xFF80, "\002\045\311\071"}, {0xFF81, "\002\045\355\217\071"}, {0xFF82, "\002\045\355\300\071"}, {0xFF83, "\002\045\356\125\071"}, {0xFF84, "\002\045\355\176\071"}, {0xFF85, "\002\045\354\071"}, {0xFF86, "\002\045\244\071"}, {0xFF87, "\002\045\356\025\071"}, {0xFF88, "\002\045\355\140\071"}, {0xFF89, "\002\045\355\113\071"}, {0xFF8A, "\002\045\314\071"}, {0xFF8B, "\002\045\355\255\071"}, {0xFF8C, "\002\045\356\336\071"}, {0xFF8D, "\002\045\356\072\071"}, {0xFF8E, "\002\045\355\107\071"}, {0xFF8F, "\002\045\277\071"}, {0xFF90, "\002\045\355\230\071"}, {0xFF91, "\002\045\355\111\071"}, {0xFF92, "\002\045\355\334\071"}, {0xFF93, "\002\045\355\136\071"}, {0xFF94, "\002\045\305\071"}, {0xFF95, "\002\045\355\364\071"}, {0xFF96, "\002\045\355\040\071"}, {0xFF97, "\002\045\322\071"}, {0xFF98, "\002\045\355\347\071"}, {0xFF99, "\002\045\356\037\071"}, {0xFF9A, "\002\045\356\035\071"}, {0xFF9B, "\002\045\355\174\071"}, {0xFF9C, "\002\045\355\050\071"}, {0xFF9D, "\002\045\241\071"}, {0xFF9E, "\204\045\007\355\175\356\266\071"}, {0xFF9F, "\204\045\007\355\175\357\324\071"}, {0xFFA0, "\356\145\014\071"}, {0xFFA1, "\001\014\355\333\071"}, {0xFFA2, "\001\014\357\040\071"}, {0xFFA3, "\001\014\357\221\071"}, {0xFFA4, "\001\014\355\337\071"}, {0xFFA5, "\001\014\357\246\071"}, {0xFFA6, "\001\014\357\245\071"}, {0xFFA7, "\001\014\355\360\071"}, {0xFFA8, "\001\014\357\340\071"}, {0xFFA9, "\001\014\355\350\071"}, {0xFFAA, "\001\014\357\307\071"}, {0xFFAB, "\001\014\357\310\071"}, {0xFFAC, "\001\014\357\312\071"}, {0xFFAD, "\001\014\357\313\071"}, {0xFFAE, "\001\014\357\314\071"}, {0xFFAF, "\001\014\357\311\071"}, {0xFFB0, "\001\014\357\023\071"}, {0xFFB1, "\001\014\355\335\071"}, {0xFFB2, "\001\014\355\345\071"}, {0xFFB3, "\001\014\357\336\071"}, {0xFFB4, "\001\014\357\002\071"}, {0xFFB5, "\001\014\355\351\071"}, {0xFFB6, "\001\014\357\041\071"}, {0xFFB7, "\001\014\355\327\071"}, {0xFFB8, "\001\014\355\276\071"}, {0xFFB9, "\001\014\357\337\071"}, {0xFFBA, "\001\014\355\356\071"}, {0xFFBB, "\001\014\355\330\071"}, {0xFFBC, "\001\014\355\355\071"}, {0xFFBD, "\001\014\355\344\071"}, {0xFFBE, "\001\014\355\325\071"}, {0xFFC2, "\001\014\063\071"}, {0xFFC3, "\001\014\356\136\071"}, {0xFFC4, "\001\014\305\071"}, {0xFFC5, "\001\014\360\016\071"}, {0xFFC6, "\001\014\064\071"}, {0xFFC7, "\001\014\217\071"}, {0xFFCA, "\001\014\355\040\071"}, {0xFFCB, "\001\014\355\303\071"}, {0xFFCC, "\001\014\306\071"}, {0xFFCD, "\001\014\355\050\071"}, {0xFFCE, "\001\014\360\010\071"}, {0xFFCF, "\001\014\356\011\071"}, {0xFFD2, "\001\014\356\273\071"}, {0xFFD3, "\001\014\113\071"}, {0xFFD4, "\001\014\355\150\071"}, {0xFFD5, "\001\014\356\271\071"}, {0xFFD6, "\001\014\355\362\071"}, {0xFFD7, "\001\014\355\151\071"}, {0xFFDA, "\001\014\360\033\071"}, {0xFFDB, "\001\014\360\034\071"}, {0xFFDC, "\001\014\103\071"}, {0xFFE0, "\022\357\074\073\105"}, {0xFFE1, "\022\361\032\073\105"}, {0xFFE2, "\057\356\364\073\105"}, {0xFFE3, "\174\073\105"}, {0xFFE4, "\243\360\100\073\105"}, {0xFFE5, "\022\362\111\073\105"}, {0xFFE6, "\022\362\103\073\105"}, {0xFFE8, "\243\256\357\234\071"}, {0xFFE9, "\061\015\033\052\071"}, {0xFFEA, "\061\015\050\102\071"}, {0xFFEB, "\061\015\033\053\071"}, {0xFFEC, "\061\015\050\101\071"}, {0xFFED, "\035\207\071"}, {0xFFEE, "\272\147\071"}, {0xFFF9, "\362\324\355\041\357\203"}, {0xFFFA, "\355\045\355\041\357\203"}, {0xFFFB, "\375\162\355\041\357\203"}, {0xFFFC, "\335\007\357\022\365\162"}, {0xFFFD, "\335\007\357\022"}, }; recode-3.6/src/hash.h0100644000000000000000000001117407142144413013211 0ustar rootroot/* hash - hashing table processing. Copyright (C) 1998, 1999 Free Software Foundation, Inc. Written by Jim Meyering , 1998. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* A generic hash table package. */ /* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use obstacks instead of malloc, and recompile `hash.c' with same setting. */ #ifndef PARAMS # if PROTOTYPES || __STDC__ # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif #endif typedef unsigned (*Hash_hasher) PARAMS ((const void *, unsigned)); typedef bool (*Hash_comparator) PARAMS ((const void *, const void *)); typedef void (*Hash_data_freer) PARAMS ((void *)); typedef bool (*Hash_processor) PARAMS ((void *, void *)); struct hash_entry { void *data; struct hash_entry *next; }; struct hash_tuning { /* This structure is mainly used for `hash_initialize', see the block documentation of `hash_reset_tuning' for more complete comments. */ float shrink_threshold; /* ratio of used buckets to trigger a shrink */ float shrink_factor; /* ratio of new smaller size to original size */ float growth_threshold; /* ratio of used buckets to trigger a growth */ float growth_factor; /* ratio of new bigger size to original size */ bool is_n_buckets; /* if CANDIDATE really means table size */ }; typedef struct hash_tuning Hash_tuning; struct hash_table { /* The array of buckets starts at BUCKET and extends to BUCKET_LIMIT-1, for a possibility of N_BUCKETS. Among those, N_BUCKETS_USED buckets are not empty, there are N_ENTRIES active entries in the table. */ struct hash_entry *bucket; struct hash_entry *bucket_limit; unsigned n_buckets; unsigned n_buckets_used; unsigned n_entries; /* Tuning arguments, kept in a physicaly separate structure. */ const Hash_tuning *tuning; /* Three functions are given to `hash_initialize', see the documentation block for this function. In a word, HASHER randomizes a user entry into a number up from 0 up to some maximum minus 1; COMPARATOR returns true if two user entries compare equally; and DATA_FREER is the cleanup function for a user entry. */ Hash_hasher hasher; Hash_comparator comparator; Hash_data_freer data_freer; /* A linked list of freed struct hash_entry structs. */ struct hash_entry *free_entry_list; #if USE_OBSTACK /* Whenever obstacks are used, it is possible to allocate all overflowed entries into a single stack, so they all can be freed in a single operation. It is not clear if the speedup is worth the trouble. */ struct obstack entry_stack; #endif }; typedef struct hash_table Hash_table; /* Information and lookup. */ unsigned hash_get_n_buckets PARAMS ((const Hash_table *)); unsigned hash_get_n_buckets_used PARAMS ((const Hash_table *)); unsigned hash_get_n_entries PARAMS ((const Hash_table *)); unsigned hash_get_max_bucket_length PARAMS ((const Hash_table *)); bool hash_table_ok PARAMS ((const Hash_table *)); void hash_print_statistics PARAMS ((const Hash_table *, FILE *)); void *hash_lookup PARAMS ((const Hash_table *, const void *)); /* Walking. */ void *hash_get_first PARAMS ((const Hash_table *)); void *hash_get_next PARAMS ((const Hash_table *, const void *)); unsigned hash_get_entries PARAMS ((const Hash_table *, void **, unsigned)); unsigned hash_do_for_each PARAMS ((const Hash_table *, Hash_processor, void *)); /* Allocation and clean-up. */ unsigned hash_string PARAMS ((const char *, unsigned)); void hash_reset_tuning PARAMS ((Hash_tuning *)); Hash_table *hash_initialize PARAMS ((unsigned, const Hash_tuning *, Hash_hasher, Hash_comparator, Hash_data_freer)); void hash_clear PARAMS ((Hash_table *)); void hash_free PARAMS ((Hash_table *)); /* Insertion and deletion. */ bool hash_rehash PARAMS ((Hash_table *, unsigned)); void *hash_insert PARAMS ((Hash_table *, const void *)); void *hash_delete PARAMS ((Hash_table *, const void *)); recode-3.6/src/inisteps.h0100644000000000000000000000273707126353045014136 0ustar rootroot if (!module_african (outer)) return false; if (!module_afrtran (outer)) return false; if (!module_applemac (outer)) return false; if (!module_atarist (outer)) return false; if (!module_bangbang (outer)) return false; if (!module_cdcnos (outer)) return false; if (!module_ebcdic (outer)) return false; if (!module_ibmpc (outer)) return false; if (!module_iconqnx (outer)) return false; if (!module_latin1_ascii (outer)) return false; if (!module_mule (outer)) return false; if (!module_strips (outer)) return false; if (!module_testdump (outer)) return false; if (!module_ucs (outer)) return false; if (!module_utf16 (outer)) return false; if (!module_utf7 (outer)) return false; if (!module_utf8 (outer)) return false; if (!module_varia (outer)) return false; if (!module_vietnamese (outer)) return false; if (!module_flat (outer)) return false; if (!module_html (outer)) return false; if (!module_latin1_latex (outer)) return false; if (!module_latin1_texte (outer)) return false; if (!module_rfc1345 (outer)) return false; if (!module_texinfo (outer)) return false; if (!module_base64 (outer)) return false; if (!module_dump (outer)) return false; if (!module_endline (outer)) return false; if (!module_permutations (outer)) return false; if (!module_quoted_printable (outer)) return false; if (!module_ascii_latin1 (outer)) return false; if (!module_latex_latin1 (outer)) return false; if (!module_texte_latin1 (outer)) return false; recode-3.6/src/libiconv.h0100644000000000000000000001607107213512767014106 0ustar rootroot/* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This is derived from Bruno Haible's `libiconv' package. */ static const char *iconv_name_list[434] = { "US-ASCII", "ASCII", "ISO646-US", "ISO_646.IRV:1991", "ISO-IR-6", "ANSI_X3.4-1968", "CP367", "IBM367", "US", "csASCII", "ISO646.1991-IRV", NULL, /* General multi-byte encodings. */ "UTF-8", "UTF8", NULL, "UCS-2", "ISO-10646-UCS-2", "csUnicode", NULL, "UCS-2BE", "UNICODEBIG", "UNICODE-1-1", "csUnicode11", NULL, "UCS-2LE", "UNICODELITTLE", NULL, "UCS-4", "ISO-10646-UCS-4", "csUCS4", NULL, "UCS-4BE", NULL, "UCS-4LE", NULL, "UTF-16", NULL, "UTF-16BE", NULL, "UTF-16LE", NULL, "UTF-7", "UNICODE-1-1-UTF-7", "csUnicode11UTF7", NULL, "UCS-2-INTERNAL", NULL, "UCS-2-SWAPPED", NULL, "UCS-4-INTERNAL", NULL, "UCS-4-SWAPPED", NULL, "JAVA", NULL, /* Standard 8-bit encodings. */ "ISO-8859-1", "ISO_8859-1", "ISO_8859-1:1987", "ISO-IR-100", "CP819", "IBM819", "LATIN1", "L1", "csISOLatin1", "ISO8859-1", "ISO8859_1", NULL, "ISO-8859-2", "ISO_8859-2", "ISO_8859-2:1987", "ISO-IR-101", "LATIN2", "L2", "csISOLatin2", "ISO8859-2", "ISO8859_2", NULL, "ISO-8859-3", "ISO_8859-3", "ISO_8859-3:1988", "ISO-IR-109", "LATIN3", "L3", "csISOLatin3", "ISO8859-3", "ISO8859_3", NULL, "ISO-8859-4", "ISO_8859-4", "ISO_8859-4:1988", "ISO-IR-110", "LATIN4", "L4", "csISOLatin4", "ISO8859-4", "ISO8859_4", NULL, "ISO-8859-5", "ISO_8859-5", "ISO_8859-5:1988", "ISO-IR-144", "CYRILLIC", "csISOLatinCyrillic", "ISO8859-5", "ISO8859_5", NULL, "ISO-8859-6", "ISO_8859-6", "ISO_8859-6:1987", "ISO-IR-127", "ECMA-114", "ASMO-708", "ARABIC", "csISOLatinArabic", "ISO8859-6", "ISO8859_6", NULL, "ISO-8859-7", "ISO_8859-7", "ISO_8859-7:1987", "ISO-IR-126", "ECMA-118", "ELOT_928", "GREEK8", "GREEK", "csISOLatinGreek", "ISO8859-7", "ISO8859_7", NULL, "ISO-8859-8", "ISO_8859-8", "ISO_8859-8:1988", "ISO-IR-138", "HEBREW", "csISOLatinHebrew", "ISO8859-8", "ISO8859_8", NULL, "ISO-8859-9", "ISO_8859-9", "ISO_8859-9:1989", "ISO-IR-148", "LATIN5", "L5", "csISOLatin5", "ISO8859-9", "ISO8859_9", NULL, "ISO-8859-10", "ISO_8859-10", "ISO_8859-10:1992", "ISO-IR-157", "LATIN6", "L6", "csISOLatin6", "ISO8859-10", NULL, "ISO-8859-13", "ISO_8859-13", "ISO-IR-179", "LATIN7", "L7", NULL, "ISO-8859-14", "ISO_8859-14", "ISO_8859-14:1998", "ISO-IR-199", "LATIN8", "L8", NULL, "ISO-8859-15", "ISO_8859-15", "ISO_8859-15:1998", "ISO-IR-203", NULL, "ISO-8859-16", "ISO_8859-16", "ISO_8859-16:2000", "ISO-IR-226", NULL, "KOI8-R", "csKOI8R", NULL, "KOI8-U", NULL, "KOI8-RU", NULL, /* Windows 8-bit encodings. */ "CP1250", "WINDOWS-1250", "MS-EE", NULL, "CP1251", "WINDOWS-1251", "MS-CYRL", NULL, "CP1252", "WINDOWS-1252", "MS-ANSI", NULL, "CP1253", "WINDOWS-1253", "MS-GREEK", NULL, "CP1254", "WINDOWS-1254", "MS-TURK", NULL, "CP1255", "WINDOWS-1255", "MS-HEBR", NULL, "CP1256", "WINDOWS-1256", "MS-ARAB", NULL, "CP1257", "WINDOWS-1257", "WINBALTRIM", NULL, "CP1258", "WINDOWS-1258", NULL, /* DOS 8-bit encodings. */ "CP850", "IBM850", "850", "csPC850Multilingual", NULL, "CP866", "IBM866", "866", "csIBM866", NULL, /* Macintosh 8-bit encodings. */ "MacRoman", "Macintosh", "MAC", "csMacintosh", NULL, "MacCentralEurope", NULL, "MacIceland", NULL, "MacCroatian", NULL, "MacRomania", NULL, "MacCyrillic", NULL, "MacUkraine", NULL, "MacGreek", NULL, "MacTurkish", NULL, "MacHebrew", NULL, "MacArabic", NULL, "MacThai", NULL, /* Other platform specific 8-bit encodings. */ "HP-ROMAN8", "ROMAN8", "R8", "csHPRoman8", NULL, "NEXTSTEP", NULL, /* Regional 8-bit encodings used for a single language. */ "ARMSCII-8", NULL, "Georgian-Academy", NULL, "Georgian-PS", NULL, "MuleLao-1", NULL, "CP1133", "IBM-CP1133", NULL, "TIS-620", "TIS620", "TIS620-0", "TIS620.2529-1", "TIS620.2533-0", "TIS620.2533-1", "ISO-IR-166", NULL, "CP874", "WINDOWS-874", NULL, "VISCII", "VISCII1.1-1", "csVISCII", NULL, "TCVN", "TCVN-5712", "TCVN5712-1", "TCVN5712-1:1993", NULL, /* CJK character sets (not documented). */ "JIS_C6220-1969-RO", "ISO646-JP", "ISO-IR-14", "JP", "csISO14JISC6220ro", NULL, "JIS_X0201", "JISX0201-1976", "X0201", "csHalfWidthKatakana", "JISX0201.1976-0", "JIS0201", NULL, "JIS_X0208", "JIS_X0208-1983", "JIS_X0208-1990", "JIS0208", "X0208", "ISO-IR-87", "csISO87JISX0208", "JISX0208.1983-0", "JISX0208.1990-0", "JIS0208", NULL, "JIS_X0212", "JIS_X0212.1990-0", "JIS_X0212-1990", "X0212", "ISO-IR-159", "csISO159JISX02121990", "JISX0212.1990-0", "JIS0212", NULL, "GB_1988-80", "ISO646-CN", "ISO-IR-57", "CN", "csISO57GB1988", NULL, "GB_2312-80", "ISO-IR-58", "csISO58GB231280", "CHINESE", "GB2312.1980-0", NULL, "ISO-IR-165", "CN-GB-ISOIR165", NULL, "KSC_5601", "KS_C_5601-1987", "KS_C_5601-1989", "ISO-IR-149", "csKSC56011987", "KOREAN", "KSC5601.1987-0", "KSX1001:1992", NULL, /* CJK encodings. */ "EUC-JP", "EUCJP", "Extended_UNIX_Code_Packed_Format_for_Japanese", "csEUCPkdFmtJapanese", "EUC_JP", NULL, "SJIS", "SHIFT_JIS", "SHIFT-JIS", "MS_KANJI", "csShiftJIS", NULL, "CP932", NULL, "ISO-2022-JP", "csISO2022JP", "ISO2022JP", NULL, "ISO-2022-JP-1", NULL, "ISO-2022-JP-2", "csISO2022JP2", NULL, "EUC-CN", "EUCCN", "GB2312", "CN-GB", "csGB2312", "EUC_CN", NULL, "GBK", "CP936", NULL, "GB18030", NULL, "ISO-2022-CN", "csISO2022CN", "ISO2022CN", NULL, "ISO-2022-CN-EXT", NULL, "HZ", "HZ-GB-2312", NULL, "EUC-TW", "EUCTW", "csEUCTW", "EUC_TW", NULL, "BIG5", "BIG-5", "BIG-FIVE", "BIGFIVE", "CN-BIG5", "csBig5", NULL, "CP950", NULL, "BIG5HKSCS", NULL, "EUC-KR", "EUCKR", "csEUCKR", "EUC_KR", NULL, "CP949", "UHC", NULL, "JOHAB", "CP1361", NULL, "ISO-2022-KR", "csISO2022KR", "ISO2022KR", NULL, "CHAR", NULL, "WCHAR_T", NULL, NULL }; recode-3.6/src/quotearg.h0100644000000000000000000001066207142144413014116 0ustar rootroot/* quotearg.h - quote arguments for output Copyright (C) 1998, 1999 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Written by Paul Eggert */ /* Basic quoting styles. */ enum quoting_style { literal_quoting_style, /* --quoting-style=literal */ shell_quoting_style, /* --quoting-style=shell */ shell_always_quoting_style, /* --quoting-style=shell-always */ c_quoting_style, /* --quoting-style=c */ escape_quoting_style, /* --quoting-style=escape */ locale_quoting_style /* --quoting-style=locale */ }; /* For now, --quoting-style=literal is the default, but this may change. */ #ifndef DEFAULT_QUOTING_STYLE # define DEFAULT_QUOTING_STYLE literal_quoting_style #endif /* Names of quoting styles and their corresponding values. */ extern char const *const quoting_style_args[]; extern enum quoting_style const quoting_style_vals[]; struct quoting_options; #ifndef PARAMS # if defined PROTOTYPES || defined __STDC__ # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif #endif /* The functions listed below set and use a hidden variable that contains the default quoting style options. */ /* Allocate a new set of quoting options, with contents initially identical to O if O is not null, or to the default if O is null. It is the caller's responsibility to free the result. */ struct quoting_options *clone_quoting_options PARAMS ((struct quoting_options *o)); /* Get the value of O's quoting style. If O is null, use the default. */ enum quoting_style get_quoting_style PARAMS ((struct quoting_options *o)); /* In O (or in the default if O is null), set the value of the quoting style to S. */ void set_quoting_style PARAMS ((struct quoting_options *o, enum quoting_style s)); /* In O (or in the default if O is null), set the value of the quoting options for character C to I. Return the old value. Currently, the only values defined for I are 0 (the default) and 1 (which means to quote the character even if it would not otherwise be quoted). */ int set_char_quoting PARAMS ((struct quoting_options *o, char c, int i)); /* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of argument ARG (of size ARGSIZE), using O to control quoting. If O is null, use the default. Terminate the output with a null character, and return the written size of the output, not counting the terminating null. If BUFFERSIZE is too small to store the output string, return the value that would have been returned had BUFFERSIZE been large enough. If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */ size_t quotearg_buffer PARAMS ((char *buffer, size_t buffersize, char const *arg, size_t argsize, struct quoting_options const *o)); /* Use storage slot N to return a quoted version of the string ARG. Use the default quoting options. The returned value points to static storage that can be reused by the next call to this function with the same value of N. N must be nonnegative. */ char *quotearg_n PARAMS ((unsigned int n, char const *arg)); /* Equivalent to quotearg_n (0, ARG). */ char *quotearg PARAMS ((char const *arg)); /* Use style S and storage slot N to return a quoted version of the string ARG. This is like quotearg_n (N, ARG), except that it uses S with no other options to specify the quoting method. */ char *quotearg_n_style PARAMS ((unsigned int n, enum quoting_style s, char const *arg)); /* Equivalent to quotearg_n_style (0, S, ARG). */ char *quotearg_style PARAMS ((enum quoting_style s, char const *arg)); /* Like quotearg (ARG), except also quote any instances of CH. */ char *quotearg_char PARAMS ((char const *arg, char ch)); /* Equivalent to quotearg_char (ARG, ':'). */ char *quotearg_colon PARAMS ((char const *arg)); recode-3.6/src/rfc1345.h0100644000000000000000000023341107126661720013364 0ustar rootroot/* DO NOT MODIFY THIS FILE! It was generated by `recode/doc/tables.py'. */ /* Conversion of files between different charsets and surfaces. Copyright © 1999 Free Software Foundation, Inc. Contributed by François Pinard , 1993, 1997. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define TABLE_LENGTH 2021 #define MAX_MNEMONIC_LENGTH 3 struct entry { recode_ucs2 code; const char *rfc1345; }; static const struct entry table[TABLE_LENGTH] = { /* 0 */ {0x0000, "NU"}, /* 1 */ {0x0001, "SH"}, /* 2 */ {0x0002, "SX"}, /* 3 */ {0x0003, "EX"}, /* 4 */ {0x0004, "ET"}, /* 5 */ {0x0005, "EQ"}, /* 6 */ {0x0006, "AK"}, /* 7 */ {0x0007, "BL"}, /* 8 */ {0x0008, "BS"}, /* 9 */ {0x0009, "HT"}, /* 10 */ {0x000A, "LF"}, /* 11 */ {0x000B, "VT"}, /* 12 */ {0x000C, "FF"}, /* 13 */ {0x000D, "CR"}, /* 14 */ {0x000E, "SO"}, /* 15 */ {0x000F, "SI"}, /* 16 */ {0x0010, "DL"}, /* 17 */ {0x0011, "D1"}, /* 18 */ {0x0012, "D2"}, /* 19 */ {0x0013, "D3"}, /* 20 */ {0x0014, "D4"}, /* 21 */ {0x0015, "NK"}, /* 22 */ {0x0016, "SY"}, /* 23 */ {0x0017, "EB"}, /* 24 */ {0x0018, "CN"}, /* 25 */ {0x0019, "EM"}, /* 26 */ {0x001A, "SB"}, /* 27 */ {0x001B, "EC"}, /* 28 */ {0x001C, "FS"}, /* 29 */ {0x001D, "GS"}, /* 30 */ {0x001E, "RS"}, /* 31 */ {0x001F, "US"}, /* 32 */ {0x0020, "SP"}, /* 33 */ {0x0021, "!"}, /* 34 */ {0x0022, "\""}, /* 35 */ {0x0023, "Nb"}, /* 36 */ {0x0024, "DO"}, /* 37 */ {0x0025, "%"}, /* 38 */ {0x0026, "&"}, /* 39 */ {0x0027, "'"}, /* 40 */ {0x0028, "("}, /* 41 */ {0x0029, ")"}, /* 42 */ {0x002A, "*"}, /* 43 */ {0x002B, "+"}, /* 44 */ {0x002C, ","}, /* 45 */ {0x002D, "-"}, /* 46 */ {0x002E, "."}, /* 47 */ {0x002F, "/"}, /* 48 */ {0x0030, "0"}, /* 49 */ {0x0031, "1"}, /* 50 */ {0x0032, "2"}, /* 51 */ {0x0033, "3"}, /* 52 */ {0x0034, "4"}, /* 53 */ {0x0035, "5"}, /* 54 */ {0x0036, "6"}, /* 55 */ {0x0037, "7"}, /* 56 */ {0x0038, "8"}, /* 57 */ {0x0039, "9"}, /* 58 */ {0x003A, ":"}, /* 59 */ {0x003B, ";"}, /* 60 */ {0x003C, "<"}, /* 61 */ {0x003D, "="}, /* 62 */ {0x003E, ">"}, /* 63 */ {0x003F, "?"}, /* 64 */ {0x0040, "At"}, /* 65 */ {0x0041, "A"}, /* 66 */ {0x0042, "B"}, /* 67 */ {0x0043, "C"}, /* 68 */ {0x0044, "D"}, /* 69 */ {0x0045, "E"}, /* 70 */ {0x0046, "F"}, /* 71 */ {0x0047, "G"}, /* 72 */ {0x0048, "H"}, /* 73 */ {0x0049, "I"}, /* 74 */ {0x004A, "J"}, /* 75 */ {0x004B, "K"}, /* 76 */ {0x004C, "L"}, /* 77 */ {0x004D, "M"}, /* 78 */ {0x004E, "N"}, /* 79 */ {0x004F, "O"}, /* 80 */ {0x0050, "P"}, /* 81 */ {0x0051, "Q"}, /* 82 */ {0x0052, "R"}, /* 83 */ {0x0053, "S"}, /* 84 */ {0x0054, "T"}, /* 85 */ {0x0055, "U"}, /* 86 */ {0x0056, "V"}, /* 87 */ {0x0057, "W"}, /* 88 */ {0x0058, "X"}, /* 89 */ {0x0059, "Y"}, /* 90 */ {0x005A, "Z"}, /* 91 */ {0x005B, "<("}, /* 92 */ {0x005C, "//"}, /* 93 */ {0x005D, ")>"}, /* 94 */ {0x005E, "'>"}, /* 95 */ {0x005F, "_"}, /* 96 */ {0x0060, "'!"}, /* 97 */ {0x0061, "a"}, /* 98 */ {0x0062, "b"}, /* 99 */ {0x0063, "c"}, /* 100 */ {0x0064, "d"}, /* 101 */ {0x0065, "e"}, /* 102 */ {0x0066, "f"}, /* 103 */ {0x0067, "g"}, /* 104 */ {0x0068, "h"}, /* 105 */ {0x0069, "i"}, /* 106 */ {0x006A, "j"}, /* 107 */ {0x006B, "k"}, /* 108 */ {0x006C, "l"}, /* 109 */ {0x006D, "m"}, /* 110 */ {0x006E, "n"}, /* 111 */ {0x006F, "o"}, /* 112 */ {0x0070, "p"}, /* 113 */ {0x0071, "q"}, /* 114 */ {0x0072, "r"}, /* 115 */ {0x0073, "s"}, /* 116 */ {0x0074, "t"}, /* 117 */ {0x0075, "u"}, /* 118 */ {0x0076, "v"}, /* 119 */ {0x0077, "w"}, /* 120 */ {0x0078, "x"}, /* 121 */ {0x0079, "y"}, /* 122 */ {0x007A, "z"}, /* 123 */ {0x007B, "(!"}, /* 124 */ {0x007C, "!!"}, /* 125 */ {0x007D, "!)"}, /* 126 */ {0x007E, "'?"}, /* 127 */ {0x007F, "DT"}, /* 128 */ {0x0080, "PA"}, /* 129 */ {0x0081, "HO"}, /* 130 */ {0x0082, "BH"}, /* 131 */ {0x0083, "NH"}, /* 132 */ {0x0084, "IN"}, /* 133 */ {0x0085, "NL"}, /* 134 */ {0x0086, "SA"}, /* 135 */ {0x0087, "ES"}, /* 136 */ {0x0088, "HS"}, /* 137 */ {0x0089, "HJ"}, /* 138 */ {0x008A, "VS"}, /* 139 */ {0x008B, "PD"}, /* 140 */ {0x008C, "PU"}, /* 141 */ {0x008D, "RI"}, /* 142 */ {0x008E, "S2"}, /* 143 */ {0x008F, "S3"}, /* 144 */ {0x0090, "DC"}, /* 145 */ {0x0091, "P1"}, /* 146 */ {0x0092, "P2"}, /* 147 */ {0x0093, "TS"}, /* 148 */ {0x0094, "CC"}, /* 149 */ {0x0095, "MW"}, /* 150 */ {0x0096, "SG"}, /* 151 */ {0x0097, "EG"}, /* 152 */ {0x0098, "SS"}, /* 153 */ {0x0099, "GC"}, /* 154 */ {0x009A, "SC"}, /* 155 */ {0x009B, "CI"}, /* 156 */ {0x009C, "ST"}, /* 157 */ {0x009D, "OC"}, /* 158 */ {0x009E, "PM"}, /* 159 */ {0x009F, "AC"}, /* 160 */ {0x00A0, "NS"}, /* 161 */ {0x00A1, "!I"}, /* 162 */ {0x00A2, "Ct"}, /* 163 */ {0x00A3, "Pd"}, /* 164 */ {0x00A4, "Cu"}, /* 165 */ {0x00A5, "Ye"}, /* 166 */ {0x00A6, "BB"}, /* 167 */ {0x00A7, "SE"}, /* 168 */ {0x00A8, "':"}, /* 169 */ {0x00A9, "Co"}, /* 170 */ {0x00AA, "-a"}, /* 171 */ {0x00AB, "<<"}, /* 172 */ {0x00AC, "NO"}, /* 173 */ {0x00AD, "--"}, /* 174 */ {0x00AE, "Rg"}, /* 175 */ {0x00AF, "'m"}, /* 176 */ {0x00B0, "DG"}, /* 177 */ {0x00B1, "+-"}, /* 178 */ {0x00B2, "2S"}, /* 179 */ {0x00B3, "3S"}, /* 180 */ {0x00B4, "''"}, /* 181 */ {0x00B5, "My"}, /* 182 */ {0x00B6, "PI"}, /* 183 */ {0x00B7, ".M"}, /* 184 */ {0x00B8, "',"}, /* 185 */ {0x00B9, "1S"}, /* 186 */ {0x00BA, "-o"}, /* 187 */ {0x00BB, ">>"}, /* 188 */ {0x00BC, "14"}, /* 189 */ {0x00BD, "12"}, /* 190 */ {0x00BE, "34"}, /* 191 */ {0x00BF, "?I"}, /* 192 */ {0x00C0, "A!"}, /* 193 */ {0x00C1, "A'"}, /* 194 */ {0x00C2, "A>"}, /* 195 */ {0x00C3, "A?"}, /* 196 */ {0x00C4, "A:"}, /* 197 */ {0x00C5, "AA"}, /* 198 */ {0x00C6, "AE"}, /* 199 */ {0x00C7, "C,"}, /* 200 */ {0x00C8, "E!"}, /* 201 */ {0x00C9, "E'"}, /* 202 */ {0x00CA, "E>"}, /* 203 */ {0x00CB, "E:"}, /* 204 */ {0x00CC, "I!"}, /* 205 */ {0x00CD, "I'"}, /* 206 */ {0x00CE, "I>"}, /* 207 */ {0x00CF, "I:"}, /* 208 */ {0x00D0, "D-"}, /* 209 */ {0x00D1, "N?"}, /* 210 */ {0x00D2, "O!"}, /* 211 */ {0x00D3, "O'"}, /* 212 */ {0x00D4, "O>"}, /* 213 */ {0x00D5, "O?"}, /* 214 */ {0x00D6, "O:"}, /* 215 */ {0x00D7, "*X"}, /* 216 */ {0x00D8, "O/"}, /* 217 */ {0x00D9, "U!"}, /* 218 */ {0x00DA, "U'"}, /* 219 */ {0x00DB, "U>"}, /* 220 */ {0x00DC, "U:"}, /* 221 */ {0x00DD, "Y'"}, /* 222 */ {0x00DE, "TH"}, /* 223 */ {0x00DF, "ss"}, /* 224 */ {0x00E0, "a!"}, /* 225 */ {0x00E1, "a'"}, /* 226 */ {0x00E2, "a>"}, /* 227 */ {0x00E3, "a?"}, /* 228 */ {0x00E4, "a:"}, /* 229 */ {0x00E5, "aa"}, /* 230 */ {0x00E6, "ae"}, /* 231 */ {0x00E7, "c,"}, /* 232 */ {0x00E8, "e!"}, /* 233 */ {0x00E9, "e'"}, /* 234 */ {0x00EA, "e>"}, /* 235 */ {0x00EB, "e:"}, /* 236 */ {0x00EC, "i!"}, /* 237 */ {0x00ED, "i'"}, /* 238 */ {0x00EE, "i>"}, /* 239 */ {0x00EF, "i:"}, /* 240 */ {0x00F0, "d-"}, /* 241 */ {0x00F1, "n?"}, /* 242 */ {0x00F2, "o!"}, /* 243 */ {0x00F3, "o'"}, /* 244 */ {0x00F4, "o>"}, /* 245 */ {0x00F5, "o?"}, /* 246 */ {0x00F6, "o:"}, /* 247 */ {0x00F7, "-:"}, /* 248 */ {0x00F8, "o/"}, /* 249 */ {0x00F9, "u!"}, /* 250 */ {0x00FA, "u'"}, /* 251 */ {0x00FB, "u>"}, /* 252 */ {0x00FC, "u:"}, /* 253 */ {0x00FD, "y'"}, /* 254 */ {0x00FE, "th"}, /* 255 */ {0x00FF, "y:"}, /* 256 */ {0x0100, "A-"}, /* 257 */ {0x0101, "a-"}, /* 258 */ {0x0102, "A("}, /* 259 */ {0x0103, "a("}, /* 260 */ {0x0104, "A;"}, /* 261 */ {0x0105, "a;"}, /* 262 */ {0x0106, "C'"}, /* 263 */ {0x0107, "c'"}, /* 264 */ {0x0108, "C>"}, /* 265 */ {0x0109, "c>"}, /* 266 */ {0x010A, "C."}, /* 267 */ {0x010B, "c."}, /* 268 */ {0x010C, "C<"}, /* 269 */ {0x010D, "c<"}, /* 270 */ {0x010E, "D<"}, /* 271 */ {0x010F, "d<"}, /* 272 */ {0x0110, "D/"}, /* 273 */ {0x0111, "d/"}, /* 274 */ {0x0112, "E-"}, /* 275 */ {0x0113, "e-"}, /* 276 */ {0x0114, "E("}, /* 277 */ {0x0115, "e("}, /* 278 */ {0x0116, "E."}, /* 279 */ {0x0117, "e."}, /* 280 */ {0x0118, "E;"}, /* 281 */ {0x0119, "e;"}, /* 282 */ {0x011A, "E<"}, /* 283 */ {0x011B, "e<"}, /* 284 */ {0x011C, "G>"}, /* 285 */ {0x011D, "g>"}, /* 286 */ {0x011E, "G("}, /* 287 */ {0x011F, "g("}, /* 288 */ {0x0120, "G."}, /* 289 */ {0x0121, "g."}, /* 290 */ {0x0122, "G,"}, /* 291 */ {0x0123, "g,"}, /* 292 */ {0x0124, "H>"}, /* 293 */ {0x0125, "h>"}, /* 294 */ {0x0126, "H/"}, /* 295 */ {0x0127, "h/"}, /* 296 */ {0x0128, "I?"}, /* 297 */ {0x0129, "i?"}, /* 298 */ {0x012A, "I-"}, /* 299 */ {0x012B, "i-"}, /* 300 */ {0x012C, "I("}, /* 301 */ {0x012D, "i("}, /* 302 */ {0x012E, "I;"}, /* 303 */ {0x012F, "i;"}, /* 304 */ {0x0130, "I."}, /* 305 */ {0x0131, "i."}, /* 306 */ {0x0132, "IJ"}, /* 307 */ {0x0133, "ij"}, /* 308 */ {0x0134, "J>"}, /* 309 */ {0x0135, "j>"}, /* 310 */ {0x0136, "K,"}, /* 311 */ {0x0137, "k,"}, /* 312 */ {0x0138, "kk"}, /* 313 */ {0x0139, "L'"}, /* 314 */ {0x013A, "l'"}, /* 315 */ {0x013B, "L,"}, /* 316 */ {0x013C, "l,"}, /* 317 */ {0x013D, "L<"}, /* 318 */ {0x013E, "l<"}, /* 319 */ {0x013F, "L."}, /* 320 */ {0x0140, "l."}, /* 321 */ {0x0141, "L/"}, /* 322 */ {0x0142, "l/"}, /* 323 */ {0x0143, "N'"}, /* 324 */ {0x0144, "n'"}, /* 325 */ {0x0145, "N,"}, /* 326 */ {0x0146, "n,"}, /* 327 */ {0x0147, "N<"}, /* 328 */ {0x0148, "n<"}, /* 329 */ {0x0149, "'n"}, /* 330 */ {0x014A, "NG"}, /* 331 */ {0x014B, "ng"}, /* 332 */ {0x014C, "O-"}, /* 333 */ {0x014D, "o-"}, /* 334 */ {0x014E, "O("}, /* 335 */ {0x014F, "o("}, /* 336 */ {0x0150, "O\""}, /* 337 */ {0x0151, "o\""}, /* 338 */ {0x0152, "OE"}, /* 339 */ {0x0153, "oe"}, /* 340 */ {0x0154, "R'"}, /* 341 */ {0x0155, "r'"}, /* 342 */ {0x0156, "R,"}, /* 343 */ {0x0157, "r,"}, /* 344 */ {0x0158, "R<"}, /* 345 */ {0x0159, "r<"}, /* 346 */ {0x015A, "S'"}, /* 347 */ {0x015B, "s'"}, /* 348 */ {0x015C, "S>"}, /* 349 */ {0x015D, "s>"}, /* 350 */ {0x015E, "S,"}, /* 351 */ {0x015F, "s,"}, /* 352 */ {0x0160, "S<"}, /* 353 */ {0x0161, "s<"}, /* 354 */ {0x0162, "T,"}, /* 355 */ {0x0163, "t,"}, /* 356 */ {0x0164, "T<"}, /* 357 */ {0x0165, "t<"}, /* 358 */ {0x0166, "T/"}, /* 359 */ {0x0167, "t/"}, /* 360 */ {0x0168, "U?"}, /* 361 */ {0x0169, "u?"}, /* 362 */ {0x016A, "U-"}, /* 363 */ {0x016B, "u-"}, /* 364 */ {0x016C, "U("}, /* 365 */ {0x016D, "u("}, /* 366 */ {0x016E, "U0"}, /* 367 */ {0x016F, "u0"}, /* 368 */ {0x0170, "U\""}, /* 369 */ {0x0171, "u\""}, /* 370 */ {0x0172, "U;"}, /* 371 */ {0x0173, "u;"}, /* 372 */ {0x0174, "W>"}, /* 373 */ {0x0175, "w>"}, /* 374 */ {0x0176, "Y>"}, /* 375 */ {0x0177, "y>"}, /* 376 */ {0x0178, "Y:"}, /* 377 */ {0x0179, "Z'"}, /* 378 */ {0x017A, "z'"}, /* 379 */ {0x017B, "Z."}, /* 380 */ {0x017C, "z."}, /* 381 */ {0x017D, "Z<"}, /* 382 */ {0x017E, "z<"}, /* 383 */ {0x017F, "s1"}, /* 384 */ {0x0180, "b/"}, /* 385 */ {0x0181, "B2"}, /* 386 */ {0x0187, "C2"}, /* 387 */ {0x0188, "c2"}, /* 388 */ {0x0191, "F2"}, /* 389 */ {0x0192, "f2"}, /* 390 */ {0x0198, "K2"}, /* 391 */ {0x0199, "k2"}, /* 392 */ {0x01A0, "O9"}, /* 393 */ {0x01A1, "o9"}, /* 394 */ {0x01A2, "OI"}, /* 395 */ {0x01A3, "oi"}, /* 396 */ {0x01A6, "yr"}, /* 397 */ {0x01AF, "U9"}, /* 398 */ {0x01B0, "u9"}, /* 399 */ {0x01B5, "Z/"}, /* 400 */ {0x01B6, "z/"}, /* 401 */ {0x01B7, "ED"}, /* 402 */ {0x01C4, "DZ<"}, /* 403 */ {0x01C5, "Dz<"}, /* 404 */ {0x01C6, "dz<"}, /* 405 */ {0x01C7, "LJ3"}, /* 406 */ {0x01C8, "Lj3"}, /* 407 */ {0x01C9, "lj3"}, /* 408 */ {0x01CA, "NJ3"}, /* 409 */ {0x01CB, "Nj3"}, /* 410 */ {0x01CC, "nj3"}, /* 411 */ {0x01CD, "A<"}, /* 412 */ {0x01CE, "a<"}, /* 413 */ {0x01CF, "I<"}, /* 414 */ {0x01D0, "i<"}, /* 415 */ {0x01D1, "O<"}, /* 416 */ {0x01D2, "o<"}, /* 417 */ {0x01D3, "U<"}, /* 418 */ {0x01D4, "u<"}, /* 419 */ {0x01D5, "U:-"}, /* 420 */ {0x01D6, "u:-"}, /* 421 */ {0x01D7, "U:'"}, /* 422 */ {0x01D8, "u:'"}, /* 423 */ {0x01D9, "U:<"}, /* 424 */ {0x01DA, "u:<"}, /* 425 */ {0x01DB, "U:!"}, /* 426 */ {0x01DC, "u:!"}, /* 427 */ {0x01DD, "e1"}, /* 428 */ {0x01DE, "A1"}, /* 429 */ {0x01DF, "a1"}, /* 430 */ {0x01E0, "A7"}, /* 431 */ {0x01E1, "a7"}, /* 432 */ {0x01E2, "A3"}, /* 433 */ {0x01E3, "a3"}, /* 434 */ {0x01E4, "G/"}, /* 435 */ {0x01E5, "g/"}, /* 436 */ {0x01E6, "G<"}, /* 437 */ {0x01E7, "g<"}, /* 438 */ {0x01E8, "K<"}, /* 439 */ {0x01E9, "k<"}, /* 440 */ {0x01EA, "O;"}, /* 441 */ {0x01EB, "o;"}, /* 442 */ {0x01EC, "O1"}, /* 443 */ {0x01ED, "o1"}, /* 444 */ {0x01EE, "EZ"}, /* 445 */ {0x01EF, "ez"}, /* 446 */ {0x01F0, "j<"}, /* 447 */ {0x01F1, "DZ3"}, /* 448 */ {0x01F2, "Dz3"}, /* 449 */ {0x01F3, "dz3"}, /* 450 */ {0x01F4, "G'"}, /* 451 */ {0x01F5, "g'"}, /* 452 */ {0x01FA, "AA'"}, /* 453 */ {0x01FB, "aa'"}, /* 454 */ {0x01FC, "AE'"}, /* 455 */ {0x01FD, "ae'"}, /* 456 */ {0x01FE, "O/'"}, /* 457 */ {0x01FF, "o/'"}, /* 458 */ {0x0200, "A!!"}, /* 459 */ {0x0201, "a!!"}, /* 460 */ {0x0202, "A)"}, /* 461 */ {0x0203, "a)"}, /* 462 */ {0x0204, "E!!"}, /* 463 */ {0x0205, "e!!"}, /* 464 */ {0x0206, "E)"}, /* 465 */ {0x0207, "e)"}, /* 466 */ {0x0208, "I!!"}, /* 467 */ {0x0209, "i!!"}, /* 468 */ {0x020A, "I)"}, /* 469 */ {0x020B, "i)"}, /* 470 */ {0x020C, "O!!"}, /* 471 */ {0x020D, "o!!"}, /* 472 */ {0x020E, "O)"}, /* 473 */ {0x020F, "o)"}, /* 474 */ {0x0210, "R!!"}, /* 475 */ {0x0211, "r!!"}, /* 476 */ {0x0212, "R)"}, /* 477 */ {0x0213, "r)"}, /* 478 */ {0x0214, "U!!"}, /* 479 */ {0x0215, "u!!"}, /* 480 */ {0x0216, "U)"}, /* 481 */ {0x0217, "u)"}, /* 482 */ {0x027C, "r1"}, /* 483 */ {0x0292, "ed"}, /* 484 */ {0x02BB, ";S"}, /* 485 */ {0x02C6, "1>"}, /* 486 */ {0x02C7, "'<"}, /* 487 */ {0x02C9, "1-"}, /* 488 */ {0x02CB, "1!"}, /* 489 */ {0x02D8, "'("}, /* 490 */ {0x02D9, "'."}, /* 491 */ {0x02DA, "'0"}, /* 492 */ {0x02DB, "';"}, /* 493 */ {0x02DC, "1?"}, /* 494 */ {0x02DD, "'\""}, /* 495 */ {0x0374, "'G"}, /* 496 */ {0x0375, ",G"}, /* 497 */ {0x037A, "j3"}, /* 498 */ {0x037E, "?%"}, /* 499 */ {0x0384, "'*"}, /* 500 */ {0x0385, "'%"}, /* 501 */ {0x0386, "A%"}, /* 502 */ {0x0387, ".*"}, /* 503 */ {0x0388, "E%"}, /* 504 */ {0x0389, "Y%"}, /* 505 */ {0x038A, "I%"}, /* 506 */ {0x038C, "O%"}, /* 507 */ {0x038E, "U%"}, /* 508 */ {0x038F, "W%"}, /* 509 */ {0x0390, "i3"}, /* 510 */ {0x0391, "A*"}, /* 511 */ {0x0392, "B*"}, /* 512 */ {0x0393, "G*"}, /* 513 */ {0x0394, "D*"}, /* 514 */ {0x0395, "E*"}, /* 515 */ {0x0396, "Z*"}, /* 516 */ {0x0397, "Y*"}, /* 517 */ {0x0398, "H*"}, /* 518 */ {0x0399, "I*"}, /* 519 */ {0x039A, "K*"}, /* 520 */ {0x039B, "L*"}, /* 521 */ {0x039C, "M*"}, /* 522 */ {0x039D, "N*"}, /* 523 */ {0x039E, "C*"}, /* 524 */ {0x039F, "O*"}, /* 525 */ {0x03A0, "P*"}, /* 526 */ {0x03A1, "R*"}, /* 527 */ {0x03A3, "S*"}, /* 528 */ {0x03A4, "T*"}, /* 529 */ {0x03A5, "U*"}, /* 530 */ {0x03A6, "F*"}, /* 531 */ {0x03A7, "X*"}, /* 532 */ {0x03A8, "Q*"}, /* 533 */ {0x03A9, "W*"}, /* 534 */ {0x03AA, "J*"}, /* 535 */ {0x03AB, "V*"}, /* 536 */ {0x03AC, "a%"}, /* 537 */ {0x03AD, "e%"}, /* 538 */ {0x03AE, "y%"}, /* 539 */ {0x03AF, "i%"}, /* 540 */ {0x03B0, "u3"}, /* 541 */ {0x03B1, "a*"}, /* 542 */ {0x03B2, "b*"}, /* 543 */ {0x03B3, "g*"}, /* 544 */ {0x03B4, "d*"}, /* 545 */ {0x03B5, "e*"}, /* 546 */ {0x03B6, "z*"}, /* 547 */ {0x03B7, "y*"}, /* 548 */ {0x03B8, "h*"}, /* 549 */ {0x03B9, "i*"}, /* 550 */ {0x03BA, "k*"}, /* 551 */ {0x03BB, "l*"}, /* 552 */ {0x03BC, "m*"}, /* 553 */ {0x03BD, "n*"}, /* 554 */ {0x03BE, "c*"}, /* 555 */ {0x03BF, "o*"}, /* 556 */ {0x03C0, "p*"}, /* 557 */ {0x03C1, "r*"}, /* 558 */ {0x03C2, "*s"}, /* 559 */ {0x03C3, "s*"}, /* 560 */ {0x03C4, "t*"}, /* 561 */ {0x03C5, "u*"}, /* 562 */ {0x03C6, "f*"}, /* 563 */ {0x03C7, "x*"}, /* 564 */ {0x03C8, "q*"}, /* 565 */ {0x03C9, "w*"}, /* 566 */ {0x03CA, "j*"}, /* 567 */ {0x03CB, "v*"}, /* 568 */ {0x03CC, "o%"}, /* 569 */ {0x03CD, "u%"}, /* 570 */ {0x03CE, "w%"}, /* 571 */ {0x03D0, "b3"}, /* 572 */ {0x03DA, "T3"}, /* 573 */ {0x03DC, "M3"}, /* 574 */ {0x03DE, "K3"}, /* 575 */ {0x03E0, "P3"}, /* 576 */ {0x0401, "IO"}, /* 577 */ {0x0402, "D%"}, /* 578 */ {0x0403, "G%"}, /* 579 */ {0x0404, "IE"}, /* 580 */ {0x0405, "DS"}, /* 581 */ {0x0406, "II"}, /* 582 */ {0x0407, "YI"}, /* 583 */ {0x0408, "J%"}, /* 584 */ {0x0409, "LJ"}, /* 585 */ {0x040A, "NJ"}, /* 586 */ {0x040B, "Ts"}, /* 587 */ {0x040C, "KJ"}, /* 588 */ {0x040E, "V%"}, /* 589 */ {0x040F, "DZ"}, /* 590 */ {0x0410, "A="}, /* 591 */ {0x0411, "B="}, /* 592 */ {0x0412, "V="}, /* 593 */ {0x0413, "G="}, /* 594 */ {0x0414, "D="}, /* 595 */ {0x0415, "E="}, /* 596 */ {0x0416, "Z%"}, /* 597 */ {0x0417, "Z="}, /* 598 */ {0x0418, "I="}, /* 599 */ {0x0419, "J="}, /* 600 */ {0x041A, "K="}, /* 601 */ {0x041B, "L="}, /* 602 */ {0x041C, "M="}, /* 603 */ {0x041D, "N="}, /* 604 */ {0x041E, "O="}, /* 605 */ {0x041F, "P="}, /* 606 */ {0x0420, "R="}, /* 607 */ {0x0421, "S="}, /* 608 */ {0x0422, "T="}, /* 609 */ {0x0423, "U="}, /* 610 */ {0x0424, "F="}, /* 611 */ {0x0425, "H="}, /* 612 */ {0x0426, "C="}, /* 613 */ {0x0427, "C%"}, /* 614 */ {0x0428, "S%"}, /* 615 */ {0x0429, "Sc"}, /* 616 */ {0x042A, "=\""}, /* 617 */ {0x042B, "Y="}, /* 618 */ {0x042C, "%\""}, /* 619 */ {0x042D, "JE"}, /* 620 */ {0x042E, "JU"}, /* 621 */ {0x042F, "JA"}, /* 622 */ {0x0430, "a="}, /* 623 */ {0x0431, "b="}, /* 624 */ {0x0432, "v="}, /* 625 */ {0x0433, "g="}, /* 626 */ {0x0434, "d="}, /* 627 */ {0x0435, "e="}, /* 628 */ {0x0436, "z%"}, /* 629 */ {0x0437, "z="}, /* 630 */ {0x0438, "i="}, /* 631 */ {0x0439, "j="}, /* 632 */ {0x043A, "k="}, /* 633 */ {0x043B, "l="}, /* 634 */ {0x043C, "m="}, /* 635 */ {0x043D, "n="}, /* 636 */ {0x043E, "o="}, /* 637 */ {0x043F, "p="}, /* 638 */ {0x0440, "r="}, /* 639 */ {0x0441, "s="}, /* 640 */ {0x0442, "t="}, /* 641 */ {0x0443, "u="}, /* 642 */ {0x0444, "f="}, /* 643 */ {0x0445, "h="}, /* 644 */ {0x0446, "c="}, /* 645 */ {0x0447, "c%"}, /* 646 */ {0x0448, "s%"}, /* 647 */ {0x0449, "sc"}, /* 648 */ {0x044A, "='"}, /* 649 */ {0x044B, "y="}, /* 650 */ {0x044C, "%'"}, /* 651 */ {0x044D, "je"}, /* 652 */ {0x044E, "ju"}, /* 653 */ {0x044F, "ja"}, /* 654 */ {0x0451, "io"}, /* 655 */ {0x0452, "d%"}, /* 656 */ {0x0453, "g%"}, /* 657 */ {0x0454, "ie"}, /* 658 */ {0x0455, "ds"}, /* 659 */ {0x0456, "ii"}, /* 660 */ {0x0457, "yi"}, /* 661 */ {0x0458, "j%"}, /* 662 */ {0x0459, "lj"}, /* 663 */ {0x045A, "nj"}, /* 664 */ {0x045B, "ts"}, /* 665 */ {0x045C, "kj"}, /* 666 */ {0x045E, "v%"}, /* 667 */ {0x045F, "dz"}, /* 668 */ {0x0462, "Y3"}, /* 669 */ {0x0463, "y3"}, /* 670 */ {0x046A, "O3"}, /* 671 */ {0x046B, "o3"}, /* 672 */ {0x0472, "F3"}, /* 673 */ {0x0473, "f3"}, /* 674 */ {0x0474, "V3"}, /* 675 */ {0x0475, "v3"}, /* 676 */ {0x0480, "C3"}, /* 677 */ {0x0481, "c3"}, /* 678 */ {0x0490, "G3"}, /* 679 */ {0x0491, "g3"}, /* 680 */ {0x05D0, "A+"}, /* 681 */ {0x05D1, "B+"}, /* 682 */ {0x05D2, "G+"}, /* 683 */ {0x05D3, "D+"}, /* 684 */ {0x05D4, "H+"}, /* 685 */ {0x05D5, "W+"}, /* 686 */ {0x05D6, "Z+"}, /* 687 */ {0x05D7, "X+"}, /* 688 */ {0x05D8, "Tj"}, /* 689 */ {0x05D9, "J+"}, /* 690 */ {0x05DA, "K%"}, /* 691 */ {0x05DB, "K+"}, /* 692 */ {0x05DC, "L+"}, /* 693 */ {0x05DD, "M%"}, /* 694 */ {0x05DE, "M+"}, /* 695 */ {0x05DF, "N%"}, /* 696 */ {0x05E0, "N+"}, /* 697 */ {0x05E1, "S+"}, /* 698 */ {0x05E2, "E+"}, /* 699 */ {0x05E3, "P%"}, /* 700 */ {0x05E4, "P+"}, /* 701 */ {0x05E5, "Zj"}, /* 702 */ {0x05E6, "ZJ"}, /* 703 */ {0x05E7, "Q+"}, /* 704 */ {0x05E8, "R+"}, /* 705 */ {0x05E9, "Sh"}, /* 706 */ {0x05EA, "T+"}, /* 707 */ {0x060C, ",+"}, /* 708 */ {0x061B, ";+"}, /* 709 */ {0x061F, "?+"}, /* 710 */ {0x0621, "H'"}, /* 711 */ {0x0622, "aM"}, /* 712 */ {0x0623, "aH"}, /* 713 */ {0x0624, "wH"}, /* 714 */ {0x0625, "ah"}, /* 715 */ {0x0626, "yH"}, /* 716 */ {0x0627, "a+"}, /* 717 */ {0x0628, "b+"}, /* 718 */ {0x0629, "tm"}, /* 719 */ {0x062A, "t+"}, /* 720 */ {0x062B, "tk"}, /* 721 */ {0x062C, "g+"}, /* 722 */ {0x062D, "hk"}, /* 723 */ {0x062E, "x+"}, /* 724 */ {0x062F, "d+"}, /* 725 */ {0x0630, "dk"}, /* 726 */ {0x0631, "r+"}, /* 727 */ {0x0632, "z+"}, /* 728 */ {0x0633, "s+"}, /* 729 */ {0x0634, "sn"}, /* 730 */ {0x0635, "c+"}, /* 731 */ {0x0636, "dd"}, /* 732 */ {0x0637, "tj"}, /* 733 */ {0x0638, "zH"}, /* 734 */ {0x0639, "e+"}, /* 735 */ {0x063A, "i+"}, /* 736 */ {0x0640, "++"}, /* 737 */ {0x0641, "f+"}, /* 738 */ {0x0642, "q+"}, /* 739 */ {0x0643, "k+"}, /* 740 */ {0x0644, "l+"}, /* 741 */ {0x0645, "m+"}, /* 742 */ {0x0646, "n+"}, /* 743 */ {0x0647, "h+"}, /* 744 */ {0x0648, "w+"}, /* 745 */ {0x0649, "j+"}, /* 746 */ {0x064A, "y+"}, /* 747 */ {0x064B, ":+"}, /* 748 */ {0x064C, "\"+"}, /* 749 */ {0x064D, "=+"}, /* 750 */ {0x064E, "/+"}, /* 751 */ {0x064F, "'+"}, /* 752 */ {0x0650, "1+"}, /* 753 */ {0x0651, "3+"}, /* 754 */ {0x0652, "0+"}, /* 755 */ {0x0660, "0a"}, /* 756 */ {0x0661, "1a"}, /* 757 */ {0x0662, "2a"}, /* 758 */ {0x0663, "3a"}, /* 759 */ {0x0664, "4a"}, /* 760 */ {0x0665, "5a"}, /* 761 */ {0x0666, "6a"}, /* 762 */ {0x0667, "7a"}, /* 763 */ {0x0668, "8a"}, /* 764 */ {0x0669, "9a"}, /* 765 */ {0x0670, "aS"}, /* 766 */ {0x067E, "p+"}, /* 767 */ {0x0681, "hH"}, /* 768 */ {0x0686, "tc"}, /* 769 */ {0x0698, "zj"}, /* 770 */ {0x06A4, "v+"}, /* 771 */ {0x06AF, "gf"}, /* 772 */ {0x1E00, "A-0"}, /* 773 */ {0x1E01, "a-0"}, /* 774 */ {0x1E02, "B."}, /* 775 */ {0x1E03, "b."}, /* 776 */ {0x1E04, "B-."}, /* 777 */ {0x1E05, "b-."}, /* 778 */ {0x1E06, "B_"}, /* 779 */ {0x1E07, "b_"}, /* 780 */ {0x1E08, "C,'"}, /* 781 */ {0x1E09, "c,'"}, /* 782 */ {0x1E0A, "D."}, /* 783 */ {0x1E0B, "d."}, /* 784 */ {0x1E0C, "D-."}, /* 785 */ {0x1E0D, "d-."}, /* 786 */ {0x1E0E, "D_"}, /* 787 */ {0x1E0F, "d_"}, /* 788 */ {0x1E10, "D,"}, /* 789 */ {0x1E11, "d,"}, /* 790 */ {0x1E12, "D->"}, /* 791 */ {0x1E13, "d->"}, /* 792 */ {0x1E14, "E-!"}, /* 793 */ {0x1E15, "e-!"}, /* 794 */ {0x1E16, "E-'"}, /* 795 */ {0x1E17, "e-'"}, /* 796 */ {0x1E18, "E->"}, /* 797 */ {0x1E19, "e->"}, /* 798 */ {0x1E1A, "E-?"}, /* 799 */ {0x1E1B, "e-?"}, /* 800 */ {0x1E1C, "E,("}, /* 801 */ {0x1E1D, "e,("}, /* 802 */ {0x1E1E, "F."}, /* 803 */ {0x1E1F, "f."}, /* 804 */ {0x1E20, "G-"}, /* 805 */ {0x1E21, "g-"}, /* 806 */ {0x1E22, "H."}, /* 807 */ {0x1E23, "h."}, /* 808 */ {0x1E24, "H-."}, /* 809 */ {0x1E25, "h-."}, /* 810 */ {0x1E26, "H:"}, /* 811 */ {0x1E27, "h:"}, /* 812 */ {0x1E28, "H,"}, /* 813 */ {0x1E29, "h,"}, /* 814 */ {0x1E2A, "H-("}, /* 815 */ {0x1E2B, "h-("}, /* 816 */ {0x1E2C, "I-?"}, /* 817 */ {0x1E2D, "i-?"}, /* 818 */ {0x1E2E, "I:'"}, /* 819 */ {0x1E2F, "i:'"}, /* 820 */ {0x1E30, "K'"}, /* 821 */ {0x1E31, "k'"}, /* 822 */ {0x1E32, "K-."}, /* 823 */ {0x1E33, "k-."}, /* 824 */ {0x1E34, "K_"}, /* 825 */ {0x1E35, "k_"}, /* 826 */ {0x1E36, "L-."}, /* 827 */ {0x1E37, "l-."}, /* 828 */ {0x1E3A, "L_"}, /* 829 */ {0x1E3B, "l_"}, /* 830 */ {0x1E3C, "L->"}, /* 831 */ {0x1E3D, "l->"}, /* 832 */ {0x1E3E, "M'"}, /* 833 */ {0x1E3F, "m'"}, /* 834 */ {0x1E40, "M."}, /* 835 */ {0x1E41, "m."}, /* 836 */ {0x1E42, "M-."}, /* 837 */ {0x1E43, "m-."}, /* 838 */ {0x1E44, "N."}, /* 839 */ {0x1E45, "n."}, /* 840 */ {0x1E46, "N-."}, /* 841 */ {0x1E47, "n-."}, /* 842 */ {0x1E48, "N_"}, /* 843 */ {0x1E49, "n_"}, /* 844 */ {0x1E4A, "N->"}, /* 845 */ {0x1E4B, "n->"}, /* 846 */ {0x1E4C, "O?'"}, /* 847 */ {0x1E4D, "o?'"}, /* 848 */ {0x1E4E, "O?:"}, /* 849 */ {0x1E4F, "o?:"}, /* 850 */ {0x1E50, "O-!"}, /* 851 */ {0x1E51, "o-!"}, /* 852 */ {0x1E52, "O-'"}, /* 853 */ {0x1E53, "o-'"}, /* 854 */ {0x1E54, "P'"}, /* 855 */ {0x1E55, "p'"}, /* 856 */ {0x1E56, "P."}, /* 857 */ {0x1E57, "p."}, /* 858 */ {0x1E58, "R."}, /* 859 */ {0x1E59, "r."}, /* 860 */ {0x1E5A, "R-."}, /* 861 */ {0x1E5B, "r-."}, /* 862 */ {0x1E5E, "R_"}, /* 863 */ {0x1E5F, "r_"}, /* 864 */ {0x1E60, "S."}, /* 865 */ {0x1E61, "s."}, /* 866 */ {0x1E62, "S-."}, /* 867 */ {0x1E63, "s-."}, /* 868 */ {0x1E64, "S'."}, /* 869 */ {0x1E65, "s'."}, /* 870 */ {0x1E66, "S<."}, /* 871 */ {0x1E67, "s<."}, /* 872 */ {0x1E6A, "T."}, /* 873 */ {0x1E6B, "t."}, /* 874 */ {0x1E6C, "T-."}, /* 875 */ {0x1E6D, "t-."}, /* 876 */ {0x1E6E, "T_"}, /* 877 */ {0x1E6F, "t_"}, /* 878 */ {0x1E70, "T->"}, /* 879 */ {0x1E71, "t->"}, /* 880 */ {0x1E74, "U-?"}, /* 881 */ {0x1E75, "u-?"}, /* 882 */ {0x1E76, "U->"}, /* 883 */ {0x1E77, "u->"}, /* 884 */ {0x1E78, "U?'"}, /* 885 */ {0x1E79, "u?'"}, /* 886 */ {0x1E7A, "U-:"}, /* 887 */ {0x1E7B, "u-:"}, /* 888 */ {0x1E7C, "V?"}, /* 889 */ {0x1E7D, "v?"}, /* 890 */ {0x1E7E, "V-."}, /* 891 */ {0x1E7F, "v-."}, /* 892 */ {0x1E80, "W!"}, /* 893 */ {0x1E81, "w!"}, /* 894 */ {0x1E82, "W'"}, /* 895 */ {0x1E83, "w'"}, /* 896 */ {0x1E84, "W:"}, /* 897 */ {0x1E85, "w:"}, /* 898 */ {0x1E86, "W."}, /* 899 */ {0x1E87, "w."}, /* 900 */ {0x1E88, "W-."}, /* 901 */ {0x1E89, "w-."}, /* 902 */ {0x1E8A, "X."}, /* 903 */ {0x1E8B, "x."}, /* 904 */ {0x1E8C, "X:"}, /* 905 */ {0x1E8D, "x:"}, /* 906 */ {0x1E8E, "Y."}, /* 907 */ {0x1E8F, "y."}, /* 908 */ {0x1E90, "Z>"}, /* 909 */ {0x1E91, "z>"}, /* 910 */ {0x1E92, "Z-."}, /* 911 */ {0x1E93, "z-."}, /* 912 */ {0x1E94, "Z_"}, /* 913 */ {0x1E95, "z_"}, /* 914 */ {0x1EA0, "A-."}, /* 915 */ {0x1EA1, "a-."}, /* 916 */ {0x1EA2, "A2"}, /* 917 */ {0x1EA3, "a2"}, /* 918 */ {0x1EA4, "A>'"}, /* 919 */ {0x1EA5, "a>'"}, /* 920 */ {0x1EA6, "A>!"}, /* 921 */ {0x1EA7, "a>!"}, /* 922 */ {0x1EA8, "A>2"}, /* 923 */ {0x1EA9, "a>2"}, /* 924 */ {0x1EAA, "A>?"}, /* 925 */ {0x1EAB, "a>?"}, /* 926 */ {0x1EAE, "A('"}, /* 927 */ {0x1EAF, "a('"}, /* 928 */ {0x1EB0, "A(!"}, /* 929 */ {0x1EB1, "a(!"}, /* 930 */ {0x1EB2, "A(2"}, /* 931 */ {0x1EB3, "a(2"}, /* 932 */ {0x1EB4, "A(?"}, /* 933 */ {0x1EB5, "a(?"}, /* 934 */ {0x1EB8, "E-."}, /* 935 */ {0x1EB9, "e-."}, /* 936 */ {0x1EBA, "E2"}, /* 937 */ {0x1EBB, "e2"}, /* 938 */ {0x1EBC, "E?"}, /* 939 */ {0x1EBD, "e?"}, /* 940 */ {0x1EBE, "E>'"}, /* 941 */ {0x1EBF, "e>'"}, /* 942 */ {0x1EC0, "E>!"}, /* 943 */ {0x1EC1, "e>!"}, /* 944 */ {0x1EC2, "E>2"}, /* 945 */ {0x1EC3, "e>2"}, /* 946 */ {0x1EC4, "E>?"}, /* 947 */ {0x1EC5, "e>?"}, /* 948 */ {0x1EC8, "I2"}, /* 949 */ {0x1EC9, "i2"}, /* 950 */ {0x1ECA, "I-."}, /* 951 */ {0x1ECB, "i-."}, /* 952 */ {0x1ECC, "O-."}, /* 953 */ {0x1ECD, "o-."}, /* 954 */ {0x1ECE, "O2"}, /* 955 */ {0x1ECF, "o2"}, /* 956 */ {0x1ED0, "O>'"}, /* 957 */ {0x1ED1, "o>'"}, /* 958 */ {0x1ED2, "O>!"}, /* 959 */ {0x1ED3, "o>!"}, /* 960 */ {0x1ED4, "O>2"}, /* 961 */ {0x1ED5, "o>2"}, /* 962 */ {0x1ED6, "O>?"}, /* 963 */ {0x1ED7, "o>?"}, /* 964 */ {0x1EDA, "O9'"}, /* 965 */ {0x1EDB, "o9'"}, /* 966 */ {0x1EDC, "O9!"}, /* 967 */ {0x1EDD, "o9!"}, /* 968 */ {0x1EDE, "O92"}, /* 969 */ {0x1EDF, "o92"}, /* 970 */ {0x1EE0, "O9?"}, /* 971 */ {0x1EE1, "o9?"}, /* 972 */ {0x1EE4, "U-."}, /* 973 */ {0x1EE5, "u-."}, /* 974 */ {0x1EE6, "U2"}, /* 975 */ {0x1EE7, "u2"}, /* 976 */ {0x1EE8, "U9'"}, /* 977 */ {0x1EE9, "u9'"}, /* 978 */ {0x1EEA, "U9!"}, /* 979 */ {0x1EEB, "u9!"}, /* 980 */ {0x1EEC, "U92"}, /* 981 */ {0x1EED, "u92"}, /* 982 */ {0x1EEE, "U9?"}, /* 983 */ {0x1EEF, "u9?"}, /* 984 */ {0x1EF2, "Y!"}, /* 985 */ {0x1EF3, "y!"}, /* 986 */ {0x1EF4, "Y-."}, /* 987 */ {0x1EF5, "y-."}, /* 988 */ {0x1EF6, "Y2"}, /* 989 */ {0x1EF7, "y2"}, /* 990 */ {0x1EF8, "Y?"}, /* 991 */ {0x1EF9, "y?"}, /* 992 */ {0x1F00, "a*,"}, /* 993 */ {0x1F01, "a*;"}, /* 994 */ {0x1F08, "A*,"}, /* 995 */ {0x1F09, "A*;"}, /* 996 */ {0x1F10, "e*,"}, /* 997 */ {0x1F11, "e*;"}, /* 998 */ {0x1F18, "E*,"}, /* 999 */ {0x1F19, "E*;"}, /* 1000 */ {0x1F20, "y*,"}, /* 1001 */ {0x1F21, "y*;"}, /* 1002 */ {0x1F28, "Y*,"}, /* 1003 */ {0x1F29, "Y*;"}, /* 1004 */ {0x1F30, "i*,"}, /* 1005 */ {0x1F31, "i*;"}, /* 1006 */ {0x1F38, "I*,"}, /* 1007 */ {0x1F39, "I*;"}, /* 1008 */ {0x1F40, "o*,"}, /* 1009 */ {0x1F41, "o*;"}, /* 1010 */ {0x1F48, "O*,"}, /* 1011 */ {0x1F49, "O*;"}, /* 1012 */ {0x1F50, "u*,"}, /* 1013 */ {0x1F51, "u*;"}, /* 1014 */ {0x1F59, "U*;"}, /* 1015 */ {0x1F60, "w*,"}, /* 1016 */ {0x1F61, "w*;"}, /* 1017 */ {0x1F68, "W*,"}, /* 1018 */ {0x1F69, "W*;"}, /* 1019 */ {0x1F70, "a*!"}, /* 1020 */ {0x1F71, "a*'"}, /* 1021 */ {0x1F72, "e*!"}, /* 1022 */ {0x1F73, "e*'"}, /* 1023 */ {0x1F74, "y*!"}, /* 1024 */ {0x1F75, "y*'"}, /* 1025 */ {0x1F76, "i*!"}, /* 1026 */ {0x1F77, "i*'"}, /* 1027 */ {0x1F78, "o*!"}, /* 1028 */ {0x1F79, "o*'"}, /* 1029 */ {0x1F7A, "u*!"}, /* 1030 */ {0x1F7B, "u*'"}, /* 1031 */ {0x1F7C, "w*!"}, /* 1032 */ {0x1F7D, "w*'"}, /* 1033 */ {0x1FB0, "a*("}, /* 1034 */ {0x1FB1, "a*-"}, /* 1035 */ {0x1FB3, "a*j"}, /* 1036 */ {0x1FB6, "a*?"}, /* 1037 */ {0x1FB8, "A*("}, /* 1038 */ {0x1FB9, "A*-"}, /* 1039 */ {0x1FBA, "A*!"}, /* 1040 */ {0x1FBB, "A*'"}, /* 1041 */ {0x1FBC, "A*J"}, /* 1042 */ {0x1FBD, ")*"}, /* 1043 */ {0x1FBE, "J3"}, /* 1044 */ {0x1FBF, ",,"}, /* 1045 */ {0x1FC0, "?*"}, /* 1046 */ {0x1FC1, "?:"}, /* 1047 */ {0x1FC3, "y*j"}, /* 1048 */ {0x1FC6, "y*?"}, /* 1049 */ {0x1FC9, "E*'"}, /* 1050 */ {0x1FCA, "Y*!"}, /* 1051 */ {0x1FCB, "Y*'"}, /* 1052 */ {0x1FCC, "Y*J"}, /* 1053 */ {0x1FCD, ",!"}, /* 1054 */ {0x1FCE, ",'"}, /* 1055 */ {0x1FCF, "?,"}, /* 1056 */ {0x1FD0, "i*("}, /* 1057 */ {0x1FD1, "i*-"}, /* 1058 */ {0x1FD6, "i*?"}, /* 1059 */ {0x1FD8, "I*("}, /* 1060 */ {0x1FD9, "I*-"}, /* 1061 */ {0x1FDA, "I*!"}, /* 1062 */ {0x1FDB, "I*'"}, /* 1063 */ {0x1FDD, ";!"}, /* 1064 */ {0x1FDE, ";'"}, /* 1065 */ {0x1FDF, "?;"}, /* 1066 */ {0x1FE0, "u*("}, /* 1067 */ {0x1FE1, "u*-"}, /* 1068 */ {0x1FE4, "r*,"}, /* 1069 */ {0x1FE5, "r*;"}, /* 1070 */ {0x1FE6, "u*?"}, /* 1071 */ {0x1FE8, "U*("}, /* 1072 */ {0x1FE9, "U*-"}, /* 1073 */ {0x1FEA, "U*!"}, /* 1074 */ {0x1FEB, "U*'"}, /* 1075 */ {0x1FEC, "R*;"}, /* 1076 */ {0x1FED, "!:"}, /* 1077 */ {0x1FEE, ":'"}, /* 1078 */ {0x1FEF, "!*"}, /* 1079 */ {0x1FF3, "w*j"}, /* 1080 */ {0x1FF6, "w*?"}, /* 1081 */ {0x1FF8, "O*!"}, /* 1082 */ {0x1FF9, "O*'"}, /* 1083 */ {0x1FFA, "W*!"}, /* 1084 */ {0x1FFB, "W*'"}, /* 1085 */ {0x1FFC, "W*J"}, /* 1086 */ {0x1FFD, "/*"}, /* 1087 */ {0x1FFE, ";;"}, /* 1088 */ {0x2002, "1N"}, /* 1089 */ {0x2003, "1M"}, /* 1090 */ {0x2004, "3M"}, /* 1091 */ {0x2005, "4M"}, /* 1092 */ {0x2006, "6M"}, /* 1093 */ {0x2009, "1T"}, /* 1094 */ {0x200A, "1H"}, /* 1095 */ {0x200E, "LR"}, /* 1096 */ {0x200F, "RL"}, /* 1097 */ {0x2010, "-1"}, /* 1098 */ {0x2013, "-N"}, /* 1099 */ {0x2014, "-M"}, /* 1100 */ {0x2015, "-3"}, /* 1101 */ {0x2016, "!2"}, /* 1102 */ {0x2017, "=2"}, /* 1103 */ {0x2018, "'6"}, /* 1104 */ {0x2019, "'9"}, /* 1105 */ {0x201A, ".9"}, /* 1106 */ {0x201B, "9'"}, /* 1107 */ {0x201C, "\"6"}, /* 1108 */ {0x201D, "\"9"}, /* 1109 */ {0x201E, ":9"}, /* 1110 */ {0x201F, "9\""}, /* 1111 */ {0x2020, "/-"}, /* 1112 */ {0x2021, "/="}, /* 1113 */ {0x2022, "sb"}, /* 1114 */ {0x2023, "3b"}, /* 1115 */ {0x2025, ".."}, /* 1116 */ {0x2026, ".3"}, /* 1117 */ {0x2027, ".-"}, /* 1118 */ {0x2030, "%0"}, /* 1119 */ {0x2032, "1'"}, /* 1120 */ {0x2033, "2'"}, /* 1121 */ {0x2034, "3'"}, /* 1122 */ {0x2035, "1\""}, /* 1123 */ {0x2036, "2\""}, /* 1124 */ {0x2037, "3\""}, /* 1125 */ {0x2038, "Ca"}, /* 1126 */ {0x2039, "<1"}, /* 1127 */ {0x203A, ">1"}, /* 1128 */ {0x203B, ":X"}, /* 1129 */ {0x203C, "!*2"}, /* 1130 */ {0x203E, "'-"}, /* 1131 */ {0x2043, "-b"}, /* 1132 */ {0x2044, "/f"}, /* 1133 */ {0x2070, "0S"}, /* 1134 */ {0x2074, "4S"}, /* 1135 */ {0x2075, "5S"}, /* 1136 */ {0x2076, "6S"}, /* 1137 */ {0x2077, "7S"}, /* 1138 */ {0x2078, "8S"}, /* 1139 */ {0x2079, "9S"}, /* 1140 */ {0x207A, "+S"}, /* 1141 */ {0x207B, "-S"}, /* 1142 */ {0x207C, "=S"}, /* 1143 */ {0x207D, "(S"}, /* 1144 */ {0x207E, ")S"}, /* 1145 */ {0x207F, "nS"}, /* 1146 */ {0x2080, "0s"}, /* 1147 */ {0x2081, "1s"}, /* 1148 */ {0x2082, "2s"}, /* 1149 */ {0x2083, "3s"}, /* 1150 */ {0x2084, "4s"}, /* 1151 */ {0x2085, "5s"}, /* 1152 */ {0x2086, "6s"}, /* 1153 */ {0x2087, "7s"}, /* 1154 */ {0x2088, "8s"}, /* 1155 */ {0x2089, "9s"}, /* 1156 */ {0x208A, "+s"}, /* 1157 */ {0x208B, "-s"}, /* 1158 */ {0x208C, "=s"}, /* 1159 */ {0x208D, "(s"}, /* 1160 */ {0x208E, ")s"}, /* 1161 */ {0x20A3, "Ff"}, /* 1162 */ {0x20A4, "Li"}, /* 1163 */ {0x20A7, "Pt"}, /* 1164 */ {0x20A9, "W="}, /* 1165 */ {0x20AA, "NSh"}, /* 1166 */ {0x20AC, "Eu"}, /* 1167 */ {0x20D1, "\"7"}, /* 1168 */ {0x2103, "oC"}, /* 1169 */ {0x2105, "co"}, /* 1170 */ {0x2109, "oF"}, /* 1171 */ {0x2116, "N0"}, /* 1172 */ {0x2117, "PO"}, /* 1173 */ {0x211E, "Rx"}, /* 1174 */ {0x2120, "SM"}, /* 1175 */ {0x2122, "TM"}, /* 1176 */ {0x2126, "Om"}, /* 1177 */ {0x212B, "AO"}, /* 1178 */ {0x212E, "Est"}, /* 1179 */ {0x2153, "13"}, /* 1180 */ {0x2154, "23"}, /* 1181 */ {0x2155, "15"}, /* 1182 */ {0x2156, "25"}, /* 1183 */ {0x2157, "35"}, /* 1184 */ {0x2158, "45"}, /* 1185 */ {0x2159, "16"}, /* 1186 */ {0x215A, "56"}, /* 1187 */ {0x215B, "18"}, /* 1188 */ {0x215C, "38"}, /* 1189 */ {0x215D, "58"}, /* 1190 */ {0x215E, "78"}, /* 1191 */ {0x2160, "1R"}, /* 1192 */ {0x2161, "2R"}, /* 1193 */ {0x2162, "3R"}, /* 1194 */ {0x2163, "4R"}, /* 1195 */ {0x2164, "5R"}, /* 1196 */ {0x2165, "6R"}, /* 1197 */ {0x2166, "7R"}, /* 1198 */ {0x2167, "8R"}, /* 1199 */ {0x2168, "9R"}, /* 1200 */ {0x2169, "aR"}, /* 1201 */ {0x216A, "bR"}, /* 1202 */ {0x216B, "cR"}, /* 1203 */ {0x216C, "50R"}, /* 1204 */ {0x2170, "1r"}, /* 1205 */ {0x2171, "2r"}, /* 1206 */ {0x2172, "3r"}, /* 1207 */ {0x2173, "4r"}, /* 1208 */ {0x2174, "5r"}, /* 1209 */ {0x2175, "6r"}, /* 1210 */ {0x2176, "7r"}, /* 1211 */ {0x2177, "8r"}, /* 1212 */ {0x2178, "9r"}, /* 1213 */ {0x2179, "ar"}, /* 1214 */ {0x217A, "br"}, /* 1215 */ {0x217B, "cr"}, /* 1216 */ {0x217C, "50r"}, /* 1217 */ {0x2190, "<-"}, /* 1218 */ {0x2191, "-!"}, /* 1219 */ {0x2192, "->"}, /* 1220 */ {0x2193, "-v"}, /* 1221 */ {0x2194, "<>"}, /* 1222 */ {0x2195, "UD"}, /* 1223 */ {0x2196, ""}, /* 1225 */ {0x2198, "!!>"}, /* 1226 */ {0x2199, "V"}, /* 1229 */ {0x21D0, "<="}, /* 1230 */ {0x21D2, "=>"}, /* 1231 */ {0x21D4, "=="}, /* 1232 */ {0x2200, "FA"}, /* 1233 */ {0x2202, "dP"}, /* 1234 */ {0x2203, "TE"}, /* 1235 */ {0x2205, "/0"}, /* 1236 */ {0x2206, "DE"}, /* 1237 */ {0x2207, "NB"}, /* 1238 */ {0x2208, "(-"}, /* 1239 */ {0x220B, "-)"}, /* 1240 */ {0x220E, "FP"}, /* 1241 */ {0x220F, "*P"}, /* 1242 */ {0x2211, "+Z"}, /* 1243 */ {0x2212, "-2"}, /* 1244 */ {0x2213, "-+"}, /* 1245 */ {0x2214, ".+"}, /* 1246 */ {0x2217, "*-"}, /* 1247 */ {0x2218, "Ob"}, /* 1248 */ {0x2219, "Sb"}, /* 1249 */ {0x221A, "RT"}, /* 1250 */ {0x221D, "0("}, /* 1251 */ {0x221E, "00"}, /* 1252 */ {0x221F, "-L"}, /* 1253 */ {0x2220, "-V"}, /* 1254 */ {0x2225, "PP"}, /* 1255 */ {0x2227, "AN"}, /* 1256 */ {0x2228, "OR"}, /* 1257 */ {0x2229, "(U"}, /* 1258 */ {0x222A, ")U"}, /* 1259 */ {0x222B, "In"}, /* 1260 */ {0x222C, "DI"}, /* 1261 */ {0x222E, "Io"}, /* 1262 */ {0x2234, ".:"}, /* 1263 */ {0x2235, ":."}, /* 1264 */ {0x2236, ":R"}, /* 1265 */ {0x2237, "::"}, /* 1266 */ {0x223C, "?1"}, /* 1267 */ {0x223E, "CG"}, /* 1268 */ {0x2243, "?-"}, /* 1269 */ {0x2245, "?="}, /* 1270 */ {0x2248, "?2"}, /* 1271 */ {0x224C, "=?"}, /* 1272 */ {0x2253, "HI"}, /* 1273 */ {0x2260, "!="}, /* 1274 */ {0x2261, "=3"}, /* 1275 */ {0x2264, "=<"}, /* 1276 */ {0x2265, ">="}, /* 1277 */ {0x226A, "<*"}, /* 1278 */ {0x226B, "*>"}, /* 1279 */ {0x226E, "!<"}, /* 1280 */ {0x226F, "!>"}, /* 1281 */ {0x2282, "(C"}, /* 1282 */ {0x2283, ")C"}, /* 1283 */ {0x2286, "(_"}, /* 1284 */ {0x2287, ")_"}, /* 1285 */ {0x2299, "0."}, /* 1286 */ {0x229A, "02"}, /* 1287 */ {0x22A5, "-T"}, /* 1288 */ {0x22C5, ".P"}, /* 1289 */ {0x22EE, ":3"}, /* 1290 */ {0x2302, "Eh"}, /* 1291 */ {0x2308, "<7"}, /* 1292 */ {0x2309, ">7"}, /* 1293 */ {0x230A, "7<"}, /* 1294 */ {0x230B, "7>"}, /* 1295 */ {0x2310, "NI"}, /* 1296 */ {0x2312, "(A"}, /* 1297 */ {0x2315, "TR"}, /* 1298 */ {0x2318, "88"}, /* 1299 */ {0x2320, "Iu"}, /* 1300 */ {0x2321, "Il"}, /* 1301 */ {0x2329, ""}, /* 1303 */ {0x2423, "Vs"}, /* 1304 */ {0x2440, "1h"}, /* 1305 */ {0x2441, "3h"}, /* 1306 */ {0x2442, "2h"}, /* 1307 */ {0x2443, "4h"}, /* 1308 */ {0x2446, "1j"}, /* 1309 */ {0x2447, "2j"}, /* 1310 */ {0x2448, "3j"}, /* 1311 */ {0x2449, "4j"}, /* 1312 */ {0x2460, "1-o"}, /* 1313 */ {0x2461, "2-o"}, /* 1314 */ {0x2462, "3-o"}, /* 1315 */ {0x2463, "4-o"}, /* 1316 */ {0x2464, "5-o"}, /* 1317 */ {0x2465, "6-o"}, /* 1318 */ {0x2466, "7-o"}, /* 1319 */ {0x2467, "8-o"}, /* 1320 */ {0x2468, "9-o"}, /* 1321 */ {0x2474, "(1)"}, /* 1322 */ {0x2475, "(2)"}, /* 1323 */ {0x2476, "(3)"}, /* 1324 */ {0x2477, "(4)"}, /* 1325 */ {0x2478, "(5)"}, /* 1326 */ {0x2479, "(6)"}, /* 1327 */ {0x247A, "(7)"}, /* 1328 */ {0x247B, "(8)"}, /* 1329 */ {0x247C, "(9)"}, /* 1330 */ {0x2488, "1."}, /* 1331 */ {0x2489, "2."}, /* 1332 */ {0x248A, "3."}, /* 1333 */ {0x248B, "4."}, /* 1334 */ {0x248C, "5."}, /* 1335 */ {0x248D, "6."}, /* 1336 */ {0x248E, "7."}, /* 1337 */ {0x248F, "8."}, /* 1338 */ {0x2490, "9."}, /* 1339 */ {0x2491, "10."}, /* 1340 */ {0x2492, "11."}, /* 1341 */ {0x2493, "12."}, /* 1342 */ {0x2494, "13."}, /* 1343 */ {0x2495, "14."}, /* 1344 */ {0x2496, "15."}, /* 1345 */ {0x2497, "16."}, /* 1346 */ {0x2498, "17."}, /* 1347 */ {0x2499, "18."}, /* 1348 */ {0x249A, "19."}, /* 1349 */ {0x249B, "20."}, /* 1350 */ {0x249C, "(a)"}, /* 1351 */ {0x249D, "(b)"}, /* 1352 */ {0x249E, "(c)"}, /* 1353 */ {0x249F, "(d)"}, /* 1354 */ {0x24A0, "(e)"}, /* 1355 */ {0x24A1, "(f)"}, /* 1356 */ {0x24A2, "(g)"}, /* 1357 */ {0x24A3, "(h)"}, /* 1358 */ {0x24A4, "(i)"}, /* 1359 */ {0x24A5, "(j)"}, /* 1360 */ {0x24A6, "(k)"}, /* 1361 */ {0x24A7, "(l)"}, /* 1362 */ {0x24A8, "(m)"}, /* 1363 */ {0x24A9, "(n)"}, /* 1364 */ {0x24AA, "(o)"}, /* 1365 */ {0x24AB, "(p)"}, /* 1366 */ {0x24AC, "(q)"}, /* 1367 */ {0x24AD, "(r)"}, /* 1368 */ {0x24AE, "(s)"}, /* 1369 */ {0x24AF, "(t)"}, /* 1370 */ {0x24B0, "(u)"}, /* 1371 */ {0x24B1, "(v)"}, /* 1372 */ {0x24B2, "(w)"}, /* 1373 */ {0x24B3, "(x)"}, /* 1374 */ {0x24B4, "(y)"}, /* 1375 */ {0x24B5, "(z)"}, /* 1376 */ {0x24B6, "A-o"}, /* 1377 */ {0x24B7, "B-o"}, /* 1378 */ {0x24B8, "C-o"}, /* 1379 */ {0x24B9, "D-o"}, /* 1380 */ {0x24BA, "E-o"}, /* 1381 */ {0x24BB, "F-o"}, /* 1382 */ {0x24BC, "G-o"}, /* 1383 */ {0x24BD, "H-o"}, /* 1384 */ {0x24BE, "I-o"}, /* 1385 */ {0x24BF, "J-o"}, /* 1386 */ {0x24C0, "K-o"}, /* 1387 */ {0x24C1, "L-o"}, /* 1388 */ {0x24C2, "M-o"}, /* 1389 */ {0x24C3, "N-o"}, /* 1390 */ {0x24C4, "O-o"}, /* 1391 */ {0x24C5, "P-o"}, /* 1392 */ {0x24C6, "Q-o"}, /* 1393 */ {0x24C7, "R-o"}, /* 1394 */ {0x24C8, "S-o"}, /* 1395 */ {0x24C9, "T-o"}, /* 1396 */ {0x24CA, "U-o"}, /* 1397 */ {0x24CB, "V-o"}, /* 1398 */ {0x24CC, "W-o"}, /* 1399 */ {0x24CD, "X-o"}, /* 1400 */ {0x24CE, "Y-o"}, /* 1401 */ {0x24CF, "Z-o"}, /* 1402 */ {0x24D0, "a-o"}, /* 1403 */ {0x24D1, "b-o"}, /* 1404 */ {0x24D2, "c-o"}, /* 1405 */ {0x24D3, "d-o"}, /* 1406 */ {0x24D4, "e-o"}, /* 1407 */ {0x24D5, "f-o"}, /* 1408 */ {0x24D6, "g-o"}, /* 1409 */ {0x24D7, "h-o"}, /* 1410 */ {0x24D8, "i-o"}, /* 1411 */ {0x24D9, "j-o"}, /* 1412 */ {0x24DA, "k-o"}, /* 1413 */ {0x24DB, "l-o"}, /* 1414 */ {0x24DC, "m-o"}, /* 1415 */ {0x24DD, "n-o"}, /* 1416 */ {0x24DE, "o-o"}, /* 1417 */ {0x24DF, "p-o"}, /* 1418 */ {0x24E0, "q-o"}, /* 1419 */ {0x24E1, "r-o"}, /* 1420 */ {0x24E2, "s-o"}, /* 1421 */ {0x24E3, "t-o"}, /* 1422 */ {0x24E4, "u-o"}, /* 1423 */ {0x24E5, "v-o"}, /* 1424 */ {0x24E6, "w-o"}, /* 1425 */ {0x24E7, "x-o"}, /* 1426 */ {0x24E8, "y-o"}, /* 1427 */ {0x24E9, "z-o"}, /* 1428 */ {0x24EA, "0-o"}, /* 1429 */ {0x2500, "hh"}, /* 1430 */ {0x2501, "HH-"}, /* 1431 */ {0x2502, "vv"}, /* 1432 */ {0x2503, "VV-"}, /* 1433 */ {0x2504, "3-"}, /* 1434 */ {0x2505, "3_"}, /* 1435 */ {0x2506, "3!"}, /* 1436 */ {0x2507, "3/"}, /* 1437 */ {0x2508, "4-"}, /* 1438 */ {0x2509, "4_"}, /* 1439 */ {0x250A, "4!"}, /* 1440 */ {0x250B, "4/"}, /* 1441 */ {0x250C, "dr"}, /* 1442 */ {0x250D, "dR-"}, /* 1443 */ {0x250E, "Dr-"}, /* 1444 */ {0x250F, "DR-"}, /* 1445 */ {0x2510, "dl"}, /* 1446 */ {0x2511, "dL-"}, /* 1447 */ {0x2512, "Dl-"}, /* 1448 */ {0x2513, "LD-"}, /* 1449 */ {0x2514, "ur"}, /* 1450 */ {0x2515, "uR-"}, /* 1451 */ {0x2516, "Ur-"}, /* 1452 */ {0x2517, "UR-"}, /* 1453 */ {0x2518, "ul"}, /* 1454 */ {0x2519, "uL-"}, /* 1455 */ {0x251A, "Ul-"}, /* 1456 */ {0x251B, "UL-"}, /* 1457 */ {0x251C, "vr"}, /* 1458 */ {0x251D, "vR-"}, /* 1459 */ {0x251E, "Udr"}, /* 1460 */ {0x251F, "uDr"}, /* 1461 */ {0x2520, "Vr-"}, /* 1462 */ {0x2521, "UdR"}, /* 1463 */ {0x2522, "uDR"}, /* 1464 */ {0x2523, "VR-"}, /* 1465 */ {0x2524, "vl"}, /* 1466 */ {0x2525, "vL-"}, /* 1467 */ {0x2526, "Udl"}, /* 1468 */ {0x2527, "uDl"}, /* 1469 */ {0x2528, "Vl-"}, /* 1470 */ {0x2529, "UdL"}, /* 1471 */ {0x252A, "uDL"}, /* 1472 */ {0x252B, "VL-"}, /* 1473 */ {0x252C, "dh"}, /* 1474 */ {0x252D, "dLr"}, /* 1475 */ {0x252E, "dlR"}, /* 1476 */ {0x252F, "dH-"}, /* 1477 */ {0x2530, "Dh-"}, /* 1478 */ {0x2531, "DLr"}, /* 1479 */ {0x2532, "DlR"}, /* 1480 */ {0x2533, "DH-"}, /* 1481 */ {0x2534, "uh"}, /* 1482 */ {0x2535, "uLr"}, /* 1483 */ {0x2536, "ulR"}, /* 1484 */ {0x2537, "uH-"}, /* 1485 */ {0x2538, "Uh-"}, /* 1486 */ {0x2539, "ULr"}, /* 1487 */ {0x253A, "UlR"}, /* 1488 */ {0x253B, "UH-"}, /* 1489 */ {0x253C, "vh"}, /* 1490 */ {0x253D, "vLr"}, /* 1491 */ {0x253E, "vlR"}, /* 1492 */ {0x253F, "vH-"}, /* 1493 */ {0x2540, "Udh"}, /* 1494 */ {0x2541, "uDh"}, /* 1495 */ {0x2542, "Vh-"}, /* 1496 */ {0x2547, "UdH"}, /* 1497 */ {0x2548, "uDH"}, /* 1498 */ {0x2549, "VLr"}, /* 1499 */ {0x254A, "VlR"}, /* 1500 */ {0x254B, "VH-"}, /* 1501 */ {0x2550, "HH"}, /* 1502 */ {0x2551, "VV"}, /* 1503 */ {0x2552, "dR"}, /* 1504 */ {0x2553, "Dr"}, /* 1505 */ {0x2554, "DR"}, /* 1506 */ {0x2555, "dL"}, /* 1507 */ {0x2556, "Dl"}, /* 1508 */ {0x2557, "LD"}, /* 1509 */ {0x2558, "uR"}, /* 1510 */ {0x2559, "Ur"}, /* 1511 */ {0x255A, "UR"}, /* 1512 */ {0x255B, "uL"}, /* 1513 */ {0x255C, "Ul"}, /* 1514 */ {0x255D, "UL"}, /* 1515 */ {0x255E, "vR"}, /* 1516 */ {0x255F, "Vr"}, /* 1517 */ {0x2560, "VR"}, /* 1518 */ {0x2561, "vL"}, /* 1519 */ {0x2562, "Vl"}, /* 1520 */ {0x2563, "VL"}, /* 1521 */ {0x2564, "dH"}, /* 1522 */ {0x2565, "Dh"}, /* 1523 */ {0x2566, "DH"}, /* 1524 */ {0x2567, "uH"}, /* 1525 */ {0x2568, "Uh"}, /* 1526 */ {0x2569, "UH"}, /* 1527 */ {0x256A, "vH"}, /* 1528 */ {0x256B, "Vh"}, /* 1529 */ {0x256C, "VH"}, /* 1530 */ {0x2571, "FD"}, /* 1531 */ {0x2572, "BD"}, /* 1532 */ {0x2580, "TB"}, /* 1533 */ {0x2584, "LB"}, /* 1534 */ {0x2588, "FB"}, /* 1535 */ {0x258C, "lB"}, /* 1536 */ {0x2590, "RB"}, /* 1537 */ {0x2591, ".S"}, /* 1538 */ {0x2592, ":S"}, /* 1539 */ {0x2593, "?S"}, /* 1540 */ {0x25A0, "fS"}, /* 1541 */ {0x25A1, "OS"}, /* 1542 */ {0x25A2, "RO"}, /* 1543 */ {0x25A3, "Rr"}, /* 1544 */ {0x25A4, "RF"}, /* 1545 */ {0x25A5, "RY"}, /* 1546 */ {0x25A6, "RH"}, /* 1547 */ {0x25A7, "RZ"}, /* 1548 */ {0x25A8, "RK"}, /* 1549 */ {0x25A9, "RX"}, /* 1550 */ {0x25AA, "sB"}, /* 1551 */ {0x25AC, "SR"}, /* 1552 */ {0x25AD, "Or"}, /* 1553 */ {0x25B2, "UT"}, /* 1554 */ {0x25B3, "uT"}, /* 1555 */ {0x25B7, "Tr"}, /* 1556 */ {0x25BA, "PR"}, /* 1557 */ {0x25BC, "Dt"}, /* 1558 */ {0x25BD, "dT"}, /* 1559 */ {0x25C1, "Tl"}, /* 1560 */ {0x25C4, "PL"}, /* 1561 */ {0x25C6, "Db"}, /* 1562 */ {0x25C7, "Dw"}, /* 1563 */ {0x25CA, "LZ"}, /* 1564 */ {0x25CB, "0m"}, /* 1565 */ {0x25CE, "0o"}, /* 1566 */ {0x25CF, "0M"}, /* 1567 */ {0x25D0, "0L"}, /* 1568 */ {0x25D1, "0R"}, /* 1569 */ {0x25D8, "Sn"}, /* 1570 */ {0x25D9, "Ic"}, /* 1571 */ {0x25E2, "Fd"}, /* 1572 */ {0x25E3, "Bd"}, /* 1573 */ {0x25EF, "Ci"}, /* 1574 */ {0x2605, "*2"}, /* 1575 */ {0x2606, "*1"}, /* 1576 */ {0x260E, "TEL"}, /* 1577 */ {0x260F, "tel"}, /* 1578 */ {0x261C, "H"}, /* 1580 */ {0x263A, "0u"}, /* 1581 */ {0x263B, "0U"}, /* 1582 */ {0x263C, "SU"}, /* 1583 */ {0x2640, "Fm"}, /* 1584 */ {0x2642, "Ml"}, /* 1585 */ {0x2660, "cS"}, /* 1586 */ {0x2661, "cH"}, /* 1587 */ {0x2662, "cD"}, /* 1588 */ {0x2663, "cC"}, /* 1589 */ {0x2664, "cS-"}, /* 1590 */ {0x2665, "cH-"}, /* 1591 */ {0x2666, "cD-"}, /* 1592 */ {0x2667, "cC-"}, /* 1593 */ {0x2669, "Md"}, /* 1594 */ {0x266A, "M8"}, /* 1595 */ {0x266B, "M2"}, /* 1596 */ {0x266C, "M16"}, /* 1597 */ {0x266D, "Mb"}, /* 1598 */ {0x266E, "Mx"}, /* 1599 */ {0x266F, "MX"}, /* 1600 */ {0x2713, "OK"}, /* 1601 */ {0x2717, "XX"}, /* 1602 */ {0x2720, "-X"}, /* 1603 */ {0x3000, "IS"}, /* 1604 */ {0x3001, ",_"}, /* 1605 */ {0x3002, "._"}, /* 1606 */ {0x3003, "+\""}, /* 1607 */ {0x3004, "JIS"}, /* 1608 */ {0x3005, "*_"}, /* 1609 */ {0x3006, ";_"}, /* 1610 */ {0x3007, "0_"}, /* 1611 */ {0x300A, "<+"}, /* 1612 */ {0x300B, ">+"}, /* 1613 */ {0x300C, "<'"}, /* 1614 */ {0x300D, ">'"}, /* 1615 */ {0x300E, "<\""}, /* 1616 */ {0x300F, ">\""}, /* 1617 */ {0x3010, "(\""}, /* 1618 */ {0x3011, ")\""}, /* 1619 */ {0x3012, "=T"}, /* 1620 */ {0x3013, "=_"}, /* 1621 */ {0x3014, "('"}, /* 1622 */ {0x3015, ")'"}, /* 1623 */ {0x3016, "(I"}, /* 1624 */ {0x3017, ")I"}, /* 1625 */ {0x301C, "-?"}, /* 1626 */ {0x3041, "A5"}, /* 1627 */ {0x3042, "a5"}, /* 1628 */ {0x3043, "I5"}, /* 1629 */ {0x3044, "i5"}, /* 1630 */ {0x3045, "U5"}, /* 1631 */ {0x3046, "u5"}, /* 1632 */ {0x3047, "E5"}, /* 1633 */ {0x3048, "e5"}, /* 1634 */ {0x3049, "O5"}, /* 1635 */ {0x304A, "o5"}, /* 1636 */ {0x304B, "ka"}, /* 1637 */ {0x304C, "ga"}, /* 1638 */ {0x304D, "ki"}, /* 1639 */ {0x304E, "gi"}, /* 1640 */ {0x304F, "ku"}, /* 1641 */ {0x3050, "gu"}, /* 1642 */ {0x3051, "ke"}, /* 1643 */ {0x3052, "ge"}, /* 1644 */ {0x3053, "ko"}, /* 1645 */ {0x3054, "go"}, /* 1646 */ {0x3055, "sa"}, /* 1647 */ {0x3056, "za"}, /* 1648 */ {0x3057, "si"}, /* 1649 */ {0x3058, "zi"}, /* 1650 */ {0x3059, "su"}, /* 1651 */ {0x305A, "zu"}, /* 1652 */ {0x305B, "se"}, /* 1653 */ {0x305C, "ze"}, /* 1654 */ {0x305D, "so"}, /* 1655 */ {0x305E, "zo"}, /* 1656 */ {0x305F, "ta"}, /* 1657 */ {0x3060, "da"}, /* 1658 */ {0x3061, "ti"}, /* 1659 */ {0x3062, "di"}, /* 1660 */ {0x3063, "tU"}, /* 1661 */ {0x3064, "tu"}, /* 1662 */ {0x3065, "du"}, /* 1663 */ {0x3066, "te"}, /* 1664 */ {0x3067, "de"}, /* 1665 */ {0x3068, "to"}, /* 1666 */ {0x3069, "do"}, /* 1667 */ {0x306A, "na"}, /* 1668 */ {0x306B, "ni"}, /* 1669 */ {0x306C, "nu"}, /* 1670 */ {0x306D, "ne"}, /* 1671 */ {0x306E, "no"}, /* 1672 */ {0x306F, "ha"}, /* 1673 */ {0x3070, "ba"}, /* 1674 */ {0x3071, "pa"}, /* 1675 */ {0x3072, "hi"}, /* 1676 */ {0x3073, "bi"}, /* 1677 */ {0x3074, "pi"}, /* 1678 */ {0x3075, "hu"}, /* 1679 */ {0x3076, "bu"}, /* 1680 */ {0x3077, "pu"}, /* 1681 */ {0x3078, "he"}, /* 1682 */ {0x3079, "be"}, /* 1683 */ {0x307A, "pe"}, /* 1684 */ {0x307B, "ho"}, /* 1685 */ {0x307C, "bo"}, /* 1686 */ {0x307D, "po"}, /* 1687 */ {0x307E, "ma"}, /* 1688 */ {0x307F, "mi"}, /* 1689 */ {0x3080, "mu"}, /* 1690 */ {0x3081, "me"}, /* 1691 */ {0x3082, "mo"}, /* 1692 */ {0x3083, "yA"}, /* 1693 */ {0x3084, "ya"}, /* 1694 */ {0x3085, "yU"}, /* 1695 */ {0x3086, "yu"}, /* 1696 */ {0x3087, "yO"}, /* 1697 */ {0x3088, "yo"}, /* 1698 */ {0x3089, "ra"}, /* 1699 */ {0x308A, "ri"}, /* 1700 */ {0x308B, "ru"}, /* 1701 */ {0x308C, "re"}, /* 1702 */ {0x308D, "ro"}, /* 1703 */ {0x308E, "wA"}, /* 1704 */ {0x308F, "wa"}, /* 1705 */ {0x3090, "wi"}, /* 1706 */ {0x3091, "we"}, /* 1707 */ {0x3092, "wo"}, /* 1708 */ {0x3093, "n5"}, /* 1709 */ {0x3094, "vu"}, /* 1710 */ {0x309B, "\"5"}, /* 1711 */ {0x309C, "05"}, /* 1712 */ {0x309D, "*5"}, /* 1713 */ {0x309E, "+5"}, /* 1714 */ {0x30A1, "a6"}, /* 1715 */ {0x30A2, "A6"}, /* 1716 */ {0x30A3, "i6"}, /* 1717 */ {0x30A4, "I6"}, /* 1718 */ {0x30A5, "u6"}, /* 1719 */ {0x30A6, "U6"}, /* 1720 */ {0x30A7, "e6"}, /* 1721 */ {0x30A8, "E6"}, /* 1722 */ {0x30A9, "o6"}, /* 1723 */ {0x30AA, "O6"}, /* 1724 */ {0x30AB, "Ka"}, /* 1725 */ {0x30AC, "Ga"}, /* 1726 */ {0x30AD, "Ki"}, /* 1727 */ {0x30AE, "Gi"}, /* 1728 */ {0x30AF, "Ku"}, /* 1729 */ {0x30B0, "Gu"}, /* 1730 */ {0x30B1, "Ke"}, /* 1731 */ {0x30B2, "Ge"}, /* 1732 */ {0x30B3, "Ko"}, /* 1733 */ {0x30B4, "Go"}, /* 1734 */ {0x30B5, "Sa"}, /* 1735 */ {0x30B6, "Za"}, /* 1736 */ {0x30B7, "Si"}, /* 1737 */ {0x30B8, "Zi"}, /* 1738 */ {0x30B9, "Su"}, /* 1739 */ {0x30BA, "Zu"}, /* 1740 */ {0x30BB, "Se"}, /* 1741 */ {0x30BC, "Ze"}, /* 1742 */ {0x30BD, "So"}, /* 1743 */ {0x30BE, "Zo"}, /* 1744 */ {0x30BF, "Ta"}, /* 1745 */ {0x30C0, "Da"}, /* 1746 */ {0x30C1, "Ti"}, /* 1747 */ {0x30C2, "Di"}, /* 1748 */ {0x30C3, "TU"}, /* 1749 */ {0x30C4, "Tu"}, /* 1750 */ {0x30C5, "Du"}, /* 1751 */ {0x30C6, "Te"}, /* 1752 */ {0x30C7, "De"}, /* 1753 */ {0x30C8, "To"}, /* 1754 */ {0x30C9, "Do"}, /* 1755 */ {0x30CA, "Na"}, /* 1756 */ {0x30CB, "Ni"}, /* 1757 */ {0x30CC, "Nu"}, /* 1758 */ {0x30CD, "Ne"}, /* 1759 */ {0x30CE, "No"}, /* 1760 */ {0x30CF, "Ha"}, /* 1761 */ {0x30D0, "Ba"}, /* 1762 */ {0x30D1, "Pa"}, /* 1763 */ {0x30D2, "Hi"}, /* 1764 */ {0x30D3, "Bi"}, /* 1765 */ {0x30D4, "Pi"}, /* 1766 */ {0x30D5, "Hu"}, /* 1767 */ {0x30D6, "Bu"}, /* 1768 */ {0x30D7, "Pu"}, /* 1769 */ {0x30D8, "He"}, /* 1770 */ {0x30D9, "Be"}, /* 1771 */ {0x30DA, "Pe"}, /* 1772 */ {0x30DB, "Ho"}, /* 1773 */ {0x30DC, "Bo"}, /* 1774 */ {0x30DD, "Po"}, /* 1775 */ {0x30DE, "Ma"}, /* 1776 */ {0x30DF, "Mi"}, /* 1777 */ {0x30E0, "Mu"}, /* 1778 */ {0x30E1, "Me"}, /* 1779 */ {0x30E2, "Mo"}, /* 1780 */ {0x30E3, "YA"}, /* 1781 */ {0x30E4, "Ya"}, /* 1782 */ {0x30E5, "YU"}, /* 1783 */ {0x30E6, "Yu"}, /* 1784 */ {0x30E7, "YO"}, /* 1785 */ {0x30E8, "Yo"}, /* 1786 */ {0x30E9, "Ra"}, /* 1787 */ {0x30EA, "Ri"}, /* 1788 */ {0x30EB, "Ru"}, /* 1789 */ {0x30EC, "Re"}, /* 1790 */ {0x30ED, "Ro"}, /* 1791 */ {0x30EE, "WA"}, /* 1792 */ {0x30EF, "Wa"}, /* 1793 */ {0x30F0, "Wi"}, /* 1794 */ {0x30F1, "We"}, /* 1795 */ {0x30F2, "Wo"}, /* 1796 */ {0x30F3, "N6"}, /* 1797 */ {0x30F4, "Vu"}, /* 1798 */ {0x30F5, "KA"}, /* 1799 */ {0x30F6, "KE"}, /* 1800 */ {0x30F7, "Va"}, /* 1801 */ {0x30F8, "Vi"}, /* 1802 */ {0x30F9, "Ve"}, /* 1803 */ {0x30FA, "Vo"}, /* 1804 */ {0x30FB, ".6"}, /* 1805 */ {0x30FC, "-6"}, /* 1806 */ {0x30FD, "*6"}, /* 1807 */ {0x30FE, "+6"}, /* 1808 */ {0x3105, "b4"}, /* 1809 */ {0x3106, "p4"}, /* 1810 */ {0x3107, "m4"}, /* 1811 */ {0x3108, "f4"}, /* 1812 */ {0x3109, "d4"}, /* 1813 */ {0x310A, "t4"}, /* 1814 */ {0x310B, "n4"}, /* 1815 */ {0x310C, "l4"}, /* 1816 */ {0x310D, "g4"}, /* 1817 */ {0x310E, "k4"}, /* 1818 */ {0x310F, "h4"}, /* 1819 */ {0x3110, "j4"}, /* 1820 */ {0x3111, "q4"}, /* 1821 */ {0x3112, "x4"}, /* 1822 */ {0x3113, "zh"}, /* 1823 */ {0x3114, "ch"}, /* 1824 */ {0x3115, "sh"}, /* 1825 */ {0x3116, "r4"}, /* 1826 */ {0x3117, "z4"}, /* 1827 */ {0x3118, "c4"}, /* 1828 */ {0x3119, "s4"}, /* 1829 */ {0x311A, "a4"}, /* 1830 */ {0x311B, "o4"}, /* 1831 */ {0x311C, "e4"}, /* 1832 */ {0x311D, "eh4"}, /* 1833 */ {0x311E, "ai"}, /* 1834 */ {0x311F, "ei"}, /* 1835 */ {0x3120, "au"}, /* 1836 */ {0x3121, "ou"}, /* 1837 */ {0x3122, "an"}, /* 1838 */ {0x3123, "en"}, /* 1839 */ {0x3124, "aN"}, /* 1840 */ {0x3125, "eN"}, /* 1841 */ {0x3126, "er"}, /* 1842 */ {0x3127, "i4"}, /* 1843 */ {0x3128, "u4"}, /* 1844 */ {0x3129, "iu"}, /* 1845 */ {0x312A, "v4"}, /* 1846 */ {0x312B, "nG"}, /* 1847 */ {0x312C, "gn"}, /* 1848 */ {0x3220, "1c"}, /* 1849 */ {0x3221, "2c"}, /* 1850 */ {0x3222, "3c"}, /* 1851 */ {0x3223, "4c"}, /* 1852 */ {0x3224, "5c"}, /* 1853 */ {0x3225, "6c"}, /* 1854 */ {0x3226, "7c"}, /* 1855 */ {0x3227, "8c"}, /* 1856 */ {0x3228, "9c"}, /* 1857 */ {0x3229, "10c"}, /* 1858 */ {0x327F, "KSC"}, /* 1859 */ {0x33C2, "am"}, /* 1860 */ {0x33D8, "pm"}, /* 1861 */ {0xE000, "\"3"}, /* 1862 */ {0xE001, "\"1"}, /* 1863 */ {0xE002, "\"!"}, /* 1864 */ {0xE003, "\"'"}, /* 1865 */ {0xE004, "\">"}, /* 1866 */ {0xE005, "\"?"}, /* 1867 */ {0xE006, "\"-"}, /* 1868 */ {0xE007, "\"("}, /* 1869 */ {0xE008, "\"."}, /* 1870 */ {0xE009, "\":"}, /* 1871 */ {0xE00A, "\"0"}, /* 1872 */ {0xE00B, "\","}, /* 1873 */ {0xE00C, "\"_"}, /* 1874 */ {0xE00D, "\"\""}, /* 1875 */ {0xE00E, "\";"}, /* 1876 */ {0xE00F, "\"<"}, /* 1877 */ {0xE010, "\"="}, /* 1878 */ {0xE011, "\"/"}, /* 1879 */ {0xE012, "\"p"}, /* 1880 */ {0xE013, "\"d"}, /* 1881 */ {0xE014, "\"i"}, /* 1882 */ {0xE015, "+_"}, /* 1883 */ {0xE016, "a+:"}, /* 1884 */ {0xE017, "Tel"}, /* 1885 */ {0xE018, "UA"}, /* 1886 */ {0xE019, "UB"}, /* 1887 */ {0xE01A, "t3"}, /* 1888 */ {0xE01B, "m3"}, /* 1889 */ {0xE01C, "k3"}, /* 1890 */ {0xE01D, "p3"}, /* 1891 */ {0xE01E, "Mc"}, /* 1892 */ {0xE01F, "Fl"}, /* 1893 */ {0xE020, "Ss"}, /* 1894 */ {0xE021, "Ch"}, /* 1895 */ {0xE022, "CH"}, /* 1896 */ {0xE023, "__"}, /* 1897 */ {0xE024, "/c"}, /* 1898 */ {0xFB00, "ff"}, /* 1899 */ {0xFB01, "fi"}, /* 1900 */ {0xFB02, "fl"}, /* 1901 */ {0xFB03, "ffi"}, /* 1902 */ {0xFB04, "ffl"}, /* 1903 */ {0xFB05, "St"}, /* 1904 */ {0xFB06, "st"}, /* 1905 */ {0xFE7D, "3+;"}, /* 1906 */ {0xFE82, "aM."}, /* 1907 */ {0xFE84, "aH."}, /* 1908 */ {0xFE88, "ah."}, /* 1909 */ {0xFE8D, "a+-"}, /* 1910 */ {0xFE8E, "a+."}, /* 1911 */ {0xFE8F, "b+-"}, /* 1912 */ {0xFE90, "b+."}, /* 1913 */ {0xFE91, "b+,"}, /* 1914 */ {0xFE92, "b+;"}, /* 1915 */ {0xFE93, "tm-"}, /* 1916 */ {0xFE94, "tm."}, /* 1917 */ {0xFE95, "t+-"}, /* 1918 */ {0xFE96, "t+."}, /* 1919 */ {0xFE97, "t+,"}, /* 1920 */ {0xFE98, "t+;"}, /* 1921 */ {0xFE99, "tk-"}, /* 1922 */ {0xFE9A, "tk."}, /* 1923 */ {0xFE9B, "tk,"}, /* 1924 */ {0xFE9C, "tk;"}, /* 1925 */ {0xFE9D, "g+-"}, /* 1926 */ {0xFE9E, "g+."}, /* 1927 */ {0xFE9F, "g+,"}, /* 1928 */ {0xFEA0, "g+;"}, /* 1929 */ {0xFEA1, "hk-"}, /* 1930 */ {0xFEA2, "hk."}, /* 1931 */ {0xFEA3, "hk,"}, /* 1932 */ {0xFEA4, "hk;"}, /* 1933 */ {0xFEA5, "x+-"}, /* 1934 */ {0xFEA6, "x+."}, /* 1935 */ {0xFEA7, "x+,"}, /* 1936 */ {0xFEA8, "x+;"}, /* 1937 */ {0xFEA9, "d+-"}, /* 1938 */ {0xFEAA, "d+."}, /* 1939 */ {0xFEAB, "dk-"}, /* 1940 */ {0xFEAC, "dk."}, /* 1941 */ {0xFEAD, "r+-"}, /* 1942 */ {0xFEAE, "r+."}, /* 1943 */ {0xFEAF, "z+-"}, /* 1944 */ {0xFEB0, "z+."}, /* 1945 */ {0xFEB1, "s+-"}, /* 1946 */ {0xFEB2, "s+."}, /* 1947 */ {0xFEB3, "s+,"}, /* 1948 */ {0xFEB4, "s+;"}, /* 1949 */ {0xFEB5, "sn-"}, /* 1950 */ {0xFEB6, "sn."}, /* 1951 */ {0xFEB7, "sn,"}, /* 1952 */ {0xFEB8, "sn;"}, /* 1953 */ {0xFEB9, "c+-"}, /* 1954 */ {0xFEBA, "c+."}, /* 1955 */ {0xFEBB, "c+,"}, /* 1956 */ {0xFEBC, "c+;"}, /* 1957 */ {0xFEBD, "dd-"}, /* 1958 */ {0xFEBE, "dd."}, /* 1959 */ {0xFEBF, "dd,"}, /* 1960 */ {0xFEC0, "dd;"}, /* 1961 */ {0xFEC1, "tj-"}, /* 1962 */ {0xFEC2, "tj."}, /* 1963 */ {0xFEC3, "tj,"}, /* 1964 */ {0xFEC4, "tj;"}, /* 1965 */ {0xFEC5, "zH-"}, /* 1966 */ {0xFEC6, "zH."}, /* 1967 */ {0xFEC7, "zH,"}, /* 1968 */ {0xFEC8, "zH;"}, /* 1969 */ {0xFEC9, "e+-"}, /* 1970 */ {0xFECA, "e+."}, /* 1971 */ {0xFECB, "e+,"}, /* 1972 */ {0xFECC, "e+;"}, /* 1973 */ {0xFECD, "i+-"}, /* 1974 */ {0xFECE, "i+."}, /* 1975 */ {0xFECF, "i+,"}, /* 1976 */ {0xFED0, "i+;"}, /* 1977 */ {0xFED1, "f+-"}, /* 1978 */ {0xFED2, "f+."}, /* 1979 */ {0xFED3, "f+,"}, /* 1980 */ {0xFED4, "f+;"}, /* 1981 */ {0xFED5, "q+-"}, /* 1982 */ {0xFED6, "q+."}, /* 1983 */ {0xFED7, "q+,"}, /* 1984 */ {0xFED8, "q+;"}, /* 1985 */ {0xFED9, "k+-"}, /* 1986 */ {0xFEDA, "k+."}, /* 1987 */ {0xFEDB, "k+,"}, /* 1988 */ {0xFEDC, "k+;"}, /* 1989 */ {0xFEDD, "l+-"}, /* 1990 */ {0xFEDE, "l+."}, /* 1991 */ {0xFEDF, "l+,"}, /* 1992 */ {0xFEE0, "l+;"}, /* 1993 */ {0xFEE1, "m+-"}, /* 1994 */ {0xFEE2, "m+."}, /* 1995 */ {0xFEE3, "m+,"}, /* 1996 */ {0xFEE4, "m+;"}, /* 1997 */ {0xFEE5, "n+-"}, /* 1998 */ {0xFEE6, "n+."}, /* 1999 */ {0xFEE7, "n+,"}, /* 2000 */ {0xFEE8, "n+;"}, /* 2001 */ {0xFEE9, "h+-"}, /* 2002 */ {0xFEEA, "h+."}, /* 2003 */ {0xFEEB, "h+,"}, /* 2004 */ {0xFEEC, "h+;"}, /* 2005 */ {0xFEED, "w+-"}, /* 2006 */ {0xFEEE, "w+."}, /* 2007 */ {0xFEEF, "j+-"}, /* 2008 */ {0xFEF0, "j+."}, /* 2009 */ {0xFEF1, "y+-"}, /* 2010 */ {0xFEF2, "y+."}, /* 2011 */ {0xFEF3, "y+,"}, /* 2012 */ {0xFEF4, "y+;"}, /* 2013 */ {0xFEF5, "lM-"}, /* 2014 */ {0xFEF6, "lM."}, /* 2015 */ {0xFEF7, "lH-"}, /* 2016 */ {0xFEF8, "lH."}, /* 2017 */ {0xFEF9, "lh-"}, /* 2018 */ {0xFEFA, "lh."}, /* 2019 */ {0xFEFB, "la-"}, /* 2020 */ {0xFEFC, "la."}, }; static const unsigned short inverse[TABLE_LENGTH] = { /* 0 */ 33, 124, 1225, 125, 1078, 1129, 1101, 1076, 1279, 1273, /* 10 */ 1280, 161, 34, 1863, 1874, 1864, 1868, 748, 1872, 1867, /* 20 */ 1869, 1878, 1871, 1862, 1861, 1710, 1107, 1167, 1108, 1870, /* 30 */ 1875, 1876, 1877, 1865, 1866, 1873, 1880, 1881, 1879, 37, /* 40 */ 618, 650, 1118, 38, 39, 96, 494, 500, 180, 489, /* 50 */ 499, 751, 184, 1130, 490, 491, 1103, 1104, 168, 492, /* 60 */ 486, 94, 126, 495, 175, 329, 40, 123, 1617, 1621, /* 70 */ 1238, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, /* 80 */ 1296, 1281, 1623, 1143, 1257, 1283, 1350, 1351, 1352, 1353, /* 90 */ 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, /* 100 */ 1364, 1365, 1366, 1367, 1159, 1368, 1369, 1370, 1371, 1372, /* 110 */ 1373, 1374, 1375, 41, 1618, 1622, 1042, 93, 1282, 1624, /* 120 */ 1144, 1258, 1284, 1160, 42, 1246, 1575, 1574, 1712, 1806, /* 130 */ 1278, 1241, 215, 1608, 558, 43, 1606, 736, 177, 1713, /* 140 */ 1807, 1140, 1242, 1882, 1156, 44, 1053, 1054, 707, 1044, /* 150 */ 496, 1604, 45, 1218, 1239, 1244, 173, 1097, 1243, 1100, /* 160 */ 1805, 247, 1219, 1625, 1252, 1099, 1098, 1141, 1287, 1253, /* 170 */ 1602, 170, 1131, 186, 1157, 1220, 46, 502, 1245, 1117, /* 180 */ 1115, 1116, 1804, 1105, 1262, 183, 1288, 1537, 1605, 47, /* 190 */ 1086, 750, 1111, 92, 1224, 1235, 1112, 1302, 1897, 1132, /* 200 */ 48, 1250, 754, 1428, 1285, 1251, 1286, 1711, 1567, 1566, /* 210 */ 1568, 1133, 1581, 1610, 755, 1564, 1565, 1146, 1580, 49, /* 220 */ 488, 1122, 1119, 752, 487, 1312, 1330, 1339, 1857, 1340, /* 230 */ 189, 1341, 1179, 1342, 188, 1343, 1181, 1344, 1185, 1345, /* 240 */ 1346, 1187, 1347, 1348, 485, 493, 1094, 1089, 1088, 1191, /* 250 */ 185, 1093, 756, 1848, 1304, 1308, 1204, 1147, 50, 1123, /* 260 */ 1120, 1313, 1331, 1349, 1180, 1182, 1192, 178, 757, 1849, /* 270 */ 1306, 1309, 1205, 1148, 51, 1435, 1124, 1121, 753, 1905, /* 280 */ 1433, 1314, 1332, 1436, 190, 1183, 1188, 1090, 1193, 179, /* 290 */ 1434, 758, 1114, 1850, 1305, 1310, 1206, 1149, 52, 1439, /* 300 */ 1437, 1315, 1333, 1440, 1184, 1091, 1194, 1134, 1438, 759, /* 310 */ 1851, 1307, 1311, 1207, 1150, 53, 1316, 1334, 1203, 1216, /* 320 */ 1186, 1189, 1195, 1135, 760, 1852, 1208, 1151, 54, 1317, /* 330 */ 1335, 1092, 1196, 1136, 761, 1853, 1209, 1152, 55, 1318, /* 340 */ 1336, 1190, 1293, 1294, 1197, 1137, 762, 1854, 1210, 1153, /* 350 */ 56, 1319, 1337, 1298, 1198, 1138, 763, 1855, 1211, 1154, /* 360 */ 57, 1110, 1106, 1320, 1338, 1199, 1139, 764, 1856, 1212, /* 370 */ 1155, 58, 1077, 747, 1263, 1289, 1109, 1265, 1264, 1538, /* 380 */ 1128, 59, 1063, 1064, 708, 1087, 484, 1609, 60, 1223, /* 390 */ 1615, 1613, 91, 1277, 1611, 1217, 1301, 1226, 1126, 1291, /* 400 */ 171, 1229, 1221, 1578, 61, 616, 648, 749, 1102, 1274, /* 410 */ 1275, 1231, 1230, 1271, 1142, 1619, 1620, 1158, 62, 1616, /* 420 */ 1614, 1612, 1127, 1292, 1276, 187, 1579, 1228, 63, 498, /* 430 */ 1045, 709, 1055, 1268, 1266, 1270, 1046, 1065, 1269, 191, /* 440 */ 1539, 65, 192, 458, 501, 193, 258, 928, 926, 930, /* 450 */ 932, 460, 510, 1039, 1040, 1037, 994, 1038, 995, 1041, /* 460 */ 680, 256, 914, 772, 1376, 428, 916, 432, 1626, 1715, /* 470 */ 430, 196, 260, 411, 590, 194, 920, 918, 922, 924, /* 480 */ 195, 197, 452, 159, 198, 454, 6, 1255, 1177, 64, /* 490 */ 66, 511, 681, 776, 1377, 774, 385, 591, 166, 1531, /* 500 */ 130, 7, 8, 778, 1761, 1572, 1770, 1764, 1773, 1767, /* 510 */ 67, 613, 262, 523, 199, 780, 1378, 266, 386, 676, /* 520 */ 268, 612, 264, 148, 1267, 1895, 155, 24, 13, 1125, /* 530 */ 1894, 1573, 169, 162, 164, 68, 577, 513, 683, 788, /* 540 */ 208, 784, 790, 1379, 782, 272, 17, 18, 19, 20, /* 550 */ 270, 594, 144, 1236, 176, 1523, 1480, 1260, 16, 1478, /* 560 */ 36, 1505, 1444, 580, 127, 589, 447, 402, 786, 1745, /* 570 */ 1561, 1752, 1522, 1477, 1747, 1507, 1447, 1479, 1754, 1504, /* 580 */ 1443, 1557, 1750, 1562, 448, 403, 69, 200, 462, 503, /* 590 */ 201, 276, 464, 514, 1049, 998, 999, 698, 800, 274, /* 600 */ 792, 794, 934, 796, 798, 1380, 278, 936, 1632, 1721, /* 610 */ 203, 280, 282, 595, 202, 942, 940, 944, 946, 938, /* 620 */ 23, 27, 401, 151, 25, 5, 135, 4, 3, 444, /* 630 */ 1290, 1178, 1166, 70, 530, 1381, 802, 388, 672, 610, /* 640 */ 1232, 1534, 1530, 12, 1240, 28, 1571, 1161, 1892, 1583, /* 650 */ 71, 578, 450, 286, 512, 682, 290, 804, 1382, 288, /* 660 */ 434, 678, 436, 593, 284, 153, 29, 1725, 1731, 1727, /* 670 */ 1733, 1729, 72, 710, 517, 684, 812, 814, 808, 1383, /* 680 */ 806, 294, 810, 611, 292, 1501, 1430, 1272, 137, 129, /* 690 */ 136, 9, 1760, 1769, 1763, 1772, 1766, 73, 204, 466, /* 700 */ 505, 205, 300, 468, 518, 1061, 1062, 1059, 1006, 1060, /* 710 */ 1007, 298, 950, 816, 1384, 304, 948, 1628, 1717, 207, /* 720 */ 818, 302, 413, 598, 206, 296, 579, 581, 306, 132, /* 730 */ 576, 1603, 1570, 1300, 1259, 1261, 1299, 74, 583, 534, /* 740 */ 689, 1385, 1043, 599, 308, 621, 619, 1607, 620, 75, /* 750 */ 690, 820, 519, 691, 310, 822, 1386, 390, 574, 438, /* 760 */ 600, 1798, 1799, 587, 1858, 824, 1724, 1730, 1726, 1732, /* 770 */ 1728, 76, 313, 520, 692, 315, 826, 830, 1387, 319, /* 780 */ 321, 317, 601, 1533, 1508, 1448, 10, 584, 405, 1095, /* 790 */ 1563, 828, 1162, 406, 77, 693, 832, 521, 694, 836, /* 800 */ 1388, 834, 1596, 1595, 573, 1594, 602, 149, 1599, 1775, /* 810 */ 1597, 1891, 1593, 1778, 1776, 1584, 1779, 1777, 1598, 181, /* 820 */ 78, 695, 323, 522, 696, 325, 840, 844, 1389, 838, /* 830 */ 1171, 1796, 327, 603, 209, 1237, 330, 131, 1295, 585, /* 840 */ 408, 21, 133, 172, 160, 1165, 0, 842, 1755, 35, /* 850 */ 1758, 1756, 409, 1759, 1757, 79, 210, 470, 336, 506, /* 860 */ 211, 334, 472, 524, 1081, 1082, 1010, 1011, 332, 850, /* 870 */ 852, 952, 1390, 216, 456, 442, 954, 670, 1634, 1723, /* 880 */ 392, 966, 964, 968, 970, 214, 440, 415, 604, 212, /* 890 */ 958, 956, 960, 962, 213, 846, 848, 157, 338, 394, /* 900 */ 1600, 1256, 1541, 1247, 1176, 1552, 80, 699, 854, 525, /* 910 */ 700, 1391, 856, 145, 146, 575, 605, 128, 139, 182, /* 920 */ 1560, 158, 1172, 1254, 1556, 140, 1762, 163, 1771, 1765, /* 930 */ 1774, 1163, 1768, 81, 532, 703, 1392, 82, 474, 340, /* 940 */ 476, 526, 1075, 704, 342, 860, 1393, 858, 344, 606, /* 950 */ 1536, 1544, 1546, 141, 1548, 1096, 1542, 30, 1249, 1549, /* 960 */ 1545, 1547, 862, 1786, 1789, 174, 1787, 1790, 1543, 1788, /* 970 */ 1173, 83, 614, 346, 868, 527, 697, 350, 866, 1394, /* 980 */ 864, 142, 143, 352, 870, 607, 348, 134, 26, 154, /* 990 */ 167, 150, 1, 15, 1174, 14, 32, 1551, 152, 156, /* 1000 */ 1582, 2, 22, 1734, 1248, 615, 1740, 705, 1736, 1569, /* 1010 */ 1742, 1893, 1903, 1738, 84, 528, 706, 354, 874, 878, /* 1020 */ 1395, 872, 358, 572, 356, 608, 1532, 1234, 1576, 222, /* 1030 */ 1175, 1297, 147, 1748, 876, 1744, 1751, 1884, 1746, 688, /* 1040 */ 1559, 1753, 1555, 586, 1749, 85, 217, 478, 368, 507, /* 1050 */ 218, 364, 480, 529, 1073, 1074, 1071, 1072, 1014, 362, /* 1060 */ 972, 886, 882, 880, 1396, 366, 974, 1630, 1719, 397, /* 1070 */ 978, 976, 980, 982, 220, 425, 421, 419, 423, 370, /* 1080 */ 417, 609, 219, 360, 884, 1885, 1886, 1222, 1227, 1526, /* 1090 */ 1488, 1514, 1456, 1486, 1511, 1452, 31, 1553, 1496, 1470, /* 1100 */ 1462, 1493, 1467, 1459, 1525, 1485, 1513, 1455, 1487, 1510, /* 1110 */ 1451, 86, 588, 535, 890, 1397, 674, 592, 888, 1529, /* 1120 */ 1500, 1520, 1472, 1498, 1517, 1464, 138, 11, 1502, 1432, /* 1130 */ 1800, 1802, 1528, 1495, 1801, 1519, 1469, 1499, 1803, 1516, /* 1140 */ 1461, 1303, 1797, 87, 892, 508, 894, 533, 1083, 1084, /* 1150 */ 1017, 1018, 1085, 685, 900, 1398, 898, 896, 1164, 372, /* 1160 */ 1791, 1792, 1794, 1793, 1795, 88, 531, 687, 1399, 902, /* 1170 */ 904, 1601, 89, 984, 504, 221, 516, 1050, 1051, 1002, /* 1180 */ 1003, 1052, 986, 1400, 906, 988, 668, 376, 617, 374, /* 1190 */ 990, 1780, 582, 1784, 1782, 1781, 165, 1785, 1783, 90, /* 1200 */ 596, 377, 515, 686, 910, 1401, 379, 399, 381, 597, /* 1210 */ 908, 702, 912, 1735, 1741, 1737, 701, 1743, 1739, 95, /* 1220 */ 1896, 97, 224, 459, 536, 225, 259, 929, 927, 931, /* 1230 */ 933, 461, 541, 1019, 1020, 1033, 992, 1034, 993, 1036, /* 1240 */ 1035, 716, 1909, 1910, 1883, 257, 915, 773, 1402, 429, /* 1250 */ 917, 433, 1829, 1627, 1714, 431, 228, 261, 412, 622, /* 1260 */ 226, 921, 919, 923, 925, 227, 712, 1907, 711, 1906, /* 1270 */ 1839, 1200, 765, 229, 453, 230, 455, 714, 1908, 1833, /* 1280 */ 1859, 1837, 1213, 1835, 98, 542, 717, 1913, 1911, 1912, /* 1290 */ 1914, 777, 1403, 775, 384, 571, 1808, 623, 1201, 779, /* 1300 */ 1673, 1682, 1676, 1685, 1214, 1679, 99, 645, 263, 554, /* 1310 */ 730, 1955, 1953, 1954, 1956, 231, 781, 1404, 267, 387, /* 1320 */ 677, 1827, 269, 644, 265, 1588, 1592, 1587, 1591, 1586, /* 1330 */ 1590, 1202, 1585, 1589, 1823, 1169, 1215, 100, 655, 544, /* 1340 */ 724, 1937, 1938, 789, 240, 785, 791, 1405, 783, 273, /* 1350 */ 1812, 271, 626, 1521, 1476, 1506, 1446, 1474, 1233, 1503, /* 1360 */ 1442, 1558, 787, 1657, 731, 1959, 1957, 1958, 1960, 1664, /* 1370 */ 1473, 1659, 725, 1939, 1940, 1445, 1475, 1666, 1441, 658, /* 1380 */ 1662, 667, 449, 404, 101, 232, 463, 537, 233, 277, /* 1390 */ 465, 545, 1021, 1022, 996, 997, 734, 1971, 1969, 1970, /* 1400 */ 1972, 801, 275, 793, 795, 935, 797, 799, 1406, 279, /* 1410 */ 427, 937, 1831, 1633, 1720, 235, 281, 283, 627, 234, /* 1420 */ 943, 941, 945, 947, 939, 1840, 483, 1832, 1834, 1838, /* 1430 */ 1841, 445, 102, 562, 737, 1979, 1977, 1978, 1980, 1407, /* 1440 */ 803, 389, 673, 1811, 642, 1540, 1898, 1901, 1902, 1899, /* 1450 */ 1900, 103, 656, 451, 287, 543, 721, 1927, 1925, 1926, /* 1460 */ 1928, 291, 805, 1408, 289, 435, 679, 1816, 437, 625, /* 1470 */ 285, 1637, 1643, 771, 1639, 1847, 1645, 1641, 104, 548, /* 1480 */ 743, 2003, 2001, 2002, 2004, 813, 815, 809, 1409, 807, /* 1490 */ 295, 1818, 811, 643, 293, 767, 1672, 1681, 1429, 1675, /* 1500 */ 722, 1931, 1929, 1930, 1932, 1684, 1678, 105, 236, 467, /* 1510 */ 539, 237, 301, 469, 549, 1025, 1026, 1056, 1004, 1057, /* 1520 */ 1005, 1058, 735, 1975, 1973, 1974, 1976, 299, 951, 817, /* 1530 */ 1410, 305, 949, 509, 1842, 1629, 1716, 239, 819, 303, /* 1540 */ 414, 630, 238, 297, 657, 659, 307, 654, 1844, 106, /* 1550 */ 661, 566, 745, 2007, 2008, 1411, 497, 1819, 446, 631, /* 1560 */ 309, 653, 651, 652, 107, 821, 550, 739, 1987, 1985, /* 1570 */ 1986, 1988, 311, 823, 1412, 391, 1889, 1817, 439, 632, /* 1580 */ 825, 1636, 1642, 1638, 665, 312, 1644, 1640, 108, 314, /* 1590 */ 551, 740, 1991, 1989, 1990, 1992, 316, 827, 831, 1413, /* 1600 */ 320, 322, 1815, 318, 633, 1535, 2015, 2016, 2013, 2014, /* 1610 */ 829, 2019, 2020, 2017, 2018, 662, 407, 109, 833, 552, /* 1620 */ 741, 1995, 1993, 1994, 1996, 837, 1414, 835, 1888, 1810, /* 1630 */ 634, 1687, 1690, 1688, 1691, 1689, 110, 324, 553, 742, /* 1640 */ 1999, 1997, 1998, 2000, 326, 841, 845, 1415, 839, 1814, /* 1650 */ 1708, 328, 635, 241, 1846, 1145, 843, 1667, 1670, 331, /* 1660 */ 1668, 663, 410, 1671, 1669, 111, 242, 471, 337, 568, /* 1670 */ 243, 335, 473, 555, 1027, 1028, 1008, 1009, 333, 851, /* 1680 */ 853, 953, 1416, 248, 457, 443, 955, 671, 1830, 1635, /* 1690 */ 1722, 393, 967, 965, 969, 971, 246, 441, 416, 636, /* 1700 */ 244, 959, 957, 961, 963, 245, 847, 849, 1168, 1170, /* 1710 */ 339, 395, 1836, 112, 855, 556, 766, 1417, 857, 1890, /* 1720 */ 1809, 637, 1674, 1683, 1677, 1860, 1686, 1680, 113, 564, /* 1730 */ 738, 1983, 1981, 1982, 1984, 1418, 1820, 114, 475, 341, /* 1740 */ 477, 557, 1068, 1069, 726, 1941, 1942, 343, 861, 1419, /* 1750 */ 859, 482, 1825, 345, 638, 863, 1698, 1701, 1699, 1702, /* 1760 */ 1700, 115, 646, 347, 869, 559, 728, 1947, 1945, 1946, /* 1770 */ 1948, 351, 867, 1420, 865, 383, 1828, 353, 871, 639, /* 1780 */ 349, 1550, 1646, 1113, 647, 1652, 1824, 1648, 729, 1951, /* 1790 */ 1949, 1950, 1952, 1654, 223, 1904, 1650, 116, 560, 719, /* 1800 */ 1919, 1917, 1918, 1920, 355, 875, 879, 1421, 873, 359, /* 1810 */ 1887, 1813, 357, 640, 1660, 877, 1656, 768, 1663, 1577, /* 1820 */ 254, 1658, 732, 1963, 1961, 1962, 1964, 720, 1923, 1921, /* 1830 */ 1922, 1924, 718, 1915, 1916, 1665, 664, 1661, 117, 249, /* 1840 */ 479, 369, 569, 250, 365, 481, 561, 1029, 1030, 1066, /* 1850 */ 1012, 1067, 1013, 1070, 363, 973, 887, 883, 881, 1422, /* 1860 */ 367, 975, 540, 1843, 1631, 1718, 398, 979, 977, 981, /* 1870 */ 983, 252, 426, 422, 420, 424, 371, 418, 641, 251, /* 1880 */ 361, 885, 1497, 1471, 1463, 1494, 1468, 1460, 1524, 1484, /* 1890 */ 1512, 1454, 1482, 1509, 1450, 1554, 1481, 1453, 1483, 1449, /* 1900 */ 118, 666, 567, 770, 891, 1423, 675, 1845, 624, 889, /* 1910 */ 1527, 1492, 1518, 1466, 1490, 1515, 1458, 1489, 1465, 1491, /* 1920 */ 1457, 1709, 1431, 119, 893, 570, 895, 565, 1031, 1032, /* 1930 */ 1015, 1016, 1080, 1079, 744, 2005, 2006, 901, 1424, 899, /* 1940 */ 897, 373, 1703, 713, 1704, 1706, 1705, 1707, 120, 563, /* 1950 */ 723, 1935, 1933, 1934, 1936, 1425, 903, 1821, 905, 121, /* 1960 */ 985, 538, 253, 547, 1023, 1024, 1000, 1001, 1048, 1047, /* 1970 */ 746, 2011, 2009, 2010, 2012, 987, 1426, 907, 989, 669, /* 1980 */ 255, 649, 375, 991, 1692, 715, 1696, 1694, 1693, 660, /* 1990 */ 1697, 396, 1695, 122, 628, 378, 546, 727, 1943, 1944, /* 2000 */ 911, 1427, 380, 400, 1826, 382, 629, 909, 733, 1967, /* 2010 */ 1965, 1966, 1968, 913, 1647, 1653, 1822, 1649, 769, 1655, /* 2020 */ 1651 }; recode-3.6/src/tersteps.h0100644000000000000000000000171707126662033014146 0ustar rootroot delmodule_african (outer); delmodule_afrtran (outer); delmodule_applemac (outer); delmodule_atarist (outer); delmodule_bangbang (outer); delmodule_cdcnos (outer); delmodule_ebcdic (outer); delmodule_ibmpc (outer); delmodule_iconqnx (outer); delmodule_latin1_ascii (outer); delmodule_mule (outer); delmodule_strips (outer); delmodule_testdump (outer); delmodule_ucs (outer); delmodule_utf16 (outer); delmodule_utf7 (outer); delmodule_utf8 (outer); delmodule_varia (outer); delmodule_vietnamese (outer); delmodule_flat (outer); delmodule_html (outer); delmodule_latin1_latex (outer); delmodule_latin1_texte (outer); delmodule_rfc1345 (outer); delmodule_texinfo (outer); delmodule_base64 (outer); delmodule_dump (outer); delmodule_endline (outer); delmodule_permutations (outer); delmodule_quoted_printable (outer); delmodule_ascii_latin1 (outer); delmodule_latex_latin1 (outer); delmodule_texte_latin1 (outer); recode-3.6/src/xalloc.h0100644000000000000000000000605307142144411013546 0ustar rootroot/* xalloc.h -- malloc with out-of-memory checking Copyright (C) 1990-1998, 1999 Free Software Foundation, Inc. This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef XALLOC_H_ # define XALLOC_H_ # ifndef PARAMS # if defined PROTOTYPES || (defined __STDC__ && __STDC__) # define PARAMS(Args) Args # else # define PARAMS(Args) () # endif # endif # ifndef __attribute__ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ # define __attribute__(x) # endif # endif # ifndef ATTRIBUTE_NORETURN # define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) # endif /* Exit value when the requested amount of memory is not available. It is initialized to EXIT_FAILURE, but the caller may set it to some other value. */ extern int xalloc_exit_failure; /* If this pointer is non-zero, run the specified function upon each allocation failure. It is initialized to zero. */ extern void (*xalloc_fail_func) PARAMS ((void)); /* If XALLOC_FAIL_FUNC is undefined or a function that returns, this message must be non-NULL. It is translated via gettext. The default value is "Memory exhausted". */ extern char *const xalloc_msg_memory_exhausted; /* This function is always triggered when memory is exhausted. It is in charge of honoring the three previous items. This is the function to call when one wants the program to die because of a memory allocation failure. */ extern void xalloc_die PARAMS ((void)) ATTRIBUTE_NORETURN; void *xmalloc PARAMS ((size_t n)); void *xcalloc PARAMS ((size_t n, size_t s)); void *xrealloc PARAMS ((void *p, size_t n)); char *xstrdup PARAMS ((const char *str)); # define XMALLOC(Type, N_items) ((Type *) xmalloc (sizeof (Type) * (N_items))) # define XCALLOC(Type, N_items) ((Type *) xcalloc (sizeof (Type), (N_items))) # define XREALLOC(Ptr, Type, N_items) \ ((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_items))) /* Declare and alloc memory for VAR of type TYPE. */ # define NEW(Type, Var) Type *(Var) = XMALLOC (Type, 1) /* Free VAR only if non NULL. */ # define XFREE(Var) \ do { \ if (Var) \ free (Var); \ } while (0) /* Return a pointer to a malloc'ed copy of the array SRC of NUM elements. */ # define CCLONE(Src, Num) \ (memcpy (xmalloc (sizeof (*Src) * (Num)), (Src), sizeof (*Src) * (Num))) /* Return a malloc'ed copy of SRC. */ # define CLONE(Src) CCLONE (Src, 1) #endif /* !XALLOC_H_ */ recode-3.6/src/base64.h0100644000000000000000000000242507126443233013355 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1996, 97, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1996. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Maximum number of characters per MIME line. */ #define MIME_LINE_LENGTH 76 /* Tables declared in base64.c and also used in utf7.c. */ extern char base64_value_to_char[64]; extern short base64_char_to_value[128]; /* Macros. */ #define IS_BASE64(Character) \ (IS_ASCII (Character) && base64_char_to_value[Character] >= 0) recode-3.6/src/stamp-steps0100644000000000000000000000001207153264723014316 0ustar rootroottimestamp recode-3.6/src/ascilat1.l0100644000000000000000000000713307126657766014021 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Step name: ascii_latin1. */ %% \<\b\"|\"\b\< { put_byte (171, subtask); } \>\b\"|\"\b\> { put_byte (187, subtask); } A\b`|`\bA { put_byte (192, subtask); } A\b'|'\bA { put_byte (193, subtask); } A\b^|^\bA { put_byte (194, subtask); } A\b~|~\bA { put_byte (195, subtask); } A\b\"|\"\bA { put_byte (196, subtask); } C\b,|,\bC { put_byte (199, subtask); } E\b`|`\bE { put_byte (200, subtask); } E\b'|'\bE { put_byte (201, subtask); } E\b^|^\bE { put_byte (202, subtask); } E\b\"|\"\bE { put_byte (203, subtask); } I\b`|`\bI { put_byte (204, subtask); } I\b'|'\bI { put_byte (205, subtask); } I\b^|^\bI { put_byte (206, subtask); } I\b\"|\"\bI { put_byte (207, subtask); } N\b~|~\bN { put_byte (209, subtask); } O\b`|`\bO { put_byte (210, subtask); } O\b'|'\bO { put_byte (211, subtask); } O\b^|^\bO { put_byte (212, subtask); } O\b~|~\bO { put_byte (213, subtask); } O\b\"|\"\bO { put_byte (214, subtask); } O\b\/|\/\bO { put_byte (216, subtask); } U\b`|`\bU { put_byte (217, subtask); } U\b'|'\bU { put_byte (218, subtask); } U\b^|^\bU { put_byte (219, subtask); } U\b\"|\"\bU { put_byte (220, subtask); } Y\b'|'\bY { put_byte (221, subtask); } s\b\"|\"\bs { put_byte (223, subtask); } a\b`|`\ba { put_byte (224, subtask); } a\b'|'\ba { put_byte (225, subtask); } a\b^|^\ba { put_byte (226, subtask); } a\b~|~\ba { put_byte (227, subtask); } a\b\"|\"\ba { put_byte (228, subtask); } c\b,|,\bc { put_byte (231, subtask); } e\b`|`\be { put_byte (232, subtask); } e\b'|'\be { put_byte (233, subtask); } e\b^|^\be { put_byte (234, subtask); } e\b\"|\"\be { put_byte (235, subtask); } i\b`|`\bi { put_byte (236, subtask); } i\b'|'\bi { put_byte (237, subtask); } i\b^|^\bi { put_byte (238, subtask); } i\b\"|\"\bi { put_byte (239, subtask); } n\b~|~\bn { put_byte (241, subtask); } o\b`|`\bo { put_byte (242, subtask); } o\b'|'\bo { put_byte (243, subtask); } o\b^|^\bo { put_byte (244, subtask); } o\b~|~\bo { put_byte (245, subtask); } o\b\"|\"\bo { put_byte (246, subtask); } o\b\/|\/\bo { put_byte (248, subtask); } u\b`|`\bu { put_byte (249, subtask); } u\b'|'\bu { put_byte (250, subtask); } u\b^|^\bu { put_byte (251, subtask); } u\b\"|\"\bu { put_byte (252, subtask); } y\b'|'\by { put_byte (253, subtask); } y\b\"|\"\by { put_byte (255, subtask); } %% bool module_ascii_latin1 (RECODE_OUTER outer) { if (!declare_single (outer, "ASCII-BS", "Latin-1", outer->quality_variable_to_byte, NULL, transform_ascii_latin1)) return false; return true; } void delmodule_ascii_latin1 (RECODE_OUTER outer) { } recode-3.6/src/ltexlat1.l0100644000000000000000000001354207126660050014033 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1988. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Step name: latex_latin1. */ Letter [a-zA-Z] Braces [ \t]*(\{\})? %% \\"#" { PUT_NON_DIACRITIC_BYTE ('#', subtask); } \\"$" { PUT_NON_DIACRITIC_BYTE ('$', subtask); } \\"%" { PUT_NON_DIACRITIC_BYTE ('%', subtask); } \\"&" { PUT_NON_DIACRITIC_BYTE ('&', subtask); } \\"_" { PUT_NON_DIACRITIC_BYTE ('_', subtask); } \\"{" { PUT_NON_DIACRITIC_BYTE ('{', subtask); } \\"}" { PUT_NON_DIACRITIC_BYTE ('}', subtask); } \\backslash{Braces} { PUT_NON_DIACRITIC_BYTE ('\\', subtask); } "~" { PUT_NON_DIACRITIC_BYTE (160, subtask); } "!`" { PUT_NON_DIACRITIC_BYTE (161, subtask); } \\pound{Braces} { PUT_NON_DIACRITIC_BYTE (163, subtask); } \\S{Braces} { PUT_NON_DIACRITIC_BYTE (167, subtask); } \\\" { PUT_NON_DIACRITIC_BYTE (168, subtask); } \\copyright{Braces} { PUT_NON_DIACRITIC_BYTE (169, subtask); } "``" { PUT_NON_DIACRITIC_BYTE (171, subtask); } \\neg{Braces} { PUT_NON_DIACRITIC_BYTE (172, subtask); } \\"-" { PUT_NON_DIACRITIC_BYTE (173, subtask); } \\mbox"{$^\\circ$}" { PUT_NON_DIACRITIC_BYTE (176, subtask); } \\mbox"{$\\pm$}" { PUT_NON_DIACRITIC_BYTE (177, subtask); } \\mbox"{$^2$}" { PUT_NON_DIACRITIC_BYTE (178, subtask); } \\mbox"{$^3$}" { PUT_NON_DIACRITIC_BYTE (179, subtask); } \\"'" { PUT_NON_DIACRITIC_BYTE (180, subtask); } \\mbox"{$\\mu$}" { PUT_NON_DIACRITIC_BYTE (181, subtask); } \\cdotp { PUT_NON_DIACRITIC_BYTE (183, subtask); } \\"," { PUT_NON_DIACRITIC_BYTE (184, subtask); } \\mbox"{$^1$}" { PUT_NON_DIACRITIC_BYTE (185, subtask); } "''" { PUT_NON_DIACRITIC_BYTE (187, subtask); } \\frac"1/4"{Braces} { PUT_NON_DIACRITIC_BYTE (188, subtask); } \\frac"1/2"{Braces} { PUT_NON_DIACRITIC_BYTE (189, subtask); } \\frac"3/4"{Braces} { PUT_NON_DIACRITIC_BYTE (190, subtask); } "?`" { PUT_NON_DIACRITIC_BYTE (191, subtask); } \\"`"A|\\"`{A}" { put_byte (192, subtask); } \\"'"A|\\"'{A}" { put_byte (193, subtask); } \\"^"A|\\"^{A}" { put_byte (194, subtask); } \\"~"A|\\"~{A}" { put_byte (195, subtask); } \\\"A|\\\""{A}" { put_byte (196, subtask); } \\AA{Braces} { put_byte (197, subtask); } \\AE{Braces} { put_byte (198, subtask); } \\c[ \t]+C|\\c"{C}" { put_byte (199, subtask); } \\"`"E|\\"`{E}" { put_byte (200, subtask); } \\"'"E|\\"'{E}" { put_byte (201, subtask); } \\"^"E|\\"^{E}" { put_byte (202, subtask); } \\\"E|\\\""{E}" { put_byte (203, subtask); } \\"`"I|\\"`{I}" { put_byte (204, subtask); } \\"'"I|\\"'{I}" { put_byte (205, subtask); } \\"^"I|\\"^{I}" { put_byte (206, subtask); } \\\"I|\\\""{I}" { put_byte (207, subtask); } \\"~"N|\\"~{N}" { put_byte (209, subtask); } \\"`"O|\\"`{O}" { put_byte (210, subtask); } \\"'"O|\\"'{O}" { put_byte (211, subtask); } \\"^"O|\\"^{O}" { put_byte (212, subtask); } \\"~"O|\\"~{O}" { put_byte (213, subtask); } \\\"O|\\\""{O}" { put_byte (214, subtask); } \\O{Braces} { put_byte (216, subtask); } \\"`"U|\\"`{U}" { put_byte (217, subtask); } \\"'"U|\\"'{U}" { put_byte (218, subtask); } \\"^"U|\\"^{U}" { put_byte (219, subtask); } \\\"U|\\\""{U}" { put_byte (220, subtask); } \\"'"Y|\\"'{Y}" { put_byte (221, subtask); } \\ss{Braces} { put_byte (223, subtask); } \\"`"a|\\"`{a}" { put_byte (224, subtask); } \\"'"a|\\"'{a}" { put_byte (225, subtask); } \\"^"a|\\"^{a}" { put_byte (226, subtask); } \\"~"a|\\"~{a}" { put_byte (227, subtask); } \\\"a|\\\""{a}" { put_byte (228, subtask); } \\aa{Braces} { put_byte (229, subtask); } \\ae{Braces} { put_byte (230, subtask); } \\c[ \t]+c|\\c"{c}" { put_byte (231, subtask); } \\"`"e|\\"`{e}" { put_byte (232, subtask); } \\"'"e|\\"'{e}" { put_byte (233, subtask); } \\"^"e|\\"^{e}" { put_byte (234, subtask); } \\\"e|\\\""{e}" { put_byte (235, subtask); } \\"`"\\i{Braces}|\\"`{\\i}" { put_byte (236, subtask); } \\"'"\\i{Braces}|\\"'{\\i}" { put_byte (237, subtask); } \\"^"\\i{Braces}|\\"^{\\i}" { put_byte (238, subtask); } \\\"\\i{Braces}|\\\""{\\i}" { put_byte (239, subtask); } \\"~"n|\\"~{n}" { put_byte (241, subtask); } \\"`"o|\\"`{o}" { put_byte (242, subtask); } \\"'"o|\\"'{o}" { put_byte (243, subtask); } \\"^"o|\\"^{o}" { put_byte (244, subtask); } \\"~"o|\\"~{o}" { put_byte (245, subtask); } \\\"o|\\\""{o}" { put_byte (246, subtask); } \\o{Braces} { put_byte (248, subtask); } \\"`"u|\\"`{u}" { put_byte (249, subtask); } \\"'"u|\\"'{u}" { put_byte (250, subtask); } \\"^"u|\\"^{u}" { put_byte (251, subtask); } \\\"u|\\\""{u}" { put_byte (252, subtask); } \\"'"y|\\"'{y}" { put_byte (253, subtask); } \\\"y|\\\""{y}" { put_byte (255, subtask); } \\[`'^"]\\i{Letter}*{Braces} { ECHO; } \\{Letter}+{Braces} { ECHO; } %% bool module_latex_latin1 (RECODE_OUTER outer) { return declare_single (outer, "LaTeX", "Latin-1", outer->quality_variable_to_byte, NULL, transform_latex_latin1) && declare_alias (outer, "TeX", "LaTeX") && declare_alias (outer, "ltex", "LaTeX"); } void delmodule_latex_latin1 (RECODE_OUTER outer) { } recode-3.6/src/txtelat1.l0100644000000000000000000001313207126660061014040 0ustar rootroot/* Conversion of files between different charsets and surfaces. Copyright © 1990, 93, 94, 97, 98, 99, 00 Free Software Foundation, Inc. Contributed by François Pinard , 1989. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the `recode' Library; see the file `COPYING.LIB'. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Step name: texte_latin1. */ %{ void texte_latin1_diaeresis PARAMS ((void)); %} s (^|[^a-zA-Z]) d [:"] l [a-zA-Z] %% `` { put_byte (171, subtask); } '' { put_byte (187, subtask); } A` { put_byte (192, subtask); } A^ { put_byte (194, subtask); } A{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (196, subtask); else ECHO; } a` { put_byte (224, subtask); } a^ { put_byte (226, subtask); } a{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (228, subtask); else ECHO; } C\,/[aAoOuU] { put_byte (199, subtask); } c\,/[aAoOuU] { put_byte (231, subtask); } E` { put_byte (200, subtask); } E''' { put_byte (201, subtask); put_byte (187, subtask); } E'' { put_byte ('E', subtask); put_byte (187, subtask); } E' { put_byte (201, subtask); } E^ { put_byte (202, subtask); } E{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (203, subtask); else ECHO; } e` { put_byte (232, subtask); } e''' { put_byte (233, subtask); put_byte (187, subtask); } e'' { put_byte ('e', subtask); put_byte (187, subtask); } e' { put_byte (233, subtask); } e^ { put_byte (234, subtask); } e{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (235, subtask); else ECHO; } I` { put_byte (204, subtask); } I^ { put_byte (206, subtask); } I{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (207, subtask); else ECHO; } i` { put_byte (236, subtask); } i^ { put_byte (238, subtask); } i{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (239, subtask); else ECHO; } O` { put_byte (210, subtask); } O^ { put_byte (212, subtask); } O{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (214, subtask); else ECHO; } o` { put_byte (242, subtask); } o^ { put_byte (244, subtask); } o{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (246, subtask); else ECHO; } U` { put_byte (217, subtask); } U^ { put_byte (219, subtask); } U{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (220, subtask); else ECHO; } u` { put_byte (249, subtask); } u^ { put_byte (251, subtask); } u{d}/{l} { if (yytext[1] == request->diaeresis_char) put_byte (252, subtask); else ECHO; } {s}[Bb]esaigue{d} { texte_latin1_diaeresis (); } {s}[Cc]igue{d} { texte_latin1_diaeresis (); } {s}[Aa]igue{d} { texte_latin1_diaeresis (); } {s}[Aa]mbigue{d} { texte_latin1_diaeresis (); } {s}[Cc]ontigue{d} { texte_latin1_diaeresis (); } {s}[Ee]xigue{d} { texte_latin1_diaeresis (); } {s}[Ss]ubaigue{d} { texte_latin1_diaeresis (); } {s}[Ss]uraigue{d} { texte_latin1_diaeresis (); } {s}[Aa]i{d} { texte_latin1_diaeresis (); } {s}[Cc]ongai{d} { texte_latin1_diaeresis (); } {s}[Gg]oi{d} { texte_latin1_diaeresis (); } {s}[Hh]ai{d}kai{d} { if (yytext[4] == request->diaeresis_char) texte_latin1_diaeresis (); else ECHO; } {s}[Ii]noui{d} { texte_latin1_diaeresis (); } [JjTtLl]'[Aa][Ii]{d} { ECHO; } {s}[Ss]ai{d} { texte_latin1_diaeresis (); } {s}[Ss]amurai{d} { texte_latin1_diaeresis (); } {s}[Tt]hai{d} { texte_latin1_diaeresis (); } {s}[Tt]okai{d} { texte_latin1_diaeresis (); } {s}[Cc]anoe{d} { texte_latin1_diaeresis (); } {s}Esau{d} { texte_latin1_diaeresis (); } %% void texte_latin1_diaeresis (void) { unsigned counter; for (counter = 0; counter < yyleng; counter++) if (yytext[counter+1] == request->diaeresis_char) { switch (yytext[counter]) { /* The next "case 'A'" line once triggered a `NULL in input' diagnostic in flex. This astonishing bug has been hard to isolate, so I'll leave this comment around for a while. */ case 'A': put_byte (196, subtask); break; case 'E': put_byte (203, subtask); break; case 'I': put_byte (207, subtask); break; case 'O': put_byte (214, subtask); break; case 'U': put_byte (220, subtask); break; case 'a': put_byte (228, subtask); break; case 'e': put_byte (235, subtask); break; case 'i': put_byte (239, subtask); break; case 'o': put_byte (246, subtask); break; case 'u': put_byte (252, subtask); break; case 'y': put_byte (255, subtask); break; default: put_byte (yytext[counter], subtask); } counter++; } else put_byte (yytext[counter], subtask); } bool module_texte_latin1 (RECODE_OUTER outer) { return declare_single (outer, "Texte", "Latin-1", outer->quality_variable_to_byte, NULL, transform_texte_latin1) && declare_alias (outer, "txte", "Texte"); } void delmodule_texte_latin1 (RECODE_OUTER outer) { } recode-3.6/src/mergelex.py0100644000000000000000000001053207126443206014300 0ustar rootroot# Conversion of files between different charsets and surfaces. # Copyright © 1990, 93, 94, 95, 97, 99, 00 Free Software Foundation, Inc. # François Pinard , 1990. # # This program 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. # # This program 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 this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # This Python script merges several Flex sources intended for `recode'. # It requires Flex 2.5 or later. import re, string, sys # Initial comments. section0 = ["/* This file is generated automatically by `mergelex.py'. */\n"] # Flex and C declarations. section1 = ["\n" "%option noyywrap\n" "%{\n" '#define YY_NO_UNPUT\n' '#include "common.h"\n' "static RECODE_CONST_REQUEST request;\n" "static RECODE_SUBTASK subtask;\n" "%}\n"] # Flex rules. section2 = ["%%\n" "<> { return 1; }\n"] # Rest of C code. section3 = ["%%\n"] comment_done = 0 within_C_code = 0 definitions = {} section = 3 while 1: line = sys.stdin.readline() if not line: break # A `/* Step name: NAME. */' line indicates the start of a new file. # Generate an interface routine. The step name is saved for broketed # prefixes in rules. match = re.match(r'/\* Step name: (.*)\. \*/', line) if match: section = 1 step_name = match.group(1) section3.append( '\n' 'static bool\n' 'transform_%s (RECODE_SUBTASK subtask_argument)\n' '{\n' ' subtask = subtask_argument;\n' ' request = subtask->task->request;\n' ' yy_init = 1;\n' ' yyin = subtask->input.file;\n' ' yyout = subtask->output.file;\n' ' BEGIN %s;\n' ' return yylex ();\n' '}\n' % (step_name, step_name)) continue # In section 1, any %% in column 1 signals the beginning of lex rules. # Remove all white lines. if section == 1: if re.match('^[ \t]*$', line): continue if line[:2] == '%%': section1.append('%%x %s\n' % step_name) section = 2 section2.append('\n' '<%s>{\n' % step_name) continue # A %{ comment in column 1 signals the start of a C code section ended # by a %} line. if line[:2] == '%{': within_C_code = 1 section1.append('\n') section1.append(line) continue if line[:2] == '%}': section1.append(line) section1.append('\n') within_C_code = 0 continue if within_C_code: section1.append(line) continue # Section 1 declarations are studied and copied, once each. # Conflicting declaractions are reported at beginning of output. if section == 1 and line[0] not in (' ', '\t', '\n'): key, rest = string.split(line, None, 1) if definitions.has_key(key): if definitions[key] != line: sys.stderr.write("** Conflicting definition: %s" % line) else: definitions[key] = line section1.append(line) continue # In section 2, a %% in column 1 starts section 3. if section == 2: if line[:2] == '%%': section2.append('}\n') section = 3 else: section2.append(line) continue # Section 3 contains C code, all copied verbatim. if section == 3: section3.append(line) continue # At end, output all temporary buffers. This produces the generated # interfaces: one routine for each step name. if section == 2: section2.append('}\n') sys.stdout.writelines(section0) sys.stdout.writelines(section1) sys.stdout.writelines(section2) sys.stdout.writelines(section3) recode-3.6/src/recode.10100644000000000000000000000774307233073716013457 0ustar rootroot.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.022. .TH RECODE "1" "January 2001" "Free recode 3.6" FSF .SH NAME recode \- manual page for recode 3.6 .SH SYNOPSIS .B recode [\fIOPTION\fR]... [ [\fICHARSET\fR] \fI| REQUEST \fR[\fIFILE\fR]... ] .SH DESCRIPTION Free `recode' converts files between various character sets and surfaces. .PP If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. .SS "Listings:" .TP \fB\-l\fR, \fB\-\-list\fR[=\fIFORMAT\fR] list one or all known charsets and aliases .TP \fB\-k\fR, \fB\-\-known\fR=\fIPAIRS\fR restrict charsets according to known PAIRS list .TP \fB\-h\fR, \fB\-\-header[\fR=\fI[LN\fR/]NAME] write table NAME on stdout using LN, then exit .TP \fB\-F\fR, \fB\-\-freeze\-tables\fR write out a C module holding all tables .TP \fB\-T\fR, \fB\-\-find\-subsets\fR report all charsets being subset of others .TP \fB\-C\fR, \fB\-\-copyright\fR display Copyright and copying conditions .TP \fB\-\-help\fR display this help and exit .TP \fB\-\-version\fR output version information and exit .SS "Operation modes:" .TP \fB\-v\fR, \fB\-\-verbose\fR explain sequence of steps and report progress .TP \fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR inhibit messages about irreversible recodings .TP \fB\-f\fR, \fB\-\-force\fR force recodings even when not reversible .TP \fB\-t\fR, \fB\-\-touch\fR touch the recoded files after replacement .TP \fB\-i\fR, \fB\-\-sequence\fR=\fIfiles\fR use intermediate files for sequencing passes .TP \fB\-\-sequence\fR=\fImemory\fR use memory buffers for sequencing passes .TP \fB\-p\fR, \fB\-\-sequence\fR=\fIpipe\fR use pipe machinery for sequencing passes .SS "Fine tuning:" .TP \fB\-s\fR, \fB\-\-strict\fR use strict mappings, even loose characters .TP \fB\-d\fR, \fB\-\-diacritics\fR convert only diacritics or alike for HTML/LaTeX .TP \fB\-S\fR, \fB\-\-source\fR[=\fILN\fR] limit recoding to strings and comments as for LN .TP \fB\-c\fR, \fB\-\-colons\fR use colons instead of double quotes for diaeresis .TP \fB\-g\fR, \fB\-\-graphics\fR approximate IBMPC rulers by ASCII graphics .TP \fB\-x\fR, \fB\-\-ignore\fR=\fICHARSET\fR ignore CHARSET while choosing a recoding path .PP Option \fB\-l\fR with no FORMAT nor CHARSET list available charsets and surfaces. FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf'). Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to the locale dependent encoding, determined by LC_ALL, LC_CTYPE, LANG. With \fB\-k\fR, possible before charsets are listed for the given after CHARSET, both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...' and BEFs and AFTs being codes are given as decimal numbers. LN is some language, it may be `c', `perl' or `po'; `c' is the default. .PP REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]... ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER, with BEFORE and AFTER being charsets. An omitted CHARSET implies the usual charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a / with an empty surface name means no surfaces at all. See the manual. .PP If none of \fB\-i\fR and \fB\-p\fR are given, presume \fB\-p\fR if no FILE, else \fB\-i\fR. Each FILE is recoded over itself, destroying the original. If no FILE is specified, then act as a filter and recode stdin to stdout. .SH AUTHOR Written by Franc,ois Pinard . .SH "REPORTING BUGS" Report bugs to . .SH COPYRIGHT Copyright \(co 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc. .br This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. .SH "SEE ALSO" The full documentation for .B recode is maintained as a Texinfo manual. If the .B info and .B recode programs are properly installed at your site, the command .IP .B info recode .PP should give you access to the complete manual. recode-3.6/tests/0040755000000000000000000000000007233074170012472 5ustar rootrootrecode-3.6/tests/Makefile.in0100644000000000000000000001570107233074170014540 0ustar rootroot# Makefile.in generated automatically by automake 1.4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 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. # Makefile for `recode' regression tests. # Copyright © 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. # François Pinard , 1988. # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ CC = @CC@ CPP = @CPP@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ GLIBC21 = @GLIBC21@ LEX = @LEX@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MOFILES = @MOFILES@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ U = @U@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = gnits SUITE = african.m4 base64.m4 combine.m4 dumps.m4 lists.m4 methods.m4 names.m4 quoted.m4 testdump.m4 utf7.m4 utf8.m4 EXTRA_DIST = atgeneral.m4 suite.m4 testsuite $(SUITE) bigauto.py dumps-data quoted-data utf7-data PYTHON = python mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = atconfig DIST_COMMON = ChangeLog Makefile.am Makefile.in atconfig.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status atconfig: $(top_builddir)/config.status atconfig.in cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status tags: TAGS TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = tests distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall: uninstall-am all-am: Makefile all-local all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-generic mostlyclean-am clean-local clean: clean-am distclean-am: distclean-generic clean-am -rm -f libtool distclean: distclean-am maintainer-clean-am: maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: tags distdir info-am info dvi-am dvi check-local check check-am \ installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ all-local all-redirect all-am all installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean all-local: atconfig testsuite # I have been told that the `libtool' bug who warranted the following # diagnostic has been corrected by now, so I silenced it out of `check-local'. # @if test -f $(libdir)/librecode.so; then \ # echo; \ # echo "WARNING: A recode library is already installed. Sadly, it"; \ # echo " _might_ interfere with checking. You might want to"; \ # echo " delete it first, or rename it out of the way."; \ # echo; \ # fi check-local: atconfig testsuite $(SHELL) $(srcdir)/testsuite $(srcdir)/testsuite: atgeneral.m4 suite.m4 $(SUITE) m4 -I $(srcdir) atgeneral.m4 suite.m4 | cat -s > $@-tmp mv $@-tmp $@ bigtest: warning PATH=../src:$$PATH $(PYTHON) $(srcdir)/bigauto.py bigtest-strict: warning PATH=../src:$$PATH $(PYTHON) $(srcdir)/bigauto.py -s warning: echo 1>&2 '===============================================' echo 1>&2 "The \`bigauto' test may take hours. Be patient." echo 1>&2 '===============================================' clean-local: rm -f at-check-line debug-*.sh stderr stdout rm -f input output big-s-off.res big-s-on.res # 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: recode-3.6/tests/ChangeLog0100644000000000000000000002314207224443730014245 0ustar rootroot2001-01-02 Bruno Haible * names.m4: Adjusted for libiconv-1.5 (BIG5HKSCS, GB18030, CHAR, WCHAR_T). 2000-08-18 François Pinard * names.m4: Adjusted for XML-standalone. 2000-06-28 François Pinard * testdump.m4: New name for debug.m4. * suite.m4: Adjusted. * Makefile.am (SUITE): Adjusted. * lists.m4: Use At instead of @ in expected results. * names.m4: Adjused for new libiconv. 2000-04-26 François Pinard * bigauto.py: New file. * bigauto.sh, bigauto.pl: Deleted. * Makefile.am: Adjusted. 2000-02-05 François Pinard * names.m4: Adjusted for tree, a special charset like data. 1999-12-24 François Pinard * names.m4: Adjusted for defaulted libiconv. 1999-12-23 François Pinard * names.m4: Adjusted for :libiconv:. 1999-12-19 François Pinard * names.m4: Adjusted for vietnamese charsets. 1999-12-15 François Pinard * Makefile.am (clean-local): Get rid of at-check-line, stderr, stdout, input and output. 1999-12-13 François Pinard * bigauto.sh: Protect against locale. 1999-12-11 Eli Zaretskii * suite.m4: Add Latin-1 coding tag. * atgeneral.m4: Use `diff' over `cmp' for DOSWIN. * african.m4, base64.m4, dumps.m4, utf7.m4: Make the test suite less Unix-chauvinist, so it could run on DOS/Windows in the DJGPP environment. 1999-11-16 François Pinard * atgeneral.m4: Increase the verbosity of verbose option. Better protect real exit status. Add capability to ignore stdout or stderr. Rewrite AT_CHECK so it is more legible. Define and use AT_CASE. Reported by Akim Demaille. 1999-06-02 François Pinard * atgeneral.m4 (at_usage): Typo. 1999-06-01 François Pinard * Makefile.am (check-local): Do not warn for installed library, as we now use a newer and better libtool. 1999-04-02 François Pinard * Makefile.am (check-local): Warn if recode library already installed. * utf8.m4: Ensure that file has permissions to be rewritten. 1999-04-01 François Pinard * names.m4: Adjusted for the co alias. 1999-03-17 François Pinard * combine.m4: New file. * Makefile.am, suite.m4: Adjusted. 1999-01-17 François Pinard * names.m4: Adjusted for implied surfaces. 1999-01-12 François Pinard * utf8.m4: New file. * Makefile.am, suite.m4: Adjusted. 1999-01-07 François Pinard * names.m4: Adjusted for name changes. 1999-01-05 François Pinard * names.m4: Adjusted capitalisation of Kamenicky. * lists.m4: Adjusted for slight modifications in output format. * names.m4: Adjusted for new charsets and surfaces. * debug.m4: New file. * Makefile.am, suite.m4: Adjusted. 1999-01-04 François Pinard * names.m4: Adjusted for new output format, sorted and capitalized. * Makefile.am (clean-local): Remove debug-*.sh, not FAIL-*.sh. 1999-01-01 François Pinard * names.m4: Adjusted, as afrsort was deleted. 1998-12-18 François Pinard * names.m4: Adjusted for fulldump. Reported by Jim Meyering and Larry W. Virden. 1998-12-13 François Pinard * names.m4: Adjusted for revised african, deleted HTML aliases and combined UCS-2. 1998-12-08 François Pinard * lists.m4, names.m4: Adjusted for the renaming of ISO_8859-1 to ISO-8859-1. Use the expout mechanics, to avoid long shell quotes. 1998-11-30 François Pinard * suite.m4: New name for testsuite.m4. * test-one: Adjusted. * Makefile.am: Adjusted. 1998-11-23 François Pinard * dumps.m4: Make the copy of dumps-data writeable. * names.m4: Adjusted for new HTML charsets, yet if temporarily. 1998-10-31 François Pinard * base64.m4, dumps.m4, quoted.m4: Make test files writeable after copying them from the distribution, which may be read-only. Also, avoid trailing .. in requests, as before position is implied. 1998-10-30 François Pinard * Makefile.am (EXTRA_DIST): Distribute testsuite.m4. Reported by Jim Meyering. 1998-10-27 François Pinard * african.m4: New file. * testsuite.m4: Use it. * Makefile.am (SUITE): Adjusted. From Laurent Bourbeau. 1998-10-26 François Pinard * names.m4: Do not expect h, h1, h2, h4, w3 or www. * dumps.m4, quoted.m4, utf7.c: Use /x or /XN rather than /h or /hN. 1998-10-20 François Pinard * test-one: Renamed from test-one.in. New version, from elsewhere. * atgeneral.m4: New version, from elsewhere. * atconfig.in: New file, from elsewhere. * Makefile.am: Adjusted. Use testsuite from srcdir. * testsuite.m4: Remove second argment to AT_INIT. * base64.m4, dumps.m4, methods.m4, quoted.m4, utf7.m4: Replace AT_srcdir and AT_top_srcdir by $at_srcdir and $at_top_srcdir. * bigauto.sh: Do not source file preset, it does not exist anymore. 1998-10-16 François Pinard * Makefile.am (EXTRA_DIST): Distribute quoted-data. Reported by Jim Meyering. 1998-10-13 François Pinard * atgeneral.m4, test-one.in, testsuite.m4: New files. * preset.in, before, after: Deleted. * names.m4: Made out from list-l and findsubs. * lists.m4: Made out from list-ld, list-lh, list-lo and list-lf. * dumps.m4, dumps-data: Made out from dump-d1, dump-d2, dump-d4, dump-h1, dump-h2, dump-h4, dump-o1, dump-o2 and dump-o4. * base64.m4: Made out from base64. * quoted.m4, quoted-data: Made out from quoted. * utf7.m4, utf7-data: Made out from utf7. * methods.m4: Made out from 0s-tt-mf, 0s-tt-ms, 0s-tt-ff, 0s-tt-fs, 0s-tt-pf, 0s-tt-ps, 1s-tl-mf, 1s-tl-ms, 1s-tl-ff, 1s-tl-fs, 1s-tl-pf, 1s-tl-ps, 2s-tb-mf, 2s-tb-ms, 2s-tb-ff, 2s-tb-fs, 2s-tb-pf, 2s-tb-ps, 2s-ti-mf, 2s-ti-ms, 2s-ti-ff, 2s-ti-fs, 2s-ti-pf, 2s-ti-ps, 3s-ti-mf, 3s-ti-ms, 3s-ti-ff, 3s-ti-fs, 3s-ti-pf, 3s-ti-ps, 4s-ae-mf, 4s-ae-ms, 4s-ae-ff, 4s-ae-fs, 4s-ae-pf and 4s-ae-ps. * All previous tests: Deleted. * Makefile.am: Revised. 1998-09-15 François Pinard * list-l, findsubs: Updated. * list-ld, list-lo, list-lh, list-lf: At became @. 1998-02-23 François Pinard * Makefile.am (clean-local): Instead of a kludgey CLEANFILES. Reported by Tom Tromey. 1998-01-12 François Pinard * findsubs, list-l: Updated. 1997-12-15 François Pinard * findsubs: New file. * Makefile.am: Adjusted. * Makefile.am (CLEANFILES): Use -r and add tmp-[0-9]*. 1997-12-14 François Pinard * list-l: List updated. 1997-12-09 François Pinard * bigauto.sh: Remove the space after flat, in the egrep call. Reported by Eric Backus. * list-l, list-ld, list-lh, list-lo, list-lf: New files. * Makefile.am: Adjusted. 1997-12-08 François Pinard * Makefile.am (TESTS): List bigauto first, so the associated warning will be issued early in test results. 1997-12-05 François Pinard * Makefile.am (bigtest, bigtest-strict): Write $$PATH, not $PATH. Reported by Eric Backus. 1997-12-02 François Pinard * bigauto, bigauto.sh, bitauto.pl: New files. * Makefile.am: Adjusted. (bigtest, bigtest-strict): New goals. 1997-11-25 François Pinard * dump-d1, dump-d2, dump-d4, dump-h1, dump-h2, dump-h4, dump-o1, dump-o2, dump-o4, quoted, utf7: New files. * Makefile.am: Adjusted. 1997-11-20 François Pinard * base64.sh: New. * Makefile.am: Adjusted. 1997-10-26 François Pinard * filter.inc, squash.inc, 0s-tt-mf.sh, 0s-tt-ms.sh, 0s-tt-ff.sh, 0s-tt-fs.sh, 0s-tt-pf.sh, 0s-tt-ps.sh, 1s-tl-mf.sh, 1s-tl-ms.sh, 1s-tl-ff.sh, 1s-tl-fs.sh, 1s-tl-pf.sh, 1s-tl-ps.sh, 2s-tb-mf.sh, 2s-tb-ms.sh, 2s-tb-ff.sh, 2s-tb-fs.sh, 2s-tb-pf.sh, 2s-tb-ps.sh, 2s-ti-mf.sh, 2s-ti-ms.sh, 2s-ti-ff.sh, 2s-ti-fs.sh, 2s-ti-pf.sh, 2s-ti-ps.sh, 3s-ti-mf.sh, 3s-ti-ms.sh, 3s-ti-ff.sh, 3s-ti-fs.sh, 3s-ti-pf.sh, 3s-ti-ps.sh, 4s-ae-mf.sh, 4s-ae-ms.sh, 4s-ae-ff.sh, 4s-ae-fs.sh, 4s-ae-pf.sh, 4s-ae-ps.sh: New files. * checkit.inc, 0step-tt.sh, 1step-tl.sh, 2step-tb.sh, 2step-ti.sh, 3step-ti.sh, 4step-ae.sh: Deleted. * Makefile.am: Adjusted. * preset.in, before, after: Add a -d option to ease debugging. 1997-09-26 François Pinard * before, after: New files, from elsewhere. * 0step-tt.sh: Adapted from checkit1.sh. * 1step-tl.sh: Adapted from checkit2.sh. * 2step-ti.sh: Adapted from checkit3.sh. * 3step-ti.sh: Adapted from checkit4.sh. * 2step-tb.sh: Adapted from checkit5.sh. * 4step-ae.sh: Adapted from checkit6.sh. * checkit.inc: Simplified from checkit, sourced instead of called. * Makefile.am: Adjusted. * checkit: Remove popen support. 1997-07-28 François Pinard * checkit: Use .. instead of : in syntax. 1996-09-04 François Pinard * ChangeLog, Makefile.am: New files. * checkit: New file, moved from src/. Change ./recode to recode. Change minimal verbosity so it is completely silent. * preset.in, version.sh, checkit[1-6].sh, bigauto.sh: New files. recode-3.6/tests/Makefile.am0100644000000000000000000000426007126357250014531 0ustar rootroot# Makefile for `recode' regression tests. # Copyright © 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. # François Pinard , 1988. # This program 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. # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AUTOMAKE_OPTIONS = gnits SUITE = african.m4 base64.m4 combine.m4 dumps.m4 lists.m4 methods.m4 \ names.m4 quoted.m4 testdump.m4 utf7.m4 utf8.m4 EXTRA_DIST = atgeneral.m4 suite.m4 testsuite $(SUITE) \ bigauto.py dumps-data quoted-data utf7-data PYTHON = python all-local: atconfig testsuite # I have been told that the `libtool' bug who warranted the following # diagnostic has been corrected by now, so I silenced it out of `check-local'. # @if test -f $(libdir)/librecode.so; then \ # echo; \ # echo "WARNING: A recode library is already installed. Sadly, it"; \ # echo " _might_ interfere with checking. You might want to"; \ # echo " delete it first, or rename it out of the way."; \ # echo; \ # fi check-local: atconfig testsuite $(SHELL) $(srcdir)/testsuite $(srcdir)/testsuite: atgeneral.m4 suite.m4 $(SUITE) m4 -I $(srcdir) atgeneral.m4 suite.m4 | cat -s > $@-tmp mv $@-tmp $@ bigtest: warning PATH=../src:$$PATH $(PYTHON) $(srcdir)/bigauto.py bigtest-strict: warning PATH=../src:$$PATH $(PYTHON) $(srcdir)/bigauto.py -s warning: echo 1>&2 '===============================================' echo 1>&2 "The \`bigauto' test may take hours. Be patient." echo 1>&2 '===============================================' clean-local: rm -f at-check-line debug-*.sh stderr stdout rm -f input output big-s-off.res big-s-on.res recode-3.6/tests/atconfig.in0100644000000000000000000000657207142144411014616 0ustar rootroot# @configure_input@ -*- shell-script -*- # Configurable variable values for building test suites. # Copyright © 1998, 1999 Progiciels Bourbeau-Pinard inc. # François Pinard , 1998. # This program 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. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # This script is part of Autotest. I, François Pinard, the author of # Autotest, give unlimited permission to copy, distribute and modify # the testing scripts that are the output of that Autotest script. # You need not follow the terms of the GNU General Public License when # using or distributing such scripts, even though portions of the text # of Autotest appear in them. The GNU General Public License (GPL) does # govern all other use of the material that constitutes the Autotest. # # Certain portions of the Autotest source text are designed to be copied # (in certain cases, depending on the input) into the output of # Autotest. We call these the "data" portions. The rest of the Autotest # source text consists of comments plus executable code that decides which # of the data portions to output in any given case. We call these # comments and executable code the "non-data" portions. Autotest never # copies any of the non-data portions into its output. # # This special exception to the GPL applies to versions of Autotest # released by the Free Software Foundation. When you make and # distribute a modified version of Autotest, you may extend this special # exception to the GPL to apply to your modified version as well, *unless* # your modified version has the potential to copy into its output some # of the text that was the non-data portion of the version that you started # with. (In other words, unless your change moves or copies text from # the non-data portions to the data portions.) If your modification has # such potential, you must delete any notice of this special exception # to the GPL from your modified version. # Snippet (1 # This debugging script has been automatically generated from `make check'. # Call it with `--help' to get a quick usage summary. at_package=@PACKAGE@ at_version=@VERSION@ # Snippet )1 # Snippet (2 at_n=@ECHO_N@ at_c='@ECHO_C@' test -f atlocal && . ./atlocal # LC_MESSAGES is always shadowed by LC_ALL. Here are the only cases: # - GNU: LANGUAGE -> LC_ALL -> LC_MESSAGES -> LANG # - POSIX: LC_ALL -> LC_MESSAGES -> LANG # - XPG4: LC_ALL -> LANG # - SysV/XPG2: LANG export LANGUAGE; LANGUAGE=C export LANG; LANG=C export LC_ALL; LC_ALL=C srcdir=@srcdir@ top_srcdir=@top_srcdir@ # Use absolute file notations, as the test might change directories. at_srcdir=`cd @srcdir@ && pwd` at_top_srcdir=`cd @top_srcdir@ && pwd` if test -n "@AT_TESTPATH@"; then export PATH; PATH=`pwd`:`cd @AT_TESTPATH@ && pwd`:$PATH else export PATH; PATH=`pwd`:$PATH fi # Snippet )2 recode-3.6/tests/atgeneral.m40100644000000000000000000003131007142144411014664 0ustar rootrootdivert(-1) -*- Autoconf -*- # `m4' macros used in building test suites. # Copyright © 1998, 1999, 2000 Progiciels Bourbeau-Pinard inc. # François Pinard , 1998. # This program 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. # # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # This script is part of Autotest. I, François Pinard, the author of # Autotest, give unlimited permission to copy, distribute and modify # the testing scripts that are the output of that Autotest script. # You need not follow the terms of the GNU General Public License when # using or distributing such scripts, even though portions of the text # of Autotest appear in them. The GNU General Public License (GPL) does # govern all other use of the material that constitutes the Autotest. # # Certain portions of the Autotest source text are designed to be copied # (in certain cases, depending on the input) into the output of # Autotest. We call these the "data" portions. The rest of the Autotest # source text consists of comments plus executable code that decides which # of the data portions to output in any given case. We call these # comments and executable code the "non-data" portions. Autotest never # copies any of the non-data portions into its output. # # This special exception to the GPL applies to versions of Autotest # released by the Free Software Foundation. When you make and # distribute a modified version of Autotest, you may extend this special # exception to the GPL to apply to your modified version as well, *unless* # your modified version has the potential to copy into its output some # of the text that was the non-data portion of the version that you started # with. (In other words, unless your change moves or copies text from # the non-data portions to the data portions.) If your modification has # such potential, you must delete any notice of this special exception # to the GPL from your modified version. changequote([, ]) define(AT_DEFINE, defn([define])) define(AT_EVAL, defn([eval])) define(AT_FORMAT, defn([format])) define(AT_INCLUDE, defn([include])) define(AT_SHIFT, defn([shift])) define(AT_UNDEFINE, defn([undefine])) undefine([define]) undefine([eval]) undefine([format]) undefine([include]) undefine([shift]) undefine([undefine]) # AT_CASE(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT) # m4 equivalent of # switch (SWITCH) # { # case VAL1: # IF-VAL1; # break; # case VAL2: # IF-VAL2; # break; # ... # default: # DEFAULT; # break; # }. # All the values are optional, and the macro is robust to active # symbols properly quoted. AT_DEFINE(AT_CASE, [ifelse([$#], 0, [], [$#], 1, [], [$#], 2, [$2], [$1], [$2], [$3], [AT_CASE([$1], AT_SHIFT(AT_SHIFT(AT_SHIFT($@))))])]) # Use of diversions: # 0 - overall initialization; for each test group: skipping and cleanups; # 1 - for each test group: proper code, to reinsert between cleanups; # 2 - overall wrap up: generation of debugging scripts and statistics. # AT_LINE # Return the current file sans directory, a colon, and the current line. AT_DEFINE(AT_LINE, [patsubst(__file__, ^.*/\(.*\), \1):__line__]) # AT_INIT(PROGRAM) # Begin testing suite, using PROGRAM to check version. The search path # should be already preset so the proper executable will be selected. AT_DEFINE(AT_INIT, [AT_DEFINE(AT_ordinal, 0) . ./atconfig # Snippet (3 at_usage="Usage: [$]0 [OPTION]... -e Abort the full suite and inhibit normal clean up if a test fails -n Do not redirect stdout and stderr and do not test their contents -s Inhibit verbosity while generating or executing debugging scripts -v Force more detailed output, default for debugging scripts unless -s -x Have the shell to trace command execution; also implies option -n" while test [$][#] -gt 0; do case "[$]1" in --help) echo "$at_usage"; exit 0 ;; --version) echo "[$]0 ($at_package) $at_version"; exit 0 ;; -e) at_stop_on_error=1; shift ;; -n) at_no_redirs=1; shift ;; -s) at_verbose=; at_silent=1; shift ;; -v) at_verbose=1; at_silent=; shift ;; -x) at_traceon='set -vx'; at_traceoff='set +vx'; at_no_redirs=1; shift ;; *) echo 1>&2 "Try \`[$]0 --help' for more information."; exit 1 ;; esac done # In the testing suite, we only want to know if the test succeeded or failed. # But in debugging scripts, we want more information, so we prefer `diff -u' # to the silent `cmp', even if it may happen that we compare binary files. # Option `-u' might be less portable, so either change it or use GNU `diff'. if test -n "$at_verbose"; then at_diff='diff -u' else if test -n "$COMSPEC$ComSpec"; then at_diff='diff -u' else at_diff='cmp -s' fi fi # Each generated debugging script, containing a single test group, cleans # up files at the beginning only, not at the end. This is so we can repeat # the script many times and browse left over files. To cope with such left # over files, the full test suite cleans up both before and after test groups. # Snippet )3 if test -n "`$1 --version | sed -n s/$at_package.*$at_version/OK/p`"; then at_banner="Testing suite for $at_package, version $at_version" at_dashes=`echo $at_banner | sed s/./=/g` echo "$at_dashes" echo "$at_banner" echo "$at_dashes" else echo '=======================================================' echo 'ERROR: Not using the proper version, no tests performed' echo '=======================================================' exit 1 fi # Remove any debugging script resulting from a previous run. rm -f debug-*.sh at_failed_list= at_ignore_count=0 divert(2)[]dnl # Wrap up the testing suite with summary statistics. rm -f at-check-line at_fail_count=0 if test -z "$at_failed_list"; then if test "$at_ignore_count" = 0; then at_banner="All $at_test_count tests were successful" else at_banner="All $at_test_count tests were successful ($at_ignore_count ignored)" fi else echo echo $at_n "Writing \`debug-NN.sh' scripts, NN =$at_c" for at_group in $at_failed_list; do echo $at_n " $at_group$at_c" ( echo '#!/bin/sh' sed -n '/^[#] Snippet (1/,/^[#] Snippet )1/p' atconfig test -z "$at_silent" && echo 'at_verbose=1' sed -n '/^[#] Snippet (2/,/^[#] Snippet )2/p' atconfig sed -n "/^[#] Snippet (3/,/^[#] Snippet )3/p" [$]0 sed -n "/^[#] Snippet (c$at_group(/,/^[#] Snippet )c$at_group)/p" [$]0 at_desc="`sed -n \ '/^[#] Snippet (d'$at_group'(/,/^[#] Snippet )d'$at_group')/p' [$]0 \ | sed -n '2s/^[#] //p'`" echo 'if test -n "$at_verbose"; then' echo ' at_banner="[$]0: '$at_desc'"' echo ' at_dashes=`echo $at_banner | sed s/./=/g`' echo ' echo' echo ' echo "$at_dashes"' echo ' echo "$at_banner"' echo ' echo "$at_dashes"' echo 'fi' echo sed -n "/^[#] Snippet (d$at_group(/,/^[#] Snippet )d$at_group)/p" [$]0 sed -n "/^[#] Snippet (s$at_group(/,/^[#] Snippet )s$at_group)/p" [$]0 echo 'exit 0' ) | grep -v '^[#] Snippet' > debug-$at_group.sh chmod +x debug-$at_group.sh at_fail_count=`expr $at_fail_count + 1` done echo ', done' if test -n "$at_stop_on_error"; then at_banner='ERROR: One of the tests failed, inhibiting subsequent tests' else at_banner="ERROR: Suite unsuccessful, $at_fail_count of $at_test_count tests failed" fi fi at_dashes=`echo $at_banner | sed s/./=/g` echo echo "$at_dashes" echo "$at_banner" echo "$at_dashes" if test -n "$at_failed_list"; then if test -z "$at_silent"; then echo echo 'When reporting failed tests to maintainers, do not merely list test' echo 'numbers, as the numbering changes between releases and pretests.' echo 'Be careful to give at least all the information you got about them.' echo 'You may investigate any problem if you feel able to do so, in which' echo 'case the generated debugging scripts provide good starting points.' echo "Go on and modify them at will. \`./debug-NN --help' gives usage" echo 'information. Now, failed tests will be executed again, verbosely.' for at_group in $at_failed_list; do ./debug-$at_group.sh done fi exit 1 fi exit 0 divert[]dnl ]) # AT_SETUP(DESCRIPTION) # Start a group of related tests, all to be executed in the same subshell. # The group is testing what DESCRIPTION says. AT_DEFINE(AT_SETUP, [AT_DEFINE([AT_ordinal], AT_EVAL(AT_ordinal + 1)) pushdef([AT_group_description], [$1]) pushdef([AT_data_files], ) pushdef([AT_data_expout], ) pushdef([AT_data_experr], ) if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then divert(1)[]dnl echo AT_LINE > at-check-line if test -n "$at_verbose"; then echo 'testing AT_group_description' echo $at_n " $at_c" fi echo $at_n "substr(AT_ordinal. $srcdir/AT_LINE , 0, 30)[]$at_c" if test -z "$at_skip_mode"; then ( [#] Snippet (d[]AT_ordinal[]( [#] Testing AT_group_description [#] Snippet )d[]AT_ordinal[]) [#] Snippet (s[]AT_ordinal[]( [#] starting from `AT_LINE'. $at_traceon ]) # AT_CLEANUP(FILES) # Complete a group of related tests, recursively remove those FILES # created within the test. There is no need to list stdout, stderr, # nor files created with AT_DATA. AT_DEFINE(AT_CLEANUP, $at_traceoff [[#] Snippet )s[]AT_ordinal[]) ) case [$]? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list AT_ordinal" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=AT_ordinal if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then divert(0)[]dnl [#] Snippet (c[]AT_ordinal[]( rm ifelse([AT_data_files$1], , [-f], [-rf[]AT_data_files[]ifelse($1, , , [ $1])]) stdout stderr[]AT_data_expout[]AT_data_experr [#] Snippet )c[]AT_ordinal[]) undivert(1)[]dnl rm ifelse([AT_data_files$1], , [-f], [-rf[]AT_data_files[]ifelse($1, , , [ $1])]) stdout stderr[]AT_data_expout[]AT_data_experr fi fi popdef([AT_data_experr]) popdef([AT_data_expout]) popdef([AT_data_files]) popdef([AT_group_description])]) # AT_DATA(FILE, CONTENTS) # Initialize an input data FILE with given CONTENTS, which should end with # an end of line. # This macro is not robust to active symbols in CONTENTS *on purpose*. # If you don't want CONTENT to be evaluated, quote it twice. AT_DEFINE(AT_DATA, [AT_DEFINE([AT_data_files], AT_data_files[ ]$1) cat > $1 <<'EOF' $2[]EOF ]) # AT_CHECK(COMMANDS, [STATUS], STDOUT, STDERR) # Execute a test by performing given shell COMMANDS. These commands # should normally exit with STATUS, while producing expected STDOUT and # STDERR contents. The special word `expout' for STDOUT means that file # `expout' contents has been set to the expected stdout. The special word # `experr' for STDERR means that file `experr' contents has been set to # the expected stderr. # STATUS is not checked if it is empty. # STDOUT and STDERR can be the special value `ignore', in which case # their content is not checked. AT_DEFINE(AT_CHECK, [$at_traceoff test -n "$at_verbose" \ && echo "$srcdir/AT_LINE: testing..." echo AT_LINE > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon $1 ifelse([$2],,, [at_status=$? if test $at_status != $2; then dnl Maybe there was an important message to read before it died. test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 dnl Exit with the same code, at least to preserve 77. exit $at_status fi ])dnl $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 AT_CASE([$3], ignore, [test -n "$at_verbose" && cat stdout;:], expout, [AT_DEFINE([AT_data_expout], [ expout])dnl $at_diff expout stdout || exit 1], [], [$at_diff /dev/null stdout || exit 1], [echo $at_n "patsubst([$3], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stdout || exit 1]) AT_CASE([$4], ignore, [test -n "$at_verbose" && cat stderr;:], experr, [AT_DEFINE([AT_data_experr], [ experr])dnl $at_diff experr stderr || exit 1], [], [$at_diff /dev/null stderr || exit 1], [echo $at_n "patsubst([$4], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stderr || exit 1]) fi $at_traceon ]) divert(0)dnl recode-3.6/tests/suite.m40100644000000000000000000000275607126357073014103 0ustar rootroot#!/bin/sh # -*- coding: latin-1 -*- # Validation suite for the Free `recode' program and library. # Copyright © 1998, 1999, 2000 Progiciels Bourbeau-Pinard inc. # François Pinard , 1998. # Still many parts of `recode' are not exercised by the test suite. A few # FIXME's, below, are used to list tests that we would need. Do you feel # like contributing new tests? If you do, you may tell your intent to # `recode-forum@iro.umontreal.ca', so no two people work at the same thing. AT_INIT(recode) # Tell the installer that `make bigtest' exists. echo echo "WARNING: The \`bigauto' test will be skipped, as it takes a long time to" echo " complete. To launch it, get into the build \`tests/' directory" echo " and do either \`make bigtest' or \`make bigtest-strict'. The" echo " later forces \`-s' on all \`recode' calls." echo echo 'Charset listings.' echo AT_INCLUDE(names.m4) AT_INCLUDE(lists.m4) echo echo 'Individual surfaces.' echo # FIXME: tests for endline and permut. AT_INCLUDE(dumps.m4) AT_INCLUDE(base64.m4) AT_INCLUDE(quoted.m4) echo echo 'Individual charsets.' echo # FIXME: tests for atarist, next, ebcdic, tables, applemac, ibmpc, iconqnx, # cdcnos, bangbang, ascii, flat, html, latex, texinfo, texte and utf16. AT_INCLUDE(african.m4) AT_INCLUDE(combine.m4) AT_INCLUDE(testdump.m4) AT_INCLUDE(utf7.m4) AT_INCLUDE(utf8.m4) echo echo 'Inter-step mechanics.' echo AT_INCLUDE(methods.m4) recode-3.6/tests/testsuite0100644000000000000000000066471007224443772014471 0ustar rootroot#!/bin/sh # -*- coding: latin-1 -*- # Validation suite for the Free `recode' program and library. # Copyright © 1998, 1999, 2000 Progiciels Bourbeau-Pinard inc. # François Pinard , 1998. # Still many parts of `recode' are not exercised by the test suite. A few # FIXME's, below, are used to list tests that we would need. Do you feel # like contributing new tests? If you do, you may tell your intent to # `recode-forum@iro.umontreal.ca', so no two people work at the same thing. . ./atconfig # Snippet (3 at_usage="Usage: $0 OPTION... -e Abort the full suite and inhibit normal clean up if a test fails -n Do not redirect stdout and stderr and do not test their contents -s Inhibit verbosity while generating or executing debugging scripts -v Force more detailed output, default for debugging scripts unless -s -x Have the shell to trace command execution; also implies option -n" while test $# -gt 0; do case "$1" in --help) echo "$at_usage"; exit 0 ;; --version) echo "$0 ($at_package) $at_version"; exit 0 ;; -e) at_stop_on_error=1; shift ;; -n) at_no_redirs=1; shift ;; -s) at_verbose=; at_silent=1; shift ;; -v) at_verbose=1; at_silent=; shift ;; -x) at_traceon='set -vx'; at_traceoff='set +vx'; at_no_redirs=1; shift ;; *) echo 1>&2 "Try \`$0 --help' for more information."; exit 1 ;; esac done # In the testing suite, we only want to know if the test succeeded or failed. # But in debugging scripts, we want more information, so we prefer `diff -u' # to the silent `cmp', even if it may happen that we compare binary files. # Option `-u' might be less portable, so either change it or use GNU `diff'. if test -n "$at_verbose"; then at_diff='diff -u' else if test -n "$COMSPEC$ComSpec"; then at_diff='diff -u' else at_diff='cmp -s' fi fi # Each generated debugging script, containing a single test group, cleans # up files at the beginning only, not at the end. This is so we can repeat # the script many times and browse left over files. To cope with such left # over files, the full test suite cleans up both before and after test groups. # Snippet )3 if test -n "`recode --version | sed -n s/$at_package.*$at_version/OK/p`"; then at_banner="Testing suite for $at_package, version $at_version" at_dashes=`echo $at_banner | sed s/./=/g` echo "$at_dashes" echo "$at_banner" echo "$at_dashes" else echo '=======================================================' echo 'ERROR: Not using the proper version, no tests performed' echo '=======================================================' exit 1 fi # Remove any debugging script resulting from a previous run. rm -f debug-*.sh at_failed_list= at_ignore_count=0 # Tell the installer that `make bigtest' exists. echo echo "WARNING: The \`bigauto' test will be skipped, as it takes a long time to" echo " complete. To launch it, get into the build \`tests/' directory" echo " and do either \`make bigtest' or \`make bigtest-strict'. The" echo " later forces \`-s' on all \`recode' calls." echo echo 'Charset listings.' echo # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c1( rm -rf stdout stderr expout # Snippet )c1) echo names.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing list of charsets and surfaces' echo $at_n " $at_c" fi echo $at_n "1. $srcdir/names.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d1( # Testing list of charsets and surfaces # Snippet )d1) # Snippet (s1( # starting from `names.m4:3'. $at_traceon cat >expout <<'EOF' /21-Permutation swabytes /4321-Permutation /Base64 64 b64 /CR /CR-LF cl /Decimal-1 d d1 /Decimal-2 d2 /Decimal-4 d4 /Hexadecimal-1 x x1 /Hexadecimal-2 x2 /Hexadecimal-4 x4 /Octal-1 o o1 /Octal-2 o2 /Octal-4 o4 /Quoted-Printable QP quote-printable /test7 /test8 /test15 /test16 :libiconv: : AFRFUL-102-BPI_OCIL bambara bra ewondo fulfulde AFRFUL-103-BPI_OCIL t-bambara t-bra t-ewondo t-fulfulde AFRL1-101-BPI_OCIL t-fra t-francais AFRLIN-104-BPI_OCIL lin lingala sango wolof AFRLIN-105-BPI_OCIL t-lin t-lingala t-sango t-wolof ANSI_X3.4-1968 367/CR-LF ANSI_X3.4-1986 ASCII CP367/CR-LF csASCII IBM367/CR-LF ISO646-US ISO646.1991-IRV iso-ir-6 ISO_646.irv:1991 us US-ASCII Apple-Mac/CR ARMSCII-8 ASCII-BS BS ASMO_449 arabic7 iso-ir-89 ISO_9036 AtariST baltic iso-ir-179 Bang-Bang BIG5 BIG-5 BIG-FIVE BIGFIVE CN-BIG5 csBig5 BIG5HKSCS BS_4730 gb ISO646-GB iso-ir-4 uk BS_viewdata iso-ir-47 CDC-NOS NOS CHAR combined-UCS-2 co CORK T1 count-characters CP866 866 csIBM866 IBM866 CP874 WINDOWS-874 CP932 CP949 UHC CP950 CP1133 IBM-CP1133 CP1250/CR-LF 1250/CR-LF ms-ee windows-1250 CP1251/CR-LF 1251/CR-LF ms-cyrl windows-1251 CP1252/CR-LF 1252/CR-LF ms-ansi windows-1252 CP1253/CR-LF 1253/CR-LF ms-greek windows-1253 CP1254/CR-LF 1254/CR-LF ms-turk windows-1254 CP1255/CR-LF 1255/CR-LF ms-hebr windows-1255 CP1256/CR-LF 1256/CR-LF ms-arab windows-1256 CP1257/CR-LF 1257/CR-LF WinBaltRim windows-1257 CP1258 WINDOWS-1258 CSA_Z243.4-1985-1 ca csa7-1 ISO646-CA iso-ir-121 CSA_Z243.4-1985-2 csa7-2 ISO646-CA2 iso-ir-122 CSA_Z243.4-1985-gr iso-ir-123 CSN_369103 iso-ir-139 koi8l2 KOI-8_L2 CWI cp-hu CWI-2 data DEC-MCS dec DIN_66003 de ISO646-DE iso-ir-21 DS_2089 dk DS2089 ISO646-DK dump-with-names EBCDIC EBCDIC-AT-DE EBCDIC-AT-DE-A EBCDIC-CA-FR EBCDIC-CCC EBCDIC-DK-NO EBCDIC-DK-NO-A EBCDIC-ES EBCDIC-ES-A EBCDIC-ES-S EBCDIC-FI-SE EBCDIC-FI-SE-A EBCDIC-FR EBCDIC-IBM EBCDIC-IS-FRISS friss EBCDIC-IT EBCDIC-PT EBCDIC-UK EBCDIC-US ECMA-cyrillic ECMA-113 ECMA-113:1986 iso-ir-111 ES ISO646-ES iso-ir-17 ES2 ISO646-ES2 iso-ir-85 EUC-CN CN-GB csGB2312 EUCCN EUC_CN GB2312 EUC-JP csEUCPkdFmtJapanese EUCJP EUC_JP Extended_UNIX_Code_Packed_Format_for_Japanese EUC-KR csEUCKR EUCKR EUC_KR EUC-TW csEUCTW EUCTW EUC_TW flat GB18030 GBK CP936 GB_1988-80 cn csISO57GB1988 ISO646-CN iso-ir-57 GB_2312-80 CHINESE csISO58GB231280 GB2312.1980-0 ISO-IR-58 Georgian-Academy Georgian-PS GOST_19768-87 iso-ir-153 ST_SEV_358-88 greek7 iso-ir-88 greek7-old iso-ir-18 greek-ccitt iso-ir-150 hp-roman8 csHPRoman8 r8 roman8 HTML-i18n 2070 RFC2070 HTML_1.1 h1 HTML_2.0 1866 h2 RFC1866 HTML_3.2 h3 HTML_4.0 h h4 HTML HZ HZ-GB-2312 IBM037/CR-LF 037/CR-LF CP037/CR-LF ebcdic-cp-ca ebcdic-cp-nl ebcdic-cp-us ebcdic-cp-wt IBM038/CR-LF 038/CR-LF CP038/CR-LF EBCDIC-INT IBM256/CR-LF 256/CR-LF CP256/CR-LF EBCDIC-INT1 IBM273/CR-LF 273/CR-LF CP273/CR-LF IBM274/CR-LF 274/CR-LF CP274/CR-LF EBCDIC-BE IBM275/CR-LF 275/CR-LF CP275/CR-LF EBCDIC-BR IBM277/CR-LF EBCDIC-CP-DK EBCDIC-CP-NO IBM278/CR-LF 278/CR-LF CP278/CR-LF ebcdic-cp-fi ebcdic-cp-se IBM280/CR-LF 280/CR-LF CP280/CR-LF ebcdic-cp-it IBM281/CR-LF 281/CR-LF CP281/CR-LF EBCDIC-JP-E IBM284/CR-LF 284/CR-LF CP284/CR-LF ebcdic-cp-es IBM285/CR-LF 285/CR-LF CP285/CR-LF ebcdic-cp-gb IBM290/CR-LF 290/CR-LF CP290/CR-LF EBCDIC-JP-kana IBM297/CR-LF 297/CR-LF CP297/CR-LF ebcdic-cp-fr IBM420/CR-LF 420/CR-LF CP420/CR-LF ebcdic-cp-ar1 IBM423/CR-LF 423/CR-LF CP423/CR-LF ebcdic-cp-gr IBM424/CR-LF 424/CR-LF CP424/CR-LF ebcdic-cp-he IBM437/CR-LF 437/CR-LF CP437/CR-LF IBM500/CR-LF 500/CR-LF 500V1 CP500/CR-LF ebcdic-cp-be ebcdic-cp-ch IBM850/CR-LF 850/CR-LF CP850/CR-LF csPC850Multilingual IBM851/CR-LF 851/CR-LF CP851/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM855/CR-LF 855/CR-LF CP855/CR-LF IBM857/CR-LF 857/CR-LF CP857/CR-LF IBM860/CR-LF 860/CR-LF CP860/CR-LF IBM861/CR-LF 861/CR-LF CP861/CR-LF cp-is IBM862/CR-LF 862/CR-LF CP862/CR-LF IBM863/CR-LF 863/CR-LF CP863/CR-LF IBM864/CR-LF 864/CR-LF CP864/CR-LF IBM865/CR-LF 865/CR-LF CP865/CR-LF IBM868/CR-LF 868/CR-LF CP868/CR-LF cp-ar IBM869/CR-LF 869/CR-LF CP869/CR-LF cp-gr IBM870/CR-LF 870/CR-LF CP870/CR-LF ebcdic-cp-roece ebcdic-cp-yu IBM871/CR-LF 871/CR-LF CP871/CR-LF ebcdic-cp-is IBM875/CR-LF 875/CR-LF CP875/CR-LF EBCDIC-Greek IBM880/CR-LF 880/CR-LF CP880/CR-LF EBCDIC-Cyrillic IBM891/CR-LF 891/CR-LF CP891/CR-LF IBM903/CR-LF 903/CR-LF CP903/CR-LF IBM904/CR-LF 904/CR-LF CP904/CR-LF IBM905/CR-LF 905/CR-LF CP905/CR-LF ebcdic-cp-tr IBM918/CR-LF 918/CR-LF CP918/CR-LF ebcdic-cp-ar2 IBM1004/CR-LF 1004/CR-LF CP1004/CR-LF os2latin1 IBM1026/CR-LF 1026/CR-LF CP1026/CR-LF IBM1047/CR-LF 1047/CR-LF CP1047/CR-LF IBM-PC/CR-LF dos/CR-LF MSDOS/CR-LF pc/CR-LF Icon-QNX QNX IEC_P27-1 iso-ir-143 INIS iso-ir-49 INIS-8 iso-ir-50 INIS-cyrillic iso-ir-51 INVARIANT iso-ir-170 ISO-2022-CN csISO2022CN ISO2022CN ISO-2022-CN-EXT ISO-2022-JP csISO2022JP ISO2022JP ISO-2022-JP-1 ISO-2022-JP-2 csISO2022JP2 ISO-2022-KR csISO2022KR ISO2022KR ISO-8859-1 819/CR-LF CP819/CR-LF csISOLatin1 IBM819/CR-LF ISO8859-1 iso-ir-100 ISO_8859-1 ISO_8859-1:1987 l1 lat1 latin1 Latin-1 ISO-8859-2 912/CR-LF CP912/CR-LF csISOLatin2 IBM912/CR-LF ISO8859-2 iso-ir-101 ISO_8859-2 ISO_8859-2:1987 l2 latin2 ISO-8859-3 csISOLatin3 ISO8859-3 iso-ir-109 ISO_8859-3 ISO_8859-3:1988 l3 latin3 ISO-8859-4 csISOLatin4 ISO8859-4 iso-ir-110 ISO_8859-4 ISO_8859-4:1988 l4 latin4 ISO-8859-5 csISOLatinCyrillic cyrillic ISO8859-5 iso-ir-144 ISO_8859-5 ISO_8859-5:1988 ISO-8859-6 arabic ASMO-708 csISOLatinArabic ECMA-114 ISO8859-6 iso-ir-127 ISO_8859-6 ISO_8859-6:1987 ISO-8859-7 csISOLatinGreek ECMA-118 ELOT_928 greek greek8 ISO8859-7 iso-ir-126 ISO_8859-7 ISO_8859-7:1987 ISO-8859-8 csISOLatinHebrew hebrew ISO8859-8 iso-ir-138 ISO_8859-8 ISO_8859-8:1988 ISO-8859-9 csISOLatin5 ISO8859-9 iso-ir-148 ISO_8859-9 ISO_8859-9:1989 l5 latin5 ISO-8859-10 csISOLatin6 ISO8859-10 iso-ir-157 ISO_8859-10 ISO_8859-10:1992 ISO_8859-10:1993 L6 latin6 ISO-8859-13 ISO8859-13 iso-baltic ISO-IR-179 iso-ir-179a ISO_8859-13 ISO_8859-13:1998 l7 latin7 ISO-8859-14 ISO8859-14 iso-celtic iso-ir-199 ISO_8859-14 ISO_8859-14:1998 l8 latin8 ISO-8859-15 ISO8859-15 iso-ir-203 ISO_8859-15 ISO_8859-15:1998 l9 latin9 ISO-8859-16 ISO-IR-226 ISO_8859-16 ISO_8859-16:2000 ISO-10646-UCS-2 BMP csUnicode csUnicode11 rune u2 UCS-2 UCS-2BE UNICODE-1-1 UNICODEBIG ISO-10646-UCS-4 10646 csUCS4 ISO_10646 u4 UCS UCS-4 ISO-IR-165 CN-GB-ISOIR165 ISO_646.basic ISO_646.basic:1983 ref ISO_646.irv irv iso-ir-2 ISO_646.irv:1983 ISO_2033-1983 e13b iso-ir-98 ISO_5427 iso-ir-37 ISO_5427-ext iso-ir-54 ISO_5427:1981 ISO_5428 iso-ir-55 ISO_5428:1980 ISO_6937-2-25 iso-ir-152 ISO_8859-supp iso-ir-154 latin1-2-5 ISO_10367-box iso-ir-155 IT ISO646-IT iso-ir-15 JAVA JIS_C6220-1969-jp iso-ir-13 JIS_C6220-1969 katakana x0201-7 JIS_C6220-1969-ro csISO14JISC6220ro ISO646-JP iso-ir-14 jp JIS_C6229-1984-a jp-ocr-a JIS_C6229-1984-b ISO646-JP-OCR-B jp-ocr-b JIS_C6229-1984-b-add iso-ir-93 jp-ocr-b-add JIS_C6229-1984-hand iso-ir-94 jp-ocr-hand JIS_C6229-1984-hand-add iso-ir-95 jp-ocr-hand-add JIS_C6229-1984-kana iso-ir-96 JIS_X0201 csHalfWidthKatakana JIS0201 JISX0201-1976 JISX0201.1976-0 X0201 JIS_X0208 csISO87JISX0208 ISO-IR-87 JIS0208 JISX0208.1983-0 JISX0208.1990-0 JIS_X0208-1983 JIS_X0208-1990 X0208 JIS_X0212 csISO159JISX02121990 ISO-IR-159 JIS0212 JISX0212.1990-0 JIS_X0212-1990 JIS_X0212.1990-0 X0212 JOHAB CP1361 JUS_I.B1.002 ISO646-YU iso-ir-141 js yu JUS_I.B1.003-mac iso-ir-147 macedonian JUS_I.B1.003-serb iso-ir-146 serbian KEYBCS2 Kamenicky KOI8-R csKOI8R KOI8-RU KOI8-U KOI-7 KOI-8 GOST_19768-74 KOI-8_CS2 KSC5636 ISO646-KR KSC_5601 csKSC56011987 ISO-IR-149 KOREAN KSC5601.1987-0 KSX1001:1992 KS_C_5601-1987 KS_C_5601-1989 LaTeX ltex TeX latin-greek iso-ir-19 Latin-greek-1 iso-ir-27 mac-is MacArabic MacCentralEurope MacCroatian MacCyrillic MacGreek MacHebrew MacIceland macintosh/CR csMacintosh mac/CR MacRoman macintosh_ce/CR macce/CR MacRomania MacThai MacTurkish MacUkraine MSZ_7795.3 hu ISO646-HU iso-ir-86 Mule MuleLao-1 NATS-DANO iso-ir-9-1 NATS-DANO-ADD iso-ir-9-2 NATS-SEFI iso-ir-8-1 NATS-SEFI-ADD iso-ir-8-2 NC_NC00-10 cuba ISO646-CU iso-ir-151 NC_NC00-10:81 NeXTSTEP next NF_Z_62-010 fr ISO646-FR iso-ir-69 NF_Z_62-010_(1973) ISO646-FR1 iso-ir-25 NS_4551-1 ISO646-NO iso-ir-60 no NS_4551-2 ISO646-NO2 iso-ir-61 no2 PT ISO646-PT iso-ir-16 PT2 ISO646-PT2 iso-ir-84 RFC1345 1345 mnemonic sami iso-ir-158 lap latin-lap SEN_850200_B FI ISO646-FI ISO646-SE iso-ir-10 se SS636127 SEN_850200_C ISO646-SE2 iso-ir-11 se2 SJIS csShiftJIS MS_KANJI SHIFT-JIS SHIFT_JIS T.61-7bit iso-ir-102 TCVN TCVN5712-1 TCVN5712-1:1993 TCVN-5712 Texinfo texi ti Texte txte TIS-620 ISO-IR-166 TIS620 TIS620-0 TIS620.2529-1 TIS620.2533-0 TIS620.2533-1 tree UCS-2-INTERNAL UCS-2-SWAPPED UCS-2LE UNICODELITTLE UCS-4-INTERNAL UCS-4-SWAPPED UCS-4BE UCS-4LE UNICODE-1-1-UTF-7 csUnicode11UTF7 TF-7 u7 UTF-7 UTF-8 FSS_UTF TF-8 u8 UTF-2 UTF-FSS UTF-16 TF-16 u6 Unicode UTF-16BE UTF-16LE VIQR VISCII csVISCII VISCII1.1-1 VNI VPS WCHAR_T XML-standalone h0 EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/names.m4:290: testing..." echo names.m4:290 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode -l at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s1) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 1" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=1 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr expout fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c2( rm -rf stdout stderr expout # Snippet )c2) echo names.m4:294 > at-check-line if test -n "$at_verbose"; then echo 'testing the --find-subsets option' echo $at_n " $at_c" fi echo $at_n "2. $srcdir/names.m4:294 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d2( # Testing the --find-subsets option # Snippet )d2) # Snippet (s2( # starting from `names.m4:294'. $at_traceon cat >expout <<'EOF' [ 0] ANSI_X3.4-1968 == IBM891 [ 0] ANSI_X3.4-1968 == IBM903 [ 0] IBM891 == ANSI_X3.4-1968 [ 0] IBM891 == IBM903 [ 0] IBM903 == ANSI_X3.4-1968 [ 0] IBM903 == IBM891 [ 3] ANSI_X3.4-1968 < IBM904 [ 3] IBM891 < IBM904 [ 3] IBM903 < IBM904 [ 3] JIS_C6229-1984-hand-add < JIS_C6229-1984-b-add [ 4] IBM1004 < CP1252 [ 6] INVARIANT < T.61-7bit [ 6] T.61-7bit < ISO_646.irv [ 10] INVARIANT < JIS_C6229-1984-b [ 12] INVARIANT < ANSI_X3.4-1968 [ 12] INVARIANT < BS_4730 [ 12] INVARIANT < CSA_Z243.4-1985-1 [ 12] INVARIANT < CSA_Z243.4-1985-2 [ 12] INVARIANT < DIN_66003 [ 12] INVARIANT < DS_2089 [ 12] INVARIANT < ES [ 12] INVARIANT < ES2 [ 12] INVARIANT < GB_1988-80 [ 12] INVARIANT < IBM891 [ 12] INVARIANT < IBM903 [ 12] INVARIANT < ISO_646.irv [ 12] INVARIANT < IT [ 12] INVARIANT < JIS_C6220-1969-ro [ 12] INVARIANT < JUS_I.B1.002 [ 12] INVARIANT < KSC5636 [ 12] INVARIANT < MSZ_7795.3 [ 12] INVARIANT < NATS-SEFI [ 12] INVARIANT < NC_NC00-10 [ 12] INVARIANT < NF_Z_62-010 [ 12] INVARIANT < NF_Z_62-010_(1973) [ 12] INVARIANT < NS_4551-1 [ 12] INVARIANT < NS_4551-2 [ 12] INVARIANT < PT [ 12] INVARIANT < PT2 [ 12] INVARIANT < SEN_850200_B [ 12] INVARIANT < SEN_850200_C [ 12] JIS_C6229-1984-kana < JIS_C6220-1969-jp [ 13] INIS < ANSI_X3.4-1968 [ 13] INIS < BS_4730 [ 13] INIS < IBM891 [ 13] INIS < IBM903 [ 13] INIS < JIS_C6220-1969-ro [ 13] INIS < KSC5636 [ 15] INVARIANT < IBM904 [ 16] INIS < IBM904 [ 28] GOST_19768-87 < ISO-8859-5 [ 28] JIS_C6229-1984-hand < JIS_C6229-1984-b [ 33] ISO_646.basic < INVARIANT [ 39] ISO_646.basic < T.61-7bit [ 43] ISO_646.basic < JIS_C6229-1984-b [ 45] ISO_646.basic < ANSI_X3.4-1968 [ 45] ISO_646.basic < BS_4730 [ 45] ISO_646.basic < CSA_Z243.4-1985-1 [ 45] ISO_646.basic < CSA_Z243.4-1985-2 [ 45] ISO_646.basic < DIN_66003 [ 45] ISO_646.basic < DS_2089 [ 45] ISO_646.basic < ES [ 45] ISO_646.basic < ES2 [ 45] ISO_646.basic < GB_1988-80 [ 45] ISO_646.basic < IBM891 [ 45] ISO_646.basic < IBM903 [ 45] ISO_646.basic < ISO_646.irv [ 45] ISO_646.basic < IT [ 45] ISO_646.basic < JIS_C6220-1969-ro [ 45] ISO_646.basic < JUS_I.B1.002 [ 45] ISO_646.basic < KSC5636 [ 45] ISO_646.basic < MSZ_7795.3 [ 45] ISO_646.basic < NATS-SEFI [ 45] ISO_646.basic < NC_NC00-10 [ 45] ISO_646.basic < NF_Z_62-010 [ 45] ISO_646.basic < NF_Z_62-010_(1973) [ 45] ISO_646.basic < NS_4551-1 [ 45] ISO_646.basic < NS_4551-2 [ 45] ISO_646.basic < PT [ 45] ISO_646.basic < PT2 [ 45] ISO_646.basic < SEN_850200_B [ 45] ISO_646.basic < SEN_850200_C [ 48] ISO_646.basic < IBM904 [ 57] EBCDIC-US < IBM424 [ 61] ANSI_X3.4-1968 < ISO_10367-box [ 61] IBM891 < ISO_10367-box [ 61] IBM903 < ISO_10367-box [ 63] ANSI_X3.4-1968 < KOI-8 [ 63] IBM891 < KOI-8 [ 63] IBM903 < KOI-8 [ 64] T.61-7bit < ISO_6937-2-25 [ 65] KOI-8 < ECMA-cyrillic [ 65] KOI-8 < KOI8-R [ 65] KOI-8 < KOI8-RU [ 66] ANSI_X3.4-1968 < sami [ 66] IBM891 < sami [ 66] IBM903 < sami [ 70] INVARIANT < ISO_6937-2-25 [ 73] INVARIANT < ISO_10367-box [ 74] INIS < ISO_10367-box [ 75] INVARIANT < KOI-8 [ 76] INIS < KOI-8 [ 78] ANSI_X3.4-1968 < CP1255 [ 78] IBM891 < CP1255 [ 78] IBM903 < CP1255 [ 78] INVARIANT < sami [ 79] INIS < sami [ 83] ANSI_X3.4-1968 < ISO-8859-6 [ 83] IBM891 < ISO-8859-6 [ 83] IBM903 < ISO-8859-6 [ 90] ANSI_X3.4-1968 < ISO-8859-8 [ 90] IBM891 < ISO-8859-8 [ 90] IBM903 < ISO-8859-8 [ 90] INVARIANT < CP1255 [ 91] INIS < CP1255 [ 95] INVARIANT < ISO-8859-6 [ 95] JIS_C6220-1969-ro < JIS_X0201 [ 96] EBCDIC-AT-DE < IBM273 [ 96] EBCDIC-DK-NO < IBM277 [ 96] EBCDIC-IT < IBM280 [ 96] EBCDIC-UK < IBM285 [ 96] EBCDIC-US < IBM037 [ 96] IBM038 < IBM256 [ 96] IBM038 < IBM500 [ 96] INIS < ISO-8859-6 [100] ANSI_X3.4-1968 < GOST_19768-87 [100] IBM891 < GOST_19768-87 [100] IBM903 < GOST_19768-87 [102] INVARIANT < ISO-8859-8 [103] ANSI_X3.4-1968 < IBM868 [103] IBM891 < IBM868 [103] IBM903 < IBM868 [103] INIS < ISO-8859-8 [103] ISO_646.basic < ISO_6937-2-25 [106] ISO_646.basic < ISO_10367-box [107] INVARIANT < JIS_X0201 [108] INIS < JIS_X0201 [108] ISO_646.basic < KOI-8 [109] ANSI_X3.4-1968 < CP1257 [109] IBM891 < CP1257 [109] IBM903 < CP1257 [111] ANSI_X3.4-1968 < CP1253 [111] IBM891 < CP1253 [111] IBM903 < CP1253 [111] ISO_646.basic < sami [112] ANSI_X3.4-1968 < KOI8-U [112] IBM891 < KOI8-U [112] IBM903 < KOI8-U [112] INVARIANT < GOST_19768-87 [113] ANSI_X3.4-1968 < DEC-MCS [113] IBM891 < DEC-MCS [113] IBM903 < DEC-MCS [113] INIS < GOST_19768-87 [115] INVARIANT < IBM868 [116] INIS < IBM868 [119] ANSI_X3.4-1968 < IBM1004 [119] ANSI_X3.4-1968 < IBM869 [119] IBM891 < IBM1004 [119] IBM891 < IBM869 [119] IBM903 < IBM1004 [119] IBM903 < IBM869 [121] ANSI_X3.4-1968 < CP1254 [121] ANSI_X3.4-1968 < ISO-8859-3 [121] ANSI_X3.4-1968 < NeXTSTEP [121] IBM891 < CP1254 [121] IBM891 < ISO-8859-3 [121] IBM891 < NeXTSTEP [121] IBM903 < CP1254 [121] IBM903 < ISO-8859-3 [121] IBM903 < NeXTSTEP [121] INVARIANT < CP1257 [122] ANSI_X3.4-1968 < ISO-8859-7 [122] ANSI_X3.4-1968 < ISO_8859-supp [122] IBM891 < ISO-8859-7 [122] IBM891 < ISO_8859-supp [122] IBM903 < ISO-8859-7 [122] IBM903 < ISO_8859-supp [122] INIS < CP1257 [123] ANSI_X3.4-1968 < CP1250 [123] ANSI_X3.4-1968 < CP1252 [123] ANSI_X3.4-1968 < IBM864 [123] IBM891 < CP1250 [123] IBM891 < CP1252 [123] IBM891 < IBM864 [123] IBM903 < CP1250 [123] IBM903 < CP1252 [123] IBM903 < IBM864 [123] INVARIANT < CP1253 [123] ISO_646.basic < CP1255 [124] INIS < CP1253 [124] INVARIANT < KOI8-U [125] ANSI_X3.4-1968 < IBM857 [125] IBM891 < IBM857 [125] IBM903 < IBM857 [125] INIS < KOI8-U [125] INVARIANT < DEC-MCS [126] ANSI_X3.4-1968 < CP1256 [126] ANSI_X3.4-1968 < mac-is [126] ANSI_X3.4-1968 < macintosh [126] IBM891 < CP1256 [126] IBM891 < mac-is [126] IBM891 < macintosh [126] IBM903 < CP1256 [126] IBM903 < mac-is [126] IBM903 < macintosh [126] INIS < DEC-MCS [127] ANSI_X3.4-1968 < CP1251 [127] ANSI_X3.4-1968 < IBM851 [127] ANSI_X3.4-1968 < IBM855 [127] ANSI_X3.4-1968 < IBM861 [127] ANSI_X3.4-1968 < IBM862 [127] ANSI_X3.4-1968 < hp-roman8 [127] IBM891 < CP1251 [127] IBM891 < IBM851 [127] IBM891 < IBM855 [127] IBM891 < IBM861 [127] IBM891 < IBM862 [127] IBM891 < hp-roman8 [127] IBM903 < CP1251 [127] IBM903 < IBM851 [127] IBM903 < IBM855 [127] IBM903 < IBM861 [127] IBM903 < IBM862 [127] IBM903 < hp-roman8 [128] ANSI_X3.4-1968 < AtariST [128] ANSI_X3.4-1968 < CSA_Z243.4-1985-gr [128] ANSI_X3.4-1968 < CWI [128] ANSI_X3.4-1968 < ECMA-cyrillic [128] ANSI_X3.4-1968 < IBM437 [128] ANSI_X3.4-1968 < IBM850 [128] ANSI_X3.4-1968 < IBM852 [128] ANSI_X3.4-1968 < IBM860 [128] ANSI_X3.4-1968 < IBM863 [128] ANSI_X3.4-1968 < IBM865 [128] ANSI_X3.4-1968 < IEC_P27-1 [128] ANSI_X3.4-1968 < ISO-8859-1 [128] ANSI_X3.4-1968 < ISO-8859-10 [128] ANSI_X3.4-1968 < ISO-8859-13 [128] ANSI_X3.4-1968 < ISO-8859-14 [128] ANSI_X3.4-1968 < ISO-8859-15 [128] ANSI_X3.4-1968 < ISO-8859-2 [128] ANSI_X3.4-1968 < ISO-8859-4 [128] ANSI_X3.4-1968 < ISO-8859-5 [128] ANSI_X3.4-1968 < ISO-8859-9 [128] ANSI_X3.4-1968 < KOI8-R [128] ANSI_X3.4-1968 < KOI8-RU [128] ANSI_X3.4-1968 < baltic [128] ANSI_X3.4-1968 < macintosh_ce [128] IBM891 < AtariST [128] IBM891 < CSA_Z243.4-1985-gr [128] IBM891 < CWI [128] IBM891 < ECMA-cyrillic [128] IBM891 < IBM437 [128] IBM891 < IBM850 [128] IBM891 < IBM852 [128] IBM891 < IBM860 [128] IBM891 < IBM863 [128] IBM891 < IBM865 [128] IBM891 < IEC_P27-1 [128] IBM891 < ISO-8859-1 [128] IBM891 < ISO-8859-10 [128] IBM891 < ISO-8859-13 [128] IBM891 < ISO-8859-14 [128] IBM891 < ISO-8859-15 [128] IBM891 < ISO-8859-2 [128] IBM891 < ISO-8859-4 [128] IBM891 < ISO-8859-5 [128] IBM891 < ISO-8859-9 [128] IBM891 < KOI8-R [128] IBM891 < KOI8-RU [128] IBM891 < baltic [128] IBM891 < macintosh_ce [128] IBM903 < AtariST [128] IBM903 < CSA_Z243.4-1985-gr [128] IBM903 < CWI [128] IBM903 < ECMA-cyrillic [128] IBM903 < IBM437 [128] IBM903 < IBM850 [128] IBM903 < IBM852 [128] IBM903 < IBM860 [128] IBM903 < IBM863 [128] IBM903 < IBM865 [128] IBM903 < IEC_P27-1 [128] IBM903 < ISO-8859-1 [128] IBM903 < ISO-8859-10 [128] IBM903 < ISO-8859-13 [128] IBM903 < ISO-8859-14 [128] IBM903 < ISO-8859-15 [128] IBM903 < ISO-8859-2 [128] IBM903 < ISO-8859-4 [128] IBM903 < ISO-8859-5 [128] IBM903 < ISO-8859-9 [128] IBM903 < KOI8-R [128] IBM903 < KOI8-RU [128] IBM903 < baltic [128] IBM903 < macintosh_ce [128] ISO_646.basic < ISO-8859-6 [131] INVARIANT < IBM1004 [131] INVARIANT < IBM869 [132] INIS < IBM1004 [132] INIS < IBM869 [133] INVARIANT < CP1254 [133] INVARIANT < ISO-8859-3 [133] INVARIANT < NeXTSTEP [134] INIS < CP1254 [134] INIS < ISO-8859-3 [134] INIS < NeXTSTEP [134] INVARIANT < ISO-8859-7 [134] INVARIANT < ISO_8859-supp [134] T.61-7bit < CSN_369103 [135] INIS < ISO-8859-7 [135] INIS < ISO_8859-supp [135] INVARIANT < CP1250 [135] INVARIANT < CP1252 [135] INVARIANT < IBM864 [135] ISO_646.basic < ISO-8859-8 [136] INIS < CP1250 [136] INIS < CP1252 [136] INIS < IBM864 [137] INVARIANT < IBM857 [138] INIS < IBM857 [138] INVARIANT < CP1256 [138] INVARIANT < mac-is [138] INVARIANT < macintosh [139] INIS < CP1256 [139] INIS < mac-is [139] INIS < macintosh [139] INVARIANT < CP1251 [139] INVARIANT < IBM851 [139] INVARIANT < IBM855 [139] INVARIANT < IBM861 [139] INVARIANT < IBM862 [139] INVARIANT < hp-roman8 [140] INIS < CP1251 [140] INIS < IBM851 [140] INIS < IBM855 [140] INIS < IBM861 [140] INIS < IBM862 [140] INIS < hp-roman8 [140] INVARIANT < AtariST [140] INVARIANT < CSA_Z243.4-1985-gr [140] INVARIANT < CSN_369103 [140] INVARIANT < CWI [140] INVARIANT < ECMA-cyrillic [140] INVARIANT < IBM437 [140] INVARIANT < IBM850 [140] INVARIANT < IBM852 [140] INVARIANT < IBM860 [140] INVARIANT < IBM863 [140] INVARIANT < IBM865 [140] INVARIANT < IEC_P27-1 [140] INVARIANT < ISO-8859-1 [140] INVARIANT < ISO-8859-10 [140] INVARIANT < ISO-8859-13 [140] INVARIANT < ISO-8859-14 [140] INVARIANT < ISO-8859-15 [140] INVARIANT < ISO-8859-2 [140] INVARIANT < ISO-8859-4 [140] INVARIANT < ISO-8859-5 [140] INVARIANT < ISO-8859-9 [140] INVARIANT < KOI8-R [140] INVARIANT < KOI8-RU [140] INVARIANT < baltic [140] INVARIANT < macintosh_ce [140] ISO_646.basic < JIS_X0201 [141] INIS < AtariST [141] INIS < CSA_Z243.4-1985-gr [141] INIS < CWI [141] INIS < ECMA-cyrillic [141] INIS < IBM437 [141] INIS < IBM850 [141] INIS < IBM852 [141] INIS < IBM860 [141] INIS < IBM863 [141] INIS < IBM865 [141] INIS < IEC_P27-1 [141] INIS < ISO-8859-1 [141] INIS < ISO-8859-10 [141] INIS < ISO-8859-13 [141] INIS < ISO-8859-14 [141] INIS < ISO-8859-15 [141] INIS < ISO-8859-2 [141] INIS < ISO-8859-4 [141] INIS < ISO-8859-5 [141] INIS < ISO-8859-9 [141] INIS < KOI8-R [141] INIS < KOI8-RU [141] INIS < baltic [141] INIS < macintosh_ce [145] ISO_646.basic < GOST_19768-87 [148] ISO_646.basic < IBM868 [154] ISO_646.basic < CP1257 [156] ISO_646.basic < CP1253 [157] ISO_646.basic < KOI8-U [158] ISO_646.basic < DEC-MCS [164] ISO_646.basic < IBM1004 [164] ISO_646.basic < IBM869 [164] ISO_646.basic < VPS [166] ISO_646.basic < CP1254 [166] ISO_646.basic < ISO-8859-3 [166] ISO_646.basic < NeXTSTEP [167] ISO_646.basic < ISO-8859-7 [167] ISO_646.basic < ISO_8859-supp [167] ISO_646.basic < TCVN [168] ISO_646.basic < CP1250 [168] ISO_646.basic < CP1252 [168] ISO_646.basic < IBM864 [170] ISO_646.basic < IBM857 [171] ISO_646.basic < CP1256 [171] ISO_646.basic < mac-is [171] ISO_646.basic < macintosh [172] ISO_646.basic < CP1251 [172] ISO_646.basic < IBM851 [172] ISO_646.basic < IBM855 [172] ISO_646.basic < IBM861 [172] ISO_646.basic < IBM862 [172] ISO_646.basic < hp-roman8 [173] ISO_646.basic < AtariST [173] ISO_646.basic < CSA_Z243.4-1985-gr [173] ISO_646.basic < CSN_369103 [173] ISO_646.basic < CWI [173] ISO_646.basic < ECMA-cyrillic [173] ISO_646.basic < IBM437 [173] ISO_646.basic < IBM850 [173] ISO_646.basic < IBM852 [173] ISO_646.basic < IBM860 [173] ISO_646.basic < IBM863 [173] ISO_646.basic < IBM865 [173] ISO_646.basic < IEC_P27-1 [173] ISO_646.basic < ISO-8859-1 [173] ISO_646.basic < ISO-8859-10 [173] ISO_646.basic < ISO-8859-13 [173] ISO_646.basic < ISO-8859-14 [173] ISO_646.basic < ISO-8859-15 [173] ISO_646.basic < ISO-8859-2 [173] ISO_646.basic < ISO-8859-4 [173] ISO_646.basic < ISO-8859-5 [173] ISO_646.basic < ISO-8859-9 [173] ISO_646.basic < KOI8-R [173] ISO_646.basic < KOI8-RU [173] ISO_646.basic < VISCII [173] ISO_646.basic < baltic [173] ISO_646.basic < macintosh_ce EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/names.m4:745: testing..." echo names.m4:745 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode -T | sort at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s2) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 2" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=2 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr expout fi fi # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c3( rm -rf expect stdout stderr # Snippet )c3) echo lists.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing decimal listing of a charset' echo $at_n " $at_c" fi echo $at_n "3. $srcdir/lists.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d3( # Testing decimal listing of a charset # Snippet )d3) # Snippet (s3( # starting from `lists.m4:3'. $at_traceon cat > expect <<'EOF' ISO-8859-1 0 NU 16 DL 32 SP 48 0 64 At 80 P 96 '! 112 p 1 SH 17 D1 33 ! 49 1 65 A 81 Q 97 a 113 q 2 SX 18 D2 34 " 50 2 66 B 82 R 98 b 114 r 3 EX 19 D3 35 Nb 51 3 67 C 83 S 99 c 115 s 4 ET 20 D4 36 DO 52 4 68 D 84 T 100 d 116 t 5 EQ 21 NK 37 % 53 5 69 E 85 U 101 e 117 u 6 AK 22 SY 38 & 54 6 70 F 86 V 102 f 118 v 7 BL 23 EB 39 ' 55 7 71 G 87 W 103 g 119 w 8 BS 24 CN 40 ( 56 8 72 H 88 X 104 h 120 x 9 HT 25 EM 41 ) 57 9 73 I 89 Y 105 i 121 y 10 LF 26 SB 42 * 58 : 74 J 90 Z 106 j 122 z 11 VT 27 EC 43 + 59 ; 75 K 91 <( 107 k 123 (! 12 FF 28 FS 44 , 60 < 76 L 92 // 108 l 124 !! 13 CR 29 GS 45 - 61 = 77 M 93 )> 109 m 125 !) 14 SO 30 RS 46 . 62 > 78 N 94 '> 110 n 126 '? 15 SI 31 US 47 / 63 ? 79 O 95 _ 111 o 127 DT 128 PA 144 DC 160 NS 176 DG 192 A! 208 D- 224 a! 240 d- 129 HO 145 P1 161 !I 177 +- 193 A' 209 N? 225 a' 241 n? 130 BH 146 P2 162 Ct 178 2S 194 A> 210 O! 226 a> 242 o! 131 NH 147 TS 163 Pd 179 3S 195 A? 211 O' 227 a? 243 o' 132 IN 148 CC 164 Cu 180 '' 196 A: 212 O> 228 a: 244 o> 133 NL 149 MW 165 Ye 181 My 197 AA 213 O? 229 aa 245 o? 134 SA 150 SG 166 BB 182 PI 198 AE 214 O: 230 ae 246 o: 135 ES 151 EG 167 SE 183 .M 199 C, 215 *X 231 c, 247 -: 136 HS 152 SS 168 ': 184 ', 200 E! 216 O/ 232 e! 248 o/ 137 HJ 153 GC 169 Co 185 1S 201 E' 217 U! 233 e' 249 u! 138 VS 154 SC 170 -a 186 -o 202 E> 218 U' 234 e> 250 u' 139 PD 155 CI 171 << 187 >> 203 E: 219 U> 235 e: 251 u> 140 PU 156 ST 172 NO 188 14 204 I! 220 U: 236 i! 252 u: 141 RI 157 OC 173 -- 189 12 205 I' 221 Y' 237 i' 253 y' 142 S2 158 PM 174 Rg 190 34 206 I> 222 TH 238 i> 254 th 143 S3 159 AC 175 'm 191 ?I 207 I: 223 ss 239 i: 255 y: EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/lists.m4:44: testing..." echo lists.m4:44 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode -ld latin-1 | cmp -s - expect at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s3) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 3" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=3 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf expect stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c4( rm -rf expect stdout stderr # Snippet )c4) echo lists.m4:48 > at-check-line if test -n "$at_verbose"; then echo 'testing hexadecimal listing of a charset' echo $at_n " $at_c" fi echo $at_n "4. $srcdir/lists.m4:48 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d4( # Testing hexadecimal listing of a charset # Snippet )d4) # Snippet (s4( # starting from `lists.m4:48'. $at_traceon cat > expect <<'EOF' ISO-8859-1 00 NU 10 DL 20 SP 30 0 40 At 50 P 60 '! 70 p 01 SH 11 D1 21 ! 31 1 41 A 51 Q 61 a 71 q 02 SX 12 D2 22 " 32 2 42 B 52 R 62 b 72 r 03 EX 13 D3 23 Nb 33 3 43 C 53 S 63 c 73 s 04 ET 14 D4 24 DO 34 4 44 D 54 T 64 d 74 t 05 EQ 15 NK 25 % 35 5 45 E 55 U 65 e 75 u 06 AK 16 SY 26 & 36 6 46 F 56 V 66 f 76 v 07 BL 17 EB 27 ' 37 7 47 G 57 W 67 g 77 w 08 BS 18 CN 28 ( 38 8 48 H 58 X 68 h 78 x 09 HT 19 EM 29 ) 39 9 49 I 59 Y 69 i 79 y 0a LF 1a SB 2a * 3a : 4a J 5a Z 6a j 7a z 0b VT 1b EC 2b + 3b ; 4b K 5b <( 6b k 7b (! 0c FF 1c FS 2c , 3c < 4c L 5c // 6c l 7c !! 0d CR 1d GS 2d - 3d = 4d M 5d )> 6d m 7d !) 0e SO 1e RS 2e . 3e > 4e N 5e '> 6e n 7e '? 0f SI 1f US 2f / 3f ? 4f O 5f _ 6f o 7f DT 80 PA 90 DC a0 NS b0 DG c0 A! d0 D- e0 a! f0 d- 81 HO 91 P1 a1 !I b1 +- c1 A' d1 N? e1 a' f1 n? 82 BH 92 P2 a2 Ct b2 2S c2 A> d2 O! e2 a> f2 o! 83 NH 93 TS a3 Pd b3 3S c3 A? d3 O' e3 a? f3 o' 84 IN 94 CC a4 Cu b4 '' c4 A: d4 O> e4 a: f4 o> 85 NL 95 MW a5 Ye b5 My c5 AA d5 O? e5 aa f5 o? 86 SA 96 SG a6 BB b6 PI c6 AE d6 O: e6 ae f6 o: 87 ES 97 EG a7 SE b7 .M c7 C, d7 *X e7 c, f7 -: 88 HS 98 SS a8 ': b8 ', c8 E! d8 O/ e8 e! f8 o/ 89 HJ 99 GC a9 Co b9 1S c9 E' d9 U! e9 e' f9 u! 8a VS 9a SC aa -a ba -o ca E> da U' ea e> fa u' 8b PD 9b CI ab << bb >> cb E: db U> eb e: fb u> 8c PU 9c ST ac NO bc 14 cc I! dc U: ec i! fc u: 8d RI 9d OC ad -- bd 12 cd I' dd Y' ed i' fd y' 8e S2 9e PM ae Rg be 34 ce I> de TH ee i> fe th 8f S3 9f AC af 'm bf ?I cf I: df ss ef i: ff y: EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/lists.m4:89: testing..." echo lists.m4:89 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode -lh latin-1 | cmp -s - expect at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s4) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 4" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=4 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf expect stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c5( rm -rf expect stdout stderr # Snippet )c5) echo lists.m4:93 > at-check-line if test -n "$at_verbose"; then echo 'testing octal listing of a charset' echo $at_n " $at_c" fi echo $at_n "5. $srcdir/lists.m4:93 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d5( # Testing octal listing of a charset # Snippet )d5) # Snippet (s5( # starting from `lists.m4:93'. $at_traceon cat > expect <<'EOF' ISO-8859-1 000 NU 020 DL 040 SP 060 0 100 At 120 P 140 '! 160 p 001 SH 021 D1 041 ! 061 1 101 A 121 Q 141 a 161 q 002 SX 022 D2 042 " 062 2 102 B 122 R 142 b 162 r 003 EX 023 D3 043 Nb 063 3 103 C 123 S 143 c 163 s 004 ET 024 D4 044 DO 064 4 104 D 124 T 144 d 164 t 005 EQ 025 NK 045 % 065 5 105 E 125 U 145 e 165 u 006 AK 026 SY 046 & 066 6 106 F 126 V 146 f 166 v 007 BL 027 EB 047 ' 067 7 107 G 127 W 147 g 167 w 010 BS 030 CN 050 ( 070 8 110 H 130 X 150 h 170 x 011 HT 031 EM 051 ) 071 9 111 I 131 Y 151 i 171 y 012 LF 032 SB 052 * 072 : 112 J 132 Z 152 j 172 z 013 VT 033 EC 053 + 073 ; 113 K 133 <( 153 k 173 (! 014 FF 034 FS 054 , 074 < 114 L 134 // 154 l 174 !! 015 CR 035 GS 055 - 075 = 115 M 135 )> 155 m 175 !) 016 SO 036 RS 056 . 076 > 116 N 136 '> 156 n 176 '? 017 SI 037 US 057 / 077 ? 117 O 137 _ 157 o 177 DT 200 PA 220 DC 240 NS 260 DG 300 A! 320 D- 340 a! 360 d- 201 HO 221 P1 241 !I 261 +- 301 A' 321 N? 341 a' 361 n? 202 BH 222 P2 242 Ct 262 2S 302 A> 322 O! 342 a> 362 o! 203 NH 223 TS 243 Pd 263 3S 303 A? 323 O' 343 a? 363 o' 204 IN 224 CC 244 Cu 264 '' 304 A: 324 O> 344 a: 364 o> 205 NL 225 MW 245 Ye 265 My 305 AA 325 O? 345 aa 365 o? 206 SA 226 SG 246 BB 266 PI 306 AE 326 O: 346 ae 366 o: 207 ES 227 EG 247 SE 267 .M 307 C, 327 *X 347 c, 367 -: 210 HS 230 SS 250 ': 270 ', 310 E! 330 O/ 350 e! 370 o/ 211 HJ 231 GC 251 Co 271 1S 311 E' 331 U! 351 e' 371 u! 212 VS 232 SC 252 -a 272 -o 312 E> 332 U' 352 e> 372 u' 213 PD 233 CI 253 << 273 >> 313 E: 333 U> 353 e: 373 u> 214 PU 234 ST 254 NO 274 14 314 I! 334 U: 354 i! 374 u: 215 RI 235 OC 255 -- 275 12 315 I' 335 Y' 355 i' 375 y' 216 S2 236 PM 256 Rg 276 34 316 I> 336 TH 356 i> 376 th 217 S3 237 AC 257 'm 277 ?I 317 I: 337 ss 357 i: 377 y: EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/lists.m4:134: testing..." echo lists.m4:134 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode -lo latin-1 | cmp -s - expect at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s5) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 5" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=5 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf expect stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c6( rm -rf expect stdout stderr # Snippet )c6) echo lists.m4:138 > at-check-line if test -n "$at_verbose"; then echo 'testing full listing of a charset' echo $at_n " $at_c" fi echo $at_n "6. $srcdir/lists.m4:138 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d6( # Testing full listing of a charset # Snippet )d6) # Snippet (s6( # starting from `lists.m4:138'. $at_traceon cat > expect <<'EOF' Dec Oct Hex UCS2 Mne ISO-8859-1 0 000 00 0000 NU null (nul) 1 001 01 0001 SH start of heading (soh) 2 002 02 0002 SX start of text (stx) 3 003 03 0003 EX end of text (etx) 4 004 04 0004 ET end of transmission (eot) 5 005 05 0005 EQ enquiry (enq) 6 006 06 0006 AK acknowledge (ack) 7 007 07 0007 BL bell (bel) 8 010 08 0008 BS backspace (bs) 9 011 09 0009 HT character tabulation (ht) 10 012 0a 000A LF line feed (lf) 11 013 0b 000B VT line tabulation (vt) 12 014 0c 000C FF form feed (ff) 13 015 0d 000D CR carriage return (cr) 14 016 0e 000E SO shift out (so) 15 017 0f 000F SI shift in (si) 16 020 10 0010 DL datalink escape (dle) 17 021 11 0011 D1 device control one (dc1) 18 022 12 0012 D2 device control two (dc2) 19 023 13 0013 D3 device control three (dc3) 20 024 14 0014 D4 device control four (dc4) 21 025 15 0015 NK negative acknowledge (nak) 22 026 16 0016 SY syncronous idle (syn) 23 027 17 0017 EB end of transmission block (etb) 24 030 18 0018 CN cancel (can) 25 031 19 0019 EM end of medium (em) 26 032 1a 001A SB substitute (sub) 27 033 1b 001B EC escape (esc) 28 034 1c 001C FS file separator (is4) 29 035 1d 001D GS group separator (is3) 30 036 1e 001E RS record separator (is2) 31 037 1f 001F US unit separator (is1) 32 040 20 0020 SP space 33 041 21 0021 ! exclamation mark 34 042 22 0022 " quotation mark 35 043 23 0023 Nb number sign 36 044 24 0024 DO dollar sign 37 045 25 0025 % percent sign 38 046 26 0026 & ampersand 39 047 27 0027 ' apostrophe 40 050 28 0028 ( left parenthesis 41 051 29 0029 ) right parenthesis 42 052 2a 002A * asterisk 43 053 2b 002B + plus sign 44 054 2c 002C , comma 45 055 2d 002D - hyphen-minus 46 056 2e 002E . full stop 47 057 2f 002F / solidus 48 060 30 0030 0 digit zero 49 061 31 0031 1 digit one 50 062 32 0032 2 digit two 51 063 33 0033 3 digit three 52 064 34 0034 4 digit four 53 065 35 0035 5 digit five 54 066 36 0036 6 digit six 55 067 37 0037 7 digit seven 56 070 38 0038 8 digit eight 57 071 39 0039 9 digit nine 58 072 3a 003A : colon 59 073 3b 003B ; semicolon 60 074 3c 003C < less-than sign 61 075 3d 003D = equals sign 62 076 3e 003E > greater-than sign 63 077 3f 003F ? question mark 64 100 40 0040 At commercial at 65 101 41 0041 A latin capital letter a 66 102 42 0042 B latin capital letter b 67 103 43 0043 C latin capital letter c 68 104 44 0044 D latin capital letter d 69 105 45 0045 E latin capital letter e 70 106 46 0046 F latin capital letter f 71 107 47 0047 G latin capital letter g 72 110 48 0048 H latin capital letter h 73 111 49 0049 I latin capital letter i 74 112 4a 004A J latin capital letter j 75 113 4b 004B K latin capital letter k 76 114 4c 004C L latin capital letter l 77 115 4d 004D M latin capital letter m 78 116 4e 004E N latin capital letter n 79 117 4f 004F O latin capital letter o 80 120 50 0050 P latin capital letter p 81 121 51 0051 Q latin capital letter q 82 122 52 0052 R latin capital letter r 83 123 53 0053 S latin capital letter s 84 124 54 0054 T latin capital letter t 85 125 55 0055 U latin capital letter u 86 126 56 0056 V latin capital letter v 87 127 57 0057 W latin capital letter w 88 130 58 0058 X latin capital letter x 89 131 59 0059 Y latin capital letter y 90 132 5a 005A Z latin capital letter z 91 133 5b 005B <( left square bracket 92 134 5c 005C // reverse solidus 93 135 5d 005D )> right square bracket 94 136 5e 005E '> circumflex accent 95 137 5f 005F _ low line 96 140 60 0060 '! grave accent 97 141 61 0061 a latin small letter a 98 142 62 0062 b latin small letter b 99 143 63 0063 c latin small letter c 100 144 64 0064 d latin small letter d 101 145 65 0065 e latin small letter e 102 146 66 0066 f latin small letter f 103 147 67 0067 g latin small letter g 104 150 68 0068 h latin small letter h 105 151 69 0069 i latin small letter i 106 152 6a 006A j latin small letter j 107 153 6b 006B k latin small letter k 108 154 6c 006C l latin small letter l 109 155 6d 006D m latin small letter m 110 156 6e 006E n latin small letter n 111 157 6f 006F o latin small letter o 112 160 70 0070 p latin small letter p 113 161 71 0071 q latin small letter q 114 162 72 0072 r latin small letter r 115 163 73 0073 s latin small letter s 116 164 74 0074 t latin small letter t 117 165 75 0075 u latin small letter u 118 166 76 0076 v latin small letter v 119 167 77 0077 w latin small letter w 120 170 78 0078 x latin small letter x 121 171 79 0079 y latin small letter y 122 172 7a 007A z latin small letter z 123 173 7b 007B (! left curly bracket 124 174 7c 007C !! vertical line 125 175 7d 007D !) right curly bracket 126 176 7e 007E '? tilde 127 177 7f 007F DT delete (del) 128 200 80 0080 PA padding character (pad) 129 201 81 0081 HO high octet preset (hop) 130 202 82 0082 BH break permitted here (bph) 131 203 83 0083 NH no break here (nbh) 132 204 84 0084 IN index (ind) 133 205 85 0085 NL next line (nel) 134 206 86 0086 SA start of selected area (ssa) 135 207 87 0087 ES end of selected area (esa) 136 210 88 0088 HS character tabulation set (hts) 137 211 89 0089 HJ character tabulation with justification (htj) 138 212 8a 008A VS line tabulation set (vts) 139 213 8b 008B PD partial line forward (pld) 140 214 8c 008C PU partial line backward (plu) 141 215 8d 008D RI reverse line feed (ri) 142 216 8e 008E S2 single-shift two (ss2) 143 217 8f 008F S3 single-shift three (ss3) 144 220 90 0090 DC device control string (dcs) 145 221 91 0091 P1 private use one (pu1) 146 222 92 0092 P2 private use two (pu2) 147 223 93 0093 TS set transmit state (sts) 148 224 94 0094 CC cancel character (cch) 149 225 95 0095 MW message waiting (mw) 150 226 96 0096 SG start of guarded area (spa) 151 227 97 0097 EG end of guarded area (epa) 152 230 98 0098 SS start of string (sos) 153 231 99 0099 GC single graphic character introducer (sgci) 154 232 9a 009A SC single character introducer (sci) 155 233 9b 009B CI control sequence introducer (csi) 156 234 9c 009C ST string terminator (st) 157 235 9d 009D OC operating system command (osc) 158 236 9e 009E PM privacy message (pm) 159 237 9f 009F AC application program command (apc) 160 240 a0 00A0 NS no-break space 161 241 a1 00A1 !I inverted exclamation mark 162 242 a2 00A2 Ct cent sign 163 243 a3 00A3 Pd pound sign 164 244 a4 00A4 Cu currency sign 165 245 a5 00A5 Ye yen sign 166 246 a6 00A6 BB broken bar 167 247 a7 00A7 SE section sign 168 250 a8 00A8 ': diaeresis 169 251 a9 00A9 Co copyright sign 170 252 aa 00AA -a feminine ordinal indicator 171 253 ab 00AB << left-pointing double angle quotation mark 172 254 ac 00AC NO not sign 173 255 ad 00AD -- soft hyphen 174 256 ae 00AE Rg registered sign 175 257 af 00AF 'm macron 176 260 b0 00B0 DG degree sign 177 261 b1 00B1 +- plus-minus sign 178 262 b2 00B2 2S superscript two 179 263 b3 00B3 3S superscript three 180 264 b4 00B4 '' acute accent 181 265 b5 00B5 My micro sign 182 266 b6 00B6 PI pilcrow sign 183 267 b7 00B7 .M middle dot 184 270 b8 00B8 ', cedilla 185 271 b9 00B9 1S superscript one 186 272 ba 00BA -o masculine ordinal indicator 187 273 bb 00BB >> right-pointing double angle quotation mark 188 274 bc 00BC 14 vulgar fraction one quarter 189 275 bd 00BD 12 vulgar fraction one half 190 276 be 00BE 34 vulgar fraction three quarters 191 277 bf 00BF ?I inverted question mark 192 300 c0 00C0 A! latin capital letter a with grave 193 301 c1 00C1 A' latin capital letter a with acute 194 302 c2 00C2 A> latin capital letter a with circumflex 195 303 c3 00C3 A? latin capital letter a with tilde 196 304 c4 00C4 A: latin capital letter a with diaeresis 197 305 c5 00C5 AA latin capital letter a with ring above 198 306 c6 00C6 AE latin capital letter ae 199 307 c7 00C7 C, latin capital letter c with cedilla 200 310 c8 00C8 E! latin capital letter e with grave 201 311 c9 00C9 E' latin capital letter e with acute 202 312 ca 00CA E> latin capital letter e with circumflex 203 313 cb 00CB E: latin capital letter e with diaeresis 204 314 cc 00CC I! latin capital letter i with grave 205 315 cd 00CD I' latin capital letter i with acute 206 316 ce 00CE I> latin capital letter i with circumflex 207 317 cf 00CF I: latin capital letter i with diaeresis 208 320 d0 00D0 D- latin capital letter eth (icelandic) 209 321 d1 00D1 N? latin capital letter n with tilde 210 322 d2 00D2 O! latin capital letter o with grave 211 323 d3 00D3 O' latin capital letter o with acute 212 324 d4 00D4 O> latin capital letter o with circumflex 213 325 d5 00D5 O? latin capital letter o with tilde 214 326 d6 00D6 O: latin capital letter o with diaeresis 215 327 d7 00D7 *X multiplication sign 216 330 d8 00D8 O/ latin capital letter o with stroke 217 331 d9 00D9 U! latin capital letter u with grave 218 332 da 00DA U' latin capital letter u with acute 219 333 db 00DB U> latin capital letter u with circumflex 220 334 dc 00DC U: latin capital letter u with diaeresis 221 335 dd 00DD Y' latin capital letter y with acute 222 336 de 00DE TH latin capital letter thorn (icelandic) 223 337 df 00DF ss latin small letter sharp s (german) 224 340 e0 00E0 a! latin small letter a with grave 225 341 e1 00E1 a' latin small letter a with acute 226 342 e2 00E2 a> latin small letter a with circumflex 227 343 e3 00E3 a? latin small letter a with tilde 228 344 e4 00E4 a: latin small letter a with diaeresis 229 345 e5 00E5 aa latin small letter a with ring above 230 346 e6 00E6 ae latin small letter ae 231 347 e7 00E7 c, latin small letter c with cedilla 232 350 e8 00E8 e! latin small letter e with grave 233 351 e9 00E9 e' latin small letter e with acute 234 352 ea 00EA e> latin small letter e with circumflex 235 353 eb 00EB e: latin small letter e with diaeresis 236 354 ec 00EC i! latin small letter i with grave 237 355 ed 00ED i' latin small letter i with acute 238 356 ee 00EE i> latin small letter i with circumflex 239 357 ef 00EF i: latin small letter i with diaeresis 240 360 f0 00F0 d- latin small letter eth (icelandic) 241 361 f1 00F1 n? latin small letter n with tilde 242 362 f2 00F2 o! latin small letter o with grave 243 363 f3 00F3 o' latin small letter o with acute 244 364 f4 00F4 o> latin small letter o with circumflex 245 365 f5 00F5 o? latin small letter o with tilde 246 366 f6 00F6 o: latin small letter o with diaeresis 247 367 f7 00F7 -: division sign 248 370 f8 00F8 o/ latin small letter o with stroke 249 371 f9 00F9 u! latin small letter u with grave 250 372 fa 00FA u' latin small letter u with acute 251 373 fb 00FB u> latin small letter u with circumflex 252 374 fc 00FC u: latin small letter u with diaeresis 253 375 fd 00FD y' latin small letter y with acute 254 376 fe 00FE th latin small letter thorn (icelandic) 255 377 ff 00FF y: latin small letter y with diaeresis EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/lists.m4:402: testing..." echo lists.m4:402 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode -lf latin-1 | cmp -s - expect at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s6) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 6" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=6 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf expect stdout stderr fi fi echo echo 'Individual surfaces.' echo # FIXME: tests for endline and permut. # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c7( rm -rf input output stdout stderr # Snippet )c7) echo dumps.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Decimal-1' echo $at_n " $at_c" fi echo $at_n "7. $srcdir/dumps.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d7( # Testing single lines to Decimal-1 # Snippet )d7) # Snippet (s7( # starting from `dumps.m4:3'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:31: testing..." echo dumps.m4:31 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../d1 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 10 97, 10 97, 98, 10 97, 98, 99, 10 97, 98, 99, 100, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 48, 49, 50, 51, 52, 53, 54, 10 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s7) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 7" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=7 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c8( rm -rf input output stdout stderr # Snippet )c8) echo dumps.m4:35 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Decimal-1' echo $at_n " $at_c" fi echo $at_n "8. $srcdir/dumps.m4:35 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d8( # Testing block of lines to Decimal-1 # Snippet )d8) # Snippet (s8( # starting from `dumps.m4:35'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:56: testing..." echo dumps.m4:56 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../d1 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 10, 97, 10, 97, 98, 10, 97, 98, 99, 10, 97, 98, 99, 100, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 48, 49, 50, 51, 52, 53, 54, 10 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s8) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 8" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=8 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c9( rm -rf input output stdout stderr # Snippet )c9) echo dumps.m4:60 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Decimal-1 and back' echo $at_n " $at_c" fi echo $at_n "9. $srcdir/dumps.m4:60 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d9( # Testing single lines to Decimal-1 and back # Snippet )d9) # Snippet (s9( # starting from `dumps.m4:60'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:73: testing..." echo dumps.m4:73 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../d1 output recode /d1../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s9) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 9" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=9 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c10( rm -rf output stdout stderr # Snippet )c10) echo dumps.m4:77 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Decimal-1 and back' echo $at_n " $at_c" fi echo $at_n "10. $srcdir/dumps.m4:77 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d10( # Testing block of lines to Decimal-1 and back # Snippet )d10) # Snippet (s10( # starting from `dumps.m4:77'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:88: testing..." echo dumps.m4:88 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../d1 output recode /d1../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s10) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 10" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=10 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c11( rm -rf input output stdout stderr # Snippet )c11) echo dumps.m4:92 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Decimal-2' echo $at_n " $at_c" fi echo $at_n "11. $srcdir/dumps.m4:92 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d11( # Testing single lines to Decimal-2 # Snippet )d11) # Snippet (s11( # starting from `dumps.m4:92'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:116: testing..." echo dumps.m4:116 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../d2 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 10 24842 24930, 10 24930, 25354 24930, 25444, 10 24930, 25444, 25958, 26472, 26890 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29450 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17162 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19722 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19790, 20304, 20818, 21332, 21846, 22282 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19790, 20304, 20818, 21332, 21846, 22360, 22874, 12337, 12851, 13365, 13834 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s11) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 11" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=11 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c12( rm -rf input output stdout stderr # Snippet )c12) echo dumps.m4:120 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Decimal-2' echo $at_n " $at_c" fi echo $at_n "12. $srcdir/dumps.m4:120 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d12( # Testing block of lines to Decimal-2 # Snippet )d12) # Snippet (s12( # starting from `dumps.m4:120'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:138: testing..." echo dumps.m4:138 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../d2 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 2657, 2657, 25098, 24930, 25354, 24930, 25444, 2657, 25187, 25701, 26215, 26729, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 17477, 17991, 18505, 19019, 19533, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 17477, 17991, 18505, 19019, 19533, 20047, 20561, 21075, 21589, 22103, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 17477, 17991, 18505, 19019, 19533, 20047, 20561, 21075, 21589, 22103, 22617, 23088, 12594, 13108, 13622, 10 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s12) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 12" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=12 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c13( rm -rf input output stdout stderr # Snippet )c13) echo dumps.m4:142 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Decimal-2 and back' echo $at_n " $at_c" fi echo $at_n "13. $srcdir/dumps.m4:142 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d13( # Testing single lines to Decimal-2 and back # Snippet )d13) # Snippet (s13( # starting from `dumps.m4:142'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:155: testing..." echo dumps.m4:155 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../d2 output recode /d2../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s13) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 13" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=13 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c14( rm -rf output stdout stderr # Snippet )c14) echo dumps.m4:159 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Decimal-2 and back' echo $at_n " $at_c" fi echo $at_n "14. $srcdir/dumps.m4:159 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d14( # Testing block of lines to Decimal-2 and back # Snippet )d14) # Snippet (s14( # starting from `dumps.m4:159'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:170: testing..." echo dumps.m4:170 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../d2 output recode /d2../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s14) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 14" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=14 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c15( rm -rf input output stdout stderr # Snippet )c15) echo dumps.m4:174 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Decimal-4' echo $at_n " $at_c" fi echo $at_n "15. $srcdir/dumps.m4:174 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d15( # Testing single lines to Decimal-4 # Snippet )d15) # Snippet (s15( # starting from `dumps.m4:174'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:198: testing..." echo dumps.m4:198 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../d4 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 10 24842 6382090 1633837834 1633837924, 10 1633837924, 1701209960, 26890 1633837924, 1701209960, 1768581996, 1835954032, 1903325962 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 17162 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 1128547654, 1195919690, 1263291658 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 1128547654, 1195919690, 1263291726, 1330663762, 1398035798, 22282 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 1128547654, 1195919690, 1263291726, 1330663762, 1398035798, 1465407834, 808530483, 875902474 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s15) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 15" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=15 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c16( rm -rf input output stdout stderr # Snippet )c16) echo dumps.m4:202 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Decimal-4' echo $at_n " $at_c" fi echo $at_n "16. $srcdir/dumps.m4:202 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d16( # Testing block of lines to Decimal-4 # Snippet )d16) # Snippet (s16( # starting from `dumps.m4:202'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:220: testing..." echo dumps.m4:220 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../d4 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 174131809, 1644847458, 1661624674, 1667500641, 1650680933, 1718052969, 174154339, 1684366951, 1751738987, 1819111023, 1886483059, 174154339, 1684366951, 1751738987, 1819111023, 1886483059, 1953855095, 2054781505, 1111689825, 1650680933, 1718052969, 1785425005, 1852797041, 1920169077, 1987541625, 2051097155, 1145390663, 1212762699, 1280117345, 1650680933, 1718052969, 1785425005, 1852797041, 1920169077, 1987541625, 2051097155, 1145390663, 1212762699, 1280134735, 1347506771, 1414878807, 174154339, 1684366951, 1751738987, 1819111023, 1886483059, 1953855095, 2054781505, 1111704645, 1179076681, 1246448717, 1313820753, 1381192789, 1448564825, 1513107762, 859059510, 10 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s16) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 16" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=16 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c17( rm -rf input output stdout stderr # Snippet )c17) echo dumps.m4:224 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Decimal-4 and back' echo $at_n " $at_c" fi echo $at_n "17. $srcdir/dumps.m4:224 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d17( # Testing single lines to Decimal-4 and back # Snippet )d17) # Snippet (s17( # starting from `dumps.m4:224'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:237: testing..." echo dumps.m4:237 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../d4 output recode /d4../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s17) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 17" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=17 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c18( rm -rf output stdout stderr # Snippet )c18) echo dumps.m4:241 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Decimal-4 and back' echo $at_n " $at_c" fi echo $at_n "18. $srcdir/dumps.m4:241 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d18( # Testing block of lines to Decimal-4 and back # Snippet )d18) # Snippet (s18( # starting from `dumps.m4:241'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:252: testing..." echo dumps.m4:252 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../d4 output recode /d4../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s18) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 18" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=18 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c19( rm -rf input output stdout stderr # Snippet )c19) echo dumps.m4:256 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Hexadecimal-1' echo $at_n " $at_c" fi echo $at_n "19. $srcdir/dumps.m4:256 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d19( # Testing single lines to Hexadecimal-1 # Snippet )d19) # Snippet (s19( # starting from `dumps.m4:256'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:288: testing..." echo dumps.m4:288 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../x1 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0x0A 0x61, 0x0A 0x61, 0x62, 0x0A 0x61, 0x62, 0x63, 0x0A 0x61, 0x62, 0x63, 0x64, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s19) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 19" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=19 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c20( rm -rf input output stdout stderr # Snippet )c20) echo dumps.m4:292 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Hexadecimal-1' echo $at_n " $at_c" fi echo $at_n "20. $srcdir/dumps.m4:292 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d20( # Testing block of lines to Hexadecimal-1 # Snippet )d20) # Snippet (s20( # starting from `dumps.m4:292'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:317: testing..." echo dumps.m4:317 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../x1 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0x0A, 0x61, 0x0A, 0x61, 0x62, 0x0A, 0x61, 0x62, 0x63, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s20) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 20" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=20 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c21( rm -rf input output stdout stderr # Snippet )c21) echo dumps.m4:321 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Hexadecimal-1 and back' echo $at_n " $at_c" fi echo $at_n "21. $srcdir/dumps.m4:321 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d21( # Testing single lines to Hexadecimal-1 and back # Snippet )d21) # Snippet (s21( # starting from `dumps.m4:321'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:334: testing..." echo dumps.m4:334 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../x1 output recode /x1../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s21) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 21" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=21 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c22( rm -rf output stdout stderr # Snippet )c22) echo dumps.m4:338 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Hexadecimal-1 and back' echo $at_n " $at_c" fi echo $at_n "22. $srcdir/dumps.m4:338 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d22( # Testing block of lines to Hexadecimal-1 and back # Snippet )d22) # Snippet (s22( # starting from `dumps.m4:338'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:349: testing..." echo dumps.m4:349 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../x1 output recode /x1../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s22) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 22" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=22 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c23( rm -rf input output stdout stderr # Snippet )c23) echo dumps.m4:353 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Hexadecimal-2' echo $at_n " $at_c" fi echo $at_n "23. $srcdir/dumps.m4:353 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d23( # Testing single lines to Hexadecimal-2 # Snippet )d23) # Snippet (s23( # starting from `dumps.m4:353'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:381: testing..." echo dumps.m4:381 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../x2 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0x0A 0x610A 0x6162, 0x0A 0x6162, 0x630A 0x6162, 0x6364, 0x0A 0x6162, 0x6364, 0x6566, 0x6768, 0x690A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x730A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x430A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x4344, 0x4546, 0x4748, 0x494A, 0x4B4C, 0x4D0A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x4344, 0x4546, 0x4748, 0x494A, 0x4B4C, 0x4D4E, 0x4F50, 0x5152, 0x5354, 0x5556, 0x570A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x4344, 0x4546, 0x4748, 0x494A, 0x4B4C, 0x4D4E, 0x4F50, 0x5152, 0x5354, 0x5556, 0x5758, 0x595A, 0x3031, 0x3233, 0x3435, 0x360A $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s23) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 23" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=23 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c24( rm -rf input output stdout stderr # Snippet )c24) echo dumps.m4:385 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Hexadecimal-2' echo $at_n " $at_c" fi echo $at_n "24. $srcdir/dumps.m4:385 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d24( # Testing block of lines to Hexadecimal-2 # Snippet )d24) # Snippet (s24( # starting from `dumps.m4:385'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:406: testing..." echo dumps.m4:406 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../x2 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0x0A61, 0x0A61, 0x620A, 0x6162, 0x630A, 0x6162, 0x6364, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x4445, 0x4647, 0x4849, 0x4A4B, 0x4C4D, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x4445, 0x4647, 0x4849, 0x4A4B, 0x4C4D, 0x4E4F, 0x5051, 0x5253, 0x5455, 0x5657, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x4445, 0x4647, 0x4849, 0x4A4B, 0x4C4D, 0x4E4F, 0x5051, 0x5253, 0x5455, 0x5657, 0x5859, 0x5A30, 0x3132, 0x3334, 0x3536, 0x0A $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s24) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 24" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=24 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c25( rm -rf input output stdout stderr # Snippet )c25) echo dumps.m4:410 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Hexadecimal-2 and back' echo $at_n " $at_c" fi echo $at_n "25. $srcdir/dumps.m4:410 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d25( # Testing single lines to Hexadecimal-2 and back # Snippet )d25) # Snippet (s25( # starting from `dumps.m4:410'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:423: testing..." echo dumps.m4:423 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../x2 output recode /x2../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s25) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 25" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=25 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c26( rm -rf output stdout stderr # Snippet )c26) echo dumps.m4:427 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Hexadecimal-2 and back' echo $at_n " $at_c" fi echo $at_n "26. $srcdir/dumps.m4:427 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d26( # Testing block of lines to Hexadecimal-2 and back # Snippet )d26) # Snippet (s26( # starting from `dumps.m4:427'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:438: testing..." echo dumps.m4:438 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../x2 output recode /x2../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s26) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 26" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=26 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c27( rm -rf input output stdout stderr # Snippet )c27) echo dumps.m4:442 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Hexadecimal-4' echo $at_n " $at_c" fi echo $at_n "27. $srcdir/dumps.m4:442 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d27( # Testing single lines to Hexadecimal-4 # Snippet )d27) # Snippet (s27( # starting from `dumps.m4:442'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:466: testing..." echo dumps.m4:466 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../x4 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0x0A 0x610A 0x61620A 0x6162630A 0x61626364, 0x0A 0x61626364, 0x65666768, 0x690A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x7172730A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x430A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D0A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D4E, 0x4F505152, 0x53545556, 0x570A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D4E, 0x4F505152, 0x53545556, 0x5758595A, 0x30313233, 0x3435360A $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s27) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 27" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=27 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c28( rm -rf input output stdout stderr # Snippet )c28) echo dumps.m4:470 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Hexadecimal-4' echo $at_n " $at_c" fi echo $at_n "28. $srcdir/dumps.m4:470 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d28( # Testing block of lines to Hexadecimal-4 # Snippet )d28) # Snippet (s28( # starting from `dumps.m4:470'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:486: testing..." echo dumps.m4:486 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../x4 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0x0A610A61, 0x620A6162, 0x630A6162, 0x63640A61, 0x62636465, 0x66676869, 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x74757677, 0x7A797A41, 0x42430A61, 0x62636465, 0x66676869, 0x6A6B6C6D, 0x6E6F7071, 0x72737475, 0x76777A79, 0x7A414243, 0x44454647, 0x48494A4B, 0x4C4D0A61, 0x62636465, 0x66676869, 0x6A6B6C6D, 0x6E6F7071, 0x72737475, 0x76777A79, 0x7A414243, 0x44454647, 0x48494A4B, 0x4C4D4E4F, 0x50515253, 0x54555657, 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x74757677, 0x7A797A41, 0x42434445, 0x46474849, 0x4A4B4C4D, 0x4E4F5051, 0x52535455, 0x56575859, 0x5A303132, 0x33343536, 0x0A $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s28) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 28" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=28 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c29( rm -rf input output stdout stderr # Snippet )c29) echo dumps.m4:490 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Hexadecimal-4 and back' echo $at_n " $at_c" fi echo $at_n "29. $srcdir/dumps.m4:490 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d29( # Testing single lines to Hexadecimal-4 and back # Snippet )d29) # Snippet (s29( # starting from `dumps.m4:490'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:503: testing..." echo dumps.m4:503 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../x4 output recode /x4../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s29) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 29" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=29 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c30( rm -rf output stdout stderr # Snippet )c30) echo dumps.m4:507 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Hexadecimal-4 and back' echo $at_n " $at_c" fi echo $at_n "30. $srcdir/dumps.m4:507 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d30( # Testing block of lines to Hexadecimal-4 and back # Snippet )d30) # Snippet (s30( # starting from `dumps.m4:507'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:518: testing..." echo dumps.m4:518 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../x4 output recode /x4../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s30) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 30" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=30 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c31( rm -rf input output stdout stderr # Snippet )c31) echo dumps.m4:522 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Octal-1' echo $at_n " $at_c" fi echo $at_n "31. $srcdir/dumps.m4:522 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d31( # Testing single lines to Octal-1 # Snippet )d31) # Snippet (s31( # starting from `dumps.m4:522'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:554: testing..." echo dumps.m4:554 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../o1 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0012 0141, 0012 0141, 0142, 0012 0141, 0142, 0143, 0012 0141, 0142, 0143, 0144, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0130, 0131, 0132, 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0012 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s31) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 31" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=31 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c32( rm -rf input output stdout stderr # Snippet )c32) echo dumps.m4:558 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Octal-1' echo $at_n " $at_c" fi echo $at_n "32. $srcdir/dumps.m4:558 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d32( # Testing block of lines to Octal-1 # Snippet )d32) # Snippet (s32( # starting from `dumps.m4:558'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:583: testing..." echo dumps.m4:583 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../o1 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0012, 0141, 0012, 0141, 0142, 0012, 0141, 0142, 0143, 0012, 0141, 0142, 0143, 0144, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0130, 0131, 0132, 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0012 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s32) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 32" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=32 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c33( rm -rf input output stdout stderr # Snippet )c33) echo dumps.m4:587 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Octal-1 and back' echo $at_n " $at_c" fi echo $at_n "33. $srcdir/dumps.m4:587 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d33( # Testing single lines to Octal-1 and back # Snippet )d33) # Snippet (s33( # starting from `dumps.m4:587'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:600: testing..." echo dumps.m4:600 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../o1 output recode /o1../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s33) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 33" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=33 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c34( rm -rf output stdout stderr # Snippet )c34) echo dumps.m4:604 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Octal-1 and back' echo $at_n " $at_c" fi echo $at_n "34. $srcdir/dumps.m4:604 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d34( # Testing block of lines to Octal-1 and back # Snippet )d34) # Snippet (s34( # starting from `dumps.m4:604'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:615: testing..." echo dumps.m4:615 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../o1 output recode /o1../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s34) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 34" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=34 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c35( rm -rf input output stdout stderr # Snippet )c35) echo dumps.m4:619 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Octal-2' echo $at_n " $at_c" fi echo $at_n "35. $srcdir/dumps.m4:619 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d35( # Testing single lines to Octal-2 # Snippet )d35) # Snippet (s35( # starting from `dumps.m4:619'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:647: testing..." echo dumps.m4:647 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../o2 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0012 0060412 0060542, 0012 0060542, 0061412 0060542, 0061544, 0012 0060542, 0061544, 0062546, 0063550, 0064412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041504, 0042506, 0043510, 0044512, 0045514, 0046412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041504, 0042506, 0043510, 0044512, 0045514, 0046516, 0047520, 0050522, 0051524, 0052526, 0053412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041504, 0042506, 0043510, 0044512, 0045514, 0046516, 0047520, 0050522, 0051524, 0052526, 0053530, 0054532, 0030061, 0031063, 0032065, 0033012 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s35) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 35" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=35 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c36( rm -rf input output stdout stderr # Snippet )c36) echo dumps.m4:651 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Octal-2' echo $at_n " $at_c" fi echo $at_n "36. $srcdir/dumps.m4:651 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d36( # Testing block of lines to Octal-2 # Snippet )d36) # Snippet (s36( # starting from `dumps.m4:651'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:672: testing..." echo dumps.m4:672 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../o2 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0005141, 0005141, 0061012, 0060542, 0061412, 0060542, 0061544, 0005141, 0061143, 0062145, 0063147, 0064151, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0042105, 0043107, 0044111, 0045113, 0046115, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0042105, 0043107, 0044111, 0045113, 0046115, 0047117, 0050121, 0051123, 0052125, 0053127, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0042105, 0043107, 0044111, 0045113, 0046115, 0047117, 0050121, 0051123, 0052125, 0053127, 0054131, 0055060, 0030462, 0031464, 0032466, 0012 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s36) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 36" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=36 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c37( rm -rf input output stdout stderr # Snippet )c37) echo dumps.m4:676 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Octal-2 and back' echo $at_n " $at_c" fi echo $at_n "37. $srcdir/dumps.m4:676 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d37( # Testing single lines to Octal-2 and back # Snippet )d37) # Snippet (s37( # starting from `dumps.m4:676'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:689: testing..." echo dumps.m4:689 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../o2 output recode /o2../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s37) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 37" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=37 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c38( rm -rf output stdout stderr # Snippet )c38) echo dumps.m4:693 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Octal-2 and back' echo $at_n " $at_c" fi echo $at_n "38. $srcdir/dumps.m4:693 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d38( # Testing block of lines to Octal-2 and back # Snippet )d38) # Snippet (s38( # starting from `dumps.m4:693'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:704: testing..." echo dumps.m4:704 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../o2 output recode /o2../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s38) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 38" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=38 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c39( rm -rf input output stdout stderr # Snippet )c39) echo dumps.m4:708 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Octal-4' echo $at_n " $at_c" fi echo $at_n "39. $srcdir/dumps.m4:708 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d39( # Testing single lines to Octal-4 # Snippet )d39) # Snippet (s39( # starting from `dumps.m4:708'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:736: testing..." echo dumps.m4:736 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../o4 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0012 0060412 030261012 014130461412 014130461544, 0012 014130461544, 014531463550, 0064412 014130461544, 014531463550, 015132465554, 015533467560, 016134471412 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 0041412 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 010321042506, 010722044512, 011323046412 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 010321042506, 010722044512, 011323046516, 011724050522, 012325052526, 0053412 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 010321042506, 010722044512, 011323046516, 011724050522, 012325052526, 012726054532, 006014231063, 006415233012 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s39) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 39" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=39 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c40( rm -rf input output stdout stderr # Snippet )c40) echo dumps.m4:740 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Octal-4' echo $at_n " $at_c" fi echo $at_n "40. $srcdir/dumps.m4:740 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d40( # Testing block of lines to Octal-4 # Snippet )d40) # Snippet (s40( # starting from `dumps.m4:740'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:761: testing..." echo dumps.m4:761 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../o4 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "001230205141, 014202460542, 014302460542, 014331005141, 014230662145, 014631664151, 001230261143, 014431263147, 015032265153, 015433267157, 016034271163, 001230261143, 014431263147, 015032265153, 015433267157, 016034271163, 016435273167, 017236275101, 010220605141, 014230662145, 014631664151, 015232666155, 015633670161, 016234672165, 016635675171, 017220241103, 010421243107, 011022245113, 011423205141, 014230662145, 014631664151, 015232666155, 015633670161, 016234672165, 016635675171, 017220241103, 010421243107, 011022245113, 011423247117, 012024251123, 012425253127, 001230261143, 014431263147, 015032265153, 015433267157, 016034271163, 016435273167, 017236275101, 010220642105, 010621644111, 011222646115, 011623650121, 012224652125, 012625654131, 013214030462, 006315032466, 0012 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s40) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 40" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=40 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c41( rm -rf input output stdout stderr # Snippet )c41) echo dumps.m4:765 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Octal-4 and back' echo $at_n " $at_c" fi echo $at_n "41. $srcdir/dumps.m4:765 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d41( # Testing single lines to Octal-4 and back # Snippet )d41) # Snippet (s41( # starting from `dumps.m4:765'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:778: testing..." echo dumps.m4:778 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../o4 output recode /o4../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s41) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 41" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=41 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c42( rm -rf output stdout stderr # Snippet )c42) echo dumps.m4:782 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Octal-4 and back' echo $at_n " $at_c" fi echo $at_n "42. $srcdir/dumps.m4:782 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d42( # Testing block of lines to Octal-4 and back # Snippet )d42) # Snippet (s42( # starting from `dumps.m4:782'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/dumps.m4:793: testing..." echo dumps.m4:793 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../o4 output recode /o4../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s42) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 42" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=42 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c43( rm -rf stdout stderr # Snippet )c43) echo base64.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Base64' echo $at_n " $at_c" fi echo $at_n "43. $srcdir/base64.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d43( # Testing single lines to Base64 # Snippet )d43) # Snippet (s43( # starting from `base64.m4:3'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/base64.m4:22: testing..." echo base64.m4:22 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon ( while read line; do echo $line | recode ../64 || exit 1; done ) < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "Cg== YQo= YWIK YWJjCg== YWJjZAo= YWJjZGVmZ2hpCg== YWJjZGVmZ2hpamtsbW5vcHFycwo= YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkMK YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNCg== YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWVwo= YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0 NTYK $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s43) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 43" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=43 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c44( rm -rf stdout stderr # Snippet )c44) echo base64.m4:26 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Base64' echo $at_n " $at_c" fi echo $at_n "44. $srcdir/base64.m4:26 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d44( # Testing block of lines to Base64 # Snippet )d44) # Snippet (s44( # starting from `base64.m4:26'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/base64.m4:36: testing..." echo base64.m4:36 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode /../64 < $at_srcdir/dumps-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "CmEKYWIKYWJjCmFiY2QKYWJjZGVmZ2hpCmFiY2RlZmdoaWprbG1ub3BxcnMKYWJjZGVmZ2hpamts bW5vcHFyc3R1dnd6eXpBQkMKYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xN CmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3enl6QUJDREVGR0hJSktMTU5PUFFSU1RVVlcKYWJjZGVm Z2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTYK $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s44) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 44" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=44 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c45( rm -rf input output stdout stderr # Snippet )c45) echo base64.m4:40 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines to Base64 and back' echo $at_n " $at_c" fi echo $at_n "45. $srcdir/base64.m4:40 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d45( # Testing single lines to Base64 and back # Snippet )d45) # Snippet (s45( # starting from `base64.m4:40'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/base64.m4:53: testing..." echo base64.m4:53 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo $line > input echo $line > output recode /../64 output recode /64../ output diff input output done < $at_srcdir/dumps-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s45) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 45" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=45 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c46( rm -rf output stdout stderr # Snippet )c46) echo base64.m4:57 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to Base64 and back' echo $at_n " $at_c" fi echo $at_n "46. $srcdir/base64.m4:57 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d46( # Testing block of lines to Base64 and back # Snippet )d46) # Snippet (s46( # starting from `base64.m4:57'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/base64.m4:68: testing..." echo base64.m4:68 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/dumps-data output chmod +w output recode /../64 output recode /64../ output diff $at_srcdir/dumps-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s46) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 46" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=46 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c47( rm -rf stdout stderr # Snippet )c47) echo quoted.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines from Quoted Printable' echo $at_n " $at_c" fi echo $at_n "47. $srcdir/quoted.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d47( # Testing block of lines from Quoted Printable # Snippet )d47) # Snippet (s47( # starting from `quoted.m4:3'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/quoted.m4:24: testing..." echo quoted.m4:24 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode qp..x1 < $at_srcdir/quoted-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0x44, 0x65, 0x61, 0x72, 0x20, 0xDE, 0x6F, 0x72, 0x76, 0x61, 0x72, 0x64, 0xF0, 0x75, 0x72, 0x2C, 0x0A, 0x0A, 0xAB, 0x20, 0x4F, 0xF9, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x72, 0xE9, 0x73, 0x69, 0x64, 0x65, 0x2C, 0x20, 0xE0, 0x20, 0x4E, 0xEE, 0x6D, 0x65, 0x73, 0x20, 0x6F, 0x75, 0x20, 0x6D, 0xEA, 0x6D, 0x65, 0x20, 0x43, 0x61, 0x70, 0x68, 0x61, 0x72, 0x6E, 0x61, 0xFC, 0x6D, 0x2C, 0x20, 0x74, 0x6F, 0x75, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6E, 0xE7, 0x61, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x63, 0x72, 0x69, 0x74, 0x0A, 0x61, 0x75, 0x20, 0x72, 0xF4, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x79, 0x65, 0x72, 0x61, 0x20, 0x73, 0x6F, 0x6E, 0x20, 0x64, 0xFB, 0x20, 0x64, 0xE8, 0x73, 0x20, 0x61, 0x76, 0x61, 0x6E, 0x74, 0x20, 0x4E, 0x6F, 0xEB, 0x6C, 0x2C, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x73, 0x6F, 0x69, 0x74, 0x20, 0x6E, 0x61, 0xEF, 0x66, 0x20, 0x6F, 0x75, 0x20, 0x72, 0xE2, 0x6C, 0x65, 0x75, 0x72, 0x2E, 0x20, 0xBB, 0x0A, 0x49, 0x6E, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s47) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 47" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=47 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c48( rm -rf output stdout stderr # Snippet )c48) echo quoted.m4:28 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines from Quoted Printable and back' echo $at_n " $at_c" fi echo $at_n "48. $srcdir/quoted.m4:28 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d48( # Testing block of lines from Quoted Printable and back # Snippet )d48) # Snippet (s48( # starting from `quoted.m4:28'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/quoted.m4:39: testing..." echo quoted.m4:39 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/quoted-data output chmod +w output recode qp..x1 output recode x1..qp output diff $at_srcdir/quoted-data output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s48) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 48" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=48 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf output stdout stderr fi fi echo echo 'Individual charsets.' echo # FIXME: tests for atarist, next, ebcdic, tables, applemac, ibmpc, iconqnx, # cdcnos, bangbang, ascii, flat, html, latex, texinfo, texte and utf16. # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c49( rm -rf expout example transcript stdout stderr expout # Snippet )c49) echo african.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing Bambara' echo $at_n " $at_c" fi echo $at_n "49. $srcdir/african.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d49( # Testing Bambara # Snippet )d49) # Snippet (s49( # starting from `african.m4:3'. $at_traceon cat <<'EOF' >example N ye n ka nsiirin nin da Amadu Tara la. Jamanatigi d=F2 tun b=E8 yen muso k=F2n=F2nt=F2 de tun b=E8 a f=E8. Muso k=F2n=F2nt=F2 b=E8=E8 ye denk=E8 ke= len kelen wolo a ye. A denk=E8 kelen kelen b=E8=E8 fana t=F2g=F2 ye ko Amadu. Amadu ninw, u ba t=F2g=F2 de tun b=E8 da u kan ka u b=F2 ny=F2g=F2n na. Amadu b= =E8=E8 ncinin tun ye denk=E8 ninw b=E8=E8 la d=F2g=F2nin o de tun ye Amadu Tara ye. O tun ye jamanatigi nin ka taramuso den ye. EOF cat <<'EOF' >transcript TiB5ZSBuIGthIG5zaWlyaW4gbmluIGRhIEFtYWR1IFRhcmEgbGEuICBKYW1hbmF0aWdpIGRvYCB0 dW4gYmVgIHllbiBtdXNvCmtvYG5vYG50b2AgZGUgdHVuIGJlYCBhIGZlYC4gIE11c28ga29gbm9g bnRvYCBiZWBlYCB5ZSBkZW5rZWAga2VsZW4ga2VsZW4Kd29sbyBhIHllLiAgQSBkZW5rZWAga2Vs ZW4ga2VsZW4gYmVgZWAgZmFuYSB0b2Bnb2AgeWUga28gQW1hZHUuICBBbWFkdQpuaW53LCB1IGJh IHRvYGdvYCBkZSB0dW4gYmVgIGRhIHUga2FuIGthIHUgYm9gIG55b2Bnb2BuIG5hLiAgQW1hZHUg YmVgZWAKbmNpbmluIHR1biB5ZSBkZW5rZWAgbmludyBiZWBlYCBsYSBkb2Bnb2BuaW4gbyBkZSB0 dW4geWUgQW1hZHUgVGFyYSB5ZS4KTyB0dW4geWUgamFtYW5hdGlnaSBuaW4ga2EgdGFyYW11c28g ZGVuIHllLgo= EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:31: testing..." echo african.m4:31 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp transcript expout recode ../,bambara/qp..t-bambara/64 < example at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:36: testing..." echo african.m4:36 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp example expout recode ../,t-bambara/64..bambara/qp < transcript at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s49) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 49" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=49 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf expout example transcript stdout stderr expout fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c50( rm -rf expout example transcript stdout stderr expout # Snippet )c50) echo african.m4:40 > at-check-line if test -n "$at_verbose"; then echo 'testing Peul Fulfulde' echo $at_n " $at_c" fi echo $at_n "50. $srcdir/african.m4:40 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d50( # Testing Peul Fulfulde # Snippet )d50) # Snippet (s50( # starting from `african.m4:40'. $at_traceon cat <<'EOF' >example Woni =B2on haa =B1ooyi. Oya mar=B2o jiwo kaanaro on maayi. Suka no ton no wi=BDee Buubu Yee=B1e, on suka e nder sukaa=B1e aduna on alaa bur=B2o mo labeede. On suka yahi safaari, o woni ton haa nee=B1i --- wa duu=B1i sappo o ko fawi! --- Yumma makko maraa =B1i=B2=B2o go=BDo si wonaa kanko. EOF cat <<'EOF' >transcript V29uaSBkW29uIGhhYSBiW29veWkuICBPeWEgbWFyZFtvIGppd28ga2FhbmFybyBvbiBtYWF5aS4g IFN1a2Egbm8KdG9uIG5vIHdpP15lZSBCdXVidSBZZWViW2UsIG9uIHN1a2EgZSBuZGVyIHN1a2Fh YltlIGFkdW5hIG9uIGFsYWEKYnVyZFtvIG1vIGxhYmVlZGUuICBPbiBzdWthIHlhaGkgc2FmYWFy aSwgbyB3b25pIHRvbiBoYWEgbmVlYltpIC0tLQp3YSBkdXViW2kgc2FwcG8gbyBrbyBmYXdpISAt LS0gWXVtbWEgbWFra28gbWFyYWEgYltpZFtkW28KZ28/Xm8gc2kgd29uYWEga2Fua28uCg== EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:62: testing..." echo african.m4:62 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp transcript expout recode ../,fulfulde/qp..t-fulfulde/64 < example at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:67: testing..." echo african.m4:67 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp example expout recode ../,t-fulfulde/64..fulfulde/qp < transcript at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s50) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 50" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=50 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf expout example transcript stdout stderr expout fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c51( rm -rf expout example transcript stdout stderr expout # Snippet )c51) echo african.m4:71 > at-check-line if test -n "$at_verbose"; then echo 'testing Lingala' echo $at_n " $at_c" fi echo $at_n "51. $srcdir/african.m4:71 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d51( # Testing Lingala # Snippet )d51) # Snippet (s51( # starting from `african.m4:71'. $at_traceon cat <<'EOF' >example Mob=E1li m=B6k=B6, azal=E1k=ED s=E9 y=E9m=B6k=B6 n=E1 bil=B6k=F8 m=EDngi. Mok=F8l=F8 m=B6k=B6 alob=ED: t=EDk=E1 n=E1k=F0nd=F0 koluka mw=E3s=ED. Ak= =F0=ED. At=E1mb=F3l=ED k=E1 k=E1 k=E1, ak=F3m=ED namb=F3ka m=B6k=B6, ak=FAt=ED w=E2= n=E1 Ntaba. Ntaba at=FAn=ED y=FD: ndeko, =F5kok=F0nd=F0 w=E1pi? Moto alob=ED: n=E3kok= =F0nd=F0 koluka mw=E3si yakob=E1la nay=E9. Ntaba alob=ED: zil=E1 ng=E1=ED t=F3k=F0n= d=F0 el=F8ng=B6. EOF cat <<'EOF' >transcript TW9iYVwnbGkgbW9bJ2tvWycsIGF6YWxhXCdraVwnIHNlXCcgeWVcJ21vWydrb1snIG5hXCcgYmls b1sna29bIG1pXCduZ2kuCk1va29bbG9bIG1vWydrb1snIGFsb2JpXCc6IHRpXCdrYVwnIG5hXCdr ZVtuZGVbIGtvbHVrYSBtd2FcdnNpXCcuICBBa2VbaVwnLgpBdGFcJ21ib1wnbGlcJyBrYVwnIGth XCcga2FcJywgYWtvXCdtaVwnIG5hbWJvXCdrYSBtb1sna29bJywgYWt1XCd0aVwnIHdhXm5hXCcg TnRhYmEuCk50YWJhIGF0dVwnbmlcJyB5ZVx2OiBuZGVrbywgb1x2a29rZVtuZGVbIHdhXCdwaT8g IE1vdG8gYWxvYmlcJzogbmFcdmtva2VbbmRlWwprb2x1a2EgbXdhXHZzaSB5YWtvYmFcJ2xhIG5h eWVcJy4gIE50YWJhIGFsb2JpXCc6IHppbGFcJyBuZ2FcJ2lcJyB0b1wna2VbbmRlWwplbG9bbmdv WycuCg== EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:101: testing..." echo african.m4:101 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp transcript expout recode ../,lingala/qp..t-lingala/64 < example at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:106: testing..." echo african.m4:106 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp example expout recode ../,t-lingala/64..lingala/qp < transcript at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s51) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 51" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=51 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf expout example transcript stdout stderr expout fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c52( rm -rf expout example transcript stdout stderr expout # Snippet )c52) echo african.m4:110 > at-check-line if test -n "$at_verbose"; then echo 'testing Sango' echo $at_n " $at_c" fi echo $at_n "52. $srcdir/african.m4:110 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d52( # Testing Sango # Snippet )d52) # Snippet (s52( # starting from `african.m4:110'. $at_traceon cat <<'EOF' >example M=E2ley=F6mb=F6 ayeke mb=EAn=EE wakua t=EE let=E4a. Lo yeke zo s=F4 lo y= =EA kua t=EE lo m=EEngi. Azo t=EE y=E2 t=EE vaka s=F4 s=EF lo yeke l=E4ng=F6 da=E4 s=F4= ay=EA t=EBn=EB t=EE lo m=EEngi ngbanga t=EE nz=F6n=EE dut=EF t=EE lo na y=E2ng=E2= da t=EE lo na =E2s=EBw=E4 t=EE lo. EOF cat <<'EOF' >transcript TWFebGV5byJtYm8iIGF5ZWtlIG1iZV5uaV4gd2FrdWEgdGleIGxldGEiYS4gIExvIHlla2Ugem8g c29eIGxvIHllXiBrdWEgdGleCmxvIG1pXm5naS4gIEF6byB0aV4geWFeIHRpXiB2YWthIHNvXiBz aSIgbG8geWVrZSBsYSJuZ28iIGRhYSIgc29eIGF5ZV4KdGUibmUiIHRpXiBsbyBtaV5uZ2kgbmdi YW5nYSB0aV4gbnpvIm5pXiBkdXRpIiB0aV4gbG8gbmEgeWFebmdhXmRhIHRpXgpsbyBuYSBhXnNl IndhIiB0aV4gbG8uCg== EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:134: testing..." echo african.m4:134 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp transcript expout recode ../,sango/qp..t-sango/64 < example at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:139: testing..." echo african.m4:139 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp example expout recode ../,t-sango/64..sango/qp < transcript at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s52) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 52" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=52 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf expout example transcript stdout stderr expout fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c53( rm -rf expout example transcript stdout stderr expout # Snippet )c53) echo african.m4:143 > at-check-line if test -n "$at_verbose"; then echo 'testing Wolof' echo $at_n " $at_c" fi echo $at_n "53. $srcdir/african.m4:143 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d53( # Testing Wolof # Snippet )d53) # Snippet (s53( # starting from `african.m4:143'. $at_traceon cat <<'EOF' >example Ca 1965 ba leegi, Suwaahili mooy l=E0kk r=E9=E9wum Tansani. L=E0kk woowu la=BAuy j=E0ngalee ci daara yu ndaw yi ag yu yem yi. Ci moom la =BAuy jottalee xabaar yi =BAuy wax ag yi =BAuy bind. EOF cat <<'EOF' >transcript Q2EgMTk2NSBiYSBsZWVnaSwgU3V3YWFoaWxpIG1vb3kgbGFga2sgcmVcJ2VcJ3d1bSBUYW5zYW5p LiAgTGFga2sgd29vd3UKbGFuXnV5IGphYG5nYWxlZSBjaSBkYWFyYSB5dSBuZGF3IHlpIGFnIHl1 IHllbSB5aS4gIENpIG1vb20gbGEgbl51eQpqb3R0YWxlZSB4YWJhYXIgeWkgbl51eSB3YXggYWcg eWkgbl51eSBiaW5kLgo= EOF $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:162: testing..." echo african.m4:162 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp transcript expout recode ../,wolof/qp..t-wolof/64 < example at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/african.m4:167: testing..." echo african.m4:167 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon cp example expout recode ../,t-wolof/64..wolof/qp < transcript at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff expout stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s53) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 53" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=53 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf expout example transcript stdout stderr expout fi fi # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c54( rm -rf stdout stderr # Snippet )c54) echo combine.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing that combine does not crash' echo $at_n " $at_c" fi echo $at_n "54. $srcdir/combine.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d54( # Testing that combine does not crash # Snippet )d54) # Snippet (s54( # starting from `combine.m4:3'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/combine.m4:6: testing..." echo combine.m4:6 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode co..l1 < /dev/null at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s54) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 54" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=54 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr fi fi # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c55( rm -rf stdout stderr # Snippet )c55) echo testdump.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing testing and counting' echo $at_n " $at_c" fi echo $at_n "55. $srcdir/testdump.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d55( # Testing testing and counting # Snippet )d55) # Snippet (s55( # starting from `testdump.m4:3'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/testdump.m4:11: testing..." echo testdump.m4:11 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode test7..x,us..count < /dev/null at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 11 000A LF 117 0020 SP 127 002C , 152 0030 0 24 0031 1 24 0032 2 24 0033 3 24 0034 4 24 0035 5 24 0036 6 24 0037 7 8 0038 8 8 0039 9 8 0041 A 8 0042 B 8 0043 C 8 0044 D 8 0045 E 8 0046 F 128 0078 x $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/testdump.m4:18: testing..." echo testdump.m4:18 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode test8..x,us..count < /dev/null at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 22 000A LF 234 0020 SP 255 002C , 288 0030 0 32 0031 1 32 0032 2 32 0033 3 32 0034 4 32 0035 5 32 0036 6 32 0037 7 32 0038 8 32 0039 9 32 0041 A 32 0042 B 32 0043 C 32 0044 D 32 0045 E 32 0046 F 256 0078 x $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/testdump.m4:26: testing..." echo testdump.m4:26 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode test15..x2,us..count < /dev/null at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 8064 000A LF 56445 0020 SP 64508 002C , 80765 0030 0 16256 0031 1 16256 0032 2 16256 0033 3 16256 0034 4 16256 0035 5 16256 0036 6 16256 0037 7 16256 0038 8 16256 0039 9 16256 0041 A 16256 0042 B 16000 0043 C 14975 0044 D 15999 0045 E 15990 0046 F 64509 0078 x $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/testdump.m4:34: testing..." echo testdump.m4:34 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode test16..x2,us..count < /dev/null at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n " 8192 000A LF 57344 0020 SP 65535 002C , 81920 0030 0 16384 0031 1 16384 0032 2 16384 0033 3 16384 0034 4 16384 0035 5 16384 0036 6 16384 0037 7 16384 0038 8 16384 0039 9 16384 0041 A 16384 0042 B 16384 0043 C 16384 0044 D 16384 0045 E 16384 0046 F 65536 0078 x $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s55) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 55" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=55 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr fi fi # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c56( rm -rf stdout stderr # Snippet )c56) echo utf7.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines from UTF-7' echo $at_n " $at_c" fi echo $at_n "56. $srcdir/utf7.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d56( # Testing single lines from UTF-7 # Snippet )d56) # Snippet (s56( # starting from `utf7.m4:3'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/utf7.m4:20: testing..." echo utf7.m4:20 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo "$line" | recode ../,u7..u6/x2 done < $at_srcdir/utf7-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0xFEFF, 0x000A 0xFEFF, 0x0041, 0x2262, 0x0391, 0x002E, 0x000A 0xFEFF, 0x0048, 0x0069, 0x0020, 0x004D, 0x006F, 0x006D, 0x0020, 0x263A, 0x0021, 0x000A 0xFEFF, 0x65E5, 0x672C, 0x8A9E, 0x000A 0xFEFF, 0x0049, 0x0074, 0x0065, 0x006D, 0x0020, 0x0033, 0x0020, 0x0069, 0x0073, 0x0020, 0x00A3, 0x0031, 0x002E, 0x000A $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s56) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 56" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=56 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c57( rm -rf input output stdout stderr # Snippet )c57) echo utf7.m4:24 > at-check-line if test -n "$at_verbose"; then echo 'testing single lines from UTF-7 and back' echo $at_n " $at_c" fi echo $at_n "57. $srcdir/utf7.m4:24 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d57( # Testing single lines from UTF-7 and back # Snippet )d57) # Snippet (s57( # starting from `utf7.m4:24'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/utf7.m4:37: testing..." echo utf7.m4:37 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e while read line; do echo "$line" > input echo "$line" > output recode u7..u6/x2 output recode u6/x2..u7 output diff input output done < $at_srcdir/utf7-data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s57) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 57" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=57 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c58( rm -rf stdout stderr # Snippet )c58) echo utf8.m4:3 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to UTF-8' echo $at_n " $at_c" fi echo $at_n "58. $srcdir/utf8.m4:3 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d58( # Testing block of lines to UTF-8 # Snippet )d58) # Snippet (s58( # starting from `utf8.m4:3'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/utf8.m4:25: testing..." echo utf8.m4:25 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon recode l1/qp..u8/x < $at_srcdir/quoted-data at_status=$? if test $at_status != 0; then test -n "$at_verbose" && test -z "$at_no_redirs" && cat stderr >&6 exit $at_status fi $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 echo $at_n "0x44, 0x65, 0x61, 0x72, 0x20, 0xC3, 0x9E, 0x6F, 0x72, 0x76, 0x61, 0x72, 0x64, 0xC3, 0xB0, 0x75, 0x72, 0x2C, 0x0A, 0x0A, 0xC2, 0xAB, 0x20, 0x4F, 0xC3, 0xB9, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x72, 0xC3, 0xA9, 0x73, 0x69, 0x64, 0x65, 0x2C, 0x20, 0xC3, 0xA0, 0x20, 0x4E, 0xC3, 0xAE, 0x6D, 0x65, 0x73, 0x20, 0x6F, 0x75, 0x20, 0x6D, 0xC3, 0xAA, 0x6D, 0x65, 0x20, 0x43, 0x61, 0x70, 0x68, 0x61, 0x72, 0x6E, 0x61, 0xC3, 0xBC, 0x6D, 0x2C, 0x20, 0x74, 0x6F, 0x75, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6E, 0xC3, 0xA7, 0x61, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x63, 0x72, 0x69, 0x74, 0x0A, 0x61, 0x75, 0x20, 0x72, 0xC3, 0xB4, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x79, 0x65, 0x72, 0x61, 0x20, 0x73, 0x6F, 0x6E, 0x20, 0x64, 0xC3, 0xBB, 0x20, 0x64, 0xC3, 0xA8, 0x73, 0x20, 0x61, 0x76, 0x61, 0x6E, 0x74, 0x20, 0x4E, 0x6F, 0xC3, 0xAB, 0x6C, 0x2C, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x73, 0x6F, 0x69, 0x74, 0x20, 0x6E, 0x61, 0xC3, 0xAF, 0x66, 0x20, 0x6F, 0x75, 0x20, 0x72, 0xC3, 0xA2, 0x6C, 0x65, 0x75, 0x72, 0x2E, 0x20, 0xC2, 0xBB, 0x0A, 0x49, 0x6E, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65 $at_c" | $at_diff - stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s58) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 58" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=58 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c59( rm -rf input output stdout stderr # Snippet )c59) echo utf8.m4:29 > at-check-line if test -n "$at_verbose"; then echo 'testing block of lines to UTF-8 and back' echo $at_n " $at_c" fi echo $at_n "59. $srcdir/utf8.m4:29 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d59( # Testing block of lines to UTF-8 and back # Snippet )d59) # Snippet (s59( # starting from `utf8.m4:29'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/utf8.m4:41: testing..." echo utf8.m4:41 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_srcdir/quoted-data input cp $at_srcdir/quoted-data output chmod +w output recode l1/qp..u8 output recode u8..l1/qp output diff input output set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s59) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 59" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=59 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf input output stdout stderr fi fi echo echo 'Inter-step mechanics.' echo # -*- shell-script -*- if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c60( rm -rf data stdout stderr # Snippet )c60) echo methods.m4:24 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:texte through memory while filtering' echo $at_n " $at_c" fi echo $at_n "60. $srcdir/methods.m4:24 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d60( # Testing texte:texte through memory while filtering # Snippet )d60) # Snippet (s60( # starting from `methods.m4:24'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:24: testing..." echo methods.m4:24 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..texte \ | recode --quiet --force --sequence=memory texte..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s60) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 60" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=60 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c61( rm -rf data stdout stderr # Snippet )c61) echo methods.m4:27 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:texte through memory while squashing' echo $at_n " $at_c" fi echo $at_n "61. $srcdir/methods.m4:27 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d61( # Testing texte:texte through memory while squashing # Snippet )d61) # Snippet (s61( # starting from `methods.m4:27'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:27: testing..." echo methods.m4:27 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=memory texte..texte data recode --quiet --force --sequence=memory texte..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s61) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 61" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=61 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c62( rm -rf data stdout stderr # Snippet )c62) echo methods.m4:30 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:texte through files while filtering' echo $at_n " $at_c" fi echo $at_n "62. $srcdir/methods.m4:30 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d62( # Testing texte:texte through files while filtering # Snippet )d62) # Snippet (s62( # starting from `methods.m4:30'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:30: testing..." echo methods.m4:30 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..texte \ | recode --quiet --force --sequence=files texte..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s62) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 62" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=62 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c63( rm -rf data stdout stderr # Snippet )c63) echo methods.m4:33 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:texte through files while squashing' echo $at_n " $at_c" fi echo $at_n "63. $srcdir/methods.m4:33 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d63( # Testing texte:texte through files while squashing # Snippet )d63) # Snippet (s63( # starting from `methods.m4:33'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:33: testing..." echo methods.m4:33 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=files texte..texte data recode --quiet --force --sequence=files texte..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s63) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 63" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=63 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c64( rm -rf data stdout stderr # Snippet )c64) echo methods.m4:36 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:texte through pipe while filtering' echo $at_n " $at_c" fi echo $at_n "64. $srcdir/methods.m4:36 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d64( # Testing texte:texte through pipe while filtering # Snippet )d64) # Snippet (s64( # starting from `methods.m4:36'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:36: testing..." echo methods.m4:36 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..texte \ | recode --quiet --force --sequence=pipe texte..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s64) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 64" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=64 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c65( rm -rf data stdout stderr # Snippet )c65) echo methods.m4:39 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:texte through pipe while squashing' echo $at_n " $at_c" fi echo $at_n "65. $srcdir/methods.m4:39 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d65( # Testing texte:texte through pipe while squashing # Snippet )d65) # Snippet (s65( # starting from `methods.m4:39'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:39: testing..." echo methods.m4:39 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=pipe texte..texte data recode --quiet --force --sequence=pipe texte..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s65) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 65" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=65 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c66( rm -rf data stdout stderr # Snippet )c66) echo methods.m4:42 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:latin1 through memory while filtering' echo $at_n " $at_c" fi echo $at_n "66. $srcdir/methods.m4:42 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d66( # Testing texte:latin1 through memory while filtering # Snippet )d66) # Snippet (s66( # starting from `methods.m4:42'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:42: testing..." echo methods.m4:42 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..latin1 \ | recode --quiet --force --sequence=memory latin1..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s66) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 66" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=66 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c67( rm -rf data stdout stderr # Snippet )c67) echo methods.m4:45 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:latin1 through memory while squashing' echo $at_n " $at_c" fi echo $at_n "67. $srcdir/methods.m4:45 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d67( # Testing texte:latin1 through memory while squashing # Snippet )d67) # Snippet (s67( # starting from `methods.m4:45'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:45: testing..." echo methods.m4:45 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=memory texte..latin1 data recode --quiet --force --sequence=memory latin1..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s67) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 67" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=67 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c68( rm -rf data stdout stderr # Snippet )c68) echo methods.m4:48 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:latin1 through files while filtering' echo $at_n " $at_c" fi echo $at_n "68. $srcdir/methods.m4:48 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d68( # Testing texte:latin1 through files while filtering # Snippet )d68) # Snippet (s68( # starting from `methods.m4:48'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:48: testing..." echo methods.m4:48 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..latin1 \ | recode --quiet --force --sequence=files latin1..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s68) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 68" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=68 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c69( rm -rf data stdout stderr # Snippet )c69) echo methods.m4:51 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:latin1 through files while squashing' echo $at_n " $at_c" fi echo $at_n "69. $srcdir/methods.m4:51 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d69( # Testing texte:latin1 through files while squashing # Snippet )d69) # Snippet (s69( # starting from `methods.m4:51'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:51: testing..." echo methods.m4:51 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=files texte..latin1 data recode --quiet --force --sequence=files latin1..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s69) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 69" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=69 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c70( rm -rf data stdout stderr # Snippet )c70) echo methods.m4:54 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:latin1 through pipe while filtering' echo $at_n " $at_c" fi echo $at_n "70. $srcdir/methods.m4:54 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d70( # Testing texte:latin1 through pipe while filtering # Snippet )d70) # Snippet (s70( # starting from `methods.m4:54'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:54: testing..." echo methods.m4:54 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..latin1 \ | recode --quiet --force --sequence=pipe latin1..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s70) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 70" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=70 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c71( rm -rf data stdout stderr # Snippet )c71) echo methods.m4:57 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:latin1 through pipe while squashing' echo $at_n " $at_c" fi echo $at_n "71. $srcdir/methods.m4:57 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d71( # Testing texte:latin1 through pipe while squashing # Snippet )d71) # Snippet (s71( # starting from `methods.m4:57'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:57: testing..." echo methods.m4:57 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=pipe texte..latin1 data recode --quiet --force --sequence=pipe latin1..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s71) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 71" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=71 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c72( rm -rf data stdout stderr # Snippet )c72) echo methods.m4:60 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:bangbang through memory while filtering' echo $at_n " $at_c" fi echo $at_n "72. $srcdir/methods.m4:60 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d72( # Testing texte:bangbang through memory while filtering # Snippet )d72) # Snippet (s72( # starting from `methods.m4:60'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:60: testing..." echo methods.m4:60 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..bangbang \ | recode --quiet --force --sequence=memory bangbang..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s72) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 72" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=72 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c73( rm -rf data stdout stderr # Snippet )c73) echo methods.m4:63 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:bangbang through memory while squashing' echo $at_n " $at_c" fi echo $at_n "73. $srcdir/methods.m4:63 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d73( # Testing texte:bangbang through memory while squashing # Snippet )d73) # Snippet (s73( # starting from `methods.m4:63'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:63: testing..." echo methods.m4:63 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=memory texte..bangbang data recode --quiet --force --sequence=memory bangbang..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s73) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 73" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=73 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c74( rm -rf data stdout stderr # Snippet )c74) echo methods.m4:66 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:bangbang through files while filtering' echo $at_n " $at_c" fi echo $at_n "74. $srcdir/methods.m4:66 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d74( # Testing texte:bangbang through files while filtering # Snippet )d74) # Snippet (s74( # starting from `methods.m4:66'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:66: testing..." echo methods.m4:66 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..bangbang \ | recode --quiet --force --sequence=files bangbang..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s74) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 74" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=74 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c75( rm -rf data stdout stderr # Snippet )c75) echo methods.m4:69 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:bangbang through files while squashing' echo $at_n " $at_c" fi echo $at_n "75. $srcdir/methods.m4:69 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d75( # Testing texte:bangbang through files while squashing # Snippet )d75) # Snippet (s75( # starting from `methods.m4:69'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:69: testing..." echo methods.m4:69 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=files texte..bangbang data recode --quiet --force --sequence=files bangbang..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s75) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 75" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=75 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c76( rm -rf data stdout stderr # Snippet )c76) echo methods.m4:72 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:bangbang through pipe while filtering' echo $at_n " $at_c" fi echo $at_n "76. $srcdir/methods.m4:72 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d76( # Testing texte:bangbang through pipe while filtering # Snippet )d76) # Snippet (s76( # starting from `methods.m4:72'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:72: testing..." echo methods.m4:72 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..bangbang \ | recode --quiet --force --sequence=pipe bangbang..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s76) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 76" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=76 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c77( rm -rf data stdout stderr # Snippet )c77) echo methods.m4:75 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:bangbang through pipe while squashing' echo $at_n " $at_c" fi echo $at_n "77. $srcdir/methods.m4:75 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d77( # Testing texte:bangbang through pipe while squashing # Snippet )d77) # Snippet (s77( # starting from `methods.m4:75'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:75: testing..." echo methods.m4:75 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=pipe texte..bangbang data recode --quiet --force --sequence=pipe bangbang..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s77) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 77" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=77 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c78( rm -rf data stdout stderr # Snippet )c78) echo methods.m4:78 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:ibmpc through memory while filtering' echo $at_n " $at_c" fi echo $at_n "78. $srcdir/methods.m4:78 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d78( # Testing texte:ibmpc through memory while filtering # Snippet )d78) # Snippet (s78( # starting from `methods.m4:78'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:78: testing..." echo methods.m4:78 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..ibmpc \ | recode --quiet --force --sequence=memory ibmpc..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s78) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 78" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=78 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c79( rm -rf data stdout stderr # Snippet )c79) echo methods.m4:81 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:ibmpc through memory while squashing' echo $at_n " $at_c" fi echo $at_n "79. $srcdir/methods.m4:81 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d79( # Testing texte:ibmpc through memory while squashing # Snippet )d79) # Snippet (s79( # starting from `methods.m4:81'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:81: testing..." echo methods.m4:81 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=memory texte..ibmpc data recode --quiet --force --sequence=memory ibmpc..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s79) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 79" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=79 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c80( rm -rf data stdout stderr # Snippet )c80) echo methods.m4:84 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:ibmpc through files while filtering' echo $at_n " $at_c" fi echo $at_n "80. $srcdir/methods.m4:84 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d80( # Testing texte:ibmpc through files while filtering # Snippet )d80) # Snippet (s80( # starting from `methods.m4:84'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:84: testing..." echo methods.m4:84 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..ibmpc \ | recode --quiet --force --sequence=files ibmpc..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s80) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 80" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=80 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c81( rm -rf data stdout stderr # Snippet )c81) echo methods.m4:87 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:ibmpc through files while squashing' echo $at_n " $at_c" fi echo $at_n "81. $srcdir/methods.m4:87 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d81( # Testing texte:ibmpc through files while squashing # Snippet )d81) # Snippet (s81( # starting from `methods.m4:87'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:87: testing..." echo methods.m4:87 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=files texte..ibmpc data recode --quiet --force --sequence=files ibmpc..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s81) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 81" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=81 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c82( rm -rf data stdout stderr # Snippet )c82) echo methods.m4:90 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:ibmpc through pipe while filtering' echo $at_n " $at_c" fi echo $at_n "82. $srcdir/methods.m4:90 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d82( # Testing texte:ibmpc through pipe while filtering # Snippet )d82) # Snippet (s82( # starting from `methods.m4:90'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:90: testing..." echo methods.m4:90 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..ibmpc \ | recode --quiet --force --sequence=pipe ibmpc..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s82) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 82" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=82 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c83( rm -rf data stdout stderr # Snippet )c83) echo methods.m4:93 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:ibmpc through pipe while squashing' echo $at_n " $at_c" fi echo $at_n "83. $srcdir/methods.m4:93 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d83( # Testing texte:ibmpc through pipe while squashing # Snippet )d83) # Snippet (s83( # starting from `methods.m4:93'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:93: testing..." echo methods.m4:93 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=pipe texte..ibmpc data recode --quiet --force --sequence=pipe ibmpc..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s83) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 83" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=83 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c84( rm -rf data stdout stderr # Snippet )c84) echo methods.m4:96 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:iconqnx through memory while filtering' echo $at_n " $at_c" fi echo $at_n "84. $srcdir/methods.m4:96 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d84( # Testing texte:iconqnx through memory while filtering # Snippet )d84) # Snippet (s84( # starting from `methods.m4:96'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:96: testing..." echo methods.m4:96 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..iconqnx \ | recode --quiet --force --sequence=memory iconqnx..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s84) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 84" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=84 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c85( rm -rf data stdout stderr # Snippet )c85) echo methods.m4:99 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:iconqnx through memory while squashing' echo $at_n " $at_c" fi echo $at_n "85. $srcdir/methods.m4:99 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d85( # Testing texte:iconqnx through memory while squashing # Snippet )d85) # Snippet (s85( # starting from `methods.m4:99'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:99: testing..." echo methods.m4:99 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=memory texte..iconqnx data recode --quiet --force --sequence=memory iconqnx..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s85) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 85" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=85 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c86( rm -rf data stdout stderr # Snippet )c86) echo methods.m4:102 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:iconqnx through files while filtering' echo $at_n " $at_c" fi echo $at_n "86. $srcdir/methods.m4:102 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d86( # Testing texte:iconqnx through files while filtering # Snippet )d86) # Snippet (s86( # starting from `methods.m4:102'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:102: testing..." echo methods.m4:102 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..iconqnx \ | recode --quiet --force --sequence=files iconqnx..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s86) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 86" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=86 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c87( rm -rf data stdout stderr # Snippet )c87) echo methods.m4:105 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:iconqnx through files while squashing' echo $at_n " $at_c" fi echo $at_n "87. $srcdir/methods.m4:105 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d87( # Testing texte:iconqnx through files while squashing # Snippet )d87) # Snippet (s87( # starting from `methods.m4:105'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:105: testing..." echo methods.m4:105 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=files texte..iconqnx data recode --quiet --force --sequence=files iconqnx..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s87) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 87" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=87 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c88( rm -rf data stdout stderr # Snippet )c88) echo methods.m4:108 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:iconqnx through pipe while filtering' echo $at_n " $at_c" fi echo $at_n "88. $srcdir/methods.m4:108 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d88( # Testing texte:iconqnx through pipe while filtering # Snippet )d88) # Snippet (s88( # starting from `methods.m4:108'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:108: testing..." echo methods.m4:108 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..iconqnx \ | recode --quiet --force --sequence=pipe iconqnx..texte > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s88) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 88" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=88 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c89( rm -rf data stdout stderr # Snippet )c89) echo methods.m4:111 > at-check-line if test -n "$at_verbose"; then echo 'testing texte:iconqnx through pipe while squashing' echo $at_n " $at_c" fi echo $at_n "89. $srcdir/methods.m4:111 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d89( # Testing texte:iconqnx through pipe while squashing # Snippet )d89) # Snippet (s89( # starting from `methods.m4:111'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:111: testing..." echo methods.m4:111 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=pipe texte..iconqnx data recode --quiet --force --sequence=pipe iconqnx..texte data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s89) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 89" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=89 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c90( rm -rf data stdout stderr # Snippet )c90) echo methods.m4:114 > at-check-line if test -n "$at_verbose"; then echo 'testing ascii-bs:ebcdic through memory while filtering' echo $at_n " $at_c" fi echo $at_n "90. $srcdir/methods.m4:114 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d90( # Testing ascii-bs:ebcdic through memory while filtering # Snippet )d90) # Snippet (s90( # starting from `methods.m4:114'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:114: testing..." echo methods.m4:114 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING ascii-bs..ebcdic \ | recode --quiet --force --sequence=memory ebcdic..ascii-bs > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s90) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 90" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=90 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c91( rm -rf data stdout stderr # Snippet )c91) echo methods.m4:117 > at-check-line if test -n "$at_verbose"; then echo 'testing ascii-bs:ebcdic through memory while squashing' echo $at_n " $at_c" fi echo $at_n "91. $srcdir/methods.m4:117 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d91( # Testing ascii-bs:ebcdic through memory while squashing # Snippet )d91) # Snippet (s91( # starting from `methods.m4:117'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:117: testing..." echo methods.m4:117 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=memory ascii-bs..ebcdic data recode --quiet --force --sequence=memory ebcdic..ascii-bs data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s91) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 91" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=91 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c92( rm -rf data stdout stderr # Snippet )c92) echo methods.m4:120 > at-check-line if test -n "$at_verbose"; then echo 'testing ascii-bs:ebcdic through files while filtering' echo $at_n " $at_c" fi echo $at_n "92. $srcdir/methods.m4:120 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d92( # Testing ascii-bs:ebcdic through files while filtering # Snippet )d92) # Snippet (s92( # starting from `methods.m4:120'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:120: testing..." echo methods.m4:120 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=files < $at_top_srcdir/COPYING ascii-bs..ebcdic \ | recode --quiet --force --sequence=files ebcdic..ascii-bs > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s92) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 92" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=92 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c93( rm -rf data stdout stderr # Snippet )c93) echo methods.m4:123 > at-check-line if test -n "$at_verbose"; then echo 'testing ascii-bs:ebcdic through files while squashing' echo $at_n " $at_c" fi echo $at_n "93. $srcdir/methods.m4:123 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d93( # Testing ascii-bs:ebcdic through files while squashing # Snippet )d93) # Snippet (s93( # starting from `methods.m4:123'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:123: testing..." echo methods.m4:123 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=files ascii-bs..ebcdic data recode --quiet --force --sequence=files ebcdic..ascii-bs data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s93) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 93" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=93 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c94( rm -rf data stdout stderr # Snippet )c94) echo methods.m4:126 > at-check-line if test -n "$at_verbose"; then echo 'testing ascii-bs:ebcdic through pipe while filtering' echo $at_n " $at_c" fi echo $at_n "94. $srcdir/methods.m4:126 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d94( # Testing ascii-bs:ebcdic through pipe while filtering # Snippet )d94) # Snippet (s94( # starting from `methods.m4:126'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:126: testing..." echo methods.m4:126 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING ascii-bs..ebcdic \ | recode --quiet --force --sequence=pipe ebcdic..ascii-bs > data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s94) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 94" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=94 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then # Snippet (c95( rm -rf data stdout stderr # Snippet )c95) echo methods.m4:129 > at-check-line if test -n "$at_verbose"; then echo 'testing ascii-bs:ebcdic through pipe while squashing' echo $at_n " $at_c" fi echo $at_n "95. $srcdir/methods.m4:129 $at_c" if test -z "$at_skip_mode"; then ( # Snippet (d95( # Testing ascii-bs:ebcdic through pipe while squashing # Snippet )d95) # Snippet (s95( # starting from `methods.m4:129'. $at_traceon $at_traceoff test -n "$at_verbose" \ && echo "$srcdir/methods.m4:129: testing..." echo methods.m4:129 > at-check-line test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr $at_traceon set -e cp $at_top_srcdir/COPYING data chmod +w data recode --quiet --force --sequence=pipe ascii-bs..ebcdic data recode --quiet --force --sequence=pipe ebcdic..ascii-bs data diff $at_top_srcdir/COPYING data set +e $at_traceoff if test -z "$at_no_redirs"; then exec 1>&5 2>&6 $at_diff /dev/null stdout || exit 1 $at_diff /dev/null stderr || exit 1 fi $at_traceon $at_traceoff # Snippet )s95) ) case $? in 0) echo ok ;; 77) echo "ignored near \``cat at-check-line`'" at_ignore_count=`expr $at_ignore_count + 1` ;; *) echo "FAILED near \``cat at-check-line`'" at_failed_list="$at_failed_list 95" ;; esac else echo 'ignored (skipped)' at_ignore_count=`expr $at_ignore_count + 1` fi at_test_count=95 if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then rm -rf data stdout stderr fi fi # Wrap up the testing suite with summary statistics. rm -f at-check-line at_fail_count=0 if test -z "$at_failed_list"; then if test "$at_ignore_count" = 0; then at_banner="All $at_test_count tests were successful" else at_banner="All $at_test_count tests were successful ($at_ignore_count ignored)" fi else echo echo $at_n "Writing \`debug-NN.sh' scripts, NN =$at_c" for at_group in $at_failed_list; do echo $at_n " $at_group$at_c" ( echo '#!/bin/sh' sed -n '/^# Snippet (1/,/^# Snippet )1/p' atconfig test -z "$at_silent" && echo 'at_verbose=1' sed -n '/^# Snippet (2/,/^# Snippet )2/p' atconfig sed -n "/^# Snippet (3/,/^# Snippet )3/p" $0 sed -n "/^# Snippet (c$at_group(/,/^# Snippet )c$at_group)/p" $0 at_desc="`sed -n \ '/^# Snippet (d'$at_group'(/,/^# Snippet )d'$at_group')/p' $0 \ | sed -n '2s/^# //p'`" echo 'if test -n "$at_verbose"; then' echo ' at_banner="$0: '$at_desc'"' echo ' at_dashes=`echo $at_banner | sed s/./=/g`' echo ' echo' echo ' echo "$at_dashes"' echo ' echo "$at_banner"' echo ' echo "$at_dashes"' echo 'fi' echo sed -n "/^# Snippet (d$at_group(/,/^# Snippet )d$at_group)/p" $0 sed -n "/^# Snippet (s$at_group(/,/^# Snippet )s$at_group)/p" $0 echo 'exit 0' ) | grep -v '^# Snippet' > debug-$at_group.sh chmod +x debug-$at_group.sh at_fail_count=`expr $at_fail_count + 1` done echo ', done' if test -n "$at_stop_on_error"; then at_banner='ERROR: One of the tests failed, inhibiting subsequent tests' else at_banner="ERROR: Suite unsuccessful, $at_fail_count of $at_test_count tests failed" fi fi at_dashes=`echo $at_banner | sed s/./=/g` echo echo "$at_dashes" echo "$at_banner" echo "$at_dashes" if test -n "$at_failed_list"; then if test -z "$at_silent"; then echo echo 'When reporting failed tests to maintainers, do not merely list test' echo 'numbers, as the numbering changes between releases and pretests.' echo 'Be careful to give at least all the information you got about them.' echo 'You may investigate any problem if you feel able to do so, in which' echo 'case the generated debugging scripts provide good starting points.' echo "Go on and modify them at will. \`./debug-NN --help' gives usage" echo 'information. Now, failed tests will be executed again, verbosely.' for at_group in $at_failed_list; do ./debug-$at_group.sh done fi exit 1 fi exit 0 recode-3.6/tests/african.m40100644000000000000000000001226307024760557014351 0ustar rootroot# -*- shell-script -*- AT_SETUP(Bambara) dnl ------- cat <<'EOF' >example N ye n ka nsiirin nin da Amadu Tara la. Jamanatigi d=F2 tun b=E8 yen muso k=F2n=F2nt=F2 de tun b=E8 a f=E8. Muso k=F2n=F2nt=F2 b=E8=E8 ye denk=E8 ke= len kelen wolo a ye. A denk=E8 kelen kelen b=E8=E8 fana t=F2g=F2 ye ko Amadu. Amadu ninw, u ba t=F2g=F2 de tun b=E8 da u kan ka u b=F2 ny=F2g=F2n na. Amadu b= =E8=E8 ncinin tun ye denk=E8 ninw b=E8=E8 la d=F2g=F2nin o de tun ye Amadu Tara ye. O tun ye jamanatigi nin ka taramuso den ye. EOF cat <<'EOF' >transcript TiB5ZSBuIGthIG5zaWlyaW4gbmluIGRhIEFtYWR1IFRhcmEgbGEuICBKYW1hbmF0aWdpIGRvYCB0 dW4gYmVgIHllbiBtdXNvCmtvYG5vYG50b2AgZGUgdHVuIGJlYCBhIGZlYC4gIE11c28ga29gbm9g bnRvYCBiZWBlYCB5ZSBkZW5rZWAga2VsZW4ga2VsZW4Kd29sbyBhIHllLiAgQSBkZW5rZWAga2Vs ZW4ga2VsZW4gYmVgZWAgZmFuYSB0b2Bnb2AgeWUga28gQW1hZHUuICBBbWFkdQpuaW53LCB1IGJh IHRvYGdvYCBkZSB0dW4gYmVgIGRhIHUga2FuIGthIHUgYm9gIG55b2Bnb2BuIG5hLiAgQW1hZHUg YmVgZWAKbmNpbmluIHR1biB5ZSBkZW5rZWAgbmludyBiZWBlYCBsYSBkb2Bnb2BuaW4gbyBkZSB0 dW4geWUgQW1hZHUgVGFyYSB5ZS4KTyB0dW4geWUgamFtYW5hdGlnaSBuaW4ga2EgdGFyYW11c28g ZGVuIHllLgo= EOF AT_CHECK( [cp transcript expout recode ../,bambara/qp..t-bambara/64 < example ], 0, expout) AT_CHECK( [cp example expout recode ../,t-bambara/64..bambara/qp < transcript ], 0, expout) AT_CLEANUP(expout example transcript) AT_SETUP(Peul Fulfulde) dnl ------------- cat <<'EOF' >example Woni =B2on haa =B1ooyi. Oya mar=B2o jiwo kaanaro on maayi. Suka no ton no wi=BDee Buubu Yee=B1e, on suka e nder sukaa=B1e aduna on alaa bur=B2o mo labeede. On suka yahi safaari, o woni ton haa nee=B1i --- wa duu=B1i sappo o ko fawi! --- Yumma makko maraa =B1i=B2=B2o go=BDo si wonaa kanko. EOF cat <<'EOF' >transcript V29uaSBkW29uIGhhYSBiW29veWkuICBPeWEgbWFyZFtvIGppd28ga2FhbmFybyBvbiBtYWF5aS4g IFN1a2Egbm8KdG9uIG5vIHdpP15lZSBCdXVidSBZZWViW2UsIG9uIHN1a2EgZSBuZGVyIHN1a2Fh YltlIGFkdW5hIG9uIGFsYWEKYnVyZFtvIG1vIGxhYmVlZGUuICBPbiBzdWthIHlhaGkgc2FmYWFy aSwgbyB3b25pIHRvbiBoYWEgbmVlYltpIC0tLQp3YSBkdXViW2kgc2FwcG8gbyBrbyBmYXdpISAt LS0gWXVtbWEgbWFra28gbWFyYWEgYltpZFtkW28KZ28/Xm8gc2kgd29uYWEga2Fua28uCg== EOF AT_CHECK( [cp transcript expout recode ../,fulfulde/qp..t-fulfulde/64 < example ], 0, expout) AT_CHECK( [cp example expout recode ../,t-fulfulde/64..fulfulde/qp < transcript ], 0, expout) AT_CLEANUP(expout example transcript) AT_SETUP(Lingala) dnl ------- cat <<'EOF' >example Mob=E1li m=B6k=B6, azal=E1k=ED s=E9 y=E9m=B6k=B6 n=E1 bil=B6k=F8 m=EDngi. Mok=F8l=F8 m=B6k=B6 alob=ED: t=EDk=E1 n=E1k=F0nd=F0 koluka mw=E3s=ED. Ak= =F0=ED. At=E1mb=F3l=ED k=E1 k=E1 k=E1, ak=F3m=ED namb=F3ka m=B6k=B6, ak=FAt=ED w=E2= n=E1 Ntaba. Ntaba at=FAn=ED y=FD: ndeko, =F5kok=F0nd=F0 w=E1pi? Moto alob=ED: n=E3kok= =F0nd=F0 koluka mw=E3si yakob=E1la nay=E9. Ntaba alob=ED: zil=E1 ng=E1=ED t=F3k=F0n= d=F0 el=F8ng=B6. EOF cat <<'EOF' >transcript TW9iYVwnbGkgbW9bJ2tvWycsIGF6YWxhXCdraVwnIHNlXCcgeWVcJ21vWydrb1snIG5hXCcgYmls b1sna29bIG1pXCduZ2kuCk1va29bbG9bIG1vWydrb1snIGFsb2JpXCc6IHRpXCdrYVwnIG5hXCdr ZVtuZGVbIGtvbHVrYSBtd2FcdnNpXCcuICBBa2VbaVwnLgpBdGFcJ21ib1wnbGlcJyBrYVwnIGth XCcga2FcJywgYWtvXCdtaVwnIG5hbWJvXCdrYSBtb1sna29bJywgYWt1XCd0aVwnIHdhXm5hXCcg TnRhYmEuCk50YWJhIGF0dVwnbmlcJyB5ZVx2OiBuZGVrbywgb1x2a29rZVtuZGVbIHdhXCdwaT8g IE1vdG8gYWxvYmlcJzogbmFcdmtva2VbbmRlWwprb2x1a2EgbXdhXHZzaSB5YWtvYmFcJ2xhIG5h eWVcJy4gIE50YWJhIGFsb2JpXCc6IHppbGFcJyBuZ2FcJ2lcJyB0b1wna2VbbmRlWwplbG9bbmdv WycuCg== EOF AT_CHECK( [cp transcript expout recode ../,lingala/qp..t-lingala/64 < example ], 0, expout) AT_CHECK( [cp example expout recode ../,t-lingala/64..lingala/qp < transcript ], 0, expout) AT_CLEANUP(expout example transcript) AT_SETUP(Sango) dnl ----- cat <<'EOF' >example M=E2ley=F6mb=F6 ayeke mb=EAn=EE wakua t=EE let=E4a. Lo yeke zo s=F4 lo y= =EA kua t=EE lo m=EEngi. Azo t=EE y=E2 t=EE vaka s=F4 s=EF lo yeke l=E4ng=F6 da=E4 s=F4= ay=EA t=EBn=EB t=EE lo m=EEngi ngbanga t=EE nz=F6n=EE dut=EF t=EE lo na y=E2ng=E2= da t=EE lo na =E2s=EBw=E4 t=EE lo. EOF cat <<'EOF' >transcript TWFebGV5byJtYm8iIGF5ZWtlIG1iZV5uaV4gd2FrdWEgdGleIGxldGEiYS4gIExvIHlla2Ugem8g c29eIGxvIHllXiBrdWEgdGleCmxvIG1pXm5naS4gIEF6byB0aV4geWFeIHRpXiB2YWthIHNvXiBz aSIgbG8geWVrZSBsYSJuZ28iIGRhYSIgc29eIGF5ZV4KdGUibmUiIHRpXiBsbyBtaV5uZ2kgbmdi YW5nYSB0aV4gbnpvIm5pXiBkdXRpIiB0aV4gbG8gbmEgeWFebmdhXmRhIHRpXgpsbyBuYSBhXnNl IndhIiB0aV4gbG8uCg== EOF AT_CHECK( [cp transcript expout recode ../,sango/qp..t-sango/64 < example ], 0, expout) AT_CHECK( [cp example expout recode ../,t-sango/64..sango/qp < transcript ], 0, expout) AT_CLEANUP(expout example transcript) AT_SETUP(Wolof) dnl ----- cat <<'EOF' >example Ca 1965 ba leegi, Suwaahili mooy l=E0kk r=E9=E9wum Tansani. L=E0kk woowu la=BAuy j=E0ngalee ci daara yu ndaw yi ag yu yem yi. Ci moom la =BAuy jottalee xabaar yi =BAuy wax ag yi =BAuy bind. EOF cat <<'EOF' >transcript Q2EgMTk2NSBiYSBsZWVnaSwgU3V3YWFoaWxpIG1vb3kgbGFga2sgcmVcJ2VcJ3d1bSBUYW5zYW5p LiAgTGFga2sgd29vd3UKbGFuXnV5IGphYG5nYWxlZSBjaSBkYWFyYSB5dSBuZGF3IHlpIGFnIHl1 IHllbSB5aS4gIENpIG1vb20gbGEgbl51eQpqb3R0YWxlZSB4YWJhYXIgeWkgbl51eSB3YXggYWcg eWkgbl51eSBiaW5kLgo= EOF AT_CHECK( [cp transcript expout recode ../,wolof/qp..t-wolof/64 < example ], 0, expout) AT_CHECK( [cp example expout recode ../,t-wolof/64..wolof/qp < transcript ], 0, expout) AT_CLEANUP(expout example transcript) recode-3.6/tests/base64.m40100644000000000000000000000302307024754344014021 0ustar rootroot# -*- shell-script -*- AT_SETUP(single lines to Base64) dnl ---------------------- AT_CHECK( [( while read line; do echo $line | recode ../64 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [Cg== YQo= YWIK YWJjCg== YWJjZAo= YWJjZGVmZ2hpCg== YWJjZGVmZ2hpamtsbW5vcHFycwo= YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkMK YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNCg== YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWVwo= YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0 NTYK ]) AT_CLEANUP() AT_SETUP(block of lines to Base64) dnl ------------------------ AT_CHECK( [recode /../64 < $at_srcdir/dumps-data ], 0, [CmEKYWIKYWJjCmFiY2QKYWJjZGVmZ2hpCmFiY2RlZmdoaWprbG1ub3BxcnMKYWJjZGVmZ2hpamts bW5vcHFyc3R1dnd6eXpBQkMKYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xN CmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3enl6QUJDREVGR0hJSktMTU5PUFFSU1RVVlcKYWJjZGVm Z2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTYK ]) AT_CLEANUP() AT_SETUP(single lines to Base64 and back) dnl ------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../64 output recode /64../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Base64 and back) dnl --------------------------------- AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../64 output recode /64../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) recode-3.6/tests/combine.m40100644000000000000000000000023706673745240014361 0ustar rootroot# -*- shell-script -*- AT_SETUP(that combine does not crash) dnl --------------------------- AT_CHECK(recode co..l1 < /dev/null, 0) AT_CLEANUP() recode-3.6/tests/dumps.m40100644000000000000000000006235507024754166014104 0ustar rootroot# -*- shell-script -*- AT_SETUP(single lines to Decimal-1) dnl ------------------------- AT_CHECK( [( while read line; do echo $line | recode ../d1 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [ 10 97, 10 97, 98, 10 97, 98, 99, 10 97, 98, 99, 100, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 10 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 48, 49, 50, 51, 52, 53, 54, 10 ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Decimal-1) dnl --------------------------- AT_CHECK( [recode /../d1 < $at_srcdir/dumps-data ], 0, [ 10, 97, 10, 97, 98, 10, 97, 98, 99, 10, 97, 98, 99, 100, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 10, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 121, 122, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 48, 49, 50, 51, 52, 53, 54, 10 ]) AT_CLEANUP(input output) AT_SETUP(single lines to Decimal-1 and back) dnl ---------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../d1 output recode /d1../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Decimal-1 and back) dnl ------------------------------------ AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../d1 output recode /d1../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) AT_SETUP(single lines to Decimal-2) dnl ------------------------- AT_CHECK( [( while read line; do echo $line | recode ../d2 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [ 10 24842 24930, 10 24930, 25354 24930, 25444, 10 24930, 25444, 25958, 26472, 26890 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29450 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17162 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19722 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19790, 20304, 20818, 21332, 21846, 22282 24930, 25444, 25958, 26472, 26986, 27500, 28014, 28528, 29042, 29556, 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19790, 20304, 20818, 21332, 21846, 22360, 22874, 12337, 12851, 13365, 13834 ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Decimal-2) dnl --------------------------- AT_CHECK( [recode /../d2 < $at_srcdir/dumps-data ], 0, [ 2657, 2657, 25098, 24930, 25354, 24930, 25444, 2657, 25187, 25701, 26215, 26729, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 17477, 17991, 18505, 19019, 19533, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 17477, 17991, 18505, 19019, 19533, 20047, 20561, 21075, 21589, 22103, 2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271, 28785, 29299, 29813, 30327, 31353, 31297, 16963, 17477, 17991, 18505, 19019, 19533, 20047, 20561, 21075, 21589, 22103, 22617, 23088, 12594, 13108, 13622, 10 ]) AT_CLEANUP(input output) AT_SETUP(single lines to Decimal-2 and back) dnl ---------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../d2 output recode /d2../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Decimal-2 and back) dnl ------------------------------------ AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../d2 output recode /d2../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) AT_SETUP(single lines to Decimal-4) dnl ------------------------- AT_CHECK( [( while read line; do echo $line | recode ../d4 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [ 10 24842 6382090 1633837834 1633837924, 10 1633837924, 1701209960, 26890 1633837924, 1701209960, 1768581996, 1835954032, 1903325962 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 17162 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 1128547654, 1195919690, 1263291658 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 1128547654, 1195919690, 1263291726, 1330663762, 1398035798, 22282 1633837924, 1701209960, 1768581996, 1835954032, 1903326068, 1970698106, 2038055234, 1128547654, 1195919690, 1263291726, 1330663762, 1398035798, 1465407834, 808530483, 875902474 ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Decimal-4) dnl --------------------------- AT_CHECK( [recode /../d4 < $at_srcdir/dumps-data ], 0, [ 174131809, 1644847458, 1661624674, 1667500641, 1650680933, 1718052969, 174154339, 1684366951, 1751738987, 1819111023, 1886483059, 174154339, 1684366951, 1751738987, 1819111023, 1886483059, 1953855095, 2054781505, 1111689825, 1650680933, 1718052969, 1785425005, 1852797041, 1920169077, 1987541625, 2051097155, 1145390663, 1212762699, 1280117345, 1650680933, 1718052969, 1785425005, 1852797041, 1920169077, 1987541625, 2051097155, 1145390663, 1212762699, 1280134735, 1347506771, 1414878807, 174154339, 1684366951, 1751738987, 1819111023, 1886483059, 1953855095, 2054781505, 1111704645, 1179076681, 1246448717, 1313820753, 1381192789, 1448564825, 1513107762, 859059510, 10 ]) AT_CLEANUP(input output) AT_SETUP(single lines to Decimal-4 and back) dnl ---------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../d4 output recode /d4../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Decimal-4 and back) dnl ------------------------------------ AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../d4 output recode /d4../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) AT_SETUP(single lines to Hexadecimal-1) dnl ----------------------------- AT_CHECK( [( while read line; do echo $line | recode ../x1 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [0x0A 0x61, 0x0A 0x61, 0x62, 0x0A 0x61, 0x62, 0x63, 0x0A 0x61, 0x62, 0x63, 0x64, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x0A 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Hexadecimal-1) dnl ------------------------------- AT_CHECK( [recode /../x1 < $at_srcdir/dumps-data ], 0, [0x0A, 0x61, 0x0A, 0x61, 0x62, 0x0A, 0x61, 0x62, 0x63, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x7A, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A ]) AT_CLEANUP(input output) AT_SETUP(single lines to Hexadecimal-1 and back) dnl -------------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../x1 output recode /x1../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Hexadecimal-1 and back) dnl ---------------------------------------- AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../x1 output recode /x1../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) AT_SETUP(single lines to Hexadecimal-2) dnl ----------------------------- AT_CHECK( [( while read line; do echo $line | recode ../x2 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [0x0A 0x610A 0x6162, 0x0A 0x6162, 0x630A 0x6162, 0x6364, 0x0A 0x6162, 0x6364, 0x6566, 0x6768, 0x690A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x730A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x430A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x4344, 0x4546, 0x4748, 0x494A, 0x4B4C, 0x4D0A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x4344, 0x4546, 0x4748, 0x494A, 0x4B4C, 0x4D4E, 0x4F50, 0x5152, 0x5354, 0x5556, 0x570A 0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6E, 0x6F70, 0x7172, 0x7374, 0x7576, 0x777A, 0x797A, 0x4142, 0x4344, 0x4546, 0x4748, 0x494A, 0x4B4C, 0x4D4E, 0x4F50, 0x5152, 0x5354, 0x5556, 0x5758, 0x595A, 0x3031, 0x3233, 0x3435, 0x360A ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Hexadecimal-2) dnl ------------------------------- AT_CHECK( [recode /../x2 < $at_srcdir/dumps-data ], 0, [0x0A61, 0x0A61, 0x620A, 0x6162, 0x630A, 0x6162, 0x6364, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x4445, 0x4647, 0x4849, 0x4A4B, 0x4C4D, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x4445, 0x4647, 0x4849, 0x4A4B, 0x4C4D, 0x4E4F, 0x5051, 0x5253, 0x5455, 0x5657, 0x0A61, 0x6263, 0x6465, 0x6667, 0x6869, 0x6A6B, 0x6C6D, 0x6E6F, 0x7071, 0x7273, 0x7475, 0x7677, 0x7A79, 0x7A41, 0x4243, 0x4445, 0x4647, 0x4849, 0x4A4B, 0x4C4D, 0x4E4F, 0x5051, 0x5253, 0x5455, 0x5657, 0x5859, 0x5A30, 0x3132, 0x3334, 0x3536, 0x0A ]) AT_CLEANUP(input output) AT_SETUP(single lines to Hexadecimal-2 and back) dnl -------------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../x2 output recode /x2../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Hexadecimal-2 and back) dnl ---------------------------------------- AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../x2 output recode /x2../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) AT_SETUP(single lines to Hexadecimal-4) dnl ----------------------------- AT_CHECK( [( while read line; do echo $line | recode ../x4 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [0x0A 0x610A 0x61620A 0x6162630A 0x61626364, 0x0A 0x61626364, 0x65666768, 0x690A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x7172730A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x430A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D0A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D4E, 0x4F505152, 0x53545556, 0x570A 0x61626364, 0x65666768, 0x696A6B6C, 0x6D6E6F70, 0x71727374, 0x7576777A, 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D4E, 0x4F505152, 0x53545556, 0x5758595A, 0x30313233, 0x3435360A ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Hexadecimal-4) dnl ------------------------------- AT_CHECK( [recode /../x4 < $at_srcdir/dumps-data ], 0, [0x0A610A61, 0x620A6162, 0x630A6162, 0x63640A61, 0x62636465, 0x66676869, 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x74757677, 0x7A797A41, 0x42430A61, 0x62636465, 0x66676869, 0x6A6B6C6D, 0x6E6F7071, 0x72737475, 0x76777A79, 0x7A414243, 0x44454647, 0x48494A4B, 0x4C4D0A61, 0x62636465, 0x66676869, 0x6A6B6C6D, 0x6E6F7071, 0x72737475, 0x76777A79, 0x7A414243, 0x44454647, 0x48494A4B, 0x4C4D4E4F, 0x50515253, 0x54555657, 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x74757677, 0x7A797A41, 0x42434445, 0x46474849, 0x4A4B4C4D, 0x4E4F5051, 0x52535455, 0x56575859, 0x5A303132, 0x33343536, 0x0A ]) AT_CLEANUP(input output) AT_SETUP(single lines to Hexadecimal-4 and back) dnl -------------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../x4 output recode /x4../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Hexadecimal-4 and back) dnl ---------------------------------------- AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../x4 output recode /x4../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) AT_SETUP(single lines to Octal-1) dnl ----------------------- AT_CHECK( [( while read line; do echo $line | recode ../o1 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [0012 0141, 0012 0141, 0142, 0012 0141, 0142, 0143, 0012 0141, 0142, 0143, 0144, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0012 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0130, 0131, 0132, 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0012 ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Octal-1) dnl ------------------------- AT_CHECK( [recode /../o1 < $at_srcdir/dumps-data ], 0, [0012, 0141, 0012, 0141, 0142, 0012, 0141, 0142, 0143, 0012, 0141, 0142, 0143, 0144, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 0172, 0171, 0172, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0130, 0131, 0132, 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0012 ]) AT_CLEANUP(input output) AT_SETUP(single lines to Octal-1 and back) dnl -------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../o1 output recode /o1../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Octal-1 and back) dnl ---------------------------------- AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../o1 output recode /o1../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) AT_SETUP(single lines to Octal-2) dnl ----------------------- AT_CHECK( [( while read line; do echo $line | recode ../o2 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [0012 0060412 0060542, 0012 0060542, 0061412 0060542, 0061544, 0012 0060542, 0061544, 0062546, 0063550, 0064412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041504, 0042506, 0043510, 0044512, 0045514, 0046412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041504, 0042506, 0043510, 0044512, 0045514, 0046516, 0047520, 0050522, 0051524, 0052526, 0053412 0060542, 0061544, 0062546, 0063550, 0064552, 0065554, 0066556, 0067560, 0070562, 0071564, 0072566, 0073572, 0074572, 0040502, 0041504, 0042506, 0043510, 0044512, 0045514, 0046516, 0047520, 0050522, 0051524, 0052526, 0053530, 0054532, 0030061, 0031063, 0032065, 0033012 ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Octal-2) dnl ------------------------- AT_CHECK( [recode /../o2 < $at_srcdir/dumps-data ], 0, [0005141, 0005141, 0061012, 0060542, 0061412, 0060542, 0061544, 0005141, 0061143, 0062145, 0063147, 0064151, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0042105, 0043107, 0044111, 0045113, 0046115, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0042105, 0043107, 0044111, 0045113, 0046115, 0047117, 0050121, 0051123, 0052125, 0053127, 0005141, 0061143, 0062145, 0063147, 0064151, 0065153, 0066155, 0067157, 0070161, 0071163, 0072165, 0073167, 0075171, 0075101, 0041103, 0042105, 0043107, 0044111, 0045113, 0046115, 0047117, 0050121, 0051123, 0052125, 0053127, 0054131, 0055060, 0030462, 0031464, 0032466, 0012 ]) AT_CLEANUP(input output) AT_SETUP(single lines to Octal-2 and back) dnl -------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../o2 output recode /o2../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Octal-2 and back) dnl ---------------------------------- AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../o2 output recode /o2../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) AT_SETUP(single lines to Octal-4) dnl ----------------------- AT_CHECK( [( while read line; do echo $line | recode ../o4 || exit 1; done ) < $at_srcdir/dumps-data ], 0, [0012 0060412 030261012 014130461412 014130461544, 0012 014130461544, 014531463550, 0064412 014130461544, 014531463550, 015132465554, 015533467560, 016134471412 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 0041412 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 010321042506, 010722044512, 011323046412 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 010321042506, 010722044512, 011323046516, 011724050522, 012325052526, 0053412 014130461544, 014531463550, 015132465554, 015533467560, 016134471564, 016535473572, 017136440502, 010321042506, 010722044512, 011323046516, 011724050522, 012325052526, 012726054532, 006014231063, 006415233012 ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Octal-4) dnl ------------------------- AT_CHECK( [recode /../o4 < $at_srcdir/dumps-data ], 0, [001230205141, 014202460542, 014302460542, 014331005141, 014230662145, 014631664151, 001230261143, 014431263147, 015032265153, 015433267157, 016034271163, 001230261143, 014431263147, 015032265153, 015433267157, 016034271163, 016435273167, 017236275101, 010220605141, 014230662145, 014631664151, 015232666155, 015633670161, 016234672165, 016635675171, 017220241103, 010421243107, 011022245113, 011423205141, 014230662145, 014631664151, 015232666155, 015633670161, 016234672165, 016635675171, 017220241103, 010421243107, 011022245113, 011423247117, 012024251123, 012425253127, 001230261143, 014431263147, 015032265153, 015433267157, 016034271163, 016435273167, 017236275101, 010220642105, 010621644111, 011222646115, 011623650121, 012224652125, 012625654131, 013214030462, 006315032466, 0012 ]) AT_CLEANUP(input output) AT_SETUP(single lines to Octal-4 and back) dnl -------------------------------- AT_CHECK( [set -e while read line; do echo $line > input echo $line > output recode /../o4 output recode /o4../ output diff input output done < $at_srcdir/dumps-data set +e ]) AT_CLEANUP(input output) AT_SETUP(block of lines to Octal-4 and back) dnl ---------------------------------- AT_CHECK( [set -e cp $at_srcdir/dumps-data output chmod +w output recode /../o4 output recode /o4../ output diff $at_srcdir/dumps-data output set +e ]) AT_CLEANUP(output) recode-3.6/tests/lists.m40100644000000000000000000004655407126356631014113 0ustar rootroot# -*- shell-script -*- AT_SETUP(decimal listing of a charset) dnl ---------------------------- cat > expect <<'EOF' ISO-8859-1 0 NU 16 DL 32 SP 48 0 64 At 80 P 96 '! 112 p 1 SH 17 D1 33 ! 49 1 65 A 81 Q 97 a 113 q 2 SX 18 D2 34 " 50 2 66 B 82 R 98 b 114 r 3 EX 19 D3 35 Nb 51 3 67 C 83 S 99 c 115 s 4 ET 20 D4 36 DO 52 4 68 D 84 T 100 d 116 t 5 EQ 21 NK 37 % 53 5 69 E 85 U 101 e 117 u 6 AK 22 SY 38 & 54 6 70 F 86 V 102 f 118 v 7 BL 23 EB 39 ' 55 7 71 G 87 W 103 g 119 w 8 BS 24 CN 40 ( 56 8 72 H 88 X 104 h 120 x 9 HT 25 EM 41 ) 57 9 73 I 89 Y 105 i 121 y 10 LF 26 SB 42 * 58 : 74 J 90 Z 106 j 122 z 11 VT 27 EC 43 + 59 ; 75 K 91 <( 107 k 123 (! 12 FF 28 FS 44 , 60 < 76 L 92 // 108 l 124 !! 13 CR 29 GS 45 - 61 = 77 M 93 )> 109 m 125 !) 14 SO 30 RS 46 . 62 > 78 N 94 '> 110 n 126 '? 15 SI 31 US 47 / 63 ? 79 O 95 _ 111 o 127 DT 128 PA 144 DC 160 NS 176 DG 192 A! 208 D- 224 a! 240 d- 129 HO 145 P1 161 !I 177 +- 193 A' 209 N? 225 a' 241 n? 130 BH 146 P2 162 Ct 178 2S 194 A> 210 O! 226 a> 242 o! 131 NH 147 TS 163 Pd 179 3S 195 A? 211 O' 227 a? 243 o' 132 IN 148 CC 164 Cu 180 '' 196 A: 212 O> 228 a: 244 o> 133 NL 149 MW 165 Ye 181 My 197 AA 213 O? 229 aa 245 o? 134 SA 150 SG 166 BB 182 PI 198 AE 214 O: 230 ae 246 o: 135 ES 151 EG 167 SE 183 .M 199 C, 215 *X 231 c, 247 -: 136 HS 152 SS 168 ': 184 ', 200 E! 216 O/ 232 e! 248 o/ 137 HJ 153 GC 169 Co 185 1S 201 E' 217 U! 233 e' 249 u! 138 VS 154 SC 170 -a 186 -o 202 E> 218 U' 234 e> 250 u' 139 PD 155 CI 171 << 187 >> 203 E: 219 U> 235 e: 251 u> 140 PU 156 ST 172 NO 188 14 204 I! 220 U: 236 i! 252 u: 141 RI 157 OC 173 -- 189 12 205 I' 221 Y' 237 i' 253 y' 142 S2 158 PM 174 Rg 190 34 206 I> 222 TH 238 i> 254 th 143 S3 159 AC 175 'm 191 ?I 207 I: 223 ss 239 i: 255 y: EOF AT_CHECK(recode -ld latin-1 | cmp -s - expect, 0) AT_CLEANUP(expect) AT_SETUP(hexadecimal listing of a charset) dnl -------------------------------- cat > expect <<'EOF' ISO-8859-1 00 NU 10 DL 20 SP 30 0 40 At 50 P 60 '! 70 p 01 SH 11 D1 21 ! 31 1 41 A 51 Q 61 a 71 q 02 SX 12 D2 22 " 32 2 42 B 52 R 62 b 72 r 03 EX 13 D3 23 Nb 33 3 43 C 53 S 63 c 73 s 04 ET 14 D4 24 DO 34 4 44 D 54 T 64 d 74 t 05 EQ 15 NK 25 % 35 5 45 E 55 U 65 e 75 u 06 AK 16 SY 26 & 36 6 46 F 56 V 66 f 76 v 07 BL 17 EB 27 ' 37 7 47 G 57 W 67 g 77 w 08 BS 18 CN 28 ( 38 8 48 H 58 X 68 h 78 x 09 HT 19 EM 29 ) 39 9 49 I 59 Y 69 i 79 y 0a LF 1a SB 2a * 3a : 4a J 5a Z 6a j 7a z 0b VT 1b EC 2b + 3b ; 4b K 5b <( 6b k 7b (! 0c FF 1c FS 2c , 3c < 4c L 5c // 6c l 7c !! 0d CR 1d GS 2d - 3d = 4d M 5d )> 6d m 7d !) 0e SO 1e RS 2e . 3e > 4e N 5e '> 6e n 7e '? 0f SI 1f US 2f / 3f ? 4f O 5f _ 6f o 7f DT 80 PA 90 DC a0 NS b0 DG c0 A! d0 D- e0 a! f0 d- 81 HO 91 P1 a1 !I b1 +- c1 A' d1 N? e1 a' f1 n? 82 BH 92 P2 a2 Ct b2 2S c2 A> d2 O! e2 a> f2 o! 83 NH 93 TS a3 Pd b3 3S c3 A? d3 O' e3 a? f3 o' 84 IN 94 CC a4 Cu b4 '' c4 A: d4 O> e4 a: f4 o> 85 NL 95 MW a5 Ye b5 My c5 AA d5 O? e5 aa f5 o? 86 SA 96 SG a6 BB b6 PI c6 AE d6 O: e6 ae f6 o: 87 ES 97 EG a7 SE b7 .M c7 C, d7 *X e7 c, f7 -: 88 HS 98 SS a8 ': b8 ', c8 E! d8 O/ e8 e! f8 o/ 89 HJ 99 GC a9 Co b9 1S c9 E' d9 U! e9 e' f9 u! 8a VS 9a SC aa -a ba -o ca E> da U' ea e> fa u' 8b PD 9b CI ab << bb >> cb E: db U> eb e: fb u> 8c PU 9c ST ac NO bc 14 cc I! dc U: ec i! fc u: 8d RI 9d OC ad -- bd 12 cd I' dd Y' ed i' fd y' 8e S2 9e PM ae Rg be 34 ce I> de TH ee i> fe th 8f S3 9f AC af 'm bf ?I cf I: df ss ef i: ff y: EOF AT_CHECK(recode -lh latin-1 | cmp -s - expect, 0) AT_CLEANUP(expect) AT_SETUP(octal listing of a charset) dnl -------------------------- cat > expect <<'EOF' ISO-8859-1 000 NU 020 DL 040 SP 060 0 100 At 120 P 140 '! 160 p 001 SH 021 D1 041 ! 061 1 101 A 121 Q 141 a 161 q 002 SX 022 D2 042 " 062 2 102 B 122 R 142 b 162 r 003 EX 023 D3 043 Nb 063 3 103 C 123 S 143 c 163 s 004 ET 024 D4 044 DO 064 4 104 D 124 T 144 d 164 t 005 EQ 025 NK 045 % 065 5 105 E 125 U 145 e 165 u 006 AK 026 SY 046 & 066 6 106 F 126 V 146 f 166 v 007 BL 027 EB 047 ' 067 7 107 G 127 W 147 g 167 w 010 BS 030 CN 050 ( 070 8 110 H 130 X 150 h 170 x 011 HT 031 EM 051 ) 071 9 111 I 131 Y 151 i 171 y 012 LF 032 SB 052 * 072 : 112 J 132 Z 152 j 172 z 013 VT 033 EC 053 + 073 ; 113 K 133 <( 153 k 173 (! 014 FF 034 FS 054 , 074 < 114 L 134 // 154 l 174 !! 015 CR 035 GS 055 - 075 = 115 M 135 )> 155 m 175 !) 016 SO 036 RS 056 . 076 > 116 N 136 '> 156 n 176 '? 017 SI 037 US 057 / 077 ? 117 O 137 _ 157 o 177 DT 200 PA 220 DC 240 NS 260 DG 300 A! 320 D- 340 a! 360 d- 201 HO 221 P1 241 !I 261 +- 301 A' 321 N? 341 a' 361 n? 202 BH 222 P2 242 Ct 262 2S 302 A> 322 O! 342 a> 362 o! 203 NH 223 TS 243 Pd 263 3S 303 A? 323 O' 343 a? 363 o' 204 IN 224 CC 244 Cu 264 '' 304 A: 324 O> 344 a: 364 o> 205 NL 225 MW 245 Ye 265 My 305 AA 325 O? 345 aa 365 o? 206 SA 226 SG 246 BB 266 PI 306 AE 326 O: 346 ae 366 o: 207 ES 227 EG 247 SE 267 .M 307 C, 327 *X 347 c, 367 -: 210 HS 230 SS 250 ': 270 ', 310 E! 330 O/ 350 e! 370 o/ 211 HJ 231 GC 251 Co 271 1S 311 E' 331 U! 351 e' 371 u! 212 VS 232 SC 252 -a 272 -o 312 E> 332 U' 352 e> 372 u' 213 PD 233 CI 253 << 273 >> 313 E: 333 U> 353 e: 373 u> 214 PU 234 ST 254 NO 274 14 314 I! 334 U: 354 i! 374 u: 215 RI 235 OC 255 -- 275 12 315 I' 335 Y' 355 i' 375 y' 216 S2 236 PM 256 Rg 276 34 316 I> 336 TH 356 i> 376 th 217 S3 237 AC 257 'm 277 ?I 317 I: 337 ss 357 i: 377 y: EOF AT_CHECK(recode -lo latin-1 | cmp -s - expect, 0) AT_CLEANUP(expect) AT_SETUP(full listing of a charset) dnl ------------------------- cat > expect <<'EOF' Dec Oct Hex UCS2 Mne ISO-8859-1 0 000 00 0000 NU null (nul) 1 001 01 0001 SH start of heading (soh) 2 002 02 0002 SX start of text (stx) 3 003 03 0003 EX end of text (etx) 4 004 04 0004 ET end of transmission (eot) 5 005 05 0005 EQ enquiry (enq) 6 006 06 0006 AK acknowledge (ack) 7 007 07 0007 BL bell (bel) 8 010 08 0008 BS backspace (bs) 9 011 09 0009 HT character tabulation (ht) 10 012 0a 000A LF line feed (lf) 11 013 0b 000B VT line tabulation (vt) 12 014 0c 000C FF form feed (ff) 13 015 0d 000D CR carriage return (cr) 14 016 0e 000E SO shift out (so) 15 017 0f 000F SI shift in (si) 16 020 10 0010 DL datalink escape (dle) 17 021 11 0011 D1 device control one (dc1) 18 022 12 0012 D2 device control two (dc2) 19 023 13 0013 D3 device control three (dc3) 20 024 14 0014 D4 device control four (dc4) 21 025 15 0015 NK negative acknowledge (nak) 22 026 16 0016 SY syncronous idle (syn) 23 027 17 0017 EB end of transmission block (etb) 24 030 18 0018 CN cancel (can) 25 031 19 0019 EM end of medium (em) 26 032 1a 001A SB substitute (sub) 27 033 1b 001B EC escape (esc) 28 034 1c 001C FS file separator (is4) 29 035 1d 001D GS group separator (is3) 30 036 1e 001E RS record separator (is2) 31 037 1f 001F US unit separator (is1) 32 040 20 0020 SP space 33 041 21 0021 ! exclamation mark 34 042 22 0022 " quotation mark 35 043 23 0023 Nb number sign 36 044 24 0024 DO dollar sign 37 045 25 0025 % percent sign 38 046 26 0026 & ampersand 39 047 27 0027 ' apostrophe 40 050 28 0028 ( left parenthesis 41 051 29 0029 ) right parenthesis 42 052 2a 002A * asterisk 43 053 2b 002B + plus sign 44 054 2c 002C , comma 45 055 2d 002D - hyphen-minus 46 056 2e 002E . full stop 47 057 2f 002F / solidus 48 060 30 0030 0 digit zero 49 061 31 0031 1 digit one 50 062 32 0032 2 digit two 51 063 33 0033 3 digit three 52 064 34 0034 4 digit four 53 065 35 0035 5 digit five 54 066 36 0036 6 digit six 55 067 37 0037 7 digit seven 56 070 38 0038 8 digit eight 57 071 39 0039 9 digit nine 58 072 3a 003A : colon 59 073 3b 003B ; semicolon 60 074 3c 003C < less-than sign 61 075 3d 003D = equals sign 62 076 3e 003E > greater-than sign 63 077 3f 003F ? question mark 64 100 40 0040 At commercial at 65 101 41 0041 A latin capital letter a 66 102 42 0042 B latin capital letter b 67 103 43 0043 C latin capital letter c 68 104 44 0044 D latin capital letter d 69 105 45 0045 E latin capital letter e 70 106 46 0046 F latin capital letter f 71 107 47 0047 G latin capital letter g 72 110 48 0048 H latin capital letter h 73 111 49 0049 I latin capital letter i 74 112 4a 004A J latin capital letter j 75 113 4b 004B K latin capital letter k 76 114 4c 004C L latin capital letter l 77 115 4d 004D M latin capital letter m 78 116 4e 004E N latin capital letter n 79 117 4f 004F O latin capital letter o 80 120 50 0050 P latin capital letter p 81 121 51 0051 Q latin capital letter q 82 122 52 0052 R latin capital letter r 83 123 53 0053 S latin capital letter s 84 124 54 0054 T latin capital letter t 85 125 55 0055 U latin capital letter u 86 126 56 0056 V latin capital letter v 87 127 57 0057 W latin capital letter w 88 130 58 0058 X latin capital letter x 89 131 59 0059 Y latin capital letter y 90 132 5a 005A Z latin capital letter z 91 133 5b 005B <( left square bracket 92 134 5c 005C // reverse solidus 93 135 5d 005D )> right square bracket 94 136 5e 005E '> circumflex accent 95 137 5f 005F _ low line 96 140 60 0060 '! grave accent 97 141 61 0061 a latin small letter a 98 142 62 0062 b latin small letter b 99 143 63 0063 c latin small letter c 100 144 64 0064 d latin small letter d 101 145 65 0065 e latin small letter e 102 146 66 0066 f latin small letter f 103 147 67 0067 g latin small letter g 104 150 68 0068 h latin small letter h 105 151 69 0069 i latin small letter i 106 152 6a 006A j latin small letter j 107 153 6b 006B k latin small letter k 108 154 6c 006C l latin small letter l 109 155 6d 006D m latin small letter m 110 156 6e 006E n latin small letter n 111 157 6f 006F o latin small letter o 112 160 70 0070 p latin small letter p 113 161 71 0071 q latin small letter q 114 162 72 0072 r latin small letter r 115 163 73 0073 s latin small letter s 116 164 74 0074 t latin small letter t 117 165 75 0075 u latin small letter u 118 166 76 0076 v latin small letter v 119 167 77 0077 w latin small letter w 120 170 78 0078 x latin small letter x 121 171 79 0079 y latin small letter y 122 172 7a 007A z latin small letter z 123 173 7b 007B (! left curly bracket 124 174 7c 007C !! vertical line 125 175 7d 007D !) right curly bracket 126 176 7e 007E '? tilde 127 177 7f 007F DT delete (del) 128 200 80 0080 PA padding character (pad) 129 201 81 0081 HO high octet preset (hop) 130 202 82 0082 BH break permitted here (bph) 131 203 83 0083 NH no break here (nbh) 132 204 84 0084 IN index (ind) 133 205 85 0085 NL next line (nel) 134 206 86 0086 SA start of selected area (ssa) 135 207 87 0087 ES end of selected area (esa) 136 210 88 0088 HS character tabulation set (hts) 137 211 89 0089 HJ character tabulation with justification (htj) 138 212 8a 008A VS line tabulation set (vts) 139 213 8b 008B PD partial line forward (pld) 140 214 8c 008C PU partial line backward (plu) 141 215 8d 008D RI reverse line feed (ri) 142 216 8e 008E S2 single-shift two (ss2) 143 217 8f 008F S3 single-shift three (ss3) 144 220 90 0090 DC device control string (dcs) 145 221 91 0091 P1 private use one (pu1) 146 222 92 0092 P2 private use two (pu2) 147 223 93 0093 TS set transmit state (sts) 148 224 94 0094 CC cancel character (cch) 149 225 95 0095 MW message waiting (mw) 150 226 96 0096 SG start of guarded area (spa) 151 227 97 0097 EG end of guarded area (epa) 152 230 98 0098 SS start of string (sos) 153 231 99 0099 GC single graphic character introducer (sgci) 154 232 9a 009A SC single character introducer (sci) 155 233 9b 009B CI control sequence introducer (csi) 156 234 9c 009C ST string terminator (st) 157 235 9d 009D OC operating system command (osc) 158 236 9e 009E PM privacy message (pm) 159 237 9f 009F AC application program command (apc) 160 240 a0 00A0 NS no-break space 161 241 a1 00A1 !I inverted exclamation mark 162 242 a2 00A2 Ct cent sign 163 243 a3 00A3 Pd pound sign 164 244 a4 00A4 Cu currency sign 165 245 a5 00A5 Ye yen sign 166 246 a6 00A6 BB broken bar 167 247 a7 00A7 SE section sign 168 250 a8 00A8 ': diaeresis 169 251 a9 00A9 Co copyright sign 170 252 aa 00AA -a feminine ordinal indicator 171 253 ab 00AB << left-pointing double angle quotation mark 172 254 ac 00AC NO not sign 173 255 ad 00AD -- soft hyphen 174 256 ae 00AE Rg registered sign 175 257 af 00AF 'm macron 176 260 b0 00B0 DG degree sign 177 261 b1 00B1 +- plus-minus sign 178 262 b2 00B2 2S superscript two 179 263 b3 00B3 3S superscript three 180 264 b4 00B4 '' acute accent 181 265 b5 00B5 My micro sign 182 266 b6 00B6 PI pilcrow sign 183 267 b7 00B7 .M middle dot 184 270 b8 00B8 ', cedilla 185 271 b9 00B9 1S superscript one 186 272 ba 00BA -o masculine ordinal indicator 187 273 bb 00BB >> right-pointing double angle quotation mark 188 274 bc 00BC 14 vulgar fraction one quarter 189 275 bd 00BD 12 vulgar fraction one half 190 276 be 00BE 34 vulgar fraction three quarters 191 277 bf 00BF ?I inverted question mark 192 300 c0 00C0 A! latin capital letter a with grave 193 301 c1 00C1 A' latin capital letter a with acute 194 302 c2 00C2 A> latin capital letter a with circumflex 195 303 c3 00C3 A? latin capital letter a with tilde 196 304 c4 00C4 A: latin capital letter a with diaeresis 197 305 c5 00C5 AA latin capital letter a with ring above 198 306 c6 00C6 AE latin capital letter ae 199 307 c7 00C7 C, latin capital letter c with cedilla 200 310 c8 00C8 E! latin capital letter e with grave 201 311 c9 00C9 E' latin capital letter e with acute 202 312 ca 00CA E> latin capital letter e with circumflex 203 313 cb 00CB E: latin capital letter e with diaeresis 204 314 cc 00CC I! latin capital letter i with grave 205 315 cd 00CD I' latin capital letter i with acute 206 316 ce 00CE I> latin capital letter i with circumflex 207 317 cf 00CF I: latin capital letter i with diaeresis 208 320 d0 00D0 D- latin capital letter eth (icelandic) 209 321 d1 00D1 N? latin capital letter n with tilde 210 322 d2 00D2 O! latin capital letter o with grave 211 323 d3 00D3 O' latin capital letter o with acute 212 324 d4 00D4 O> latin capital letter o with circumflex 213 325 d5 00D5 O? latin capital letter o with tilde 214 326 d6 00D6 O: latin capital letter o with diaeresis 215 327 d7 00D7 *X multiplication sign 216 330 d8 00D8 O/ latin capital letter o with stroke 217 331 d9 00D9 U! latin capital letter u with grave 218 332 da 00DA U' latin capital letter u with acute 219 333 db 00DB U> latin capital letter u with circumflex 220 334 dc 00DC U: latin capital letter u with diaeresis 221 335 dd 00DD Y' latin capital letter y with acute 222 336 de 00DE TH latin capital letter thorn (icelandic) 223 337 df 00DF ss latin small letter sharp s (german) 224 340 e0 00E0 a! latin small letter a with grave 225 341 e1 00E1 a' latin small letter a with acute 226 342 e2 00E2 a> latin small letter a with circumflex 227 343 e3 00E3 a? latin small letter a with tilde 228 344 e4 00E4 a: latin small letter a with diaeresis 229 345 e5 00E5 aa latin small letter a with ring above 230 346 e6 00E6 ae latin small letter ae 231 347 e7 00E7 c, latin small letter c with cedilla 232 350 e8 00E8 e! latin small letter e with grave 233 351 e9 00E9 e' latin small letter e with acute 234 352 ea 00EA e> latin small letter e with circumflex 235 353 eb 00EB e: latin small letter e with diaeresis 236 354 ec 00EC i! latin small letter i with grave 237 355 ed 00ED i' latin small letter i with acute 238 356 ee 00EE i> latin small letter i with circumflex 239 357 ef 00EF i: latin small letter i with diaeresis 240 360 f0 00F0 d- latin small letter eth (icelandic) 241 361 f1 00F1 n? latin small letter n with tilde 242 362 f2 00F2 o! latin small letter o with grave 243 363 f3 00F3 o' latin small letter o with acute 244 364 f4 00F4 o> latin small letter o with circumflex 245 365 f5 00F5 o? latin small letter o with tilde 246 366 f6 00F6 o: latin small letter o with diaeresis 247 367 f7 00F7 -: division sign 248 370 f8 00F8 o/ latin small letter o with stroke 249 371 f9 00F9 u! latin small letter u with grave 250 372 fa 00FA u' latin small letter u with acute 251 373 fb 00FB u> latin small letter u with circumflex 252 374 fc 00FC u: latin small letter u with diaeresis 253 375 fd 00FD y' latin small letter y with acute 254 376 fe 00FE th latin small letter thorn (icelandic) 255 377 ff 00FF y: latin small letter y with diaeresis EOF AT_CHECK(recode -lf latin-1 | cmp -s - expect, 0) AT_CLEANUP(expect) recode-3.6/tests/methods.m40100644000000000000000000001063606613403724014404 0ustar rootroot# -*- shell-script -*- AT_DEFINE(TEST_METHOD, [AT_SETUP($1) AT_CHECK( [set -e ifelse($6, filter, [recode --quiet --force --sequence=$5 < $2 $3..$4 \ | recode --quiet --force --sequence=$5 $4..$3 > data], $6, squash, [cp $2 data chmod +w data recode --quiet --force --sequence=$5 $3..$4 data recode --quiet --force --sequence=$5 $4..$3 data]) diff $2 data set +e ]) AT_CLEANUP(data) ]) TEST_METHOD(texte:texte through memory while filtering, $at_top_srcdir/COPYING, texte, texte, memory, filter) TEST_METHOD(texte:texte through memory while squashing, $at_top_srcdir/COPYING, texte, texte, memory, squash) TEST_METHOD(texte:texte through files while filtering, $at_top_srcdir/COPYING, texte, texte, files, filter) TEST_METHOD(texte:texte through files while squashing, $at_top_srcdir/COPYING, texte, texte, files, squash) TEST_METHOD(texte:texte through pipe while filtering, $at_top_srcdir/COPYING, texte, texte, pipe, filter) TEST_METHOD(texte:texte through pipe while squashing, $at_top_srcdir/COPYING, texte, texte, pipe, squash) TEST_METHOD(texte:latin1 through memory while filtering, $at_top_srcdir/COPYING, texte, latin1, memory, filter) TEST_METHOD(texte:latin1 through memory while squashing, $at_top_srcdir/COPYING, texte, latin1, memory, squash) TEST_METHOD(texte:latin1 through files while filtering, $at_top_srcdir/COPYING, texte, latin1, files, filter) TEST_METHOD(texte:latin1 through files while squashing, $at_top_srcdir/COPYING, texte, latin1, files, squash) TEST_METHOD(texte:latin1 through pipe while filtering, $at_top_srcdir/COPYING, texte, latin1, pipe, filter) TEST_METHOD(texte:latin1 through pipe while squashing, $at_top_srcdir/COPYING, texte, latin1, pipe, squash) TEST_METHOD(texte:bangbang through memory while filtering, $at_top_srcdir/COPYING, texte, bangbang, memory, filter) TEST_METHOD(texte:bangbang through memory while squashing, $at_top_srcdir/COPYING, texte, bangbang, memory, squash) TEST_METHOD(texte:bangbang through files while filtering, $at_top_srcdir/COPYING, texte, bangbang, files, filter) TEST_METHOD(texte:bangbang through files while squashing, $at_top_srcdir/COPYING, texte, bangbang, files, squash) TEST_METHOD(texte:bangbang through pipe while filtering, $at_top_srcdir/COPYING, texte, bangbang, pipe, filter) TEST_METHOD(texte:bangbang through pipe while squashing, $at_top_srcdir/COPYING, texte, bangbang, pipe, squash) TEST_METHOD(texte:ibmpc through memory while filtering, $at_top_srcdir/COPYING, texte, ibmpc, memory, filter) TEST_METHOD(texte:ibmpc through memory while squashing, $at_top_srcdir/COPYING, texte, ibmpc, memory, squash) TEST_METHOD(texte:ibmpc through files while filtering, $at_top_srcdir/COPYING, texte, ibmpc, files, filter) TEST_METHOD(texte:ibmpc through files while squashing, $at_top_srcdir/COPYING, texte, ibmpc, files, squash) TEST_METHOD(texte:ibmpc through pipe while filtering, $at_top_srcdir/COPYING, texte, ibmpc, pipe, filter) TEST_METHOD(texte:ibmpc through pipe while squashing, $at_top_srcdir/COPYING, texte, ibmpc, pipe, squash) TEST_METHOD(texte:iconqnx through memory while filtering, $at_top_srcdir/COPYING, texte, iconqnx, memory, filter) TEST_METHOD(texte:iconqnx through memory while squashing, $at_top_srcdir/COPYING, texte, iconqnx, memory, squash) TEST_METHOD(texte:iconqnx through files while filtering, $at_top_srcdir/COPYING, texte, iconqnx, files, filter) TEST_METHOD(texte:iconqnx through files while squashing, $at_top_srcdir/COPYING, texte, iconqnx, files, squash) TEST_METHOD(texte:iconqnx through pipe while filtering, $at_top_srcdir/COPYING, texte, iconqnx, pipe, filter) TEST_METHOD(texte:iconqnx through pipe while squashing, $at_top_srcdir/COPYING, texte, iconqnx, pipe, squash) TEST_METHOD(ascii-bs:ebcdic through memory while filtering, $at_top_srcdir/COPYING, ascii-bs, ebcdic, memory, filter) TEST_METHOD(ascii-bs:ebcdic through memory while squashing, $at_top_srcdir/COPYING, ascii-bs, ebcdic, memory, squash) TEST_METHOD(ascii-bs:ebcdic through files while filtering, $at_top_srcdir/COPYING, ascii-bs, ebcdic, files, filter) TEST_METHOD(ascii-bs:ebcdic through files while squashing, $at_top_srcdir/COPYING, ascii-bs, ebcdic, files, squash) TEST_METHOD(ascii-bs:ebcdic through pipe while filtering, $at_top_srcdir/COPYING, ascii-bs, ebcdic, pipe, filter) TEST_METHOD(ascii-bs:ebcdic through pipe while squashing, $at_top_srcdir/COPYING, ascii-bs, ebcdic, pipe, squash) recode-3.6/tests/names.m40100644000000000000000000005162607224443635014054 0ustar rootroot# -*- shell-script -*- AT_SETUP(list of charsets and surfaces) dnl ----------------------------- cat >expout <<'EOF' /21-Permutation swabytes /4321-Permutation /Base64 64 b64 /CR /CR-LF cl /Decimal-1 d d1 /Decimal-2 d2 /Decimal-4 d4 /Hexadecimal-1 x x1 /Hexadecimal-2 x2 /Hexadecimal-4 x4 /Octal-1 o o1 /Octal-2 o2 /Octal-4 o4 /Quoted-Printable QP quote-printable /test7 /test8 /test15 /test16 :libiconv: : AFRFUL-102-BPI_OCIL bambara bra ewondo fulfulde AFRFUL-103-BPI_OCIL t-bambara t-bra t-ewondo t-fulfulde AFRL1-101-BPI_OCIL t-fra t-francais AFRLIN-104-BPI_OCIL lin lingala sango wolof AFRLIN-105-BPI_OCIL t-lin t-lingala t-sango t-wolof ANSI_X3.4-1968 367/CR-LF ANSI_X3.4-1986 ASCII CP367/CR-LF csASCII IBM367/CR-LF ISO646-US ISO646.1991-IRV iso-ir-6 ISO_646.irv:1991 us US-ASCII Apple-Mac/CR ARMSCII-8 ASCII-BS BS ASMO_449 arabic7 iso-ir-89 ISO_9036 AtariST baltic iso-ir-179 Bang-Bang BIG5 BIG-5 BIG-FIVE BIGFIVE CN-BIG5 csBig5 BIG5HKSCS BS_4730 gb ISO646-GB iso-ir-4 uk BS_viewdata iso-ir-47 CDC-NOS NOS CHAR combined-UCS-2 co CORK T1 count-characters CP866 866 csIBM866 IBM866 CP874 WINDOWS-874 CP932 CP949 UHC CP950 CP1133 IBM-CP1133 CP1250/CR-LF 1250/CR-LF ms-ee windows-1250 CP1251/CR-LF 1251/CR-LF ms-cyrl windows-1251 CP1252/CR-LF 1252/CR-LF ms-ansi windows-1252 CP1253/CR-LF 1253/CR-LF ms-greek windows-1253 CP1254/CR-LF 1254/CR-LF ms-turk windows-1254 CP1255/CR-LF 1255/CR-LF ms-hebr windows-1255 CP1256/CR-LF 1256/CR-LF ms-arab windows-1256 CP1257/CR-LF 1257/CR-LF WinBaltRim windows-1257 CP1258 WINDOWS-1258 CSA_Z243.4-1985-1 ca csa7-1 ISO646-CA iso-ir-121 CSA_Z243.4-1985-2 csa7-2 ISO646-CA2 iso-ir-122 CSA_Z243.4-1985-gr iso-ir-123 CSN_369103 iso-ir-139 koi8l2 KOI-8_L2 CWI cp-hu CWI-2 data DEC-MCS dec DIN_66003 de ISO646-DE iso-ir-21 DS_2089 dk DS2089 ISO646-DK dump-with-names EBCDIC EBCDIC-AT-DE EBCDIC-AT-DE-A EBCDIC-CA-FR EBCDIC-CCC EBCDIC-DK-NO EBCDIC-DK-NO-A EBCDIC-ES EBCDIC-ES-A EBCDIC-ES-S EBCDIC-FI-SE EBCDIC-FI-SE-A EBCDIC-FR EBCDIC-IBM EBCDIC-IS-FRISS friss EBCDIC-IT EBCDIC-PT EBCDIC-UK EBCDIC-US ECMA-cyrillic ECMA-113 ECMA-113:1986 iso-ir-111 ES ISO646-ES iso-ir-17 ES2 ISO646-ES2 iso-ir-85 EUC-CN CN-GB csGB2312 EUCCN EUC_CN GB2312 EUC-JP csEUCPkdFmtJapanese EUCJP EUC_JP Extended_UNIX_Code_Packed_Format_for_Japanese EUC-KR csEUCKR EUCKR EUC_KR EUC-TW csEUCTW EUCTW EUC_TW flat GB18030 GBK CP936 GB_1988-80 cn csISO57GB1988 ISO646-CN iso-ir-57 GB_2312-80 CHINESE csISO58GB231280 GB2312.1980-0 ISO-IR-58 Georgian-Academy Georgian-PS GOST_19768-87 iso-ir-153 ST_SEV_358-88 greek7 iso-ir-88 greek7-old iso-ir-18 greek-ccitt iso-ir-150 hp-roman8 csHPRoman8 r8 roman8 HTML-i18n 2070 RFC2070 HTML_1.1 h1 HTML_2.0 1866 h2 RFC1866 HTML_3.2 h3 HTML_4.0 h h4 HTML HZ HZ-GB-2312 IBM037/CR-LF 037/CR-LF CP037/CR-LF ebcdic-cp-ca ebcdic-cp-nl ebcdic-cp-us ebcdic-cp-wt IBM038/CR-LF 038/CR-LF CP038/CR-LF EBCDIC-INT IBM256/CR-LF 256/CR-LF CP256/CR-LF EBCDIC-INT1 IBM273/CR-LF 273/CR-LF CP273/CR-LF IBM274/CR-LF 274/CR-LF CP274/CR-LF EBCDIC-BE IBM275/CR-LF 275/CR-LF CP275/CR-LF EBCDIC-BR IBM277/CR-LF EBCDIC-CP-DK EBCDIC-CP-NO IBM278/CR-LF 278/CR-LF CP278/CR-LF ebcdic-cp-fi ebcdic-cp-se IBM280/CR-LF 280/CR-LF CP280/CR-LF ebcdic-cp-it IBM281/CR-LF 281/CR-LF CP281/CR-LF EBCDIC-JP-E IBM284/CR-LF 284/CR-LF CP284/CR-LF ebcdic-cp-es IBM285/CR-LF 285/CR-LF CP285/CR-LF ebcdic-cp-gb IBM290/CR-LF 290/CR-LF CP290/CR-LF EBCDIC-JP-kana IBM297/CR-LF 297/CR-LF CP297/CR-LF ebcdic-cp-fr IBM420/CR-LF 420/CR-LF CP420/CR-LF ebcdic-cp-ar1 IBM423/CR-LF 423/CR-LF CP423/CR-LF ebcdic-cp-gr IBM424/CR-LF 424/CR-LF CP424/CR-LF ebcdic-cp-he IBM437/CR-LF 437/CR-LF CP437/CR-LF IBM500/CR-LF 500/CR-LF 500V1 CP500/CR-LF ebcdic-cp-be ebcdic-cp-ch IBM850/CR-LF 850/CR-LF CP850/CR-LF csPC850Multilingual IBM851/CR-LF 851/CR-LF CP851/CR-LF IBM852/CR-LF 852/CR-LF CP852/CR-LF pcl2 pclatin2 IBM855/CR-LF 855/CR-LF CP855/CR-LF IBM857/CR-LF 857/CR-LF CP857/CR-LF IBM860/CR-LF 860/CR-LF CP860/CR-LF IBM861/CR-LF 861/CR-LF CP861/CR-LF cp-is IBM862/CR-LF 862/CR-LF CP862/CR-LF IBM863/CR-LF 863/CR-LF CP863/CR-LF IBM864/CR-LF 864/CR-LF CP864/CR-LF IBM865/CR-LF 865/CR-LF CP865/CR-LF IBM868/CR-LF 868/CR-LF CP868/CR-LF cp-ar IBM869/CR-LF 869/CR-LF CP869/CR-LF cp-gr IBM870/CR-LF 870/CR-LF CP870/CR-LF ebcdic-cp-roece ebcdic-cp-yu IBM871/CR-LF 871/CR-LF CP871/CR-LF ebcdic-cp-is IBM875/CR-LF 875/CR-LF CP875/CR-LF EBCDIC-Greek IBM880/CR-LF 880/CR-LF CP880/CR-LF EBCDIC-Cyrillic IBM891/CR-LF 891/CR-LF CP891/CR-LF IBM903/CR-LF 903/CR-LF CP903/CR-LF IBM904/CR-LF 904/CR-LF CP904/CR-LF IBM905/CR-LF 905/CR-LF CP905/CR-LF ebcdic-cp-tr IBM918/CR-LF 918/CR-LF CP918/CR-LF ebcdic-cp-ar2 IBM1004/CR-LF 1004/CR-LF CP1004/CR-LF os2latin1 IBM1026/CR-LF 1026/CR-LF CP1026/CR-LF IBM1047/CR-LF 1047/CR-LF CP1047/CR-LF IBM-PC/CR-LF dos/CR-LF MSDOS/CR-LF pc/CR-LF Icon-QNX QNX IEC_P27-1 iso-ir-143 INIS iso-ir-49 INIS-8 iso-ir-50 INIS-cyrillic iso-ir-51 INVARIANT iso-ir-170 ISO-2022-CN csISO2022CN ISO2022CN ISO-2022-CN-EXT ISO-2022-JP csISO2022JP ISO2022JP ISO-2022-JP-1 ISO-2022-JP-2 csISO2022JP2 ISO-2022-KR csISO2022KR ISO2022KR ISO-8859-1 819/CR-LF CP819/CR-LF csISOLatin1 IBM819/CR-LF ISO8859-1 iso-ir-100 ISO_8859-1 ISO_8859-1:1987 l1 lat1 latin1 Latin-1 ISO-8859-2 912/CR-LF CP912/CR-LF csISOLatin2 IBM912/CR-LF ISO8859-2 iso-ir-101 ISO_8859-2 ISO_8859-2:1987 l2 latin2 ISO-8859-3 csISOLatin3 ISO8859-3 iso-ir-109 ISO_8859-3 ISO_8859-3:1988 l3 latin3 ISO-8859-4 csISOLatin4 ISO8859-4 iso-ir-110 ISO_8859-4 ISO_8859-4:1988 l4 latin4 ISO-8859-5 csISOLatinCyrillic cyrillic ISO8859-5 iso-ir-144 ISO_8859-5 ISO_8859-5:1988 ISO-8859-6 arabic ASMO-708 csISOLatinArabic ECMA-114 ISO8859-6 iso-ir-127 ISO_8859-6 ISO_8859-6:1987 ISO-8859-7 csISOLatinGreek ECMA-118 ELOT_928 greek greek8 ISO8859-7 iso-ir-126 ISO_8859-7 ISO_8859-7:1987 ISO-8859-8 csISOLatinHebrew hebrew ISO8859-8 iso-ir-138 ISO_8859-8 ISO_8859-8:1988 ISO-8859-9 csISOLatin5 ISO8859-9 iso-ir-148 ISO_8859-9 ISO_8859-9:1989 l5 latin5 ISO-8859-10 csISOLatin6 ISO8859-10 iso-ir-157 ISO_8859-10 ISO_8859-10:1992 ISO_8859-10:1993 L6 latin6 ISO-8859-13 ISO8859-13 iso-baltic ISO-IR-179 iso-ir-179a ISO_8859-13 ISO_8859-13:1998 l7 latin7 ISO-8859-14 ISO8859-14 iso-celtic iso-ir-199 ISO_8859-14 ISO_8859-14:1998 l8 latin8 ISO-8859-15 ISO8859-15 iso-ir-203 ISO_8859-15 ISO_8859-15:1998 l9 latin9 ISO-8859-16 ISO-IR-226 ISO_8859-16 ISO_8859-16:2000 ISO-10646-UCS-2 BMP csUnicode csUnicode11 rune u2 UCS-2 UCS-2BE UNICODE-1-1 UNICODEBIG ISO-10646-UCS-4 10646 csUCS4 ISO_10646 u4 UCS UCS-4 ISO-IR-165 CN-GB-ISOIR165 ISO_646.basic ISO_646.basic:1983 ref ISO_646.irv irv iso-ir-2 ISO_646.irv:1983 ISO_2033-1983 e13b iso-ir-98 ISO_5427 iso-ir-37 ISO_5427-ext iso-ir-54 ISO_5427:1981 ISO_5428 iso-ir-55 ISO_5428:1980 ISO_6937-2-25 iso-ir-152 ISO_8859-supp iso-ir-154 latin1-2-5 ISO_10367-box iso-ir-155 IT ISO646-IT iso-ir-15 JAVA JIS_C6220-1969-jp iso-ir-13 JIS_C6220-1969 katakana x0201-7 JIS_C6220-1969-ro csISO14JISC6220ro ISO646-JP iso-ir-14 jp JIS_C6229-1984-a jp-ocr-a JIS_C6229-1984-b ISO646-JP-OCR-B jp-ocr-b JIS_C6229-1984-b-add iso-ir-93 jp-ocr-b-add JIS_C6229-1984-hand iso-ir-94 jp-ocr-hand JIS_C6229-1984-hand-add iso-ir-95 jp-ocr-hand-add JIS_C6229-1984-kana iso-ir-96 JIS_X0201 csHalfWidthKatakana JIS0201 JISX0201-1976 JISX0201.1976-0 X0201 JIS_X0208 csISO87JISX0208 ISO-IR-87 JIS0208 JISX0208.1983-0 JISX0208.1990-0 JIS_X0208-1983 JIS_X0208-1990 X0208 JIS_X0212 csISO159JISX02121990 ISO-IR-159 JIS0212 JISX0212.1990-0 JIS_X0212-1990 JIS_X0212.1990-0 X0212 JOHAB CP1361 JUS_I.B1.002 ISO646-YU iso-ir-141 js yu JUS_I.B1.003-mac iso-ir-147 macedonian JUS_I.B1.003-serb iso-ir-146 serbian KEYBCS2 Kamenicky KOI8-R csKOI8R KOI8-RU KOI8-U KOI-7 KOI-8 GOST_19768-74 KOI-8_CS2 KSC5636 ISO646-KR KSC_5601 csKSC56011987 ISO-IR-149 KOREAN KSC5601.1987-0 KSX1001:1992 KS_C_5601-1987 KS_C_5601-1989 LaTeX ltex TeX latin-greek iso-ir-19 Latin-greek-1 iso-ir-27 mac-is MacArabic MacCentralEurope MacCroatian MacCyrillic MacGreek MacHebrew MacIceland macintosh/CR csMacintosh mac/CR MacRoman macintosh_ce/CR macce/CR MacRomania MacThai MacTurkish MacUkraine MSZ_7795.3 hu ISO646-HU iso-ir-86 Mule MuleLao-1 NATS-DANO iso-ir-9-1 NATS-DANO-ADD iso-ir-9-2 NATS-SEFI iso-ir-8-1 NATS-SEFI-ADD iso-ir-8-2 NC_NC00-10 cuba ISO646-CU iso-ir-151 NC_NC00-10:81 NeXTSTEP next NF_Z_62-010 fr ISO646-FR iso-ir-69 NF_Z_62-010_(1973) ISO646-FR1 iso-ir-25 NS_4551-1 ISO646-NO iso-ir-60 no NS_4551-2 ISO646-NO2 iso-ir-61 no2 PT ISO646-PT iso-ir-16 PT2 ISO646-PT2 iso-ir-84 RFC1345 1345 mnemonic sami iso-ir-158 lap latin-lap SEN_850200_B FI ISO646-FI ISO646-SE iso-ir-10 se SS636127 SEN_850200_C ISO646-SE2 iso-ir-11 se2 SJIS csShiftJIS MS_KANJI SHIFT-JIS SHIFT_JIS T.61-7bit iso-ir-102 TCVN TCVN5712-1 TCVN5712-1:1993 TCVN-5712 Texinfo texi ti Texte txte TIS-620 ISO-IR-166 TIS620 TIS620-0 TIS620.2529-1 TIS620.2533-0 TIS620.2533-1 tree UCS-2-INTERNAL UCS-2-SWAPPED UCS-2LE UNICODELITTLE UCS-4-INTERNAL UCS-4-SWAPPED UCS-4BE UCS-4LE UNICODE-1-1-UTF-7 csUnicode11UTF7 TF-7 u7 UTF-7 UTF-8 FSS_UTF TF-8 u8 UTF-2 UTF-FSS UTF-16 TF-16 u6 Unicode UTF-16BE UTF-16LE VIQR VISCII csVISCII VISCII1.1-1 VNI VPS WCHAR_T XML-standalone h0 EOF AT_CHECK(recode -l, 0, expout) AT_CLEANUP() AT_SETUP(the --find-subsets option) dnl ------------------------- changequote(, )dnl cat >expout <<'EOF' [ 0] ANSI_X3.4-1968 == IBM891 [ 0] ANSI_X3.4-1968 == IBM903 [ 0] IBM891 == ANSI_X3.4-1968 [ 0] IBM891 == IBM903 [ 0] IBM903 == ANSI_X3.4-1968 [ 0] IBM903 == IBM891 [ 3] ANSI_X3.4-1968 < IBM904 [ 3] IBM891 < IBM904 [ 3] IBM903 < IBM904 [ 3] JIS_C6229-1984-hand-add < JIS_C6229-1984-b-add [ 4] IBM1004 < CP1252 [ 6] INVARIANT < T.61-7bit [ 6] T.61-7bit < ISO_646.irv [ 10] INVARIANT < JIS_C6229-1984-b [ 12] INVARIANT < ANSI_X3.4-1968 [ 12] INVARIANT < BS_4730 [ 12] INVARIANT < CSA_Z243.4-1985-1 [ 12] INVARIANT < CSA_Z243.4-1985-2 [ 12] INVARIANT < DIN_66003 [ 12] INVARIANT < DS_2089 [ 12] INVARIANT < ES [ 12] INVARIANT < ES2 [ 12] INVARIANT < GB_1988-80 [ 12] INVARIANT < IBM891 [ 12] INVARIANT < IBM903 [ 12] INVARIANT < ISO_646.irv [ 12] INVARIANT < IT [ 12] INVARIANT < JIS_C6220-1969-ro [ 12] INVARIANT < JUS_I.B1.002 [ 12] INVARIANT < KSC5636 [ 12] INVARIANT < MSZ_7795.3 [ 12] INVARIANT < NATS-SEFI [ 12] INVARIANT < NC_NC00-10 [ 12] INVARIANT < NF_Z_62-010 [ 12] INVARIANT < NF_Z_62-010_(1973) [ 12] INVARIANT < NS_4551-1 [ 12] INVARIANT < NS_4551-2 [ 12] INVARIANT < PT [ 12] INVARIANT < PT2 [ 12] INVARIANT < SEN_850200_B [ 12] INVARIANT < SEN_850200_C [ 12] JIS_C6229-1984-kana < JIS_C6220-1969-jp [ 13] INIS < ANSI_X3.4-1968 [ 13] INIS < BS_4730 [ 13] INIS < IBM891 [ 13] INIS < IBM903 [ 13] INIS < JIS_C6220-1969-ro [ 13] INIS < KSC5636 [ 15] INVARIANT < IBM904 [ 16] INIS < IBM904 [ 28] GOST_19768-87 < ISO-8859-5 [ 28] JIS_C6229-1984-hand < JIS_C6229-1984-b [ 33] ISO_646.basic < INVARIANT [ 39] ISO_646.basic < T.61-7bit [ 43] ISO_646.basic < JIS_C6229-1984-b [ 45] ISO_646.basic < ANSI_X3.4-1968 [ 45] ISO_646.basic < BS_4730 [ 45] ISO_646.basic < CSA_Z243.4-1985-1 [ 45] ISO_646.basic < CSA_Z243.4-1985-2 [ 45] ISO_646.basic < DIN_66003 [ 45] ISO_646.basic < DS_2089 [ 45] ISO_646.basic < ES [ 45] ISO_646.basic < ES2 [ 45] ISO_646.basic < GB_1988-80 [ 45] ISO_646.basic < IBM891 [ 45] ISO_646.basic < IBM903 [ 45] ISO_646.basic < ISO_646.irv [ 45] ISO_646.basic < IT [ 45] ISO_646.basic < JIS_C6220-1969-ro [ 45] ISO_646.basic < JUS_I.B1.002 [ 45] ISO_646.basic < KSC5636 [ 45] ISO_646.basic < MSZ_7795.3 [ 45] ISO_646.basic < NATS-SEFI [ 45] ISO_646.basic < NC_NC00-10 [ 45] ISO_646.basic < NF_Z_62-010 [ 45] ISO_646.basic < NF_Z_62-010_(1973) [ 45] ISO_646.basic < NS_4551-1 [ 45] ISO_646.basic < NS_4551-2 [ 45] ISO_646.basic < PT [ 45] ISO_646.basic < PT2 [ 45] ISO_646.basic < SEN_850200_B [ 45] ISO_646.basic < SEN_850200_C [ 48] ISO_646.basic < IBM904 [ 57] EBCDIC-US < IBM424 [ 61] ANSI_X3.4-1968 < ISO_10367-box [ 61] IBM891 < ISO_10367-box [ 61] IBM903 < ISO_10367-box [ 63] ANSI_X3.4-1968 < KOI-8 [ 63] IBM891 < KOI-8 [ 63] IBM903 < KOI-8 [ 64] T.61-7bit < ISO_6937-2-25 [ 65] KOI-8 < ECMA-cyrillic [ 65] KOI-8 < KOI8-R [ 65] KOI-8 < KOI8-RU [ 66] ANSI_X3.4-1968 < sami [ 66] IBM891 < sami [ 66] IBM903 < sami [ 70] INVARIANT < ISO_6937-2-25 [ 73] INVARIANT < ISO_10367-box [ 74] INIS < ISO_10367-box [ 75] INVARIANT < KOI-8 [ 76] INIS < KOI-8 [ 78] ANSI_X3.4-1968 < CP1255 [ 78] IBM891 < CP1255 [ 78] IBM903 < CP1255 [ 78] INVARIANT < sami [ 79] INIS < sami [ 83] ANSI_X3.4-1968 < ISO-8859-6 [ 83] IBM891 < ISO-8859-6 [ 83] IBM903 < ISO-8859-6 [ 90] ANSI_X3.4-1968 < ISO-8859-8 [ 90] IBM891 < ISO-8859-8 [ 90] IBM903 < ISO-8859-8 [ 90] INVARIANT < CP1255 [ 91] INIS < CP1255 [ 95] INVARIANT < ISO-8859-6 [ 95] JIS_C6220-1969-ro < JIS_X0201 [ 96] EBCDIC-AT-DE < IBM273 [ 96] EBCDIC-DK-NO < IBM277 [ 96] EBCDIC-IT < IBM280 [ 96] EBCDIC-UK < IBM285 [ 96] EBCDIC-US < IBM037 [ 96] IBM038 < IBM256 [ 96] IBM038 < IBM500 [ 96] INIS < ISO-8859-6 [100] ANSI_X3.4-1968 < GOST_19768-87 [100] IBM891 < GOST_19768-87 [100] IBM903 < GOST_19768-87 [102] INVARIANT < ISO-8859-8 [103] ANSI_X3.4-1968 < IBM868 [103] IBM891 < IBM868 [103] IBM903 < IBM868 [103] INIS < ISO-8859-8 [103] ISO_646.basic < ISO_6937-2-25 [106] ISO_646.basic < ISO_10367-box [107] INVARIANT < JIS_X0201 [108] INIS < JIS_X0201 [108] ISO_646.basic < KOI-8 [109] ANSI_X3.4-1968 < CP1257 [109] IBM891 < CP1257 [109] IBM903 < CP1257 [111] ANSI_X3.4-1968 < CP1253 [111] IBM891 < CP1253 [111] IBM903 < CP1253 [111] ISO_646.basic < sami [112] ANSI_X3.4-1968 < KOI8-U [112] IBM891 < KOI8-U [112] IBM903 < KOI8-U [112] INVARIANT < GOST_19768-87 [113] ANSI_X3.4-1968 < DEC-MCS [113] IBM891 < DEC-MCS [113] IBM903 < DEC-MCS [113] INIS < GOST_19768-87 [115] INVARIANT < IBM868 [116] INIS < IBM868 [119] ANSI_X3.4-1968 < IBM1004 [119] ANSI_X3.4-1968 < IBM869 [119] IBM891 < IBM1004 [119] IBM891 < IBM869 [119] IBM903 < IBM1004 [119] IBM903 < IBM869 [121] ANSI_X3.4-1968 < CP1254 [121] ANSI_X3.4-1968 < ISO-8859-3 [121] ANSI_X3.4-1968 < NeXTSTEP [121] IBM891 < CP1254 [121] IBM891 < ISO-8859-3 [121] IBM891 < NeXTSTEP [121] IBM903 < CP1254 [121] IBM903 < ISO-8859-3 [121] IBM903 < NeXTSTEP [121] INVARIANT < CP1257 [122] ANSI_X3.4-1968 < ISO-8859-7 [122] ANSI_X3.4-1968 < ISO_8859-supp [122] IBM891 < ISO-8859-7 [122] IBM891 < ISO_8859-supp [122] IBM903 < ISO-8859-7 [122] IBM903 < ISO_8859-supp [122] INIS < CP1257 [123] ANSI_X3.4-1968 < CP1250 [123] ANSI_X3.4-1968 < CP1252 [123] ANSI_X3.4-1968 < IBM864 [123] IBM891 < CP1250 [123] IBM891 < CP1252 [123] IBM891 < IBM864 [123] IBM903 < CP1250 [123] IBM903 < CP1252 [123] IBM903 < IBM864 [123] INVARIANT < CP1253 [123] ISO_646.basic < CP1255 [124] INIS < CP1253 [124] INVARIANT < KOI8-U [125] ANSI_X3.4-1968 < IBM857 [125] IBM891 < IBM857 [125] IBM903 < IBM857 [125] INIS < KOI8-U [125] INVARIANT < DEC-MCS [126] ANSI_X3.4-1968 < CP1256 [126] ANSI_X3.4-1968 < mac-is [126] ANSI_X3.4-1968 < macintosh [126] IBM891 < CP1256 [126] IBM891 < mac-is [126] IBM891 < macintosh [126] IBM903 < CP1256 [126] IBM903 < mac-is [126] IBM903 < macintosh [126] INIS < DEC-MCS [127] ANSI_X3.4-1968 < CP1251 [127] ANSI_X3.4-1968 < IBM851 [127] ANSI_X3.4-1968 < IBM855 [127] ANSI_X3.4-1968 < IBM861 [127] ANSI_X3.4-1968 < IBM862 [127] ANSI_X3.4-1968 < hp-roman8 [127] IBM891 < CP1251 [127] IBM891 < IBM851 [127] IBM891 < IBM855 [127] IBM891 < IBM861 [127] IBM891 < IBM862 [127] IBM891 < hp-roman8 [127] IBM903 < CP1251 [127] IBM903 < IBM851 [127] IBM903 < IBM855 [127] IBM903 < IBM861 [127] IBM903 < IBM862 [127] IBM903 < hp-roman8 [128] ANSI_X3.4-1968 < AtariST [128] ANSI_X3.4-1968 < CSA_Z243.4-1985-gr [128] ANSI_X3.4-1968 < CWI [128] ANSI_X3.4-1968 < ECMA-cyrillic [128] ANSI_X3.4-1968 < IBM437 [128] ANSI_X3.4-1968 < IBM850 [128] ANSI_X3.4-1968 < IBM852 [128] ANSI_X3.4-1968 < IBM860 [128] ANSI_X3.4-1968 < IBM863 [128] ANSI_X3.4-1968 < IBM865 [128] ANSI_X3.4-1968 < IEC_P27-1 [128] ANSI_X3.4-1968 < ISO-8859-1 [128] ANSI_X3.4-1968 < ISO-8859-10 [128] ANSI_X3.4-1968 < ISO-8859-13 [128] ANSI_X3.4-1968 < ISO-8859-14 [128] ANSI_X3.4-1968 < ISO-8859-15 [128] ANSI_X3.4-1968 < ISO-8859-2 [128] ANSI_X3.4-1968 < ISO-8859-4 [128] ANSI_X3.4-1968 < ISO-8859-5 [128] ANSI_X3.4-1968 < ISO-8859-9 [128] ANSI_X3.4-1968 < KOI8-R [128] ANSI_X3.4-1968 < KOI8-RU [128] ANSI_X3.4-1968 < baltic [128] ANSI_X3.4-1968 < macintosh_ce [128] IBM891 < AtariST [128] IBM891 < CSA_Z243.4-1985-gr [128] IBM891 < CWI [128] IBM891 < ECMA-cyrillic [128] IBM891 < IBM437 [128] IBM891 < IBM850 [128] IBM891 < IBM852 [128] IBM891 < IBM860 [128] IBM891 < IBM863 [128] IBM891 < IBM865 [128] IBM891 < IEC_P27-1 [128] IBM891 < ISO-8859-1 [128] IBM891 < ISO-8859-10 [128] IBM891 < ISO-8859-13 [128] IBM891 < ISO-8859-14 [128] IBM891 < ISO-8859-15 [128] IBM891 < ISO-8859-2 [128] IBM891 < ISO-8859-4 [128] IBM891 < ISO-8859-5 [128] IBM891 < ISO-8859-9 [128] IBM891 < KOI8-R [128] IBM891 < KOI8-RU [128] IBM891 < baltic [128] IBM891 < macintosh_ce [128] IBM903 < AtariST [128] IBM903 < CSA_Z243.4-1985-gr [128] IBM903 < CWI [128] IBM903 < ECMA-cyrillic [128] IBM903 < IBM437 [128] IBM903 < IBM850 [128] IBM903 < IBM852 [128] IBM903 < IBM860 [128] IBM903 < IBM863 [128] IBM903 < IBM865 [128] IBM903 < IEC_P27-1 [128] IBM903 < ISO-8859-1 [128] IBM903 < ISO-8859-10 [128] IBM903 < ISO-8859-13 [128] IBM903 < ISO-8859-14 [128] IBM903 < ISO-8859-15 [128] IBM903 < ISO-8859-2 [128] IBM903 < ISO-8859-4 [128] IBM903 < ISO-8859-5 [128] IBM903 < ISO-8859-9 [128] IBM903 < KOI8-R [128] IBM903 < KOI8-RU [128] IBM903 < baltic [128] IBM903 < macintosh_ce [128] ISO_646.basic < ISO-8859-6 [131] INVARIANT < IBM1004 [131] INVARIANT < IBM869 [132] INIS < IBM1004 [132] INIS < IBM869 [133] INVARIANT < CP1254 [133] INVARIANT < ISO-8859-3 [133] INVARIANT < NeXTSTEP [134] INIS < CP1254 [134] INIS < ISO-8859-3 [134] INIS < NeXTSTEP [134] INVARIANT < ISO-8859-7 [134] INVARIANT < ISO_8859-supp [134] T.61-7bit < CSN_369103 [135] INIS < ISO-8859-7 [135] INIS < ISO_8859-supp [135] INVARIANT < CP1250 [135] INVARIANT < CP1252 [135] INVARIANT < IBM864 [135] ISO_646.basic < ISO-8859-8 [136] INIS < CP1250 [136] INIS < CP1252 [136] INIS < IBM864 [137] INVARIANT < IBM857 [138] INIS < IBM857 [138] INVARIANT < CP1256 [138] INVARIANT < mac-is [138] INVARIANT < macintosh [139] INIS < CP1256 [139] INIS < mac-is [139] INIS < macintosh [139] INVARIANT < CP1251 [139] INVARIANT < IBM851 [139] INVARIANT < IBM855 [139] INVARIANT < IBM861 [139] INVARIANT < IBM862 [139] INVARIANT < hp-roman8 [140] INIS < CP1251 [140] INIS < IBM851 [140] INIS < IBM855 [140] INIS < IBM861 [140] INIS < IBM862 [140] INIS < hp-roman8 [140] INVARIANT < AtariST [140] INVARIANT < CSA_Z243.4-1985-gr [140] INVARIANT < CSN_369103 [140] INVARIANT < CWI [140] INVARIANT < ECMA-cyrillic [140] INVARIANT < IBM437 [140] INVARIANT < IBM850 [140] INVARIANT < IBM852 [140] INVARIANT < IBM860 [140] INVARIANT < IBM863 [140] INVARIANT < IBM865 [140] INVARIANT < IEC_P27-1 [140] INVARIANT < ISO-8859-1 [140] INVARIANT < ISO-8859-10 [140] INVARIANT < ISO-8859-13 [140] INVARIANT < ISO-8859-14 [140] INVARIANT < ISO-8859-15 [140] INVARIANT < ISO-8859-2 [140] INVARIANT < ISO-8859-4 [140] INVARIANT < ISO-8859-5 [140] INVARIANT < ISO-8859-9 [140] INVARIANT < KOI8-R [140] INVARIANT < KOI8-RU [140] INVARIANT < baltic [140] INVARIANT < macintosh_ce [140] ISO_646.basic < JIS_X0201 [141] INIS < AtariST [141] INIS < CSA_Z243.4-1985-gr [141] INIS < CWI [141] INIS < ECMA-cyrillic [141] INIS < IBM437 [141] INIS < IBM850 [141] INIS < IBM852 [141] INIS < IBM860 [141] INIS < IBM863 [141] INIS < IBM865 [141] INIS < IEC_P27-1 [141] INIS < ISO-8859-1 [141] INIS < ISO-8859-10 [141] INIS < ISO-8859-13 [141] INIS < ISO-8859-14 [141] INIS < ISO-8859-15 [141] INIS < ISO-8859-2 [141] INIS < ISO-8859-4 [141] INIS < ISO-8859-5 [141] INIS < ISO-8859-9 [141] INIS < KOI8-R [141] INIS < KOI8-RU [141] INIS < baltic [141] INIS < macintosh_ce [145] ISO_646.basic < GOST_19768-87 [148] ISO_646.basic < IBM868 [154] ISO_646.basic < CP1257 [156] ISO_646.basic < CP1253 [157] ISO_646.basic < KOI8-U [158] ISO_646.basic < DEC-MCS [164] ISO_646.basic < IBM1004 [164] ISO_646.basic < IBM869 [164] ISO_646.basic < VPS [166] ISO_646.basic < CP1254 [166] ISO_646.basic < ISO-8859-3 [166] ISO_646.basic < NeXTSTEP [167] ISO_646.basic < ISO-8859-7 [167] ISO_646.basic < ISO_8859-supp [167] ISO_646.basic < TCVN [168] ISO_646.basic < CP1250 [168] ISO_646.basic < CP1252 [168] ISO_646.basic < IBM864 [170] ISO_646.basic < IBM857 [171] ISO_646.basic < CP1256 [171] ISO_646.basic < mac-is [171] ISO_646.basic < macintosh [172] ISO_646.basic < CP1251 [172] ISO_646.basic < IBM851 [172] ISO_646.basic < IBM855 [172] ISO_646.basic < IBM861 [172] ISO_646.basic < IBM862 [172] ISO_646.basic < hp-roman8 [173] ISO_646.basic < AtariST [173] ISO_646.basic < CSA_Z243.4-1985-gr [173] ISO_646.basic < CSN_369103 [173] ISO_646.basic < CWI [173] ISO_646.basic < ECMA-cyrillic [173] ISO_646.basic < IBM437 [173] ISO_646.basic < IBM850 [173] ISO_646.basic < IBM852 [173] ISO_646.basic < IBM860 [173] ISO_646.basic < IBM863 [173] ISO_646.basic < IBM865 [173] ISO_646.basic < IEC_P27-1 [173] ISO_646.basic < ISO-8859-1 [173] ISO_646.basic < ISO-8859-10 [173] ISO_646.basic < ISO-8859-13 [173] ISO_646.basic < ISO-8859-14 [173] ISO_646.basic < ISO-8859-15 [173] ISO_646.basic < ISO-8859-2 [173] ISO_646.basic < ISO-8859-4 [173] ISO_646.basic < ISO-8859-5 [173] ISO_646.basic < ISO-8859-9 [173] ISO_646.basic < KOI8-R [173] ISO_646.basic < KOI8-RU [173] ISO_646.basic < VISCII [173] ISO_646.basic < baltic [173] ISO_646.basic < macintosh_ce EOF changequote([, ])dnl AT_CHECK(recode -T | sort, 0, expout) AT_CLEANUP() recode-3.6/tests/quoted.m40100644000000000000000000000277006616626254014252 0ustar rootroot# -*- shell-script -*- AT_SETUP(block of lines from Quoted Printable) dnl ------------------------------------ AT_CHECK( [recode qp..x1 < $at_srcdir/quoted-data ], 0, [0x44, 0x65, 0x61, 0x72, 0x20, 0xDE, 0x6F, 0x72, 0x76, 0x61, 0x72, 0x64, 0xF0, 0x75, 0x72, 0x2C, 0x0A, 0x0A, 0xAB, 0x20, 0x4F, 0xF9, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x72, 0xE9, 0x73, 0x69, 0x64, 0x65, 0x2C, 0x20, 0xE0, 0x20, 0x4E, 0xEE, 0x6D, 0x65, 0x73, 0x20, 0x6F, 0x75, 0x20, 0x6D, 0xEA, 0x6D, 0x65, 0x20, 0x43, 0x61, 0x70, 0x68, 0x61, 0x72, 0x6E, 0x61, 0xFC, 0x6D, 0x2C, 0x20, 0x74, 0x6F, 0x75, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6E, 0xE7, 0x61, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x63, 0x72, 0x69, 0x74, 0x0A, 0x61, 0x75, 0x20, 0x72, 0xF4, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x79, 0x65, 0x72, 0x61, 0x20, 0x73, 0x6F, 0x6E, 0x20, 0x64, 0xFB, 0x20, 0x64, 0xE8, 0x73, 0x20, 0x61, 0x76, 0x61, 0x6E, 0x74, 0x20, 0x4E, 0x6F, 0xEB, 0x6C, 0x2C, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x73, 0x6F, 0x69, 0x74, 0x20, 0x6E, 0x61, 0xEF, 0x66, 0x20, 0x6F, 0x75, 0x20, 0x72, 0xE2, 0x6C, 0x65, 0x75, 0x72, 0x2E, 0x20, 0xBB, 0x0A, 0x49, 0x6E, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65 ]) AT_CLEANUP() AT_SETUP(block of lines from Quoted Printable and back) dnl --------------------------------------------- AT_CHECK( [set -e cp $at_srcdir/quoted-data output chmod +w output recode qp..x1 output recode x1..qp output diff $at_srcdir/quoted-data output set +e ]) AT_CLEANUP(output) recode-3.6/tests/testdump.m40100644000000000000000000000303706644450207014605 0ustar rootroot# -*- shell-script -*- AT_SETUP(testing and counting) dnl -------------------- AT_CHECK([recode test7..x,us..count < /dev/null], 0, [ 11 000A LF 117 0020 SP 127 002C , 152 0030 0 24 0031 1 24 0032 2 24 0033 3 24 0034 4 24 0035 5 24 0036 6 24 0037 7 8 0038 8 8 0039 9 8 0041 A 8 0042 B 8 0043 C 8 0044 D 8 0045 E 8 0046 F 128 0078 x ]) AT_CHECK([recode test8..x,us..count < /dev/null], 0, [ 22 000A LF 234 0020 SP 255 002C , 288 0030 0 32 0031 1 32 0032 2 32 0033 3 32 0034 4 32 0035 5 32 0036 6 32 0037 7 32 0038 8 32 0039 9 32 0041 A 32 0042 B 32 0043 C 32 0044 D 32 0045 E 32 0046 F 256 0078 x ]) AT_CHECK([recode test15..x2,us..count < /dev/null], 0, [ 8064 000A LF 56445 0020 SP 64508 002C , 80765 0030 0 16256 0031 1 16256 0032 2 16256 0033 3 16256 0034 4 16256 0035 5 16256 0036 6 16256 0037 7 16256 0038 8 16256 0039 9 16256 0041 A 16256 0042 B 16000 0043 C 14975 0044 D 15999 0045 E 15990 0046 F 64509 0078 x ]) AT_CHECK([recode test16..x2,us..count < /dev/null], 0, [ 8192 000A LF 57344 0020 SP 65535 002C , 81920 0030 0 16384 0031 1 16384 0032 2 16384 0033 3 16384 0034 4 16384 0035 5 16384 0036 6 16384 0037 7 16384 0038 8 16384 0039 9 16384 0041 A 16384 0042 B 16384 0043 C 16384 0044 D 16384 0045 E 16384 0046 F 65536 0078 x ]) AT_CLEANUP() recode-3.6/tests/utf7.m40100644000000000000000000000151707024755401013623 0ustar rootroot# -*- shell-script -*- AT_SETUP(single lines from UTF-7) dnl ----------------------- AT_CHECK( [set -e while read line; do echo "$line" | recode ../,u7..u6/x2 done < $at_srcdir/utf7-data set +e ], , [0xFEFF, 0x000A 0xFEFF, 0x0041, 0x2262, 0x0391, 0x002E, 0x000A 0xFEFF, 0x0048, 0x0069, 0x0020, 0x004D, 0x006F, 0x006D, 0x0020, 0x263A, 0x0021, 0x000A 0xFEFF, 0x65E5, 0x672C, 0x8A9E, 0x000A 0xFEFF, 0x0049, 0x0074, 0x0065, 0x006D, 0x0020, 0x0033, 0x0020, 0x0069, 0x0073, 0x0020, 0x00A3, 0x0031, 0x002E, 0x000A ]) AT_CLEANUP() AT_SETUP(single lines from UTF-7 and back) dnl -------------------------------- AT_CHECK( [set -e while read line; do echo "$line" > input echo "$line" > output recode u7..u6/x2 output recode u6/x2..u7 output diff input output done < $at_srcdir/utf7-data set +e ]) AT_CLEANUP(input output) recode-3.6/tests/utf8.m40100644000000000000000000000311206701221100013576 0ustar rootroot# -*- shell-script -*- AT_SETUP(block of lines to UTF-8) dnl ----------------------- AT_CHECK( [recode l1/qp..u8/x < $at_srcdir/quoted-data ], 0, [0x44, 0x65, 0x61, 0x72, 0x20, 0xC3, 0x9E, 0x6F, 0x72, 0x76, 0x61, 0x72, 0x64, 0xC3, 0xB0, 0x75, 0x72, 0x2C, 0x0A, 0x0A, 0xC2, 0xAB, 0x20, 0x4F, 0xC3, 0xB9, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x72, 0xC3, 0xA9, 0x73, 0x69, 0x64, 0x65, 0x2C, 0x20, 0xC3, 0xA0, 0x20, 0x4E, 0xC3, 0xAE, 0x6D, 0x65, 0x73, 0x20, 0x6F, 0x75, 0x20, 0x6D, 0xC3, 0xAA, 0x6D, 0x65, 0x20, 0x43, 0x61, 0x70, 0x68, 0x61, 0x72, 0x6E, 0x61, 0xC3, 0xBC, 0x6D, 0x2C, 0x20, 0x74, 0x6F, 0x75, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6E, 0xC3, 0xA7, 0x61, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x63, 0x72, 0x69, 0x74, 0x0A, 0x61, 0x75, 0x20, 0x72, 0xC3, 0xB4, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x79, 0x65, 0x72, 0x61, 0x20, 0x73, 0x6F, 0x6E, 0x20, 0x64, 0xC3, 0xBB, 0x20, 0x64, 0xC3, 0xA8, 0x73, 0x20, 0x61, 0x76, 0x61, 0x6E, 0x74, 0x20, 0x4E, 0x6F, 0xC3, 0xAB, 0x6C, 0x2C, 0x20, 0x71, 0x75, 0x27, 0x69, 0x6C, 0x20, 0x73, 0x6F, 0x69, 0x74, 0x20, 0x6E, 0x61, 0xC3, 0xAF, 0x66, 0x20, 0x6F, 0x75, 0x20, 0x72, 0xC3, 0xA2, 0x6C, 0x65, 0x75, 0x72, 0x2E, 0x20, 0xC2, 0xBB, 0x0A, 0x49, 0x6E, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65 ]) AT_CLEANUP() AT_SETUP(block of lines to UTF-8 and back) dnl -------------------------------- AT_CHECK( [set -e cp $at_srcdir/quoted-data input cp $at_srcdir/quoted-data output chmod +w output recode l1/qp..u8 output recode u8..l1/qp output diff input output set +e ]) AT_CLEANUP(input output) recode-3.6/tests/bigauto.py0100755000000000000000000001563207101674264014511 0ustar rootroot#!/usr/bin/env python # Copyright © 1997, 1999, 2000 Progiciels Bourbeau-Pinard inc. # François Pinard , 1997. """\ Produce statistics from the results of the bigauto check. Usage: bigauto [RECODE_OPTION]... [CHARSET_OPTION]... This script makes a simple analysis for the connectivity of the various charsets and produce a report on standard output. The reports include statistics about the number of steps before and after optimisation. The option `-hNAME' would affect the resulting output, because there are more merging rules when this option is in effect. Other options affect the result: `-d', `-g' and, notably, `-s'. All non-option arguments are interpreted as charset names. If any is given, the study is limited to those recodings having any of the given charsets both as a starting and ending points. If there is no such non-option argument, all possible possible recodings are considered. """ import os, string, sys def main(*arguments): recode_options = [] charset_options = [] for argument in arguments: if arguments[0] == '-': recode_options.append(argument) else: charset_options.append(argument) work_name = '/tmp/bigauto-data' if os.path.exists(work_name): os.remove(work_name) create_data(work_name, recode_options, charset_options) report = Report() report.digest_data(open(work_name).readline) report.produce_report(sys.stdout.write) os.remove(work_name) def create_data(name, recode_options, charset_options): # Get the list of charsets. if charset_options: charsets = charset_options else: charsets = [] for line in os.popen('recode -l').readlines(): charset = string.split(line)[0] if charset[0] in ':/': continue charsets.append(charset) # Do the work, calling a subshell once per `before' value. recode_call = 'recode >%s 2>&1' % name, 'w').write write('export LANGUAGE; LANGUAGE=C\n' 'export LANG; LANG=C\n' 'export LC_ALL; LC_ALL=C\n') for after in charsets: if after != before: write("%s '%s..%s'\n" % (recode_call, before, after)) class Report: def __init__(self): self.recode_calls = 0 self.original_count = {} self.original_example = {} self.original_total = 0 self.shrunk_count = {} self.shrunk_example = {} self.shrunk_total = 0 def digest_data(self, readline): lensep = len(os.linesep) line = readline() while line: type, request = string.split(line[:-lensep], ':', 1) if type == 'Request': steps = self.get_steps(request) self.count_original_request(steps, request) line = readline() if line: if len(string.split(line[:-lensep], ':', 1)) != 2: print '*', line, type, shrunk_to = string.split(line[:-lensep], ':', 1) if type == 'Shrunk to': steps = self.get_steps(shrunk_to) self.count_shrunk_request(steps, shrunk_to) line = readline() else: self.count_shrunk_request(steps, request) else: self.count_shrunk_request(steps, request) else: sys.stderr.write('Unrecognized line: ' + line) line = readline() def get_steps(self, text): if text == '*mere copy*': return 0 if text[-1] == '/': text = text[:-1] text = string.replace(text, '/..', '..') count = 0 for fragment in string.split(text, '..'): count = count + len(string.split(fragment, '/')) return count - 1 def count_original_request(self, steps, text): self.recode_calls = self.recode_calls + 1 if self.original_count.has_key(steps): self.original_count[steps] = self.original_count[steps] + 1 else: self.original_count[steps] = 1 self.original_example[steps] = string.strip(text) if self.original_total == 0: self.original_minimum = self.original_maximum = steps else: if steps < self.original_minimum: self.original_minimum = steps if steps > self.original_maximum: self.original_maximum = steps self.original_total = self.original_total + steps def count_shrunk_request(self, steps, text): if self.shrunk_count.has_key(steps): self.shrunk_count[steps] = self.shrunk_count[steps] + 1 else: self.shrunk_count[steps] = 1 self.shrunk_example[steps] = string.strip(text) if self.shrunk_total == 0: self.shrunk_minimum = self.shrunk_maximum = steps else: if steps < self.shrunk_minimum: self.shrunk_minimum = steps if steps > self.shrunk_maximum: self.shrunk_maximum = steps self.shrunk_total = self.shrunk_total + steps def produce_report(self, write): if self.recode_calls == 0: sys.stderr.write("No call to report\n") return write("\n" "Optimisation Original Shrunk\n" " .-------------------\n" "Minimum | %2d %2d\n" "Maximum | %2d %2d\n" "Average | %4.1f %4.1f\n" % (self.original_minimum, self.shrunk_minimum, self.original_maximum, self.shrunk_maximum, float(self.original_total) / float(self.recode_calls), float(self.shrunk_total) / float(self.recode_calls))) write("\n" "Histogram for original requests\n") for steps in range(self.original_minimum, self.original_maximum+1): if self.original_count.has_key(steps): write("%5d steps, %5d times %s\n" % (steps, self.original_count[steps], self.original_example[steps])) write("\n" "Histogram for shrunk requests\n") for steps in range(self.shrunk_minimum, self.shrunk_maximum+1): if self.shrunk_count.has_key(steps): write("%5d steps, %5d times %s\n" % (steps, self.shrunk_count[steps], self.shrunk_example[steps])) if __name__ == '__main__': apply(main, tuple(sys.argv[1:])) recode-3.6/tests/dumps-data0100644000000000000000000000034106610703041014441 0ustar rootroot a ab abc abcd abcdefghi abcdefghijklmnopqrs abcdefghijklmnopqrstuvwzyzABC abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLM abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVW abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456 recode-3.6/tests/quoted-data0100644000000000000000000000032606610722766014634 0ustar rootrootDear =DEorvard=F0ur, =AB O=F9 qu'il r=E9side, =E0 N=EEmes ou m=EAme Capharna=FCm, tout Fran=E7ai= s inscrit au r=F4le payera son d=FB d=E8s avant No=EBl, qu'il soit na=EFf ou r=E2leur= . =BB Incomplete last line= recode-3.6/tests/utf7-data0100644000000000000000000000006406610721256014210 0ustar rootroot A+ImIDkQ. Hi Mom +Jjo! +ZeVnLIqe Item 3 is +AKM-1. recode-3.6/contrib/0040755000000000000000000000000007233074170012770 5ustar rootrootrecode-3.6/contrib/Makefile.in0100644000000000000000000001311107233074170015027 0ustar rootroot# Makefile.in generated automatically by automake 1.4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 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. # Makefile for `recode' related contributions. # Copyright © 1997, 1998, 2000 Free Software Foundation, Inc. # François Pinard # This program 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. # This program 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 this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ ALL_LINGUAS = @ALL_LINGUAS@ ALL_MOFILES = @ALL_MOFILES@ ALL_POFILES = @ALL_POFILES@ AS = @AS@ AT_TESTPATH = @AT_TESTPATH@ CC = @CC@ CPP = @CPP@ DLLTOOL = @DLLTOOL@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ GLIBC21 = @GLIBC21@ LEX = @LEX@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTALLOCA = @LTALLOCA@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MOFILES = @MOFILES@ OBJDUMP = @OBJDUMP@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ U = @U@ VERSION = @VERSION@ AUTOMAKE_OPTIONS = gnits AMIGA_PORT = lib-Makefile.Amiga src-Makefile.Amiga DJGPP_PORT = djgpp-README djgpp-diffs ELISP_FILES = recode.el utf8.el EXTRA_DIST = $(AMIGA_PORT) $(DJGPP_PORT) $(ELISP_FILES) recode.spec mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = DIST_COMMON = README ChangeLog Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps contrib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status tags: TAGS TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = contrib distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall: uninstall-am all-am: Makefile all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-generic clean-am -rm -f libtool distclean: distclean-am maintainer-clean-am: maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: tags distdir info-am info dvi-am dvi check check-am \ installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ all-redirect all-am all installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean # 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: recode-3.6/contrib/README0100644000000000000000000001456407126663050013661 0ustar rootroot* README file for `recode/contrib/'. -*- outline -*- (allout) .* Hi, people! The `contrib/' directory of the `recode' distribution contains a few miscellaneous tools, ports, or such things, which have been collected here and there, a bit randomly, for your possible entertainment or use. Beware that nothing here is supported by the `recode' maintainer, you might have to contact the authors directly to get support. There is no guarantee that any file in this directory will still exist in subsequent releases. Finally, there is no guarantee either that I will accept to include contributions, unless I find them very good or very small. But I'm quite willing to give URL pointers to other tools, right here! .* Included files To the best of my knowledge, all included files are free, and already available widely by other means. I did not collect any kind legalistic papers proving that the contained material is indeed free. In case of a dispute, or at the mere request of the author, I'll quickly remove any dubious material. So, do not consider the files here as being as *safe* as the things you usually get from the Free Software Foundation. Please drop me a note about what you found to be useful, in here, to help me at deciding what should be kept and what should go away. . + utf8.el This tool helps Emacs users at inserting UTF-8 encoded ISO-10646 or Unicode characters in an Emacs buffer. Submitted by Gary Houston to `gnu.emacs.sources', 1994-10. . + recode.el This is a miscellaneous collection of tools, documented in French, for using `recode' from Emacs, when Latin-1 is in use. Submitted by François Pinard , 1994-12. . + djgpp-README . + djgpp-diffs These files represent a port of version 3.4.1 of `recode' to DJGPP, submitted by Wojciech Galazka , 1997-11. . + Makefile.amiga . + Makefile.amiga-lib These makefiles allow building `recode' 3.4k on Amiga. Submitted by Stefan Haubenthal, 1998-11. . + recode.spec RPM spec file to prepare `recode' on RedHat. Submitted by David Lebel, 2000-06. .* External pointers . + Documentation . - IETF references . : Character Mnemonics & Character Sets ftp://nic.ddn.mil/rfc/rfc1345.txt Keld Simonsen , 1992-06. . : UTF-7 - A Mail-Safe Transformation Format of Unicode ftp://nic.ddn.mil/rfc/rfc1642.txt David Goldsmith and Mark Davis , 1994-07. . : UTF-8, a transformation format of Unicode and ISO 10646 ftp://nic.ddn.mil/rfc/rfc2044.txt François Yergeau , 1997-10. . - Various references . : Unicode charset mappings ftp://ftp.unicode.org:/Public/MAPPINGS/ The Unicode consortium makes available plenty of charset mappings for converting "legacy" charsets to Unicode. . - Normalisation et internationalisation: Inventaire et prospectives des normes clefs pour le traitement informatique du français. (392p.) This is a report, written in French, discussing charset issues and many other topics as well. Laurent Bourbeau and François Pinard , 1995-10. ftp://ftp.iro.umontreal.ca/pub/contrib/pinard/accents/oqil-tome1.ps.gz http://www.ceveil.qc.ca/Normes . + Programs . - libiconv This comprehensive charset converter library revolves around Unicode, and support Asian encodings among many others. Even `recode' uses it! ftp://ftp.ilog.fr/pub/Users/haible/gnu/libiconv-1.3.tar.gz Bruno Haible . - tcs Here is the main recoding tool from the Plan9 project. ftp://research.att.com/dist/tcs.shar.Z . - yuedit This GUI editor handles many encodings, among which UTF-8. It also installs uniconv, a recoding program, and uniprint, a printing tool. ftp://sunsite.unc.edu/pub/Linux/apps/editors/X/yudit-1.2.tar.gz Gaspar Sinai , 1999-01. . - ucs-fonts These 6x13 fonts, covering Unicode characters besides the Asian sets, merely replace the Linux fixed 6x13 font. Works nicely with yudit. http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz Markus Kuhn , 1998-11. . - MtRecode This charset converter is oriented towards SGML text manipulation. It may be freely downloaded for non-commercial, non-military use from: http://www.lpl.univ-aix.fr/projects/multext/MtRecode/ Pointer given by Jean Véronis , 1996-06. . - sp This quite nice SGML structure analyser contains internal C++ modules for handling many charsets. ftp://ftp.jclark.com/pub/sp/sp-1.3.tar.gz James Clark . - b2c This program is able to generate interpreted character dumps, but properly embedded within complete C header files. http://research.de.uu.net:8080/~gnu/b2c/b2c-2.1.tar.gz Jörg Heitkötter , 1997-11. . - PyRecode This wrapper provides Free `recode' functionnality to Python programs. http://www.suxers.de/PyRecode.tgz Andreas Jung Also see: http://www.vex.net/parnassus/apyllo.py?find=recode http://www.suxers.de/python/pyrecode.htm .* Non-Unix ports or alikes Please mailto:recode-bugs@iro.umontreal.ca if you are aware of various ports to non-Unix systems not listed here, or for corrections. Please provide the goal system, a complete and stable URL, the maintainer name and address, the recode version used as a base, and your comments. . + IBM/PC (MSDOS) . - ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/rcode34b.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/rcode34s.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/rcode34d.zip (for binaries, sources and docs respectively) maintained by Wojciech Galazka Based on recode 3.4.1. . - http://www.simtel.net/simtel.net/ http://www.leo.org/pub/comp/platforms/pc/gnuish (Germany) ftp://ftp.simtel.net/simtelnet/gnu ftp://ftp.leo.org/pub/comp/platforms/pc/gnuish maintained by Darrel Hankerson You get many GNU tools, not only `recode'. The GNUish project is described in `gnuish_t.htm'. recode-3.6/contrib/ChangeLog0100644000000000000000000000216107126662766014556 0ustar rootroot2000-06-29 François Pinard * recode.spec: New file, meant for RedHat. * Makefile.am: Distribute it. Reported by David Lebel. 1998-11-28 François Pinard * Makefile.amiga, Makefile.amiga-lib: Recoded /cl to Unix. Reported by Stefan Haubenthal. * lib-Makefile.Amiga: New name for Makefile.amiga-lib, to cope when unpacking the distribution within an 8+3 environment. * src-Makefile.Amiga: New name for Makefile.amiga, same reason. * Makefile.am: Adjusted. Reported by Eli Zaretskii. 1998-11-22 François Pinard * Makefile.amiga: Updated. * Makefile.amiga-lib: New file. * Makefile.am (EXTRA_DIST): Adjusted. From Stefan Haubenthal. 1998-10-23 François Pinard * Makefile.amiga: New file. * Makefile.am (EXTRA_DIST): Adjusted. From Stefan Haubenthal. 1998-03-09 François Pinard * README: Include information from previous PORTS file. 1997-12-05 François Pinard * Makefile.am, README, djgpp-README, djgpp-diffs, recode.el, utf8.el: New files. recode-3.6/contrib/Makefile.am0100644000000000000000000000203707126662635015035 0ustar rootroot# Makefile for `recode' related contributions. # Copyright © 1997, 1998, 2000 Free Software Foundation, Inc. # François Pinard # This program 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. # This program 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 this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. AUTOMAKE_OPTIONS = gnits AMIGA_PORT = lib-Makefile.Amiga src-Makefile.Amiga DJGPP_PORT = djgpp-README djgpp-diffs ELISP_FILES = recode.el utf8.el EXTRA_DIST = $(AMIGA_PORT) $(DJGPP_PORT) $(ELISP_FILES) recode.spec recode-3.6/contrib/lib-Makefile.Amiga0100644000000000000000000000122706626026115016211 0ustar rootroot# # Makefile automatically generated by MKMK V6.55 # Fri Nov 06 23:05:56 1998 # CFLAGS= DEF HAVE_DONE_WORKING_MALLOC_CHECK DEF HAVE_DONE_WORKING_REALLOC_CHECK \ DEF STDC_HEADERS=1 DEF __GNU_LIBRARY__ DEF HAVE_STRERROR=1 \ DEF HAVE_VPRINTF=1 IDIR "" DATA f PARM b OPT OBJS= xstrdup.o xmalloc.o hash.o getopt1.o getopt.o error.o argmatch.o# utime.o reco.lib: $(OBJS) oml -v $@ r $(OBJS) xstrdup.o: xstrdup.c xmalloc.o: xmalloc.c error.h xalloc.h hash.o: hash.c hash.h getopt1.o: getopt1.c getopt.h getopt.o: getopt.c getopt.h error.o: error.c error.h argmatch.o: argmatch.c utime.o: utime.c# amiga.h timeconvert.h clean: delete $(OBJS) recode-3.6/contrib/src-Makefile.Amiga0100644000000000000000000000405606626026031016232 0ustar rootroot# # Makefile automatically generated by MKMK V6.55 # Thu Oct 29 16:46:42 1998 # CFLAGS= DEF DEFAULT_CHARSET="Latin-1" DEF PACKAGE="recode" DEF VERSION="3.4k" \ DEF STDC_HEADERS=1 DEF HAVE_STRING_H=1 DEF HAVE_RENAME=1 \ DEF HAVE_VPRINTF=1 DEF getpid=rand IGN 80 IDIR /lib DATA f PARM r OPT OBJS= dynamic.o main.o pool.o merged.o quoted.o permut.o endline.o dump.o \ base64.o utf8.o utf7.o utf16.o ucs2html.o ucs.o tables.o rfc1345.o \ mule.o lat1txte.o lat1texi.o lat1ltex.o lat1asci.o iconqnx.o ibmpc.o \ flat.o ebcdic.o cdcnos.o bangbang.o atarist.o applemac.o african.o \ charset.o charname.o recode.o recode: $(OBJS) /lib/reco.lib sc link to recode /lib/reco.lib MATH=s $(OBJS) dynamic.o: dynamic.c common.h recode.h main.o: main.c common.h recode.h pool.o: pool.c common.h recode.h merged.o: merged.c common.h recode.h quoted.o: quoted.c common.h recode.h permut.o: permut.c common.h recode.h endline.o: endline.c common.h recode.h dump.o: dump.c common.h recode.h base64.o: base64.c common.h base64.h recode.h utf8.o: utf8.c common.h recode.h utf7.o: utf7.c common.h base64.h recode.h utf16.o: utf16.c common.h recode.h ucs2html.o: ucs2html.c common.h recode.h ucs.o: ucs.c common.h recode.h tables.o: tables.c common.h recode.h rfc1345.o: rfc1345.c common.h rfc1345.h recode.h mule.o: mule.c common.h recode.h lat1txte.o: lat1txte.c common.h recode.h lat1texi.o: lat1texi.c common.h recode.h lat1ltex.o: lat1ltex.c common.h recode.h lat1asci.o: lat1asci.c common.h recode.h iconqnx.o: iconqnx.c common.h recode.h ibmpc.o: ibmpc.c common.h recode.h flat.o: flat.c common.h recode.h ebcdic.o: ebcdic.c common.h recode.h cdcnos.o: cdcnos.c common.h recode.h bangbang.o: bangbang.c common.h recode.h atarist.o: atarist.c common.h recode.h applemac.o: applemac.c common.h recode.h african.o: african.c common.h african.h recode.h charset.o: charset.c common.h recode.h charname.o: charname.c common.h charname.h recode.h recode.o: recode.c common.h decsteps.h inisteps.h recode.h clean: delete $(OBJS) recode.lnk recode-3.6/contrib/djgpp-README0100644000000000000000000000756506436725026014773 0ustar rootrootThis is a port of GNU Recode 3.4 to MSDOS/DJGPP. Installation ============ Just unzip the binary distribution from the top DJGPP installation directory, If you aren't familiar with the package, read the info docs. If you run the programs from plain DOS (not Windows), you will need to install a DPMI host. A free DPMI host is available as csdpmi3b.zip from the peer directory ../v2misc at the same place you got the recode package from. Note that the man pages are not included in the binary distribution, since they are no longer maintained by the GNU project; use the Info documentation instead. Features ======== This package has already been ported to the MSODS environment with Borland Turbo C as the target compiler. This made the porting process to DJGPP extremely simple. The file DIFFS in the source distribution describes the changes against the original package. The GNU Gettext package is supported in the ported version, so you could expect the programs to talk to you in any language not just English. Required tools ============== If you want to recompile the package, you will need the DJGPP development environment (GCC, header files and the libraries) and DJGPP ports of the following tools: - GNU Make 3.75 or later - Bash (or some other Unix-like shell) - GNU Sed - GNU Fileutils - GNU Textutils - GNU Sh-utils - GNU Grep (only if you need to run DJGPP\CONFIG.BAT) - GNU Diffutils (only if you run the test suite) - Perl (only if you need to change the test scripts) These should be available from the DJGPP sites. There are a few more programs invoked during the build process, but they are all part of a standard DJGPP installation and should be already installed on your system. The package should be built with the latest port of Make 3.75. Previous versions of Make ported to DJGPP didn't support Unix shells, and the Makefiles for this package won't work without a Unix shell. How to build ============ Unzip the distribution. The package is already configured for DJGPP v2.01, so if you only want to compile it, just call BUILD.BAT from the main subdirectory: build This invokes Make. When Make finishes, you can install the package: make install If you make a change in some of the programs, it is a good idea to run the test suite, so you know you didn't break anything: make check This will run for a while and should print 'All checks completed successfully' after all tests have been performed. If you build Recode with DJGPP release other than 2.01, or if you want to change the configuration options (e.g. add National Language Support once it becomes available), you will have to reconfigure the package. The CONFIG.BAT batch file sets a few environment variables, then calls BASH to run the configure script, so you should run CONFIG.BAT, then make: config make The configure script run by CONFIG.BAT supports a few options. Run "sh ./configure --help" to see all the options recognized by the script. How to patch the original source ================================ You need the original sources of the GNU recode-3.4.1 package. Ungzip and untar the sources, they'll be located in the directory named 'recode-3.4.1'. Change the name of that directory to 'recode.341', and create and empty directory named 'recode-3.4.1'. In the parent directory place the files 'update.bat' and 'diffs'. Run update bat, this will patch the original sources now located in 'recode.341' producing ready to compile sources. Remove files, whose names start with '`' and delete the 'recode-3.4.1' direcory. Example of use ============== To figure it out how to use Recode a sample PLCONV.BAT file is provided. This file shows how to convert a file from IBM 852 code page to ISO 8859-2 code page. Further details could be found in the Info documentation file. Enjoy, Wojciech Galazka Based on the original text by Eli Zaretskii recode-3.6/contrib/djgpp-diffs0100644000000000000000000002231606436725071015120 0ustar rootrootdiff -urN recode-3.4.1-orig/Makefile.in recode.341/Makefile.in --- recode-3.4.1-orig/Makefile.in Thu Dec 1 16:41:54 1994 +++ recode.341/Makefile.in Sat Sep 20 10:22:50 1997 @@ -107,7 +107,7 @@ DISTFILES = \ README AUTHORS BACKLOG COPYING INSTALL LOCALE NEWS THANKS TODO ChangeLog \ Makefile.in acconfig.h aclocal.m4 configure.in install-sh mkinstalldirs \ -config.h.in configure stamp-h.in \ +config.h-in configure stamp-h.in \ recode.texi texinfo.tex stamp-vti version.texi charset.texi recode.info \ ansi2knr.c ansi2knr.1 c-boxes.el mergelex.awk \ $(HEADERS) $(SOURCES) $(LIBHDRS) $(LIBSRCS) checkit File-Latin1 \ @@ -224,7 +224,7 @@ install: all $(srcdir)/mkinstalldirs $(bindir) $(infodir) - $(INSTALL_DATA) $(srcdir)/recode.info $(infodir)/recode.info + $(INSTALL_DATA) $(srcdir)/recode.info $(infodir)/recode.inf $(INSTALL_PROGRAM) recode $(bindir)/`echo recode | sed '$(transform)'` for name in $(CATALOGS); do \ lang=`echo $$name | sed 's/.msg$$//'`; \ @@ -234,7 +234,7 @@ done uninstall: - rm -f $(infodir)/recode.info + rm -f $(infodir)/recode.inf rm -f $(bindir)/`echo recode | sed '$(transform)'` for name in $(CATALOGS); do \ lang=`echo $$name | sed 's/.msg$$//'`; \ @@ -248,11 +248,12 @@ mostlyclean: rm -f *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.log *.pg *.toc *.tp *.vr - rm -f *.a *.o *._c *._o core core.* + rm -f *.exe *.a *.o *._c *._o core core.* rm -f *.tmp yy.tab.* clean: mostlyclean rm -f recode + rm -f recode.exe distclean: clean rm -f ansi2knr @@ -328,10 +329,10 @@ cd $(srcdir) && autoconf config.h: stamp-h -stamp-h: config.h.in config.status +stamp-h: config.h-in config.status CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status date > stamp-h -config.h.in: stamp-h.in +config.h-in: stamp-h.in stamp-h.in: configure.in aclocal.m4 acconfig.h cd $(srcdir) && autoheader date > $(srcdir)/stamp-h.in diff -urN recode-3.4.1-orig/build.bat recode.341/build.bat --- recode-3.4.1-orig/build.bat Thu Jan 1 00:00:00 1970 +++ recode.341/build.bat Sat May 24 21:27:24 1997 @@ -0,0 +1,2 @@ +@echo off +make diff -urN recode-3.4.1-orig/checkit.bat recode.341/checkit.bat --- recode-3.4.1-orig/checkit.bat Thu Jan 1 00:00:00 1970 +++ recode.341/checkit.bat Tue Sep 16 19:59:18 1997 @@ -0,0 +1 @@ +bash ./checkit %1 %2 %3 %4 %5 diff -urN recode-3.4.1-orig/config.bat recode.341/config.bat --- recode-3.4.1-orig/config.bat Thu Jan 1 00:00:00 1970 +++ recode.341/config.bat Sat Sep 20 11:34:22 1997 @@ -0,0 +1,41 @@ +@echo off +set CC=gcc +set SYSROOT=c: +set PATH_SEPARATOR=: +set PATH_EXPAND=y +if not "%HOSTNAME%" == "" goto hostdone +if "%windir%" == "" goto msdos +set OS=MS-Windows +goto haveos +:msdos +set OS=DOS +:haveos +if not "%USERNAME%" == "" goto haveuname +if not "%USER%" == "" goto haveuser +echo No USERNAME and no USER found in the environment, using default values +set HOSTNAME=Unknown PC +:haveuser +set HOSTNAME=%USER%'s PC +goto userdone +:haveuname +set HOSTNAME=%USERNAME%'s PC +:userdone +set HOSTNAME=%HOSTNAME%, %OS% +:hostdone +set CONFIG_SHELL=bash.exe +set INSTALL='${DJDIR}'/bin/ginstall -c +if not exist configure.orig cp -f configure configure.orig +bash ./configure --prefix='$(DJDIR)' +echo updating config.h and Makefiles for DJGPP... +mv -f config.h config.tmp +sed -f config.sed config.tmp > config.h +touch config.h -r config.tmp +rm -f config.tmp +mv -f config.h config.tmp +sed -e 's/#define HAVE_PIPE 1/\/* #define HAVE_PIPE 0 *\//g' config.tmp > config.h +touch config.h -r config.tmp +rm -f config.tmp +mv -f Makefile Makefile.tmp +sed -e 's/config\.h\.in/config.h-in/g' Makefile.tmp > Makefile +touch Makefile -r Makefile.tmp +rm -f Makefile.tmp diff -urN recode-3.4.1-orig/config.h-in recode.341/config.h-in --- recode-3.4.1-orig/config.h-in Thu Jan 1 00:00:00 1970 +++ recode.341/config.h-in Thu Dec 1 15:10:18 1994 @@ -0,0 +1,76 @@ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +#undef _ALL_SOURCE +#endif + +/* Define to empty if the keyword does not work. */ +#undef const + +/* Define if you don't have vprintf but do have _doprnt. */ +#undef HAVE_DOPRNT + +/* Define if you have the vprintf function. */ +#undef HAVE_VPRINTF + +/* Define if on MINIX. */ +#undef _MINIX + +/* Define if the system does not provide POSIX.1 features except + with this defined. */ +#undef _POSIX_1_SOURCE + +/* Define if you need to in order for stat and other things to work. */ +#undef _POSIX_SOURCE + +/* Define as the return type of signal handlers (int or void). */ +#undef RETSIGTYPE + +/* Define if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Default charset is `Latin-1' on UNIX, `IBM-PC' on MSDOS. */ +#undef DEFAULT_CHARSET + +/* Define to the name of the distribution. */ +#undef PACKAGE + +/* Define to 1 if ANSI function prototypes are usable. */ +#undef PROTOTYPES + +/* Define to the version of the distribution. */ +#undef VERSION + +/* Define to 1 for better use of the debugging malloc library. See + site ftp.antaire.com in antaire/src, file dmalloc/dmalloc.tar.gz. */ +#undef WITH_DMALLOC + +/* Define if you have the dup2 function. */ +#undef HAVE_DUP2 + +/* Define if you have the pipe function. */ +#undef HAVE_PIPE + +/* Define if you have the popen function. */ +#undef HAVE_POPEN + +/* Define if you have the rename function. */ +#undef HAVE_RENAME + +/* Define if you have the strerror function. */ +#undef HAVE_STRERROR + +/* Define if you have the header file. */ +#undef HAVE_LIBINTL_H + +/* Define if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define if you have the header file. */ +#undef HAVE_STRING_H diff -urN recode-3.4.1-orig/config.h.in recode.341/config.h.in --- recode-3.4.1-orig/config.h.in Thu Dec 1 15:10:18 1994 +++ recode.341/config.h.in Thu Jan 1 00:00:00 1970 @@ -1,76 +0,0 @@ -/* config.h.in. Generated automatically from configure.in by autoheader. */ - -/* Define if on AIX 3. - System headers sometimes define this. - We just want to avoid a redefinition error message. */ -#ifndef _ALL_SOURCE -#undef _ALL_SOURCE -#endif - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define if you don't have vprintf but do have _doprnt. */ -#undef HAVE_DOPRNT - -/* Define if you have the vprintf function. */ -#undef HAVE_VPRINTF - -/* Define if on MINIX. */ -#undef _MINIX - -/* Define if the system does not provide POSIX.1 features except - with this defined. */ -#undef _POSIX_1_SOURCE - -/* Define if you need to in order for stat and other things to work. */ -#undef _POSIX_SOURCE - -/* Define as the return type of signal handlers (int or void). */ -#undef RETSIGTYPE - -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Default charset is `Latin-1' on UNIX, `IBM-PC' on MSDOS. */ -#undef DEFAULT_CHARSET - -/* Define to the name of the distribution. */ -#undef PACKAGE - -/* Define to 1 if ANSI function prototypes are usable. */ -#undef PROTOTYPES - -/* Define to the version of the distribution. */ -#undef VERSION - -/* Define to 1 for better use of the debugging malloc library. See - site ftp.antaire.com in antaire/src, file dmalloc/dmalloc.tar.gz. */ -#undef WITH_DMALLOC - -/* Define if you have the dup2 function. */ -#undef HAVE_DUP2 - -/* Define if you have the pipe function. */ -#undef HAVE_PIPE - -/* Define if you have the popen function. */ -#undef HAVE_POPEN - -/* Define if you have the rename function. */ -#undef HAVE_RENAME - -/* Define if you have the strerror function. */ -#undef HAVE_STRERROR - -/* Define if you have the header file. */ -#undef HAVE_LIBINTL_H - -/* Define if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define if you have the header file. */ -#undef HAVE_LOCALE_H - -/* Define if you have the header file. */ -#undef HAVE_STRING_H diff -urN recode-3.4.1-orig/config.sed recode.341/config.sed --- recode-3.4.1-orig/config.sed Thu Jan 1 00:00:00 1970 +++ recode.341/config.sed Sat May 24 21:36:46 1997 @@ -0,0 +1,5 @@ +# Add a few DJGPP-specific lines to config.h +$a\ +\ +#undef MSDOS \ + diff -urN recode-3.4.1-orig/configure recode.341/configure --- recode-3.4.1-orig/configure Thu Dec 1 16:31:02 1994 +++ recode.341/configure Tue Sep 16 20:51:28 1997 @@ -1571,6 +1571,7 @@ for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then # Support "outfile[:infile]", defaulting infile="outfile.in". case "$ac_file" in + *.h) ac_file_in="${ac_file}-in" ;; *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; diff -urN recode-3.4.1-orig/plconv.bat recode.341/plconv.bat --- recode-3.4.1-orig/plconv.bat Thu Jan 1 00:00:00 1970 +++ recode.341/plconv.bat Sun May 11 23:04:24 1997 @@ -0,0 +1 @@ +recode ibm852:latin2 %1 diff -urN recode-3.4.1-orig/update.bat recode.341/update.bat --- recode-3.4.1-orig/update.bat Thu Jan 1 00:00:00 1970 +++ recode.341/update.bat Sun Jun 8 14:50:06 1997 @@ -0,0 +1,6 @@ +patch < diffs +cd recode.34 +touch config.status +touch makefile +touch config.h +touch stamp-h recode-3.6/contrib/recode.el0100644000000000000000000005147306470623544014571 0ustar rootroot;;; recode.el --- Outils divers autour des jeux de caractères nationaux. ;;; Copyright © 1995, 1997 Progiciels Bourbeau-Pinard inc. ;;; François Pinard , Mars 1995. ;; Ce programme est un logiciel libre; vous pouvez le redistribuer ou le ;; modifier selon les termes de la License Publique Générale de GNU, publiée ;; par la Free Software Foundation (soit la version 2 ou soit, à votre ;; discrétion, toute version ultérieure). ;; Ce programme est distribué pour être utile, mais SANS AUCUNE GARANTIE; ;; sans même la garantie implicite qu'il est DE QUALITÉ LOYALE ET MARCHANDE ;; ou APPROPRIÉ POUR UN BUT PARTICULIER. Voir la Licence Publique Générale ;; de GNU pour plus de détails. ;; Vous devriez avoir reçu copie de la Licence Publique Générale de GNU ;; avec ce programme; sinon, écrire à la Free Software Foundation, Inc., ;; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Les outils sont regroupés par thème fonctionnel, un par page. ;;; ;;; La documentation est au début de chacune de ces pages. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Ces outils ne fonctionnent pleinement qu'avec Emacs 19. Dans la ;;; mesure où ces corrections ne brisent rien qui fonctionne déjà, ;;; j'accepterai avec plaisir vos corrections pour les autres Emacs, ;;; mais je ne prendrai pas le temps de les développer moi-même. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Installation rapide. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Voici une recette d'installation rapide, à l'intention d'usagers ;;; placés dans un environnement où les administrateurs des systèmes ;;; ont une attitude amicale. Elle présume qu'ils ont déjà installé ;;; Emacs 19, metamail, procmail et recode dans le système, et qu'ils ;;; ont aussi placé charset.el, mime.el, rmailmime.el et metamail.el ;;; dans les répertoires déjà fouillés par Emacs pour son code LISP. ;;; Cela suffira probablement aux débrouillards. Je vous invite ;;; néanmoins à lire la documentation détaillée qui apparaît, dans les ;;; pages subséquentes de ce fichier. ;;; Voici donc, succintement, une liste des ajouts que vous avez à ;;; faire à quelques fichiers pour activer le tout au mieux (à mon ;;; avis). Il vous faut éliminer le «;;; » au début de chaque ligne. ;;; Dans ~/.procmailrc: ;;; ======================================================================> ;;; :0 fbw ;;; * ^Content-Transfer-Encoding:.*quoted-printable ;;; | recode /qp.. ;;; :0 Afhw ;;; | formail -i 'Content-Transfer-Encoding: 8bit' ;;; ======================================================================< ;;; Dans ~/.forward (remplacer "pinard" par votre login): ;;; ======================================================================> ;;; "|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 #pinard" ;;; ======================================================================< ;;; Dans ~/.emacs: ;;; ======================================================================> ;;; (setq extended-charset t) ;;; (require 'charset) ;;; (standard-display-european 1) ;;; (require 'iso-syntax)) ;;; (global-set-key "\C-cB" 'recode-base64) ;;; (global-set-key "\C-cI" 'recode-ibmpc) ;;; ;; (global-set-key "\C-cL" 'recode-latin1) ;;; (global-set-key "\C-cM" 'recode-macintosh) ;;; (global-set-key "\C-cQ" 'recode-quoted-printable) ;;; (global-set-key "\C-cT" 'recode-texte) ;;; (global-set-key "\C-cE" 'toggle-extended-charset) ;;; (global-set-key "\C-cK" 'toggle-sentence-spacing) ;;; (global-set-key "\C-cL" 'toggle-sorting-charset) ;;; (global-set-key "\C-cR" 'toggle-case-replace) ;;; (global-set-key "\C-cS" 'toggle-case-fold-search) ;;; ======================================================================< ;;; Assurez-vous que ~/.forward et ~/.procmailrc sont lisibles par tout le ;;; monde, avec la commande: ;;; chmod 644 ~/.forward ~/.procmailrc ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Préparation générale. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Pour préparer Emacs à travailler en français avec vous et avec ;;; l'aide des outils documentés ici, il faut copier ce fichier ;;; «recode.el» dans un répertoire où vous placez vos fichiers «.el». ;;; Si vous n'avez pas un tel répertoire, fabriquez-vous en un. Pour ;;; un, j'utilise ~pinard/share/site-lisp/ à cet effet. Faites le ;;; remplacement qui s'impose dans l'exemple qui suit. Ajouter les ;;; lignes suivantes dans votre fichier .emacs (sans les «;;;»), ou si ;;; vous n'en avez pas, créez-le au besoin: ;;; (setq load-path ;;; (cons (expand-file-name "~pinard/share/site-lisp") ;;; load-path)) ;;; (setq extended-charset t) ;;; (standard-display-european 1) ;;; (require 'iso-syntax) ;;; Vous n'avez pas à ajouter les lignes suivantes: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Décodages et réencodages de régions. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Fonctionne avec Emacs 18, Emacs 19, et probablement XEmacs. ;;; Les outils suivants exigent la préinstallation de recode, qui peut être ;;; obtenu de gnu.org, dans le répertoire pub/gnu, sous le nom ;;; recode-3.4.tar.gz ou mieux, de ftp.iro.umontreal.ca, dans le répertoire ;;; pub/contrib/pinard/gnu, sous le nom recode-3.4d.tar.gz. ;;; Pour décoder une région Emacs vers le Latin-1, il faut utiliser ;;; l'une des commandes suivantes (attention aux majuscules): ;;; C-c B si le texte est codé en Base64 de MIME ;;; C-c I si le texte est codé en code d'IBM-PC ;;; C-c L si le texte est codé en Latin-1 (avec demacs sur MSDOS) ;;; C-c M si le texte est codé en code de Macintosh ;;; C-c Q si le texte est codé en quoted-printable ;;; C-c T si le texte est codé en texte (ou easy-french) ;;; Pour encoder une région de Latin-1 vers l'un des codes indiqués, ;;; il suffit de préfixer la commande par «C-u», ce qui a pour effet ;;; de provoquer le codage contraire, si l'on peut dire. Undo («C-x u» ;;; ou «C-_») permet de reculer sur un mauvais choix de décodage. ;;; Pour décoder un message lu par RMAIL, il faut utiliser les ;;; commandes d'édition de message du format RMAIL: d'abord «w» ;;; pour éditer, «C-x h» pour placer la région autour du message ;;; entier, puis la commande de décodage, et «C-c C-c» pour finir. ;;; Par exemple, pour décoder un message en quoted-printable, faire: ;;; w C-x h C-c Q C-c C-c ;;; Ces techniques n'ajustent pas les en-têtes MIME du message. ;;; Pour toutes ces fonctions, dans votre .emacs, placez: ;;; (global-set-key "\C-cB" 'recode-base64) ;;; (global-set-key "\C-cI" 'recode-ibmpc) ;;; ;; (global-set-key "\C-cL" 'recode-latin1) ;;; (global-set-key "\C-cM" 'recode-macintosh) ;;; (global-set-key "\C-cQ" 'recode-quoted-printable) ;;; (global-set-key "\C-cT" 'recode-texte) ;;; (autoload 'recode-base64 "recode" nil t) ;;; (autoload 'recode-ibmpc "recode" nil t) ;;; (autoload 'recode-latin1 "recode" nil t) ;;; (autoload 'recode-macintosh "recode" nil t) ;;; (autoload 'recode-quoted-printable "recode" nil t) ;;; (autoload 'recode-texte "recode" nil t) ;;; Vous n'avez pas à ajouter les lignes suivantes: (defun recode-base64 (flag) "Décoder la région courante qui se trouve déjà en base64 de MIME. Si cette commande est préfixée (par «C-u»), encoder la région courante en base64 de MIME." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "../64" "/64..")) t) (exchange-point-and-mark)) (defun recode-ibmpc (flag) "Décoder la région courante qui se trouve déjà exprimée avec le jeu de caractères de l'IBM-PC. Si cette commande est préfixée (par «C-u»), encoder la région courante dans le jeu de caractères de l'IBM-PC." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..437" "437..")) t) (exchange-point-and-mark)) (defun recode-latin1 (flag) "Décoder la région courante qui se trouve déjà exprimée avec le jeu de caractères ISO 8859-1 (ou Latin-1). Si cette commande est préfixée (par «C-u»), encoder la région courante dans le jeu de caractères ISO 8859-1 (ou Latin-1)." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..l1" "l1..")) t) (exchange-point-and-mark)) (defun recode-macintosh (flag) "Décoder la région courante qui se trouve déjà exprimée avec le jeu de caractères du Macintosh. Si cette commande est préfixée (par «C-u»), encoder la région courante dans le jeu de caractères du Macintosh." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..mac" "mac..")) t) (exchange-point-and-mark)) (defun recode-quoted-printable (flag) "Décoder la région courante qui se trouve déjà en quoted-printable de MIME. Si cette commande est préfixée (par «C-u»), encoder la région courante en quoted-printable de MIME." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "../qp" "/qp..")) t) (exchange-point-and-mark)) (defun recode-texte (flag) "Décoder la région courante qui se trouve déjà exprimée avec la convention Easy French, où l'accent est placée après la lettre plutôt qu'au-dessus. Si cette commande est préfixée (par «C-u»), encoder la région courante avec la convention Easy French." (interactive "P") (shell-command-on-region (region-beginning) (region-end) (concat "recode " (if flag "..txte" "txte..")) t) (exchange-point-and-mark)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Affichage, fouilles, remplacements et tris français. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Fonctionne généralement avec Emacs 18 sauf pour «C-c K»; «C-c E» ;;; ne fonctionne que des versions spécialement modifiées par moi, ;;; versions plutôt rares de nos jours. Fonctionne avec Emacs 19. ;;; J'ignore pour XEmacs. ;;; Ces outils contrôlent l'effet de la capitalisation et des diacritiques ;;; sur l'affichage, sur les fouilles avec ou sans remplacement, et ;;; sur les tris dans Emacs. Notez les majuscules dans les clefs de ;;; commande décrites ci-après. ;;; La commande «C-c E» est une bascule entre l'affichage français ou ;;; l'affichage avec des séquences d'échappement en octal, dans les ;;; fenêtres de Emacs. ;;; La commande «C-c S» est une bascule entre le fait que les divers ;;; outils de fouilles de Emacs ignoreront, ou non, la distinction ;;; entre majuscules et minuscules. Les diacritiques ne sont pas ignorés. ;;; La commande «C-c R» est une bascule entre le fait que les ;;; commandes de fouille et remplacement de Emacs essaient, ou non, de ;;; rétablir dans la chaîne remplacée la capitalisation de la chaîne ;;; appariant le gabarit de fouille. Les diacritiques ne sont pas ignorés. ;;; La commande «C-c K» est une bascule entre le fait que les ;;; commandes de tri de Emacs utiliseront, ou non, l'ordre ;;; lexicographique français. Dans les comparaisons françaises, les ;;; diacritiques ne sont pris en considération que si les chaînes comparées ;;; sont par ailleurs identiques. Les commandes Emacs affectées par ;;; cette bascule sont: ;;; Fonction Emacs Unité de tri Clef ;;; sort-lines lignes toute la ligne ;;; sort-columns lignes le contenu entre deux colonnes ;;; sort-fields lignes le champ indiqué en argument ;;; sort-pages pages toute la page ;;; sort-paragraphs paragraphes tout le paragraphe ;;; sort-regexp-fields occurrences toute l'occurrence ou \N ;;; Pour toutes ces fonctions, dans votre .emacs, placez: ;;; (global-set-key "\C-cE" 'toggle-extended-charset) ;;; (global-set-key "\C-cK" 'toggle-sentence-spacing) ;;; (global-set-key "\C-cL" 'toggle-sorting-charset) ;;; (global-set-key "\C-cR" 'toggle-case-replace) ;;; (global-set-key "\C-cS" 'toggle-case-fold-search) ;;; (autoload 'toggle-extended-charset "charset" nil t) ;;; (autoload 'toggle-sentence-spacing "charset" nil t) ;;; (autoload 'toggle-sorting-charset "charset" nil t) ;;; (autoload 'toggle-case-replace "charset" nil t) ;;; (autoload 'toggle-case-fold-search "charset" nil t) ;;; Vous n'avez pas à ajouter les lignes suivantes: (defun toggle-variable (variable message-on message-off) (if (eval variable) (progn (set variable nil) (message message-off)) (set variable t) (message message-on))) (defun toggle-extended-charset () "Basculer entre le mode d'affichage 8bit pour l'ISO 8859-1 (ou Latin-1) et le mode d'affichage 7bit, où les caractères dépassant 127 sont exprimés par un «\\» suivi de la valeur octale du caractère." (interactive) (toggle-variable 'extended-charset "Mode d'affichage 8bit pour l'ISO Latin-1" "Mode d'affichage 7bit pour l'ASCII") (standard-display-european (if extended-charset 1 -1)) (redraw-display)) ;; N'est utile que sur des versions récentes de Emacs. 1995-05-04. ;; (defun toggle-sentence-spacing () "Basculer entre deux espaces requis, ou un espace suffisant, à la fin d'une phrase, pour les commandes de GNU Emacs opérant sur des phrases." (interactive) (toggle-variable 'sentence-end-double-space "Plus d'un espace requis pour terminer une phrase" "Une fin de phrase peut n'être suivie que d'un espace")) (defun toggle-sorting-charset () "Basculer l'ordre lexicographique utilisé pour les tris entre la convention utilisée pour ordonner des mots français, et la convention se basant uniquement sur la valeur numérique binaire des caractères." (interactive) (toggle-variable 'sorting-charset "Tris en ordre lexicographique français" "Tris en ordre lexicographique binaire") (charset-sorts sorting-charset)) (defun toggle-case-fold-search () "Basculer entre le repli des majuscules/minuscules durant les fouilles, et l'absence de tels replis." (interactive) (toggle-variable 'case-fold-search "Fouilles avec repli majuscules/minuscules" "Fouilles sans repli majuscules/minuscules")) (defun toggle-case-replace () "Basculer entre le fait que les remplacements cherchent, ou non, à réajuster les majuscules/minuscules selon la capitalisation de chaque chaîne à remplacer." (interactive) (toggle-variable 'case-replace "Remplacements avec majuscules/minuscules réajustées" "Remplacements sans ajustement de majuscule/minuscule")) (setq charset-to-base (concat "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0ABCDEFGHIJKLMNOPQRSTUVWXYZ\0\0\0\0\0" "\0abcdefghijklmnopqrstuvwxyz\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "AAAAAAACEEEEIIII\0NOOOOO\0OUUUUY\0\0" "aaaaaaaceeeeiiii\0nooooo\0ouuuuy\0y")) (setq charset-to-diac (concat "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0" "\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\6\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\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\2\4\6\5\8\1\7\3\2\4\5\3\2\4\5\0\6\3\2\4\6\5\0\9\3\2\4\5\2\0\0" "\3\2\4\6\5\8\1\7\3\2\4\5\3\2\4\5\0\6\3\2\4\6\5\0\9\3\2\4\5\2\0\0")) (let ((counter 0)) (while (< counter 256) (if (= (aref charset-to-base counter) 0) (aset charset-to-base counter counter)) (setq counter (1+ counter)))) (defvar sorting-charset nil) (or (fboundp 'builtin-compare-buffer-substrings) (fset 'builtin-compare-buffer-substrings (symbol-function 'compare-buffer-substrings))) (defun charset-compare-buffer-substrings (left-buffer left-start left-end right-buffer right-start right-end) (or left-buffer (setq left-buffer (current-buffer))) (or right-buffer (setq right-buffer (current-buffer))) (let (lstart lend rstart rend result) (save-excursion ;; Préparer le tampon de gauche avec les bases. (set-buffer charset-sorts-left-buffer) (erase-buffer) (insert-buffer-substring left-buffer left-start left-end) (setq lstart (point-min)) (setq lend (point-max)) (translate-region lstart lend charset-to-base) (and case-fold-search (upcase-region lstart lend)) ;; Préparer le tampon de droite avec les bases. (set-buffer charset-sorts-right-buffer) (erase-buffer) (insert-buffer-substring right-buffer right-start right-end) (setq rstart (point-min)) (setq rend (point-max)) (translate-region rstart rend charset-to-base) (and case-fold-search (upcase-region rstart rend)) ;; Comparer les bases. (setq result (builtin-compare-buffer-substrings charset-sorts-left-buffer lstart lend charset-sorts-right-buffer rstart rend)) (if (= result 0) (progn ;; Préparer le tampon de gauche avec les diacritiques. (set-buffer charset-sorts-left-buffer) (erase-buffer) (insert-buffer-substring left-buffer left-start left-end) (setq lstart (point-min)) (setq lend (point-max)) (translate-region lstart lend charset-to-diac) ;; Préparer le tampon de droite avec les diacritiques. (set-buffer charset-sorts-right-buffer) (erase-buffer) (insert-buffer-substring right-buffer right-start right-end) (setq rstart (point-min)) (setq rend (point-max)) (translate-region rstart rend charset-to-diac) ;; Comparer les diacritiques. (setq result (builtin-compare-buffer-substrings charset-sorts-left-buffer lstart lend charset-sorts-right-buffer rstart rend))))) ;; Retourner le résultat de la comparaison. result)) ;;; Faire en sorte que les tris utilisent l'ordre lexicographique ;;; français sous-jacent à l'ISO Latin-1. Ne comparer les ;;; diacritiques qu'en dernier ressort, lorsque la comparaison donne ;;; égal par ailleurs. Un argument nil rétablit le traitement ;;; implicite du départ. (defun charset-sorts (latin1) (if latin1 (progn (fset 'compare-buffer-substrings 'charset-compare-buffer-substrings) (setq charset-sorts-left-buffer (get-buffer-create "*Latin1 sorts left*")) (setq charset-sorts-right-buffer (get-buffer-create "*Latin1 sorts right*"))) (fset 'compare-buffer-substrings 'builtin-compare-buffer-substrings) (kill-buffer charset-sorts-left-buffer) (kill-buffer charset-sorts-right-buffer))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Interfaces pour les codages MIME. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Fonctionne avec Emacs 19. J'ignore pour les autres. ;;; Trois produits différents vous faciliteront l'usage de MIME dans ;;; Emacs: ce sont metamail, procmail et emacs-mime. Nous les ;;; discutons séparément. ;;; -------- ;;; ;;; metamail ;;; ;;; -------- ;;; ;;; Le metamail de Nathaniel Boreinstein est absolument requis, pour ;;; fournir, entre autres choses, les convertions de format de base. ;;; Nous en avons déjà discuté, ailleurs dans ce fichier. metamail ;;; est disponible au site thumper.bellcore.com, dans le répertoire ;;; pub/nsb, sous le nom mm2.7.tar.Z. Il suffit de l'installer pour ;;; que les binaires soient accessibles de votre PATH. ;;; -------- ;;; ;;; procmail ;;; ;;; -------- ;;; ;;; Le procmail de Stephen R. van den Berg, n'est pas requis, mais ;;; c'est un outil luxueux que je vous recommande beaucoup. Il ;;; convertira automatiquement les messages MIME en quoted-printable, ;;; format simple mais habituel, directement en Latin-1, avant même ;;; que vous récupériez vos messages. procmail peut être obtenu de ;;; ftp.informatik.rwth-aachen.de, dans pub/packages/procmail, sous le ;;; nom procmail.tar.gz. Il vous suffit de l'installer quelque part. ;;; Pour activer procmail, vous n'avez rien à faire dans Emacs à ;;; proprement parler. Fabriquez-vous un fichier ~/.forward, lisible ;;; par tout le monde, et contenant (y compris les guillemets): ;;; "|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 #pinard" ;;; en remplacant «pinard» par votre nom login et «/usr/local/bin» par ;;; le répertoire contenant le binaire exécutable de procmail. ;;; Fabriquez-vous ensuite un fichier ~/.procmailrc contenant: ;;; :0 fbw ;;; * ^Content-Transfer-Encoding:.*quoted-printable ;;; | recode /qp.. ;;; :0 Afhw ;;; | formail -i 'Content-Transfer-Encoding: 8bit' ;;; Il est possible qu'il faille remplacer les appels à «recode» et ;;; «formail» (distribué dans procmail) en y adjoignant le *path* complet, ;;; puisque ces programmes seront exécutés par le système en dehors de votre ;;; environnement habituel. ;;; Compatibilité avec versions précédentes de ce fichier. (fset 'toggle-sorting-latin1 (symbol-function 'toggle-sorting-charset)) ;;; Annoncer que le chargement est complet. (provide 'recode) recode-3.6/contrib/utf8.el0100644000000000000000000001752506442030173014203 0ustar rootroot;;; utf8.el --- Insert UTF-8 encoded ISO-10646/Unicode characters. ;;; ;;; Copyright (C) 1994 Gary Houston ;;; ;;; This program 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 of the License, or ;;; (at your option) any later version. ;;; ;;; This program 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 this program; if not, write to the Free Software ;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ;;; COMMENTARY ;;; ---------- ;;; Provides a command for direct entry of UTF-8 encoded multibyte ;;; characters in hexadecimal form. ;;; Load file and type `M-x hex-to-utf8' ;;; Also contains a simple symbol selection command (not many symbols): ;;; M-x utf8-symbol and TAB for completion. ;;; A list of Unicode names and codes is available by ftp from unicode.org. ;;; Modification of Emacs to display and process the multibyte characters ;;; correctly is left as an exercise for the reader. ;;; HISTORY ;;; ------- ;;; Created 1994-10-24. Experimental. May contain bugs. ;;; Uses a few lines of code from hexl.el. ;;; THEORY ;;; ------ ;;; The UTF-FSS (aka UTF-2 aka UTF-8) encoding of UCS, as described in the ;;; following quote from Ken Thompson's utf-fss.c: ;;; ;;;Bits Hex Min Hex Max Byte Sequence in Binary ;;; 7 00000000 0000007f 0vvvvvvv ;;; 11 00000080 000007FF 110vvvvv 10vvvvvv ;;; 16 00000800 0000FFFF 1110vvvv 10vvvvvv 10vvvvvv ;;; 21 00010000 001FFFFF 11110vvv 10vvvvvv 10vvvvvv 10vvvvvv ;;; 26 00200000 03FFFFFF 111110vv 10vvvvvv 10vvvvvv 10vvvvvv 10vvvvvv ;;; 31 04000000 7FFFFFFF 1111110v 10vvvvvv 10vvvvvv 10vvvvvv 10vvvvvv 10vvvvvv ;;; ;;; The UCS value is just the concatenation of the v bits in the multibyte ;;; encoding. When there are multiple ways to encode a value, for example ;;; UCS 0, only the shortest encoding is legal. (defun hex-to-utf8 (hex-string) "Convert a hex string to a UTF-8 multibyte character." (interactive "sEnter hex character value (0 - 7FFFFFFF): ") (let ((widechar 0.0) (num-bytes 1) (orig-hex hex-string)) ;; Convert the string to a decimal float. ;; Floats are used since elisp integers may be too small for ;; large characters. (while (not (equal hex-string "")) (setq widechar (+ (* widechar 16) (utf8-hex-char-to-integer (string-to-char hex-string)))) (setq hex-string (substring hex-string 1))) (if (>= widechar (expt 2.0 31)) (error (format "char value %s is larger than 7FFFFFFF" orig-hex))) ;; Calculate the number of UTF-8 bytes needed. (while (>= widechar ;; 2 raised to the number of bits with this many bytes. (expt 2.0 (+ (if (= num-bytes 1) 7 (- 7 num-bytes)) (* (- num-bytes 1) 6)))) (setq num-bytes (+ num-bytes 1))) (insert ;; First byte. (char-to-string (logior (truncate (/ widechar (expt 2.0 (* (- num-bytes 1) 6)))) (if (= num-bytes 1) 0 (mod (lognot (- (expt 2 (+ 8 (- num-bytes))) 1)) 256))))) ;; Remaining bytes. (while (> num-bytes 1) (setq num-bytes (- num-bytes 1)) (insert (char-to-string (logior (truncate (/ (mod widechar (expt 2.0 (* num-bytes 6))) (expt 2.0 (* (- num-bytes 1) 6)))) 128)))))) (defun utf8-hex-char-to-integer (character) "Take a char and return its value as if it was a hex digit." (if (and (>= character ?0) (<= character ?9)) (- character ?0) (let ((ch (logior character 32))) (if (and (>= ch ?a) (<= ch ?f)) (- ch (- ?a 10)) (error (format "Invalid hex digit `%c'." ch)))))) ;;; Symbol selection stuff. (defconst ISO-10646-symbol-types '(("greek-basic" nil) ("chess" nil) ("cards" nil)) "Classes of ISO-10646 symbols") (defconst ISO-10646-greek-basic '(("GREEK CAPITAL LETTER ALPHA" "0391") ("GREEK CAPITAL LETTER BETA" "0392") ("GREEK CAPITAL LETTER GAMMA" "0393") ("GREEK CAPITAL LETTER DELTA" "0394") ("GREEK CAPITAL LETTER EPSILON" "0395") ("GREEK CAPITAL LETTER ZETA" "0396") ("GREEK CAPITAL LETTER ETA" "0397") ("GREEK CAPITAL LETTER THETA" "0398") ("GREEK CAPITAL LETTER IOTA" "0399") ("GREEK CAPITAL LETTER KAPPA" "039A") ("GREEK CAPITAL LETTER LAMDA" "039B") ("GREEK CAPITAL LETTER MU" "039C") ("GREEK CAPITAL LETTER NU" "039D") ("GREEK CAPITAL LETTER XI" "039E") ("GREEK CAPITAL LETTER OMICRON" "039F") ("GREEK CAPITAL LETTER PI" "03A0") ("GREEK CAPITAL LETTER RHO" "03A1") ("GREEK CAPITAL LETTER SIGMA" "03A3") ("GREEK CAPITAL LETTER TAU" "03A4") ("GREEK CAPITAL LETTER UPSILON" "03A5") ("GREEK CAPITAL LETTER PHI" "03A6") ("GREEK CAPITAL LETTER CHI" "03A7") ("GREEK CAPITAL LETTER PSI" "03A8") ("GREEK CAPITAL LETTER OMEGA" "03A9") ("GREEK SMALL LETTER ALPHA" "03B1") ("GREEK SMALL LETTER BETA" "03B2") ("GREEK SMALL LETTER GAMMA" "03B3") ("GREEK SMALL LETTER DELTA" "03B4") ("GREEK SMALL LETTER EPSILON" "03B5") ("GREEK SMALL LETTER ZETA" "03B6") ("GREEK SMALL LETTER ETA" "03B7") ("GREEK SMALL LETTER THETA" "03B8") ("GREEK SMALL LETTER IOTA" "03B9") ("GREEK SMALL LETTER KAPPA" "03BA") ("GREEK SMALL LETTER LAMDA" "03BB") ("GREEK SMALL LETTER MU" "03BC") ("GREEK SMALL LETTER NU" "03BD") ("GREEK SMALL LETTER XI" "03BE") ("GREEK SMALL LETTER OMICRON" "03BF") ("GREEK SMALL LETTER PI" "03C0") ("GREEK SMALL LETTER RHO" "03C1") ("GREEK SMALL LETTER FINAL SIGMA" "03C2") ("GREEK SMALL LETTER SIGMA" "03C3") ("GREEK SMALL LETTER TAU" "03C4") ("GREEK SMALL LETTER UPSILON" "03C5") ("GREEK SMALL LETTER PHI" "03C6") ("GREEK SMALL LETTER CHI" "03C7") ("GREEK SMALL LETTER PSI" "03C8") ("GREEK SMALL LETTER OMEGA" "03C9") ("GREEK BETA SYMBOL" "03D0") ("GREEK THETA SYMBOL" "03D1") ("GREEK PHI SYMBOL" "03D5") ("GREEK PI SYMBOL" "03D6") ("GREEK LETTER STIGMA" "03DA") ("GREEK LETTER DIGAMMA" "03DC") ("GREEK LETTER KOPPA" "03DE") ("GREEK LETTER SAMPI" "03E0") ("GREEK KAPPA SYMBOL" "03F0") ("GREEK RHO SYMBOL" "03F1") ("GREEK LUNATE SIGMA SYMBOL" "03F2") ("GREEK LETTER YOT" "03F3") ("TURNED GREEK SMALL LETTER IOTA" "2129")) "Names and character codes for ISO-10646 unaccented Greek letters.") (defconst ISO-10646-chess '(("WHITE CHESS KING" "2654") ("WHITE CHESS QUEEN" "2655") ("WHITE CHESS ROOK" "2656") ("WHITE CHESS BISHOP" "2657") ("WHITE CHESS KNIGHT" "2658") ("WHITE CHESS PAWN" "2659") ("BLACK CHESS KING" "265A") ("BLACK CHESS QUEEN" "265B") ("BLACK CHESS ROOK" "265C") ("BLACK CHESS BISHOP" "265D") ("BLACK CHESS KNIGHT" "265E") ("BLACK CHESS PAWN" "265F")) "Names and character codes for ISO-10646 chess pieces.") (defconst ISO-10646-cards '(("BLACK SPADE SUIT" "2660") ("WHITE HEART SUIT" "2661") ("WHITE DIAMOND SUIT" "2662") ("BLACK CLUB SUIT" "2663") ("WHITE SPADE SUIT" "2664") ("BLACK HEART SUIT" "2665") ("BLACK DIAMOND SUIT" "2666") ("WHITE CLUB SUIT" "2667")) "Names and character codes for ISO-10646 playing cards.") (defun utf8-symbol () "Insert a UTF-8 encoded symbol from ISO-10646." (interactive) (do-ISO-10646-symbol-type (completing-read "Symbol category: " ISO-10646-symbol-types nil t))) (defun do-ISO-10646-symbol-type (category) "Insert a UTF-8 encoded symbol from a given category." (let ((category-var (intern (concat "ISO-10646-" category))) (completion-ignore-case t)) (hex-to-utf8 (elt (assoc (completing-read "Name of the symbol: " (symbol-value category-var) nil t) (symbol-value category-var)) 1)))) recode-3.6/contrib/recode.spec0100644000000000000000000000510107126662314015103 0ustar rootroot%define rcsid $Id: recode.spec,v 1.5 2000/06/29 13:52:54 lebel Exp $ %define nam recode %define ver 3.5c %define rel 1 %define sysconfdir /etc %define prefix /usr Summary: The `recode' library converts files between character sets and usages. Name: %nam Version: %ver Release: %rel Copyright: GPL Vendor: François Pinard et al. Group: Applications/Text Source: http://www.iro.umontreal.ca/contrib/recode/%{nam}-%{ver}.tar.gz URL: http://www.iro.umontreal.ca/~pinard/ BuildRoot: /var/tmp/%{nam}-%{ver}-root Docdir: %{prefix}/doc %description The `recode' library converts files between character sets and usages. The library recognises or produces nearly 150 different character sets and is able to transliterate files between almost any pair. When exact transliteration are not possible, it may get rid of the offending characters or fall back on approximations. Most RFC 1345 character sets are supported. The `recode' program is a handy front-end to the library. The `recode' program and library have been written by François Pinard. It is an evolving package, and specifications might change in future releases. Option `-f' is now fairly implemented, yet not fully. %package devel Summary: Libraries and include files for developing applications using the `recode' library. Group: Development/Libraries %description devel This package provides the necessary development libraries and include files to allow you to develop applications using the `recode' libraries. %changelog * Thu Jun 29 2000 David Lebel - Initial public release of this SPEC file. %prep %setup -q %build if [ ! -f configure ]; then CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh \ --prefix=%{prefix} --sysconfdir=%{sysconfdir} else CFLAGS="$RPM_OPT_FLAGS" ./configure \ --prefix=%{prefix} --sysconfdir=%{sysconfdir} fi make %install [ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT make install-strip \ prefix=$RPM_BUILD_ROOT%{prefix} \ sysconfdir=$RPM_BUILD_ROOT%{sysconfdir} %clean [ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT %post if ! grep %{prefix}/lib /etc/ld.so.conf > /dev/null ; then echo "%{prefix}/lib" >> /etc/ld.so.conf fi [ -x /sbin/ldconfig ] && /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(-, bin, bin) %doc ABOUT-NLS AUTHORS BACKLOG COPYING COPYING-LIB ChangeLog INSTALL NEWS README THANKS TODO %{prefix}/bin/* %{prefix}/lib/*.so* %{prefix}/info/recode* %{prefix}/man/man1/* %{prefix}/share/locale/* %files devel %defattr(0555, bin, bin) %{prefix}/include/* %{prefix}/lib/*.a %{prefix}/lib/*.la